├── .gitignore ├── AssemblyInfo.cs ├── KeystoneNET ├── Arm64Error.cs ├── ArmError.cs ├── HexagonError.cs ├── Keystone.cs ├── KeystoneArchitecture.cs ├── KeystoneEncoded.cs ├── KeystoneError.cs ├── KeystoneImports.cs ├── KeystoneMode.cs ├── KeystoneOptionType.cs ├── KeystoneOptionValue.cs ├── MipsError.cs ├── PpcError.cs ├── SparcError.cs ├── SystemzError.cs └── X86Error.cs ├── README.md ├── dbgw.csproj ├── dbgw.csproj.user ├── dbgw.sln ├── debugwatch ├── AssemblerView.cs ├── AssemblerView.resx ├── DebugWatchForm.cs ├── DebugWatchForm.resx ├── Extensions.cs ├── MemoryMapView.cs ├── MemoryMapView.resx ├── MemoryScanner.cs ├── MemoryViewByteProvider.cs ├── Program.cs ├── Properties │ ├── Resources.cs │ ├── Resources.resx │ └── Settings.cs ├── RichTextBoxExtensions.cs └── Settings.cs └── lib ├── Be.Windows.Forms.HexBox.dll ├── SharpDisasm.dll └── libdebug.dll /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | /dbgw.pb 6 | /.vs 7 | /bin 8 | /obj 9 | /_scratch 10 | /.vs 11 | /dbgw.pdb 12 | -------------------------------------------------------------------------------- /AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | 6 | [assembly: AssemblyTitle("Debug Watch")] 7 | [assembly: AssemblyDescription("A PlayStation 4 Debugger!")] 8 | [assembly: AssemblyConfiguration("")] 9 | [assembly: AssemblyCompany("")] 10 | [assembly: AssemblyProduct("Debug Watch PlayStation 4 Debugger")] 11 | [assembly: AssemblyCopyright("golden")] 12 | [assembly: AssemblyTrademark("")] 13 | [assembly: ComVisible(false)] 14 | [assembly: Guid("b60df892-962c-42b7-aabf-4f468352a8b0")] 15 | [assembly: AssemblyFileVersion("1.0.0.0")] 16 | [assembly: AssemblyVersion("1.0.0.0")] 17 | -------------------------------------------------------------------------------- /KeystoneNET/Arm64Error.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.Arm64Error 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum Arm64Error : short 10 | { 11 | KS_ERR_ASM_ARM64_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_ARM64_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_ARM64_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/ArmError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.ArmError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum ArmError : short 10 | { 11 | KS_ERR_ASM_ARM_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_ARM_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_ARM_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/HexagonError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.HexagonError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum HexagonError : short 10 | { 11 | KS_ERR_ASM_HEXAGON_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_HEXAGON_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_HEXAGON_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/Keystone.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.Keystone 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System; 8 | using System.Collections.Generic; 9 | using System.Runtime.InteropServices; 10 | using System.Threading; 11 | 12 | namespace KeystoneNET 13 | { 14 | public class Keystone : IDisposable 15 | { 16 | private IntPtr engine = IntPtr.Zero; 17 | private List resolvers = new List(); 18 | private bool throwOnError; 19 | private bool addedResolveSymbol; 20 | private Keystone.ResolverInternal internalImpl; 21 | 22 | public event Keystone.Resolver ResolveSymbol 23 | { 24 | add 25 | { 26 | this.resolvers.Add(value); 27 | if (this.addedResolveSymbol) 28 | return; 29 | int num = (int) KeystoneImports.SetOption(this.engine, KeystoneOptionType.KS_OPT_SYM_RESOLVER, Marshal.GetFunctionPointerForDelegate((Delegate) this.internalImpl)); 30 | this.addedResolveSymbol = true; 31 | } 32 | remove 33 | { 34 | this.resolvers.Remove(value); 35 | if (!this.addedResolveSymbol || this.resolvers.Count != 0) 36 | return; 37 | int num = (int) KeystoneImports.SetOption(this.engine, KeystoneOptionType.KS_OPT_SYM_RESOLVER, IntPtr.Zero); 38 | this.addedResolveSymbol = false; 39 | } 40 | } 41 | 42 | private bool SymbolResolver(IntPtr symbolPtr, ref ulong value) 43 | { 44 | string stringAnsi = Marshal.PtrToStringAnsi(symbolPtr); 45 | foreach (Keystone.Resolver resolver in this.resolvers) 46 | { 47 | if (resolver(stringAnsi, ref value)) 48 | return true; 49 | } 50 | return false; 51 | } 52 | 53 | public Keystone( 54 | KeystoneArchitecture architecture, 55 | KeystoneMode mode, 56 | bool throwOnKeystoneError = true) 57 | { 58 | this.internalImpl = new Keystone.ResolverInternal(this.SymbolResolver); 59 | this.throwOnError = throwOnKeystoneError; 60 | KeystoneError result = KeystoneImports.Open(architecture, (int) mode, ref this.engine); 61 | if ((uint) result > 0U & throwOnKeystoneError) 62 | throw new InvalidOperationException(string.Format("Error while initializing keystone: {0}", (object) Keystone.ErrorToString(result))); 63 | } 64 | 65 | public bool SetOption(KeystoneOptionType type, uint value) 66 | { 67 | KeystoneError result = KeystoneImports.SetOption(this.engine, type, (IntPtr) (long) value); 68 | if (result == KeystoneError.KS_ERR_OK) 69 | return true; 70 | if (this.throwOnError) 71 | throw new InvalidOperationException(string.Format("Error while setting option in keystone: {0}", (object) Keystone.ErrorToString(result))); 72 | return false; 73 | } 74 | 75 | public static string ErrorToString(KeystoneError result) 76 | { 77 | IntPtr ptr = KeystoneImports.ErrorToString(result); 78 | return ptr != IntPtr.Zero ? Marshal.PtrToStringAnsi(ptr) : string.Empty; 79 | } 80 | 81 | public KeystoneEncoded Assemble(string toEncode, ulong address) 82 | { 83 | IntPtr encoding; 84 | uint size; 85 | uint statements; 86 | if (KeystoneImports.Assemble(this.engine, toEncode, address, out encoding, out size, out statements) != 0) 87 | { 88 | if (this.throwOnError) 89 | throw new InvalidOperationException(string.Format("Error while assembling {0}: {1}", (object) toEncode, (object) Keystone.ErrorToString(this.GetLastKeystoneError()))); 90 | return (KeystoneEncoded) null; 91 | } 92 | byte[] numArray = new byte[(int) size]; 93 | Marshal.Copy(encoding, numArray, 0, (int) size); 94 | KeystoneImports.Free(encoding); 95 | return new KeystoneEncoded(numArray, statements, address); 96 | } 97 | 98 | public bool AppendAssemble( 99 | string toEncode, 100 | ICollection encoded, 101 | ulong address, 102 | out int size, 103 | out uint statements) 104 | { 105 | if (encoded == null) 106 | throw new ArgumentNullException(nameof (encoded)); 107 | if (toEncode == null) 108 | throw new ArgumentNullException(nameof (toEncode)); 109 | if (encoded.IsReadOnly) 110 | throw new ArgumentException("encoded collection can't be read-only."); 111 | KeystoneEncoded keystoneEncoded = this.Assemble(toEncode, address); 112 | if (keystoneEncoded != null) 113 | { 114 | foreach (byte num in keystoneEncoded.Buffer) 115 | encoded.Add(num); 116 | size = keystoneEncoded.Buffer.Length; 117 | statements = keystoneEncoded.StatementCount; 118 | return true; 119 | } 120 | size = 0; 121 | statements = 0U; 122 | return false; 123 | } 124 | 125 | public bool AppendAssemble( 126 | string toEncode, 127 | ICollection encoded, 128 | ulong address, 129 | out int size) 130 | { 131 | return this.AppendAssemble(toEncode, encoded, address, out size, out uint _); 132 | } 133 | 134 | public bool AppendAssemble(string toEncode, ICollection encoded, ulong address) 135 | { 136 | return this.AppendAssemble(toEncode, encoded, address, out int _, out uint _); 137 | } 138 | 139 | public bool AppendAssemble(string toEncode, ICollection encoded) 140 | { 141 | return this.AppendAssemble(toEncode, encoded, 0UL, out int _, out uint _); 142 | } 143 | 144 | public KeystoneError GetLastKeystoneError() 145 | { 146 | return KeystoneImports.GetLastKeystoneError(this.engine); 147 | } 148 | 149 | public static bool IsArchitectureSupported(KeystoneArchitecture architecture) 150 | { 151 | return KeystoneImports.IsArchitectureSupported(architecture); 152 | } 153 | 154 | public static uint GetKeystoneVersion(ref uint major, ref uint minor) 155 | { 156 | return KeystoneImports.Version(ref major, ref minor); 157 | } 158 | 159 | public void Dispose() 160 | { 161 | IntPtr ks = Interlocked.Exchange(ref this.engine, IntPtr.Zero); 162 | if (ks != IntPtr.Zero) 163 | { 164 | int num = (int) KeystoneImports.Close(ks); 165 | } 166 | GC.SuppressFinalize((object) this); 167 | } 168 | 169 | [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 170 | private delegate bool ResolverInternal(IntPtr symbol, ref ulong value); 171 | 172 | public delegate bool Resolver(string symbol, ref ulong value); 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneArchitecture.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneArchitecture 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum KeystoneArchitecture 10 | { 11 | KS_ARCH_ARM = 1, 12 | KS_ARCH_ARM64 = 2, 13 | KS_ARCH_MIPS = 3, 14 | KS_ARCH_X86 = 4, 15 | KS_ARCH_PPC = 5, 16 | KS_ARCH_SPARC = 6, 17 | KS_ARCH_SYSTEMZ = 7, 18 | KS_ARCH_HEXAGON = 8, 19 | KS_ARCH_MAX = 9, 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneEncoded.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneEncoded 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public class KeystoneEncoded 10 | { 11 | public KeystoneEncoded(byte[] buffer, uint statementCount, ulong address) 12 | { 13 | this.Buffer = buffer; 14 | this.StatementCount = statementCount; 15 | this.Address = address; 16 | } 17 | 18 | public ulong Address { get; private set; } 19 | 20 | public byte[] Buffer { get; private set; } 21 | 22 | public uint StatementCount { get; private set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum KeystoneError : short 10 | { 11 | KS_ERR_OK = 0, 12 | KS_ERR_NOMEM = 1, 13 | KS_ERR_ARCH = 2, 14 | KS_ERR_HANDLE = 3, 15 | KS_ERR_MODE = 4, 16 | KS_ERR_VERSION = 5, 17 | KS_ERR_OPT_INVALID = 6, 18 | KS_ERR_ASM = 128, // 0x0080 19 | KS_ERR_ASM_EXPR_TOKEN = 128, // 0x0080 20 | KS_ERR_ASM_DIRECTIVE_VALUE_RANGE = 129, // 0x0081 21 | KS_ERR_ASM_DIRECTIVE_ID = 130, // 0x0082 22 | KS_ERR_ASM_DIRECTIVE_TOKEN = 131, // 0x0083 23 | KS_ERR_ASM_DIRECTIVE_STR = 132, // 0x0084 24 | KS_ERR_ASM_DIRECTIVE_COMMA = 133, // 0x0085 25 | KS_ERR_ASM_DIRECTIVE_RELOC_NAME = 134, // 0x0086 26 | KS_ERR_ASM_DIRECTIVE_RELOC_TOKEN = 135, // 0x0087 27 | KS_ERR_ASM_DIRECTIVE_FPOINT = 136, // 0x0088 28 | KS_ERR_ASM_DIRECTIVE_UNKNOWN = 137, // 0x0089 29 | KS_ERR_ASM_DIRECTIVE_EQU = 138, // 0x008A 30 | KS_ERR_ASM_DIRECTIVE_INVALID = 139, // 0x008B 31 | KS_ERR_ASM_VARIANT_INVALID = 140, // 0x008C 32 | KS_ERR_ASM_EXPR_BRACKET = 141, // 0x008D 33 | KS_ERR_ASM_SYMBOL_MODIFIER = 142, // 0x008E 34 | KS_ERR_ASM_SYMBOL_REDEFINED = 143, // 0x008F 35 | KS_ERR_ASM_SYMBOL_MISSING = 144, // 0x0090 36 | KS_ERR_ASM_RPAREN = 145, // 0x0091 37 | KS_ERR_ASM_STAT_TOKEN = 146, // 0x0092 38 | KS_ERR_ASM_UNSUPPORTED = 147, // 0x0093 39 | KS_ERR_ASM_MACRO_TOKEN = 148, // 0x0094 40 | KS_ERR_ASM_MACRO_PAREN = 149, // 0x0095 41 | KS_ERR_ASM_MACRO_EQU = 150, // 0x0096 42 | KS_ERR_ASM_MACRO_ARGS = 151, // 0x0097 43 | KS_ERR_ASM_MACRO_LEVELS_EXCEED = 152, // 0x0098 44 | KS_ERR_ASM_MACRO_STR = 153, // 0x0099 45 | KS_ERR_ASM_MACRO_INVALID = 154, // 0x009A 46 | KS_ERR_ASM_ESC_BACKSLASH = 155, // 0x009B 47 | KS_ERR_ASM_ESC_OCTAL = 156, // 0x009C 48 | KS_ERR_ASM_ESC_SEQUENCE = 157, // 0x009D 49 | KS_ERR_ASM_ESC_STR = 158, // 0x009E 50 | KS_ERR_ASM_TOKEN_INVALID = 159, // 0x009F 51 | KS_ERR_ASM_INSN_UNSUPPORTED = 160, // 0x00A0 52 | KS_ERR_ASM_FIXUP_INVALID = 161, // 0x00A1 53 | KS_ERR_ASM_LABEL_INVALID = 162, // 0x00A2 54 | KS_ERR_ASM_FRAGMENT_INVALID = 163, // 0x00A3 55 | KS_ERR_ASM_ARCH = 512, // 0x0200 56 | KS_ERR_ASM_INVALIDOPERAND = 512, // 0x0200 57 | KS_ERR_ASM_MISSINGFEATURE = 513, // 0x0201 58 | KS_ERR_ASM_MNEMONICFAIL = 514, // 0x0202 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneImports.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneImports 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System; 8 | using System.IO; 9 | using System.Runtime.InteropServices; 10 | 11 | namespace KeystoneNET 12 | { 13 | internal class KeystoneImports 14 | { 15 | static KeystoneImports() 16 | { 17 | string str = Path.GetDirectoryName(new Uri(typeof (KeystoneImports).Assembly.CodeBase).LocalPath) + (IntPtr.Size == 8 ? "\\win64\\" : "\\win32\\") + "keystone.dll"; 18 | if (!File.Exists(str)) 19 | return; 20 | KeystoneImports.LoadLibrary(str); 21 | } 22 | 23 | [DllImport("kernel32.dll")] 24 | private static extern IntPtr LoadLibrary(string dllToLoad); 25 | 26 | [DllImport("keystone.dll", EntryPoint = "ks_version", CallingConvention = CallingConvention.Cdecl)] 27 | internal static extern uint Version(ref uint major, ref uint minor); 28 | 29 | [DllImport("keystone.dll", EntryPoint = "ks_open", CallingConvention = CallingConvention.Cdecl)] 30 | internal static extern KeystoneError Open( 31 | KeystoneArchitecture arch, 32 | int mode, 33 | ref IntPtr ks); 34 | 35 | [DllImport("keystone.dll", EntryPoint = "ks_close", CallingConvention = CallingConvention.Cdecl)] 36 | internal static extern KeystoneError Close(IntPtr ks); 37 | 38 | [DllImport("keystone.dll", EntryPoint = "ks_free", CallingConvention = CallingConvention.Cdecl)] 39 | internal static extern void Free(IntPtr buffer); 40 | 41 | [DllImport("keystone.dll", EntryPoint = "ks_strerror", CallingConvention = CallingConvention.Cdecl)] 42 | internal static extern IntPtr ErrorToString(KeystoneError code); 43 | 44 | [DllImport("keystone.dll", EntryPoint = "ks_errno", CallingConvention = CallingConvention.Cdecl)] 45 | internal static extern KeystoneError GetLastKeystoneError(IntPtr ks); 46 | 47 | [DllImport("keystone.dll", EntryPoint = "ks_arch_supported", CallingConvention = CallingConvention.Cdecl)] 48 | internal static extern bool IsArchitectureSupported(KeystoneArchitecture arch); 49 | 50 | [DllImport("keystone.dll", EntryPoint = "ks_option", CallingConvention = CallingConvention.Cdecl)] 51 | internal static extern KeystoneError SetOption( 52 | IntPtr ks, 53 | KeystoneOptionType type, 54 | IntPtr value); 55 | 56 | [DllImport("keystone.dll", EntryPoint = "ks_asm", CallingConvention = CallingConvention.Cdecl)] 57 | internal static extern int Assemble( 58 | IntPtr ks, 59 | [MarshalAs(UnmanagedType.LPStr)] string toEncode, 60 | ulong baseAddress, 61 | out IntPtr encoding, 62 | out uint size, 63 | out uint statements); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneMode.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneMode 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum KeystoneMode : uint 10 | { 11 | KS_MODE_LITTLE_ENDIAN = 0, 12 | KS_MODE_ARM = 1, 13 | KS_MODE_16 = 2, 14 | KS_MODE_32 = 4, 15 | KS_MODE_MIPS32 = 4, 16 | KS_MODE_PPC32 = 4, 17 | KS_MODE_SPARC32 = 4, 18 | KS_MODE_64 = 8, 19 | KS_MODE_MIPS64 = 8, 20 | KS_MODE_PPC64 = 8, 21 | KS_MODE_SPARC64 = 8, 22 | KS_MODE_MICRO = 16, // 0x00000010 23 | KS_MODE_QPX = 16, // 0x00000010 24 | KS_MODE_THUMB = 16, // 0x00000010 25 | KS_MODE_V9 = 16, // 0x00000010 26 | KS_MODE_MIPS3 = 32, // 0x00000020 27 | KS_MODE_MIPS32R6 = 64, // 0x00000040 28 | KS_MODE_V8 = 64, // 0x00000040 29 | KS_MODE_BIG_ENDIAN = 1073741824, // 0x40000000 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneOptionType.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneOptionType 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum KeystoneOptionType : short 10 | { 11 | KS_OPT_SYNTAX = 1, 12 | KS_OPT_SYM_RESOLVER = 2, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /KeystoneNET/KeystoneOptionValue.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.KeystoneOptionValue 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum KeystoneOptionValue : short 10 | { 11 | KS_OPT_SYNTAX_INTEL = 1, 12 | KS_OPT_SYNTAX_ATT = 2, 13 | KS_OPT_SYNTAX_NASM = 4, 14 | KS_OPT_SYNTAX_MASM = 8, 15 | KS_OPT_SYNTAX_GAS = 16, // 0x0010 16 | KS_OPT_SYNTAX_RADIX16 = 32, // 0x0020 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /KeystoneNET/MipsError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.MipsError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum MipsError : short 10 | { 11 | KS_ERR_ASM_MIPS_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_MIPS_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_MIPS_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/PpcError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.PpcError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum PpcError : short 10 | { 11 | KS_ERR_ASM_PPC_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_PPC_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_PPC_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/SparcError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.SparcError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum SparcError : short 10 | { 11 | KS_ERR_ASM_SPARC_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_SPARC_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_SPARC_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/SystemzError.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.SystemzError 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum SystemzError : short 10 | { 11 | KS_ERR_ASM_SYSTEMZ_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_SYSTEMZ_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_SYSTEMZ_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /KeystoneNET/X86Error.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: KeystoneNET.X86Error 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | namespace KeystoneNET 8 | { 9 | public enum X86Error : short 10 | { 11 | KS_ERR_ASM_X86_INVALIDOPERAND = 512, // 0x0200 12 | KS_ERR_ASM_X86_MISSINGFEATURE = 513, // 0x0201 13 | KS_ERR_ASM_X86_MNEMONICFAIL = 514, // 0x0202 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ps4-debug-watch 2 | This is debug watch reversed/recompiled working with GiantPluto's ps4debug for 6.72. 3 | 4 | Requires .NET 4.7.1 and [Giant Pluto's payload](https://github.com/GiantPluto/ps4debug). 5 | 6 | -------------------------------------------------------------------------------- /dbgw.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B} 8 | WinExe 9 | dbgw 10 | v4.0 11 | 12 | 1.0.0.0 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | lib\Be.Windows.Forms.HexBox.dll 37 | 38 | 39 | lib\SharpDisasm.dll 40 | 41 | 42 | 43 | 44 | 45 | 46 | lib\libdebug.dll 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Form 69 | 70 | 71 | Form 72 | 73 | 74 | Form 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /dbgw.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ShowAllFiles 5 | 6 | -------------------------------------------------------------------------------- /dbgw.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dbgw", "dbgw.csproj", "{3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {3E3BCEFE-FC01-4385-BECB-EBFADEE3CB5B}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /debugwatch/AssemblerView.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.AssemblerView 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using KeystoneNET; 8 | using System; 9 | using System.ComponentModel; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace debugwatch 14 | { 15 | public class AssemblerView : Form 16 | { 17 | private ulong _address; 18 | private byte[] result; 19 | private IContainer components; 20 | private Button AssembleButton; 21 | private Button CloseButton; 22 | private TextBox AssemblerTextBox; 23 | 24 | public AssemblerView(ulong address) 25 | { 26 | this.InitializeComponent(); 27 | this._address = address; 28 | } 29 | 30 | public byte[] GetAssemblerResult() 31 | { 32 | return this.result; 33 | } 34 | 35 | private void AssembleButton_Click(object sender, EventArgs e) 36 | { 37 | using (Keystone keystone = new Keystone(KeystoneArchitecture.KS_ARCH_X86, KeystoneMode.KS_MODE_MIPS64, true)) 38 | this.result = keystone.Assemble(this.AssemblerTextBox.Text, this._address).Buffer; 39 | this.Close(); 40 | } 41 | 42 | private void CloseButton_Click(object sender, EventArgs e) 43 | { 44 | this.Close(); 45 | } 46 | 47 | protected override void Dispose(bool disposing) 48 | { 49 | if (disposing && this.components != null) 50 | this.components.Dispose(); 51 | base.Dispose(disposing); 52 | } 53 | 54 | private void InitializeComponent() 55 | { 56 | ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof (AssemblerView)); 57 | this.AssembleButton = new Button(); 58 | this.CloseButton = new Button(); 59 | this.AssemblerTextBox = new TextBox(); 60 | this.SuspendLayout(); 61 | this.AssembleButton.Location = new Point(12, 326); 62 | this.AssembleButton.Name = "AssembleButton"; 63 | this.AssembleButton.Size = new Size(75, 23); 64 | this.AssembleButton.TabIndex = 0; 65 | this.AssembleButton.Text = "Assemble"; 66 | this.AssembleButton.UseVisualStyleBackColor = true; 67 | this.AssembleButton.Click += new EventHandler(this.AssembleButton_Click); 68 | this.CloseButton.Location = new Point(93, 326); 69 | this.CloseButton.Name = "CloseButton"; 70 | this.CloseButton.Size = new Size(75, 23); 71 | this.CloseButton.TabIndex = 1; 72 | this.CloseButton.Text = "Close"; 73 | this.CloseButton.UseVisualStyleBackColor = true; 74 | this.CloseButton.Click += new EventHandler(this.CloseButton_Click); 75 | this.AssemblerTextBox.BackColor = SystemColors.ScrollBar; 76 | this.AssemblerTextBox.Font = new Font("Consolas", 12f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0); 77 | this.AssemblerTextBox.ForeColor = Color.Black; 78 | this.AssemblerTextBox.Location = new Point(12, 12); 79 | this.AssemblerTextBox.Multiline = true; 80 | this.AssemblerTextBox.Name = "AssemblerTextBox"; 81 | this.AssemblerTextBox.ScrollBars = ScrollBars.Both; 82 | this.AssemblerTextBox.Size = new Size(460, 308); 83 | this.AssemblerTextBox.TabIndex = 2; 84 | this.AssemblerTextBox.WordWrap = false; 85 | this.AutoScaleDimensions = new SizeF(6f, 13f); 86 | this.AutoScaleMode = AutoScaleMode.Font; 87 | this.ClientSize = new Size(484, 361); 88 | this.Controls.Add((Control) this.AssemblerTextBox); 89 | this.Controls.Add((Control) this.CloseButton); 90 | this.Controls.Add((Control) this.AssembleButton); 91 | this.FormBorderStyle = FormBorderStyle.FixedSingle; 92 | this.Icon = (Icon) componentResourceManager.GetObject("$this.Icon"); 93 | this.MaximizeBox = false; 94 | this.MinimizeBox = false; 95 | this.Name = nameof (AssemblerView); 96 | this.StartPosition = FormStartPosition.CenterParent; 97 | this.Text = "Assembler"; 98 | this.ResumeLayout(false); 99 | this.PerformLayout(); 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /debugwatch/AssemblerView.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5JY29uAgAAAAhJY29uRGF0YQhJY29uU2l6ZQcEAhNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAIAAAAJAwAAAAX8////E1N5c3RlbS5EcmF3aW5nLlNpemUCAAAABXdpZHRoBmhlaWdodAAACAgCAAAAAAAAAAAAAAAPAwAAAPZYAAACAAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEAIACoJQAA7h4AAAAAAAABACAAYBQAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAA/AAAAiwAAAMEAAACYAAAASwAAABUAAAABAAAAAAAAAAAAAAAAAAAAIAAAAFgAAACBAAAAnQAAAKcAAACQAAAA3wAAAP8AAADiAAAA2wAAAPMAAADTAAAAiwAAAEAAAAAPAAAAAAAAAK0AAAD/AAAA4wAAAHcAAACPAAAA0AAAAPoAAAD/AAAAxQAAAF8AAABrAAAApQAAAN8AAADvAAAAwgAAAFYAAABMAAAAvAAAAOoAAADQAAAAjQAAAGQAAADeAAAA/wAAAPUAAADnAAAAwgAAAIcAAAB1AAAA1AAAAP8AAACiAAAAAAAAAAwAAAA4AAAAfwAAAMYAAADmAAAA+QAAAP8AAACmAAAAVwAAAKsAAACzAAAAmAAAAIUAAABYAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAANAAAARwAAAOEAAAD/AAAAkwAAAF4AAADpAAAAwQAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAAJMAAABuAAAA/wAAAP8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAACTAAAAbgAAAP8AAAD/AAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAANEAAAD/AAAAkwAAAG0AAAD/AAAA/wAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAALgAAACgAAAA/wAAAMUAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAAD2AAAA2AAAAJEAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAJMAAACDAAAASAAAABwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD+PwAA4AcAAAABAAAAAAAAAAAAAIAAAADwBwAA+AcAAPgHAAD4BwAA+AcAAPgPAAD4HwAA+f8AAP//AAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACwAAABrAAAArgAAAKIAAABXAAAAHAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABEAAAAfAAAAIQAAABYAAAAOAAAAlgAAAOoAAAD+AAAA/wAAAP8AAAD6AAAA2AAAAJgAAABNAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAE8AAACKAAAAsQAAANAAAADiAAAA5gAAANYAAAC1AAAA6AAAAP8AAAD/AAAA6gAAALYAAADmAAAA/gAAAP8AAAD4AAAA0AAAAIsAAABBAAAAEAAAAAAAAAAAAAAAjAAAAPkAAAD/AAAA/AAAAJ4AAAB0AAAAtgAAAOwAAAD/AAAA/wAAAP8AAAD/AAAA3AAAADsAAAAuAAAAaAAAALIAAADqAAAA/gAAAP8AAADzAAAAxgAAAGwAAAAQAAAAdAAAAPYAAAD/AAAA/QAAAKwAAABNAAAAIAAAAC4AAAByAAAA6AAAAP8AAAD/AAAA/gAAAOQAAACnAAAAXAAAACsAAAAyAAAAbQAAALsAAAD4AAAA/wAAAPsAAACFAAAACgAAAGEAAAC+AAAA7gAAAP8AAAD6AAAA0wAAAIoAAABMAAAA0AAAAP8AAAD/AAAA+QAAAPIAAAD/AAAA/QAAAOMAAAClAAAAagAAAHcAAADoAAAA/wAAAO8AAABtAAAAAAAAAAAAAAAMAAAANgAAAHoAAADBAAAA8gAAAP8AAAD3AAAA+QAAAP8AAAD/AAAA1gAAAEcAAABwAAAAqQAAAMwAAADdAAAA3wAAANIAAAC8AAAAjgAAAEEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAOQAAAH0AAADFAAAA+AAAAP8AAAD/AAAA0gAAABMAAABMAAAAnwAAAKQAAABfAAAAHgAAABUAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAzwAAAP8AAAD/AAAA0gAAABMAAACdAAAA/wAAAP8AAADlAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAvQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAxAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACdAAAA/wAAAP8AAAD/AAAArQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACeAAAA/wAAAP8AAAD6AAAAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA6gAAAHwAAADRAAAA/wAAAP0AAACfAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA3QAAAHoAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD0AAAA1AAAAKMAAABkAAAAIgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAhAAAAHgAAAA/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD/8/8A/4B/AOAADwAAAAMAAAAAAAAAAAAAAAAAwAAAAPgAAwD/AB8A/wAfAP8ADwD/AA8A/wAPAP8AHwD/AB8A/wA/AP8AfwD/A/8A/z//AP///wD///8AKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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CgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADJAAAA/wAAAP8AAAD/AAAA/wAAAOsAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPYAAABBAAAACgAAAMkAAAD/AAAA/wAAAP8AAAD/AAAA7AAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA9gAAAEEAAAAKAAAAyQAAAP8AAAD/AAAA/wAAAP8AAADdAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADIAAAA/wAAAP8AAAD/AAAA/wAAAKwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPcAAABEAAAADQAAAMwAAAD/AAAA/wAAAP8AAADvAAAASQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA/gAAALEAAACWAAAA8gAAAP8AAAD/AAAA8wAAAHQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAANEAAABbAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAP8AAAD8AAAA6QAAALoAAABsAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAADAAAAA/wAAAO8AAADMAAAAmAAAAF4AAAAsAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAHUAAABtAAAANgAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////z////gH///gAP/gAAAfAAAABwAAAAEAAAAAAAAAAIAAAADgAAAB/AAgB/+AAH//4AB//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAf//gAH//4AD//+AD///gD///4H////f//////////////////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAB4AAABVAAAAlAAAAH8AAAA4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACEAAABaAAAAnwAAANoAAAD5AAAA/wAAAP8AAADuAAAAvQAAAHQAAAAwAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAAAApQAAAN0AAAD7AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAADpAAAAswAAAGoAAAAoAAAABgAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACgAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADmAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAApQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAoAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD7AAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADZAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA0wAAACEAAAAFAAAAeAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAALkAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAAMsAAAC5AAAA7wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPQAAACdAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD0AAAAuQAAAFIAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA0QAAAJMAAABGAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAPcAAADcAAAArgAAAHUAAAA/AAAAFgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACsAAAA/wAAAOQAAAC5AAAAggAAAEoAAAAeAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABYAAAAWAAAACYAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////v///AAD///wH//8AAP//4AD//wAA///AAB//AAD/AAAAA/8AAOAAAAAAfwAAgAAAAAAPAAAAAAAAAAMAAAAAAAQAAQAAABgAAIAAAAAAAwAAMAAAAIAAAAACAAAAwAAAAAAAAAD4AAAAAAEAAP8AABAABwAA/+AAEAB/AAD//AAQD/8AAP//gBAH/wAA//+AEAP/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQA/8AAP//gBAB/wAA//+AEAH/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQB/8AAP//gAAH/wAA//+AAA//AAD//4AAH/8AAP//gAA//wAA//+AAP//AAD//4AD//8AAP//gD///wAA//+D////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AACJUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIBAAAAPZ7YO0AABQnSURBVHja7Z15cFXXfcc/T0+70AICCQlLrGZfBAYjxCqQkITt2M7SJk6dejoexzNOJzXpNO7UrT3JNHHTxnXimbr1uG0S1fU0iRNPEBI7ZpdZjCDsBsQOQoA2tOu91z+enrb3JL2nd+49V0+/z/1HQsP9/c6533vuWX7nd0AQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQ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 122 | 123 | -------------------------------------------------------------------------------- /debugwatch/DebugWatchForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | r15 = , r14 = , r13 = , r12 = , r11 = , r10 = , r9 = , r8 = , rdi = , rsi = , rbp = , rbx = , rdx = , rcx = , rax = , trapno = , fs = , gs = , err = , es = , ds = , rip = , cs = , rflags = , rsp = , ss = 122 | 123 | 124 | AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5JY29uAgAAAAhJY29uRGF0YQhJY29uU2l6ZQcEAhNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAIAAAAJAwAAAAX8////E1N5c3RlbS5EcmF3aW5nLlNpemUCAAAABXdpZHRoBmhlaWdodAAACAgCAAAAAAAAAAAAAAAPAwAAAPZYAAACAAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEAIACoJQAA7h4AAAAAAAABACAAYBQAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAA/AAAAiwAAAMEAAACYAAAASwAAABUAAAABAAAAAAAAAAAAAAAAAAAAIAAAAFgAAACBAAAAnQAAAKcAAACQAAAA3wAAAP8AAADiAAAA2wAAAPMAAADTAAAAiwAAAEAAAAAPAAAAAAAAAK0AAAD/AAAA4wAAAHcAAACPAAAA0AAAAPoAAAD/AAAAxQAAAF8AAABrAAAApQAAAN8AAADvAAAAwgAAAFYAAABMAAAAvAAAAOoAAADQAAAAjQAAAGQAAADeAAAA/wAAAPUAAADnAAAAwgAAAIcAAAB1AAAA1AAAAP8AAACiAAAAAAAAAAwAAAA4AAAAfwAAAMYAAADmAAAA+QAAAP8AAACmAAAAVwAAAKsAAACzAAAAmAAAAIUAAABYAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAANAAAARwAAAOEAAAD/AAAAkwAAAF4AAADpAAAAwQAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAAJMAAABuAAAA/wAAAP8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAACTAAAAbgAAAP8AAAD/AAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAANEAAAD/AAAAkwAAAG0AAAD/AAAA/wAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAALgAAACgAAAA/wAAAMUAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAAD2AAAA2AAAAJEAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAJMAAACDAAAASAAAABwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD+PwAA4AcAAAABAAAAAAAAAAAAAIAAAADwBwAA+AcAAPgHAAD4BwAA+AcAAPgPAAD4HwAA+f8AAP//AAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACwAAABrAAAArgAAAKIAAABXAAAAHAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABEAAAAfAAAAIQAAABYAAAAOAAAAlgAAAOoAAAD+AAAA/wAAAP8AAAD6AAAA2AAAAJgAAABNAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAE8AAACKAAAAsQAAANAAAADiAAAA5gAAANYAAAC1AAAA6AAAAP8AAAD/AAAA6gAAALYAAADmAAAA/gAAAP8AAAD4AAAA0AAAAIsAAABBAAAAEAAAAAAAAAAAAAAAjAAAAPkAAAD/AAAA/AAAAJ4AAAB0AAAAtgAAAOwAAAD/AAAA/wAAAP8AAAD/AAAA3AAAADsAAAAuAAAAaAAAALIAAADqAAAA/gAAAP8AAADzAAAAxgAAAGwAAAAQAAAAdAAAAPYAAAD/AAAA/QAAAKwAAABNAAAAIAAAAC4AAAByAAAA6AAAAP8AAAD/AAAA/gAAAOQAAACnAAAAXAAAACsAAAAyAAAAbQAAALsAAAD4AAAA/wAAAPsAAACFAAAACgAAAGEAAAC+AAAA7gAAAP8AAAD6AAAA0wAAAIoAAABMAAAA0AAAAP8AAAD/AAAA+QAAAPIAAAD/AAAA/QAAAOMAAAClAAAAagAAAHcAAADoAAAA/wAAAO8AAABtAAAAAAAAAAAAAAAMAAAANgAAAHoAAADBAAAA8gAAAP8AAAD3AAAA+QAAAP8AAAD/AAAA1gAAAEcAAABwAAAAqQAAAMwAAADdAAAA3wAAANIAAAC8AAAAjgAAAEEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAOQAAAH0AAADFAAAA+AAAAP8AAAD/AAAA0gAAABMAAABMAAAAnwAAAKQAAABfAAAAHgAAABUAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAzwAAAP8AAAD/AAAA0gAAABMAAACdAAAA/wAAAP8AAADlAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAvQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAxAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACdAAAA/wAAAP8AAAD/AAAArQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACeAAAA/wAAAP8AAAD6AAAAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA6gAAAHwAAADRAAAA/wAAAP0AAACfAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA3QAAAHoAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD0AAAA1AAAAKMAAABkAAAAIgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAhAAAAHgAAAA/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD/8/8A/4B/AOAADwAAAAMAAAAAAAAAAAAAAAAAwAAAAPgAAwD/AB8A/wAfAP8ADwD/AA8A/wAPAP8AHwD/AB8A/wA/AP8AfwD/A/8A/z//AP///wD///8AKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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CgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADJAAAA/wAAAP8AAAD/AAAA/wAAAOsAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPYAAABBAAAACgAAAMkAAAD/AAAA/wAAAP8AAAD/AAAA7AAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA9gAAAEEAAAAKAAAAyQAAAP8AAAD/AAAA/wAAAP8AAADdAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADIAAAA/wAAAP8AAAD/AAAA/wAAAKwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPcAAABEAAAADQAAAMwAAAD/AAAA/wAAAP8AAADvAAAASQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA/gAAALEAAACWAAAA8gAAAP8AAAD/AAAA8wAAAHQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAANEAAABbAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAP8AAAD8AAAA6QAAALoAAABsAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAADAAAAA/wAAAO8AAADMAAAAmAAAAF4AAAAsAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAHUAAABtAAAANgAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////z////gH///gAP/gAAAfAAAABwAAAAEAAAAAAAAAAIAAAADgAAAB/AAgB/+AAH//4AB//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAf//gAH//4AD//+AD///gD///4H////f//////////////////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAB4AAABVAAAAlAAAAH8AAAA4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACEAAABaAAAAnwAAANoAAAD5AAAA/wAAAP8AAADuAAAAvQAAAHQAAAAwAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAAAApQAAAN0AAAD7AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAADpAAAAswAAAGoAAAAoAAAABgAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACgAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADmAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAApQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAoAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD7AAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADZAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA0wAAACEAAAAFAAAAeAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAALkAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAAMsAAAC5AAAA7wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPQAAACdAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD0AAAAuQAAAFIAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA0QAAAJMAAABGAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAPcAAADcAAAArgAAAHUAAAA/AAAAFgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACsAAAA/wAAAOQAAAC5AAAAggAAAEoAAAAeAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABYAAAAWAAAACYAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////v///AAD///wH//8AAP//4AD//wAA///AAB//AAD/AAAAA/8AAOAAAAAAfwAAgAAAAAAPAAAAAAAAAAMAAAAAAAQAAQAAABgAAIAAAAAAAwAAMAAAAIAAAAACAAAAwAAAAAAAAAD4AAAAAAEAAP8AABAABwAA/+AAEAB/AAD//AAQD/8AAP//gBAH/wAA//+AEAP/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQA/8AAP//gBAB/wAA//+AEAH/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQB/8AAP//gAAH/wAA//+AAA//AAD//4AAH/8AAP//gAA//wAA//+AAP//AAD//4AD//8AAP//gD///wAA//+D////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AACJUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIBAAAAPZ7YO0AABQnSURBVHja7Z15cFXXfcc/T0+70AICCQlLrGZfBAYjxCqQkITt2M7SJk6dejoexzNOJzXpNO7UrT3JNHHTxnXimbr1uG0S1fU0iRNPEBI7ZpdZjCDsBsQOQoA2tOu91z+enrb3JL2nd+49V0+/z/1HQsP9/c6533vuWX7nd0AQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQ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 125 | 126 | -------------------------------------------------------------------------------- /debugwatch/Extensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows.Forms; 6 | 7 | namespace debugwatch 8 | { 9 | public static class Extensions 10 | { 11 | public static void Invoke(this TControlType control, Action del) 12 | where TControlType : Control 13 | { 14 | if (control.InvokeRequired) 15 | control.Invoke(new Action(() => del(control))); 16 | else 17 | del(control); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /debugwatch/MemoryMapView.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.MemoryMapView 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using libdebug; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.ComponentModel; 11 | using System.Drawing; 12 | using System.Windows.Forms; 13 | 14 | namespace debugwatch 15 | { 16 | public class MemoryMapView : Form 17 | { 18 | private ProcessInfo processinfo; 19 | private ProcessMap processMap; 20 | private IContainer components; 21 | private Button CloseButton; 22 | private CheckedListBox MemoryMapCheckedListBox; 23 | private Label HelpLabel; 24 | private Button AutoSelectButton; 25 | private Button ClearSelectButton; 26 | private TextBox SearchTextBox; 27 | private Label SearchLabel; 28 | 29 | public MemoryMapView(ProcessInfo pi, ProcessMap processMap) 30 | { 31 | this.InitializeComponent(); 32 | this.processinfo = pi; 33 | this.processMap = processMap; 34 | 35 | 36 | 37 | for (int index = 0; index < this.processMap.entries.Length; ++index) 38 | { 39 | MemoryEntry entry = this.processMap.entries[index]; 40 | ulong num = entry.end - entry.start; 41 | this.MemoryMapCheckedListBox.Items.Add((object) (entry.name + 42 | " start: 0x" + 43 | entry.start.ToString("X") + 44 | " length: 0x" + 45 | num.ToString("X") + 46 | " prot: " + 47 | (object) entry.prot)); 48 | } 49 | this.AutoSelectButton_Click((object) null, (EventArgs) null); 50 | } 51 | 52 | public MemoryEntry[] GetSelectedEntries() 53 | { 54 | List memoryEntryList = new List(); 55 | for (int index1 = 0; index1 < this.processMap.entries.Length; ++index1) 56 | { 57 | MemoryEntry entry = this.processMap.entries[index1]; 58 | if (entry.name.Length != 0) 59 | { 60 | for (int index2 = 0; index2 < this.MemoryMapCheckedListBox.CheckedItems.Count; ++index2) 61 | { 62 | if (this.MemoryMapCheckedListBox.CheckedItems[index2].ToString().StartsWith(entry.name)) 63 | { 64 | memoryEntryList.Add(entry); 65 | break; 66 | } 67 | } 68 | } 69 | } 70 | return memoryEntryList.ToArray(); 71 | } 72 | 73 | private void AutoSelectButton_Click(object sender, EventArgs e) 74 | { 75 | string[] strArray = new string[3] 76 | { 77 | "executable", 78 | "anon:", 79 | "heap" 80 | }; 81 | for (int index1 = 0; index1 < this.MemoryMapCheckedListBox.Items.Count; ++index1) 82 | { 83 | for (int index2 = 0; index2 < strArray.Length; ++index2) 84 | { 85 | if (this.MemoryMapCheckedListBox.Items[index1].ToString().ToLower().Contains(strArray[index2])) 86 | { 87 | this.MemoryMapCheckedListBox.SetItemChecked(index1, true); 88 | break; 89 | } 90 | } 91 | } 92 | } 93 | 94 | private void CloseButton_Click(object sender, EventArgs e) 95 | { 96 | this.Close(); 97 | } 98 | 99 | private void ClearSelectButton_Click(object sender, EventArgs e) 100 | { 101 | for (int index = 0; index < this.MemoryMapCheckedListBox.Items.Count; ++index) 102 | this.MemoryMapCheckedListBox.SetItemChecked(index, false); 103 | } 104 | 105 | private void SearchTextBox_TextChanged(object sender, EventArgs e) 106 | { 107 | this.MemoryMapCheckedListBox.Items.Clear(); 108 | for (int index = 0; index < this.processMap.entries.Length; ++index) 109 | { 110 | MemoryEntry entry = this.processMap.entries[index]; 111 | ulong num = entry.end - entry.start; 112 | if (entry.name.Contains(this.SearchTextBox.Text)) 113 | this.MemoryMapCheckedListBox.Items.Add((object) (entry.name + " start: 0x" + entry.start.ToString("X") + " length: 0x" + num.ToString("X") + " prot: " + (object) entry.prot)); 114 | } 115 | } 116 | 117 | protected override void Dispose(bool disposing) 118 | { 119 | if (disposing && this.components != null) 120 | this.components.Dispose(); 121 | base.Dispose(disposing); 122 | } 123 | 124 | private void InitializeComponent() 125 | { 126 | ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof (MemoryMapView)); 127 | this.CloseButton = new Button(); 128 | this.MemoryMapCheckedListBox = new CheckedListBox(); 129 | this.HelpLabel = new Label(); 130 | this.AutoSelectButton = new Button(); 131 | this.ClearSelectButton = new Button(); 132 | this.SearchTextBox = new TextBox(); 133 | this.SearchLabel = new Label(); 134 | this.SuspendLayout(); 135 | this.CloseButton.Location = new Point(204, 363); 136 | this.CloseButton.Name = "CloseButton"; 137 | this.CloseButton.Size = new Size(75, 23); 138 | this.CloseButton.TabIndex = 0; 139 | this.CloseButton.Text = "Close"; 140 | this.CloseButton.UseVisualStyleBackColor = true; 141 | this.CloseButton.Click += new EventHandler(this.CloseButton_Click); 142 | this.MemoryMapCheckedListBox.BackColor = Color.LightGray; 143 | this.MemoryMapCheckedListBox.Font = new Font("Consolas", 9f); 144 | this.MemoryMapCheckedListBox.FormattingEnabled = true; 145 | this.MemoryMapCheckedListBox.Location = new Point(12, 12); 146 | this.MemoryMapCheckedListBox.Name = "MemoryMapCheckedListBox"; 147 | this.MemoryMapCheckedListBox.ScrollAlwaysVisible = true; 148 | this.MemoryMapCheckedListBox.Size = new Size(560, 344); 149 | this.MemoryMapCheckedListBox.TabIndex = 1; 150 | this.HelpLabel.AutoSize = true; 151 | this.HelpLabel.Font = new Font("Consolas", 8.25f); 152 | this.HelpLabel.Location = new Point(12, 389); 153 | this.HelpLabel.Name = "HelpLabel"; 154 | this.HelpLabel.Size = new Size(421, 13); 155 | this.HelpLabel.TabIndex = 23; 156 | this.HelpLabel.Text = "Please select memory regions from above view in order to search them."; 157 | this.AutoSelectButton.Location = new Point(12, 363); 158 | this.AutoSelectButton.Name = "AutoSelectButton"; 159 | this.AutoSelectButton.Size = new Size(75, 23); 160 | this.AutoSelectButton.TabIndex = 24; 161 | this.AutoSelectButton.Text = "Auto Select"; 162 | this.AutoSelectButton.UseVisualStyleBackColor = true; 163 | this.AutoSelectButton.Click += new EventHandler(this.AutoSelectButton_Click); 164 | this.ClearSelectButton.Location = new Point(93, 363); 165 | this.ClearSelectButton.Name = "ClearSelectButton"; 166 | this.ClearSelectButton.Size = new Size(105, 23); 167 | this.ClearSelectButton.TabIndex = 25; 168 | this.ClearSelectButton.Text = "Clear Selection"; 169 | this.ClearSelectButton.UseVisualStyleBackColor = true; 170 | this.ClearSelectButton.Click += new EventHandler(this.ClearSelectButton_Click); 171 | this.SearchTextBox.Location = new Point(374, 365); 172 | this.SearchTextBox.Name = "SearchTextBox"; 173 | this.SearchTextBox.Size = new Size(198, 20); 174 | this.SearchTextBox.TabIndex = 26; 175 | this.SearchTextBox.TextChanged += new EventHandler(this.SearchTextBox_TextChanged); 176 | this.SearchLabel.AutoSize = true; 177 | this.SearchLabel.Font = new Font("Consolas", 9f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0); 178 | this.SearchLabel.Location = new Point(319, 368); 179 | this.SearchLabel.Name = "SearchLabel"; 180 | this.SearchLabel.Size = new Size(49, 14); 181 | this.SearchLabel.TabIndex = 27; 182 | this.SearchLabel.Text = "Search"; 183 | this.AutoScaleDimensions = new SizeF(6f, 13f); 184 | this.AutoScaleMode = AutoScaleMode.Font; 185 | this.ClientSize = new Size(584, 411); 186 | this.Controls.Add((Control) this.SearchLabel); 187 | this.Controls.Add((Control) this.SearchTextBox); 188 | this.Controls.Add((Control) this.ClearSelectButton); 189 | this.Controls.Add((Control) this.AutoSelectButton); 190 | this.Controls.Add((Control) this.HelpLabel); 191 | this.Controls.Add((Control) this.MemoryMapCheckedListBox); 192 | this.Controls.Add((Control) this.CloseButton); 193 | this.FormBorderStyle = FormBorderStyle.FixedSingle; 194 | this.Icon = (Icon) componentResourceManager.GetObject("$this.Icon"); 195 | this.MaximizeBox = false; 196 | this.MinimizeBox = false; 197 | this.Name = nameof (MemoryMapView); 198 | this.StartPosition = FormStartPosition.CenterParent; 199 | this.Text = "Memory Map"; 200 | this.ResumeLayout(false); 201 | this.PerformLayout(); 202 | } 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /debugwatch/MemoryMapView.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5JY29uAgAAAAhJY29uRGF0YQhJY29uU2l6ZQcEAhNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAIAAAAJAwAAAAX8////E1N5c3RlbS5EcmF3aW5nLlNpemUCAAAABXdpZHRoBmhlaWdodAAACAgCAAAAAAAAAAAAAAAPAwAAAPZYAAACAAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEAIACoJQAA7h4AAAAAAAABACAAYBQAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAA/AAAAiwAAAMEAAACYAAAASwAAABUAAAABAAAAAAAAAAAAAAAAAAAAIAAAAFgAAACBAAAAnQAAAKcAAACQAAAA3wAAAP8AAADiAAAA2wAAAPMAAADTAAAAiwAAAEAAAAAPAAAAAAAAAK0AAAD/AAAA4wAAAHcAAACPAAAA0AAAAPoAAAD/AAAAxQAAAF8AAABrAAAApQAAAN8AAADvAAAAwgAAAFYAAABMAAAAvAAAAOoAAADQAAAAjQAAAGQAAADeAAAA/wAAAPUAAADnAAAAwgAAAIcAAAB1AAAA1AAAAP8AAACiAAAAAAAAAAwAAAA4AAAAfwAAAMYAAADmAAAA+QAAAP8AAACmAAAAVwAAAKsAAACzAAAAmAAAAIUAAABYAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAANAAAARwAAAOEAAAD/AAAAkwAAAF4AAADpAAAAwQAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAAJMAAABuAAAA/wAAAP8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAACTAAAAbgAAAP8AAAD/AAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAANEAAAD/AAAAkwAAAG0AAAD/AAAA/wAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAADRAAAA/wAAALgAAACgAAAA/wAAAMUAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA0QAAAP8AAAD2AAAA2AAAAJEAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAJMAAACDAAAASAAAABwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD+PwAA4AcAAAABAAAAAAAAAAAAAIAAAADwBwAA+AcAAPgHAAD4BwAA+AcAAPgPAAD4HwAA+f8AAP//AAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACwAAABrAAAArgAAAKIAAABXAAAAHAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABEAAAAfAAAAIQAAABYAAAAOAAAAlgAAAOoAAAD+AAAA/wAAAP8AAAD6AAAA2AAAAJgAAABNAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAE8AAACKAAAAsQAAANAAAADiAAAA5gAAANYAAAC1AAAA6AAAAP8AAAD/AAAA6gAAALYAAADmAAAA/gAAAP8AAAD4AAAA0AAAAIsAAABBAAAAEAAAAAAAAAAAAAAAjAAAAPkAAAD/AAAA/AAAAJ4AAAB0AAAAtgAAAOwAAAD/AAAA/wAAAP8AAAD/AAAA3AAAADsAAAAuAAAAaAAAALIAAADqAAAA/gAAAP8AAADzAAAAxgAAAGwAAAAQAAAAdAAAAPYAAAD/AAAA/QAAAKwAAABNAAAAIAAAAC4AAAByAAAA6AAAAP8AAAD/AAAA/gAAAOQAAACnAAAAXAAAACsAAAAyAAAAbQAAALsAAAD4AAAA/wAAAPsAAACFAAAACgAAAGEAAAC+AAAA7gAAAP8AAAD6AAAA0wAAAIoAAABMAAAA0AAAAP8AAAD/AAAA+QAAAPIAAAD/AAAA/QAAAOMAAAClAAAAagAAAHcAAADoAAAA/wAAAO8AAABtAAAAAAAAAAAAAAAMAAAANgAAAHoAAADBAAAA8gAAAP8AAAD3AAAA+QAAAP8AAAD/AAAA1gAAAEcAAABwAAAAqQAAAMwAAADdAAAA3wAAANIAAAC8AAAAjgAAAEEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAOQAAAH0AAADFAAAA+AAAAP8AAAD/AAAA0gAAABMAAABMAAAAnwAAAKQAAABfAAAAHgAAABUAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAzwAAAP8AAAD/AAAA0gAAABMAAACdAAAA/wAAAP8AAADlAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAvQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0gAAABQAAACdAAAA/wAAAP8AAAD/AAAAxAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACdAAAA/wAAAP8AAAD/AAAArQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA0wAAABQAAACeAAAA/wAAAP8AAAD6AAAAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA6gAAAHwAAADRAAAA/wAAAP0AAACfAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA3QAAAHoAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAyQAAAP8AAAD0AAAA1AAAAKMAAABkAAAAIgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAhAAAAHgAAAA/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD/8/8A/4B/AOAADwAAAAMAAAAAAAAAAAAAAAAAwAAAAPgAAwD/AB8A/wAfAP8ADwD/AA8A/wAPAP8AHwD/AB8A/wA/AP8AfwD/A/8A/z//AP///wD///8AKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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CgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADJAAAA/wAAAP8AAAD/AAAA/wAAAOsAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPYAAABBAAAACgAAAMkAAAD/AAAA/wAAAP8AAAD/AAAA7AAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA9gAAAEEAAAAKAAAAyQAAAP8AAAD/AAAA/wAAAP8AAADdAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD2AAAAQQAAAAoAAADIAAAA/wAAAP8AAAD/AAAA/wAAAKwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAPcAAABEAAAADQAAAMwAAAD/AAAA/wAAAP8AAADvAAAASQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAC/AAAA/wAAAP8AAAD/AAAA/gAAALEAAACWAAAA8gAAAP8AAAD/AAAA8wAAAHQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAANEAAABbAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvwAAAP8AAAD/AAAA/wAAAP8AAAD8AAAA6QAAALoAAABsAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAADAAAAA/wAAAO8AAADMAAAAmAAAAF4AAAAsAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAHUAAABtAAAANgAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////z////gH///gAP/gAAAfAAAABwAAAAEAAAAAAAAAAIAAAADgAAAB/AAgB/+AAH//4AB//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAf//gAH//4AD//+AD///gD///4H////f//////////////////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAB4AAABVAAAAlAAAAH8AAAA4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACEAAABaAAAAnwAAANoAAAD5AAAA/wAAAP8AAADuAAAAvQAAAHQAAAAwAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAAAApQAAAN0AAAD7AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAADpAAAAswAAAGoAAAAoAAAABgAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACgAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADmAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAApQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAsAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAoAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwgAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD7AAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADZAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwwAAAAwAAAAAAAAATwAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA0wAAACEAAAAFAAAAeAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAALkAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAAMsAAAC5AAAA7wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAwQAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPQAAACdAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD0AAAAuQAAAFIAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA0QAAAJMAAABGAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACrAAAA/wAAAP8AAAD/AAAA/wAAAPcAAADcAAAArgAAAHUAAAA/AAAAFgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACsAAAA/wAAAOQAAAC5AAAAggAAAEoAAAAeAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABYAAAAWAAAACYAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////v///AAD///wH//8AAP//4AD//wAA///AAB//AAD/AAAAA/8AAOAAAAAAfwAAgAAAAAAPAAAAAAAAAAMAAAAAAAQAAQAAABgAAIAAAAAAAwAAMAAAAIAAAAACAAAAwAAAAAAAAAD4AAAAAAEAAP8AABAABwAA/+AAEAB/AAD//AAQD/8AAP//gBAH/wAA//+AEAP/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQA/8AAP//gBAB/wAA//+AEAH/AAD//4AQA/8AAP//gBAD/wAA//+AEAP/AAD//4AQB/8AAP//gAAH/wAA//+AAA//AAD//4AAH/8AAP//gAA//wAA//+AAP//AAD//4AD//8AAP//gD///wAA//+D////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AACJUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIBAAAAPZ7YO0AABQnSURBVHja7Z15cFXXfcc/T0+70AICCQlLrGZfBAYjxCqQkITt2M7SJk6dejoexzNOJzXpNO7UrT3JNHHTxnXimbr1uG0S1fU0iRNPEBI7ZpdZjCDsBsQOQoA2tOu91z+enrb3JL2nd+49V0+/z/1HQsP9/c6533vuWX7nd0AQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQ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 122 | 123 | -------------------------------------------------------------------------------- /debugwatch/MemoryScanner.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.MemoryScanner 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System; 8 | using System.Collections.Generic; 9 | using System.Diagnostics; 10 | using System.Linq; 11 | using System.Threading; 12 | using System.Threading.Tasks; 13 | 14 | namespace debugwatch 15 | { 16 | internal class MemoryScanner 17 | { 18 | private const int ThreadCount = 8; 19 | 20 | public static MemoryScanner.SCAN_TYPE StringToType(string str) 21 | { 22 | MemoryScanner.SCAN_TYPE scanType = MemoryScanner.SCAN_TYPE.BYTE; 23 | string upper = str.ToUpper(); 24 | if (!(upper == "BYTE")) 25 | { 26 | if (!(upper == "SHORT")) 27 | { 28 | if (!(upper == "INTEGER")) 29 | { 30 | if (!(upper == "LONG")) 31 | { 32 | if (!(upper == "FLOAT")) 33 | { 34 | if (upper == "DOUBLE") 35 | scanType = MemoryScanner.SCAN_TYPE.DOUBLE; 36 | } 37 | else 38 | scanType = MemoryScanner.SCAN_TYPE.FLOAT; 39 | } 40 | else 41 | scanType = MemoryScanner.SCAN_TYPE.LONG; 42 | } 43 | else 44 | scanType = MemoryScanner.SCAN_TYPE.INTEGER; 45 | } 46 | else 47 | scanType = MemoryScanner.SCAN_TYPE.SHORT; 48 | } 49 | else 50 | scanType = MemoryScanner.SCAN_TYPE.BYTE; 51 | 52 | return scanType; 53 | } 54 | 55 | public static string TypeToString(MemoryScanner.SCAN_TYPE type) 56 | { 57 | string str = ""; 58 | switch (type) 59 | { 60 | case MemoryScanner.SCAN_TYPE.BYTE: 61 | str = "BYTE"; 62 | break; 63 | case MemoryScanner.SCAN_TYPE.SHORT: 64 | str = "SHORT"; 65 | break; 66 | case MemoryScanner.SCAN_TYPE.INTEGER: 67 | str = "INTEGER"; 68 | break; 69 | case MemoryScanner.SCAN_TYPE.LONG: 70 | str = "LONG"; 71 | break; 72 | case MemoryScanner.SCAN_TYPE.FLOAT: 73 | str = "FLOAT"; 74 | break; 75 | case MemoryScanner.SCAN_TYPE.DOUBLE: 76 | str = "DOUBLE"; 77 | break; 78 | } 79 | 80 | return str; 81 | } 82 | 83 | public static uint GetTypeLength(MemoryScanner.SCAN_TYPE type) 84 | { 85 | switch (type) 86 | { 87 | case MemoryScanner.SCAN_TYPE.BYTE: 88 | return 1; 89 | case MemoryScanner.SCAN_TYPE.SHORT: 90 | return 2; 91 | case MemoryScanner.SCAN_TYPE.INTEGER: 92 | return 4; 93 | case MemoryScanner.SCAN_TYPE.LONG: 94 | return 8; 95 | case MemoryScanner.SCAN_TYPE.FLOAT: 96 | return 4; 97 | case MemoryScanner.SCAN_TYPE.DOUBLE: 98 | return 8; 99 | default: 100 | return 0; 101 | } 102 | } 103 | 104 | public static uint GetTypeLength(string type) 105 | { 106 | return MemoryScanner.GetTypeLength(MemoryScanner.StringToType(type)); 107 | } 108 | 109 | public static bool CompareEqual(byte[] v1, byte[] v2, MemoryScanner.SCAN_TYPE type) 110 | { 111 | return ((IEnumerable) v1).SequenceEqual((IEnumerable) v2); 112 | } 113 | 114 | public static bool CompareLessThan(byte[] v1, byte[] v2, MemoryScanner.SCAN_TYPE type) 115 | { 116 | return ((IEnumerable) v1).SequenceEqual((IEnumerable) v2); 117 | } 118 | 119 | public static bool CompareGreaterThan(byte[] v1, byte[] v2, MemoryScanner.SCAN_TYPE type) 120 | { 121 | return ((IEnumerable) v1).SequenceEqual((IEnumerable) v2); 122 | } 123 | 124 | public static Dictionary ScanMemory( 125 | ulong address, 126 | byte[] data, 127 | MemoryScanner.SCAN_TYPE type, 128 | byte[] value, 129 | MemoryScanner.CompareFunction cfunc) 130 | { 131 | uint typeLength = MemoryScanner.GetTypeLength(type); 132 | Dictionary resultsDictionary = new Dictionary(); 133 | uint lastReadableMemoryAddress = (uint) data.Length - (typeLength + 1); // Last memory address you can read out of this buffer without causing an exception. 134 | 135 | uint flooredSegmentLength = (uint) Math.Floor((decimal) data.Length / ThreadCount); 136 | bool useDefaultSearch = flooredSegmentLength < typeLength; 137 | 138 | // Default search 139 | if (useDefaultSearch) { 140 | for (uint index = 0; index < (uint) data.Length - typeLength; ++index) 141 | { 142 | byte[] v1 = new byte[(int) typeLength]; 143 | Array.Copy((Array) data, (long) index, (Array) v1, 0L, (long) typeLength); 144 | if (cfunc(v1, value, type)) 145 | { 146 | resultsDictionary.Add(address + (ulong) index, value); 147 | } 148 | 149 | DebugWatchForm.Singleton.ScanProgressBar.Invoke((p) => p.Increment(1)); 150 | } 151 | return resultsDictionary; 152 | } 153 | 154 | 155 | // If the memory address is too small, search synchronously. 156 | var myThreadCount = 0; 157 | void GetMatches(ref byte[] memorySection, uint startIndex, uint lastIndexToRead, int threadCount) 158 | { 159 | Debug.WriteLine($"Start Index: {startIndex}; Last Index: {lastIndexToRead}; Thread Count: {threadCount}; MemorySectionLength: {memorySection.LongLength}"); 160 | Dictionary tempDictionary = new Dictionary(); 161 | byte[] tempBuffer = new byte[(int)typeLength]; 162 | for (uint currentIndex = startIndex; currentIndex <= lastIndexToRead - (long) typeLength; currentIndex++) 163 | { 164 | Array.Clear(tempBuffer, 0, tempBuffer.Length); // Zero out array 165 | Array.Copy((Array) memorySection, (long) currentIndex, (Array) tempBuffer, 0L, (long) typeLength); 166 | if (cfunc(tempBuffer, value, type)) 167 | { 168 | tempDictionary.Add(address + (ulong) currentIndex, value); 169 | } 170 | } 171 | 172 | // Add matched results to the dictionary 173 | lock (resultsDictionary) 174 | { 175 | foreach (var keyValuePair in tempDictionary) 176 | { 177 | resultsDictionary.Add(keyValuePair.Key, keyValuePair.Value); 178 | } 179 | // Update progress UI 180 | DebugWatchForm.Singleton.ScanProgressBar.Invoke((p) => p.Increment(1)); 181 | } 182 | } 183 | 184 | // Use multi-threading for search larger memory sections 185 | Task[] comparisonTasks = new Task[ThreadCount]; 186 | for (int i = 0; i < ThreadCount - 1; i++) 187 | { 188 | uint startIndex = (uint)(i * flooredSegmentLength); 189 | uint lastIndex = (uint)((i+1) * flooredSegmentLength) - 1; 190 | Debug.WriteLine("Creating Task"); 191 | comparisonTasks[i] = new Task(() => GetMatches(ref data, startIndex, lastIndex, myThreadCount++)); 192 | } 193 | // Special case for the last thread 194 | uint lastStartIndex = (uint)((ThreadCount - 1) * flooredSegmentLength); 195 | Debug.WriteLine($"Last Start Index: {lastStartIndex}; Last Index: {data.Length}; Thread Count: {myThreadCount};"); 196 | comparisonTasks[ThreadCount - 1] = new Task(() => GetMatches(ref data, lastStartIndex, lastReadableMemoryAddress, myThreadCount++)); 197 | 198 | // Run all tasks 199 | foreach (var comparisonTask in comparisonTasks) 200 | { 201 | comparisonTask.Start(); 202 | } 203 | Task.WaitAll(comparisonTasks); 204 | return resultsDictionary; 205 | } 206 | 207 | public enum SCAN_TYPE 208 | { 209 | BYTE, 210 | SHORT, 211 | INTEGER, 212 | LONG, 213 | FLOAT, 214 | DOUBLE, 215 | } 216 | 217 | public delegate bool CompareFunction(byte[] v1, byte[] v2, MemoryScanner.SCAN_TYPE type); 218 | } 219 | } -------------------------------------------------------------------------------- /debugwatch/MemoryViewByteProvider.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.MemoryViewByteProvider 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using Be.Windows.Forms; 8 | using System; 9 | 10 | namespace debugwatch 11 | { 12 | public class MemoryViewByteProvider : IByteProvider 13 | { 14 | private bool _hasChanges; 15 | private ByteCollection _bytes; 16 | 17 | public MemoryViewByteProvider(byte[] data) 18 | : this(new ByteCollection(data)) 19 | { 20 | } 21 | 22 | public MemoryViewByteProvider(ByteCollection bytes) 23 | { 24 | this._bytes = bytes; 25 | } 26 | 27 | private void OnChanged(EventArgs e) 28 | { 29 | this._hasChanges = true; 30 | if (this.Changed == null) 31 | return; 32 | this.Changed((object) this, e); 33 | } 34 | 35 | private void OnLengthChanged(EventArgs e) 36 | { 37 | if (this.LengthChanged == null) 38 | return; 39 | this.LengthChanged((object) this, e); 40 | } 41 | 42 | public ByteCollection Bytes 43 | { 44 | get 45 | { 46 | return this._bytes; 47 | } 48 | } 49 | 50 | public bool HasChanges() 51 | { 52 | return this._hasChanges; 53 | } 54 | 55 | public void ApplyChanges() 56 | { 57 | this._hasChanges = false; 58 | } 59 | 60 | public event EventHandler Changed; 61 | 62 | public event EventHandler LengthChanged; 63 | 64 | public byte ReadByte(long index) 65 | { 66 | return this._bytes[(int) index]; 67 | } 68 | 69 | public void WriteByte(long index, byte value) 70 | { 71 | this._bytes[(int) index] = value; 72 | this.OnChanged(EventArgs.Empty); 73 | } 74 | 75 | public void DeleteBytes(long index, long length) 76 | { 77 | this._bytes.RemoveRange((int) Math.Max(0L, index), (int) Math.Min((long) (int) this.Length, length)); 78 | this.OnLengthChanged(EventArgs.Empty); 79 | this.OnChanged(EventArgs.Empty); 80 | } 81 | 82 | public void InsertBytes(long index, byte[] bs) 83 | { 84 | this._bytes.InsertRange((int) index, bs); 85 | this.OnLengthChanged(EventArgs.Empty); 86 | this.OnChanged(EventArgs.Empty); 87 | } 88 | 89 | public long Length 90 | { 91 | get 92 | { 93 | return (long) this._bytes.Count; 94 | } 95 | } 96 | 97 | public long Offset 98 | { 99 | get 100 | { 101 | return 0; 102 | } 103 | } 104 | 105 | public bool SupportsWriteByte() 106 | { 107 | return true; 108 | } 109 | 110 | public bool SupportsInsertBytes() 111 | { 112 | return false; 113 | } 114 | 115 | public bool SupportsDeleteBytes() 116 | { 117 | return false; 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /debugwatch/Program.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.Program 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System; 8 | using System.Windows.Forms; 9 | 10 | namespace debugwatch 11 | { 12 | internal static class Program 13 | { 14 | [STAThread] 15 | private static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run((Form) new DebugWatchForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /debugwatch/Properties/Resources.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.Properties.Resources 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System.CodeDom.Compiler; 8 | using System.ComponentModel; 9 | using System.Diagnostics; 10 | using System.Globalization; 11 | using System.Resources; 12 | using System.Runtime.CompilerServices; 13 | 14 | namespace debugwatch.Properties 15 | { 16 | [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 17 | [DebuggerNonUserCode] 18 | [CompilerGenerated] 19 | internal class Resources 20 | { 21 | private static ResourceManager resourceMan; 22 | private static CultureInfo resourceCulture; 23 | 24 | internal Resources() 25 | { 26 | } 27 | 28 | [EditorBrowsable(EditorBrowsableState.Advanced)] 29 | internal static ResourceManager ResourceManager 30 | { 31 | get 32 | { 33 | if (debugwatch.Properties.Resources.resourceMan == null) 34 | debugwatch.Properties.Resources.resourceMan = new ResourceManager("debugwatch.Properties.Resources", typeof (debugwatch.Properties.Resources).Assembly); 35 | return debugwatch.Properties.Resources.resourceMan; 36 | } 37 | } 38 | 39 | [EditorBrowsable(EditorBrowsableState.Advanced)] 40 | internal static CultureInfo Culture 41 | { 42 | get 43 | { 44 | return debugwatch.Properties.Resources.resourceCulture; 45 | } 46 | set 47 | { 48 | debugwatch.Properties.Resources.resourceCulture = value; 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /debugwatch/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /debugwatch/Properties/Settings.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.Properties.Settings 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System.CodeDom.Compiler; 8 | using System.Configuration; 9 | using System.Runtime.CompilerServices; 10 | 11 | namespace debugwatch.Properties 12 | { 13 | [CompilerGenerated] 14 | [GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 15 | internal sealed class Settings : ApplicationSettingsBase 16 | { 17 | private static Settings defaultInstance = (Settings) SettingsBase.Synchronized((SettingsBase) new Settings()); 18 | 19 | public static Settings Default 20 | { 21 | get 22 | { 23 | return Settings.defaultInstance; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /debugwatch/RichTextBoxExtensions.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.RichTextBoxExtensions 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System.Drawing; 8 | using System.Windows.Forms; 9 | 10 | namespace debugwatch 11 | { 12 | public static class RichTextBoxExtensions 13 | { 14 | public static void AppendText(this RichTextBox box, string text, Color color) 15 | { 16 | box.SelectionStart = box.TextLength; 17 | box.SelectionLength = 0; 18 | box.SelectionColor = color; 19 | box.AppendText(text); 20 | box.SelectionColor = box.ForeColor; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /debugwatch/Settings.cs: -------------------------------------------------------------------------------- 1 | // Decompiled with JetBrains decompiler 2 | // Type: debugwatch.Settings 3 | // Assembly: dbgw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 4 | // MVID: C42DB83B-FBD0-4471-97D2-F43102A97A5F 5 | // Assembly location: C:\Users\x\Downloads\PS4\debugwatch\dbgw\dbgw.exe 6 | 7 | using System.IO; 8 | 9 | namespace debugwatch 10 | { 11 | internal class Settings 12 | { 13 | private static readonly string SETTINGS_FILE = "settings.bin"; 14 | private static readonly int IP_INDEX = 0; 15 | private static readonly int HOSTIP_INDEX = 1; 16 | private static readonly int FILTER_INDEX = 2; 17 | 18 | private static void MakeDefaultSettings() 19 | { 20 | string[] contents = new string[3] 21 | { 22 | "1.1.1.1", 23 | "2.2.2.2", 24 | "false" 25 | }; 26 | File.WriteAllLines(Settings.SETTINGS_FILE, contents); 27 | } 28 | 29 | public static string ip 30 | { 31 | get 32 | { 33 | if (File.Exists(Settings.SETTINGS_FILE)) 34 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.IP_INDEX]; 35 | Settings.MakeDefaultSettings(); 36 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.IP_INDEX]; 37 | } 38 | set 39 | { 40 | string[] contents = File.ReadAllLines(Settings.SETTINGS_FILE); 41 | contents[Settings.IP_INDEX] = value; 42 | File.WriteAllLines(Settings.SETTINGS_FILE, contents); 43 | } 44 | } 45 | 46 | public static string hostip 47 | { 48 | get 49 | { 50 | if (File.Exists(Settings.SETTINGS_FILE)) 51 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.HOSTIP_INDEX]; 52 | Settings.MakeDefaultSettings(); 53 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.HOSTIP_INDEX]; 54 | } 55 | set 56 | { 57 | string[] contents = File.ReadAllLines(Settings.SETTINGS_FILE); 58 | contents[Settings.HOSTIP_INDEX] = value; 59 | File.WriteAllLines(Settings.SETTINGS_FILE, contents); 60 | } 61 | } 62 | 63 | public static bool filter 64 | { 65 | get 66 | { 67 | if (File.Exists(Settings.SETTINGS_FILE)) 68 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.FILTER_INDEX] == "true"; 69 | Settings.MakeDefaultSettings(); 70 | return File.ReadAllLines(Settings.SETTINGS_FILE)[Settings.FILTER_INDEX] == "true"; 71 | } 72 | set 73 | { 74 | string[] contents = File.ReadAllLines(Settings.SETTINGS_FILE); 75 | contents[Settings.FILTER_INDEX] = value ? "true" : "false"; 76 | File.WriteAllLines(Settings.SETTINGS_FILE, contents); 77 | } 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /lib/Be.Windows.Forms.HexBox.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withmetta/ps4-debug-watch/fc8d91241036ab14dbf3907b11be6dc76e6a29da/lib/Be.Windows.Forms.HexBox.dll -------------------------------------------------------------------------------- /lib/SharpDisasm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withmetta/ps4-debug-watch/fc8d91241036ab14dbf3907b11be6dc76e6a29da/lib/SharpDisasm.dll -------------------------------------------------------------------------------- /lib/libdebug.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/withmetta/ps4-debug-watch/fc8d91241036ab14dbf3907b11be6dc76e6a29da/lib/libdebug.dll --------------------------------------------------------------------------------