From 74ecdf111a8e074c78a50d25bfe59367ccdd43c6 Mon Sep 17 00:00:00 2001 From: "JUJUX670E\\Jujuforce" Date: Tue, 2 Jul 2024 20:47:44 +0000 Subject: [PATCH 01/17] feat: implement UnlockAndSetJewelBoostNine (#1) * UnlockAndSetJewelBoostNine: added. Co-authored-by: akanyan Reviewed-on: https://gitea.tendokyu.moe/akanyan/mu3-mods/pulls/1 Co-authored-by: JUJUX670E\Jujuforce Co-committed-by: JUJUX670E\Jujuforce --- MiscMods.sln | 6 +++++ ...Sharp.UnlockAndSetJewelBoostNine.mm.csproj | 22 +++++++++++++++++++ .../patch_Scene_32_PrePlayMusic_Confirm.cs | 22 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj create mode 100644 UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs diff --git a/MiscMods.sln b/MiscMods.sln index 656c434..a1043bb 100644 --- a/MiscMods.sln +++ b/MiscMods.sln @@ -21,6 +21,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.SkipLoginRe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.Pause.mm", "Pause\Assembly-CSharp.Pause.mm.csproj", "{627B3AA0-25E2-4C3E-A211-66BAB0E997E2}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.UnlockAndSetJewelBoostNine.mm", "UnlockAndSetJewelBoostNine\Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj", "{70C775D7-8C47-4CFE-B91D-6AAEB17389F2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -63,6 +65,10 @@ Global {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Debug|x64.Build.0 = Debug|x64 {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Release|x64.ActiveCfg = Release|x64 {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Release|x64.Build.0 = Release|x64 + {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Debug|x64.ActiveCfg = Debug|x64 + {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Debug|x64.Build.0 = Debug|x64 + {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Release|x64.ActiveCfg = Release|x64 + {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj b/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj new file mode 100644 index 0000000..ec7a065 --- /dev/null +++ b/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj @@ -0,0 +1,22 @@ + + + net35 + Assembly-CSharp.UnlockAndSetJewelBoostNine.mm + 7EVENDAYS⇔HOLIDAYS + Unlock and set the jewel boost to max + 1.7.0 + true + latest + x64 + + + + ..\Common\mscorlib.dll + ..\Common\UnityEngine.dll + + + + + + + diff --git a/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs b/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs new file mode 100644 index 0000000..ed2b777 --- /dev/null +++ b/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs @@ -0,0 +1,22 @@ +#pragma warning disable CS0626 +#pragma warning disable CS0649 +#pragma warning disable IDE1006 +#pragma warning disable CS0414 + +using MU3.DB; +using MU3.User; +using MU3.Util; + +namespace MU3; + +public class patch_Scene_32_PrePlayMusic_Confirm: Scene_32_PrePlayMusic_Confirm { + private extern void orig_createSelector(); + private JewelBoostID getMaxBoost() { + return JewelBoostID.Nine; + } + + private void createSelector() { + Singleton.instance.userLocal.boost = JewelBoostID.Nine; + orig_createSelector(); + } +} \ No newline at end of file From 76884216dde5f1e410678480e2def2fe310d9cad Mon Sep 17 00:00:00 2001 From: akanyan Date: Thu, 4 Jul 2024 21:39:11 +0900 Subject: [PATCH 02/17] chore: major cleanup --- .../Assembly-CSharp.BetterGiveUp.mm.csproj | 22 ----------------- BetterGiveUp/BetterGiveUp.csproj | 7 ++++++ BetterGiveUp/MU3.Game/patch_GameLED.cs | 9 ++----- BetterGiveUp/MU3.Notes/patch_FieldObject.cs | 13 ++++------ BetterGiveUp/MU3.Notes/patch_NotesManager.cs | 9 ++----- BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs | 9 ++----- ...patch_Scene_32_PrePlayMusic_MusicSelect.cs | 10 ++------ BetterGiveUp/MU3/patch_Scene_37_Result.cs | 8 +------ BetterGiveUp/MU3/patch_Scene_38_End.cs | 8 +------ .../Assembly-CSharp.ExportChartData.mm.csproj | 23 ------------------ ExportChartData/ExportChartData.csproj | 7 ++++++ ExportChartData/MU3.Data/patch_DataManager.cs | 9 ++----- .../Assembly-CSharp.InfiniteGP.mm.csproj | 23 ------------------ InfiniteGP/InfiniteGP.csproj | 7 ++++++ InfiniteGP/MU3.User/patch_UserManager.cs | 7 ++---- InfiniteGP/MU3/patch_Scene_25_Login.cs | 7 ++---- InfiniteGP/MU3/patch_UIMoneyExchange.cs | 5 +--- ...ssembly-CSharp.LockSelectionTime.mm.csproj | 23 ------------------ LockSelectionTime/LockSelectionTime.csproj | 7 ++++++ LockSelectionTime/MU3/patch_SystemUI.cs | 6 ++--- LockSelectionTime/MU3/patch_UITimer.cs | 4 +--- ...y-CSharp.Pause.mm.csproj => Mu3Mods.csproj | 10 ++++---- MiscMods.sln => Mu3Mods.sln | 20 ++++++++-------- .../Assembly-CSharp.NaiveRating.mm.csproj | 24 ------------------- NaiveRating/MU3.Data/patch_GameData.cs | 7 +----- NaiveRating/MU3.User/patch_UserManager.cs | 7 +----- NaiveRating/MU3.User/patch_UserUtil.cs | 5 ---- NaiveRating/MU3/NaiveRating.cs | 5 ---- NaiveRating/MU3/patch_ANM_SWH_Profile.cs | 4 +--- .../MU3/patch_Scene_37_Result_Score.cs | 7 +----- NaiveRating/NaiveRating.csproj | 7 ++++++ Pause/MU3.Battle/patch_GameEngine.cs | 4 +--- Pause/MU3.Game/patch_GameBGM.cs | 4 +--- Pause/MU3.Sequence/patch_PlayMusic.cs | 9 ++----- Pause/MU3.Sound/patch_SoundManager.cs | 5 +--- Pause/MU3.Sound/patch_SoundPlayer.cs | 3 --- Pause/Pause.csproj | 7 ++++++ Pause/patch_GameDeviceManager.cs | 4 +--- .../Assembly-CSharp.SkipLoginReward.mm.csproj | 22 ----------------- .../MU3/patch_Scene_30_NoticeReward.cs | 6 +---- SkipLoginReward/SkipLoginReward.csproj | 7 ++++++ .../Assembly-CSharp.SkipNotice.mm.csproj | 22 ----------------- SkipNotice/MU3/patch_Scene_30_NoticeReward.cs | 6 +---- SkipNotice/SkipNotice.csproj | 7 ++++++ ...sembly-CSharp.SkipPreMusicRitual.mm.csproj | 22 ----------------- .../MU3.Battle/patch_GameEngine.cs | 2 +- .../MU3.Sequence/patch_PlayMusic.cs | 7 +----- SkipPreMusicRitual/MU3/patch_BattleUI.cs | 2 +- SkipPreMusicRitual/SkipPreMusicRitual.csproj | 7 ++++++ ...Sharp.UnlockAndSetJewelBoostNine.mm.csproj | 22 ----------------- .../patch_Scene_32_PrePlayMusic_Confirm.cs | 9 ++----- .../UnlockAndSetJewelBoostNine.csproj | 7 ++++++ 52 files changed, 126 insertions(+), 377 deletions(-) delete mode 100644 BetterGiveUp/Assembly-CSharp.BetterGiveUp.mm.csproj create mode 100644 BetterGiveUp/BetterGiveUp.csproj delete mode 100644 ExportChartData/Assembly-CSharp.ExportChartData.mm.csproj create mode 100644 ExportChartData/ExportChartData.csproj delete mode 100644 InfiniteGP/Assembly-CSharp.InfiniteGP.mm.csproj create mode 100644 InfiniteGP/InfiniteGP.csproj delete mode 100644 LockSelectionTime/Assembly-CSharp.LockSelectionTime.mm.csproj create mode 100644 LockSelectionTime/LockSelectionTime.csproj rename Pause/Assembly-CSharp.Pause.mm.csproj => Mu3Mods.csproj (82%) rename MiscMods.sln => Mu3Mods.sln (66%) delete mode 100644 NaiveRating/Assembly-CSharp.NaiveRating.mm.csproj create mode 100644 NaiveRating/NaiveRating.csproj create mode 100644 Pause/Pause.csproj delete mode 100644 SkipLoginReward/Assembly-CSharp.SkipLoginReward.mm.csproj create mode 100644 SkipLoginReward/SkipLoginReward.csproj delete mode 100644 SkipNotice/Assembly-CSharp.SkipNotice.mm.csproj create mode 100644 SkipNotice/SkipNotice.csproj delete mode 100644 SkipPreMusicRitual/Assembly-CSharp.SkipPreMusicRitual.mm.csproj create mode 100644 SkipPreMusicRitual/SkipPreMusicRitual.csproj delete mode 100644 UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj create mode 100644 UnlockAndSetJewelBoostNine/UnlockAndSetJewelBoostNine.csproj diff --git a/BetterGiveUp/Assembly-CSharp.BetterGiveUp.mm.csproj b/BetterGiveUp/Assembly-CSharp.BetterGiveUp.mm.csproj deleted file mode 100644 index 01fef46..0000000 --- a/BetterGiveUp/Assembly-CSharp.BetterGiveUp.mm.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - net35 - Assembly-CSharp.BetterGiveUp.mm - 7EVENDAYS⇔HOLIDAYS - Forfeit and restart in mu3 - 1.6.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - diff --git a/BetterGiveUp/BetterGiveUp.csproj b/BetterGiveUp/BetterGiveUp.csproj new file mode 100644 index 0000000..22c60a2 --- /dev/null +++ b/BetterGiveUp/BetterGiveUp.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.BetterGiveUp.mm + Forfeit (red menu) and restart (yellow menu) + + + \ No newline at end of file diff --git a/BetterGiveUp/MU3.Game/patch_GameLED.cs b/BetterGiveUp/MU3.Game/patch_GameLED.cs index 191030e..2374d62 100644 --- a/BetterGiveUp/MU3.Game/patch_GameLED.cs +++ b/BetterGiveUp/MU3.Game/patch_GameLED.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using System.Collections.Generic; +using System.Collections.Generic; namespace MU3.Game; -public class patch_GameLED: GameLED { +class patch_GameLED: GameLED { private patch_ButtonList _buttonList = new(); public extern void orig_initialize(); diff --git a/BetterGiveUp/MU3.Notes/patch_FieldObject.cs b/BetterGiveUp/MU3.Notes/patch_FieldObject.cs index ad62644..790342d 100644 --- a/BetterGiveUp/MU3.Notes/patch_FieldObject.cs +++ b/BetterGiveUp/MU3.Notes/patch_FieldObject.cs @@ -1,14 +1,9 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using UnityEngine; +using UnityEngine; namespace MU3.Notes; -public class patch_FieldObject: FieldObject { - public class patch_BarNotes { - public class patch_Bar: BarNotes.Bar { +class patch_FieldObject: FieldObject { + class patch_BarNotes { + class patch_Bar: BarNotes.Bar { public extern void orig_update(NotesManager mgr, float width = 1f); public new void update(NotesManager mgr, float width = 1f) { diff --git a/BetterGiveUp/MU3.Notes/patch_NotesManager.cs b/BetterGiveUp/MU3.Notes/patch_NotesManager.cs index 234c4e4..413f918 100644 --- a/BetterGiveUp/MU3.Notes/patch_NotesManager.cs +++ b/BetterGiveUp/MU3.Notes/patch_NotesManager.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using UnityEngine; +using UnityEngine; namespace MU3.Notes; -public class patch_NotesManager: NotesManager { +class patch_NotesManager: NotesManager { public extern void orig_reset(); public extern Vector3 orig_getEnemyPos(); diff --git a/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs b/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs index f42fd7c..11faa97 100644 --- a/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs +++ b/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs @@ -1,9 +1,4 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using MU3.Battle; +using MU3.Battle; using MU3.Game; using MU3.Notes; using MU3.Util; @@ -12,7 +7,7 @@ using UnityEngine; namespace MU3.Sequence; -public class patch_PlayMusic: PlayMusic { +class patch_PlayMusic: PlayMusic { private static readonly TimeSpan HOLD_DURATION = TimeSpan.FromSeconds(1.0f); private static readonly TimeSpan ROLL_DURATION = TimeSpan.FromSeconds(0.5f); public static bool QuickSkip = false; diff --git a/BetterGiveUp/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs b/BetterGiveUp/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs index 79d7e13..caec8e9 100644 --- a/BetterGiveUp/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs +++ b/BetterGiveUp/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs @@ -1,14 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 -#pragma warning disable CS0414 - -using MU3.Sequence; +using MU3.Sequence; namespace MU3; -public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_MusicSelect { +class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_MusicSelect { private bool _playVoice; private extern void orig_Enter_Select(); private void Enter_Select() { diff --git a/BetterGiveUp/MU3/patch_Scene_37_Result.cs b/BetterGiveUp/MU3/patch_Scene_37_Result.cs index d79dd1a..23f4b26 100644 --- a/BetterGiveUp/MU3/patch_Scene_37_Result.cs +++ b/BetterGiveUp/MU3/patch_Scene_37_Result.cs @@ -1,14 +1,9 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Sequence; using MU3.Util; namespace MU3; -public class patch_Scene_37_Result: Scene_37_Result { +class patch_Scene_37_Result: Scene_37_Result { private Mode mode_; private extern void orig_Init_Init(); private enum State { @@ -25,7 +20,6 @@ public class patch_Scene_37_Result: Scene_37_Result { CardCharaEnd, End } - private void Init_Init() { orig_Init_Init(); if(patch_PlayMusic.QuickSkip) { diff --git a/BetterGiveUp/MU3/patch_Scene_38_End.cs b/BetterGiveUp/MU3/patch_Scene_38_End.cs index c4cfe78..060dc85 100644 --- a/BetterGiveUp/MU3/patch_Scene_38_End.cs +++ b/BetterGiveUp/MU3/patch_Scene_38_End.cs @@ -1,15 +1,9 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable CS0414 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Sequence; using MU3.Util; namespace MU3; -public class patch_Scene_38_End: Scene_38_End { +class patch_Scene_38_End: Scene_38_End { private Mode mode_; private extern void orig_Init_Init(); private int result_; diff --git a/ExportChartData/Assembly-CSharp.ExportChartData.mm.csproj b/ExportChartData/Assembly-CSharp.ExportChartData.mm.csproj deleted file mode 100644 index 892908a..0000000 --- a/ExportChartData/Assembly-CSharp.ExportChartData.mm.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - net35 - Assembly-CSharp.ExportChartData.mm - 7EVENDAYS⇔HOLIDAYS - Export mu3 chart data - 1.3.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - - diff --git a/ExportChartData/ExportChartData.csproj b/ExportChartData/ExportChartData.csproj new file mode 100644 index 0000000..72e8824 --- /dev/null +++ b/ExportChartData/ExportChartData.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.ExportChartData.mm + Export chart data to charts.csv + + + \ No newline at end of file diff --git a/ExportChartData/MU3.Data/patch_DataManager.cs b/ExportChartData/MU3.Data/patch_DataManager.cs index 0d2df3a..f3aa6b0 100644 --- a/ExportChartData/MU3.Data/patch_DataManager.cs +++ b/ExportChartData/MU3.Data/patch_DataManager.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using System.IO; +using System.IO; namespace MU3.Data; -public class patch_DataManager: DataManager { +class patch_DataManager: DataManager { private extern void orig_linkFumenAnalysisData(); private const string SEPARATOR = "$"; private string PrintHeader() { diff --git a/InfiniteGP/Assembly-CSharp.InfiniteGP.mm.csproj b/InfiniteGP/Assembly-CSharp.InfiniteGP.mm.csproj deleted file mode 100644 index 1eb3262..0000000 --- a/InfiniteGP/Assembly-CSharp.InfiniteGP.mm.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - net35 - Assembly-CSharp.InfiniteGP.mm - 7EVENDAYS⇔HOLIDAYS - Infinite GP in mu3 - 1.6.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - ..\Common\UnityEngine.UI.dll - - - - - - - \ No newline at end of file diff --git a/InfiniteGP/InfiniteGP.csproj b/InfiniteGP/InfiniteGP.csproj new file mode 100644 index 0000000..5c702f3 --- /dev/null +++ b/InfiniteGP/InfiniteGP.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.InfiniteGP.mm + Remove credits and GP + + + \ No newline at end of file diff --git a/InfiniteGP/MU3.User/patch_UserManager.cs b/InfiniteGP/MU3.User/patch_UserManager.cs index df5d889..fe6d02f 100644 --- a/InfiniteGP/MU3.User/patch_UserManager.cs +++ b/InfiniteGP/MU3.User/patch_UserManager.cs @@ -1,9 +1,6 @@ -#pragma warning disable CS0649 -#pragma warning disable IDE1006 +namespace MU3.User; -namespace MU3.User; - -public class patch_UserManager: UserManager { +class patch_UserManager: UserManager { public new const int DefaultGP = 666; private int _gp; private OnUpdate _onUpdateGP; diff --git a/InfiniteGP/MU3/patch_Scene_25_Login.cs b/InfiniteGP/MU3/patch_Scene_25_Login.cs index 43b4ec0..05466ea 100644 --- a/InfiniteGP/MU3/patch_Scene_25_Login.cs +++ b/InfiniteGP/MU3/patch_Scene_25_Login.cs @@ -1,13 +1,10 @@ -#pragma warning disable CS0649 -#pragma warning disable CS0626 - using MU3.Util; namespace MU3; -public class patch_Scene_25_Login: Scene_25_Login { - private enum State { +class patch_Scene_25_Login: Scene_25_Login { + public enum State { Login = 2 } private Mode mode_; diff --git a/InfiniteGP/MU3/patch_UIMoneyExchange.cs b/InfiniteGP/MU3/patch_UIMoneyExchange.cs index 43ec509..fb99561 100644 --- a/InfiniteGP/MU3/patch_UIMoneyExchange.cs +++ b/InfiniteGP/MU3/patch_UIMoneyExchange.cs @@ -1,12 +1,9 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 - using MU3.CustomUI; using UnityEngine; namespace MU3; -public class patch_UICredit: UICredit { +class patch_UICredit: UICredit { private Animator gpAnimator_; private GameObject creditRoot_; private MU3UICounter credit_; diff --git a/LockSelectionTime/Assembly-CSharp.LockSelectionTime.mm.csproj b/LockSelectionTime/Assembly-CSharp.LockSelectionTime.mm.csproj deleted file mode 100644 index 6f1d601..0000000 --- a/LockSelectionTime/Assembly-CSharp.LockSelectionTime.mm.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - net35 - Assembly-CSharp.LockSelectionTime.mm - 7EVENDAYS⇔HOLIDAYS - Lock selection time in mu3 - 1.5.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - ..\Common\UnityEngine.UI.dll - - - - - - - \ No newline at end of file diff --git a/LockSelectionTime/LockSelectionTime.csproj b/LockSelectionTime/LockSelectionTime.csproj new file mode 100644 index 0000000..5a5081e --- /dev/null +++ b/LockSelectionTime/LockSelectionTime.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.LockSelectionTime.mm + Disable all timers + + + \ No newline at end of file diff --git a/LockSelectionTime/MU3/patch_SystemUI.cs b/LockSelectionTime/MU3/patch_SystemUI.cs index ab03f6f..ea64caa 100644 --- a/LockSelectionTime/MU3/patch_SystemUI.cs +++ b/LockSelectionTime/MU3/patch_SystemUI.cs @@ -1,9 +1,7 @@ -#pragma warning disable CS0626 - namespace MU3; -public class patch_SystemUI: SystemUI { - public class patch_Timer: SystemUI.Timer { +class patch_SystemUI: SystemUI { + class patch_Timer: Timer { public patch_Timer(UITimer timer) : base(timer) { /* nop */ } public new void execute() { /* nop */ } public extern bool orig_get_show(); diff --git a/LockSelectionTime/MU3/patch_UITimer.cs b/LockSelectionTime/MU3/patch_UITimer.cs index 04e26c8..8f42fe8 100644 --- a/LockSelectionTime/MU3/patch_UITimer.cs +++ b/LockSelectionTime/MU3/patch_UITimer.cs @@ -1,10 +1,8 @@ -#pragma warning disable CS0626 - using UnityEngine; namespace MU3; -public class patch_UITimer: UITimer { +class patch_UITimer: UITimer { public new void update() { /* nop */ } public new void update(float externalCounter) { /* nop */ } public extern void orig_initialize(float counter); diff --git a/Pause/Assembly-CSharp.Pause.mm.csproj b/Mu3Mods.csproj similarity index 82% rename from Pause/Assembly-CSharp.Pause.mm.csproj rename to Mu3Mods.csproj index 3ad10cd..05d3cf2 100644 --- a/Pause/Assembly-CSharp.Pause.mm.csproj +++ b/Mu3Mods.csproj @@ -1,13 +1,12 @@ - + net35 - Assembly-CSharp.Pause.mm 7EVENDAYS⇔HOLIDAYS - Pause in mu3 - 1.6.0 + 1.8.0 true latest x64 + IDE0044,IDE0051,IDE0052,IDE1006,CS0414,CS0649,CS0626 @@ -15,10 +14,11 @@ ..\Common\UnityEngine.dll ..\Common\UnityEngine.UI.dll ..\Common\Assembly-CSharp-firstpass.dll + - + \ No newline at end of file diff --git a/MiscMods.sln b/Mu3Mods.sln similarity index 66% rename from MiscMods.sln rename to Mu3Mods.sln index a1043bb..36bcba6 100644 --- a/MiscMods.sln +++ b/Mu3Mods.sln @@ -3,25 +3,25 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34728.123 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.BetterGiveUp.mm", "BetterGiveUp\Assembly-CSharp.BetterGiveUp.mm.csproj", "{003AD3C6-07CA-4824-B4BD-4BEF6F3D8997}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterGiveUp", "BetterGiveUp\BetterGiveUp.csproj", "{003AD3C6-07CA-4824-B4BD-4BEF6F3D8997}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.NaiveRating.mm", "NaiveRating\Assembly-CSharp.NaiveRating.mm.csproj", "{1FEA698E-DF5E-46CF-8023-F2B2F57885C5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NaiveRating", "NaiveRating\NaiveRating.csproj", "{1FEA698E-DF5E-46CF-8023-F2B2F57885C5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.ExportChartData.mm", "ExportChartData\Assembly-CSharp.ExportChartData.mm.csproj", "{8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExportChartData", "ExportChartData\ExportChartData.csproj", "{8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.SkipNotice.mm", "SkipNotice\Assembly-CSharp.SkipNotice.mm.csproj", "{A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipNotice", "SkipNotice\SkipNotice.csproj", "{A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.SkipPreMusicRitual.mm", "SkipPreMusicRitual\Assembly-CSharp.SkipPreMusicRitual.mm.csproj", "{BB9CB905-9989-466C-9A91-D2F323005237}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipPreMusicRitual", "SkipPreMusicRitual\SkipPreMusicRitual.csproj", "{BB9CB905-9989-466C-9A91-D2F323005237}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.InfiniteGP.mm", "InfiniteGP\Assembly-CSharp.InfiniteGP.mm.csproj", "{990DCB96-7A47-45B9-B7CB-A6B2A1B6864A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfiniteGP", "InfiniteGP\InfiniteGP.csproj", "{990DCB96-7A47-45B9-B7CB-A6B2A1B6864A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.LockSelectionTime.mm", "LockSelectionTime\Assembly-CSharp.LockSelectionTime.mm.csproj", "{66DE85AD-58AD-467C-B1C0-6B98BB27265D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockSelectionTime", "LockSelectionTime\LockSelectionTime.csproj", "{66DE85AD-58AD-467C-B1C0-6B98BB27265D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.SkipLoginReward.mm", "SkipLoginReward\Assembly-CSharp.SkipLoginReward.mm.csproj", "{6E078B7E-7965-4CFF-9590-5C27A009BA7A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipLoginReward", "SkipLoginReward\SkipLoginReward.csproj", "{6E078B7E-7965-4CFF-9590-5C27A009BA7A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.Pause.mm", "Pause\Assembly-CSharp.Pause.mm.csproj", "{627B3AA0-25E2-4C3E-A211-66BAB0E997E2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pause", "Pause\Pause.csproj", "{627B3AA0-25E2-4C3E-A211-66BAB0E997E2}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp.UnlockAndSetJewelBoostNine.mm", "UnlockAndSetJewelBoostNine\Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj", "{70C775D7-8C47-4CFE-B91D-6AAEB17389F2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockAndSetJewelBoostNine", "UnlockAndSetJewelBoostNine\UnlockAndSetJewelBoostNine.csproj", "{70C775D7-8C47-4CFE-B91D-6AAEB17389F2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/NaiveRating/Assembly-CSharp.NaiveRating.mm.csproj b/NaiveRating/Assembly-CSharp.NaiveRating.mm.csproj deleted file mode 100644 index 752d61e..0000000 --- a/NaiveRating/Assembly-CSharp.NaiveRating.mm.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - net35 - Assembly-CSharp.NaiveRating.mm - 7EVENDAYS⇔HOLIDAYS - Better rating for mu3 - 1.5.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - ..\Common\UnityEngine.UI.dll - - - - - - - - \ No newline at end of file diff --git a/NaiveRating/MU3.Data/patch_GameData.cs b/NaiveRating/MU3.Data/patch_GameData.cs index 7bad8b0..312e15f 100644 --- a/NaiveRating/MU3.Data/patch_GameData.cs +++ b/NaiveRating/MU3.Data/patch_GameData.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.DB; namespace MU3.Data; -public class patch_GameData: GameData { +class patch_GameData: GameData { public extern static RatingColorID orig_getRatingColorIDFromRating100(int rating100); public static new RatingColorID getRatingColorIDFromRating100(int rating100) { return orig_getRatingColorIDFromRating100(NaiveRating.Get()); diff --git a/NaiveRating/MU3.User/patch_UserManager.cs b/NaiveRating/MU3.User/patch_UserManager.cs index 43fa544..db80a0a 100644 --- a/NaiveRating/MU3.User/patch_UserManager.cs +++ b/NaiveRating/MU3.User/patch_UserManager.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Game; namespace MU3.User; -public class patch_UserManager: UserManager { +class patch_UserManager: UserManager { public extern void orig_updateUserRating(SessionInfo sessionInfo, SessionResult result); public new void updateUserRating(SessionInfo sessionInfo, SessionResult result) { NaiveRating.PrevRating = NaiveRating.Get(); diff --git a/NaiveRating/MU3.User/patch_UserUtil.cs b/NaiveRating/MU3.User/patch_UserUtil.cs index 4b08ab5..765dc82 100644 --- a/NaiveRating/MU3.User/patch_UserUtil.cs +++ b/NaiveRating/MU3.User/patch_UserUtil.cs @@ -1,8 +1,3 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MonoMod; namespace MU3.User; diff --git a/NaiveRating/MU3/NaiveRating.cs b/NaiveRating/MU3/NaiveRating.cs index 6cf3bbc..bc3b5dd 100644 --- a/NaiveRating/MU3/NaiveRating.cs +++ b/NaiveRating/MU3/NaiveRating.cs @@ -1,8 +1,3 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Data; using MU3.DataStudio; using MU3.User; diff --git a/NaiveRating/MU3/patch_ANM_SWH_Profile.cs b/NaiveRating/MU3/patch_ANM_SWH_Profile.cs index b42c227..b3d596c 100644 --- a/NaiveRating/MU3/patch_ANM_SWH_Profile.cs +++ b/NaiveRating/MU3/patch_ANM_SWH_Profile.cs @@ -1,11 +1,9 @@ -#pragma warning disable CS0626 - using MU3.User; using MU3.Util; namespace MU3; -public class patch_ANM_SWH_Profile: ANM_SWH_Profile { +class patch_ANM_SWH_Profile: ANM_SWH_Profile { public extern void orig_setUpLogin(); // Fixes login display diff --git a/NaiveRating/MU3/patch_Scene_37_Result_Score.cs b/NaiveRating/MU3/patch_Scene_37_Result_Score.cs index be365d4..663c96b 100644 --- a/NaiveRating/MU3/patch_Scene_37_Result_Score.cs +++ b/NaiveRating/MU3/patch_Scene_37_Result_Score.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Sequence; namespace MU3; -public class patch_Scene_37_Result_Score: Scene_37_Result_Score { +class patch_Scene_37_Result_Score: Scene_37_Result_Score { private PlayInfo playInfo_; private extern void orig_TechRating_Init(); diff --git a/NaiveRating/NaiveRating.csproj b/NaiveRating/NaiveRating.csproj new file mode 100644 index 0000000..8bf04e3 --- /dev/null +++ b/NaiveRating/NaiveRating.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.NaiveRating.mm + Best45 rating + + + \ No newline at end of file diff --git a/Pause/MU3.Battle/patch_GameEngine.cs b/Pause/MU3.Battle/patch_GameEngine.cs index c2cf2fe..d213448 100644 --- a/Pause/MU3.Battle/patch_GameEngine.cs +++ b/Pause/MU3.Battle/patch_GameEngine.cs @@ -1,10 +1,8 @@ -#pragma warning disable CS0626 - using MU3.Sequence; namespace MU3.Battle; -public class patch_GameEngine: GameEngine { +class patch_GameEngine: GameEngine { public extern void orig_reset(); public new void reset() { orig_reset(); diff --git a/Pause/MU3.Game/patch_GameBGM.cs b/Pause/MU3.Game/patch_GameBGM.cs index 0c94ca9..e1701b5 100644 --- a/Pause/MU3.Game/patch_GameBGM.cs +++ b/Pause/MU3.Game/patch_GameBGM.cs @@ -1,11 +1,9 @@ -#pragma warning disable CS0649 - using MU3.Sound; using MU3.Util; namespace MU3.Game; -public class patch_GameBGM: GameBGM { +class patch_GameBGM: GameBGM { private patch_SoundManager psm => ((patch_SoundManager)Singleton.instance); private HandleInfo _handle; public void pause(bool val) { diff --git a/Pause/MU3.Sequence/patch_PlayMusic.cs b/Pause/MU3.Sequence/patch_PlayMusic.cs index ed648a7..8a19624 100644 --- a/Pause/MU3.Sequence/patch_PlayMusic.cs +++ b/Pause/MU3.Sequence/patch_PlayMusic.cs @@ -1,16 +1,11 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - -using MU3.Battle; +using MU3.Battle; using MU3.Game; using MU3.Notes; using MU3.Util; namespace MU3.Sequence; -public class patch_PlayMusic: PlayMusic { +class patch_PlayMusic: PlayMusic { private static readonly float PAUSE_CD = 5f; private static readonly float UNPAUSE_CD = 0.5f; private GameEngine _gameEngine; diff --git a/Pause/MU3.Sound/patch_SoundManager.cs b/Pause/MU3.Sound/patch_SoundManager.cs index 01f28b9..d28b2a1 100644 --- a/Pause/MU3.Sound/patch_SoundManager.cs +++ b/Pause/MU3.Sound/patch_SoundManager.cs @@ -1,9 +1,6 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 - namespace MU3.Sound; -public class patch_SoundManager: SoundManager { +class patch_SoundManager: SoundManager { private extern HandleInfo orig_getHandle(Priority priority); private HandleInfo getHandle(Priority priority) => orig_getHandle(priority); private patch_SoundPlayer[] _soundPlayers; diff --git a/Pause/MU3.Sound/patch_SoundPlayer.cs b/Pause/MU3.Sound/patch_SoundPlayer.cs index 60d8569..cd6e6a1 100644 --- a/Pause/MU3.Sound/patch_SoundPlayer.cs +++ b/Pause/MU3.Sound/patch_SoundPlayer.cs @@ -1,6 +1,3 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 - namespace MU3.Sound; class patch_SoundPlayer: SoundPlayer { diff --git a/Pause/Pause.csproj b/Pause/Pause.csproj new file mode 100644 index 0000000..4d49fd0 --- /dev/null +++ b/Pause/Pause.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.Pause.mm + Enables pausing the game with the service button + + + \ No newline at end of file diff --git a/Pause/patch_GameDeviceManager.cs b/Pause/patch_GameDeviceManager.cs index bcc9559..289155d 100644 --- a/Pause/patch_GameDeviceManager.cs +++ b/Pause/patch_GameDeviceManager.cs @@ -1,8 +1,6 @@ -#pragma warning disable CS0626 - using MU3.Sequence; -public class patch_GameDeviceManager: GameDeviceManager { +class patch_GameDeviceManager: GameDeviceManager { private extern void orig_update(); private void update() { if(!patch_PlayMusic.Paused) { diff --git a/SkipLoginReward/Assembly-CSharp.SkipLoginReward.mm.csproj b/SkipLoginReward/Assembly-CSharp.SkipLoginReward.mm.csproj deleted file mode 100644 index c91fc4f..0000000 --- a/SkipLoginReward/Assembly-CSharp.SkipLoginReward.mm.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - net35 - Assembly-CSharp.SkipLoginReward.mm - 7EVENDAYS⇔HOLIDAYS - Skip bullshit in mu3 that some individuals may consider useful - 1.5.1 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - diff --git a/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs b/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs index 975aaa4..a472405 100644 --- a/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs +++ b/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs @@ -1,12 +1,8 @@ -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Util; namespace MU3; -public class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { +class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { private Mode _mode; private enum State { RankingReward = 2, diff --git a/SkipLoginReward/SkipLoginReward.csproj b/SkipLoginReward/SkipLoginReward.csproj new file mode 100644 index 0000000..90b6bcc --- /dev/null +++ b/SkipLoginReward/SkipLoginReward.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.SkipLoginReward.mm + Skip event/login rewards + + + \ No newline at end of file diff --git a/SkipNotice/Assembly-CSharp.SkipNotice.mm.csproj b/SkipNotice/Assembly-CSharp.SkipNotice.mm.csproj deleted file mode 100644 index 01a88bb..0000000 --- a/SkipNotice/Assembly-CSharp.SkipNotice.mm.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - net35 - Assembly-CSharp.SkipNotice.mm - 7EVENDAYS⇔HOLIDAYS - Skip bullshit in mu3 - 1.5.1 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - \ No newline at end of file diff --git a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs index 59e969a..a4f4590 100644 --- a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs +++ b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs @@ -1,12 +1,8 @@ -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Util; namespace MU3; -public class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { +class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { private Mode _mode; private enum State { RankingReward = 2, diff --git a/SkipNotice/SkipNotice.csproj b/SkipNotice/SkipNotice.csproj new file mode 100644 index 0000000..52fc144 --- /dev/null +++ b/SkipNotice/SkipNotice.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.SkipNotice.mm + Skip event/safety notice + + + \ No newline at end of file diff --git a/SkipPreMusicRitual/Assembly-CSharp.SkipPreMusicRitual.mm.csproj b/SkipPreMusicRitual/Assembly-CSharp.SkipPreMusicRitual.mm.csproj deleted file mode 100644 index 49ec052..0000000 --- a/SkipPreMusicRitual/Assembly-CSharp.SkipPreMusicRitual.mm.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - net35 - Assembly-CSharp.SkipPreMusicRitual.mm - 7EVENDAYS⇔HOLIDAYS - Skip more bullshit in mu3 - 1.3.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - diff --git a/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs b/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs index b9230cc..095b18c 100644 --- a/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs +++ b/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs @@ -1,6 +1,6 @@ namespace MU3.Battle; -public class patch_GameEngine: GameEngine { +class patch_GameEngine: GameEngine { public new bool isStartCutsceneFinish() { return true; } diff --git a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs index 1c9a514..0c1ebc6 100644 --- a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs +++ b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs @@ -1,13 +1,8 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE0051 -#pragma warning disable IDE1006 - using MU3.Battle; namespace MU3.Sequence; -public class patch_PlayMusic: PlayMusic { +class patch_PlayMusic: PlayMusic { private GameEngine _gameEngine; private extern void orig_Execute_StartCutscene(); diff --git a/SkipPreMusicRitual/MU3/patch_BattleUI.cs b/SkipPreMusicRitual/MU3/patch_BattleUI.cs index 4fbfa69..3322980 100644 --- a/SkipPreMusicRitual/MU3/patch_BattleUI.cs +++ b/SkipPreMusicRitual/MU3/patch_BattleUI.cs @@ -4,7 +4,7 @@ using UnityEngine; namespace MU3; -public class patch_BattleUI: BattleUI { +class patch_BattleUI: BattleUI { private System.Collections.IEnumerator playReadyProc(Action onFinish) { if(!SystemUI.Exists) { onFinish(); diff --git a/SkipPreMusicRitual/SkipPreMusicRitual.csproj b/SkipPreMusicRitual/SkipPreMusicRitual.csproj new file mode 100644 index 0000000..f75d9df --- /dev/null +++ b/SkipPreMusicRitual/SkipPreMusicRitual.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.SkipPreMusicRitual.mm + Skip "Are you ready? Let's shoot" + + + diff --git a/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj b/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj deleted file mode 100644 index ec7a065..0000000 --- a/UnlockAndSetJewelBoostNine/Assembly-CSharp.UnlockAndSetJewelBoostNine.mm.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - net35 - Assembly-CSharp.UnlockAndSetJewelBoostNine.mm - 7EVENDAYS⇔HOLIDAYS - Unlock and set the jewel boost to max - 1.7.0 - true - latest - x64 - - - - ..\Common\mscorlib.dll - ..\Common\UnityEngine.dll - - - - - - - diff --git a/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs b/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs index ed2b777..ace6358 100644 --- a/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs +++ b/UnlockAndSetJewelBoostNine/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs @@ -1,15 +1,10 @@ -#pragma warning disable CS0626 -#pragma warning disable CS0649 -#pragma warning disable IDE1006 -#pragma warning disable CS0414 - -using MU3.DB; +using MU3.DB; using MU3.User; using MU3.Util; namespace MU3; -public class patch_Scene_32_PrePlayMusic_Confirm: Scene_32_PrePlayMusic_Confirm { +class patch_Scene_32_PrePlayMusic_Confirm: Scene_32_PrePlayMusic_Confirm { private extern void orig_createSelector(); private JewelBoostID getMaxBoost() { return JewelBoostID.Nine; diff --git a/UnlockAndSetJewelBoostNine/UnlockAndSetJewelBoostNine.csproj b/UnlockAndSetJewelBoostNine/UnlockAndSetJewelBoostNine.csproj new file mode 100644 index 0000000..629f905 --- /dev/null +++ b/UnlockAndSetJewelBoostNine/UnlockAndSetJewelBoostNine.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.UnlockAndSetJewelBoostNine.mm + Unlock and set the jewel boost to max + + + From 44dfa20ea8c79e5761deecc24e3d76f9e3fa7d42 Mon Sep 17 00:00:00 2001 From: akanyan Date: Fri, 5 Jul 2024 09:15:56 +0900 Subject: [PATCH 03/17] feat: implement SortByInternalDifficulty --- Mu3Mods.sln | 6 + .../InternalSortPreview.cs | 649 ++++++++++++++++++ .../MU3.CustomUI/patch_MU3UIImageChanger.cs | 12 + .../MU3.DB/patch_MusicSort1ID.cs | 19 + .../MU3.DB/patch_MusicSort1IDEnum.cs | 40 ++ .../patch_MusicSelectViewDataList.cs | 81 +++ ...patch_Scene_32_PrePlayMusic_MusicSelect.cs | 24 + .../MU3/patch_UISortButton.cs | 27 + .../SortByInternalDifficulty.csproj | 7 + 9 files changed, 865 insertions(+) create mode 100644 SortByInternalDifficulty/InternalSortPreview.cs create mode 100644 SortByInternalDifficulty/MU3.CustomUI/patch_MU3UIImageChanger.cs create mode 100644 SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs create mode 100644 SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs create mode 100644 SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs create mode 100644 SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs create mode 100644 SortByInternalDifficulty/MU3/patch_UISortButton.cs create mode 100644 SortByInternalDifficulty/SortByInternalDifficulty.csproj diff --git a/Mu3Mods.sln b/Mu3Mods.sln index 36bcba6..57393a9 100644 --- a/Mu3Mods.sln +++ b/Mu3Mods.sln @@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pause", "Pause\Pause.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockAndSetJewelBoostNine", "UnlockAndSetJewelBoostNine\UnlockAndSetJewelBoostNine.csproj", "{70C775D7-8C47-4CFE-B91D-6AAEB17389F2}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SortByInternalDifficulty", "SortByInternalDifficulty\SortByInternalDifficulty.csproj", "{0BF799DF-8837-4372-9F36-705CDC22374C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -69,6 +71,10 @@ Global {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Debug|x64.Build.0 = Debug|x64 {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Release|x64.ActiveCfg = Release|x64 {70C775D7-8C47-4CFE-B91D-6AAEB17389F2}.Release|x64.Build.0 = Release|x64 + {0BF799DF-8837-4372-9F36-705CDC22374C}.Debug|x64.ActiveCfg = Debug|x64 + {0BF799DF-8837-4372-9F36-705CDC22374C}.Debug|x64.Build.0 = Debug|x64 + {0BF799DF-8837-4372-9F36-705CDC22374C}.Release|x64.ActiveCfg = Release|x64 + {0BF799DF-8837-4372-9F36-705CDC22374C}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SortByInternalDifficulty/InternalSortPreview.cs b/SortByInternalDifficulty/InternalSortPreview.cs new file mode 100644 index 0000000..75bdc75 --- /dev/null +++ b/SortByInternalDifficulty/InternalSortPreview.cs @@ -0,0 +1,649 @@ +public static class InternalSortPreview { + // This really shouldn't be a png but it's just one texture + public static byte[] Bytes = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x79, 0x08, 0x02, 0x00, 0x00, 0x00, 0x96, 0x41, 0x0b, + 0x66, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x7d, 0x79, 0x9c, 0x5d, + 0x45, 0x99, 0xf6, 0xf3, 0x56, 0xd5, 0xd9, 0xee, 0x3d, 0x77, 0xe9, 0xdb, 0x7b, 0xf6, 0x74, 0x36, + 0x02, 0x49, 0x20, 0x40, 0x00, 0x59, 0x12, 0xf6, 0x45, 0x50, 0x50, 0xc1, 0x05, 0x18, 0x44, 0x70, + 0x54, 0xd4, 0xc1, 0x9f, 0x8c, 0x0b, 0xa3, 0xb8, 0x7c, 0xae, 0x88, 0x8a, 0xe8, 0x8c, 0xe3, 0x38, + 0xa0, 0xe8, 0xa7, 0xce, 0xb8, 0x7e, 0x20, 0xca, 0x22, 0x20, 0x10, 0x96, 0x18, 0x20, 0x92, 0x10, + 0x76, 0xb2, 0xef, 0xbd, 0xdf, 0xbe, 0xfb, 0x3d, 0x4b, 0x55, 0x7d, 0x7f, 0xdc, 0x5e, 0x6e, 0x87, + 0xee, 0x24, 0xae, 0xb1, 0xd3, 0xe7, 0xf9, 0xd5, 0x1f, 0xdd, 0xe7, 0x9e, 0x7b, 0x96, 0xb7, 0x9e, + 0x7a, 0xeb, 0xa9, 0xb7, 0xde, 0xaa, 0x4b, 0x9f, 0x79, 0x1b, 0x22, 0xec, 0x03, 0xc4, 0x38, 0x00, + 0xad, 0x64, 0x64, 0x8a, 0x43, 0x06, 0x8c, 0x00, 0x40, 0x44, 0x86, 0xd8, 0x0f, 0xf5, 0x89, 0x00, + 0xe8, 0xc8, 0x10, 0x87, 0x10, 0x94, 0x06, 0x00, 0x16, 0x19, 0x22, 0xc2, 0x24, 0xf5, 0xfd, 0x91, + 0x09, 0x22, 0x44, 0xd4, 0x8f, 0x10, 0x21, 0xa2, 0x7e, 0x84, 0x08, 0x11, 0xf5, 0x23, 0x44, 0x88, + 0xa8, 0x1f, 0x21, 0x42, 0x44, 0xfd, 0x08, 0x11, 0x22, 0xea, 0x47, 0x88, 0x10, 0x51, 0x3f, 0x42, + 0x84, 0x88, 0xfa, 0x11, 0x22, 0x44, 0xd4, 0x8f, 0x10, 0x21, 0xa2, 0x7e, 0x84, 0x08, 0x11, 0xf5, + 0x23, 0x44, 0x88, 0xa8, 0x1f, 0x21, 0x42, 0x44, 0xfd, 0x08, 0x11, 0x22, 0xea, 0x47, 0x88, 0x10, + 0x51, 0x3f, 0x42, 0x84, 0xbf, 0x3a, 0x46, 0xad, 0xd2, 0xfa, 0xef, 0xfb, 0x09, 0x80, 0x54, 0xd1, + 0x9a, 0x24, 0x00, 0x90, 0x8a, 0xdd, 0x79, 0xc7, 0xff, 0x1e, 0xb1, 0x78, 0x19, 0x54, 0x31, 0xa8, + 0x96, 0x26, 0xc4, 0x33, 0x2b, 0x12, 0x00, 0xb8, 0x30, 0x0a, 0x85, 0xc2, 0x79, 0xe7, 0x5d, 0xd8, + 0xd3, 0xdb, 0x5f, 0x3b, 0x6e, 0xf0, 0xa8, 0x3e, 0x01, 0xe0, 0x9a, 0x73, 0xc7, 0xa1, 0x7e, 0x57, + 0x0e, 0x00, 0x74, 0xc4, 0x7c, 0x00, 0xc0, 0xfb, 0xde, 0xf3, 0xae, 0xe3, 0x4e, 0x7e, 0xa3, 0x29, + 0x42, 0xa0, 0x51, 0x2b, 0x35, 0x31, 0x1e, 0x5a, 0x0b, 0x00, 0x50, 0x61, 0x63, 0x9b, 0xfb, 0xe9, + 0xcf, 0x7e, 0xfe, 0xf2, 0x2b, 0x3f, 0x50, 0x3b, 0x4c, 0x14, 0xd5, 0xe7, 0xde, 0xe0, 0xa7, 0x2e, + 0x1a, 0xf9, 0x67, 0xe5, 0x0b, 0x14, 0x51, 0xbf, 0x86, 0xb6, 0xd6, 0x96, 0x5f, 0xfd, 0xf2, 0xa7, + 0x6e, 0x22, 0x05, 0x55, 0x05, 0x34, 0x11, 0x26, 0x46, 0x91, 0x9a, 0xb4, 0x26, 0x80, 0x18, 0xe6, + 0xcc, 0x5f, 0xbc, 0x76, 0xcd, 0x93, 0x1b, 0x37, 0x6f, 0x89, 0x6a, 0x73, 0x18, 0xf5, 0x6c, 0x8f, + 0xb4, 0xfe, 0xd8, 0xf8, 0xce, 0x2d, 0x37, 0x65, 0x9a, 0xa6, 0x40, 0x0e, 0xeb, 0x1c, 0x3d, 0xa1, + 0x0a, 0x10, 0x06, 0x4e, 0x2c, 0xfe, 0xf5, 0x5b, 0xbe, 0x11, 0x8b, 0xc5, 0xa2, 0xda, 0xdc, 0xff, + 0x30, 0x57, 0x6b, 0xad, 0x23, 0x9f, 0x0f, 0xbc, 0xf9, 0x4d, 0xe7, 0x9f, 0x7b, 0xe1, 0x25, 0x5a, + 0x96, 0xa1, 0x42, 0x28, 0x05, 0xa5, 0xa0, 0x30, 0x31, 0x0a, 0xd3, 0x43, 0x45, 0x31, 0x5d, 0x98, + 0xbf, 0xe0, 0x88, 0xcf, 0xdc, 0xf0, 0x91, 0xa8, 0x42, 0xa3, 0x08, 0xcf, 0x01, 0xa1, 0xa9, 0x29, + 0xf3, 0xcd, 0x9b, 0xbf, 0x68, 0x3b, 0x31, 0x0a, 0xab, 0xf5, 0x6e, 0x61, 0xe2, 0x15, 0x1d, 0x70, + 0xf2, 0xae, 0xf9, 0xc0, 0x75, 0xcb, 0x8e, 0x5d, 0x1a, 0x55, 0x6b, 0x44, 0xfd, 0xfd, 0xe3, 0xd3, + 0x9f, 0xbc, 0x6e, 0xea, 0x8c, 0x23, 0x42, 0x3f, 0x0f, 0x9a, 0x98, 0x8c, 0xaf, 0x97, 0x3d, 0xaa, + 0x92, 0x48, 0xa6, 0xbe, 0xf1, 0xf5, 0x2f, 0x46, 0xd5, 0x1a, 0x51, 0x7f, 0x3f, 0x38, 0xe5, 0xa4, + 0xe3, 0xdf, 0x75, 0xf5, 0xbf, 0x28, 0xe5, 0x2b, 0x19, 0x4c, 0x70, 0xde, 0xeb, 0xc1, 0xce, 0x4a, + 0x66, 0x8f, 0x3b, 0xe1, 0xf4, 0x6b, 0x3f, 0x70, 0x55, 0x54, 0xb9, 0x11, 0xf5, 0xf7, 0x85, 0x6f, + 0x7f, 0xe3, 0x46, 0x37, 0x91, 0xe4, 0x61, 0xd1, 0xe0, 0x0a, 0x5a, 0x4f, 0xec, 0xa2, 0x34, 0x94, + 0x46, 0x18, 0x18, 0xa6, 0xfe, 0xec, 0xe7, 0xbe, 0x3c, 0xb7, 0x63, 0x46, 0x54, 0xbf, 0x11, 0xf5, + 0xc7, 0xc6, 0xf5, 0xd7, 0xbd, 0xff, 0xf0, 0xa5, 0x27, 0x22, 0xe8, 0x07, 0x81, 0xb4, 0x9e, 0xf0, + 0x5e, 0xbf, 0xd6, 0x00, 0x00, 0xf8, 0x85, 0x86, 0x4c, 0xe6, 0xe6, 0xaf, 0x7c, 0x3a, 0xaa, 0xe2, + 0x88, 0xfa, 0x63, 0x60, 0xc1, 0xbc, 0x39, 0x1f, 0xff, 0xd4, 0xe7, 0xb8, 0x08, 0x21, 0xfd, 0x09, + 0x3c, 0xb4, 0x1d, 0xbb, 0x0d, 0x28, 0xaf, 0x5a, 0x3e, 0xfb, 0xfc, 0x4b, 0xde, 0x72, 0xd1, 0x79, + 0x51, 0x45, 0x47, 0xd4, 0xdf, 0x1b, 0xdf, 0xfa, 0xe6, 0x17, 0xd2, 0xe9, 0x06, 0x78, 0x45, 0x00, + 0xd0, 0x0a, 0x7a, 0xe2, 0x0b, 0x9e, 0xba, 0xa2, 0xb5, 0xb6, 0x9c, 0xd8, 0x57, 0x6e, 0xba, 0xc9, + 0x8d, 0x47, 0x61, 0xfe, 0x88, 0xfa, 0x75, 0xb8, 0xe2, 0xd2, 0xb7, 0x9d, 0x7a, 0xfa, 0xf9, 0xda, + 0xeb, 0xd1, 0x50, 0x4a, 0xc9, 0x5a, 0x99, 0xe8, 0x2f, 0xa5, 0x95, 0x1c, 0x2e, 0xa6, 0x2e, 0xeb, + 0x4a, 0xdf, 0xcc, 0xd9, 0x0b, 0x6e, 0xfc, 0xd2, 0x0d, 0x51, 0x75, 0xd7, 0x20, 0x34, 0x08, 0x00, + 0x41, 0x03, 0x58, 0xbe, 0x7c, 0x39, 0x80, 0x52, 0xa9, 0x34, 0xa9, 0x4c, 0xd0, 0x90, 0x8c, 0x7f, + 0xfd, 0xa6, 0x4f, 0x99, 0x96, 0xa3, 0xab, 0x05, 0x10, 0x63, 0x4e, 0x1a, 0x00, 0x60, 0x01, 0x13, + 0x3b, 0xf1, 0x85, 0x30, 0x98, 0x77, 0xa4, 0xc3, 0x32, 0x05, 0x25, 0x68, 0xc9, 0x83, 0xfe, 0x2b, + 0xae, 0x7c, 0xff, 0xa3, 0x4f, 0xac, 0xdb, 0xb0, 0x61, 0xc3, 0xa0, 0xe7, 0x63, 0x93, 0xcb, 0xf7, + 0x69, 0x3c, 0x33, 0x62, 0x9f, 0xff, 0xf3, 0x0e, 0x01, 0x40, 0xa9, 0x10, 0xc0, 0xfb, 0x6e, 0xd9, + 0x03, 0x20, 0x08, 0x82, 0x49, 0x65, 0x0e, 0xc3, 0xa0, 0xd6, 0x34, 0x23, 0xbb, 0x05, 0x5a, 0xaa, + 0x4a, 0xaf, 0xca, 0xbf, 0xa2, 0x8a, 0x3b, 0xb4, 0x5f, 0x98, 0xe8, 0x5d, 0x22, 0x31, 0x06, 0x80, + 0x39, 0xcd, 0x14, 0x9f, 0xce, 0x62, 0xd3, 0xc8, 0x69, 0xd5, 0x95, 0x2e, 0x10, 0xef, 0x29, 0x50, + 0xa5, 0x52, 0x99, 0x6c, 0xa4, 0xaf, 0xe1, 0xf6, 0x8f, 0x77, 0x8c, 0x78, 0xfd, 0xfa, 0x0f, 0x3c, + 0xcf, 0x03, 0x90, 0x48, 0x24, 0x0e, 0xfd, 0xd6, 0x3f, 0x94, 0xaf, 0x61, 0x9a, 0x66, 0x22, 0xe1, + 0x40, 0x4b, 0xd9, 0xfd, 0x87, 0x70, 0xfb, 0xaf, 0xc3, 0xe2, 0x36, 0x66, 0x36, 0xc0, 0x6a, 0x64, + 0x4e, 0x3b, 0xf1, 0xd8, 0x28, 0x7f, 0x31, 0x51, 0x7c, 0xfd, 0x08, 0xf5, 0xa1, 0x2a, 0xdd, 0x41, + 0xee, 0x25, 0x78, 0x59, 0xc6, 0x14, 0x6b, 0x58, 0xca, 0xdb, 0x4f, 0x67, 0x0d, 0x4b, 0x5a, 0x9c, + 0x52, 0x2e, 0xc7, 0xc2, 0x10, 0x00, 0x88, 0x26, 0xaf, 0xe2, 0x15, 0x35, 0x7f, 0x5f, 0x83, 0x65, + 0x59, 0x00, 0xc2, 0x30, 0x3c, 0xe4, 0x5f, 0x5b, 0xd5, 0x92, 0x90, 0x99, 0x0c, 0xbd, 0x72, 0xcc, + 0x7b, 0xde, 0x7b, 0xf1, 0x56, 0x78, 0x7d, 0xbc, 0x7d, 0x85, 0x33, 0xfb, 0xed, 0x14, 0x6f, 0x45, + 0x75, 0x00, 0x32, 0x50, 0xb2, 0x0c, 0x48, 0x60, 0x82, 0xa6, 0xba, 0x4b, 0xc6, 0x6d, 0xf0, 0x63, + 0x20, 0x6c, 0x70, 0x5b, 0x66, 0x5f, 0x0d, 0xb6, 0xfd, 0xda, 0xdb, 0x7a, 0xad, 0x68, 0x3f, 0x8d, + 0x8e, 0xf8, 0x80, 0x4e, 0x34, 0x85, 0x7d, 0xfd, 0x5a, 0xca, 0xc9, 0xe6, 0xfb, 0xeb, 0xd9, 0x3e, + 0xca, 0xeb, 0x4f, 0x2e, 0x43, 0x90, 0xd6, 0x08, 0x93, 0xbb, 0xbe, 0x5f, 0xde, 0xf6, 0xa0, 0x35, + 0xef, 0x52, 0x63, 0xe6, 0x9b, 0x54, 0xd8, 0x1f, 0x6c, 0xbf, 0x27, 0xdc, 0x79, 0xbf, 0xcc, 0x6d, + 0x80, 0x56, 0x14, 0xd6, 0x82, 0x83, 0x13, 0x54, 0xf1, 0x6b, 0x2d, 0x08, 0xc4, 0x78, 0xac, 0x59, + 0x34, 0x1d, 0x46, 0x4d, 0x67, 0x5b, 0x8b, 0xae, 0xd3, 0xb2, 0x52, 0x5d, 0xfb, 0x05, 0x7e, 0xdf, + 0x59, 0xd6, 0xb1, 0x5f, 0xd1, 0x6d, 0x67, 0x07, 0xb9, 0x1c, 0x42, 0x7f, 0xd2, 0x86, 0x3a, 0x0e, + 0xfd, 0xdf, 0xd2, 0x62, 0x60, 0x0a, 0x6a, 0x34, 0x29, 0x24, 0x08, 0x1a, 0x61, 0x7c, 0xfd, 0xbb, + 0x55, 0x90, 0x8d, 0x9f, 0x71, 0x07, 0x64, 0xa1, 0xb2, 0xe6, 0x06, 0xb5, 0xf3, 0x41, 0x59, 0x29, + 0x68, 0xa3, 0x04, 0x15, 0xc0, 0x00, 0xab, 0xf7, 0xf7, 0x13, 0x25, 0xa1, 0xb5, 0x6e, 0x4d, 0x8a, + 0x92, 0x12, 0x12, 0xaa, 0xba, 0x3b, 0xec, 0x7f, 0x09, 0x5b, 0x7e, 0x4f, 0x22, 0x6e, 0x1d, 0xf6, + 0xde, 0xd8, 0x09, 0xdf, 0x44, 0x76, 0x8d, 0xb7, 0xfa, 0x43, 0x76, 0xc7, 0xa5, 0xea, 0xb0, 0xeb, + 0xc3, 0x12, 0xa3, 0x91, 0x79, 0x8c, 0xfa, 0xcb, 0xd0, 0x21, 0x9f, 0xc3, 0x7b, 0xe8, 0x53, 0x5f, + 0x2a, 0x29, 0x21, 0x99, 0xc9, 0x58, 0xc0, 0x40, 0xd0, 0x5a, 0x92, 0x99, 0xd6, 0xc1, 0x80, 0xfb, + 0xec, 0x55, 0x66, 0x6a, 0x96, 0x79, 0xc4, 0x77, 0x82, 0xad, 0x77, 0x54, 0x9f, 0xbb, 0x19, 0xe5, + 0x1e, 0xa5, 0xaa, 0xb0, 0x15, 0x08, 0xe0, 0x00, 0xed, 0xe5, 0xee, 0x69, 0xa2, 0x56, 0xaf, 0x96, + 0x1a, 0x15, 0x54, 0x7d, 0x8d, 0xde, 0xea, 0xfa, 0x9b, 0xfc, 0xcd, 0x3f, 0x4b, 0x9c, 0x7a, 0x9b, + 0x75, 0xf6, 0xfd, 0xde, 0xca, 0xb7, 0xc5, 0xb4, 0xce, 0x76, 0x7c, 0xc6, 0x50, 0x59, 0xad, 0x47, + 0x22, 0xb9, 0x5a, 0x68, 0xe9, 0x4b, 0x06, 0x76, 0xc8, 0x4b, 0x80, 0x31, 0xa8, 0x4f, 0x9c, 0x01, + 0x08, 0x43, 0x05, 0x80, 0x71, 0x53, 0xf3, 0x04, 0x00, 0x92, 0x05, 0x7d, 0x90, 0x54, 0x2f, 0x41, + 0x02, 0xa8, 0x3d, 0x06, 0x53, 0x0a, 0x61, 0x7e, 0xe8, 0x83, 0xfd, 0x87, 0xde, 0xc3, 0x20, 0xd4, + 0x5a, 0xc7, 0xda, 0x63, 0xe8, 0xc5, 0x00, 0x1b, 0x70, 0xa4, 0x63, 0x59, 0x2d, 0x20, 0x26, 0xd6, + 0xbf, 0x4b, 0xb8, 0xd3, 0xcd, 0x25, 0x5f, 0xae, 0xae, 0xfb, 0x78, 0x75, 0xfd, 0x1d, 0xcc, 0xce, + 0x92, 0x6d, 0x30, 0xcd, 0x46, 0xaf, 0xe4, 0x9b, 0xd8, 0xc1, 0xcd, 0xc1, 0x5e, 0xab, 0xf6, 0x12, + 0x16, 0x01, 0x00, 0xcb, 0xcb, 0xde, 0x67, 0x0b, 0xf7, 0xbc, 0xc1, 0x39, 0xf5, 0xbb, 0xd6, 0x8a, + 0x9f, 0x96, 0x1f, 0xba, 0x80, 0xfb, 0x09, 0x31, 0xff, 0xc3, 0xbe, 0xdf, 0x0f, 0xc0, 0x54, 0xc8, + 0xa1, 0x90, 0x52, 0x09, 0x34, 0x53, 0xae, 0xaf, 0x6c, 0x86, 0x66, 0x8d, 0xfd, 0xe3, 0xb5, 0x01, + 0xad, 0x39, 0x00, 0xce, 0x02, 0x00, 0x92, 0x4c, 0xcd, 0xdd, 0x21, 0x67, 0xe3, 0x1d, 0x9c, 0xf7, + 0xad, 0xaf, 0x3b, 0x61, 0xe9, 0xb0, 0x0a, 0x59, 0xc5, 0x50, 0xe0, 0xfe, 0x80, 0xa8, 0x1f, 0x4a, + 0x05, 0x80, 0xcc, 0x34, 0x00, 0xca, 0xad, 0x63, 0xc5, 0x8d, 0x00, 0x20, 0xe2, 0x06, 0x82, 0x51, + 0x86, 0xfd, 0xbb, 0x0d, 0x4d, 0x6a, 0x8f, 0x4e, 0x8c, 0x82, 0x42, 0x60, 0xcf, 0x40, 0x62, 0x31, + 0x44, 0x0a, 0x61, 0x6e, 0x7f, 0x3d, 0x3f, 0x05, 0x41, 0xe0, 0x17, 0xfd, 0xd4, 0x9c, 0x54, 0xea, + 0xe5, 0x54, 0xfe, 0xf1, 0x1e, 0xf5, 0x66, 0x05, 0x80, 0x88, 0xe3, 0xa5, 0x4f, 0x70, 0x06, 0xfb, + 0xe8, 0x9b, 0xaa, 0x6b, 0xaf, 0xaf, 0xae, 0xfb, 0x29, 0x8b, 0x97, 0x89, 0x0b, 0x60, 0x68, 0x86, + 0xe3, 0x10, 0x1a, 0xcd, 0xec, 0xfd, 0xa7, 0xd6, 0xcc, 0x21, 0x55, 0xda, 0x55, 0x7e, 0xe8, 0xaa, + 0xd8, 0xe9, 0xdf, 0x8f, 0x9d, 0x76, 0x97, 0xff, 0xd0, 0x79, 0x15, 0xf7, 0x64, 0xbb, 0xfd, 0x18, + 0xdf, 0xef, 0x23, 0x70, 0x0d, 0x45, 0x0f, 0x20, 0x39, 0xcd, 0xd5, 0xcb, 0x45, 0xcf, 0x8e, 0x1e, + 0xd7, 0x70, 0x39, 0xdf, 0x87, 0xbf, 0xa3, 0x1a, 0xef, 0x15, 0x6f, 0xd4, 0xa4, 0x79, 0xdf, 0x2a, + 0x54, 0xbb, 0x00, 0x18, 0xc2, 0x38, 0x48, 0x83, 0x9b, 0x11, 0x59, 0x6b, 0x89, 0x72, 0x8e, 0x1d, + 0xc6, 0x9b, 0x96, 0x02, 0x80, 0x97, 0x3d, 0x20, 0xea, 0x6b, 0xad, 0x39, 0xe7, 0x8a, 0x27, 0x91, + 0x7f, 0x91, 0xf5, 0xaf, 0x4a, 0x3a, 0x8c, 0xc5, 0x92, 0xaa, 0xda, 0xcb, 0x2c, 0x46, 0xfa, 0xe0, + 0xb4, 0x66, 0xd2, 0x43, 0x55, 0xc8, 0x95, 0x52, 0x2f, 0x0f, 0xec, 0x5a, 0x07, 0x67, 0x36, 0x5a, + 0xce, 0x27, 0x54, 0xb5, 0x2c, 0x8f, 0xf7, 0xad, 0x20, 0x08, 0x8a, 0xc5, 0x62, 0x53, 0x47, 0x53, + 0x7c, 0x6b, 0x9c, 0xdd, 0xcc, 0xc4, 0x14, 0xd3, 0x2f, 0xfa, 0x96, 0x6c, 0x45, 0x75, 0x0d, 0xba, + 0xee, 0x73, 0xce, 0xb9, 0x27, 0xd8, 0xf6, 0x8b, 0xea, 0xba, 0xff, 0x65, 0xf1, 0x32, 0xbd, 0xa6, + 0x76, 0x09, 0xe1, 0x6b, 0xf8, 0x43, 0x7b, 0x91, 0x89, 0xfe, 0xdc, 0xce, 0x41, 0xef, 0x9f, 0xac, + 0xfa, 0xcf, 0xbd, 0x92, 0x1e, 0x75, 0x50, 0xef, 0xfd, 0xa1, 0x26, 0x01, 0x02, 0xc5, 0x85, 0x2e, + 0x75, 0x97, 0x1f, 0xba, 0x2a, 0x79, 0xe9, 0x0e, 0x77, 0xe1, 0x0d, 0x6a, 0xcb, 0xe7, 0x0b, 0xee, + 0xdd, 0x8e, 0x63, 0x42, 0xca, 0x3c, 0x4a, 0x0d, 0x5b, 0x53, 0xec, 0x77, 0x2c, 0xdd, 0x92, 0xd6, + 0x0b, 0x74, 0xef, 0xce, 0x5e, 0x17, 0x2e, 0x63, 0x0c, 0x34, 0xc6, 0xdd, 0x38, 0x0b, 0x14, 0x8f, + 0x03, 0x96, 0xec, 0x7a, 0x20, 0x1d, 0xbe, 0x44, 0x86, 0xcd, 0x62, 0x49, 0x00, 0x84, 0xea, 0x41, + 0xe2, 0xc9, 0x88, 0x0a, 0x50, 0xc2, 0x49, 0x55, 0xd6, 0xc9, 0x6d, 0x8f, 0x17, 0xec, 0x65, 0x68, + 0x3c, 0x41, 0xa0, 0x08, 0x19, 0xec, 0x8b, 0xfa, 0x35, 0xde, 0x07, 0xcc, 0x65, 0x3b, 0x7f, 0x96, + 0x76, 0xfa, 0x83, 0x74, 0x23, 0xab, 0xf6, 0xa9, 0x9e, 0x27, 0x82, 0xdd, 0x0f, 0x6b, 0x2f, 0x4b, + 0x5c, 0x1e, 0xa4, 0x57, 0x02, 0x00, 0xb2, 0x9a, 0x78, 0x6a, 0x01, 0x25, 0x97, 0x36, 0x66, 0xa6, + 0x4b, 0x6f, 0xd7, 0xc0, 0xf6, 0xff, 0xac, 0xb6, 0xbc, 0xdd, 0x89, 0xa5, 0x55, 0x30, 0xb0, 0x77, + 0x05, 0x43, 0x87, 0x61, 0x58, 0x2a, 0x95, 0x52, 0xb3, 0x1b, 0xdd, 0x6d, 0x2e, 0x7d, 0x57, 0x61, + 0x00, 0x72, 0x81, 0xef, 0xe5, 0x3d, 0x87, 0xdb, 0xe8, 0xfc, 0x1a, 0x66, 0x5e, 0xad, 0xb5, 0xae, + 0x3c, 0x7d, 0x03, 0x73, 0xca, 0xc4, 0xf7, 0xc9, 0x5d, 0xc2, 0x01, 0xe8, 0x7d, 0xfd, 0x27, 0xb5, + 0x01, 0xda, 0x57, 0x1b, 0xd0, 0x07, 0xf6, 0x5d, 0x3d, 0xd6, 0xd7, 0xf4, 0x18, 0x67, 0xeb, 0xb1, + 0x6e, 0xcc, 0xa8, 0xc6, 0xfe, 0xea, 0xe3, 0x6f, 0xb6, 0x4f, 0xfc, 0x79, 0x6c, 0xe3, 0xff, 0xab, + 0xf6, 0xfe, 0xb2, 0xdc, 0xf8, 0x66, 0x33, 0xd7, 0xa7, 0xa0, 0x72, 0x8d, 0x85, 0x74, 0x3e, 0xc1, + 0xbe, 0x1d, 0x34, 0x7c, 0xa0, 0x01, 0x0b, 0xd0, 0xbb, 0xb3, 0xd7, 0x55, 0xae, 0x61, 0xbd, 0xc6, + 0x91, 0x6b, 0xa5, 0x84, 0xab, 0xc3, 0x40, 0xee, 0xfa, 0x49, 0x43, 0x2c, 0x34, 0xe2, 0x19, 0x99, + 0xdf, 0x1a, 0x76, 0xaf, 0x0e, 0xbb, 0xff, 0x48, 0xba, 0xf7, 0x20, 0xf2, 0x04, 0x80, 0x76, 0xa6, + 0x23, 0x7d, 0xac, 0x68, 0x98, 0x6b, 0x26, 0xda, 0x53, 0xc5, 0x3f, 0xe6, 0x76, 0x6d, 0x0a, 0xa7, + 0x5d, 0x2e, 0x78, 0x69, 0x2f, 0x25, 0x26, 0xf6, 0xea, 0xc1, 0xa4, 0x68, 0xd0, 0x5b, 0x6e, 0x4b, + 0x27, 0xaa, 0x46, 0xe3, 0xe2, 0xd2, 0xaa, 0xaf, 0x85, 0xdd, 0x4f, 0x81, 0xf9, 0xc4, 0xca, 0x80, + 0x44, 0xb8, 0x7f, 0x1a, 0xe8, 0x3a, 0xbd, 0x45, 0x07, 0x14, 0x22, 0xd0, 0xe3, 0x5c, 0x53, 0xef, + 0x1d, 0x5c, 0xf1, 0xfb, 0xd5, 0xc0, 0xd6, 0x30, 0x5c, 0xc9, 0x63, 0x53, 0x63, 0xc7, 0x7d, 0xb8, + 0xa1, 0xb5, 0xb9, 0x7b, 0xeb, 0x2d, 0xc1, 0x9c, 0xeb, 0xb4, 0x68, 0x40, 0xd0, 0xcf, 0x01, 0x62, + 0x04, 0x40, 0x49, 0x2d, 0xfd, 0xb0, 0x32, 0x50, 0x69, 0x9c, 0xde, 0x98, 0xd8, 0x94, 0xd0, 0xdf, + 0x09, 0x8d, 0xdd, 0x46, 0x6e, 0x5a, 0xff, 0x86, 0xd8, 0xf6, 0x86, 0xec, 0xec, 0x29, 0xc6, 0x3a, + 0xd9, 0xeb, 0x59, 0x47, 0xbd, 0xd3, 0x5b, 0xf3, 0x11, 0x2a, 0x66, 0x91, 0xe0, 0x7f, 0x92, 0x5e, + 0x18, 0x37, 0xd6, 0x49, 0x38, 0x30, 0x6f, 0x3d, 0x4a, 0x76, 0x1e, 0xb8, 0x87, 0xa7, 0xfd, 0x35, + 0x8f, 0xf1, 0xda, 0x9c, 0x1e, 0xcb, 0x5b, 0x43, 0x29, 0x00, 0xe4, 0x70, 0xef, 0x95, 0x07, 0x8c, + 0x86, 0x67, 0xcc, 0x69, 0x9f, 0x6c, 0x78, 0xe5, 0x5b, 0xd5, 0xcc, 0xc5, 0xe1, 0x6e, 0xa6, 0x35, + 0xdf, 0xe3, 0xf6, 0xd3, 0x74, 0x6a, 0xed, 0x6a, 0xc7, 0xcd, 0x81, 0x71, 0x8d, 0xd1, 0xd4, 0xd1, + 0xd4, 0xd7, 0xd9, 0x67, 0x49, 0xcb, 0x76, 0x6c, 0x00, 0x34, 0x2c, 0x74, 0x79, 0xbc, 0x1c, 0x48, + 0x7b, 0xfb, 0xb7, 0x9b, 0xda, 0xe7, 0x71, 0x46, 0xe5, 0xd5, 0x5f, 0x0b, 0x07, 0x36, 0x10, 0x0b, + 0xc1, 0x3c, 0xc6, 0x82, 0xbf, 0xc1, 0x78, 0x49, 0xef, 0x9f, 0x7b, 0xc3, 0xe7, 0x78, 0x59, 0xd9, + 0xfb, 0x6a, 0xa8, 0x4d, 0xa3, 0xf5, 0x68, 0xe7, 0xe8, 0xeb, 0x44, 0x75, 0x4f, 0xcf, 0xc6, 0xff, + 0x50, 0xf3, 0xaf, 0xd5, 0x72, 0x14, 0x83, 0x47, 0x6d, 0x46, 0x72, 0xec, 0x1b, 0xbf, 0x6c, 0x74, + 0xfe, 0x3a, 0x65, 0xf7, 0x0a, 0xb7, 0xb5, 0xf2, 0xc0, 0x35, 0x18, 0x78, 0x89, 0xec, 0x32, 0x63, + 0x01, 0x11, 0x88, 0x31, 0xd0, 0xd8, 0x45, 0xa3, 0xee, 0xdf, 0x91, 0x47, 0x64, 0xf5, 0x5f, 0xa9, + 0x3f, 0x67, 0xf4, 0xa5, 0x68, 0x9c, 0xcb, 0xd6, 0x1d, 0x67, 0x0c, 0xb5, 0x3e, 0x97, 0x49, 0x12, + 0x9e, 0x0e, 0xfa, 0xfd, 0x4d, 0x8f, 0x9b, 0x8d, 0x0b, 0xe3, 0x53, 0x17, 0x95, 0x76, 0x3e, 0x8c, + 0xcc, 0x49, 0x90, 0x65, 0xce, 0x08, 0x80, 0x56, 0x3a, 0xf0, 0xfc, 0x52, 0x77, 0x29, 0xd1, 0x94, + 0x48, 0x67, 0xd3, 0xd5, 0xff, 0xa8, 0xc6, 0x3a, 0xad, 0xfc, 0x94, 0xfc, 0x73, 0xa9, 0x97, 0xb4, + 0x8b, 0x8e, 0x53, 0x66, 0x8b, 0x1d, 0xf7, 0xf1, 0xf8, 0x22, 0xd6, 0xd4, 0x51, 0x79, 0xf2, 0x6a, + 0x58, 0x12, 0x8c, 0xc6, 0xb4, 0x23, 0x41, 0x79, 0x21, 0xb6, 0xf5, 0xb8, 0xb6, 0x11, 0x9a, 0xa2, + 0xa6, 0xb7, 0x06, 0x4f, 0x2b, 0x7a, 0x66, 0xb6, 0xe4, 0x94, 0x3c, 0x73, 0xb8, 0x68, 0xb0, 0x72, + 0xd5, 0xec, 0x2b, 0x3a, 0xae, 0x13, 0x30, 0x1a, 0x8a, 0x0c, 0x69, 0xec, 0xce, 0x26, 0x8a, 0x15, + 0xcb, 0x12, 0x6a, 0xa0, 0x64, 0x17, 0x2a, 0x56, 0xa9, 0x6a, 0x96, 0xaa, 0x66, 0xc9, 0x33, 0x2b, + 0xbe, 0x61, 0x09, 0x59, 0x0e, 0xc4, 0xce, 0x7e, 0x37, 0xe1, 0x04, 0x7c, 0x44, 0xcf, 0x8d, 0x81, + 0x62, 0xd5, 0xdc, 0xd6, 0x9d, 0x70, 0xcc, 0xd0, 0x10, 0xaa, 0x66, 0xdb, 0xb2, 0x6f, 0x64, 0x8b, + 0x76, 0xd1, 0xb3, 0x4a, 0x9e, 0x51, 0xf6, 0x0c, 0xce, 0x95, 0xe0, 0x7a, 0x34, 0xb1, 0x69, 0x57, + 0xbf, 0xfb, 0xc2, 0x8e, 0x54, 0x57, 0xce, 0x8e, 0x59, 0x15, 0xdb, 0xc4, 0xd8, 0x23, 0x34, 0x02, + 0xfc, 0x50, 0x2b, 0xdf, 0x9a, 0xfa, 0x3e, 0xdd, 0xf9, 0x6c, 0x6c, 0xe1, 0x3c, 0x65, 0xa7, 0xf4, + 0x63, 0x41, 0x37, 0x7a, 0x73, 0xa9, 0x62, 0xc6, 0x4c, 0x7b, 0x55, 0xcf, 0x7f, 0xca, 0x37, 0x63, + 0x26, 0xeb, 0x60, 0xa5, 0x7c, 0x09, 0x80, 0x30, 0x04, 0x0d, 0xeb, 0x3f, 0x33, 0xc5, 0xb6, 0x7c, + 0xbd, 0xb1, 0xbd, 0x43, 0x97, 0xba, 0x2b, 0x2b, 0x3f, 0xa9, 0xaa, 0x5b, 0x99, 0x55, 0x25, 0x1e, + 0x32, 0x36, 0xd8, 0xb4, 0xea, 0xef, 0x43, 0x00, 0x0d, 0x59, 0x66, 0xd8, 0x3e, 0xf5, 0xf1, 0xd8, + 0xfa, 0xe3, 0x1a, 0x63, 0xa4, 0x5d, 0x8f, 0xb7, 0x8f, 0x90, 0x56, 0x75, 0xe7, 0xd4, 0x1d, 0x25, + 0xee, 0x13, 0xaf, 0xa8, 0xfc, 0x6e, 0x7f, 0xcb, 0xfd, 0x76, 0xc7, 0x99, 0x8e, 0x2d, 0x4a, 0x9d, + 0xcf, 0xb1, 0xc6, 0x13, 0xd6, 0xdc, 0xfd, 0xb9, 0xb1, 0xbd, 0x3e, 0xcf, 0xaf, 0xe7, 0xf9, 0xe7, + 0xcc, 0xf9, 0xcb, 0x4b, 0x77, 0xbf, 0x43, 0x97, 0xbb, 0x28, 0xc9, 0xa1, 0x68, 0xcc, 0x36, 0xa6, + 0x14, 0xd5, 0x8d, 0xfb, 0xf5, 0x18, 0xd1, 0x85, 0x61, 0xba, 0xe8, 0xda, 0x83, 0xeb, 0x03, 0xf0, + 0x04, 0x34, 0xe2, 0x96, 0xd8, 0x38, 0xce, 0x95, 0x34, 0x19, 0x0a, 0xbc, 0xbf, 0xb4, 0xea, 0x4b, + 0xee, 0xeb, 0xbf, 0xd9, 0xd8, 0x98, 0xee, 0xdb, 0xf9, 0x23, 0x4c, 0xbd, 0x14, 0x32, 0xab, 0x95, + 0xf6, 0xab, 0x7e, 0x21, 0x5b, 0x48, 0x64, 0x12, 0x2d, 0x53, 0x5b, 0xa8, 0x9b, 0x8c, 0xcb, 0x8c, + 0xde, 0xdf, 0xf4, 0x3e, 0x5b, 0x78, 0x9e, 0x31, 0x3e, 0xe7, 0x84, 0x39, 0xf1, 0x16, 0x43, 0xdb, + 0x73, 0x98, 0xbb, 0x30, 0x78, 0xf5, 0x0e, 0x78, 0x45, 0x38, 0x62, 0x1f, 0x6e, 0xb6, 0x2b, 0x6b, + 0x2f, 0xbd, 0xb1, 0xfd, 0xd1, 0x0f, 0xf5, 0x2d, 0x9d, 0xdd, 0x3f, 0x7c, 0xb8, 0xe4, 0x99, 0x1f, + 0xfd, 0xd1, 0xd4, 0x1f, 0x3f, 0x6a, 0xa3, 0x81, 0x0d, 0x7b, 0xfa, 0x6b, 0x4f, 0x28, 0xcf, 0x6b, + 0x0d, 0x6f, 0x7d, 0xdc, 0xfa, 0xcd, 0x87, 0xc3, 0xc6, 0x44, 0x65, 0xf0, 0xcc, 0xaa, 0xf5, 0xf1, + 0xff, 0x6d, 0x9b, 0xd3, 0x2c, 0x5f, 0x37, 0xaf, 0x7c, 0xf1, 0x77, 0x93, 0x30, 0x39, 0x38, 0xd5, + 0x6a, 0x68, 0x7a, 0x5a, 0xdd, 0xf9, 0xde, 0xae, 0xce, 0xac, 0x79, 0xd5, 0x8f, 0x13, 0xab, 0x3e, + 0x1e, 0xb6, 0xa4, 0xca, 0xaf, 0xd5, 0x26, 0xb5, 0x23, 0xdb, 0x7b, 0x13, 0xdf, 0xb8, 0xa7, 0xf1, + 0xb6, 0xfb, 0xcc, 0xbb, 0x3f, 0x65, 0x2e, 0x5f, 0xd8, 0x05, 0xa0, 0x1a, 0x88, 0x2f, 0xdf, 0x39, + 0xed, 0x96, 0xbb, 0x2c, 0x24, 0x09, 0x80, 0x9d, 0x54, 0x77, 0x5c, 0xd9, 0x7f, 0xd2, 0x82, 0x1e, + 0x62, 0x83, 0x2e, 0x4f, 0x6b, 0xfc, 0xe1, 0xd5, 0xe6, 0x73, 0xbf, 0x90, 0x82, 0x02, 0xa0, 0xdf, + 0x72, 0x4a, 0xfc, 0xa6, 0x4b, 0x77, 0x34, 0xa7, 0xc6, 0xee, 0x5c, 0x28, 0xc6, 0x83, 0xde, 0x7b, + 0x94, 0xb7, 0x87, 0xc7, 0xce, 0x65, 0x2c, 0xb4, 0x3b, 0xec, 0xf8, 0x1c, 0x77, 0x51, 0xf3, 0xe1, + 0xbc, 0xc3, 0x70, 0x4a, 0x96, 0x96, 0x1a, 0x12, 0x6a, 0x8f, 0x8a, 0x3d, 0x17, 0x93, 0x87, 0xcb, + 0x52, 0xbe, 0x24, 0x84, 0x30, 0x4c, 0x13, 0x00, 0x59, 0x0d, 0x72, 0xcf, 0x5d, 0x0d, 0x0d, 0x4d, + 0x5c, 0xd8, 0xc5, 0x27, 0x3e, 0xaf, 0x29, 0x47, 0x96, 0x1e, 0x21, 0x0a, 0x8d, 0x9e, 0x60, 0x78, + 0xcd, 0xad, 0xb5, 0xdc, 0x57, 0x94, 0x64, 0xcc, 0x58, 0xc3, 0x98, 0x8c, 0xd1, 0x12, 0x8c, 0xa0, + 0xe8, 0x35, 0x27, 0x0d, 0x3f, 0x88, 0x1d, 0x68, 0xbf, 0xab, 0xf8, 0xd0, 0xc7, 0x92, 0x17, 0xfc, + 0x30, 0x53, 0x5a, 0x97, 0xed, 0x59, 0x39, 0xae, 0xe0, 0x11, 0x5d, 0xf7, 0xca, 0xc4, 0xa2, 0xdc, + 0xea, 0x9b, 0x79, 0xb9, 0x0b, 0x49, 0x0e, 0x36, 0x94, 0xfc, 0xa7, 0xc3, 0xbd, 0xee, 0xcd, 0xeb, + 0xea, 0x6a, 0xcc, 0xa6, 0x31, 0xea, 0x9d, 0xf5, 0xe8, 0x73, 0x0e, 0x40, 0x17, 0x0c, 0xaf, 0x2c, + 0xdd, 0xbb, 0x4b, 0x13, 0x7c, 0x30, 0xee, 0x6e, 0x0e, 0x14, 0x1f, 0xf9, 0x58, 0xf2, 0xdc, 0xef, + 0x35, 0x94, 0xd7, 0x67, 0xc3, 0x1c, 0xe3, 0xcc, 0xf3, 0xbd, 0x52, 0xa1, 0x14, 0x73, 0x92, 0xed, + 0xb3, 0xda, 0x82, 0xbb, 0x82, 0xd5, 0x37, 0xaf, 0x3e, 0xea, 0x8b, 0x47, 0xe5, 0x57, 0x94, 0xaa, + 0xbf, 0xf1, 0x16, 0x9d, 0xbf, 0xa8, 0x69, 0x71, 0x13, 0x71, 0x22, 0x77, 0x11, 0x98, 0x29, 0x3b, + 0x9f, 0x81, 0xd8, 0x4f, 0x47, 0x1c, 0x6a, 0x86, 0x6e, 0x94, 0x3c, 0x3e, 0xd8, 0x72, 0x49, 0x03, + 0xe4, 0xf9, 0xfc, 0xc7, 0xeb, 0x8c, 0xeb, 0xdf, 0x54, 0x3d, 0x73, 0xb1, 0x5f, 0x7b, 0x4c, 0x05, + 0xb4, 0x24, 0xca, 0xc5, 0x0a, 0x5b, 0x7f, 0x6b, 0x7c, 0xed, 0x96, 0xe4, 0x19, 0x8b, 0x2b, 0xb5, + 0x2a, 0xdf, 0xb0, 0xc7, 0xbd, 0x73, 0x35, 0xfb, 0x9f, 0x6b, 0x4b, 0x2f, 0xed, 0x36, 0xa1, 0x70, + 0xe7, 0x3f, 0xe7, 0x13, 0xf6, 0xe0, 0xcb, 0x08, 0xae, 0xa6, 0x64, 0xca, 0xdb, 0x7b, 0xac, 0xae, + 0xad, 0xcc, 0x0f, 0x87, 0xae, 0xff, 0x1a, 0x33, 0xfa, 0x92, 0x7d, 0xef, 0xa1, 0x86, 0xdb, 0xee, + 0x33, 0x00, 0x56, 0xf6, 0x06, 0x5b, 0x9a, 0x1f, 0xf2, 0x5b, 0x9e, 0xb2, 0xde, 0x7e, 0x2a, 0xfd, + 0xd3, 0x49, 0x39, 0x83, 0xc3, 0x10, 0x6a, 0x5e, 0x5b, 0x81, 0x31, 0xad, 0x87, 0xbe, 0x9f, 0x2f, + 0xd9, 0x9f, 0xbe, 0x23, 0xb9, 0x7c, 0x89, 0xbc, 0xf9, 0xb2, 0xde, 0xdd, 0x59, 0xeb, 0x8d, 0x5f, + 0x4a, 0x9e, 0x34, 0xaf, 0xed, 0xaa, 0x33, 0x3a, 0xc7, 0x66, 0x1a, 0x33, 0xb5, 0xac, 0x84, 0xfd, + 0x0f, 0x9b, 0xd6, 0xdb, 0x65, 0xd8, 0xef, 0x55, 0x3c, 0xfb, 0xa4, 0x38, 0x15, 0x69, 0xd7, 0x47, + 0x37, 0x6f, 0xcd, 0x55, 0xfc, 0x2e, 0xdf, 0x5d, 0xec, 0xce, 0xf8, 0xe0, 0x8c, 0x38, 0x8b, 0xab, + 0x67, 0x95, 0xb1, 0xcc, 0xc8, 0xf5, 0xe5, 0x52, 0x29, 0x49, 0xc2, 0xa9, 0x96, 0xcb, 0x76, 0xe9, + 0x79, 0xab, 0xe3, 0xb8, 0xc2, 0xca, 0x7f, 0xd6, 0x94, 0x83, 0x29, 0x86, 0x03, 0x03, 0x9a, 0x74, + 0xbd, 0xd7, 0x52, 0x0a, 0xf1, 0x38, 0x00, 0x94, 0xca, 0x60, 0x0c, 0x5a, 0xc1, 0x8a, 0x61, 0x30, + 0xac, 0xc0, 0x51, 0x8b, 0x9b, 0x84, 0x01, 0x02, 0x09, 0x00, 0xb6, 0x00, 0x04, 0x10, 0x82, 0x9c, + 0x21, 0x79, 0xe8, 0x03, 0x01, 0xc8, 0x46, 0xa5, 0x3c, 0x5a, 0x0d, 0x2b, 0x70, 0x03, 0x66, 0x12, + 0xc4, 0xe0, 0x17, 0x31, 0x94, 0x8f, 0x34, 0x5a, 0x21, 0xd7, 0xae, 0x61, 0x91, 0xcc, 0xf6, 0x94, + 0x9f, 0xbe, 0xc5, 0x39, 0xf6, 0x83, 0xa9, 0xad, 0xf7, 0x8e, 0x4b, 0x7d, 0x2b, 0x93, 0x02, 0x1b, + 0xf0, 0xb6, 0x3d, 0x48, 0x09, 0xa6, 0xd5, 0x70, 0xd2, 0xeb, 0x70, 0x64, 0x0c, 0x5a, 0x83, 0x0d, + 0x39, 0x74, 0x25, 0x51, 0xdb, 0x9c, 0xb3, 0xa6, 0x4d, 0x06, 0xdb, 0x03, 0x06, 0x0f, 0x6a, 0x35, + 0xf2, 0x29, 0x23, 0x28, 0x0d, 0xfe, 0x1a, 0xf3, 0x2b, 0x0d, 0x5d, 0x77, 0x7c, 0xaf, 0x7f, 0x01, + 0x04, 0x0a, 0x5a, 0xc3, 0x14, 0x43, 0x6d, 0x80, 0x46, 0xa2, 0x3d, 0x64, 0x31, 0x55, 0xde, 0x13, + 0x6c, 0x5d, 0x65, 0x4f, 0x99, 0xa7, 0xfb, 0x1f, 0x91, 0x53, 0xcf, 0x28, 0xf6, 0x05, 0xc9, 0xa9, + 0xcd, 0xf6, 0xbd, 0x4c, 0x66, 0x65, 0xbe, 0x92, 0x2f, 0x3f, 0x59, 0xf6, 0xb6, 0x7a, 0x74, 0x8c, + 0xd5, 0x7a, 0xca, 0x8c, 0xd4, 0xb4, 0x86, 0x18, 0x8f, 0xc1, 0xf3, 0x90, 0x1b, 0x00, 0x80, 0xd2, + 0x5a, 0x08, 0x31, 0x44, 0xdd, 0x7d, 0x75, 0x40, 0xf5, 0xd1, 0x9d, 0xc1, 0xbf, 0x0d, 0x1c, 0x3f, + 0xa7, 0x7c, 0xc2, 0xbc, 0xae, 0x61, 0xfb, 0x12, 0x51, 0xa1, 0x62, 0x2f, 0x3f, 0x5a, 0x7f, 0x7f, + 0xa5, 0x7b, 0xc2, 0x82, 0x7e, 0xd7, 0x0a, 0x94, 0xa2, 0x95, 0x2f, 0xc5, 0xd0, 0xaa, 0x8e, 0x9b, + 0x97, 0xdb, 0xdc, 0xdd, 0xb4, 0x68, 0xba, 0x3e, 0x61, 0x5e, 0xb7, 0x6b, 0x07, 0x75, 0x5f, 0x19, + 0xa3, 0x92, 0xf6, 0x82, 0xc1, 0xd4, 0xfb, 0xce, 0xea, 0x7b, 0xc3, 0x31, 0xf6, 0x69, 0x9f, 0xca, + 0x0c, 0x3f, 0x4c, 0xd5, 0xe7, 0xe8, 0xa5, 0x63, 0x3b, 0x68, 0xc1, 0x94, 0x9c, 0x29, 0x54, 0xc2, + 0xf1, 0x0c, 0x2e, 0xeb, 0x9b, 0xcd, 0xee, 0xac, 0xfb, 0xd4, 0x73, 0xc6, 0xaf, 0xff, 0xad, 0x7f, + 0xc1, 0xb4, 0xfc, 0xec, 0x56, 0xbc, 0x75, 0x79, 0xec, 0x81, 0x17, 0xac, 0x2b, 0x56, 0xc0, 0x32, + 0xea, 0xef, 0x55, 0x3f, 0xca, 0xf0, 0x54, 0xe1, 0x65, 0x34, 0x03, 0xeb, 0x2b, 0xc1, 0xe2, 0x46, + 0x30, 0x16, 0xf6, 0x15, 0x77, 0xdd, 0xd9, 0x69, 0xcf, 0xb7, 0x1b, 0x96, 0x35, 0xec, 0xf9, 0xed, + 0x9e, 0xde, 0x07, 0x7a, 0x97, 0xfe, 0xfe, 0xc8, 0x54, 0x31, 0x96, 0xfd, 0x43, 0x98, 0x3e, 0x35, + 0x99, 0xed, 0xd2, 0x89, 0x66, 0x27, 0x56, 0x7c, 0x88, 0x92, 0x33, 0xc3, 0xce, 0x35, 0x61, 0xd7, + 0x0e, 0xd1, 0xc0, 0xb5, 0x0a, 0x47, 0xfc, 0xe0, 0x50, 0x05, 0x69, 0x0d, 0x0d, 0x30, 0x8e, 0x4a, + 0x75, 0x38, 0x68, 0x0e, 0x00, 0x95, 0xf2, 0x28, 0xb6, 0xc8, 0x21, 0x1f, 0xa7, 0x34, 0x4a, 0x3e, + 0x28, 0x00, 0x23, 0xa8, 0xfc, 0x68, 0xb6, 0x94, 0x41, 0x35, 0x5e, 0x0d, 0xd1, 0x4f, 0x03, 0xbe, + 0x0f, 0xdf, 0x87, 0xe0, 0x23, 0xf6, 0xd4, 0x1a, 0x52, 0x43, 0x8c, 0x9a, 0x9b, 0x21, 0x68, 0xf0, + 0x14, 0x0f, 0xb6, 0xac, 0xb4, 0x17, 0x5c, 0x62, 0x26, 0xa7, 0x8e, 0x4b, 0x7d, 0x16, 0x6f, 0x91, + 0x9d, 0x4f, 0x41, 0x56, 0x35, 0x19, 0x7b, 0xbb, 0x5c, 0xc2, 0xae, 0x3e, 0xbc, 0xb8, 0x33, 0x71, + 0xe6, 0x91, 0x05, 0x46, 0xf0, 0x7c, 0xfc, 0xe4, 0xd1, 0xcc, 0xa6, 0x4e, 0x01, 0x20, 0x93, 0xd0, + 0xc7, 0xce, 0x29, 0xa5, 0xe3, 0xfe, 0x51, 0xb3, 0x43, 0xad, 0xb1, 0x66, 0xa3, 0x19, 0x84, 0xec, + 0xd9, 0x6d, 0xf1, 0x9d, 0xbd, 0x1c, 0xc0, 0xb4, 0x46, 0x79, 0xee, 0xd1, 0x7d, 0xab, 0x5f, 0x4d, + 0x5f, 0x7c, 0xe2, 0x40, 0xfd, 0xa6, 0xa7, 0x55, 0x1f, 0xbf, 0x5f, 0x9f, 0xe8, 0x1a, 0x30, 0xde, + 0x79, 0x7a, 0x3f, 0x67, 0xd0, 0x1a, 0x7f, 0x78, 0xd9, 0xfc, 0xe3, 0xe6, 0xf8, 0x35, 0xe7, 0x66, + 0x4d, 0x01, 0x0d, 0x6c, 0xda, 0x83, 0xaf, 0xdd, 0x99, 0x0e, 0xc2, 0xf0, 0x43, 0x6f, 0x28, 0x2e, + 0x9a, 0xf1, 0x9a, 0xbe, 0x45, 0x6b, 0x00, 0xc1, 0x8e, 0xdf, 0x5a, 0xd3, 0x3e, 0x1a, 0xe4, 0x37, + 0x05, 0xa9, 0x93, 0x9b, 0x3a, 0x9a, 0xe3, 0xaf, 0x18, 0xfd, 0x77, 0xf7, 0xc7, 0xde, 0xed, 0xa8, + 0x94, 0x42, 0x08, 0x1d, 0xea, 0x74, 0x63, 0x52, 0x4f, 0xd1, 0xd4, 0xc8, 0x48, 0x13, 0xee, 0x7c, + 0x1e, 0xd5, 0x10, 0xcb, 0xa6, 0x87, 0x5b, 0x36, 0xc2, 0xa0, 0x03, 0xe8, 0x7a, 0xc6, 0x8a, 0x70, + 0x06, 0xb8, 0x7b, 0x5d, 0x62, 0xf7, 0x80, 0x3b, 0x34, 0xa0, 0x91, 0x2b, 0x16, 0x66, 0xa7, 0x35, + 0x16, 0x2e, 0x7f, 0x5d, 0xf9, 0x3d, 0xb7, 0xbb, 0x9f, 0xee, 0x4d, 0x2c, 0x9c, 0xda, 0x3f, 0x50, + 0xb2, 0xbf, 0xb3, 0xca, 0xba, 0xe1, 0x64, 0xaf, 0xa6, 0x7f, 0x9e, 0xdf, 0xcc, 0x7e, 0xf2, 0xd8, + 0x8c, 0x9a, 0xe6, 0x96, 0x1a, 0x1d, 0xcd, 0x95, 0x53, 0x16, 0x76, 0xee, 0xff, 0xf6, 0x84, 0xf6, + 0x86, 0x92, 0x1e, 0x1a, 0x68, 0xd0, 0xa0, 0xf4, 0xb7, 0xe1, 0xf3, 0x8f, 0xdc, 0x63, 0x7f, 0xe4, + 0x9e, 0xa9, 0x6d, 0x96, 0xfe, 0x97, 0x93, 0xaa, 0xef, 0x3c, 0xb5, 0x3b, 0x1d, 0x1f, 0x09, 0x26, + 0xf6, 0x16, 0x05, 0xa0, 0xa7, 0x37, 0x79, 0x00, 0x0c, 0x8e, 0xa5, 0xb3, 0xc2, 0xef, 0x3e, 0x6e, + 0x48, 0x35, 0xfe, 0x94, 0x09, 0xb4, 0xac, 0xbc, 0x0a, 0xa6, 0xc3, 0x67, 0xd6, 0x56, 0xfa, 0x85, + 0xbd, 0xbc, 0xcd, 0x34, 0x2d, 0x59, 0x91, 0x99, 0x13, 0x32, 0x73, 0xbf, 0x38, 0x37, 0x73, 0x46, + 0xe6, 0x99, 0x77, 0x3c, 0xd3, 0xff, 0x60, 0xae, 0x61, 0x79, 0x1c, 0xd7, 0xa3, 0xb1, 0x2d, 0xc9, + 0x8f, 0xb1, 0xf2, 0xdd, 0x05, 0xde, 0xf7, 0xb2, 0xdd, 0x76, 0x98, 0xb7, 0xfe, 0x36, 0xb2, 0xa0, + 0x95, 0x1e, 0x33, 0x16, 0xb6, 0xbd, 0x07, 0x9b, 0xba, 0x70, 0xda, 0x22, 0x10, 0x43, 0xc5, 0xc7, + 0x4f, 0x56, 0xa6, 0x36, 0x77, 0x19, 0x04, 0x6a, 0x4c, 0xa8, 0xa3, 0x3b, 0xca, 0xcd, 0xa9, 0xea, + 0xa2, 0x19, 0x5a, 0x6b, 0x3c, 0xf9, 0xaa, 0x01, 0x60, 0xed, 0xa6, 0xe4, 0xae, 0x7e, 0x0e, 0x60, + 0x46, 0xb3, 0x3c, 0xf3, 0xc8, 0xbe, 0x3f, 0x6e, 0x4a, 0xbf, 0xf9, 0xf8, 0x01, 0x51, 0xc7, 0xcd, + 0x8a, 0x8f, 0x07, 0x9f, 0x4d, 0x0e, 0x94, 0xf8, 0x65, 0xcb, 0xb3, 0x65, 0x1f, 0xb7, 0x3e, 0xd0, + 0xd8, 0x35, 0xc0, 0x1b, 0x13, 0xfa, 0x9a, 0x73, 0x7a, 0x5c, 0x07, 0x00, 0xc2, 0x10, 0xab, 0x5e, + 0xb6, 0x1f, 0x7b, 0xc9, 0xfd, 0xe8, 0x9b, 0x7a, 0x4d, 0x3e, 0x5a, 0x40, 0x32, 0x80, 0xf9, 0xe1, + 0xae, 0xdf, 0x9b, 0x1d, 0x6f, 0xde, 0x57, 0x84, 0x27, 0xdc, 0xf9, 0x28, 0x59, 0x78, 0x2d, 0xef, + 0x01, 0xf4, 0x15, 0xed, 0x8d, 0x7b, 0x9c, 0x33, 0x97, 0x14, 0x88, 0x50, 0xf2, 0xf0, 0x83, 0xc7, + 0xe3, 0x5f, 0xbd, 0xac, 0x3f, 0x15, 0xf3, 0x4d, 0xa1, 0x0b, 0x65, 0xe3, 0xf6, 0x87, 0x5b, 0x6e, + 0x9c, 0xba, 0x5b, 0x03, 0x3f, 0x7c, 0xa4, 0xe9, 0xdc, 0xa3, 0x2a, 0x5b, 0x7a, 0x8c, 0x2b, 0x56, + 0x64, 0x05, 0x57, 0x96, 0x21, 0xfd, 0xc0, 0x58, 0xbf, 0xdd, 0x7e, 0xd3, 0xf1, 0x30, 0xf9, 0x88, + 0xb7, 0xc9, 0x97, 0xf1, 0xeb, 0x35, 0x09, 0x80, 0xfe, 0xe9, 0x34, 0x08, 0x60, 0x4f, 0x16, 0xdf, + 0xb8, 0xb7, 0x09, 0xc0, 0xbb, 0xce, 0xc8, 0x9a, 0x02, 0x81, 0xc4, 0x4f, 0x1f, 0xcf, 0x9c, 0x7d, + 0x54, 0x29, 0x93, 0xf4, 0x6e, 0x7f, 0xc8, 0xfd, 0xe2, 0xa5, 0x45, 0xc7, 0x1a, 0x43, 0x29, 0x85, + 0x03, 0x2f, 0x94, 0xcb, 0x65, 0xe1, 0xb4, 0xf0, 0xb8, 0x95, 0x78, 0xd5, 0x34, 0xfe, 0x53, 0x16, + 0xf2, 0x55, 0x9b, 0x7b, 0xc3, 0x52, 0x92, 0x71, 0xc6, 0x38, 0x43, 0x1e, 0x78, 0x18, 0xde, 0x4b, + 0x6b, 0xc5, 0x89, 0xf3, 0xb9, 0x5d, 0x08, 0xd1, 0xcf, 0xe8, 0x4f, 0x98, 0x95, 0x1b, 0x55, 0xab, + 0x55, 0xba, 0xed, 0x3e, 0x03, 0xed, 0x83, 0x64, 0x9c, 0x19, 0x57, 0xb3, 0x5a, 0xec, 0x19, 0xcd, + 0xb9, 0x15, 0x0b, 0x73, 0xb0, 0xe3, 0xab, 0x5e, 0x89, 0xcf, 0x6f, 0xcf, 0xae, 0xd9, 0x9c, 0xda, + 0xb5, 0x4d, 0x9c, 0x7d, 0xf5, 0x80, 0xa8, 0x49, 0x91, 0x2a, 0xfd, 0xeb, 0xbd, 0x26, 0xf8, 0xe0, + 0x68, 0xec, 0xea, 0xc5, 0xfa, 0xf8, 0xb9, 0xac, 0x7e, 0xf4, 0x02, 0xa2, 0x03, 0x0c, 0xe5, 0x33, + 0xae, 0x30, 0x2d, 0xbc, 0xfa, 0x88, 0xec, 0xe5, 0x27, 0x0f, 0xbc, 0xb2, 0xdb, 0x7e, 0xdf, 0xad, + 0x4e, 0x53, 0xb2, 0xe9, 0x1d, 0x27, 0xef, 0x62, 0x43, 0x81, 0x3d, 0x19, 0x02, 0xd0, 0xa6, 0x50, + 0xb5, 0xf7, 0x4b, 0xda, 0xaa, 0x18, 0xee, 0x2f, 0x6c, 0xa2, 0x03, 0xb4, 0xa0, 0x9a, 0xec, 0xf6, + 0x56, 0xf7, 0xb0, 0xb4, 0x15, 0x6b, 0x49, 0x00, 0xe0, 0x0e, 0x37, 0x1a, 0x0d, 0x91, 0x10, 0x00, + 0x64, 0x49, 0xc1, 0x02, 0xf2, 0xe0, 0xdf, 0x63, 0xae, 0xa5, 0xec, 0xf9, 0x56, 0xa9, 0xd3, 0x90, + 0xa5, 0x3e, 0x9d, 0x7b, 0x9a, 0x8c, 0x71, 0xe3, 0x5d, 0x7d, 0x45, 0x6c, 0xee, 0x8c, 0x9f, 0xba, + 0xa8, 0xc4, 0x80, 0x62, 0x05, 0xb7, 0xaf, 0x74, 0x6f, 0xb9, 0xb2, 0x2f, 0xe1, 0x04, 0xa6, 0xd0, + 0x03, 0x45, 0xe3, 0x07, 0x0f, 0xb7, 0x7d, 0xfe, 0xd2, 0x3d, 0x4a, 0xe1, 0x07, 0x0f, 0x37, 0xbf, + 0xf1, 0xd8, 0xd2, 0xee, 0xac, 0x71, 0xe9, 0x8a, 0x2c, 0x67, 0xca, 0x36, 0x64, 0xc5, 0x37, 0x5e, + 0xd8, 0xe1, 0x5c, 0x78, 0xdc, 0x40, 0xbd, 0xf7, 0xcd, 0x97, 0x70, 0xe7, 0x1a, 0xd7, 0x11, 0x74, + 0xe9, 0xf2, 0x6c, 0xb6, 0x48, 0xcf, 0xef, 0xb4, 0xfe, 0xf9, 0x8c, 0x5c, 0xa3, 0xeb, 0x0d, 0x0f, + 0xe2, 0x4b, 0x3e, 0xee, 0x78, 0x3a, 0xf3, 0xcc, 0x76, 0x7e, 0xdd, 0x85, 0x83, 0xa4, 0xae, 0x67, + 0x3f, 0x59, 0x14, 0xf6, 0xfe, 0xd1, 0x9c, 0x73, 0xc9, 0x3e, 0xa7, 0xb4, 0x8a, 0xbb, 0x48, 0x8c, + 0x9f, 0xf5, 0x50, 0xeb, 0xab, 0x08, 0x00, 0xed, 0x29, 0xd1, 0xb3, 0x5b, 0x12, 0x09, 0x47, 0x36, + 0x26, 0xe4, 0x31, 0x73, 0xfa, 0xab, 0x41, 0xe3, 0xee, 0xac, 0x05, 0xc0, 0x57, 0x6c, 0x56, 0xab, + 0xff, 0xd3, 0x55, 0xee, 0xba, 0xad, 0x29, 0x4e, 0x7a, 0x66, 0x8b, 0xdf, 0x96, 0xae, 0x12, 0xb1, + 0xc1, 0x31, 0xfc, 0x90, 0xee, 0x6f, 0x4e, 0xe1, 0x03, 0xe7, 0xe4, 0x7f, 0xf8, 0x68, 0x0a, 0x40, + 0x35, 0xc0, 0xcf, 0x56, 0xb5, 0x5e, 0xb1, 0xdc, 0x7b, 0xec, 0x25, 0xb3, 0xd6, 0x2f, 0x2b, 0x85, + 0x4a, 0x20, 0x5a, 0x1a, 0x54, 0xa3, 0x8b, 0x0d, 0x9d, 0x66, 0xd9, 0x87, 0x33, 0xe6, 0xaa, 0x29, + 0x15, 0x04, 0xbe, 0x1f, 0x9f, 0x72, 0x5a, 0xb2, 0x9a, 0x62, 0xdf, 0xf6, 0xcb, 0x7d, 0x9e, 0xd2, + 0xba, 0xd7, 0x18, 0x48, 0x86, 0xd6, 0xc8, 0x39, 0x5b, 0x80, 0xc7, 0x01, 0x13, 0xac, 0xcd, 0x85, + 0xa1, 0x41, 0x6a, 0x48, 0xe7, 0xb0, 0x7d, 0x70, 0x7d, 0x5c, 0xaf, 0xec, 0xaa, 0x1f, 0xbd, 0x27, + 0xbf, 0xe2, 0x88, 0x81, 0x41, 0x11, 0x42, 0x3a, 0x6e, 0x07, 0x00, 0x5a, 0xd3, 0xe5, 0x8f, 0x9c, + 0xea, 0xfd, 0xec, 0x29, 0xeb, 0xfc, 0x63, 0x62, 0xff, 0xf3, 0x87, 0xf8, 0xc9, 0x4b, 0xe4, 0xbc, + 0x29, 0xf9, 0xda, 0xa5, 0xe6, 0xcc, 0x93, 0x77, 0x5f, 0xbb, 0x27, 0x6e, 0x0f, 0xce, 0x8a, 0x98, + 0x22, 0x74, 0xac, 0x3f, 0x33, 0x2d, 0x7c, 0x7a, 0x63, 0xee, 0xe5, 0xeb, 0x65, 0x3a, 0x5e, 0x75, + 0xed, 0x60, 0xc9, 0x2c, 0xfe, 0xc2, 0xce, 0xa9, 0x0f, 0xbd, 0x60, 0x5c, 0x72, 0x22, 0x33, 0x87, + 0xa6, 0x5c, 0x4c, 0x43, 0x03, 0xa8, 0x04, 0xbc, 0xa6, 0x39, 0x7b, 0x0a, 0xa2, 0xc5, 0x1a, 0xef, + 0x5d, 0xea, 0xb8, 0xc1, 0xa1, 0xb9, 0xd2, 0x9e, 0x0c, 0xb6, 0x84, 0x68, 0x81, 0xd5, 0x6e, 0xf5, + 0xaf, 0xee, 0xdf, 0xf0, 0xb1, 0x0d, 0x3d, 0x0f, 0xf5, 0x24, 0x16, 0x26, 0x66, 0x5f, 0xde, 0xb6, + 0x76, 0xf5, 0xc6, 0x64, 0x4b, 0xac, 0x31, 0x9f, 0x30, 0xbf, 0x26, 0x70, 0xa3, 0x72, 0xe7, 0xad, + 0xa8, 0xec, 0x78, 0x46, 0xf9, 0x15, 0x6e, 0xef, 0x3b, 0x3a, 0x2c, 0x86, 0x6f, 0xb5, 0xb9, 0xc4, + 0x9e, 0xdd, 0x9a, 0x88, 0x5b, 0xba, 0x29, 0x29, 0x97, 0xce, 0xce, 0xe6, 0xaa, 0xac, 0x7b, 0xc0, + 0xf0, 0x42, 0x46, 0x44, 0x33, 0x9a, 0x83, 0x9f, 0xaf, 0x4e, 0xae, 0xdd, 0x92, 0xe2, 0xa4, 0x3b, + 0xda, 0xbc, 0x86, 0xb8, 0x37, 0x2c, 0x31, 0x87, 0x43, 0xf5, 0x2d, 0x69, 0x5c, 0x73, 0x76, 0xe1, + 0xe7, 0x4f, 0x24, 0xb5, 0x46, 0xa9, 0x6a, 0x6f, 0xed, 0x13, 0x77, 0xaf, 0x49, 0x2f, 0x9e, 0xe5, + 0x4f, 0x6b, 0xee, 0xa9, 0x69, 0x9e, 0x54, 0x0c, 0xef, 0x3f, 0xa7, 0xff, 0xb3, 0xbf, 0x68, 0x1e, + 0xe7, 0x41, 0x48, 0x15, 0x77, 0xef, 0x2f, 0x91, 0x41, 0xcb, 0x7d, 0x65, 0x85, 0x8c, 0xd0, 0x85, + 0x1b, 0x82, 0x35, 0x26, 0xb5, 0x6b, 0xe9, 0x54, 0x5c, 0xb9, 0x0e, 0xce, 0x3b, 0xda, 0x7f, 0xf8, + 0xf9, 0x86, 0x50, 0xd1, 0xf9, 0x4b, 0xbd, 0x64, 0x4c, 0x39, 0x16, 0x1a, 0x5d, 0xc5, 0x08, 0x49, + 0x47, 0x01, 0x7c, 0xe4, 0x8b, 0x34, 0x1c, 0xfb, 0x84, 0x10, 0x54, 0x3b, 0xfe, 0xec, 0xd6, 0x86, + 0xb5, 0xdb, 0xac, 0xe3, 0xe7, 0x57, 0x7b, 0x0b, 0xb1, 0x42, 0x45, 0xa4, 0xe2, 0xa1, 0x6d, 0xe2, + 0x0d, 0xcb, 0x0a, 0xb7, 0x3d, 0x98, 0x09, 0x42, 0x94, 0x83, 0x7d, 0x4f, 0x5f, 0xeb, 0x9e, 0xad, + 0x6b, 0xc3, 0xc3, 0x9b, 0x9a, 0xcf, 0x69, 0x2a, 0xdf, 0x55, 0xb0, 0x76, 0xc1, 0xa9, 0xb8, 0x54, + 0x8b, 0xaf, 0xd9, 0x28, 0x6b, 0xca, 0xf7, 0x84, 0x0d, 0xbb, 0x64, 0xb1, 0xbd, 0x68, 0x18, 0x05, + 0x9d, 0x2f, 0x91, 0x3d, 0x15, 0x69, 0x4b, 0x17, 0x3d, 0xe2, 0xfb, 0x72, 0x86, 0xba, 0x4e, 0xb0, + 0xee, 0x95, 0x29, 0x92, 0x70, 0x54, 0xc6, 0xad, 0xec, 0x6d, 0x5b, 0xae, 0x2e, 0x5a, 0x56, 0xfa, + 0xda, 0x7d, 0x4d, 0x77, 0x3d, 0xdd, 0xf8, 0xcb, 0x35, 0xe2, 0x3f, 0x2e, 0x2b, 0xc6, 0xad, 0xa0, + 0x76, 0x9d, 0xa4, 0x85, 0xb4, 0xeb, 0x25, 0xec, 0x60, 0x1f, 0x23, 0x7c, 0xad, 0xf7, 0xb9, 0x0f, + 0xb8, 0x1e, 0x9c, 0x50, 0xe8, 0x2f, 0xc4, 0xef, 0x5f, 0x9f, 0xba, 0xf0, 0x98, 0xd0, 0xb5, 0x03, + 0x83, 0x29, 0xdb, 0xa0, 0x72, 0x40, 0x5a, 0x91, 0x62, 0x14, 0x84, 0xcc, 0x32, 0x64, 0xc6, 0x0d, + 0x00, 0x6c, 0xee, 0xb4, 0x17, 0x4c, 0x41, 0x25, 0xc0, 0x63, 0x1b, 0xf8, 0x61, 0xad, 0x7a, 0x9f, + 0x79, 0x68, 0x96, 0xe4, 0x0a, 0x55, 0xcf, 0xf2, 0xf2, 0xe0, 0x49, 0x65, 0x70, 0xc8, 0x90, 0x2c, + 0x2a, 0x6d, 0xcc, 0x17, 0x5e, 0x18, 0x88, 0xcd, 0x8d, 0x2d, 0xfd, 0xe5, 0xd1, 0xfd, 0xdb, 0xca, + 0xfe, 0x2f, 0x7c, 0xb3, 0x29, 0x83, 0x3d, 0x96, 0xff, 0x31, 0x5f, 0x97, 0xf4, 0xd6, 0x1d, 0x4f, + 0xa7, 0x63, 0xcc, 0xd6, 0xfb, 0xed, 0x28, 0x87, 0xe3, 0x60, 0x70, 0x0d, 0xca, 0xb8, 0x3a, 0x6e, + 0xe9, 0x86, 0xb8, 0x4a, 0x38, 0x38, 0x7b, 0x49, 0xf0, 0xc8, 0x0b, 0x8d, 0xf9, 0x0a, 0xbd, 0xf1, + 0x58, 0x2f, 0x6e, 0xc3, 0x31, 0x07, 0xd9, 0x92, 0xb0, 0x35, 0x88, 0x83, 0xc6, 0x60, 0x8b, 0x29, + 0xa8, 0x66, 0xa3, 0xe6, 0x94, 0x7f, 0xc3, 0x45, 0xa5, 0xb9, 0x6d, 0xa5, 0x9f, 0xad, 0x6a, 0xdc, + 0xd6, 0xe5, 0x1e, 0x36, 0xbd, 0x58, 0x33, 0x2b, 0xaf, 0x9d, 0x40, 0xe3, 0x93, 0x77, 0xdf, 0xd4, + 0x27, 0x3b, 0x03, 0xaf, 0x73, 0xcc, 0xef, 0x72, 0xce, 0x72, 0x15, 0xb6, 0x27, 0x17, 0x33, 0xb8, + 0x0e, 0x42, 0x6a, 0x77, 0x71, 0xc4, 0x8c, 0x6a, 0x63, 0xc2, 0x63, 0xa4, 0x4d, 0x8e, 0x63, 0xe7, + 0x14, 0xde, 0xfb, 0xfd, 0x29, 0x55, 0x1f, 0xb7, 0xbf, 0xa7, 0x93, 0x31, 0x4c, 0x69, 0xc0, 0x92, + 0x59, 0x15, 0x83, 0x2b, 0x43, 0x84, 0xd9, 0xa2, 0x95, 0xaf, 0xb2, 0xce, 0xac, 0xeb, 0x58, 0x61, + 0xd2, 0xf1, 0x62, 0xd6, 0x48, 0xec, 0x1f, 0x44, 0x5a, 0xa3, 0xe4, 0xf1, 0x20, 0xa4, 0xff, 0x7e, + 0x30, 0xf5, 0xab, 0x55, 0xfc, 0x1d, 0x27, 0xa5, 0x85, 0xe8, 0xb7, 0x84, 0xf2, 0x02, 0x71, 0xd5, + 0xe9, 0x39, 0xa5, 0xd4, 0x5d, 0x4f, 0xc7, 0x63, 0xd6, 0xb8, 0x46, 0xe6, 0xdc, 0x28, 0xf7, 0x6e, + 0xdf, 0xf8, 0xe4, 0xd3, 0xcb, 0x56, 0x2c, 0xcb, 0x50, 0xa6, 0x78, 0x63, 0x91, 0x2b, 0xa6, 0x6b, + 0x7e, 0x9d, 0x40, 0x09, 0x1e, 0x3b, 0x36, 0x6e, 0x2d, 0xb2, 0x82, 0xa7, 0x03, 0xae, 0xa7, 0x4a, + 0xb5, 0x9d, 0xd1, 0x4c, 0xc6, 0x66, 0x6a, 0xf9, 0x2a, 0x8c, 0x7d, 0xe7, 0x42, 0x29, 0x80, 0xee, + 0x5a, 0x9b, 0xd9, 0x91, 0x6d, 0x10, 0x4c, 0x03, 0x7a, 0x6a, 0x43, 0xa9, 0xa3, 0xb5, 0x88, 0x90, + 0xee, 0x7d, 0x36, 0xdd, 0x5b, 0x4c, 0x71, 0xa6, 0x01, 0x70, 0x0a, 0x3a, 0x5a, 0x0a, 0x8b, 0x67, + 0x0e, 0x70, 0xa6, 0x66, 0x37, 0x17, 0x97, 0xcd, 0xcd, 0x7c, 0xf8, 0x7b, 0x4d, 0x68, 0x28, 0x9e, + 0xb9, 0x24, 0xc7, 0x48, 0x2b, 0x4d, 0x9c, 0xf4, 0xda, 0x57, 0xf8, 0x2f, 0x56, 0xcf, 0x4c, 0xd8, + 0x83, 0x8d, 0x2a, 0x6e, 0x55, 0x5f, 0x37, 0xbf, 0x57, 0x08, 0x0d, 0xb0, 0x5f, 0x3c, 0xd9, 0x3a, + 0xad, 0xa1, 0x85, 0x08, 0x20, 0x35, 0xb7, 0x25, 0x7f, 0xe4, 0xac, 0xfe, 0x61, 0xe9, 0x32, 0x66, + 0x83, 0xcc, 0x95, 0xc5, 0xb5, 0xbf, 0x8c, 0x6f, 0xd8, 0x6d, 0xbc, 0xf5, 0xc4, 0x7c, 0x57, 0xce, + 0xf8, 0xea, 0xef, 0xac, 0x2f, 0xbd, 0xb9, 0x6a, 0x70, 0xf5, 0xf2, 0xae, 0xcc, 0x7f, 0x3d, 0x98, + 0xfa, 0xc4, 0x45, 0x5d, 0xd3, 0x9a, 0x8a, 0x67, 0x1d, 0xd7, 0x70, 0xed, 0x2f, 0xdc, 0x1f, 0x38, + 0x2d, 0x9b, 0xbb, 0xf9, 0xef, 0xd7, 0x88, 0xdb, 0x3e, 0x98, 0x17, 0x62, 0x1f, 0x7a, 0x8a, 0x78, + 0xd3, 0x72, 0x68, 0x4d, 0x5a, 0x81, 0x06, 0x13, 0x16, 0xbc, 0x4e, 0xaf, 0xf5, 0xe2, 0x66, 0xad, + 0x74, 0xef, 0x03, 0xbd, 0xdc, 0x61, 0x61, 0xb7, 0xc2, 0x46, 0xb0, 0x69, 0x0c, 0x57, 0x53, 0xee, + 0xa8, 0xea, 0x0b, 0xab, 0x9e, 0xa1, 0x72, 0xdf, 0xcc, 0xc5, 0x33, 0xfc, 0xda, 0x1b, 0xb2, 0xb1, + 0xb9, 0x46, 0x8c, 0xe5, 0x2a, 0xc6, 0x9e, 0x2c, 0x19, 0x82, 0x3c, 0x9f, 0xcf, 0x48, 0xd2, 0xe2, + 0x99, 0x5e, 0x32, 0xe6, 0x1b, 0x5c, 0x99, 0x02, 0xc7, 0xcd, 0x2b, 0xbe, 0xff, 0x07, 0x6d, 0x7e, + 0x88, 0xdb, 0xdf, 0x33, 0x20, 0x15, 0x4d, 0x6d, 0xc4, 0x91, 0xb3, 0x2a, 0x82, 0x2b, 0x43, 0x84, + 0x3d, 0x79, 0x2b, 0x5f, 0x65, 0x5d, 0x03, 0xae, 0x65, 0xee, 0xc5, 0x96, 0xc1, 0xce, 0xb8, 0xec, + 0x59, 0x5e, 0xc0, 0x1d, 0x4b, 0xc5, 0x2c, 0x54, 0x42, 0xa3, 0x6b, 0xc0, 0x8a, 0x5b, 0x81, 0xeb, + 0xa8, 0x1a, 0x9d, 0xc6, 0x36, 0x9d, 0xd4, 0x3c, 0xde, 0xbc, 0x1f, 0xea, 0xf3, 0x29, 0x27, 0xf9, + 0x5d, 0x2f, 0x0a, 0x6b, 0x8c, 0x76, 0xdc, 0x92, 0xf4, 0x02, 0x95, 0xba, 0xfd, 0xa1, 0x16, 0xcb, + 0xd4, 0x27, 0x2d, 0x28, 0x9e, 0xbf, 0x44, 0xfd, 0x7c, 0x55, 0x83, 0xe0, 0x48, 0x39, 0xea, 0xb2, + 0xe5, 0x9d, 0xad, 0xe9, 0xca, 0x05, 0x4b, 0x02, 0x0d, 0xb4, 0x67, 0x4a, 0x55, 0xdf, 0x70, 0x1d, + 0xfa, 0xc1, 0x23, 0xcd, 0x8c, 0xd0, 0x94, 0x0c, 0xce, 0x39, 0x32, 0xdf, 0x92, 0xa0, 0x1f, 0x3f, + 0xd6, 0x64, 0x0a, 0x7d, 0xea, 0xe1, 0xc5, 0x65, 0xf3, 0xfa, 0x6a, 0xe6, 0x4a, 0xd8, 0xf2, 0xf0, + 0xa9, 0x21, 0x63, 0x58, 0xb1, 0xa8, 0xf7, 0xc4, 0x05, 0xbd, 0x65, 0x5f, 0x9c, 0x30, 0xb7, 0xe5, + 0xf8, 0xf9, 0xd9, 0x35, 0x9b, 0x1a, 0x66, 0xb7, 0x94, 0xd2, 0xf1, 0xf0, 0xbb, 0x0f, 0x34, 0x48, + 0xa5, 0xae, 0x3e, 0xad, 0x6b, 0xf4, 0xbc, 0x4c, 0xdd, 0xd3, 0x26, 0x67, 0x0b, 0x11, 0xd3, 0xaa, + 0x87, 0xf9, 0xf6, 0xe3, 0x2b, 0x9f, 0x3e, 0xf6, 0xf0, 0x65, 0x8d, 0x6f, 0x68, 0xac, 0x94, 0x07, + 0x13, 0xd0, 0xcb, 0xaf, 0x96, 0x5b, 0x7b, 0x52, 0x6e, 0x5b, 0xdc, 0x9e, 0x6e, 0xeb, 0x16, 0xcd, + 0x1e, 0xed, 0x90, 0x9d, 0xdb, 0x01, 0x43, 0xe0, 0xb4, 0xc0, 0x7f, 0x15, 0x76, 0x2d, 0xc2, 0x33, + 0xb6, 0xb1, 0x1a, 0xdc, 0xea, 0x65, 0xa7, 0x07, 0xdf, 0x59, 0x67, 0x35, 0xbc, 0xc8, 0x38, 0x41, + 0x2a, 0x7d, 0xfe, 0xec, 0xd8, 0x67, 0x2f, 0x2e, 0x5e, 0xbf, 0xa2, 0x7a, 0xeb, 0x33, 0xce, 0xdd, + 0x1b, 0xd8, 0x60, 0xf8, 0x59, 0xb1, 0x8b, 0x17, 0xd3, 0x82, 0x29, 0x79, 0xc7, 0x52, 0x89, 0x98, + 0x77, 0xcd, 0x8a, 0xe2, 0xd3, 0x2f, 0xe3, 0x8b, 0x17, 0x54, 0xdb, 0xd2, 0x65, 0x00, 0x8c, 0xf4, + 0xeb, 0xe6, 0x97, 0xe7, 0xcf, 0x75, 0xbe, 0xfe, 0x88, 0xa8, 0x79, 0x6e, 0x0d, 0xcc, 0x74, 0xed, + 0xd9, 0x2d, 0xce, 0xdc, 0xb6, 0xf2, 0x8a, 0x63, 0x12, 0x5f, 0x7e, 0x42, 0x38, 0x04, 0x09, 0x70, + 0xad, 0xdf, 0x7d, 0x74, 0xfc, 0xf0, 0xe9, 0x03, 0x96, 0x18, 0xd5, 0xeb, 0x9a, 0x86, 0x5a, 0xb6, + 0x58, 0xb9, 0x76, 0x58, 0x73, 0xfb, 0xb3, 0x9a, 0xf3, 0xdf, 0xbf, 0xcc, 0xb9, 0xea, 0x17, 0xee, + 0xbf, 0xff, 0xb6, 0x19, 0x86, 0xba, 0xf8, 0x75, 0xe1, 0x5b, 0x4f, 0xec, 0x63, 0x4c, 0xf7, 0x17, + 0xf9, 0x73, 0xbb, 0x45, 0xd5, 0x17, 0xad, 0xe9, 0xe2, 0xe7, 0xde, 0x32, 0xf0, 0xd6, 0xdb, 0x9a, + 0xcf, 0xfb, 0x7c, 0x13, 0x58, 0x78, 0xd5, 0x59, 0xd5, 0xb3, 0x8f, 0xec, 0xe6, 0x34, 0x5e, 0xd2, + 0x04, 0x01, 0x20, 0x77, 0x3e, 0x76, 0xec, 0xf0, 0xba, 0x2d, 0x7e, 0xb8, 0xcb, 0x0f, 0x77, 0x01, + 0xa5, 0x43, 0x6d, 0x4e, 0xb1, 0x66, 0xbc, 0x77, 0x56, 0xcf, 0x3d, 0x8f, 0x3d, 0x7b, 0xc5, 0xba, + 0x63, 0x7f, 0x7b, 0x7c, 0x78, 0x96, 0x6c, 0x9d, 0xd1, 0xdc, 0x75, 0x6a, 0xcf, 0xaa, 0xc7, 0xd7, + 0x34, 0xb0, 0x44, 0xd2, 0x75, 0x38, 0x63, 0x3c, 0xb1, 0x44, 0x16, 0xd7, 0x93, 0x39, 0xb6, 0x01, + 0xdb, 0xd3, 0xaa, 0x54, 0xe5, 0xb7, 0x3f, 0x34, 0xd5, 0x32, 0xb1, 0x7c, 0x61, 0xf1, 0xdc, 0xc5, + 0xf2, 0x67, 0x4f, 0x64, 0x18, 0x47, 0x3a, 0xae, 0x2e, 0x3b, 0xb9, 0xb3, 0xad, 0xa1, 0x7c, 0xce, + 0x11, 0x61, 0xcc, 0x52, 0x6d, 0xe9, 0x4a, 0xb1, 0x6a, 0xd8, 0x06, 0xbb, 0xfd, 0x91, 0x66, 0x22, + 0xb4, 0x24, 0x83, 0xb3, 0x8e, 0xcc, 0xa5, 0x62, 0xf4, 0x7f, 0x1f, 0x6d, 0x32, 0x84, 0x3e, 0x6b, + 0x49, 0x61, 0xe9, 0xec, 0xda, 0xc0, 0x0c, 0xae, 0xa3, 0x0e, 0x9b, 0x2a, 0x89, 0x91, 0x6b, 0x87, + 0xab, 0x37, 0xd8, 0xbf, 0x7a, 0xaa, 0xfd, 0xb0, 0x76, 0x35, 0xa7, 0xb5, 0xb8, 0xea, 0xe5, 0xcc, + 0xc2, 0x69, 0x65, 0xd7, 0x29, 0xc4, 0x4c, 0x7d, 0xf4, 0x2c, 0xc5, 0x88, 0xbd, 0x36, 0x70, 0xa7, + 0x7d, 0xcd, 0x1b, 0x0e, 0xdf, 0x9b, 0xd1, 0x9f, 0x79, 0xdb, 0xc8, 0x3f, 0x1f, 0xbf, 0xf1, 0x56, + 0x84, 0x95, 0xca, 0xfd, 0xd7, 0x8a, 0x74, 0xbd, 0xb6, 0x01, 0x21, 0xac, 0x31, 0x24, 0x08, 0x79, + 0x4d, 0x8b, 0x0b, 0xae, 0x34, 0x48, 0x2a, 0xaa, 0xc5, 0x22, 0x0c, 0x26, 0x89, 0xe0, 0x85, 0x1c, + 0x40, 0xad, 0xf2, 0x42, 0xc9, 0xa4, 0xae, 0x7d, 0xaa, 0x0d, 0xa6, 0x02, 0xc5, 0xb4, 0x26, 0x68, + 0x70, 0xae, 0x6a, 0xfe, 0xb2, 0x26, 0xe8, 0xfd, 0x90, 0x3b, 0xa6, 0x1c, 0xee, 0xf4, 0xfd, 0x10, + 0x96, 0x81, 0x20, 0x04, 0x63, 0x20, 0x42, 0xb1, 0x02, 0xad, 0xe1, 0x3a, 0x60, 0x43, 0xba, 0x54, + 0x0f, 0xcb, 0x47, 0x0e, 0x55, 0x0c, 0xad, 0xc5, 0xd7, 0x50, 0xf3, 0xc9, 0x1b, 0xb6, 0xf5, 0x59, + 0x53, 0x2e, 0xda, 0xb8, 0x71, 0x43, 0xb5, 0x5a, 0x9d, 0xd3, 0x32, 0x67, 0xc6, 0x9c, 0xb9, 0xde, + 0x23, 0x3d, 0xcf, 0x5c, 0xfa, 0x8c, 0xdb, 0xea, 0xd6, 0x06, 0x6a, 0x47, 0xff, 0xfe, 0x68, 0xab, + 0xdd, 0xa2, 0xed, 0xa1, 0x77, 0xcf, 0xf7, 0x8c, 0x53, 0x5e, 0x2f, 0xab, 0x6b, 0xcb, 0x6b, 0x2f, + 0xa2, 0x14, 0x1f, 0x6f, 0x5a, 0x82, 0x28, 0x04, 0x50, 0xf5, 0xc8, 0x97, 0x62, 0x68, 0xb6, 0x11, + 0x8c, 0xeb, 0xb8, 0x15, 0xf8, 0x81, 0xa8, 0xbd, 0xe6, 0x48, 0x14, 0x92, 0xeb, 0x98, 0x15, 0x0c, + 0x85, 0xad, 0xf8, 0x40, 0xd9, 0x4a, 0x39, 0x81, 0x33, 0x74, 0x44, 0x29, 0x2a, 0x79, 0xa6, 0x1a, + 0x3d, 0x79, 0x19, 0xb3, 0x42, 0x46, 0xb2, 0xec, 0x99, 0x52, 0x0e, 0x26, 0x28, 0x01, 0x30, 0xb9, + 0x74, 0xac, 0x70, 0xaf, 0x7c, 0x20, 0xa9, 0xa8, 0xbf, 0x64, 0x27, 0x6c, 0xdf, 0x36, 0x64, 0xcd, + 0x04, 0x52, 0x51, 0x5f, 0xc1, 0xc9, 0x55, 0x1c, 0x8b, 0x87, 0x99, 0x64, 0xd9, 0xb5, 0x03, 0x00, + 0x41, 0xc8, 0xca, 0x55, 0x23, 0xe1, 0x78, 0x8c, 0x29, 0xad, 0x91, 0x2d, 0xd9, 0xd9, 0x92, 0x6d, + 0x09, 0xbf, 0xd1, 0x2d, 0x3b, 0xd6, 0xd0, 0xfc, 0x28, 0xa0, 0x47, 0x79, 0x3a, 0xad, 0x7d, 0x05, + 0x6b, 0xae, 0xb5, 0xfc, 0x49, 0xdc, 0xf7, 0xb0, 0x48, 0xa7, 0xbb, 0x16, 0x9d, 0x48, 0x16, 0xb9, + 0xfd, 0xde, 0xea, 0xe3, 0x57, 0xb7, 0x5c, 0xd2, 0x74, 0xe4, 0x8f, 0x97, 0xee, 0xf8, 0xee, 0xf6, + 0x17, 0x3f, 0xf4, 0x7c, 0xdb, 0x15, 0xb3, 0x16, 0x7d, 0xf1, 0xb0, 0xbe, 0xde, 0xfe, 0x35, 0xaf, + 0xae, 0xd7, 0x66, 0x75, 0xf6, 0x61, 0xf3, 0xc2, 0x6d, 0xf7, 0x2c, 0x98, 0xdd, 0x42, 0xf9, 0xf5, + 0xa5, 0xc7, 0xbe, 0x22, 0x5a, 0x84, 0x96, 0xba, 0x7e, 0x4a, 0x9a, 0xf4, 0x10, 0x5b, 0x24, 0x86, + 0xd8, 0x32, 0xb8, 0x09, 0x22, 0x40, 0x44, 0x30, 0x98, 0x26, 0x82, 0x17, 0x32, 0x22, 0x6d, 0x72, + 0x5d, 0x9b, 0xc4, 0xd0, 0x83, 0xa1, 0x70, 0x6d, 0x30, 0x1d, 0x28, 0xa6, 0x15, 0xd5, 0x68, 0xc6, + 0x46, 0xd8, 0x42, 0x41, 0xc8, 0x2c, 0x53, 0x02, 0xa8, 0x78, 0xa2, 0xe2, 0x8b, 0xb8, 0x15, 0x58, + 0xa6, 0x0c, 0x43, 0xc6, 0xb8, 0xae, 0xf5, 0x40, 0x5e, 0xc0, 0x1d, 0x33, 0xc4, 0xe8, 0xf7, 0xd5, + 0xa4, 0x65, 0xaf, 0x4c, 0x9c, 0xfd, 0x75, 0x32, 0xdc, 0x2f, 0x7c, 0xe2, 0xbd, 0x63, 0x7b, 0xfd, + 0x42, 0xf7, 0xce, 0xd0, 0x3d, 0x2a, 0x39, 0x7d, 0x45, 0xb8, 0x73, 0x25, 0x52, 0x06, 0x00, 0x06, + 0x59, 0xcf, 0x0f, 0x43, 0xa8, 0xba, 0x8a, 0xd1, 0x35, 0x25, 0x50, 0x97, 0x29, 0x3a, 0xe2, 0xb1, + 0x04, 0x57, 0xf5, 0x97, 0x36, 0xb9, 0x7a, 0xad, 0xd2, 0x65, 0x0c, 0xb6, 0x29, 0x75, 0x1d, 0x27, + 0x6a, 0x59, 0x52, 0xc6, 0x50, 0x07, 0x9d, 0x70, 0xc6, 0xcd, 0xd3, 0xd0, 0x65, 0x0d, 0x58, 0x76, + 0xc7, 0xeb, 0xfd, 0x1d, 0x4f, 0x88, 0x19, 0x57, 0xda, 0x9c, 0xa6, 0x4d, 0x69, 0xdb, 0xb3, 0x7d, + 0xe7, 0x0b, 0xeb, 0x5e, 0x76, 0xec, 0xcc, 0xb4, 0x13, 0x92, 0xb3, 0xbf, 0xb5, 0xd8, 0x69, 0x34, + 0xc2, 0x3d, 0x82, 0xd9, 0x79, 0x64, 0xe0, 0x2b, 0xdf, 0x9a, 0x65, 0xb1, 0x85, 0x73, 0x83, 0x35, + 0xbf, 0x37, 0x2f, 0x7c, 0x3b, 0xdb, 0x32, 0x53, 0x95, 0xb6, 0x51, 0xcc, 0xd8, 0xc7, 0x1c, 0x9b, + 0x6d, 0x69, 0x67, 0x24, 0x4f, 0x7b, 0x70, 0xe0, 0x65, 0x99, 0xa1, 0x65, 0xca, 0xf1, 0xf2, 0x4b, + 0x2c, 0x53, 0xb6, 0x99, 0xe5, 0xd1, 0xef, 0xa8, 0x13, 0x8e, 0x37, 0xd6, 0x6c, 0x1e, 0xc5, 0xad, + 0x60, 0xfc, 0xac, 0xcb, 0xc1, 0xbf, 0x19, 0xd3, 0xcd, 0x89, 0x4a, 0xfd, 0x33, 0x70, 0xa6, 0x5b, + 0x52, 0xe5, 0xda, 0x1c, 0xf0, 0xf0, 0x79, 0x06, 0x57, 0xa9, 0xc1, 0x10, 0x27, 0x11, 0xe9, 0x8c, + 0x5b, 0xcd, 0xb8, 0xd5, 0x71, 0xd3, 0x3b, 0x87, 0x34, 0x95, 0x2a, 0x23, 0xd6, 0x7c, 0xae, 0x59, + 0x4a, 0x07, 0xfe, 0xb3, 0xe2, 0xf4, 0x7f, 0x8b, 0x69, 0x2b, 0xd8, 0x50, 0x94, 0x53, 0x62, 0x87, + 0x7d, 0xed, 0x30, 0xbe, 0x2c, 0xbd, 0xe3, 0xa9, 0x92, 0x79, 0x62, 0xf3, 0xc2, 0x5b, 0x4f, 0x8e, + 0xe5, 0x8a, 0x65, 0x0a, 0x9f, 0x7b, 0x79, 0x3d, 0x3c, 0x6f, 0xda, 0xec, 0xa9, 0x36, 0x83, 0x9a, + 0xf5, 0xc6, 0x6c, 0xd7, 0xff, 0xb4, 0xcd, 0x5b, 0x5e, 0x49, 0xdd, 0xa2, 0xca, 0x0a, 0x26, 0x27, + 0xc8, 0xe1, 0x8b, 0x0f, 0x4b, 0x36, 0x83, 0x43, 0x63, 0x24, 0xf4, 0xae, 0x01, 0xa5, 0x34, 0xab, + 0x8d, 0xef, 0x14, 0x1c, 0x53, 0x41, 0x43, 0x2a, 0x80, 0x60, 0x5b, 0xaa, 0x16, 0x9e, 0x52, 0x00, + 0x67, 0xe0, 0x7c, 0xc4, 0x6d, 0x87, 0x8a, 0x04, 0xd3, 0x0c, 0xa4, 0x19, 0x4c, 0xae, 0x42, 0x4d, + 0x00, 0x1c, 0x4b, 0xc6, 0x1c, 0x69, 0x12, 0x40, 0xc4, 0x58, 0xed, 0xd7, 0x9e, 0x88, 0x11, 0x1c, + 0x53, 0x0e, 0x76, 0x65, 0x6c, 0xe4, 0xe5, 0x55, 0x41, 0x9b, 0xd3, 0x8e, 0xe5, 0xe9, 0xd9, 0x7b, + 0x36, 0x3d, 0x45, 0x75, 0x8a, 0x68, 0x94, 0xf8, 0xf7, 0x13, 0xcb, 0xa9, 0xf0, 0x5c, 0xfc, 0xb8, + 0x4f, 0xc1, 0xb0, 0x50, 0x96, 0x75, 0x69, 0x59, 0x5c, 0xeb, 0x51, 0x45, 0x8d, 0x14, 0x71, 0xe0, + 0x45, 0xef, 0xb3, 0x8c, 0x71, 0x26, 0xea, 0x0a, 0x09, 0x5d, 0x17, 0x7b, 0x52, 0x39, 0xe5, 0x2e, + 0xbf, 0x51, 0xfb, 0xc5, 0xce, 0xa0, 0x05, 0xce, 0x34, 0x2e, 0x58, 0x32, 0xe5, 0xb6, 0xb4, 0xb7, + 0xc5, 0x1b, 0x8c, 0x35, 0xbf, 0x5e, 0xf3, 0xc2, 0xf3, 0x3b, 0x9b, 0x4f, 0x4c, 0x49, 0x93, 0xc7, + 0xe7, 0xc7, 0x9d, 0x99, 0xad, 0xdd, 0x77, 0x77, 0x7b, 0x9d, 0x1e, 0x38, 0x78, 0x47, 0x47, 0x75, + 0xc7, 0xe3, 0xba, 0x52, 0xb2, 0x8e, 0xb9, 0x01, 0x1a, 0xba, 0x1c, 0xee, 0x3b, 0x57, 0x6a, 0x8c, + 0x0c, 0x49, 0x4d, 0xd0, 0xa0, 0xd1, 0x65, 0x30, 0x87, 0x64, 0xf8, 0xef, 0xd1, 0x6c, 0x1e, 0x3c, + 0x46, 0xa4, 0x41, 0xd0, 0xc3, 0xa5, 0x2e, 0xbf, 0xa5, 0x3e, 0xb9, 0x05, 0xfb, 0x3a, 0x3e, 0x6a, + 0x8e, 0x81, 0x40, 0xa4, 0xf7, 0xfd, 0x23, 0x59, 0x7a, 0x1f, 0x39, 0xa2, 0xbe, 0x26, 0x87, 0xcc, + 0x13, 0x3f, 0xab, 0xb6, 0x3d, 0x08, 0x78, 0x70, 0xec, 0x54, 0x9a, 0x4a, 0xbb, 0x0b, 0xbb, 0xef, + 0xdd, 0x61, 0x1d, 0x1d, 0xdb, 0xb3, 0xbe, 0xf2, 0xd8, 0xc7, 0xb6, 0x6e, 0xbc, 0xa9, 0x27, 0x79, + 0x44, 0xd2, 0xb8, 0xa0, 0x61, 0xcd, 0x13, 0xab, 0x7c, 0xcf, 0x6b, 0x9a, 0x36, 0x3d, 0x9d, 0x4e, + 0x5b, 0x86, 0x43, 0xce, 0xb4, 0xc0, 0x68, 0xf7, 0x8b, 0x3b, 0xe3, 0xcb, 0xff, 0x1d, 0xd9, 0x10, + 0x9e, 0x1a, 0x5e, 0xc5, 0xb4, 0x57, 0x46, 0x12, 0x01, 0x52, 0x41, 0x2a, 0x84, 0x12, 0x4a, 0x02, + 0x1a, 0x4a, 0xd5, 0xfd, 0x5e, 0x87, 0xae, 0x75, 0xa9, 0xa4, 0x42, 0x52, 0x21, 0x11, 0x88, 0x83, + 0xa4, 0x1a, 0x55, 0x08, 0x90, 0x8a, 0x02, 0x85, 0x50, 0x21, 0xd4, 0xa3, 0x26, 0x74, 0x7d, 0x09, + 0x3f, 0xac, 0xcf, 0x18, 0x1a, 0xc3, 0x6c, 0xba, 0x2a, 0xa1, 0x10, 0x3f, 0xf5, 0xcb, 0x7b, 0x76, + 0x6c, 0x09, 0x92, 0x2b, 0xea, 0xf3, 0xc4, 0x04, 0xb1, 0x5a, 0x20, 0x4c, 0x02, 0x08, 0x53, 0x27, + 0xf1, 0xe2, 0x33, 0x7e, 0xf5, 0x95, 0xe4, 0x79, 0xbf, 0xca, 0xdf, 0xf7, 0x16, 0xe4, 0x3c, 0xa4, + 0xfe, 0xb1, 0xf6, 0x23, 0x20, 0x4e, 0xaa, 0xac, 0x54, 0x5e, 0xc5, 0x4f, 0xf9, 0x94, 0x68, 0x3c, + 0x62, 0xc7, 0x0b, 0xbf, 0xab, 0xcc, 0xfe, 0x78, 0x8a, 0x4a, 0x5c, 0x08, 0x00, 0x0d, 0x4d, 0xa9, + 0x30, 0x90, 0x7b, 0xb2, 0xbb, 0xd6, 0xdd, 0xbf, 0x7e, 0x73, 0x66, 0x73, 0x66, 0xcb, 0x6c, 0xf6, + 0xf2, 0x80, 0x99, 0x31, 0x66, 0xb4, 0x39, 0x4a, 0x6e, 0xc3, 0xcc, 0xc5, 0x2c, 0x3d, 0x83, 0x4f, + 0x99, 0x15, 0x3c, 0xf7, 0x25, 0xf3, 0xac, 0xcf, 0xfb, 0x2f, 0xfc, 0xbb, 0xec, 0x5d, 0x3f, 0x0e, + 0x63, 0xc4, 0xb8, 0xec, 0xff, 0x53, 0xb3, 0x0c, 0xff, 0xe2, 0x34, 0xc5, 0x71, 0x03, 0x28, 0x7f, + 0xd9, 0x5d, 0x74, 0x49, 0x3b, 0xa7, 0x7c, 0x89, 0x9c, 0x4c, 0xb8, 0xf5, 0x3f, 0xc5, 0xb4, 0x0f, + 0x01, 0xa8, 0x76, 0x57, 0x8b, 0x3b, 0x4a, 0xc5, 0x9d, 0x95, 0x6d, 0xbf, 0xd9, 0xd5, 0xd7, 0x9d, + 0x4c, 0xfb, 0x82, 0x40, 0x4f, 0x3e, 0xb9, 0x7a, 0xfb, 0xd6, 0x5c, 0xc3, 0x8c, 0x60, 0xc6, 0x91, + 0xb3, 0x52, 0x4d, 0xae, 0x6d, 0xdb, 0x00, 0xe2, 0x94, 0x2f, 0xb7, 0xbd, 0xa5, 0x6b, 0xd3, 0x8d, + 0x53, 0x0f, 0x7b, 0x5d, 0xec, 0xf5, 0x5f, 0x2d, 0xdf, 0xf3, 0x51, 0xa5, 0x89, 0xc5, 0x99, 0x56, + 0x7a, 0x1f, 0xc9, 0x78, 0xfa, 0x80, 0x92, 0x4d, 0xe9, 0xaf, 0x68, 0x66, 0x55, 0x0c, 0x95, 0x87, + 0xc4, 0x05, 0xff, 0xad, 0xf2, 0xdb, 0xc3, 0xc0, 0x57, 0x6d, 0x27, 0xd5, 0x5f, 0x9f, 0x9f, 0xb6, + 0x98, 0x13, 0xa8, 0xb6, 0xc2, 0xe5, 0xa8, 0xb3, 0xfe, 0x55, 0x26, 0x8e, 0x29, 0x6f, 0x7d, 0xcc, + 0x49, 0x7a, 0xb1, 0xf9, 0xef, 0x91, 0xa5, 0x5d, 0x61, 0xef, 0x16, 0x1d, 0x2a, 0x22, 0x45, 0x83, + 0xdb, 0x50, 0x1e, 0x8c, 0xa2, 0x14, 0x94, 0xd2, 0x4a, 0xa9, 0xaa, 0xd2, 0x05, 0xcd, 0xe3, 0x1d, + 0xee, 0x19, 0xdf, 0x10, 0x99, 0xf9, 0x3b, 0x37, 0x3c, 0x5c, 0x6e, 0x7f, 0x67, 0xd2, 0x8e, 0x33, + 0x28, 0xc6, 0x88, 0x31, 0x46, 0x44, 0xc2, 0x10, 0x2a, 0x08, 0x03, 0xaf, 0x54, 0xcc, 0xca, 0xe4, + 0x11, 0xce, 0x94, 0x29, 0x6d, 0xc9, 0x5d, 0x16, 0xf3, 0x04, 0x37, 0x7d, 0xbb, 0xa5, 0x07, 0xc4, + 0xb4, 0x68, 0x41, 0xef, 0x77, 0xa9, 0x79, 0x8e, 0x79, 0xf8, 0x87, 0x83, 0x0d, 0xdf, 0xd3, 0xd5, + 0x0a, 0x59, 0x0c, 0x93, 0xea, 0x57, 0x94, 0x08, 0xb2, 0x5f, 0x1a, 0xf3, 0xce, 0x89, 0x2d, 0xfb, + 0x6a, 0xf0, 0x87, 0x4f, 0x90, 0x99, 0x12, 0xb3, 0xcf, 0x43, 0xd9, 0x1b, 0x78, 0x75, 0x93, 0x15, + 0x2b, 0x89, 0xbe, 0x18, 0x7f, 0x7e, 0x1a, 0x77, 0xd5, 0xf4, 0x73, 0x9a, 0x0a, 0xcb, 0xbc, 0xde, + 0x0d, 0x2f, 0x1a, 0x4d, 0xac, 0x71, 0x4e, 0x7b, 0xcb, 0xf4, 0x74, 0x32, 0x6d, 0x33, 0xc6, 0x84, + 0x10, 0xd0, 0x52, 0x30, 0x14, 0xcd, 0x05, 0xde, 0xf6, 0x7b, 0x53, 0x53, 0x8f, 0xb0, 0x17, 0xbc, + 0x21, 0xe8, 0x7c, 0x4e, 0xf6, 0xf5, 0x68, 0x09, 0x10, 0x98, 0xd6, 0x83, 0xbf, 0x6e, 0x54, 0xeb, + 0xef, 0x5e, 0xfb, 0xab, 0x47, 0xfb, 0xd8, 0x1b, 0x57, 0xe9, 0xbf, 0xbc, 0xe8, 0x50, 0xab, 0xb2, + 0x56, 0x45, 0x2d, 0x5a, 0x8f, 0x77, 0xcf, 0xf8, 0x06, 0x64, 0xa5, 0x6b, 0xf7, 0xa6, 0x60, 0xda, + 0x07, 0x48, 0xfb, 0xeb, 0x1f, 0xbc, 0x79, 0xb8, 0x47, 0x18, 0xb5, 0x0f, 0x8f, 0x63, 0xf8, 0xbe, + 0xd4, 0xa5, 0xf6, 0xcb, 0x37, 0x6c, 0xbb, 0xab, 0x3d, 0xfd, 0x52, 0xe6, 0xb8, 0x77, 0x79, 0xd9, + 0x37, 0xa8, 0xae, 0x27, 0xd5, 0xc0, 0xab, 0x2a, 0xb7, 0x01, 0xfa, 0x60, 0x2d, 0xde, 0xd3, 0x00, + 0xb8, 0xd3, 0x64, 0xb4, 0x2f, 0xe4, 0xcd, 0x47, 0x79, 0xd6, 0x42, 0xad, 0xb2, 0x9b, 0x5e, 0xd9, + 0xe4, 0x37, 0xff, 0x93, 0x6b, 0xb7, 0x93, 0xf6, 0x19, 0xe7, 0x35, 0x01, 0xc0, 0x85, 0x19, 0x77, + 0xe4, 0xdc, 0x59, 0x7e, 0xca, 0x32, 0xb7, 0x6f, 0xce, 0x67, 0xf3, 0xcf, 0x2f, 0xb8, 0xc0, 0x68, + 0x5a, 0xba, 0x08, 0xb7, 0xc1, 0x97, 0x03, 0xdd, 0xc1, 0x6d, 0x08, 0x43, 0x54, 0x00, 0x00, 0x07, + 0xf4, 0x49, 0x44, 0x41, 0x54, 0x8b, 0x6e, 0x31, 0x47, 0x6d, 0x29, 0x9f, 0x5d, 0x69, 0x3e, 0xf5, + 0xa1, 0xd8, 0xeb, 0x57, 0x3a, 0xe7, 0xfc, 0xd6, 0xbf, 0xef, 0x94, 0x20, 0xaf, 0xc4, 0xd0, 0x66, + 0x53, 0x8a, 0xf1, 0xbf, 0xa6, 0xf7, 0xfe, 0x87, 0x81, 0x52, 0x23, 0xca, 0xd6, 0x2b, 0xf8, 0xe6, + 0x94, 0xe5, 0xf1, 0x53, 0x7e, 0xa8, 0xb6, 0xdd, 0x5a, 0xc9, 0x3e, 0x14, 0xcc, 0xfb, 0x76, 0x82, + 0x77, 0x23, 0x80, 0x3b, 0x83, 0xe7, 0xbd, 0xce, 0xc4, 0xf3, 0xc9, 0x8c, 0xdd, 0x3c, 0xe3, 0xf2, + 0x8c, 0x7f, 0xd4, 0xc0, 0xa6, 0xd5, 0x0f, 0x37, 0x2c, 0x08, 0x32, 0x8d, 0x89, 0xd8, 0xd4, 0x4c, + 0x32, 0x9d, 0x32, 0x8d, 0x8a, 0x86, 0x50, 0x4a, 0x11, 0x11, 0x93, 0x81, 0xe3, 0xa4, 0x8b, 0x4d, + 0x57, 0x75, 0xed, 0xbc, 0xc3, 0x31, 0xaa, 0xa9, 0x13, 0x3e, 0x56, 0x1e, 0xe8, 0x36, 0x7a, 0x57, + 0xaa, 0x81, 0x4d, 0x41, 0x79, 0xcf, 0x7e, 0xec, 0xf7, 0xb7, 0xb1, 0x2b, 0x1b, 0x0a, 0xb3, 0x7a, + 0xce, 0x2c, 0xd1, 0xd6, 0x61, 0xb4, 0x9f, 0xc0, 0x52, 0x33, 0x77, 0x6f, 0xdb, 0x50, 0x95, 0xa6, + 0x6c, 0x7b, 0x9f, 0xcb, 0xa5, 0xe0, 0x34, 0xee, 0x3e, 0x3c, 0x44, 0x10, 0x1c, 0xb6, 0xc5, 0xca, + 0xed, 0x17, 0x75, 0x66, 0x57, 0x97, 0x37, 0x3e, 0xd9, 0xd2, 0x3c, 0x55, 0x4c, 0x3f, 0x53, 0x4f, + 0x5d, 0x0e, 0xe9, 0x73, 0x78, 0x7f, 0x56, 0xbf, 0xf4, 0x17, 0x13, 0xbf, 0x96, 0x96, 0x4a, 0x9c, + 0xc5, 0xa7, 0xf8, 0xd5, 0x5c, 0xe7, 0x8e, 0x8d, 0x64, 0xb7, 0x05, 0xed, 0x57, 0x3a, 0x4e, 0x42, + 0x90, 0x3f, 0x6a, 0xf1, 0x28, 0x63, 0x09, 0x7b, 0x80, 0xa7, 0xc1, 0x0d, 0x53, 0xc4, 0x9c, 0xce, + 0x3d, 0xb9, 0x0d, 0xdb, 0x1f, 0x17, 0xf3, 0x78, 0xe3, 0xbb, 0x8f, 0xa0, 0x3f, 0x42, 0x22, 0x10, + 0x4e, 0x09, 0x54, 0x35, 0x5a, 0x4e, 0x2c, 0x04, 0xeb, 0xf1, 0xbb, 0x73, 0xe2, 0xe7, 0xdd, 0xcf, + 0x2e, 0x58, 0x25, 0xef, 0xbd, 0x38, 0x2c, 0x77, 0x8a, 0x43, 0x7a, 0x07, 0x62, 0x56, 0xb7, 0x99, + 0xa4, 0x3d, 0xef, 0x8a, 0xc4, 0x89, 0x5f, 0x61, 0xbd, 0xbf, 0xe9, 0x59, 0xf7, 0x4d, 0x63, 0xfe, + 0x97, 0x98, 0x23, 0x08, 0x1e, 0x71, 0xad, 0xb5, 0x0b, 0x29, 0x09, 0xb0, 0x2f, 0xdf, 0xd5, 0x77, + 0x0e, 0xb6, 0x3e, 0xf1, 0x48, 0xcb, 0x14, 0xbf, 0xa9, 0x35, 0x93, 0x89, 0x89, 0xb2, 0x59, 0x65, + 0x8c, 0x49, 0x19, 0xa3, 0xa1, 0x65, 0x28, 0xc4, 0xb9, 0x45, 0x12, 0xae, 0x9b, 0xa7, 0xb7, 0xf4, + 0xec, 0x7e, 0x30, 0x93, 0xdf, 0x92, 0x69, 0x99, 0x69, 0x2e, 0x78, 0x0b, 0xa4, 0x2f, 0xbc, 0x5c, + 0x1d, 0xa3, 0xe8, 0xef, 0xd8, 0x99, 0x0d, 0xde, 0xcb, 0x22, 0x11, 0xb0, 0x46, 0xed, 0x17, 0x7a, + 0x76, 0x6c, 0x96, 0x66, 0x47, 0xd0, 0xbc, 0xdc, 0x75, 0x98, 0xe0, 0x23, 0x6d, 0x63, 0x9c, 0xb8, + 0x3e, 0x91, 0x65, 0x70, 0x40, 0x96, 0x33, 0x27, 0x97, 0xf4, 0xd1, 0x9b, 0x06, 0x9e, 0x55, 0xc5, + 0x0d, 0x00, 0xc8, 0x48, 0x70, 0x58, 0x07, 0x85, 0xfa, 0x23, 0x03, 0x19, 0xb9, 0x83, 0xb9, 0x33, + 0xc2, 0x96, 0xd7, 0xc1, 0x6c, 0x4c, 0xdb, 0x92, 0x84, 0xaa, 0xdf, 0x2c, 0x40, 0x31, 0xc3, 0xd2, + 0x39, 0x87, 0xf7, 0x31, 0x47, 0x58, 0xb6, 0xb0, 0x1d, 0x11, 0x8b, 0x8b, 0xed, 0xbb, 0x77, 0xed, + 0xea, 0x7a, 0x0a, 0x1d, 0xd0, 0xed, 0x01, 0x00, 0x62, 0x9a, 0x73, 0x2d, 0x55, 0xaf, 0x3b, 0xef, + 0x92, 0xc2, 0x06, 0xd0, 0xbd, 0xe7, 0xd0, 0x09, 0xdf, 0x73, 0x2f, 0xfa, 0x83, 0xbf, 0xee, 0xd3, + 0xd5, 0x17, 0x7f, 0x04, 0x80, 0xec, 0x90, 0x04, 0x0e, 0xad, 0x3d, 0x5a, 0x34, 0x20, 0x07, 0x47, + 0xd5, 0x76, 0x93, 0x79, 0xe4, 0x27, 0x8d, 0x39, 0x97, 0x87, 0x9b, 0xbe, 0x95, 0x7b, 0xe5, 0x47, + 0xa5, 0x19, 0x9f, 0x48, 0xbb, 0x0b, 0x2c, 0x2b, 0xc7, 0xb9, 0x20, 0x40, 0xd6, 0x22, 0x49, 0x47, + 0x75, 0x8a, 0x39, 0x99, 0xde, 0x97, 0xd7, 0x5b, 0x4e, 0x65, 0xc6, 0xac, 0x56, 0x37, 0x61, 0xbb, + 0x42, 0xa4, 0xad, 0xde, 0x01, 0xd5, 0x10, 0xca, 0x18, 0x8d, 0x76, 0x94, 0x96, 0x90, 0x88, 0xc7, + 0xd8, 0xb4, 0xb3, 0x4b, 0xa8, 0x14, 0x7b, 0x9e, 0x56, 0x95, 0x5d, 0x00, 0xb8, 0x93, 0xac, 0x0f, + 0x27, 0xfd, 0xfd, 0x9a, 0xf7, 0x50, 0x67, 0x22, 0x64, 0x36, 0x1b, 0xf4, 0x38, 0x89, 0x39, 0x4e, + 0xeb, 0x85, 0x20, 0x33, 0x6e, 0x2a, 0xd3, 0x18, 0x63, 0x6f, 0x95, 0xb1, 0x36, 0x23, 0x21, 0xb2, + 0x0c, 0x6e, 0x1a, 0x94, 0xab, 0x66, 0x94, 0xbb, 0x84, 0x92, 0xcb, 0x74, 0x58, 0xd0, 0xc4, 0xaa, + 0xfe, 0xc1, 0xd9, 0x86, 0x96, 0x0d, 0xfb, 0x75, 0xee, 0x0a, 0x83, 0xa5, 0xad, 0xaa, 0xe2, 0x0e, + 0x48, 0x72, 0x5e, 0xb7, 0xdd, 0x12, 0x71, 0x48, 0x19, 0x17, 0x7b, 0x08, 0x8a, 0x48, 0x10, 0x21, + 0x1e, 0x37, 0x19, 0x23, 0x32, 0x9a, 0x0a, 0xf9, 0x72, 0xb1, 0xfa, 0xbc, 0x6e, 0x49, 0xb7, 0x04, + 0x0e, 0xe7, 0x5c, 0x08, 0x01, 0x84, 0x65, 0xa9, 0x9c, 0xd9, 0x17, 0x66, 0x77, 0xa4, 0x53, 0xab, + 0xae, 0x08, 0x3b, 0x2e, 0xb1, 0x96, 0x7d, 0x5d, 0xcc, 0x79, 0x67, 0xb0, 0xe1, 0xd6, 0x60, 0xc7, + 0xdd, 0xaa, 0x98, 0x47, 0x2d, 0xfb, 0x9c, 0xf4, 0x84, 0xe7, 0xfc, 0x50, 0x2a, 0x0d, 0xa5, 0xe7, + 0x9a, 0x73, 0xae, 0x30, 0xe7, 0x5c, 0xa1, 0xc3, 0x52, 0x79, 0xed, 0x75, 0x5e, 0xcf, 0x33, 0xde, + 0xac, 0xcf, 0xba, 0x89, 0x79, 0x08, 0xb2, 0x64, 0x83, 0x08, 0xc4, 0x95, 0x65, 0xe7, 0x1c, 0x29, + 0x0a, 0x53, 0x7a, 0x77, 0xe4, 0x77, 0xd9, 0xa6, 0xdf, 0xde, 0xd2, 0x92, 0x48, 0xda, 0xae, 0x6b, + 0x90, 0x07, 0xc6, 0x65, 0x9c, 0xf5, 0xe6, 0xe4, 0x8c, 0xc1, 0xc0, 0xe4, 0x68, 0xf6, 0x9b, 0x09, + 0x73, 0xa0, 0x62, 0xea, 0xe6, 0x93, 0x48, 0x87, 0x00, 0xaa, 0xe5, 0x83, 0xb3, 0x7d, 0x81, 0x31, + 0xd4, 0xc3, 0x94, 0x94, 0x95, 0x8a, 0x9b, 0xc4, 0x4c, 0xa9, 0x02, 0x2e, 0x1c, 0xdb, 0xf2, 0xc6, + 0xec, 0x7c, 0x46, 0x0b, 0x1e, 0xa5, 0x50, 0xb7, 0xef, 0x4a, 0x3a, 0x16, 0x84, 0x56, 0x42, 0x49, + 0x09, 0x9d, 0x54, 0x2a, 0xd0, 0xb6, 0x55, 0x37, 0x1d, 0xf2, 0x77, 0x6c, 0xcd, 0x7c, 0xf8, 0x0f, + 0xc3, 0x34, 0x88, 0x91, 0xcb, 0x6b, 0x73, 0x5a, 0xa3, 0xe2, 0x88, 0x3c, 0xc1, 0x76, 0x19, 0xba, + 0x48, 0xda, 0xac, 0xd5, 0x0d, 0x11, 0x4c, 0x93, 0x32, 0xc9, 0xa4, 0x6d, 0x5a, 0x52, 0x86, 0x5c, + 0x05, 0x4e, 0xcc, 0x62, 0x42, 0x11, 0x0f, 0x19, 0x94, 0x05, 0xe9, 0x2b, 0x6d, 0xb4, 0x9f, 0x99, + 0x8b, 0xcd, 0xd2, 0x9b, 0x7e, 0x95, 0xd8, 0xb1, 0xd2, 0x9c, 0x77, 0xa5, 0x58, 0xf2, 0x39, 0xeb, + 0xe8, 0xeb, 0xd5, 0xc0, 0x46, 0xd9, 0xf3, 0xb4, 0xca, 0x6f, 0x96, 0x95, 0x89, 0xbd, 0xd9, 0x3a, + 0x77, 0x42, 0xb2, 0x1a, 0x79, 0xf3, 0xc9, 0x2c, 0x35, 0xdf, 0x37, 0xe7, 0x68, 0xe9, 0x95, 0x5e, + 0xfc, 0xaf, 0xf2, 0x8e, 0xc7, 0x83, 0xd8, 0x2c, 0x3e, 0xff, 0x46, 0xd2, 0xa6, 0x6d, 0x14, 0x4c, + 0x83, 0x73, 0xce, 0x19, 0x27, 0x4d, 0x4c, 0x31, 0x69, 0x3a, 0x4e, 0x4c, 0x6b, 0xee, 0x33, 0x83, + 0x27, 0x9d, 0x98, 0x65, 0x9b, 0x82, 0x14, 0x07, 0x07, 0x24, 0x6c, 0xf4, 0xf9, 0xdc, 0x2d, 0xe9, + 0x46, 0x31, 0xb4, 0xe1, 0x02, 0xd1, 0xe0, 0x10, 0x0b, 0x40, 0xd2, 0x26, 0x2d, 0x6d, 0x00, 0x5a, + 0x05, 0x41, 0xdd, 0x66, 0x24, 0x7f, 0x57, 0x9e, 0x0c, 0xb9, 0x2a, 0x07, 0xe4, 0x38, 0x06, 0xa0, + 0x35, 0x4c, 0xa2, 0x60, 0x3c, 0xd1, 0x35, 0x8a, 0xfa, 0x12, 0x16, 0x00, 0x55, 0x97, 0x6a, 0x26, + 0x0c, 0xad, 0x85, 0xfe, 0xfb, 0xbf, 0xc6, 0x78, 0x71, 0x2f, 0x4d, 0x63, 0xec, 0x3b, 0xa5, 0xc1, + 0x1d, 0x1a, 0x88, 0x51, 0x0f, 0x81, 0xd7, 0xe7, 0x26, 0x08, 0x41, 0x44, 0xc2, 0x30, 0xb8, 0x52, + 0x0a, 0x44, 0x82, 0x73, 0x2e, 0x58, 0x6d, 0xf2, 0x43, 0x08, 0x06, 0x68, 0xad, 0x7d, 0x95, 0x9c, + 0xe3, 0xcd, 0xf9, 0x60, 0xbe, 0xef, 0x31, 0x7a, 0xf6, 0xbf, 0x12, 0xce, 0xf7, 0x9d, 0xa9, 0xc7, + 0xb3, 0xcc, 0x12, 0x31, 0xe3, 0x5c, 0x16, 0x9f, 0x36, 0x7a, 0x21, 0x09, 0x4d, 0x30, 0x57, 0x0f, + 0x80, 0xb4, 0x0e, 0x06, 0x10, 0x96, 0x55, 0x61, 0x93, 0xff, 0xc2, 0x4f, 0x2a, 0xbd, 0x1b, 0xa5, + 0xd1, 0x5c, 0x6d, 0xbf, 0xd4, 0x6e, 0x9c, 0x67, 0x32, 0xcf, 0x34, 0xa4, 0x65, 0x09, 0xc6, 0x38, + 0x67, 0xd0, 0x50, 0xd0, 0x60, 0x8c, 0x0c, 0xc1, 0x59, 0x3c, 0x1e, 0x73, 0x14, 0x11, 0x13, 0x82, + 0x38, 0xe7, 0xb5, 0x1d, 0x2e, 0x48, 0x13, 0x41, 0x26, 0x68, 0x77, 0x55, 0xbb, 0x01, 0xe2, 0xc3, + 0x13, 0x58, 0x23, 0xcd, 0x8c, 0x03, 0xac, 0xc6, 0x78, 0x87, 0x59, 0xff, 0x08, 0x83, 0x1b, 0x1a, + 0x56, 0xff, 0xa1, 0x3e, 0x80, 0x2d, 0xa8, 0x1c, 0xf4, 0x62, 0x30, 0x73, 0x6b, 0xac, 0x4a, 0x3f, + 0x68, 0x1b, 0x52, 0x8f, 0xbd, 0xd4, 0xa2, 0xbe, 0x29, 0xc6, 0xa8, 0x9f, 0xe0, 0xa3, 0x96, 0x92, + 0x56, 0xf7, 0xaa, 0x9c, 0x13, 0x63, 0x04, 0x30, 0xa5, 0x34, 0x1f, 0x5a, 0x55, 0xc9, 0x98, 0x06, + 0x48, 0x88, 0x9a, 0xd3, 0x0a, 0x12, 0xa6, 0xe8, 0xe5, 0x67, 0x21, 0x73, 0x62, 0xbe, 0xf8, 0xea, + 0xce, 0xed, 0xeb, 0x1b, 0xb7, 0xac, 0x15, 0x0c, 0x92, 0xc7, 0xc8, 0xae, 0x13, 0x54, 0x13, 0x84, + 0xfa, 0xf5, 0x61, 0x5a, 0x45, 0x9a, 0x91, 0xaf, 0x24, 0x2a, 0x25, 0x66, 0x58, 0x2d, 0x7e, 0xfb, + 0x3b, 0x94, 0xd5, 0xd6, 0x9a, 0x22, 0x89, 0xc0, 0x32, 0xb9, 0x61, 0x70, 0x22, 0xe2, 0xa4, 0x51, + 0x4b, 0x21, 0x04, 0x34, 0xc0, 0x19, 0x31, 0xc6, 0xa1, 0x07, 0xdd, 0xf9, 0xf0, 0xb6, 0x9b, 0x5a, + 0xd7, 0x3e, 0xac, 0x24, 0xb1, 0xad, 0x8a, 0x06, 0x86, 0x10, 0x7b, 0xed, 0x76, 0x36, 0xae, 0x73, + 0x60, 0x07, 0x9d, 0x27, 0xe3, 0x55, 0xdd, 0x28, 0xea, 0x27, 0xb0, 0x65, 0x6f, 0x89, 0xcb, 0xfe, + 0xb4, 0xbb, 0xfc, 0x8d, 0xea, 0x73, 0x6c, 0xea, 0x53, 0xfd, 0x29, 0x34, 0xde, 0xd8, 0xb4, 0x56, + 0x41, 0x9c, 0xef, 0xbd, 0xf2, 0x9b, 0x31, 0x12, 0x82, 0x33, 0x46, 0x32, 0xf0, 0x9b, 0xe2, 0x21, + 0x60, 0xf5, 0xea, 0xd9, 0x8e, 0xb9, 0xc0, 0xd3, 0x41, 0xd1, 0xcf, 0x29, 0xed, 0xd7, 0xef, 0x6f, + 0x35, 0x11, 0xf7, 0x5e, 0x65, 0x26, 0x63, 0x24, 0x38, 0x4f, 0x23, 0x1d, 0xaf, 0x0a, 0xa3, 0x35, + 0xa9, 0x34, 0x71, 0xce, 0x94, 0x65, 0x72, 0x56, 0xf3, 0xf6, 0xe3, 0xf1, 0x64, 0x2f, 0x4a, 0x93, + 0xae, 0x79, 0x19, 0xad, 0xb9, 0x89, 0x9c, 0x85, 0xec, 0x50, 0xa7, 0xf2, 0x0f, 0xed, 0x03, 0xf6, + 0xcb, 0x55, 0x31, 0x66, 0x64, 0xf4, 0xe0, 0x50, 0xfc, 0x2f, 0x6a, 0xcc, 0xe3, 0x2c, 0xb4, 0xd5, + 0xe3, 0xf5, 0x87, 0x0c, 0x50, 0xc4, 0xc0, 0x41, 0x4c, 0x08, 0xae, 0xb5, 0x54, 0xaa, 0x21, 0x69, + 0x2b, 0x45, 0xa1, 0x24, 0xa5, 0x32, 0x52, 0xaa, 0xda, 0xd2, 0x3b, 0xa5, 0x15, 0x11, 0x41, 0x4f, + 0x24, 0xc1, 0xa3, 0xa1, 0x19, 0x31, 0x02, 0x31, 0x46, 0xc4, 0x98, 0xe0, 0x8c, 0x71, 0xc6, 0x04, + 0x13, 0x82, 0x71, 0x32, 0x19, 0x67, 0x8c, 0x40, 0x50, 0xba, 0x96, 0x58, 0x33, 0xd4, 0xaa, 0xc7, + 0x5d, 0x2a, 0x56, 0xb7, 0xab, 0x00, 0x9f, 0x28, 0xda, 0xef, 0x00, 0x78, 0x7b, 0xc8, 0x44, 0xf1, + 0xfe, 0x44, 0x17, 0xa4, 0xd5, 0x60, 0x1d, 0x32, 0x08, 0x70, 0xa5, 0x35, 0x23, 0xe2, 0x8c, 0x69, + 0x48, 0xa5, 0x98, 0xd4, 0xa4, 0xf5, 0x90, 0xa3, 0xd7, 0xb5, 0x06, 0x30, 0xe1, 0x04, 0x0f, 0x81, + 0x88, 0x31, 0x22, 0x80, 0x33, 0x02, 0x23, 0xc1, 0x18, 0x88, 0xf8, 0x60, 0x4e, 0xbb, 0x1a, 0x72, + 0xdb, 0x87, 0xd2, 0x1e, 0xa3, 0x7f, 0x1a, 0xc4, 0x5f, 0x81, 0x46, 0x13, 0xbd, 0xa9, 0x30, 0x30, + 0x80, 0x31, 0x68, 0x4d, 0x20, 0x2e, 0xa5, 0x1e, 0x1c, 0x31, 0xd4, 0xa5, 0x1a, 0x4f, 0xbc, 0x9f, + 0x13, 0x1a, 0xfa, 0xb1, 0x20, 0x22, 0x30, 0x22, 0x4d, 0xf5, 0x71, 0x0e, 0x35, 0xc9, 0xea, 0xfa, + 0x80, 0xa8, 0x2f, 0x27, 0xa5, 0x35, 0x46, 0x72, 0x21, 0x31, 0xb8, 0x6c, 0x12, 0x00, 0x69, 0x75, + 0x48, 0xbc, 0xd5, 0x48, 0x1f, 0xa0, 0xc7, 0xa0, 0xfb, 0xe4, 0x65, 0xfe, 0x5e, 0xd4, 0x57, 0x93, + 0xd3, 0x12, 0x63, 0x53, 0xe1, 0xef, 0x39, 0x09, 0xff, 0xb7, 0x79, 0xad, 0xba, 0x9d, 0x77, 0xc6, + 0x58, 0x65, 0x3c, 0xd9, 0x21, 0x26, 0x9f, 0xd4, 0xf9, 0x73, 0xa8, 0x13, 0x21, 0xa2, 0x7e, 0x84, + 0x08, 0x87, 0x26, 0xf5, 0x55, 0x64, 0x91, 0x08, 0x93, 0x58, 0xeb, 0xb3, 0xc8, 0x2c, 0x11, 0x26, + 0xa7, 0xe0, 0x89, 0x54, 0x4f, 0x84, 0xc9, 0x47, 0xfd, 0x68, 0x78, 0x17, 0x61, 0x92, 0x52, 0x5f, + 0x46, 0x16, 0x89, 0x30, 0x29, 0xa9, 0x4f, 0x91, 0xe0, 0x89, 0x30, 0x99, 0x87, 0xb9, 0x11, 0x22, + 0x4c, 0x3a, 0xea, 0x0f, 0xee, 0xfe, 0x16, 0x35, 0x80, 0x08, 0x93, 0x8e, 0xfa, 0x51, 0x5c, 0x3f, + 0xc2, 0x64, 0xd6, 0xfa, 0x11, 0x22, 0x4c, 0x52, 0xc1, 0x13, 0x8d, 0x73, 0x23, 0x4c, 0x3a, 0xea, + 0x0f, 0x26, 0x32, 0x50, 0x64, 0x97, 0x08, 0x93, 0x8d, 0xfa, 0xf5, 0x0d, 0x20, 0x42, 0x84, 0x68, + 0x98, 0x1b, 0x21, 0xc2, 0xa1, 0xee, 0xf5, 0x23, 0xad, 0x1f, 0x61, 0x32, 0x6b, 0xfd, 0x88, 0xf9, + 0x11, 0x26, 0x01, 0xd8, 0x6b, 0xbc, 0x7e, 0x44, 0xfc, 0x08, 0x93, 0xd0, 0xeb, 0xab, 0x68, 0x36, + 0x37, 0xc2, 0x64, 0xd6, 0xfa, 0x51, 0xd2, 0x72, 0x84, 0x49, 0xaa, 0xf5, 0x23, 0x44, 0x98, 0xa4, + 0x5e, 0x3f, 0x42, 0x84, 0xc9, 0xaa, 0xf5, 0x23, 0xb3, 0x44, 0x88, 0xbc, 0x7e, 0x84, 0x08, 0x93, + 0x48, 0xeb, 0x47, 0xfc, 0x8f, 0x10, 0x79, 0xfd, 0x08, 0x11, 0x22, 0xea, 0x47, 0x88, 0x70, 0x08, + 0x53, 0x3f, 0x8a, 0xe8, 0x47, 0x98, 0xd4, 0x5a, 0x3f, 0x42, 0x84, 0xc8, 0xeb, 0x47, 0x88, 0x10, + 0x69, 0xfd, 0x08, 0x11, 0x22, 0xea, 0x47, 0x88, 0x70, 0x68, 0x6a, 0xfd, 0x88, 0xff, 0x11, 0x22, + 0xaf, 0x1f, 0x21, 0xc2, 0xe4, 0xa0, 0x7e, 0xb4, 0xf1, 0x60, 0x84, 0xc8, 0xeb, 0x47, 0x88, 0x10, + 0x51, 0x3f, 0x42, 0x84, 0x49, 0x42, 0xfd, 0x88, 0xff, 0x11, 0x26, 0x9f, 0xd6, 0x57, 0x40, 0x94, + 0xaf, 0x1f, 0x21, 0x12, 0x3c, 0x11, 0x22, 0x44, 0x82, 0x27, 0x42, 0x84, 0xc8, 0xeb, 0x47, 0x88, + 0x70, 0xe8, 0x51, 0x3f, 0x4a, 0x5f, 0x8b, 0x10, 0x79, 0xfd, 0x08, 0x11, 0x0e, 0x6d, 0xd0, 0x67, + 0xde, 0x36, 0xf2, 0x4f, 0x43, 0x43, 0x43, 0x64, 0x91, 0x08, 0x87, 0x30, 0xb2, 0xd9, 0xec, 0xd8, + 0x5e, 0xbf, 0xfe, 0x83, 0x08, 0x11, 0x0e, 0x6d, 0xb0, 0xc8, 0x04, 0x11, 0x22, 0xea, 0x47, 0x88, + 0x30, 0x89, 0xf0, 0xff, 0x01, 0xff, 0x06, 0x5d, 0x67, 0xc8, 0xbc, 0x24, 0x9a, 0x00, 0x00, 0x00, + 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 +}; +} \ No newline at end of file diff --git a/SortByInternalDifficulty/MU3.CustomUI/patch_MU3UIImageChanger.cs b/SortByInternalDifficulty/MU3.CustomUI/patch_MU3UIImageChanger.cs new file mode 100644 index 0000000..7d6d93e --- /dev/null +++ b/SortByInternalDifficulty/MU3.CustomUI/patch_MU3UIImageChanger.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace MU3.CustomUI; + +class patch_MU3UIImageChanger: MU3UIImageChanger { + private Sprite[] _sprites; + + public Sprite[] sprites { + get { return _sprites; } + set { _sprites = value; } + } +} \ No newline at end of file diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs new file mode 100644 index 0000000..cb5e5e4 --- /dev/null +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs @@ -0,0 +1,19 @@ +using MonoMod; + +namespace MU3.DB; + +[MonoModPatch("global::MU3.DB.MusicSort1ID")] +[MonoModEnumReplace()] +public enum patch_MusicSort1ID { + Genre = 0, + All = 1, + Character = 2, + Version = 3, + Level = 4, + Name = 5, + Attribute = 6, + InternalLevel = 7, + Begin = 0, + End = 8, + Invalid = -1 +} diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs new file mode 100644 index 0000000..482df7d --- /dev/null +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs @@ -0,0 +1,40 @@ +using MonoMod; + +namespace MU3.DB; + +[MonoModPatch("global::MU3.DB.MusicSort1IDEnum")] +public static class patch_MusicSort1IDEnum { + private static MusicSort1TableRecord[] records; + public static patch_MusicSort1ID[] List; + public static extern bool orig_loadFromFile(string filename); + + public static bool loadFromFile(string filename) { + var rv = orig_loadFromFile(filename); + records = new[] { + new MusicSort1TableRecord(0, "Genre", "ジャンル", 0), + new MusicSort1TableRecord(1, "All", "全曲", 0), + new MusicSort1TableRecord(2, "Character", "キャラクター", 0), + new MusicSort1TableRecord(3, "Version", "バージョン", 0), + new MusicSort1TableRecord(4, "Level", "譜面レベル", 0), + new MusicSort1TableRecord(5, "Name", "曲名", 0), + new MusicSort1TableRecord(6, "Attribute", "属性", 0), + new MusicSort1TableRecord(7, "InternalLevel", "インターナル", 0) + }; + List = new[] { + patch_MusicSort1ID.Genre, + patch_MusicSort1ID.All, + patch_MusicSort1ID.Character, + patch_MusicSort1ID.Version, + patch_MusicSort1ID.Level, + patch_MusicSort1ID.Name, + patch_MusicSort1ID.Attribute, + patch_MusicSort1ID.InternalLevel + }; + return rv; + } + + // Not exactly sure why this is necessary + public static bool isValid(this patch_MusicSort1ID self) { + return self >= patch_MusicSort1ID.Genre && self < patch_MusicSort1ID.End; + } +} diff --git a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs new file mode 100644 index 0000000..2d3e101 --- /dev/null +++ b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs @@ -0,0 +1,81 @@ +using MU3.DB; +using MU3.SceneObject.MusicSelect; +using MU3.Util; +using System; +using System.Collections.Generic; +using System.Text; + +namespace MU3.ViewData; + +class patch_MusicSelectViewDataList: MusicSelectViewDataList { + private delegate int CompareProc(MusicSelectViewData d1, MusicSelectViewData d2, bool forSort1); + private delegate string GetCategoryNameProc(MusicSelectViewData d); + private MusicSort1ID __sort1; + private CompareProc _compareProc1; + private GetCategoryNameProc _getCategoryNameProc; + private ListList _minorCategoryDataList; + + private extern void orig_set__sort1(MusicSort1ID value); + + private void set__sort1(MusicSort1ID value) { + if(value == (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { + __sort1 = value; + _compareProc1 = compareByInternalLevel; + _getCategoryNameProc = getCategoryNameByInternalLevel; + } else { + orig_set__sort1(value); + } + } + private string getCategoryNameByInternalLevel(MusicSelectViewData d) { + StringBuilder stringBuilder = Singleton.instance.getStringBuilder(); + Data.FumenData fumenData = ((d.musicViewData.data == null) ? null : d.musicViewData.data.fumenData[(int)d.difficulty]); + stringBuilder.Append("LEVEL "); + stringBuilder.AppendFormat("{0}", (fumenData == null) ? (-1) : (fumenData.fumenConst.ToString("0.0"))); + return stringBuilder.ToString(); + } + + private int getSortKeyByInternalLevel(MusicSelectViewData d, bool forSort1) { + return (int)Math.Round(d.musicViewData.data.fumenData[(int)d.difficulty].fumenConst * 10.0); + } + + private int compareByInternalLevel(MusicSelectViewData d1, MusicSelectViewData d2, bool forSort1) { + return getSortKeyByInternalLevel(d1, forSort1) - getSortKeyByInternalLevel(d2, forSort1); + } + + private extern bool orig_isDifferentMyListSet(patch_MusicSort1ID oldSort1, patch_MusicSort1ID nowSort1); + private bool isDifferentMyListSet(patch_MusicSort1ID oldSort1, patch_MusicSort1ID nowSort1) { + if(oldSort1 == patch_MusicSort1ID.InternalLevel && nowSort1 != patch_MusicSort1ID.InternalLevel) { + return true; + } + if(oldSort1 != patch_MusicSort1ID.InternalLevel && nowSort1 == patch_MusicSort1ID.InternalLevel) { + return true; + } + return orig_isDifferentMyListSet(oldSort1, nowSort1); + } + + private extern int orig_createMyListMusicDataAllDifficulty(List list, HashSet idList, MU3.Data.MusicData musicData, MusicSort1ID sort1, int initOrder); + private int createMyListMusicDataAllDifficulty(List list, HashSet idList, MU3.Data.MusicData musicData, MusicSort1ID sort1, int initOrder) { + if(sort1 == (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { + sort1 = MusicSort1ID.Level; + } + return orig_createMyListMusicDataAllDifficulty(list, idList, musicData, sort1, initOrder); + } + + // Enable this for 1.45 Re:MAS inclusion + /*private int getMetaSortKey(MusicSelectViewData d, bool forCategorySort) { + if(forCategorySort) { + if(d.musicViewData.data.isBonusTrack) + return 3; + if(d.musicViewData.data.isLunatic && d.musicViewData.data.isReMaster && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) + return 1; + if(d.musicViewData.data.isLunatic && !d.musicViewData.data.isReMaster) + return 2; + } else { + if(d.musicViewData.data.isLunatic && d.musicViewData.data.isReMaster && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) + return 1; + if(d.musicViewData.data.isLunatic && !d.musicViewData.data.isReMaster) + return 2; + } + return 0; + }*/ +} \ No newline at end of file diff --git a/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs new file mode 100644 index 0000000..8a8369c --- /dev/null +++ b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs @@ -0,0 +1,24 @@ +using MU3.DB; + +namespace MU3; + +public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_MusicSelect { + private static patch_MusicSort1ID[] _sort1SettingList; + private extern void orig_Awake(); + + private void Awake() { + _sort1SettingList = new[] { + patch_MusicSort1ID.Genre, + patch_MusicSort1ID.All, + patch_MusicSort1ID.Character, + patch_MusicSort1ID.Version, + patch_MusicSort1ID.Level, + patch_MusicSort1ID.Name, + patch_MusicSort1ID.Attribute, + patch_MusicSort1ID.InternalLevel + }; + + orig_Awake(); + } + +} diff --git a/SortByInternalDifficulty/MU3/patch_UISortButton.cs b/SortByInternalDifficulty/MU3/patch_UISortButton.cs new file mode 100644 index 0000000..c57e332 --- /dev/null +++ b/SortByInternalDifficulty/MU3/patch_UISortButton.cs @@ -0,0 +1,27 @@ +using MU3.CustomUI; +using UnityEngine; + +namespace MU3; + +class patch_UISortButton: UISortButton { + private MU3UIImageChanger _selectPreviewImageChanger; + + protected override void Awake() { + base.Awake(); + + var changer = (patch_MU3UIImageChanger)_selectPreviewImageChanger; + var n = changer.sprites.Length; + var sprites = new Sprite[n + 1]; + + for(int i = 0; i < n; ++i) { + sprites[i] = changer.sprites[i]; + } + + Texture2D tex = new Texture2D(2, 2); + tex.LoadImage(InternalSortPreview.Bytes); + + sprites[n] = Sprite.Create(tex, new Rect(0, 0, 254, 121), sprites[0].pivot); + + changer.sprites = sprites; + } +} diff --git a/SortByInternalDifficulty/SortByInternalDifficulty.csproj b/SortByInternalDifficulty/SortByInternalDifficulty.csproj new file mode 100644 index 0000000..b6bd984 --- /dev/null +++ b/SortByInternalDifficulty/SortByInternalDifficulty.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.SortByInternalDifficulty.mm + Makes internal levels not internal + + + \ No newline at end of file From de9bcda48d4fb6cdf93c5bc04b6b7e3be2e47b0f Mon Sep 17 00:00:00 2001 From: akanyan Date: Fri, 5 Jul 2024 19:49:45 +0900 Subject: [PATCH 04/17] feat(SortByInternal): add sort2 --- .../MU3.DB/patch_MusicSort1ID.cs | 3 +-- .../MU3.DB/patch_MusicSort2IDEnum.cs | 15 +++++++++++++++ .../patch_MusicSelectViewDataList.cs | 16 ++++++++++++---- .../patch_Scene_32_PrePlayMusic_MusicSelect.cs | 15 ++++++++++++++- 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs index cb5e5e4..4ad2c0d 100644 --- a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1ID.cs @@ -2,8 +2,7 @@ namespace MU3.DB; -[MonoModPatch("global::MU3.DB.MusicSort1ID")] -[MonoModEnumReplace()] +[MonoModEnumReplace] public enum patch_MusicSort1ID { Genre = 0, All = 1, diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs new file mode 100644 index 0000000..752bf39 --- /dev/null +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs @@ -0,0 +1,15 @@ +using MonoMod; + +namespace MU3.DB; + +[MonoModPatch("global::MU3.DB.MusicSort2IDEnum")] +public static class patch_MusicSort2IDEnum { + private static MusicSort2TableRecord[] records; + public static extern bool orig_loadFromFile(string filename); + + public static bool loadFromFile(string filename) { + var rv = orig_loadFromFile(filename); + records[4].Name = "インターナル"; + return rv; + } +} diff --git a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs index 2d3e101..74c1f17 100644 --- a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs +++ b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs @@ -1,5 +1,4 @@ using MU3.DB; -using MU3.SceneObject.MusicSelect; using MU3.Util; using System; using System.Collections.Generic; @@ -12,10 +11,11 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { private delegate string GetCategoryNameProc(MusicSelectViewData d); private MusicSort1ID __sort1; private CompareProc _compareProc1; + private CompareProc _compareProc2; private GetCategoryNameProc _getCategoryNameProc; - private ListList _minorCategoryDataList; private extern void orig_set__sort1(MusicSort1ID value); + private extern void orig_set__sort2(MusicSort2ID value); private void set__sort1(MusicSort1ID value) { if(value == (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { @@ -26,6 +26,14 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { orig_set__sort1(value); } } + + private void set__sort2(MusicSort2ID value) { + orig_set__sort2(value); + if(value == MusicSort2ID.Level) { + _compareProc2 = compareByInternalLevel; + } + } + private string getCategoryNameByInternalLevel(MusicSelectViewData d) { StringBuilder stringBuilder = Singleton.instance.getStringBuilder(); Data.FumenData fumenData = ((d.musicViewData.data == null) ? null : d.musicViewData.data.fumenData[(int)d.difficulty]); @@ -34,12 +42,12 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { return stringBuilder.ToString(); } - private int getSortKeyByInternalLevel(MusicSelectViewData d, bool forSort1) { + private int getSortKeyByInternalLevel(MusicSelectViewData d) { return (int)Math.Round(d.musicViewData.data.fumenData[(int)d.difficulty].fumenConst * 10.0); } private int compareByInternalLevel(MusicSelectViewData d1, MusicSelectViewData d2, bool forSort1) { - return getSortKeyByInternalLevel(d1, forSort1) - getSortKeyByInternalLevel(d2, forSort1); + return getSortKeyByInternalLevel(d1) - getSortKeyByInternalLevel(d2); } private extern bool orig_isDifferentMyListSet(patch_MusicSort1ID oldSort1, patch_MusicSort1ID nowSort1); diff --git a/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs index 8a8369c..f980d5b 100644 --- a/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs +++ b/SortByInternalDifficulty/MU3/patch_Scene_32_PrePlayMusic_MusicSelect.cs @@ -4,9 +4,10 @@ namespace MU3; public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_MusicSelect { private static patch_MusicSort1ID[] _sort1SettingList; + private static MusicSort2ID[] _sort2SettingList; private extern void orig_Awake(); - private void Awake() { + private new void Awake() { _sort1SettingList = new[] { patch_MusicSort1ID.Genre, patch_MusicSort1ID.All, @@ -18,6 +19,18 @@ public class patch_Scene_32_PrePlayMusic_MusicSelect: Scene_32_PrePlayMusic_Musi patch_MusicSort1ID.InternalLevel }; + _sort2SettingList = new[] { + MusicSort2ID.Recommend, + MusicSort2ID.BattlePoint, + MusicSort2ID.TechnicalScore, + MusicSort2ID.BossLevel, + MusicSort2ID.Name, + MusicSort2ID.AddDate, + MusicSort2ID.Chapter, + MusicSort2ID.Level + //, MusicSort2ID.Lamp + }; + orig_Awake(); } From 8a66b8becd175d599fd147d70f6879da659310de Mon Sep 17 00:00:00 2001 From: akanyan Date: Sat, 6 Jul 2024 01:21:33 +0900 Subject: [PATCH 05/17] fix(SortByInternal): re:mas de-grouping in act3 --- .../patch_MusicSelectViewDataList.cs | 57 ++++++++++++++++--- 1 file changed, 48 insertions(+), 9 deletions(-) diff --git a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs index 74c1f17..69d1fdf 100644 --- a/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs +++ b/SortByInternalDifficulty/MU3.ViewData/patch_MusicSelectViewDataList.cs @@ -1,7 +1,9 @@ -using MU3.DB; +using MU3.DataStudio; +using MU3.DB; using MU3.Util; using System; using System.Collections.Generic; +using System.Reflection; using System.Text; namespace MU3.ViewData; @@ -34,6 +36,33 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { } } + private PropertyInfo reMasterPi = null; + private bool isReMaster(Data.MusicData d) { + // Fall back for pre-Act3 + if(reMasterPi == null) { + return false; + } + return (bool)reMasterPi.GetValue(d, null); + } + + public extern void orig_create(GameViewData gameViewData, ChapterSelection chapterSelection, FumenDifficulty difficulty, MusicSort1ID sort1, MusicSort2ID sort2); + + public new void create(GameViewData gameViewData, ChapterSelection chapterSelection, FumenDifficulty difficulty, MusicSort1ID sort1, MusicSort2ID sort2) { + reMasterPi = typeof(Data.MusicData).GetProperty("isReMaster"); + orig_create(gameViewData, chapterSelection, difficulty, sort1, sort2); + } + + private string getMetaGategoryName(MusicSelectViewData d) { + var remas = isReMaster(d.musicViewData.data); + if(d.musicViewData.data.isBonusTrack) { + return "ボーナストラック"; + } + if(d.musicViewData.data.isLunatic && remas && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { + return "Re:MASTER"; + } + return d.musicViewData.data.isLunatic && !remas ? "LUNATIC" : null; + } + private string getCategoryNameByInternalLevel(MusicSelectViewData d) { StringBuilder stringBuilder = Singleton.instance.getStringBuilder(); Data.FumenData fumenData = ((d.musicViewData.data == null) ? null : d.musicViewData.data.fumenData[(int)d.difficulty]); @@ -69,21 +98,31 @@ class patch_MusicSelectViewDataList: MusicSelectViewDataList { return orig_createMyListMusicDataAllDifficulty(list, idList, musicData, sort1, initOrder); } - // Enable this for 1.45 Re:MAS inclusion - /*private int getMetaSortKey(MusicSelectViewData d, bool forCategorySort) { + private extern int orig_getMetaSortKey(MusicSelectViewData d, bool forCategorySort); + private int getMetaSortKey(MusicSelectViewData d, bool forCategorySort) { + if(reMasterPi == null) { + return orig_getMetaSortKey(d, forCategorySort); + } + var remas = isReMaster(d.musicViewData.data); + if(forCategorySort) { - if(d.musicViewData.data.isBonusTrack) + if(d.musicViewData.data.isBonusTrack) { return 3; - if(d.musicViewData.data.isLunatic && d.musicViewData.data.isReMaster && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) + } + if(d.musicViewData.data.isLunatic && remas && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { return 1; - if(d.musicViewData.data.isLunatic && !d.musicViewData.data.isReMaster) + } + if(d.musicViewData.data.isLunatic && !remas) { return 2; + } } else { - if(d.musicViewData.data.isLunatic && d.musicViewData.data.isReMaster && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) + if(d.musicViewData.data.isLunatic && remas && __sort1 != MusicSort1ID.Level && __sort1 != (MusicSort1ID)patch_MusicSort1ID.InternalLevel) { return 1; - if(d.musicViewData.data.isLunatic && !d.musicViewData.data.isReMaster) + } + if(d.musicViewData.data.isLunatic && !remas) { return 2; + } } return 0; - }*/ + } } \ No newline at end of file From af15a4410ac5bdbe8859eed6a1845e14a422616e Mon Sep 17 00:00:00 2001 From: akanyan Date: Sat, 6 Jul 2024 03:39:19 +0900 Subject: [PATCH 06/17] fix(SortByInternal): better title --- Mu3Mods.csproj | 2 +- SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs | 2 +- SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index 05d3cf2..d51658b 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 1.8.0 + 1.8.1 true latest x64 diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs index 482df7d..fc4d305 100644 --- a/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort1IDEnum.cs @@ -18,7 +18,7 @@ public static class patch_MusicSort1IDEnum { new MusicSort1TableRecord(4, "Level", "譜面レベル", 0), new MusicSort1TableRecord(5, "Name", "曲名", 0), new MusicSort1TableRecord(6, "Attribute", "属性", 0), - new MusicSort1TableRecord(7, "InternalLevel", "インターナル", 0) + new MusicSort1TableRecord(7, "InternalLevel", "譜面定数", 0) }; List = new[] { patch_MusicSort1ID.Genre, diff --git a/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs index 752bf39..ee40959 100644 --- a/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs +++ b/SortByInternalDifficulty/MU3.DB/patch_MusicSort2IDEnum.cs @@ -9,7 +9,7 @@ public static class patch_MusicSort2IDEnum { public static bool loadFromFile(string filename) { var rv = orig_loadFromFile(filename); - records[4].Name = "インターナル"; + records[4].Name = "譜面定数"; return rv; } } From b54b8676c1e9af035774cc34b017f4b157bfce7d Mon Sep 17 00:00:00 2001 From: akanyan Date: Sun, 7 Jul 2024 23:47:46 +0900 Subject: [PATCH 07/17] feat(NaiveRating): make it togglable --- Mu3Mods.csproj | 2 +- NaiveRating/MU3.Data/patch_GameData.cs | 6 ++- .../patch_Scene_32_PrePlayMusic_Confirm.cs | 10 ++++ NaiveRating/MU3.User/patch_UserManager.cs | 11 ----- NaiveRating/MU3.User/patch_UserUtil.cs | 7 ++- NaiveRating/MU3/patch_ANM_CMN_User.cs | 11 +++++ NaiveRating/MU3/patch_ANM_SWH_Profile.cs | 16 ++++--- NaiveRating/MU3/patch_MU3UICounter.cs | 18 +++++++ .../MU3/patch_OptionSelecterController.cs | 23 +++++++++ .../MU3/patch_Scene_37_Result_Score.cs | 22 --------- NaiveRating/MU3/patch_UIResultBattlePoint.cs | 47 +++++++++++++++++++ NaiveRating/MU3/patch_UserOption.cs | 36 ++++++++++++++ NaiveRating/{MU3 => }/NaiveRating.cs | 10 ++-- 13 files changed, 174 insertions(+), 45 deletions(-) create mode 100644 NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs delete mode 100644 NaiveRating/MU3.User/patch_UserManager.cs create mode 100644 NaiveRating/MU3/patch_ANM_CMN_User.cs create mode 100644 NaiveRating/MU3/patch_MU3UICounter.cs create mode 100644 NaiveRating/MU3/patch_OptionSelecterController.cs delete mode 100644 NaiveRating/MU3/patch_Scene_37_Result_Score.cs create mode 100644 NaiveRating/MU3/patch_UIResultBattlePoint.cs create mode 100644 NaiveRating/MU3/patch_UserOption.cs rename NaiveRating/{MU3 => }/NaiveRating.cs (82%) diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index d51658b..65d3fd0 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 1.8.1 + 1.9.0 true latest x64 diff --git a/NaiveRating/MU3.Data/patch_GameData.cs b/NaiveRating/MU3.Data/patch_GameData.cs index 312e15f..cb159f0 100644 --- a/NaiveRating/MU3.Data/patch_GameData.cs +++ b/NaiveRating/MU3.Data/patch_GameData.cs @@ -5,6 +5,10 @@ namespace MU3.Data; class patch_GameData: GameData { public extern static RatingColorID orig_getRatingColorIDFromRating100(int rating100); public static new RatingColorID getRatingColorIDFromRating100(int rating100) { - return orig_getRatingColorIDFromRating100(NaiveRating.Get()); + if(NaiveRating.IsEnabled()) { + return orig_getRatingColorIDFromRating100(NaiveRating.Get()); + } else { + return orig_getRatingColorIDFromRating100(rating100); + } } } \ No newline at end of file diff --git a/NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs b/NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs new file mode 100644 index 0000000..059a84d --- /dev/null +++ b/NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs @@ -0,0 +1,10 @@ +namespace MU3; + +// It doesn't have to be PrePlayMusic_Confirm, but it prev rating has to be stored at some point +class patch_Scene_32_PrePlayMusic_Confirm: Scene_32_PrePlayMusic_Confirm { + private extern void orig_Enter_Select(); + private void Enter_Select() { + NaiveRating.SavePrev(); + orig_Enter_Select(); + } +} \ No newline at end of file diff --git a/NaiveRating/MU3.User/patch_UserManager.cs b/NaiveRating/MU3.User/patch_UserManager.cs deleted file mode 100644 index db80a0a..0000000 --- a/NaiveRating/MU3.User/patch_UserManager.cs +++ /dev/null @@ -1,11 +0,0 @@ -using MU3.Game; - -namespace MU3.User; - -class patch_UserManager: UserManager { - public extern void orig_updateUserRating(SessionInfo sessionInfo, SessionResult result); - public new void updateUserRating(SessionInfo sessionInfo, SessionResult result) { - NaiveRating.PrevRating = NaiveRating.Get(); - orig_updateUserRating(sessionInfo, result); - } -} \ No newline at end of file diff --git a/NaiveRating/MU3.User/patch_UserUtil.cs b/NaiveRating/MU3.User/patch_UserUtil.cs index 765dc82..be89be2 100644 --- a/NaiveRating/MU3.User/patch_UserUtil.cs +++ b/NaiveRating/MU3.User/patch_UserUtil.cs @@ -4,7 +4,12 @@ namespace MU3.User; [MonoModPatch("global::MU3.User.UserUtil")] public static class patch_UserUtil { + public extern static float orig_toRatingFloat(int rating); public static float toRatingFloat(int rating) { - return NaiveRating.Get() * 0.01f + 1E-05f; + if(NaiveRating.IsEnabled()) { + return orig_toRatingFloat(NaiveRating.Get()); + } else { + return orig_toRatingFloat(rating); + } } } \ No newline at end of file diff --git a/NaiveRating/MU3/patch_ANM_CMN_User.cs b/NaiveRating/MU3/patch_ANM_CMN_User.cs new file mode 100644 index 0000000..f3099c8 --- /dev/null +++ b/NaiveRating/MU3/patch_ANM_CMN_User.cs @@ -0,0 +1,11 @@ +using MU3.CustomUI; + +namespace MU3.SceneObject; +class patch_ANM_CMN_UserDeta_01: ANM_CMN_UserDeta_01 { + private MU3UICounter rating; + public extern void orig_setUserDetail(); + public new void setUserDetail() { + ((patch_MU3UICounter)rating).isDispSuffix = NaiveRating.IsEnabled(); + orig_setUserDetail(); + } +} diff --git a/NaiveRating/MU3/patch_ANM_SWH_Profile.cs b/NaiveRating/MU3/patch_ANM_SWH_Profile.cs index b3d596c..caf8364 100644 --- a/NaiveRating/MU3/patch_ANM_SWH_Profile.cs +++ b/NaiveRating/MU3/patch_ANM_SWH_Profile.cs @@ -9,11 +9,15 @@ class patch_ANM_SWH_Profile: ANM_SWH_Profile { // Fixes login display public new void setUpLogin() { UserManager instance = Singleton.instance; - var prev = instance.userPreview; - var temp = prev; - temp.dispRating = 0; - instance.userPreview = temp; - orig_setUpLogin(); - instance.userPreview = prev; + var up = instance.userPreview; + if(NaiveRating.IsEnabled()) { + up.dispRating = 0; + instance.userPreview = up; + orig_setUpLogin(); + up.dispRating = 2; + instance.userPreview = up; + } else { + orig_setUpLogin(); + } } } \ No newline at end of file diff --git a/NaiveRating/MU3/patch_MU3UICounter.cs b/NaiveRating/MU3/patch_MU3UICounter.cs new file mode 100644 index 0000000..71534e0 --- /dev/null +++ b/NaiveRating/MU3/patch_MU3UICounter.cs @@ -0,0 +1,18 @@ +namespace MU3.CustomUI; +class patch_MU3UICounter: MU3UICounter { + protected extern void orig_calcNumFiguresFloat(double value); + protected new void calcNumFiguresFloat(double value) { + orig_calcNumFiguresFloat(value); + if(isDispSuffix) { + pushFigureFront(10); + } + } + public bool isDispSuffix { get; set; } + protected void pushFigureFront(byte c) { + for(int i = numFigures_; i > 0; --i) { + figures_[i] = figures_[i - 1]; + } + figures_[0] = c; + numFigures_ += 1; + } +} diff --git a/NaiveRating/MU3/patch_OptionSelecterController.cs b/NaiveRating/MU3/patch_OptionSelecterController.cs new file mode 100644 index 0000000..ffa0615 --- /dev/null +++ b/NaiveRating/MU3/patch_OptionSelecterController.cs @@ -0,0 +1,23 @@ +using MU3.CustomUI; +using MU3.User; +using MU3.Util; + +namespace MU3; +class patch_OptionSelecterController: OptionSelecterController { + private chengeParamFuncArray[] cpFuncArray = new chengeParamFuncArray[35]; + public extern void orig_init(UserOption.OptionName id); + private extern void orig_chengeParamOther(int currentParam); + public new void init(UserOption.OptionName id) { + orig_init(id); + cpFuncArray[33].max = 2; + } + private void chengeParamOther(int currentParam) { + if(myOptionId == UserOption.OptionName.Rating) { + transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent().patternNumber = currentParam != 0 ? 0f : 1f; + Singleton.instance.userOption.customSet.Rating = (UserOption.eRating)currentParam; + SingletonMonoBehaviour.instance.userData.setUserDetail(); + } else { + orig_chengeParamOther(currentParam); + } + } +} diff --git a/NaiveRating/MU3/patch_Scene_37_Result_Score.cs b/NaiveRating/MU3/patch_Scene_37_Result_Score.cs deleted file mode 100644 index 663c96b..0000000 --- a/NaiveRating/MU3/patch_Scene_37_Result_Score.cs +++ /dev/null @@ -1,22 +0,0 @@ -using MU3.Sequence; - -namespace MU3; - -class patch_Scene_37_Result_Score: Scene_37_Result_Score { - private PlayInfo playInfo_; - private extern void orig_TechRating_Init(); - - // Fixes rating+/rating- display - private void TechRating_Init() { - var origRating = playInfo_.sessionResult.rating_; - var origPrevRating = playInfo_.sessionResult.prevRating_; - - playInfo_.sessionResult.rating_ = NaiveRating.Get(); - playInfo_.sessionResult.prevRating_ = NaiveRating.PrevRating; - - orig_TechRating_Init(); - - playInfo_.sessionResult.rating_ = origRating; - playInfo_.sessionResult.prevRating_ = origPrevRating; - } -} \ No newline at end of file diff --git a/NaiveRating/MU3/patch_UIResultBattlePoint.cs b/NaiveRating/MU3/patch_UIResultBattlePoint.cs new file mode 100644 index 0000000..db9df6b --- /dev/null +++ b/NaiveRating/MU3/patch_UIResultBattlePoint.cs @@ -0,0 +1,47 @@ +using MU3.CustomUI; +using MU3.Sequence; +using MU3.User; +using UnityEngine; + +namespace MU3; +class patch_UIResultBattlePoint: UIResultBattlePoint { + private Animator animator_; + private MU3UICounter counterScore_; + private MU3UIImageChanger imageHeader_; + private MU3UICounter counterScorePlus_; + private MU3UICounter counterScoreMinus_; + private GameObject hideScore_; + + private extern void orig_disable(MU3UICounter counter); + private void disable(MU3UICounter counter) => orig_disable(counter); + public extern void orig_initTechRating(PlayInfo playInfo); + public new void initTechRating(PlayInfo playInfo) { + ((patch_MU3UICounter)counterScore_).isDispSuffix = NaiveRating.IsEnabled(); + if(!NaiveRating.IsEnabled()) { + orig_initTechRating(playInfo); + return; + } + int prevRating = NaiveRating.PrevRating; + int rating1 = NaiveRating.Get(); + if((bool)hideScore_) { + hideScore_.SetActive(false); + } + counterScore_.Counter = (double)UserUtil.toRatingFloat(rating1); + int ratingPatternNo = UserUtil.toRatingPatternNo(rating1); + counterScore_.SpriteIndex = ratingPatternNo; + imageHeader_.patternNumber = (float)ratingPatternNo; + int rating2 = rating1 - prevRating; + if(rating2 == 0) { + disable(counterScorePlus_); + disable(counterScoreMinus_); + animator_.SetInteger(MU3.Sys.Const.AnimatorID_State, 2); + } else if(0 < rating2) { + disable(counterScoreMinus_); + if((bool)counterScorePlus_) { + counterScorePlus_.Counter = rating2 * 0.01f + 1E-05f; + } + animator_.SetInteger(MU3.Sys.Const.AnimatorID_State, 0); + } + animator_.SetTrigger(MU3.Sys.Const.AnimatorID_In); + } +} diff --git a/NaiveRating/MU3/patch_UserOption.cs b/NaiveRating/MU3/patch_UserOption.cs new file mode 100644 index 0000000..ae2dc7f --- /dev/null +++ b/NaiveRating/MU3/patch_UserOption.cs @@ -0,0 +1,36 @@ +using MonoMod; + +namespace MU3.User; + +class patch_UserOption: UserOption { + [MonoModEnumReplace] + public enum patch_eRating { + OFF = 0, + Default = 1, + ON = 1, + Naive = 2, + MAX = 2 + } + class patch_DataSet: DataSet { + private patch_eRating rating = patch_eRating.ON; + public extern bool orig_isMax(OptionName id); + public new bool isMax(OptionName id) { + if(id == OptionName.Rating) { + return rating == patch_eRating.MAX; + } + return orig_isMax(id); + } + public new patch_eRating Rating { + get => rating; + set { + if(patch_eRating.MAX < value) { + rating = patch_eRating.MAX; + } else if(value < patch_eRating.OFF) { + rating = patch_eRating.OFF; + } else { + rating = value; + } + } + } + } +} \ No newline at end of file diff --git a/NaiveRating/MU3/NaiveRating.cs b/NaiveRating/NaiveRating.cs similarity index 82% rename from NaiveRating/MU3/NaiveRating.cs rename to NaiveRating/NaiveRating.cs index bc3b5dd..f09b94b 100644 --- a/NaiveRating/MU3/NaiveRating.cs +++ b/NaiveRating/NaiveRating.cs @@ -5,10 +5,8 @@ using MU3.Util; using System.Collections.Generic; using System.Linq; -namespace MU3; - public static class NaiveRating { - public static int PrevRating { get; set; } + public static int PrevRating { get; private set; } // Adapted from MU3.User.UserRating.calcBest() private static RatingList calcSane() { @@ -48,4 +46,10 @@ public static class NaiveRating { } return res / 45; } + public static bool IsEnabled() { + return Singleton.instance.userOption.customSet.Rating == (UserOption.eRating)patch_UserOption.patch_eRating.Naive; + } + public static void SavePrev() { + PrevRating = Get(); + } } \ No newline at end of file From 42cf65bdb7271d5b8582dd6d02f3cfd0d913807f Mon Sep 17 00:00:00 2001 From: akanyan Date: Thu, 4 Jul 2024 21:43:10 +0900 Subject: [PATCH 08/17] feat: add 4 things * DisableEncryption * LoadBoost * UnlockFrameRate * UnlockMasterDifficulty WIP, not fully reviewed/tested yet. --- DisableEncryption/DisableEncryption.csproj | 7 ++ DisableEncryption/MU3/patch_NetConfig.cs | 28 ++++++++ LoadBoost/LoadBoost.csproj | 7 ++ LoadBoost/MU3.Data/patch_DataManager.cs | 70 +++++++++++++++++++ LoadBoost/MU3.Data/patch_DataStudioManager.cs | 60 ++++++++++++++++ LoadBoost/MU3.Sequence/patch_Initialize.cs | 16 +++++ .../MU3.Notes/patch_NotesManager.cs | 11 +++ UnlockFrameRate/MU3.Sys/patch_Config.cs | 19 +++++ UnlockFrameRate/MU3.Sys/patch_Time.cs | 20 ++++++ UnlockFrameRate/UnlockFrameRate.csproj | 7 ++ .../MU3.ViewData/patch_MusicViewData.cs | 13 ++++ .../UnlockMasterDifficulty.csproj | 8 +++ 12 files changed, 266 insertions(+) create mode 100644 DisableEncryption/DisableEncryption.csproj create mode 100644 DisableEncryption/MU3/patch_NetConfig.cs create mode 100644 LoadBoost/LoadBoost.csproj create mode 100644 LoadBoost/MU3.Data/patch_DataManager.cs create mode 100644 LoadBoost/MU3.Data/patch_DataStudioManager.cs create mode 100644 LoadBoost/MU3.Sequence/patch_Initialize.cs create mode 100644 UnlockFrameRate/MU3.Notes/patch_NotesManager.cs create mode 100644 UnlockFrameRate/MU3.Sys/patch_Config.cs create mode 100644 UnlockFrameRate/MU3.Sys/patch_Time.cs create mode 100644 UnlockFrameRate/UnlockFrameRate.csproj create mode 100644 UnlockMasterDifficulty/MU3.ViewData/patch_MusicViewData.cs create mode 100644 UnlockMasterDifficulty/UnlockMasterDifficulty.csproj diff --git a/DisableEncryption/DisableEncryption.csproj b/DisableEncryption/DisableEncryption.csproj new file mode 100644 index 0000000..2dc87c7 --- /dev/null +++ b/DisableEncryption/DisableEncryption.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.DisableEncryption.mm + Disable encryption + + + \ No newline at end of file diff --git a/DisableEncryption/MU3/patch_NetConfig.cs b/DisableEncryption/MU3/patch_NetConfig.cs new file mode 100644 index 0000000..1717938 --- /dev/null +++ b/DisableEncryption/MU3/patch_NetConfig.cs @@ -0,0 +1,28 @@ +using MonoMod; + +namespace MU3; + +[MonoModPatch("global::MU3.NetConfig")] +public static class patch_NetConfig { + private static int encryptVersion_; + + private static bool useTLS_; + + public static int EncryptVersion { + get { + return 0; + } + set { + encryptVersion_ = 0; + } + } + + public static bool UseTLS { + get { + return false; + } + set { + useTLS_ = false; + } + } +} diff --git a/LoadBoost/LoadBoost.csproj b/LoadBoost/LoadBoost.csproj new file mode 100644 index 0000000..44300da --- /dev/null +++ b/LoadBoost/LoadBoost.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.LoadBoost.mm + Speed up startup + + + \ No newline at end of file diff --git a/LoadBoost/MU3.Data/patch_DataManager.cs b/LoadBoost/MU3.Data/patch_DataManager.cs new file mode 100644 index 0000000..5064ca4 --- /dev/null +++ b/LoadBoost/MU3.Data/patch_DataManager.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace MU3.Data; + +public class patch_DataManager: DataManager { + private Dictionary _fumenAnalysisData; + + private void InitCache() { + if(File.Exists("data_fumen_analysis_cache.bin")) { + System.Console.WriteLine("Loading FumenAnalysisData cache..."); + _fumenAnalysisData = new Dictionary(); + using(FileStream input = File.OpenRead("data_fumen_analysis_cache.bin")) { + using BinaryReader binaryReader = new BinaryReader(input); + while(binaryReader.BaseStream.Position < binaryReader.BaseStream.Length) { + int key = binaryReader.ReadInt32(); + bool isExist = binaryReader.ReadBoolean(); + int bpm = binaryReader.ReadInt32(); + int platinumScoreMax = binaryReader.ReadInt32(); + string notesDesignerName = binaryReader.ReadString(); + _fumenAnalysisData.Add(key, new FumenAnalysisData { + isExist = isExist, + bpm = bpm, + platinumScoreMax = platinumScoreMax, + notesDesignerName = notesDesignerName + }); + } + } + System.Console.WriteLine("Success"); + } else { + _fumenAnalysisData = new Dictionary(); + } + } + + private void SaveCache() { + System.Console.WriteLine($"Saving FumenAnalysisData cache...{Enumerable.First>((IEnumerable>)_fumenAnalysisData).Key},{Enumerable.First>((IEnumerable>)_fumenAnalysisData).Value.notesDesignerName}"); + if(File.Exists("data_fumen_analysis_cache.bin")) { + File.Delete("data_fumen_analysis_cache.bin"); + } + using(FileStream fileStream = File.OpenWrite("data_fumen_analysis_cache.bin")) { + using BinaryWriter binaryWriter = new BinaryWriter(fileStream); + foreach(KeyValuePair fumenAnalysisDatum in _fumenAnalysisData) { + binaryWriter.Write(fumenAnalysisDatum.Key); + binaryWriter.Write(fumenAnalysisDatum.Value.isExist); + binaryWriter.Write(fumenAnalysisDatum.Value.bpm); + binaryWriter.Write(fumenAnalysisDatum.Value.platinumScoreMax); + binaryWriter.Write(fumenAnalysisDatum.Value.notesDesignerName); + } + fileStream.Flush(); + } + System.Console.WriteLine("Success"); + } + + private extern void orig_makeFumenAnalysisDataList(); + + private void makeFumenAnalysisDataList() { + try { + if(DataStudioManager.needSave || !File.Exists("data_fumen_analysis_cache.bin")) { + orig_makeFumenAnalysisDataList(); + SaveCache(); + } else { + InitCache(); + } + } catch(Exception value) { + System.Console.WriteLine(value); + } + } +} diff --git a/LoadBoost/MU3.Data/patch_DataStudioManager.cs b/LoadBoost/MU3.Data/patch_DataStudioManager.cs new file mode 100644 index 0000000..e0f670d --- /dev/null +++ b/LoadBoost/MU3.Data/patch_DataStudioManager.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +namespace MU3.Data; + +public class DataStudioManager { + public static bool needSave; + + private static Dictionary _dataCache; + + private static extern bool orig_Deserialize(string filePath, out T dsr) where T : new(); + + private static void InitCache() { + if(File.Exists("data_cache.bin")) { + System.Console.WriteLine("Loading cache..."); + using FileStream serializationStream = File.OpenRead("data_cache.bin"); + _dataCache = (Dictionary)new BinaryFormatter().Deserialize(serializationStream); + return; + } + _dataCache = new Dictionary(); + } + + private static void SaveCache() { + if(File.Exists("data_cache.bin")) { + File.Delete("data_cache.bin"); + } + using FileStream serializationStream = File.OpenWrite("data_cache.bin"); + new BinaryFormatter().Serialize(serializationStream, _dataCache); + } + + private static bool Deserialize(string filePath, out T dsr) where T : new() { + if(_dataCache == null) { + InitCache(); + } + if(_dataCache.ContainsKey(filePath)) { + dsr = (T)_dataCache[filePath]; + return true; + } + if(orig_Deserialize(filePath, out dsr)) { + needSave = true; + _dataCache.Add(filePath, dsr); + return true; + } + return false; + } + + public extern bool orig_IsLoaded(); + + public bool IsLoaded() { + if(orig_IsLoaded()) { + if(needSave) { + System.Console.WriteLine("Saving cache..."); + SaveCache(); + } + return true; + } + return false; + } +} diff --git a/LoadBoost/MU3.Sequence/patch_Initialize.cs b/LoadBoost/MU3.Sequence/patch_Initialize.cs new file mode 100644 index 0000000..a1154e6 --- /dev/null +++ b/LoadBoost/MU3.Sequence/patch_Initialize.cs @@ -0,0 +1,16 @@ +using MU3.SceneObject; + +namespace MU3.Sequence; + +public class patch_Initialize: Initialize { + private Scene_12_Initialize _initializeObject; + + private void Execute_InitQRReader() { + _initializeObject.setQRCodeReaderStatus("SKIP"); + setNextState(EState.CheckDelivery); + } + + private void Enter_Warning() { + setNextState(EState.StateEnd); + } +} diff --git a/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs b/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs new file mode 100644 index 0000000..f35a789 --- /dev/null +++ b/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs @@ -0,0 +1,11 @@ +namespace MU3.Notes; + +class patch_NotesManager: NotesManager { + private float _frame; + + private float _frameReal; + + private void progressFrameAndFrameReal() { + _frame = _frameReal; + } +} diff --git a/UnlockFrameRate/MU3.Sys/patch_Config.cs b/UnlockFrameRate/MU3.Sys/patch_Config.cs new file mode 100644 index 0000000..953b26c --- /dev/null +++ b/UnlockFrameRate/MU3.Sys/patch_Config.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace MU3.Sys; + +class patch_Config: Config { + public extern void orig_initialize(); + + public new void initialize() { + orig_initialize(); + + using IniFile iniFile = new("mu3.ini"); + + if(iniFile.getIntValue("Video", "VSync", 0) != 0) { + QualitySettings.vSyncCount = 1; + } else { + Application.targetFrameRate = iniFile.getIntValue("Video", "Framerate", 60); + } + } +} diff --git a/UnlockFrameRate/MU3.Sys/patch_Time.cs b/UnlockFrameRate/MU3.Sys/patch_Time.cs new file mode 100644 index 0000000..a00b13e --- /dev/null +++ b/UnlockFrameRate/MU3.Sys/patch_Time.cs @@ -0,0 +1,20 @@ +namespace MU3.Sys; + +class patch_Time: Time { + private static bool _init; + + private static float _deltaTime; + + private static float _adjustAccumlation; + + private static float _realtimeSinceStartup; + + public static new void update() { + if(!_init) { + _adjustAccumlation = 0f; + _init = true; + } + _deltaTime = UnityEngine.Time.deltaTime; + _realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup; + } +} diff --git a/UnlockFrameRate/UnlockFrameRate.csproj b/UnlockFrameRate/UnlockFrameRate.csproj new file mode 100644 index 0000000..614816c --- /dev/null +++ b/UnlockFrameRate/UnlockFrameRate.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.UnlockFramerate.mm + Unlock framerate + + + \ No newline at end of file diff --git a/UnlockMasterDifficulty/MU3.ViewData/patch_MusicViewData.cs b/UnlockMasterDifficulty/MU3.ViewData/patch_MusicViewData.cs new file mode 100644 index 0000000..b05c744 --- /dev/null +++ b/UnlockMasterDifficulty/MU3.ViewData/patch_MusicViewData.cs @@ -0,0 +1,13 @@ +using MonoMod; + +namespace MU3.ViewData; + +[MonoModPatch("global::MU3.ViewData.MusicViewData")] +public class patch_MusicViewData { + public bool isMasterLock { + get { + return false; + } + set { /* nop */ } + } +} diff --git a/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj b/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj new file mode 100644 index 0000000..b0187fb --- /dev/null +++ b/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj @@ -0,0 +1,8 @@ + + + Assembly-CSharp.UnlockMasterDifficulty.mm + Unlock master difficulty + {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022} + + + \ No newline at end of file From cc7bc8613bc65655f7a95fadb1e453eceed4711a Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 02:10:46 +0900 Subject: [PATCH 09/17] feat: add the remaining things * DisableMaintenance * UnlockAllMusic * UnlockGameEvents * UnlockMemoryChapters --- DisableMaintenance/DisableMaintenance.csproj | 7 +++ .../MU3.Operation/patch_ClosingManager.cs | 27 +++++++++++ .../MU3.Operation/patch_MaintenanceTimer.cs | 47 ++++++++++++++++++ Mu3Mods.sln | 48 +++++++++++++++++++ .../patch_MU3UICounter.cs | 0 .../patch_ANM_CMN_User.cs | 0 .../{MU3 => MU3.User}/patch_UserOption.cs | 0 .../patch_Scene_32_PrePlayMusic_Confirm.cs | 0 .../MU3.DataStudio/patch_MusicData.cs | 24 ++++++++++ UnlockAllMusic/MU3/patch_Scene_25_Login.cs | 20 ++++++++ UnlockAllMusic/UnlockAllMusic.csproj | 7 +++ UnlockFrameRate/MU3.Sys/patch_Config.cs | 2 + .../MU3.Client/patch_PacketGetGameEvent.cs | 35 ++++++++++++++ UnlockGameEvents/UnlockGameEvents.csproj | 7 +++ .../UnlockMasterDifficulty.csproj | 1 - .../patch_PacketGetUserMemoryChapter.cs | 32 +++++++++++++ .../UnlockMemoryChapters.csproj | 7 +++ 17 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 DisableMaintenance/DisableMaintenance.csproj create mode 100644 DisableMaintenance/MU3.Operation/patch_ClosingManager.cs create mode 100644 DisableMaintenance/MU3.Operation/patch_MaintenanceTimer.cs rename NaiveRating/{MU3 => MU3.CustomUI}/patch_MU3UICounter.cs (100%) rename NaiveRating/{MU3 => MU3.SceneObject}/patch_ANM_CMN_User.cs (100%) rename NaiveRating/{MU3 => MU3.User}/patch_UserOption.cs (100%) rename NaiveRating/{MU3.User => MU3}/patch_Scene_32_PrePlayMusic_Confirm.cs (100%) create mode 100644 UnlockAllMusic/MU3.DataStudio/patch_MusicData.cs create mode 100644 UnlockAllMusic/MU3/patch_Scene_25_Login.cs create mode 100644 UnlockAllMusic/UnlockAllMusic.csproj create mode 100644 UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs create mode 100644 UnlockGameEvents/UnlockGameEvents.csproj create mode 100644 UnlockMemoryChapters/MU3.Client/patch_PacketGetUserMemoryChapter.cs create mode 100644 UnlockMemoryChapters/UnlockMemoryChapters.csproj diff --git a/DisableMaintenance/DisableMaintenance.csproj b/DisableMaintenance/DisableMaintenance.csproj new file mode 100644 index 0000000..a5b98d4 --- /dev/null +++ b/DisableMaintenance/DisableMaintenance.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.DisableMaintenance.mm + Disable maintenance + + + \ No newline at end of file diff --git a/DisableMaintenance/MU3.Operation/patch_ClosingManager.cs b/DisableMaintenance/MU3.Operation/patch_ClosingManager.cs new file mode 100644 index 0000000..4366696 --- /dev/null +++ b/DisableMaintenance/MU3.Operation/patch_ClosingManager.cs @@ -0,0 +1,27 @@ +namespace MU3.Operation; + +class patch_ClosingManager: ClosingManager { + public new int getRemainingMinutes() { + return int.MaxValue; + } + + public new int getClosedRemainingMinutes() { + return int.MaxValue; + } + + public new bool isShowRemainingMinutes() { + return false; + } + + public new bool isReceptionClosed() { + return false; + } + + public new bool isForceLogout() { + return false; + } + + public new CreditUseRestriction getCreditUseRestriction() { + return CreditUseRestriction.None; + } +} diff --git a/DisableMaintenance/MU3.Operation/patch_MaintenanceTimer.cs b/DisableMaintenance/MU3.Operation/patch_MaintenanceTimer.cs new file mode 100644 index 0000000..7b61333 --- /dev/null +++ b/DisableMaintenance/MU3.Operation/patch_MaintenanceTimer.cs @@ -0,0 +1,47 @@ +namespace MU3.Operation; + +class patch_MaintenanceTimer: MaintenanceTimer { + public new bool isUnderServerMaintenance() { + return false; + } + + public new int getServerMaintenanceSec() { + return int.MaxValue; + } + + public new int getAutoRebootSec() { + return int.MaxValue; + } + + public new bool isAutoRebootNeeded() { + return false; + } + + public new int getRemainingMinutes() { + return int.MaxValue; + } + + public new int getClosedRemainingMinutes() { + return int.MaxValue; + } + + public new bool isShowRemainingMinutes() { + return false; + } + + public new bool isClosed() { + return false; + } + + public new bool isForceLogout() { + return false; + } + + public new ClosingManager.CreditUseRestriction getCreditUseRestriction() { + return ClosingManager.CreditUseRestriction.None; + } + + public new bool isCoinAcceptable() { + return true; + } +} diff --git a/Mu3Mods.sln b/Mu3Mods.sln index 57393a9..0f32ef3 100644 --- a/Mu3Mods.sln +++ b/Mu3Mods.sln @@ -25,6 +25,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockAndSetJewelBoostNine" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SortByInternalDifficulty", "SortByInternalDifficulty\SortByInternalDifficulty.csproj", "{0BF799DF-8837-4372-9F36-705CDC22374C}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LoadBoost", "LoadBoost\LoadBoost.csproj", "{56B75395-ED26-479B-B59F-DABB74513335}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DisableEncryption", "DisableEncryption\DisableEncryption.csproj", "{3F05931E-4444-4616-A0AC-047809821B0E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockMasterDifficulty", "UnlockMasterDifficulty\UnlockMasterDifficulty.csproj", "{965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockFrameRate", "UnlockFrameRate\UnlockFrameRate.csproj", "{0C3E8145-F91B-4F1F-97D1-17E12D49891B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockAllMusic", "UnlockAllMusic\UnlockAllMusic.csproj", "{C8948C3E-0434-429E-AFE6-4FB2DF246872}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DisableMaintenance", "DisableMaintenance\DisableMaintenance.csproj", "{6C91EB92-3A30-43B5-8954-E84C610C1D67}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockGameEvents", "UnlockGameEvents\UnlockGameEvents.csproj", "{3B9B843D-DCA0-41FE-B642-6BCB187BBD5D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockMemoryChapters", "UnlockMemoryChapters\UnlockMemoryChapters.csproj", "{3A217A12-6082-491B-89F6-C1D13AD69A19}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -75,6 +91,38 @@ Global {0BF799DF-8837-4372-9F36-705CDC22374C}.Debug|x64.Build.0 = Debug|x64 {0BF799DF-8837-4372-9F36-705CDC22374C}.Release|x64.ActiveCfg = Release|x64 {0BF799DF-8837-4372-9F36-705CDC22374C}.Release|x64.Build.0 = Release|x64 + {56B75395-ED26-479B-B59F-DABB74513335}.Debug|x64.ActiveCfg = Debug|x64 + {56B75395-ED26-479B-B59F-DABB74513335}.Debug|x64.Build.0 = Debug|x64 + {56B75395-ED26-479B-B59F-DABB74513335}.Release|x64.ActiveCfg = Release|x64 + {56B75395-ED26-479B-B59F-DABB74513335}.Release|x64.Build.0 = Release|x64 + {3F05931E-4444-4616-A0AC-047809821B0E}.Debug|x64.ActiveCfg = Debug|x64 + {3F05931E-4444-4616-A0AC-047809821B0E}.Debug|x64.Build.0 = Debug|x64 + {3F05931E-4444-4616-A0AC-047809821B0E}.Release|x64.ActiveCfg = Release|x64 + {3F05931E-4444-4616-A0AC-047809821B0E}.Release|x64.Build.0 = Release|x64 + {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022}.Debug|x64.ActiveCfg = Debug|x64 + {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022}.Debug|x64.Build.0 = Debug|x64 + {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022}.Release|x64.ActiveCfg = Release|x64 + {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022}.Release|x64.Build.0 = Release|x64 + {0C3E8145-F91B-4F1F-97D1-17E12D49891B}.Debug|x64.ActiveCfg = Debug|x64 + {0C3E8145-F91B-4F1F-97D1-17E12D49891B}.Debug|x64.Build.0 = Debug|x64 + {0C3E8145-F91B-4F1F-97D1-17E12D49891B}.Release|x64.ActiveCfg = Release|x64 + {0C3E8145-F91B-4F1F-97D1-17E12D49891B}.Release|x64.Build.0 = Release|x64 + {C8948C3E-0434-429E-AFE6-4FB2DF246872}.Debug|x64.ActiveCfg = Debug|x64 + {C8948C3E-0434-429E-AFE6-4FB2DF246872}.Debug|x64.Build.0 = Debug|x64 + {C8948C3E-0434-429E-AFE6-4FB2DF246872}.Release|x64.ActiveCfg = Release|x64 + {C8948C3E-0434-429E-AFE6-4FB2DF246872}.Release|x64.Build.0 = Release|x64 + {6C91EB92-3A30-43B5-8954-E84C610C1D67}.Debug|x64.ActiveCfg = Debug|x64 + {6C91EB92-3A30-43B5-8954-E84C610C1D67}.Debug|x64.Build.0 = Debug|x64 + {6C91EB92-3A30-43B5-8954-E84C610C1D67}.Release|x64.ActiveCfg = Release|x64 + {6C91EB92-3A30-43B5-8954-E84C610C1D67}.Release|x64.Build.0 = Release|x64 + {3B9B843D-DCA0-41FE-B642-6BCB187BBD5D}.Debug|x64.ActiveCfg = Debug|x64 + {3B9B843D-DCA0-41FE-B642-6BCB187BBD5D}.Debug|x64.Build.0 = Debug|x64 + {3B9B843D-DCA0-41FE-B642-6BCB187BBD5D}.Release|x64.ActiveCfg = Release|x64 + {3B9B843D-DCA0-41FE-B642-6BCB187BBD5D}.Release|x64.Build.0 = Release|x64 + {3A217A12-6082-491B-89F6-C1D13AD69A19}.Debug|x64.ActiveCfg = Debug|x64 + {3A217A12-6082-491B-89F6-C1D13AD69A19}.Debug|x64.Build.0 = Debug|x64 + {3A217A12-6082-491B-89F6-C1D13AD69A19}.Release|x64.ActiveCfg = Release|x64 + {3A217A12-6082-491B-89F6-C1D13AD69A19}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/NaiveRating/MU3/patch_MU3UICounter.cs b/NaiveRating/MU3.CustomUI/patch_MU3UICounter.cs similarity index 100% rename from NaiveRating/MU3/patch_MU3UICounter.cs rename to NaiveRating/MU3.CustomUI/patch_MU3UICounter.cs diff --git a/NaiveRating/MU3/patch_ANM_CMN_User.cs b/NaiveRating/MU3.SceneObject/patch_ANM_CMN_User.cs similarity index 100% rename from NaiveRating/MU3/patch_ANM_CMN_User.cs rename to NaiveRating/MU3.SceneObject/patch_ANM_CMN_User.cs diff --git a/NaiveRating/MU3/patch_UserOption.cs b/NaiveRating/MU3.User/patch_UserOption.cs similarity index 100% rename from NaiveRating/MU3/patch_UserOption.cs rename to NaiveRating/MU3.User/patch_UserOption.cs diff --git a/NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs b/NaiveRating/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs similarity index 100% rename from NaiveRating/MU3.User/patch_Scene_32_PrePlayMusic_Confirm.cs rename to NaiveRating/MU3/patch_Scene_32_PrePlayMusic_Confirm.cs diff --git a/UnlockAllMusic/MU3.DataStudio/patch_MusicData.cs b/UnlockAllMusic/MU3.DataStudio/patch_MusicData.cs new file mode 100644 index 0000000..8f15637 --- /dev/null +++ b/UnlockAllMusic/MU3.DataStudio/patch_MusicData.cs @@ -0,0 +1,24 @@ +namespace MU3.DataStudio; + +class patch_MusicData: MusicData { + public new int CostToUnlock { + get { + return 0; + } + private set { /* nop */ } + } + + public new bool PossessingFromTheBeginning { + get { + return true; + } + private set { /* nop */ } + } + + public new bool IsLockedAtTheBeginning { + get { + return false; + } + private set { /* nop */ } + } +} diff --git a/UnlockAllMusic/MU3/patch_Scene_25_Login.cs b/UnlockAllMusic/MU3/patch_Scene_25_Login.cs new file mode 100644 index 0000000..b180b27 --- /dev/null +++ b/UnlockAllMusic/MU3/patch_Scene_25_Login.cs @@ -0,0 +1,20 @@ +using MU3.User; +using MU3.Util; + +namespace MU3; + +class patch_Scene_25_Login: Scene_25_Login { + private enum State { + GetUserRatinglog = 24 + } + + private Mode mode_; + + private void GetUserActivityMusic_Init() { + // nop + } + private void GetUserActivityMusic_Proc() { + Singleton.instance.updateUserActivityInLoginEnd(); + mode_.set(State.GetUserRatinglog); + } +} diff --git a/UnlockAllMusic/UnlockAllMusic.csproj b/UnlockAllMusic/UnlockAllMusic.csproj new file mode 100644 index 0000000..eaab2d5 --- /dev/null +++ b/UnlockAllMusic/UnlockAllMusic.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.UnlockAllMusic.mm + Unlock all music + + + \ No newline at end of file diff --git a/UnlockFrameRate/MU3.Sys/patch_Config.cs b/UnlockFrameRate/MU3.Sys/patch_Config.cs index 953b26c..9675a3d 100644 --- a/UnlockFrameRate/MU3.Sys/patch_Config.cs +++ b/UnlockFrameRate/MU3.Sys/patch_Config.cs @@ -12,8 +12,10 @@ class patch_Config: Config { if(iniFile.getIntValue("Video", "VSync", 0) != 0) { QualitySettings.vSyncCount = 1; + Debug.Log("[UnlockFrameRate] VSync on"); } else { Application.targetFrameRate = iniFile.getIntValue("Video", "Framerate", 60); + Debug.Log("[UnlockFrameRate] Framerate lock: " + Application.targetFrameRate); } } } diff --git a/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs b/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs new file mode 100644 index 0000000..e348ecd --- /dev/null +++ b/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs @@ -0,0 +1,35 @@ +using MU3.Data; +using MU3.Operation; +using MU3.Util; +using System; +using System.Linq; + +namespace MU3.Client; + +class patch_PacketGetGameEvent: Packet { + public Operation.GameEvent _gameEvent; + public Operation.GameEvent gameEvent => _gameEvent; + public extern State orig_proc(); + public override State proc() { + State state = orig_proc(); + if(state == State.Done) { + DateTime endDate = DateTime.Parse("2099-01-01 05:00:00.0"); + _gameEvent ??= new Operation.GameEvent(); + foreach(EventData eventData in SingletonStateMachine.instance.allEventData) { + IdPeriod idPeriod = Enumerable.FirstOrDefault(_gameEvent.list, (IdPeriod e) => e.id == eventData.id); + if(idPeriod != null) { + if(idPeriod.period.endDate < CustomDateTime.Now) { + idPeriod.period.endDate = endDate; + } + } else { + idPeriod = new(); + idPeriod.id = eventData.id; + idPeriod.period = new Period(DateTime.MinValue.Date, endDate); + _gameEvent.list.Add(idPeriod); + _gameEvent.lastUpdate = CustomDateTime.Now; + } + } + } + return state; + } +} diff --git a/UnlockGameEvents/UnlockGameEvents.csproj b/UnlockGameEvents/UnlockGameEvents.csproj new file mode 100644 index 0000000..937ec81 --- /dev/null +++ b/UnlockGameEvents/UnlockGameEvents.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.UnlockGameEvents.mm + Unlock game events + + + \ No newline at end of file diff --git a/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj b/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj index b0187fb..0f8f86a 100644 --- a/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj +++ b/UnlockMasterDifficulty/UnlockMasterDifficulty.csproj @@ -2,7 +2,6 @@ Assembly-CSharp.UnlockMasterDifficulty.mm Unlock master difficulty - {965FCDBC-12EA-4F31-AAF6-9C4C3B9F7022} \ No newline at end of file diff --git a/UnlockMemoryChapters/MU3.Client/patch_PacketGetUserMemoryChapter.cs b/UnlockMemoryChapters/MU3.Client/patch_PacketGetUserMemoryChapter.cs new file mode 100644 index 0000000..59f9f26 --- /dev/null +++ b/UnlockMemoryChapters/MU3.Client/patch_PacketGetUserMemoryChapter.cs @@ -0,0 +1,32 @@ +using MU3.Data; +using MU3.User; +using MU3.Util; +using System.Collections.Generic; +using System.Linq; + +namespace MU3.Client; + +class patch_PacketGetUserMemoryChapter: Packet { + private Dictionary userMemoryChapter_; + public override State proc() { + switch(procImpl()) { + case State.Done: { + GetUserMemoryChapterResponse response_ = (query_ as GetUserMemoryChapter).response_; + foreach(MemoryChapterData memoryChapterData in SingletonStateMachine.instance.allMemoryChapterData) { + UserMemoryChapter userMemoryChapter = Enumerable.FirstOrDefault(response_.userMemoryChapterList, (UserMemoryChapter c) => c.chapterId == memoryChapterData.id); + if(userMemoryChapter != null) { + User.UserMemoryChapter userMemoryChapter2 = new User.UserMemoryChapter(); + userMemoryChapter2.copyFrom(userMemoryChapter); + userMemoryChapter_[userMemoryChapter2.ChapterId] = userMemoryChapter2; + } else { + User.UserMemoryChapter userMemoryChapter3 = new User.UserMemoryChapter(memoryChapterData.id); + userMemoryChapter_[userMemoryChapter3.ChapterId] = userMemoryChapter3; + } + } + Singleton.instance.UserMemoryChapter = userMemoryChapter_; + break; + } + } + return state_; + } +} diff --git a/UnlockMemoryChapters/UnlockMemoryChapters.csproj b/UnlockMemoryChapters/UnlockMemoryChapters.csproj new file mode 100644 index 0000000..3851115 --- /dev/null +++ b/UnlockMemoryChapters/UnlockMemoryChapters.csproj @@ -0,0 +1,7 @@ + + + Assembly-CSharp.UnlockMemoryChapters.mm + Unlock memory chapters + + + \ No newline at end of file From 079b7b64954066215e0258f44e37a8ce2c059a23 Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 02:17:59 +0900 Subject: [PATCH 10/17] feat: remove ExportChartData --- ExportChartData/ExportChartData.csproj | 7 --- ExportChartData/MU3.Data/patch_DataManager.cs | 58 ------------------- Mu3Mods.sln | 6 -- 3 files changed, 71 deletions(-) delete mode 100644 ExportChartData/ExportChartData.csproj delete mode 100644 ExportChartData/MU3.Data/patch_DataManager.cs diff --git a/ExportChartData/ExportChartData.csproj b/ExportChartData/ExportChartData.csproj deleted file mode 100644 index 72e8824..0000000 --- a/ExportChartData/ExportChartData.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - Assembly-CSharp.ExportChartData.mm - Export chart data to charts.csv - - - \ No newline at end of file diff --git a/ExportChartData/MU3.Data/patch_DataManager.cs b/ExportChartData/MU3.Data/patch_DataManager.cs deleted file mode 100644 index f3aa6b0..0000000 --- a/ExportChartData/MU3.Data/patch_DataManager.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.IO; - -namespace MU3.Data; - -class patch_DataManager: DataManager { - private extern void orig_linkFumenAnalysisData(); - private const string SEPARATOR = "$"; - private string PrintHeader() { - return string.Join(SEPARATOR, new string[] { - "id", - "name", - "difficulty", - "name for sort", - "artist", - "genre", - "internal level", - "charter", - "max platinum score", - "release date", - "release version", - "bpm", - "location" - }); - } - private string PrintLine(FumenData fumen, MusicData mus, int level) { - return string.Join(SEPARATOR, new string[] { - mus.id.ToString(), - mus.name, - level.ToString(), - mus.nameForSort, - mus.artistName, - mus.genreName, - fumen.fumenConst.ToString(), - fumen.notesDesignerName ?? "", - fumen.platinumScoreMax.ToString(), - mus.ReleaseVersion.ToUniversalTime().ToString(), - mus.versionTitle, - fumen.bpm.ToString(), - fumen.fumenFile.Substring(fumen.fumenFile.LastIndexOf('A')) - }); - } - - private void linkFumenAnalysisData() { - orig_linkFumenAnalysisData(); - using StreamWriter writer = new("charts.csv"); - writer.WriteLine(PrintHeader()); - foreach(var mus in allMusicData) { - int i = 0; - foreach(var fumen in mus.fumenData) { - if(fumen.isExist) { - writer.WriteLine(PrintLine(fumen, mus, i)); - } - i += 1; - } - } - UnityEngine.Debug.Log("[ExportChartData] Written to charts.csv"); - } -} \ No newline at end of file diff --git a/Mu3Mods.sln b/Mu3Mods.sln index 0f32ef3..0fb92ee 100644 --- a/Mu3Mods.sln +++ b/Mu3Mods.sln @@ -7,8 +7,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterGiveUp", "BetterGiveU EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NaiveRating", "NaiveRating\NaiveRating.csproj", "{1FEA698E-DF5E-46CF-8023-F2B2F57885C5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExportChartData", "ExportChartData\ExportChartData.csproj", "{8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipNotice", "SkipNotice\SkipNotice.csproj", "{A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipPreMusicRitual", "SkipPreMusicRitual\SkipPreMusicRitual.csproj", "{BB9CB905-9989-466C-9A91-D2F323005237}" @@ -55,10 +53,6 @@ Global {1FEA698E-DF5E-46CF-8023-F2B2F57885C5}.Debug|x64.Build.0 = Debug|x64 {1FEA698E-DF5E-46CF-8023-F2B2F57885C5}.Release|x64.ActiveCfg = Release|x64 {1FEA698E-DF5E-46CF-8023-F2B2F57885C5}.Release|x64.Build.0 = Release|x64 - {8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}.Debug|x64.ActiveCfg = Debug|x64 - {8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}.Debug|x64.Build.0 = Debug|x64 - {8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}.Release|x64.ActiveCfg = Release|x64 - {8BFC37B1-C6C8-492A-B8DC-99BD1F1B9576}.Release|x64.Build.0 = Release|x64 {A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}.Debug|x64.ActiveCfg = Debug|x64 {A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}.Debug|x64.Build.0 = Debug|x64 {A1F32CB9-56C2-458A-B369-C61BD3A6AFBB}.Release|x64.ActiveCfg = Release|x64 From 8a6ad2e5231cab676f9cb57ea7893ebcb384936b Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 02:53:10 +0900 Subject: [PATCH 11/17] docs: stop screwing around --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 13475dc..0470fdf 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ ## µ3 mods -Miscellaneous mods for µ3/SDDT. Suggestions/PRs are welcome. +Miscellaneous mods for Ongeki. Suggestions/PRs are welcome. Visit [the wiki](https://gitea.tendokyu.moe/akanyan/mu3-mods/wiki) for more information. ### Supported versions -- 1.39 -- 1.40 -- 1.45 \ No newline at end of file +- 1.45 + +1.39/1.40 should work but they are generally untested. \ No newline at end of file From 579790663e2ecc3f6a24d96f4f7cc978958b91ec Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 03:19:01 +0900 Subject: [PATCH 12/17] feat(SkipNotice): merge SkipLoginReward back Except it's now triggered by LMenu. --- Mu3Mods.sln | 6 ------ SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs | 14 -------------- SkipLoginReward/SkipLoginReward.csproj | 7 ------- SkipNotice/MU3/patch_Scene_30_NoticeReward.cs | 7 +++++++ SkipNotice/SkipNotice.csproj | 2 +- 5 files changed, 8 insertions(+), 28 deletions(-) delete mode 100644 SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs delete mode 100644 SkipLoginReward/SkipLoginReward.csproj diff --git a/Mu3Mods.sln b/Mu3Mods.sln index 0fb92ee..d2924d7 100644 --- a/Mu3Mods.sln +++ b/Mu3Mods.sln @@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfiniteGP", "InfiniteGP\In EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockSelectionTime", "LockSelectionTime\LockSelectionTime.csproj", "{66DE85AD-58AD-467C-B1C0-6B98BB27265D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkipLoginReward", "SkipLoginReward\SkipLoginReward.csproj", "{6E078B7E-7965-4CFF-9590-5C27A009BA7A}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pause", "Pause\Pause.csproj", "{627B3AA0-25E2-4C3E-A211-66BAB0E997E2}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnlockAndSetJewelBoostNine", "UnlockAndSetJewelBoostNine\UnlockAndSetJewelBoostNine.csproj", "{70C775D7-8C47-4CFE-B91D-6AAEB17389F2}" @@ -69,10 +67,6 @@ Global {66DE85AD-58AD-467C-B1C0-6B98BB27265D}.Debug|x64.Build.0 = Debug|x64 {66DE85AD-58AD-467C-B1C0-6B98BB27265D}.Release|x64.ActiveCfg = Release|x64 {66DE85AD-58AD-467C-B1C0-6B98BB27265D}.Release|x64.Build.0 = Release|x64 - {6E078B7E-7965-4CFF-9590-5C27A009BA7A}.Debug|x64.ActiveCfg = Debug|x64 - {6E078B7E-7965-4CFF-9590-5C27A009BA7A}.Debug|x64.Build.0 = Debug|x64 - {6E078B7E-7965-4CFF-9590-5C27A009BA7A}.Release|x64.ActiveCfg = Release|x64 - {6E078B7E-7965-4CFF-9590-5C27A009BA7A}.Release|x64.Build.0 = Release|x64 {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Debug|x64.ActiveCfg = Debug|x64 {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Debug|x64.Build.0 = Debug|x64 {627B3AA0-25E2-4C3E-A211-66BAB0E997E2}.Release|x64.ActiveCfg = Release|x64 diff --git a/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs b/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs deleted file mode 100644 index a472405..0000000 --- a/SkipLoginReward/MU3/patch_Scene_30_NoticeReward.cs +++ /dev/null @@ -1,14 +0,0 @@ -using MU3.Util; - -namespace MU3; - -class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { - private Mode _mode; - private enum State { - RankingReward = 2, - FadeOut = 8, - } - private void RankingReward_Init() { - _mode.set(State.FadeOut); - } -} \ No newline at end of file diff --git a/SkipLoginReward/SkipLoginReward.csproj b/SkipLoginReward/SkipLoginReward.csproj deleted file mode 100644 index 90b6bcc..0000000 --- a/SkipLoginReward/SkipLoginReward.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - Assembly-CSharp.SkipLoginReward.mm - Skip event/login rewards - - - \ No newline at end of file diff --git a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs index a4f4590..39d92d5 100644 --- a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs +++ b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs @@ -13,4 +13,11 @@ class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { _mode.set(State.RankingReward); SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); } + private void Update() { + if(_mode.get() != (int)State.FadeOut && Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + _mode.set(State.FadeOut); + } else { + _mode.update(); + } + } } \ No newline at end of file diff --git a/SkipNotice/SkipNotice.csproj b/SkipNotice/SkipNotice.csproj index 52fc144..bd36f2f 100644 --- a/SkipNotice/SkipNotice.csproj +++ b/SkipNotice/SkipNotice.csproj @@ -1,7 +1,7 @@  Assembly-CSharp.SkipNotice.mm - Skip event/safety notice + Skip event/safety notices \ No newline at end of file From c1954d76c17f72b187c93b5d03ac7bb71bddd0e2 Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 03:33:38 +0900 Subject: [PATCH 13/17] feat(SkipPreMusic): now triggered by LMenu --- SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs | 7 ------- SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs | 10 ++++++++-- SkipPreMusicRitual/MU3/patch_BattleUI.cs | 7 ++++++- 3 files changed, 14 insertions(+), 10 deletions(-) delete mode 100644 SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs diff --git a/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs b/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs deleted file mode 100644 index 095b18c..0000000 --- a/SkipPreMusicRitual/MU3.Battle/patch_GameEngine.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MU3.Battle; - -class patch_GameEngine: GameEngine { - public new bool isStartCutsceneFinish() { - return true; - } -} \ No newline at end of file diff --git a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs index 0c1ebc6..3d079be 100644 --- a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs +++ b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs @@ -1,14 +1,20 @@ using MU3.Battle; +using MU3.Util; namespace MU3.Sequence; class patch_PlayMusic: PlayMusic { private GameEngine _gameEngine; private extern void orig_Execute_StartCutscene(); + public static bool ForceSkipped { get; private set; } private void Execute_StartCutscene() { orig_Execute_StartCutscene(); - _gameEngine.skipStartCutscene(); - setNextState(EState.Countdown); + ForceSkipped = false; + if(Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + _gameEngine.skipStartCutscene(); + setNextState(EState.Countdown); + ForceSkipped = true; + } } } \ No newline at end of file diff --git a/SkipPreMusicRitual/MU3/patch_BattleUI.cs b/SkipPreMusicRitual/MU3/patch_BattleUI.cs index 3322980..95352a7 100644 --- a/SkipPreMusicRitual/MU3/patch_BattleUI.cs +++ b/SkipPreMusicRitual/MU3/patch_BattleUI.cs @@ -1,11 +1,16 @@ -using MU3.Util; +using MU3.Sequence; +using MU3.Util; using System; using UnityEngine; namespace MU3; class patch_BattleUI: BattleUI { + private extern System.Collections.IEnumerator orig_playReadyProc(Action onFinish); private System.Collections.IEnumerator playReadyProc(Action onFinish) { + if(!patch_PlayMusic.ForceSkipped) { + yield return orig_playReadyProc(onFinish); + } if(!SystemUI.Exists) { onFinish(); yield break; From 5872a05c7ba2443c11ef9081f1453cfb0a6a5cb5 Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 03:37:49 +0900 Subject: [PATCH 14/17] chore: bump to 2.0.0 --- Mu3Mods.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index 65d3fd0..e249e6c 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 1.9.0 + 2.0.0 true latest x64 From 26fffefbaef8418c3e46bb9df834a8ac5140a66c Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 8 Jul 2024 04:50:37 +0900 Subject: [PATCH 15/17] fix(SkipPreMusic): allow permanent skip --- SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs index 3d079be..119e69c 100644 --- a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs +++ b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs @@ -1,5 +1,6 @@ using MU3.Battle; using MU3.Util; +using UnityEngine; namespace MU3.Sequence; @@ -11,7 +12,7 @@ class patch_PlayMusic: PlayMusic { private void Execute_StartCutscene() { orig_Execute_StartCutscene(); ForceSkipped = false; - if(Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + if(Singleton.instance.config.isQuickStart || Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { _gameEngine.skipStartCutscene(); setNextState(EState.Countdown); ForceSkipped = true; From c349854cb03b6d38ffd887ce4d2a8848677ebd5b Mon Sep 17 00:00:00 2001 From: akanyan Date: Fri, 12 Jul 2024 08:14:06 +0900 Subject: [PATCH 16/17] fix: various fixes --- Mu3Mods.csproj | 2 +- Pause/MU3.Sequence/patch_PlayMusic.cs | 2 +- SkipNotice/MU3/patch_Scene_30_NoticeReward.cs | 5 ++++- SkipNotice/MU3/patch_UIGetRewards.cs | 18 +++++++++++++++ .../MU3.Sequence/patch_PlayMusic.cs | 3 +-- SkipPreMusicRitual/MU3/patch_BattleUI.cs | 22 +++++++++++++------ .../MU3.Notes/patch_NotesManager.cs | 19 ++++++++++++++-- UnlockFrameRate/MU3.Sys/patch_Config.cs | 19 +++++++++++++--- UnlockFrameRate/MU3.Sys/patch_Time.cs | 19 +++++++++++----- 9 files changed, 87 insertions(+), 22 deletions(-) create mode 100644 SkipNotice/MU3/patch_UIGetRewards.cs diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index e249e6c..46a0de9 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 2.0.0 + 2.0.1 true latest x64 diff --git a/Pause/MU3.Sequence/patch_PlayMusic.cs b/Pause/MU3.Sequence/patch_PlayMusic.cs index 8a19624..d6a8383 100644 --- a/Pause/MU3.Sequence/patch_PlayMusic.cs +++ b/Pause/MU3.Sequence/patch_PlayMusic.cs @@ -22,7 +22,7 @@ class patch_PlayMusic: PlayMusic { } public override bool updateState(float deltaTime = -1f) { pauseTimer += deltaTime; - if(Singleton.instance.getStateOn(UIInput.Key.Service)) { + if(Singleton.instance.getStateOn(UIInput.Key.Service) && !Singleton.instance.getStateOn(UIInput.Key.Test)) { if((!Paused && pauseTimer >= PAUSE_CD) || (Paused && pauseTimer >= UNPAUSE_CD)) { Paused = !Paused; pgm.pause(Paused); diff --git a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs index 39d92d5..27efb18 100644 --- a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs +++ b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs @@ -4,17 +4,20 @@ namespace MU3; class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { private Mode _mode; + public static bool Skipped { get; private set; } private enum State { RankingReward = 2, FadeOut = 8, } private void Start() { + Skipped = false; _mode = new Mode(this); _mode.set(State.RankingReward); SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); } private void Update() { - if(_mode.get() != (int)State.FadeOut && Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + if(_mode.get() < (int)State.FadeOut && Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + Skipped = true; _mode.set(State.FadeOut); } else { _mode.update(); diff --git a/SkipNotice/MU3/patch_UIGetRewards.cs b/SkipNotice/MU3/patch_UIGetRewards.cs new file mode 100644 index 0000000..30f7b61 --- /dev/null +++ b/SkipNotice/MU3/patch_UIGetRewards.cs @@ -0,0 +1,18 @@ +namespace MU3; +class patch_UIGetRewards: UIGetRewards { + private extern void orig_invokeOnFinish(); + private extern void orig_startNextItem(); + private void invokeOnFinish() => orig_invokeOnFinish(); + private void startNextItem() { + if(!patch_Scene_30_NoticeReward.Skipped) { + orig_startNextItem(); + } + } + void Update() { + // The panel state will still be screwed up for some reason but it won't crash + // This could be improved + if(patch_Scene_30_NoticeReward.Skipped) { + invokeOnFinish(); + } + } +} diff --git a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs index 119e69c..6f8799b 100644 --- a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs +++ b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs @@ -1,6 +1,5 @@ using MU3.Battle; using MU3.Util; -using UnityEngine; namespace MU3.Sequence; @@ -13,9 +12,9 @@ class patch_PlayMusic: PlayMusic { orig_Execute_StartCutscene(); ForceSkipped = false; if(Singleton.instance.config.isQuickStart || Singleton.instance.getStateOn(UIInput.Key.MenuLeft)) { + ForceSkipped = true; _gameEngine.skipStartCutscene(); setNextState(EState.Countdown); - ForceSkipped = true; } } } \ No newline at end of file diff --git a/SkipPreMusicRitual/MU3/patch_BattleUI.cs b/SkipPreMusicRitual/MU3/patch_BattleUI.cs index 95352a7..636fa00 100644 --- a/SkipPreMusicRitual/MU3/patch_BattleUI.cs +++ b/SkipPreMusicRitual/MU3/patch_BattleUI.cs @@ -1,4 +1,5 @@ -using MU3.Sequence; +using MonoMod; +using MU3.Sequence; using MU3.Util; using System; using UnityEngine; @@ -6,11 +7,9 @@ using UnityEngine; namespace MU3; class patch_BattleUI: BattleUI { - private extern System.Collections.IEnumerator orig_playReadyProc(Action onFinish); - private System.Collections.IEnumerator playReadyProc(Action onFinish) { - if(!patch_PlayMusic.ForceSkipped) { - yield return orig_playReadyProc(onFinish); - } + [MonoModIgnore] + private extern System.Collections.IEnumerator playReadyProc(Action onFinish); + private System.Collections.IEnumerator playReadyProcSkipped(Action onFinish) { if(!SystemUI.Exists) { onFinish(); yield break; @@ -22,6 +21,15 @@ class patch_BattleUI: BattleUI { time -= Time.deltaTime; } onFinish(); - systemUI.removeCanvas(MU3.Graphics.Const.SortOrder.UI); + systemUI.removeCanvas(Graphics.Const.SortOrder.UI); + } + + public new void playReady(Action onFinish) { + if(patch_PlayMusic.ForceSkipped) { + StartCoroutine(playReadyProcSkipped(onFinish)); + } else { + StartCoroutine(playReadyProc(onFinish)); + } + } } \ No newline at end of file diff --git a/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs b/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs index f35a789..be2973d 100644 --- a/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs +++ b/UnlockFrameRate/MU3.Notes/patch_NotesManager.cs @@ -1,11 +1,26 @@ +using MU3.Game; +using MU3.Sys; +using MU3.Util; + namespace MU3.Notes; class patch_NotesManager: NotesManager { private float _frame; - private float _frameReal; + private bool _altMode; + public extern void orig_initialize(SessionInfo sessionInfo); + public new void initialize(SessionInfo sessionInfo) { + orig_initialize(sessionInfo); + var cfg = (patch_Config)Singleton.instance.config; + _altMode = cfg.isVsync || (cfg.framerate != 60); + } + private extern void orig_progressFrameAndFrameReal(); private void progressFrameAndFrameReal() { - _frame = _frameReal; + if(_altMode) { + _frame = _frameReal; + } else { + orig_progressFrameAndFrameReal(); + } } } diff --git a/UnlockFrameRate/MU3.Sys/patch_Config.cs b/UnlockFrameRate/MU3.Sys/patch_Config.cs index 9675a3d..fb24db2 100644 --- a/UnlockFrameRate/MU3.Sys/patch_Config.cs +++ b/UnlockFrameRate/MU3.Sys/patch_Config.cs @@ -4,18 +4,31 @@ namespace MU3.Sys; class patch_Config: Config { public extern void orig_initialize(); + public int framerate { get; private set; } + public bool isVsync { get; private set; } public new void initialize() { orig_initialize(); using IniFile iniFile = new("mu3.ini"); - if(iniFile.getIntValue("Video", "VSync", 0) != 0) { + framerate = iniFile.getIntValue("Video", "Framerate", -1); + isVsync = iniFile.getValue("Video", "VSync", false); + + if(isVsync) { QualitySettings.vSyncCount = 1; + framerate = -1; Debug.Log("[UnlockFrameRate] VSync on"); } else { - Application.targetFrameRate = iniFile.getIntValue("Video", "Framerate", 60); - Debug.Log("[UnlockFrameRate] Framerate lock: " + Application.targetFrameRate); + Application.targetFrameRate = framerate; + QualitySettings.vSyncCount = 0; + if(framerate == 60) { + Debug.Log("[UnlockFrameRate] Framerate locked to 60 (vanilla)"); + } else if(framerate == -1) { + Debug.Log("[UnlockFrameRate] Framerate unlocked)"); + } else { + Debug.Log("[UnlockFrameRate] Framerate locked to " + framerate); + } } } } diff --git a/UnlockFrameRate/MU3.Sys/patch_Time.cs b/UnlockFrameRate/MU3.Sys/patch_Time.cs index a00b13e..fbf7992 100644 --- a/UnlockFrameRate/MU3.Sys/patch_Time.cs +++ b/UnlockFrameRate/MU3.Sys/patch_Time.cs @@ -1,20 +1,29 @@ +using MU3.Util; + namespace MU3.Sys; class patch_Time: Time { private static bool _init; - private static float _deltaTime; - private static float _adjustAccumlation; - private static float _realtimeSinceStartup; + private static bool _altMode; + public extern static void orig_update(); public static new void update() { if(!_init) { + _deltaTime = UnityEngine.Time.deltaTime; _adjustAccumlation = 0f; + _realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup; + var cfg = (patch_Config)Singleton.instance.config; + _altMode = cfg.isVsync || (cfg.framerate != 60); _init = true; } - _deltaTime = UnityEngine.Time.deltaTime; - _realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup; + if(_altMode) { + _deltaTime = UnityEngine.Time.deltaTime; + _realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup; + } else { + orig_update(); + } } } From b2ecf368fbf9e0b43e5fead3d7055584dc91a1bf Mon Sep 17 00:00:00 2001 From: akanyan Date: Fri, 12 Jul 2024 08:32:49 +0900 Subject: [PATCH 17/17] fix(UnlockFrameRate): revert a bad idea --- Mu3Mods.csproj | 2 +- UnlockFrameRate/MU3.Sys/patch_Config.cs | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index 46a0de9..7e89726 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 2.0.1 + 2.0.2 true latest x64 diff --git a/UnlockFrameRate/MU3.Sys/patch_Config.cs b/UnlockFrameRate/MU3.Sys/patch_Config.cs index fb24db2..d7ae92c 100644 --- a/UnlockFrameRate/MU3.Sys/patch_Config.cs +++ b/UnlockFrameRate/MU3.Sys/patch_Config.cs @@ -12,9 +12,13 @@ class patch_Config: Config { using IniFile iniFile = new("mu3.ini"); - framerate = iniFile.getIntValue("Video", "Framerate", -1); + framerate = iniFile.getIntValue("Video", "Framerate", 60); isVsync = iniFile.getValue("Video", "VSync", false); + if(framerate == 0) { + framerate = -1; + } + if(isVsync) { QualitySettings.vSyncCount = 1; framerate = -1; @@ -25,7 +29,7 @@ class patch_Config: Config { if(framerate == 60) { Debug.Log("[UnlockFrameRate] Framerate locked to 60 (vanilla)"); } else if(framerate == -1) { - Debug.Log("[UnlockFrameRate] Framerate unlocked)"); + Debug.Log("[UnlockFrameRate] Framerate unlocked"); } else { Debug.Log("[UnlockFrameRate] Framerate locked to " + framerate); }