From 332368d755ed3bc657e96e1f5ee03307e073c5b4 Mon Sep 17 00:00:00 2001 From: Styris Date: Wed, 29 Mar 2023 03:39:04 -0700 Subject: [PATCH] Start --- .../.idea/workspace.xml | 67 +++ .../.idea.ame_upgrade_script/.idea/.name | 1 + .../.idea/encodings.xml | 4 + .../.idea/indexLayout.xml | 8 + .../.idea/projectSettingsUpdater.xml | 6 + .../.idea/workspace.xml | 67 +++ src/ame-upgrade-script/ConsoleTUI.cs | 289 ++++++++++ src/ame-upgrade-script/NSudo.cs | 510 ++++++++++++++++++ src/ame-upgrade-script/ParentProcess.cs | 74 +++ src/ame-upgrade-script/Program.cs | 264 +++++++++ .../Properties/AssemblyInfo.cs | 35 ++ src/ame-upgrade-script/Registry.cs | 375 +++++++++++++ .../ame-upgrade-script.csproj | 70 +++ src/ame-upgrade-script/app.manifest | 10 + .../Debug/ame_upgrade_preparation_tool.exe | Bin 0 -> 60416 bytes .../Debug/ame_upgrade_preparation_tool.pdb | Bin 0 -> 34304 bytes .../bin/Release/Capture.PNG | Bin 0 -> 28059 bytes .../bin/Release/ame_upgrade_script.exe | Bin 0 -> 82944 bytes .../Release/windows-setup-requirements.PNG | Bin 0 -> 25789 bytes src/ame-upgrade-script/console.ico | Bin 0 -> 43006 bytes ...ework,Version=v4.7.2.AssemblyAttributes.cs | 4 + ...ration-tool.csproj.AssemblyReference.cache | Bin 0 -> 792 bytes ...ration-tool.csproj.CoreCompileInputs.cache | 1 + ...eparation-tool.csproj.FileListAbsolute.txt | 7 + ...ool.csproj.SuggestedBindingRedirects.cache | 0 .../Debug/ame_upgrade_preparation_tool.exe | Bin 0 -> 60416 bytes .../Debug/ame_upgrade_preparation_tool.pdb | Bin 0 -> 34304 bytes ...ework,Version=v4.7.2.AssemblyAttributes.cs | 4 + ...ration-tool.csproj.AssemblyReference.cache | Bin 0 -> 792 bytes ...ration-tool.csproj.CoreCompileInputs.cache | 1 + ...eparation-tool.csproj.FileListAbsolute.txt | 5 + ...ool.csproj.SuggestedBindingRedirects.cache | 0 .../obj/Release/ame_upgrade_script.exe | Bin 0 -> 82944 bytes src/ame_upgrade_script.sln | 16 + 34 files changed, 1818 insertions(+) create mode 100644 src/ame-upgrade-script/.idea/.idea.ame-upgrade-preparation-tool/.idea/workspace.xml create mode 100644 src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/.name create mode 100644 src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/encodings.xml create mode 100644 src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/indexLayout.xml create mode 100644 src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/projectSettingsUpdater.xml create mode 100644 src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/workspace.xml create mode 100644 src/ame-upgrade-script/ConsoleTUI.cs create mode 100644 src/ame-upgrade-script/NSudo.cs create mode 100644 src/ame-upgrade-script/ParentProcess.cs create mode 100644 src/ame-upgrade-script/Program.cs create mode 100644 src/ame-upgrade-script/Properties/AssemblyInfo.cs create mode 100644 src/ame-upgrade-script/Registry.cs create mode 100644 src/ame-upgrade-script/ame-upgrade-script.csproj create mode 100644 src/ame-upgrade-script/app.manifest create mode 100644 src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.exe create mode 100644 src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.pdb create mode 100644 src/ame-upgrade-script/bin/Release/Capture.PNG create mode 100644 src/ame-upgrade-script/bin/Release/ame_upgrade_script.exe create mode 100644 src/ame-upgrade-script/bin/Release/windows-setup-requirements.PNG create mode 100644 src/ame-upgrade-script/console.ico create mode 100644 src/ame-upgrade-script/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs create mode 100644 src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache create mode 100644 src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.CoreCompileInputs.cache create mode 100644 src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.FileListAbsolute.txt create mode 100644 src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.SuggestedBindingRedirects.cache create mode 100644 src/ame-upgrade-script/obj/Debug/ame_upgrade_preparation_tool.exe create mode 100644 src/ame-upgrade-script/obj/Debug/ame_upgrade_preparation_tool.pdb create mode 100644 src/ame-upgrade-script/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs create mode 100644 src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache create mode 100644 src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.CoreCompileInputs.cache create mode 100644 src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.FileListAbsolute.txt create mode 100644 src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.SuggestedBindingRedirects.cache create mode 100644 src/ame-upgrade-script/obj/Release/ame_upgrade_script.exe create mode 100644 src/ame_upgrade_script.sln diff --git a/src/ame-upgrade-script/.idea/.idea.ame-upgrade-preparation-tool/.idea/workspace.xml b/src/ame-upgrade-script/.idea/.idea.ame-upgrade-preparation-tool/.idea/workspace.xml new file mode 100644 index 0000000..804e512 --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame-upgrade-preparation-tool/.idea/workspace.xml @@ -0,0 +1,67 @@ + + + + ame-upgrade-preparation-tool/ame-upgrade-preparation-tool.csproj + + + + + + + + + + + + + + + + + + + 1680046494161 + + + + + + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/.name b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/.name new file mode 100644 index 0000000..7b014b5 --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/.name @@ -0,0 +1 @@ +ame_upgrade_script \ No newline at end of file diff --git a/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/encodings.xml b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/indexLayout.xml b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/projectSettingsUpdater.xml b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/projectSettingsUpdater.xml new file mode 100644 index 0000000..4bb9f4d --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/projectSettingsUpdater.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/workspace.xml b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/workspace.xml new file mode 100644 index 0000000..a6b7f4a --- /dev/null +++ b/src/ame-upgrade-script/.idea/.idea.ame_upgrade_script/.idea/workspace.xml @@ -0,0 +1,67 @@ + + + + ame-upgrade-preparation-tool/ame-upgrade-preparation-tool.csproj + + + + + + + + + + + + + + + + + + + 1680046494161 + + + + + + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/ConsoleTUI.cs b/src/ame-upgrade-script/ConsoleTUI.cs new file mode 100644 index 0000000..80d9ca6 --- /dev/null +++ b/src/ame-upgrade-script/ConsoleTUI.cs @@ -0,0 +1,289 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace Ameliorated.ConsoleUtils +{ + public static partial class ConsoleTUI + { + private const int MF_BYCOMMAND = 0x00000000; + private const int SC_CLOSE = 0xF060; + private const int SC_MINIMIZE = 0xF020; + private const int SC_MAXIMIZE = 0xF030; + private const int SC_SIZE = 0xF000; //resize + + private const uint CHECK_QUICK_EDIT = 0x0040; + private const int ENABLE_QUICK_EDIT = 0x40 | 0x80; + + // STD_INPUT_HANDLE (DWORD): -10 is the standard input device. + private const int STD_INPUT_HANDLE = -10; + private static string PreviousTitle; + private static int PreviousBufferHeight = 26; + private static int PreviousBufferWidth = 80; + private static int PreviousSizeHeight = 26; + private static int PreviousSizeWidth = 80; + + private static bool IsInitialized; + private static int InitializedWidth = 80; + + public static void ShowErrorBox(string message, string caption) + { + NativeWindow window = new NativeWindow(); + window.AssignHandle(Process.GetCurrentProcess().MainWindowHandle); + MessageBox.Show(window, message, caption, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + public enum BackdropType + { + None = 1, + Mica = 2, + Acrylic = 3, + Tabbed = 4 + } + public static readonly int WinVer = Int32.Parse(Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue("CurrentBuildNumber").ToString()); + [DllImport("dwmapi.dll")] + private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attribute, ref int pvAttribute, int cbAttribute); + + public static void Initialize(string title, int width = 80, int height = 26, bool resize = false, bool quickedit = false) + { + if (width < 2) throw new ArgumentException("Width must be greater than one."); + + IsInitialized = true; + PreviousSizeHeight = Console.WindowHeight; + PreviousSizeWidth = Console.WindowWidth; + PreviousBufferHeight = Console.BufferHeight; + PreviousBufferWidth = Console.BufferWidth; + + Console.SetWindowSize(width, height); + Console.SetBufferSize(width, height); + Console.SetWindowSize(width, height); + + InitializedWidth = width; + + Console.Clear(); + + Console.CursorVisible = false; + + PreviousTitle = Console.Title; + Console.Title = title; + + try + { + if ((Console.CursorLeft == 0 && Console.CursorTop == 0) || ParentProcess.ProcessName.Equals("Explorer", StringComparison.OrdinalIgnoreCase)) + { + var bd = (int)BackdropType.Mica; + var trueA = 0x01; + + if (WinVer >= 22523) + { + var handle = Process.GetCurrentProcess().MainWindowHandle; + DwmSetWindowAttribute(handle, 38, ref bd, Marshal.SizeOf()); + DwmSetWindowAttribute(handle, 20, ref trueA, Marshal.SizeOf()); + } + } + } catch (Exception e) { } + + if (!resize) + try + { + DisableResize(); + } catch (Exception e) + { + //ConsoleUtils.WriteError("Error disabling window resize - " + e.Message); + } + + if (!quickedit) + try + { + DisableQuickEdit(); + } catch (Exception e) + { + //ConsoleUtils.WriteError("Error disabling quickedit - " + e.Message); + } + } + + public static void Close() + { + if (!IsInitialized) throw new MethodAccessException("Console TUI must be initialized before calling other TUI functions."); + IsInitialized = false; + + var parent = ParentProcess.ProcessName; + if (parent.Equals("Explorer", StringComparison.CurrentCultureIgnoreCase)) return; + + try + { + EnableResize(); + } catch (Exception e) + { + //ConsoleUtils.WriteError("Error enabling window resize - " + e.Message); + } + + try + { + EnableQuickEdit(); + } catch (Exception e) + { + //ConsoleUtils.WriteError("Error enabling quickedit - " + e.Message); + } + + Console.CursorVisible = true; + Console.Clear(); + Console.Title = PreviousTitle; + + Console.SetWindowSize(PreviousSizeWidth, PreviousSizeHeight); + Console.SetBufferSize(PreviousBufferWidth, PreviousBufferHeight); + } + + [DllImport("user32.dll")] + public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags); + + [DllImport("user32.dll")] + private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); + + [DllImport("kernel32.dll", ExactSpelling = true)] + private static extern IntPtr GetConsoleWindow(); + + private static void DisableResize() + { + var handle = GetConsoleWindow(); + var sysMenu = GetSystemMenu(handle, false); + + if (handle != IntPtr.Zero) + { + //DeleteMenu(sysMenu, SC_CLOSE, MF_BYCOMMAND); + //DeleteMenu(sysMenu, SC_MINIMIZE, MF_BYCOMMAND); + DeleteMenu(sysMenu, SC_MAXIMIZE, MF_BYCOMMAND); + DeleteMenu(sysMenu, SC_SIZE, MF_BYCOMMAND); //resize + } + } + + private static void EnableResize() + { + var handle = GetConsoleWindow(); + GetSystemMenu(handle, true); + } + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr GetStdHandle(int nStdHandle); + + [DllImport("kernel32.dll")] + private static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode); + + [DllImport("kernel32.dll")] + private static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode); + + private static void DisableQuickEdit() + { + var consoleHandle = GetStdHandle(STD_INPUT_HANDLE); + + // get current console mode + uint consoleMode; + GetConsoleMode(consoleHandle, out consoleMode); + + // set the new mode + SetConsoleMode(consoleHandle, consoleMode &= ~CHECK_QUICK_EDIT); + } + + private static void EnableQuickEdit() + { + var consoleHandle = GetStdHandle(STD_INPUT_HANDLE); + + // get current console mode + uint consoleMode; + GetConsoleMode(consoleHandle, out consoleMode); + + // set the new mode + SetConsoleMode(consoleHandle, consoleMode | ENABLE_QUICK_EDIT); + } + } + + + + public class ChoicePrompt : Prompt + { + public string Choices { get; set; } = "YN"; + public bool BeepSound { get; set; } = true; + public bool CaseSensitive { get; set; } = false; + public bool AllowEscape { get; set; } = true; + public bool AnyKey { get; set; } = false; + + public ConsoleColor? TextForeground { get; set; } + + private bool _bindToOpenFrame; + + + public new int? Start() + { + if (Choices.Length < 1 && !AnyKey) throw new ArgumentException("There must be at least 1 choice."); + + Console.Write(Text); + + var cursorVisibility = Console.CursorVisible; + int? result; + + while (true) + { + Console.CursorVisible = true; + var key = Console.ReadKey(true); + if (AnyKey) + { + Console.CursorVisible = cursorVisibility; + return key.KeyChar; + } + + if (key.Key == ConsoleKey.Escape && AllowEscape) + { + Console.CursorVisible = cursorVisibility; + return null; + } + + if (CaseSensitive) + result = Choices.IndexOf(key.KeyChar.ToString(), StringComparison.Ordinal); + else + result = Choices.IndexOf(key.KeyChar.ToString(), StringComparison.OrdinalIgnoreCase); + + if (result >= 0) + { + + + if (!CaseSensitive) Console.Write(key.KeyChar.ToString().ToUpper()); + else Console.Write(key.KeyChar.ToString()); + + break; + } + else if (BeepSound) Console.Beep(); + } + + Console.CursorVisible = cursorVisibility; + Console.WriteLine(); + + return result.Value; + } + } + + + public abstract class Prompt + { + /// + /// Text to be displayed before the input. + /// + + public string Text { get; set; } = ""; + + public int? MaxLength { get; set; } + + /// + /// (Optional) + /// + + public ConsoleColor? InputForeground { get; set; } = null; + + public ConsoleColor? InputBackground { get; set; } = null; + + public bool BindToOpenFrame { get; set; } = true; + public bool AllowEscape { get; set; } = true; + + } +} \ No newline at end of file diff --git a/src/ame-upgrade-script/NSudo.cs b/src/ame-upgrade-script/NSudo.cs new file mode 100644 index 0000000..0c51c2a --- /dev/null +++ b/src/ame-upgrade-script/NSudo.cs @@ -0,0 +1,510 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.ConstrainedExecution; +using System.Runtime.InteropServices; +using System.Security; +using System.Security.Principal; +using System.Threading; +using Microsoft.Win32.SafeHandles; + +namespace amecs +{ + [StructLayout(LayoutKind.Sequential)] + + public class NSudo + { + private struct SECURITY_ATTRIBUTES + { + public int nLength; + public unsafe byte* lpSecurityDescriptor; + public int bInheritHandle; + } + private enum SECURITY_IMPERSONATION_LEVEL + { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation + } + private enum TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation + } + + [StructLayout(LayoutKind.Sequential)] + private struct LUID { + public uint LowPart; + public uint HighPart; + } + [StructLayout(LayoutKind.Sequential, Pack = 4)] + private struct LUID_AND_ATTRIBUTES { + public LUID Luid; + public UInt32 Attributes; + } + + private struct TOKEN_PRIVILEGES { + public int PrivilegeCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst=1)] + public LUID_AND_ATTRIBUTES[] Privileges; + } + + + private static UInt32 MAXIMUM_ALLOWED = (UInt32)TokenAccessLevels.MaximumAllowed; + + [DllImport("advapi32.dll", SetLastError=true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool OpenProcessToken(IntPtr ProcessHandle, + UInt32 DesiredAccess, out IntPtr TokenHandle); + + [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)] + private static extern bool DuplicateTokenEx( + IntPtr hExistingToken, + uint dwDesiredAccess, + IntPtr lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + out IntPtr phNewToken ); + [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)] + private static extern bool DuplicateTokenEx( + IntPtr hExistingToken, + uint dwDesiredAccess, + ref SECURITY_ATTRIBUTES lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + out IntPtr phNewToken ); + [DllImport("advapi32.dll")] + static extern bool LookupPrivilegeValue(IntPtr lpSystemName, string lpName, + ref LUID lpLuid); + internal const int SE_PRIVILEGE_ENABLED = 0x00000002; + + // Use this signature if you do not want the previous state + [DllImport("advapi32.dll", SetLastError=true)] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, + [MarshalAs(UnmanagedType.Bool)]bool DisableAllPrivileges, + ref TOKEN_PRIVILEGES NewState, + UInt32 Zero, + IntPtr Null1, + IntPtr Null2); + + [System.Runtime.InteropServices.DllImport("advapi32.dll", SetLastError = true)] + private static extern bool SetThreadToken(IntPtr pHandle, + IntPtr hToken); + + + + + [DllImport("wtsapi32.dll", SetLastError=true)] + static extern bool WTSQueryUserToken(UInt32 sessionId, out IntPtr Token); + + [DllImport("advapi32.dll", SetLastError = true)] + static extern Boolean SetTokenInformation(IntPtr TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, + ref UInt32 TokenInformation, UInt32 TokenInformationLength); + + + [DllImport("userenv.dll", SetLastError=true)] + static extern bool CreateEnvironmentBlock(out IntPtr lpEnvironment, IntPtr hToken, bool bInherit ); + public static bool GetUserPrivilege(IntPtr Token) + { + IntPtr NewToken; + DuplicateTokenEx(Token, MAXIMUM_ALLOWED, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TOKEN_TYPE.TokenImpersonation, out NewToken); + SetThreadToken(IntPtr.Zero, NewToken); + return true; + } + + [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] + static extern bool CreateProcessAsUser( + IntPtr hToken, + string lpApplicationName, + string lpCommandLine, + ref SECURITY_ATTRIBUTES lpProcessAttributes, + ref SECURITY_ATTRIBUTES lpThreadAttributes, + bool bInheritHandles, + uint dwCreationFlags, + IntPtr lpEnvironment, + string lpCurrentDirectory, + ref STARTUPINFO lpStartupInfo, + out PROCESS_INFORMATION lpProcessInformation); + + [Flags] + enum CreationFlags + { + CREATE_SUSPENDED = 0x00000004, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + CREATE_NO_WINDOW = 0x08000000, + CREATE_NEW_CONSOLE = 0x00000010 + } + [DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static extern bool LogonUser( + [MarshalAs(UnmanagedType.LPStr)] string pszUserName, + [MarshalAs(UnmanagedType.LPStr)] string pszDomain, + [MarshalAs(UnmanagedType.LPStr)] string pszPassword, + int dwLogonType, + int dwLogonProvider, + ref IntPtr phToken); + + public static int? RunProcessAsUser(IntPtr Token, string Executable, string Arguments, uint timeout = 0xFFFFFFFF) + { + GetAssignPrivilege(); + GetQuotaPrivilege(); + + var startupInfo = new STARTUPINFO(); + startupInfo.cb = Marshal.SizeOf(startupInfo); + startupInfo.dwFlags = 0x00000001; + startupInfo.wShowWindow = 1; + + + var procAttrs = new SECURITY_ATTRIBUTES(); + var threadAttrs = new SECURITY_ATTRIBUTES(); + procAttrs.nLength = Marshal.SizeOf(procAttrs); + threadAttrs.nLength = Marshal.SizeOf(threadAttrs); + + // Log on user temporarily in order to start console process in its security context. + var hUserTokenDuplicate = IntPtr.Zero; + var pEnvironmentBlock = IntPtr.Zero; + + DuplicateTokenEx(Token, MAXIMUM_ALLOWED, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityIdentification, TOKEN_TYPE.TokenPrimary, out hUserTokenDuplicate); + + CreateEnvironmentBlock(out pEnvironmentBlock, Token, false); + + PROCESS_INFORMATION _processInfo; + if (!CreateProcessAsUser(hUserTokenDuplicate, null, String.IsNullOrEmpty(Arguments) ? $"\"{Executable}\"" : $"\"{Executable}\" {Arguments}", + ref procAttrs, ref threadAttrs, false, (uint)CreationFlags.CREATE_NO_WINDOW | + (uint)CreationFlags.CREATE_UNICODE_ENVIRONMENT, + pEnvironmentBlock, null, ref startupInfo, out _processInfo)) return null; + + + + return 0; + /* + uint dwCreationFlags = (uint)CreationFlags.CREATE_UNICODE_ENVIRONMENT; + + + startupInfo.cb = Marshal.SizeOf(startupInfo); + + + + SECURITY_ATTRIBUTES throwaway = new SECURITY_ATTRIBUTES(); + SECURITY_ATTRIBUTES throwaway2 = new SECURITY_ATTRIBUTES(); + Console.WriteLine(Marshal.GetLastWin32Error() + "-3"); + + Console.WriteLine(CreateProcessAsUser(hUserToken, String.Empty, "\"C:\\Windows\\notepad.exe\"", ref throwaway, ref throwaway2, false, 0, IntPtr.Zero, String.Empty, ref StartupInfo, out ProcessInfo)); + Console.WriteLine(Marshal.GetLastWin32Error() + "-4"); + + return Process.GetProcessById(ProcessInfo.dwProcessId); + */ + } + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode); + [DllImport("kernel32.dll", SetLastError=true)] + static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + struct STARTUPINFO + { + public Int32 cb; + public IntPtr lpReserved; + + public IntPtr lpDesktop; + public IntPtr lpTitle; + public Int32 dwX; + public Int32 dwY; + public Int32 dwXSize; + public Int32 dwYSize; + public Int32 dwXCountChars; + public Int32 dwYCountChars; + public Int32 dwFillAttribute; + public Int32 dwFlags; + public Int16 wShowWindow; + public Int16 cbReserved2; + public IntPtr lpReserved2; + public IntPtr hStdInput; + public IntPtr hStdOutput; + public IntPtr hStdError; + } + [StructLayout(LayoutKind.Sequential)] + internal struct PROCESS_INFORMATION + { + public IntPtr hProcess; + public IntPtr hThread; + public int dwProcessId; + public int dwThreadId; + } + public static IntPtr GetUserToken() + { + IntPtr Token; + + WTSQueryUserToken((uint)SessionID, out Token); + return Token; + } + + private static int SessionID = -1; + public static bool GetSystemPrivilege() + { + IntPtr CurrentProcessToken; + OpenProcessToken(Process.GetCurrentProcess().Handle, MAXIMUM_ALLOWED, out CurrentProcessToken); + IntPtr DuplicatedCurrentProcessToken; + DuplicateTokenEx(CurrentProcessToken, MAXIMUM_ALLOWED, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TOKEN_TYPE.TokenImpersonation, out DuplicatedCurrentProcessToken); + LUID_AND_ATTRIBUTES RawPrivilege = new LUID_AND_ATTRIBUTES(); + LookupPrivilegeValue(IntPtr.Zero, "SeDebugPrivilege", ref RawPrivilege.Luid); + RawPrivilege.Attributes = SE_PRIVILEGE_ENABLED; + + TOKEN_PRIVILEGES TokenPrivilege = new TOKEN_PRIVILEGES(); + TokenPrivilege.Privileges = new LUID_AND_ATTRIBUTES[] { RawPrivilege }; + TokenPrivilege.PrivilegeCount = 1; + AdjustTokenPrivileges(DuplicatedCurrentProcessToken, false, ref TokenPrivilege, 0, IntPtr.Zero, IntPtr.Zero); + + SetThreadToken(IntPtr.Zero, DuplicatedCurrentProcessToken); + + SessionID = GetActiveSession(); + + IntPtr OriginalProcessToken = new IntPtr(-1); + CreateSystemToken((int)MAXIMUM_ALLOWED, SessionID, ref OriginalProcessToken); + + IntPtr SystemToken; + DuplicateTokenEx(OriginalProcessToken, MAXIMUM_ALLOWED, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TOKEN_TYPE.TokenImpersonation, out SystemToken); + + SetThreadToken(IntPtr.Zero, SystemToken); + + return true; + } + + [DllImport("advapi32.dll", SetLastError=true)] + static extern bool GetTokenInformation( + IntPtr TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + IntPtr TokenInformation, + int TokenInformationLength, + out int ReturnLength); + + enum TOKEN_INFORMATION_CLASS + { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin + } + + private static int GetActiveSession() + { + IntPtr pSessionInfo = IntPtr.Zero; + Int32 Count = 0; + var retval = WTSEnumerateSessions((IntPtr)null, 0, 1, ref pSessionInfo, ref Count); + Int32 dataSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO)); + + Int64 current = (Int64)pSessionInfo; + + int result = -1; + if (retval != 0) + { + for (int i = 0; i < Count; i++) + { + WTS_SESSION_INFO si = (WTS_SESSION_INFO)Marshal.PtrToStructure((System.IntPtr)current, typeof(WTS_SESSION_INFO)); + current += dataSize; + + if (si.State == WTS_CONNECTSTATE_CLASS.WTSActive) + { + result = si.SessionID; + break; + } + } + WTSFreeMemory(pSessionInfo); + } + + return result; + } + + private static void CreateSystemToken(int DesiredAccess, int dwSessionID, ref IntPtr TokenHandle) + { + int dwLsassPID = -1; + int dwWinLogonPID = -1; + WTS_PROCESS_INFO[] pProcesses; + IntPtr pProcessInfo = IntPtr.Zero; + + int dwProcessCount = 0; + + if (WTSEnumerateProcesses((IntPtr)null, 0, 1, ref pProcessInfo, ref dwProcessCount)) + { + IntPtr pMemory = pProcessInfo; + pProcesses = new WTS_PROCESS_INFO[dwProcessCount]; + + for (int i = 0; i < dwProcessCount; i++) + { + pProcesses[i] = (WTS_PROCESS_INFO)Marshal.PtrToStructure(pProcessInfo, typeof(WTS_PROCESS_INFO)); + pProcessInfo = (IntPtr)((long)pProcessInfo + Marshal.SizeOf(pProcesses[i])); + + var processName = Marshal.PtrToStringAnsi(pProcesses[i].ProcessName); + ConvertSidToStringSid(pProcesses[i].UserSid, out string sid); + + string strSid; + + if (processName == null || pProcesses[i].UserSid == default || sid != "S-1-5-18") + continue; + + if ((-1 == dwLsassPID) && (0 == pProcesses[i].SessionID) && (processName == "lsass.exe")) + { + dwLsassPID = pProcesses[i].ProcessID; + continue; + } + + if ((-1 == dwWinLogonPID) && (dwSessionID == pProcesses[i].SessionID) && (processName == "winlogon.exe")) + { + dwWinLogonPID = pProcesses[i].ProcessID; + continue; + } + } + + WTSFreeMemory(pMemory); + } + + bool Result = false; + + IntPtr SystemProcessHandle = IntPtr.Zero; + + + try + { + SystemProcessHandle = Process.GetProcessById(dwLsassPID).Handle; + } catch + { + SystemProcessHandle = Process.GetProcessById(dwWinLogonPID).Handle; + } + IntPtr SystemTokenHandle = IntPtr.Zero; + if (OpenProcessToken(SystemProcessHandle, TOKEN_DUPLICATE, out SystemTokenHandle)) + { + Result = DuplicateTokenEx(SystemTokenHandle, (uint)DesiredAccess, IntPtr.Zero, SECURITY_IMPERSONATION_LEVEL.SecurityIdentification, TOKEN_TYPE.TokenPrimary, out TokenHandle); + CloseHandle(SystemTokenHandle); + } + + CloseHandle(SystemProcessHandle); + + // return Result; + return; + } + + [DllImport("kernel32.dll", SetLastError = true)] + public static extern IntPtr OpenProcess( + uint processAccess, + bool bInheritHandle, + uint processId + ); + public const UInt32 TOKEN_DUPLICATE = 0x0002; + + [DllImport("advapi32", CharSet = CharSet.Auto, SetLastError = true)] + static extern bool ConvertSidToStringSid(IntPtr pSid, out string strSid); + + + [DllImport("kernel32.dll", SetLastError=true)] + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] + [SuppressUnmanagedCodeSecurity] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool CloseHandle(IntPtr hObject); + + [DllImport("wtsapi32.dll", SetLastError=true)] + static extern int WTSEnumerateSessions( + System.IntPtr hServer, + int Reserved, + int Version, + ref System.IntPtr ppSessionInfo, + ref int pCount); + + + [StructLayout(LayoutKind.Sequential)] + private struct WTS_SESSION_INFO + { + public Int32 SessionID; + + [MarshalAs(UnmanagedType.LPStr)] + public String pWinStationName; + + public WTS_CONNECTSTATE_CLASS State; + } + public enum WTS_CONNECTSTATE_CLASS + { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit + } + [DllImport("wtsapi32.dll")] + static extern void WTSFreeMemory(IntPtr pMemory); + + [DllImport("wtsapi32.dll", SetLastError=true)] + static extern bool WTSEnumerateProcesses( + IntPtr serverHandle, // Handle to a terminal server. + Int32 reserved, // must be 0 + Int32 version, // must be 1 + ref IntPtr ppProcessInfo, // pointer to array of WTS_PROCESS_INFO + ref Int32 pCount // pointer to number of processes + ); + struct WTS_PROCESS_INFO + { + public int SessionID; + public int ProcessID; + //This is a pointer to string... + public IntPtr ProcessName; + public IntPtr UserSid; + } + + + + [DllImport("ntdll.dll", SetLastError = true)] + static extern IntPtr RtlAdjustPrivilege(int Privilege, bool bEnablePrivilege, bool IsThreadPrivilege, out bool PreviousValue); + [DllImport("advapi32.dll")] + static extern bool LookupPrivilegeValue(IntPtr lpSystemName, string lpName, ref UInt64 lpLuid); + public static void GetOwnershipPrivilege() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeTakeOwnershipPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + } + public static void GetAssignPrivilege() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeAssignPrimaryTokenPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + } + public static void GetQuotaPrivilege() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeIncreaseQuotaPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + } + + public static void GetShutdownPrivilege() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeShutdownPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + } + + public class Win32 { + + } + } +} \ No newline at end of file diff --git a/src/ame-upgrade-script/ParentProcess.cs b/src/ame-upgrade-script/ParentProcess.cs new file mode 100644 index 0000000..b9cbe29 --- /dev/null +++ b/src/ame-upgrade-script/ParentProcess.cs @@ -0,0 +1,74 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; + +namespace Ameliorated.ConsoleUtils +{ + public static class ParentProcess + { + private static readonly uint TH32CS_SNAPPROCESS = 2; + + public static string ProcessName = Get().ProcessName; + + public static Process Get() + { + try + { + var iParentPid = 0; + var iCurrentPid = Process.GetCurrentProcess().Id; + + var oHnd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + + if (oHnd == IntPtr.Zero) + return null; + + var oProcInfo = new PROCESSENTRY32(); + + oProcInfo.dwSize = + (uint)Marshal.SizeOf(typeof(PROCESSENTRY32)); + + if (Process32First(oHnd, ref oProcInfo) == false) + return null; + + do + { + if (iCurrentPid == oProcInfo.th32ProcessID) + iParentPid = (int)oProcInfo.th32ParentProcessID; + } while (iParentPid == 0 && Process32Next(oHnd, ref oProcInfo)); + + if (iParentPid > 0) + return Process.GetProcessById(iParentPid); + return null; + } catch (Exception e) + { + return null; + } + } + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr CreateToolhelp32Snapshot(uint dwFlags, uint th32ProcessID); + + [DllImport("kernel32.dll")] + private static extern bool Process32First(IntPtr hSnapshot, ref PROCESSENTRY32 lppe); + + [DllImport("kernel32.dll")] + private static extern bool Process32Next(IntPtr hSnapshot, ref PROCESSENTRY32 lppe); + + [StructLayout(LayoutKind.Sequential)] + public struct PROCESSENTRY32 + { + public uint dwSize; + public uint cntUsage; + public uint th32ProcessID; + public IntPtr th32DefaultHeapID; + public uint th32ModuleID; + public uint cntThreads; + public uint th32ParentProcessID; + public int pcPriClassBase; + public uint dwFlags; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string szExeFile; + } + } +} \ No newline at end of file diff --git a/src/ame-upgrade-script/Program.cs b/src/ame-upgrade-script/Program.cs new file mode 100644 index 0000000..6504bda --- /dev/null +++ b/src/ame-upgrade-script/Program.cs @@ -0,0 +1,264 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security.AccessControl; +using System.Security.Principal; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using amecs; +using Ameliorated.ConsoleUtils; +using Microsoft.Win32; + +namespace ame_upgrade_preparation_tool +{ + internal class Program + { + private static void RunAsUser(Action action) + { + var token = NSudo.GetUserToken(); + Task.Run((Action)Delegate.Combine((Action)(() => { NSudo.GetUserPrivilege(token); }), + action)).Wait(); + Marshal.FreeHGlobal(token); + } + public static async Task Main(string[] args) + { + ConsoleTUI.Initialize("AME Upgrade Script"); + + Console.WriteLine("\r\nChecking drives..."); + + var drives = DriveInfo.GetDrives(); + + List driveLetters = new List(); + foreach (var drive in drives) + { + try + { + if (Directory.GetFiles(drive.RootDirectory.FullName).Contains(Path.Combine(drive.RootDirectory.FullName, "setup.exe")) && Directory.GetDirectories(drive.RootDirectory.FullName).Contains(Path.Combine(drive.RootDirectory.FullName, "sources"))) + { + try + { + string extension = Directory.GetFiles(Path.Combine(drive.RootDirectory.FullName, "sources")).Contains(Path.Combine(drive.RootDirectory.FullName, "sources", "install.wim")) ? ".wim" : Directory.GetFiles(Path.Combine(drive.RootDirectory.FullName, "sources")).Contains(Path.Combine(drive.RootDirectory.FullName, "sources", "install.esd")) ? ".esd" : null; + + if (string.IsNullOrEmpty(extension)) + continue; + /* + var startInfo = new ProcessStartInfo + { + CreateNoWindow = true, + UseShellExecute = false, + WindowStyle = ProcessWindowStyle.Normal, + RedirectStandardError = true, + RedirectStandardOutput = true, + FileName = "DISM", + Arguments = "/Get-WimInfo /WimFile:\"" + Path.Combine(drive.RootDirectory.FullName, "sources", "install" + extension) + '"' + }; + + var exeProcess = new Process + { + StartInfo = startInfo, + EnableRaisingEvents = true + }; + string versionString = null; + bool Win11 = false; + exeProcess.OutputDataReceived += delegate(object sender, DataReceivedEventArgs outLine) + { + if (!String.IsNullOrEmpty(outLine.Data)) + { + var outputString = outLine.Data; + if (outputString.Contains("Version: ")) + { + versionString = outputString.Substring(outputString.IndexOf(' ') + 1); + } + else if (outputString.Contains("Windows 11")) + { + Win11 = true; + } + } + }; + exeProcess.Start(); + + exeProcess.BeginOutputReadLine(); + bool exited = exeProcess.WaitForExit(5000); + + exeProcess.CancelOutputRead(); + + if (versionString == null) + { + await Task.Delay(500); + } + */ + driveLetters.Add(drive.RootDirectory.FullName); + } catch (Exception e) + { + driveLetters.Add(drive.RootDirectory.FullName); + } + } + } catch + { + + } + } + + if (driveLetters.Count < 1) + { + Console.WriteLine("No mounted Windows ISO was detected.\r\n"); + new ChoicePrompt() { Text = "Press any key to Exit...", AnyKey = true}.Start(); + Environment.Exit(0); + } + + if (driveLetters.Count > 1) + { + Console.WriteLine("Multiple ISOs detected, please dismount one.\r\n"); + new ChoicePrompt() { Text = "Press any key to Exit...", AnyKey = true}.Start(); + Environment.Exit(0); + } + + var choice = new ChoicePrompt() { AllowEscape = false, Text = "\r\nThis will cause partial de-amelioration. Continue? (Y/N): " }.Start(); + + if (choice.Value == 2) + Environment.Exit(0); + + string Username = null; + string UserDomain = null; + string UserSID = null; + try + { + NSudo.GetSystemPrivilege(); + + RunAsUser(() => + { + Username = WindowsIdentity.GetCurrent().Name.Split('\\').Last(); + UserDomain = WindowsIdentity.GetCurrent().Name.Split('\\').FirstOrDefault(); + UserSID = WindowsIdentity.GetCurrent().User.ToString(); + }); + } catch (Exception e) + { + } + + bool isSystem = WindowsIdentity.GetCurrent().IsSystem; + + try + { + string ID = null; + + var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); + foreach (var item in key.GetSubKeyNames()) + { + try + { + if (((string)key.OpenSubKey(item).GetValue("DisplayName")).Equals("Open-Shell")) + { + ID = item; + } + } catch (Exception e) + { + + } + } + + if (ID != null) + { + Console.WriteLine("\r\nUninstalling Open-Shell..."); + + var proc = Process.Start("MsiExec.exe", $"/X{ID} /quiet"); + proc.WaitForExit(); + + if (UserSID != null) + { + try + { + var appData = (string)Registry.Users.OpenSubKey(UserSID + @"\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders").GetValue("AppData"); + + if (Directory.Exists(Path.Combine(appData, "OpenShell"))) + Directory.Delete(Path.Combine(appData, "OpenShell"), true); + } catch (Exception e) + { + Console.WriteLine("Error: " + e); + } + } + await Task.Delay(5000); + + if (!Process.GetProcessesByName("explorer").Any()) + { + if (isSystem) + NSudo.RunProcessAsUser(NSudo.GetUserToken(), "explorer.exe", ""); + else + Process.Start("explorer.exe"); + } + } + } catch (Exception e) + { + Console.WriteLine("Error: " + e.Message); + } + + + Console.WriteLine("\r\nReverting settings..."); + try + { + var polKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer", true); + if (polKey.GetValueNames().Contains("SettingsPageVisibility", StringComparer.InvariantCultureIgnoreCase)) + { + polKey.DeleteValue("SettingsPageVisibility"); + } + + if (UserSID != null) + { + new Reg.Value() { KeyName = @$"HKU\{UserSID}\SOFTWARE\Policies\Microsoft\Windows\Explorer", ValueName = "DisableNotificationCenter", Operation = Reg.RegistryValueOperation.Delete }.Apply(); + new Reg.Value() { KeyName = @$"HKU\{UserSID}\SOFTWARE\Classes\CLSID\{{27DD0F8B-3E0E-4ADC-A78A-66047E71ADC5}}\InprocServer32", ValueName = "", Type = Reg.RegistryValueType.REG_SZ, Data = ""}.Apply(); + } + } catch (Exception e) + { + Console.WriteLine("Error: " + e.Message); + } + + Thread.Sleep(3000); + Console.WriteLine("\r\nApplying preparation settings..."); + try + { + new Reg.Key() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", Operation = RegistryOperation.Add }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", ValueName = "BypassTPMCheck", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", ValueName = "BypassCPUCheck", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", ValueName = "BypassStorageCheck", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", ValueName = "BypassSecureBootCheck", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\LabConfig", ValueName = "BypassRAMCheck", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + new Reg.Key() { KeyName = @"HKLM\SYSTEM\Setup\MoSetup", Operation = RegistryOperation.Add }.Apply(); + new Reg.Value() { KeyName = @"HKLM\SYSTEM\Setup\MoSetup", ValueName = "AllowUpgradesWithUnsupportedTPMOrCPU", Type = Reg.RegistryValueType.REG_DWORD, Data = 1 }.Apply(); + } catch (Exception e) + { + Console.WriteLine("Error: " + e.Message); + } + + Thread.Sleep(1500); + + var fc = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("\r\nCompleted configuration"); + + Console.ForegroundColor = fc; + + Console.WriteLine("\r\nStarting Windows Setup..."); + try + { + Process.Start(Path.Combine(driveLetters.First(), "setup.exe"), "/Auto Upgrade /DynamicUpdate Disable"); + } catch (Exception e) + { + fc = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("Error launching Windows Setup: " + e.Message); + Console.ForegroundColor = fc; + new ChoicePrompt() { Text = "Press any key to Exit...", AnyKey = true}.Start(); + Environment.Exit(0); + } + + fc = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("\r\nSetup launch successful, exiting..."); + + Thread.Sleep(6000); + } + } +} \ No newline at end of file diff --git a/src/ame-upgrade-script/Properties/AssemblyInfo.cs b/src/ame-upgrade-script/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a2c7742 --- /dev/null +++ b/src/ame-upgrade-script/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ame_upgrade_preparation_tool")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ame_upgrade_preparation_tool")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("DD855BAB-FA5B-458D-8F42-F2F5E7866D0E")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/src/ame-upgrade-script/Registry.cs b/src/ame-upgrade-script/Registry.cs new file mode 100644 index 0000000..52f6848 --- /dev/null +++ b/src/ame-upgrade-script/Registry.cs @@ -0,0 +1,375 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.Win32; + +namespace amecs +{ + public enum RegistryOperation + { + Delete = 0, + Add = 1 + } + + public class Reg + { + public class Key + { + public string KeyName { get; set; } + + //public Scope Scope { get; set; } = Scope.AllUsers; + public RegistryOperation Operation { get; set; } = RegistryOperation.Delete; + + private List GetRoots() + { + var hive = KeyName.Split('\\').GetValue(0).ToString().ToUpper(); + var list = new List(); + + list.Add(hive switch + { + "HKCU" => RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default), + "HKEY_CURRENT_USER" => RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default), + "HKLM" => RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default), + "HKEY_LOCAL_MACHINE" => RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default), + "HKCR" => RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default), + "HKEY_CLASSES_ROOT" => RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default), + "HKU" => RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default), + "HKEY_USERS" => RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default), + _ => throw new ArgumentException($"Key '{KeyName}' does not specify a valid registry hive.") + }); + return list; + } + + public string GetSubKey() => KeyName.Substring(KeyName.IndexOf('\\') + 1); + + public bool IsEqual() + { + try + { + var roots = GetRoots(); + + foreach (var _root in roots) + { + var root = _root; + var subKey = GetSubKey(); + var openedSubKey = root.OpenSubKey(subKey); + + if (Operation == RegistryOperation.Delete && openedSubKey != null) + { + return false; + } + + if (Operation == RegistryOperation.Add && openedSubKey == null) + { + return false; + } + } + } catch (Exception e) + { + return false; + } + + return true; + } + + public bool Apply() + { + var roots = GetRoots(); + + foreach (var _root in roots) + { + var root = _root; + var subKey = GetSubKey(); + var openedSubKey = root.OpenSubKey(subKey); + if (openedSubKey != null) openedSubKey.Close(); + + + if (Operation == RegistryOperation.Add && openedSubKey == null) + { + root.CreateSubKey(subKey)?.Close(); + } + + if (Operation == RegistryOperation.Delete) + { + root.DeleteSubKeyTree(subKey, false); + } + + root.Close(); + } + + return true; + } + } + + + public enum RegistryValueOperation + { + Delete = 0, + Add = 1, + + // This indicates to skip the action if the specified value does not already exist + Set = 2 + } + + public enum RegistryValueType + { + REG_SZ = RegistryValueKind.String, + REG_MULTI_SZ = RegistryValueKind.MultiString, + REG_EXPAND_SZ = RegistryValueKind.ExpandString, + REG_DWORD = RegistryValueKind.DWord, + REG_QWORD = RegistryValueKind.QWord, + REG_BINARY = RegistryValueKind.Binary, + REG_NONE = RegistryValueKind.None, + REG_UNKNOWN = RegistryValueKind.Unknown + } + + public class Value + { + public string KeyName { get; set; } + + public string ValueName { get; set; } = ""; + + public object? Data { get; set; } + + public RegistryValueType Type { get; set; } + + //public Scope Scope { get; set; } = Scope.AllUsers; + + public RegistryValueOperation Operation { get; set; } = RegistryValueOperation.Add; + + private List GetRoots() + { + var hive = KeyName.Split('\\').GetValue(0).ToString().ToUpper(); + var list = new List(); + + list.Add(hive switch + { + "HKCU" => RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default), + "HKEY_CURRENT_USER" => RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default), + "HKLM" => RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default), + "HKEY_LOCAL_MACHINE" => RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default), + "HKCR" => RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default), + "HKEY_CLASSES_ROOT" => RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default), + "HKU" => RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default), + "HKEY_USERS" => RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default), + _ => throw new ArgumentException($"Key '{KeyName}' does not specify a valid registry hive.") + }); + return list; + } + + public string GetSubKey() => KeyName.Substring(KeyName.IndexOf('\\') + 1); + + public object? GetCurrentValue(RegistryKey root) + { + var subkey = GetSubKey(); + return Registry.GetValue(root.Name + "\\" + subkey, ValueName, null); + } + + public static byte[] StringToByteArray(string hex) + { + return Enumerable.Range(0, hex.Length) + .Where(x => x % 2 == 0) + .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) + .ToArray(); + } + + public bool IsEqual() + { + try + { + var roots = GetRoots(); + + foreach (var _root in roots) + { + var root = _root; + var subKey = GetSubKey(); + + var openedSubKey = root.OpenSubKey(subKey); + + if (openedSubKey == null && (Operation == RegistryValueOperation.Set || Operation == RegistryValueOperation.Delete)) + continue; + if (openedSubKey == null) return false; + + var value = openedSubKey.GetValue(ValueName); + + if (value == null) + { + if (Operation == RegistryValueOperation.Set || Operation == RegistryValueOperation.Delete) + continue; + + return false; + } + + if (Operation == RegistryValueOperation.Delete) return false; + + if (Data == null) return false; + + + bool matches; + try + { + matches = Type switch + { + RegistryValueType.REG_SZ => + Data.ToString() == value.ToString(), + RegistryValueType.REG_EXPAND_SZ => + // RegistryValueOptions.DoNotExpandEnvironmentNames above did not seem to work. + Environment.ExpandEnvironmentVariables(Data.ToString()) == value.ToString(), + RegistryValueType.REG_MULTI_SZ => + Data.ToString() == "" ? ((string[])value).SequenceEqual(new string[] { }) : ((string[])value).SequenceEqual(Data.ToString().Split(new string[] { "\\0" }, StringSplitOptions.None)), + RegistryValueType.REG_DWORD => + unchecked((int)Convert.ToUInt32(Data)) == (int)value, + RegistryValueType.REG_QWORD => + Convert.ToUInt64(Data) == (ulong)value, + RegistryValueType.REG_BINARY => + ((byte[])value).SequenceEqual(StringToByteArray(Data.ToString())), + RegistryValueType.REG_NONE => + ((byte[])value).SequenceEqual(new byte[0]), + RegistryValueType.REG_UNKNOWN => + Data.ToString() == value.ToString(), + _ => throw new ArgumentException("Impossible.") + }; + } catch (InvalidCastException) + { + matches = false; + } + + if (!matches) return false; + } + } catch (Exception e) + { + return false; + } + + return true; + } + + public bool Apply() + { + var roots = GetRoots(); + + foreach (var _root in roots) + { + var root = _root; + var subKey = GetSubKey(); + + if (GetCurrentValue(root) == Data) continue; + + var opened = root.OpenSubKey(subKey); + if (opened == null && Operation == RegistryValueOperation.Set) continue; + if (opened == null && Operation == RegistryValueOperation.Add) root.CreateSubKey(subKey)?.Close(); + if (opened != null) opened.Close(); + + if (Operation == RegistryValueOperation.Delete) + { + var key = root.OpenSubKey(subKey, true); + key?.DeleteValue(ValueName); + key?.Close(); + root.Close(); + continue; + } + + if (Type == RegistryValueType.REG_BINARY) + { + var data = StringToByteArray(Data.ToString()); + + Registry.SetValue(root.Name + "\\" + subKey, ValueName, data, (RegistryValueKind)Type); + } + else if (Type == RegistryValueType.REG_DWORD) + { + // DWORD values using the highest bit set fail without this, for example '2962489444'. + // See https://stackoverflow.com/questions/6608400/how-to-put-a-dword-in-the-registry-with-the-highest-bit-set; + var value = unchecked((int)Convert.ToUInt32(Data)); + Registry.SetValue(root.Name + "\\" + subKey, ValueName, value, (RegistryValueKind)Type); + } + else if (Type == RegistryValueType.REG_QWORD) + { + Registry.SetValue(root.Name + "\\" + subKey, ValueName, Convert.ToUInt64(Data), (RegistryValueKind)Type); + } + else if (Type == RegistryValueType.REG_NONE) + { + byte[] none = new byte[0]; + + Registry.SetValue(root.Name + "\\" + subKey, ValueName, none, (RegistryValueKind)Type); + } + else if (Type == RegistryValueType.REG_MULTI_SZ) + { + string[] data; + if (Data.ToString() == "") data = new string[] { }; + else data = Data.ToString().Split(new string[] { "\\0" }, StringSplitOptions.None); + + Registry.SetValue(root.Name + "\\" + subKey, ValueName, data, (RegistryValueKind)Type); + } + else + { + Registry.SetValue(root.Name + "\\" + subKey, ValueName, Data, (RegistryValueKind)Type); + } + + root.Close(); + } + + return true; + } + } + + + [DllImport("advapi32.dll", SetLastError = true)] + static extern int RegLoadKey(IntPtr hKey, string lpSubKey, string lpFile); + + [DllImport("advapi32.dll", SetLastError = true)] + static extern int RegSaveKey(IntPtr hKey, string lpFile, uint securityAttrPtr = 0); + + [DllImport("advapi32.dll", SetLastError = true)] + static extern int RegUnLoadKey(IntPtr hKey, string lpSubKey); + + [DllImport("ntdll.dll", SetLastError = true)] + static extern IntPtr RtlAdjustPrivilege(int Privilege, bool bEnablePrivilege, bool IsThreadPrivilege, out bool PreviousValue); + + [DllImport("advapi32.dll")] + static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, ref UInt64 lpLuid); + + [DllImport("advapi32.dll")] + static extern bool LookupPrivilegeValue(IntPtr lpSystemName, string lpName, ref UInt64 lpLuid); + + public static void LoadDefaultUserHive() + { + var parentKey = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default); + + IntPtr parentHandle = parentKey.Handle.DangerousGetHandle(); + AcquirePrivileges(); + RegLoadKey(parentHandle, "DefaultUserHive", Environment.ExpandEnvironmentVariables(@"%SYSTEMDRIVE%\Users\Default\NTUSER.dat")); + parentKey.Close(); + } + + public static void UnloadDefaultUserHive() + { + var parentKey = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default); + AcquirePrivileges(); + RegUnLoadKey(parentKey.Handle.DangerousGetHandle(), "DefaultUserHive"); + parentKey.Close(); + } + + public static void AcquirePrivileges() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeRestorePrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + LookupPrivilegeValue(IntPtr.Zero, "SeBackupPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, true, true, out throwaway); + } + + public static void ReturnPrivileges() + { + ulong luid = 0; + bool throwaway; + LookupPrivilegeValue(IntPtr.Zero, "SeRestorePrivilege", ref luid); + RtlAdjustPrivilege((int)luid, false, true, out throwaway); + LookupPrivilegeValue(IntPtr.Zero, "SeBackupPrivilege", ref luid); + RtlAdjustPrivilege((int)luid, false, true, out throwaway); + } + } +} \ No newline at end of file diff --git a/src/ame-upgrade-script/ame-upgrade-script.csproj b/src/ame-upgrade-script/ame-upgrade-script.csproj new file mode 100644 index 0000000..7025678 --- /dev/null +++ b/src/ame-upgrade-script/ame-upgrade-script.csproj @@ -0,0 +1,70 @@ + + + + + Debug + AnyCPU + {DD855BAB-FA5B-458D-8F42-F2F5E7866D0E} + Exe + Properties + ame_upgrade_script + ame_upgrade_script + v4.7.2 + 512 + true + console.ico + app.manifest + 8 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x64 + embedded + true + bin\Release\ + TRACE + prompt + 4 + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ame-upgrade-script/app.manifest b/src/ame-upgrade-script/app.manifest new file mode 100644 index 0000000..6975dd0 --- /dev/null +++ b/src/ame-upgrade-script/app.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.exe b/src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.exe new file mode 100644 index 0000000000000000000000000000000000000000..775b519424d0c581257c3bc96bce860894e03f49 GIT binary patch literal 60416 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 literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.pdb b/src/ame-upgrade-script/bin/Debug/ame_upgrade_preparation_tool.pdb new file mode 100644 index 0000000000000000000000000000000000000000..9d17e968051cd04dfd5fd83c79069470aa73ee97 GIT binary patch literal 34304 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 a-Jaa`SfIxOJr?M(K#v7_EbuN^;Qs(nBv(QJ literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/bin/Release/Capture.PNG b/src/ame-upgrade-script/bin/Release/Capture.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2318794e5b9ff4bb651c2515e341179d377eea71 GIT binary patch literal 28059 zcmeFZc{JPq*DtEy4z#Au)Yw@kREwCkRUIg5s#&V4hKL|yOr))rs;MnSO(}{}q=v+t z6eU_yYYGX1AP9m;f*5Y9zvsF4taZr zPhuY*AD{5uJ2%bv`2NB1el7~^;eE3AQp!u-uN_dc+c)@%JEW$0f9!I-ZgicGuOv=z z-D&rqHQsk@pnQBHjemZ25Fno)^YMW%-@SR=BG7Se2vn%j>OkYrjD~OBb-W#U_)PXW z)2urgwJq=7iJ6}Ld8bXF{iEBX6EP~MK?(Q5BX>2XONk^$HR@|#J5K0-_(D!xa_3lS zm2|Ywfs@CD4n7gm%5Llxher!He;XxD7tGIWTJ_?+>J&nHXBf9HgrIwedSUc=ilZxI zLo0-)Nm0Ll?(n{sH!|;^<2ZUQ{2_P#SiKnUSIxCQe|=Nf58uJZ_f>EgkoVc_KYt&2 zCysDKWVh-@UotjIM;V(7x)PgxCL5iNx*;5zNT==!da{VO{9CuC`U-CCHd+M5-icCQ zuR(4GH6mGJK=t+R07TzHBvD5R@@Gr0#vk>ZcHOnaQOeeLSD~%Bg^5Nv{5oC;&nXe@ zwBxOKO8$KqPT5)q3hOS%Z=tPprnlC5M)50jfbiBR3c0vYL0RV1fuA6GYwi2KpmDaA zUhRg8bqV04fhTPBq}&lu!z_~XQnxMvxq{prTVT{K>dJ0TF6cMnStZCT>oHr!7a+d zc_7=ok+L#~2dwjNEg_{h>AD-b;Ycoq_W=mGI^Bq0EkSCn-`?Wp32n`$<2Bbsw>TG@ zMrvNz62i$z;Q^5eYri>ltsz76DfOJ}M((gmcwZ7wrt^FlXa-TwcJP!0;uTZjsN=tO z@;yzpI3&_}?0Dy0!AepH?d$X*3ZB`_5r(W6Q=~SjVw?2~sP!LW!dq(~l(H7L6;FLR zjNe*NY^^80s0*lrM8BM$s0mM^0B{vAoDPYb2nU!P*x#;>d72uGe2m+>-`VumA8mK@)K&;1e%NHSfFq2gGbwfl;DkHaT^&kk?WjQ9(vnnvt?WyI zurxvVWX|4iSB|4Id*H9v&AbQAa)c9pRyCt3D&gK@B1y6p3#54Gj&2EfjEXfnPl-^; zPEB$q=kDP$T!E=*Lhz8>&r%A{9?IZfEzVWE7_rOSmW}RalvMA2o~oNIS2H`fZ=XH1+pm>0A|G2;PljuF z0HaKD<`z{@i78O8y|}VfEyJ4c`cI;U-W=O$h!d%ZVcf)93-Iv;_l7LMGKuT>^|is2 zFf{iQM;1xA9kDgN6$D!;hj692cNw}X)uKX3&c#r#70Bc-E+CF#DF&x~TYbH{>L~WT zEkqG-vM&DOt)TB1%bt?5_#B)+QnPE&XY0&DEcX`cgGXClOVx;5N6?K0=>cf+p>yDj zSD`jl#8K>YyvuV%K0Z$7+0%|E?_`7>^}}#FGS9DsQsUM>3zuPTalS~2yU_exWWy++PgdUY}CI!Qsm z*z5bBw98Fh$0upLbCTfWTmF3Zc!uW93_XRBNi4YcFkG=IynDpll6kjqi&=hU>Sd;4 zAXtyG?7U+Y=oJr(p2d0t>xS1U11fXwLOB1_FCmvo8IGw$uz&P8t`xyG$*aPeP?<}u z-EzITfqH^`eAQ1HoQ$ee&c=_ET(BPy9TR7tD=NsZH1iPXVT1tgFMb|hncv3Drz5;? zJass}@(=H+m;ld#@b&NhBN0CTXaDEX|8{8rCRalok7Xb__#+6btRhXTkPtfH4SR8P zMO{`rmVpAQj@j}(ZLP{4;gS{>7M{(^idRJpQ#ISLR;s%96`zf8{k(j%zg5~VxOD6o zQRW#n~Yy{zMzk-qS)YWH+Rh9Fy3T!aw>4rNRqfTMnbi}}Tq_Tk#p`O;>*o-?SL z&HN3G{1Mqfmusn1X3fTrJ>Nv}s#>@$tW4l8N^77LfqLJT0H~CCXuohy z--PjV#_~rc)bnMTkHH|_dd|T~6L#Q;|7+A@ov3}pH|^@U5$>jFtmtd2@Cea3V5jcV zFM6Ejet7-Pihx}d?l+jgV0MiFt~*X0{y5MJ*bewI0Rsx)MxK#1pED368oTCyOYfqr zoVcp3Hfi!yQ*U9n=-}`HIAbUAgm+xEC~i&fQSd^~`Xm&-4r-)^=%`7x2}25{$Zk&uW2|d#VsR9YyNHspLhL zk5rO-sDc)jf*{}jook&hM0U{GN5xBKe3IHxslRa-{;QKu@d=Q4BDEzyO&=z83zJMJJ_-Zk-py zRMK>XrCsXT`$b$MZXqFMO!u<_M#fkI#Btr-9%i|`Q6G&`_oAXkHHZ@0^ucN>VQdZ1 zPVe4B0d=n0GzWB7SG8$pvNY1toY$K*W><5SzRq1{=IsF@DO2{Xfgd1UZTsO_ZF1r4%&fR+Gn3IwL>22R ztdQm$zabH4R2(N|&X@)*mshD|ddVc2X$~*e%L(F$C?+%-61o{3IF!~mso|w#IJ%lf zO_JH!I2WP}^6|6^u1m!pZiac8*BV!}@&Ae|4nx=Mof3U^-af%A*j#!wwa-K3($AQM zT9#+vR60Dq^Um;b^Z>(m!~F8yqKI0I>`N*Qg6$Ih`tw_SejfW-s$^Laee_dF2jWz) zyCukvJ2*MRsoGzTkn&{)L!mkvL2y7}syW#{Z$d*0w(eMhI-EqRiiW8kuNm=RxA%US zqL@1pz8&$Cg0}*4Qc{O~Pn{neOzSb4uVqbvjUiA#^?KfJat=PS5{~b7Qul2TCbP1o zB+Tf=ndxO?@S`&qWGJ;V#!_@S#KT156uYV@HBKLPr!R-b+Czi;Ev=}cQ|W_;W+pe_ zR4elcazzh{q;5*=j_2(g3 zA>ZuXknq`WceGaXvd3taqY;HDlo1h5X7qduH+HYLZ6 zs{@K7%A#3PyA;+^DPs27v=3x=$5g$kO98lXtXvv1QDYWILew}7rDeCneiAYu>ob$Z zYjA%plYWK-QEB0(hA^%>tjRtZb_TK2t;Xlr+%rp}qlt$dw@QzRDmvi&r18b-8EGzg zpc?`}NnAJ!-pCkEg4&p>YK`+G!l@e_sVS15uY7pPP~V-pESH`;M+@6V^xXy!npb>gNdHSF9V#O5zXp0n2=VTP8hn*8hA|h5*=l8 zH*wYJL$Cm5(C=)(QFs#m^25ztaa_$$nbSMGJw7LwvqFNmjx5ric^C|Kyh{x2M=(@Z zG9ZQRkkT4mXINJl^EIevzNTg*gp^j1MxIXR?om=WFMnjQdV1?2r%&sXUD^A5u}zS$D1r^;O>U zVlrY9M*KX)8Lyg?U%|@CVS1c6MYREWeeLQb`#iX`&X1Me*^uTDdYZrV&Wh~Dk<@*H z?p3Kx}`d4Ix53;7C`6)bwiYHVYFWxGp`&mMz zb?SM1+DW>BIEQRWf`eHd&mkIW6Yu{aRu-+D&D8zXVHf9kJBW;h2rP+CEjD{Kdkrc| zUr-=3{H|%C23Pg`DQ&g|`?OwOcH!2luT+EQP&XZX3+l7!r)JwrM(9rB z`ZfFjp%%SGo@!pDN4|#y&({MooNM=n;N3kpt6vTsmBPRHY86fuml@m?Wh8H^&L}%7 z*pJ_6npgw3XPzuZdeWC%i|@&r0cLBL`ip0AKO&~p9#H!~_^0rXhKZXaFYOa`J`kJa z9JW}~5_}mOi$T0fQRN5ykS z8A=g-vVpVf%a}%au{w{Z3|?^VC%qGpl|7 zVO1-)duQi+^~*<^A1Ueh4K?<#%hXqlQ;1<0aG^O(0~Xp*bqo3vs=1}@1hF5i?Woam zUr4uyb#z|Fk%{dS^LwKjV3pNfJcZQ6QWG{5c$NqF_{9XSm^qOf4=oPnMXuh*b^-rH z@_$Mtd;bLXyvYB|pE#daE#axs-{Q%CyWlH#JLX6He@h3Z&aLQ(5L`RMT@BTRL_29l z{;BYxY?97ncF5*sDgUb?Cev*4O5m)g^k5TdH{W1&$8*NoL-?k*c!so0__T|tQ~v4R zh=q-iDUh+~2Dz&l#0F^*eZjN6bwD}3r}8{UvPlmKY{^-BL+5DEWFqZIflZ;>Nby)s z&9w_dT-ZN+{bM|2-RR7nzkM>6+V_KMy8ik5?>a6#P_2-GhR|V!xloz72v|sW(CtTC zjg8_DviLFTw*zMfiMN9aHSfggWdWm7Li6I7!$_@S6izNqbn;yATnne2=&X%>x4IFr zXb&9%;crJWQ%X#*^-@&WC;zQg1WY7X!(Ouw8^KT~9_vhjUBI9R!kM2Lt?W*qRU2#r zc6F&kGFqLNVexpFmW3^FuAXQJakG6Sd+17*+(WSR(zC(9;nfw^2hV@P)ItyRXv$VB z50wK2MLqB@9^>_of4zR)-Q0Ut;wY2=+PFXCI4rtz)PmzX{FxHT{E3YP%8Ep|IJPC< zhFV~@29Lr-P7mB(gl`fV9DS2*5H7Ek6iZ@a0Ld9a<7`X$N1(Z<~d5 zo%|24g(SvKxXQZu;!6TW?{jc?JZGV^w?sgu(5|CqSHLOwea%sB6>$ty1T-t9gg#~J z?trxg-Q2&ZlYUPc1*%Z4LyGI6DeShzDrO28%AHk&e=u>M105=S&$OBYPDQCwek;8j z@E=&TAFhB^W82SUJcOPs>4evcr$!dmENT5n2 z*|9Vnr`Ngsx4K0CaIf-Po+6A&6NBBJXZb@F54NNByF;YGjl!N%MTF}vI&?7dPnQ* zIRkVhAAe8gr5;Z=s_-Kq`~#h7Wz@qe{#=AWGps1{lxc*VrwKhMZ(}Hom{zl?JCN%b zK|br4Z1!TqvEka4Ptl%y>anAjJq>394}JWu%8h(9_+Wtl(7itY2t+)ZIfvblBu~#= zLB|o6kz8*F)vyku zmE*BVG^wyp!@vPl(5$CGD=Q>H6FqcvUUK%-5l$!Oj5cLct64!e<0{%1>e-(m55kUW z&2X1i23Jy&@>N%|7L8+by8QXRIn10}8S6`ac);bXXWvjD>3BZe9A;GUYY*QwfB>$) zd6x(W)#y_#Lg)_7TKf*hy;SAnTf4rXe~N>uUo~l@{q7EYE&J^2#CaX}x^7C!@h1w>A&)02Z?QGi7Cw2yk+w~XCyq5!sU4q-l+~Mwo z&G~;{?hw={Is6f)X!!5nvN69m1=ArUEGAQBBjF^cPH9YiohOQ8QcZF-j=;-SD zFh)6zi=7w|J#LP@dqEE^`9x=bJ%C}(?9QVVI7+&M)T1HX(&>jl)xLrv( z_*fh(-d^kx@%U_PQNHWp7mnsU89mL|7R#7%7@GaVVgGp6!WA%Z=7|1=$&l?e`(fy) zyRaSMHr^<-EDS8_G_<;zK$7x;Xa?9S^SesNo7FJ0AiGMzh8)X{@JBlHE9baZAUpX! z>TPr0Z@Qr3A_6oVdF!%IH)nrU%bt9-@usG^c#kjVi|64;UvMAx!xdq>_NwkIbv1Hw z0?DB?!}&waglh;9+On}6{61JKhq{ArsqtFYXE!}!%AJ32fSRmcR zCNtu8%{xJz>AoHd4!H_yyf>acFrHmyjvu(Yi)gQ%@qLkx&+nFCIp*a^$nJrWi_cq^ zQJ*nS4{o`Ja!_TgYvPrU7li4>Q*jSEC62R9E`8}p_gNkJQek%_#`KyX&Njr575L{k zxF2_uNH-Shp4%@tJU2hwvi$U5pXHI-o9U(xAKVx|nAL#2bR8rN1ZiL2-?n@k3_bZ> z8yT3)&Q}X~*M*#`8%(|gEs+AC%6jHsUFmomh{^#QE}-*oo2~uBcP*m)nw^~h&g$!n z-mlRoCVlqW`7Ac(mbMFE=_l^2Hhpb$67lwFiF$nyJ9cmvFlU^cwl;xz&Caj4`eL$c zu372s9?GMdosp~M`Ww3j74wyrU$0xhuk!$CkpEw@9DmM$Dyn_Bd}P<*Gb1nR_4`ok z%O>y!_s*JH9`#GE4dd(&g@kgBlGv{In{CUg7f+bUSZGxo?#X#spQz;1Zq0s6yHsxH zAy7D4y;yLX7h(AuY|Aw2SUs=2J*cz2kK&U*R_M+B%TDqEUia$TT=zd<@QFVm*+)s+ zk45s^y(~Yy?Jxf+%X+yz!(zAlT)%|>zJwRWRcCGso7dI22Kf6j-iK4+N8Lbz+fA^c z%cHD>|1o_0PomBLAC^xkujt6ii16ae&Pm@uamu1LQmv4TlIE3CHwe`A;oo&-OK~55 zj@I``r74nR>^jO4Fv1t>hQGQ`R4>g%#fiSYax~t~ozfT#zf7c;L|iv+S_1-i_t{gn~poro(`x&@OM_ope3= zA-=&=+rTw=dqI9r5v)c=!9cWc+25|VS|%bJ8z+Ay@Ds=G%a@{yl+Ege1Jyxw8a5V}Ov$;Mb} z-YNw6*@n*NO)0-jHVgh8w4f~%v3h+{`{SeuOC&<=lKbclowUZ_*z1+nVejCts@En$ z^51AOxPfUvewq{o!J1g@14h|_C|xo>3XE<$n+i~vXVMAMXy2{n{EvMP28e7O z^_&u23Mt_+nHromLcYwvZ1{I=pc#5YY0AT5uMvBma<`pR)O;9YQBC*z_d`Fm+v09> zu0cg_O^jY_Fkib~tec!|azfwX_s*;E%3K+&v7tjG+udLkzF(mf| zRg806i66YvQt9E_+tNt(k#j!*&wJ|weh)+BhPJ|WUd>IbyVoin<_hs~Oa#m1bHs-D zDG`LrZ)MV)~(`fJ(mUDfy^y%!R8&rM`fXUxcX7hj^A z+A)x#MsOdYhw6lYbwn4HkO*@KzpWrTR$QT0TnNSu4J;bn&1 z+MGpuk!>C&;;xsm1VgY%XXm$#?mwwJls~;5ru6FL5>keF@j>Ju0y84HJPh21+;`8arPb}OU##O#S-M`v)eL9?F!0RWtBTfO*+HV?)3ozUTn@#!dW(fvFbp$XEm#S;$F~lui3VNfSdI^?25> z_1#qK&QMseXX@4)6aMH&4z}Ebf3z=tE}o{WzqPEY<5+&)W>CVEWSdMkL#6Q~4+aMx zBsVUSzAAvYJelJ&MPI6aFfPGio6-UQjrIi`gttSzH^&WX#k5Ce?SAf*7uu0^PxR(S zeQn0oL*Hsovh7GmlXBcKurs8*^E}0i!J2fGZAGTb`qnZpA>M*hB6aTN6{dr>;H96| zDwpLiL8r7};6!Z1+)}gIF3LpR#~0K?i5B?u zO`|gu{-88nxz_Uq^MV+VG~ayEc96;|q4GSAn%KW$Hr^D5|6j`fhMC(o@~;qc8?F90 zTfTnv|Fir*l#Jgoxa_uTYv#GOj84X}IG$JI1>Dy?t%r4W3eXWHi8&o3*3{KTClWTz zWL`Gmqfr-0$0{}q^vsIZ9GXMIcpA41-_a~bt z2>DNNyU|9VyX<;{_9!?-mWhGPZ&*lUsBdJDu+RjYBK47BxY0S#woCjCvyMK}` zAM*~%7|~1|gPZu$4EZSywOTS8#J=FRWk+0W)Go@o{zU9fzTn(HsZNwa7(?RdO*KKC zNV~9Cg2HrM({bfQm+o_7@ValOZnQ}VJs!Gp@8{*Kj1U8S51)zzh2y9wLCRrU&AOVr z5s!a~b-KwUvBPm3!=Ij2KpU$Wii_X~Z?~x6WDF=rlnpWA* z^M`UAduv~@qwBlo6*-_}^0Hb_M_g%NBF|mATq=j{0!y^hu3-u$!!m42{2X>#l>kz>nj;QZfz4Kh5IzqdGo-SHDe0j87NMZP@NQ zao&UaxyT{%*ZA(fwq)x_jdG^qoY=-8YW2O;HzIHnwt4jd>Chfagw)P~ARB^~ot2YU zH}$@*?&Pl=Bvp`uDe_fE>LYjX4Q;2U`uO^Qz5D2$rxir~INmxkG{ky@pV9uMVL>EL z_0Y+_YswL)4_IVf%JL!)E20Fk=PbIwIV@AUd|ft2B}exzH3=-SM2<)x0y zUDxY&WgZu@aD1ByEzJiS9*;Ckc$PNfpF?ncFB3m4UKhJ8H@;Ze!VX6m@Z+Fu6{h>f zr$@dpD8C}0J-;vO&fix*Y6#<@d!^xDRy0`-3B$ed)=(ZsL~VS ziq?Bm*K&4WJ)?EYgY;ffHc$C%zQ(u@o${uaaBDVIB54FcU0!uur6d&UtIrjNI(8w{ zZcDS6Wg_w1TY4}4lp_YuYUw9fN zNJmR*lJnd*Fi?jG6gurH>M`*Hm~-^}K*&6S2Z!}Q-_ATXmZ;<1lsSZL33 zr>`gif@d#U8Wvp5#u0z^h0@|uMZTc9TA-5%9l*Ri)Wx8GgH@gUS{1dZ?mN=~v~xA$ z{-h=hXXtE96F&?;_#IGmj;^Ne+KQXT<`OjB0(`U+o4@vi`%3Ehq;{GT`a%giOn-Ld zpJ%U6t4m)@W`B`k+^?P=vp-5WE<@PsRv!vS+(>7@1k>XV%|-MWpvH8M3|I5D(^+6du$ zfIuH9Dq6D74+Rk-vHgdLL`1AgNzZ{(53#sW?D#xJ_{a+`0Ac!03dUrjeShsn%}$^6_-`X$_JpX&EHV=-FQz>ri>gJD1nK3`s^SsL!=FTMj=wbfw+mm50VBHkP8UU zq9&GnW$}1fO4(11mt>NvmbgmsAWxnTuDc75O{->F_1bjf3VgcA38!bGQ>=p0C&nl5 zg(!OJl|RT*ZStiR*4#d_X5*o!FR5qBJDS^2yl}uhIM}TVq^X@}Nbw+OzAM($OnUG9 zX5QQZ$@{){?J@G)lLe`y!FYvc^vlm-{fsV(or*aXzl-mGnu9n3g}dd7m>ZW=$Ofv!3?c9>QMwgyHJ4QD1#O(@*d8^R5$(R9Mm zMO{r2tub@TI&^(c|NLnbnI=V*eBTxnvu!Z0v36@VKu$jBq^{1FwW=%n9ZAU0Q!rze ztwDh%vZ|w+-5X*Rs-f?Ib;_^qCN_5k2!S^`k z(WaTgO>;Y7F=_URqXISQDMJ*E>q+%!SbFmRJ(g(56(66>%EbrEULiMO9En?be>JQ|2v;O{vFcY-`?=~pS>S0VLCoV) zzzK=`xzhQFAla?;IjR`|JEqNnT7KB9@(%{9xxB1wkchJusTF9)98MbANxkKtvSKHL{9+d3+sNxDZ@-W4_gZ8R3zgKZMYTmSH zBbq#N5o{72?`kMrw2|?dLw(^_LuB4e9jqp44Nq^ha#}{TU4(q0rrp3g(Ia4m(8{Iq zf8~18y_fuu^{*upDwF$~eAB!nvU?fYY>mZC;7Wc{|P?f;Q-V>*r)ol8Fj5{-PC)aZ{>_}Eu zjbUKh9~uCA*WI=hBCC#_8QdP1`9rtDjb=ZfPRu5Cnn_+DiN7YnV>ME^+CHq$2vIkt zrcI|bSc5m>tdQm%r+nq#%zKJFfq9ccwA+@w;B&^gfCD$h;;b6pocFRfJs^gD2*iQd)b(1%4Im}kmG&YRxm z8)@B^RcWU#&8!t2Biu-jnY$R*O*)IH$qEMdv8)W(Lx&;vE)v(TIQm3RdNYGBMLXpS z9{~&LgLQ68w{NHpD&>bnDC*>uWoVMd*B)pN7j)0Rz2&iutq|*6W^RSa8PpE1XWNP| zfXg1#zifK6JmA#Zgea9NhKIY}SiimGM3Xe9&ab4I)cjx>K<>oERtl<6Q$5189^gxs z>mFd)HMwyt7z$$4QtdEs^s8K!4lJ#SUDYum<#b*OB}1@JCye&@<01o*=XuTnZ2kjd zs$Cphmve?&?08BAo(Y@7%IoK)qwx zpNHoD%DnMPdH_fk60uD*uO&Y9hTD_B6fVf8CMVXhv_q1+ohk5IV8tG*ezvQ|l6>Ck z^WANZI?ukt{`(!V|D_srRBRY}6a6V!SF~om^qK`4o&J7BI(w0anPoDD@tsW&AbiCzGzIN0eNEKMUZd{ z647;p$g!8y7G_F6$f>YIB~AA)r@c=Z=<2BUF{;RUGMi3sd-hh+D!W`eb7nB!0vJ-` z)nT+9H>B?Y&Y^k>~>@EBbl3!`byzsV%r*{ooNV{oGbfc8M6U9^2(Ul(I4z-h+1l+#3fpn|hpCw{7@ zucSl9_4N=MCvBV$fze{fnsC|XZm`c8 zN-n75y1RV^ucSm%T|&&!s;h+l#`?$L4sPO6`1#o1O{TbqMEyXu1Tp(+9n(1fdX;jU zyk13x@~U@mq#)SdBKmHLE{5h?zCq;lF;Y7FBP<-UAd3O?k`$E#U|*Uw$%2f2?>{`D z{d+zT&$2IWVNb{us!;vbR=7%gz*Q`%>~-%zL!H5tW3B4=53;*l3UD$3t?37d+?#42ZFvro&sX8f#6+0VZNV zwUy!|r1%`!5TIMlpRdv(kjK*;Hmj=+Z}T>2wP1Nzv4280E;`D0Rb#VL)VLb=y`A9h zR%VPwx_83gj&tqYvdyoaZQ8WR0A(`pdp@q@`uNITffdoTU1Ew@w^IjK-pe>1TMQy< zJht=Y%8N$2!1XB?Nx3oI)3hjjCdj{GodB9oC~?fG=&fihm?0PB8yO-#sML6Z(uq&i zti0N3B>ZQIcubv>rKw$KC^A(A%RETTqmiKZC5U5{ay@A^rRa`!M}XMh6rDFjWBoX1 zw^{YWB>g89NsuSgYkkfeR}`nhRq5qe@YZ*tB3<9rB8GPsFq&;I3ymGF4l=5P6w+cV zR!PJc=YI0;MdU9YqzN1JM^_?3@r`qTwMd7u^zlwa)w?++I%0m#xy}Ic1rlLOtgtjp zO|0&PiFLrJwc!_N>cr4I7_PA(3!AaAsp<}P9jeToQQF5T0d?{e2%sbPrDG@%_=Bac zE=R2NQn<6N_=r6~J-8Sq;q~qrJF!pXG~l1>o&*jdV9cg8vAcsZ0%!P0J|DR-AzV?I;;=WQg1DgQDSRaj5_|Kgl>AF^3)PsGH zgh|~C^?I({znWu8`9u5?EYhE}AxTrY?@pw3`d4?MIrPpB59Yv0Sq`x8$4MQKYKRw!%Uia`l|7_(Fb-Kb-r!#9}Lw7m`BJMdn+A`yU`fis0z?964=5%+|3_pcZ zgqmpY0P_)3&16+$Ih4r;j)apbi-O&=zQTeT*7gKjln@JIkJvq8WJI`VFO8ERJ#mqJ!#_%6&B5BMoBke}P^#^3bPr;72D<-(Hh*j9 zj~S>HyO*apB>#5$%`hD0Hr@Lu2^K}H~ENyC9TZO5HK%Jb(PdMzVI^oq^1K2-Z5vz z7-kVm>0hm%_Of=1y}#t|lSHabGar1T9T|1zYq{bj_Q?XUb5rtR+DGr=SHpPL>t&MQeC+CjE@tC=4AX@%?&@*jo zJw?-{&}tg|e$I^tHC0Ag#g#2k$Oq!JN&DiC@&44{RKn?s;_oT8Gcm0eR%*eXF z6A0#qqXC)i^Zz_hD80M(=xr(Bv!|r2B;k`Xf6k&n&YB!u39tZVXJTTix7CSRS6)^p z|D#I8_-F-0+seKonHU4s+<;$XTt9B0oRR3}N?qs9z1v8?(a7Eg%yQ~wsX?M8!Y-YZ zn{$(9gdw+delbx`s!Tdf*z}f)O>Mqe6`)T*F*nb$i#%v+)n4{?q<2}pK9TC@VnFUS zr)RuUw&1{YGTy7>ZDb1hur0M12ds_&(BEm=$Cj6-*N3^~gQm(y5TzueTH*R~7CK~Gy_obF#Jzdg@ZU1r+aCUl) zc%h4W*ij6|?D027gf#pB4dlCL`*j4<*D`<+@yn!xw3eb%HAOv>%l<`PgK~d$`xuO zAT~Rjc&w3+fCFIi&L#79_J)R<##IEh$dW^d_rwro)h4CiGh&ER%^bq{0EbV+M_DGu zCGF?4hI28sxV$0J9@SeN7LZ2xdxrbu*Hvxs$oG_GRYgY4nxXUCeucG@4`2yWg``Cn?xdvzwYwqtFE^`6`n_^YL%6btH7P>t)8g zz1nLx6Vk2G*8Z#ntM3&@D_1@`Jx7vgLUe7n_4Dchxcv0aexb9lS)}S3#H)ekECg17<3=wrgxQUyrYOD@Vpfrll0xiof-j`l%2ykNW!48M;NXIVHbhea2Krb^aFq zyGJA)XXhJ~#TJ8iq;g->xUY!K2A`-2xjXaZ)39HnBzgUfDA0}tNcntN=Ach%Luw)g zzta49KT7$Mem+If9JmBnvYx*sG!PGF^Z%qO8p#!z0Jt$QE%#3 zZO`_Zv6YD;M!Z%H?y!dBGK%P519jDy%+F6^#{NY=d8B68x>=CuFjXHjwy>ZEY+KrM z**5kFLlGdjRsWIV_dNB*7eyav59DZ$q^a#-?uz}=wV%QH?Wn3rMCmN=nOMabE^_b z*KUqKrm1A*W#{j?kCfnr@9S5=(Zv>OlC~q?itIq;cAgq zqQNhjfR69$ba02KRo}V!`0ZSFO&HfIJa$XF|W0Gow4R zO+Efyd#EFl_6fss3QNrg?Wg9Q#D~Ohjh&?xFQ!Q1i1$9mt z&h1IBs)9)JpFiNC9f`OgBSdb#c93d{NrXB({~rV>EL>OFI$_) zyhGvLDPbi3Re6!^agY!HDnRi@L;jNk%>PT}n*ZT=^ndZU^RDW}5nLO~TtE22l|zIH zs~AMk`A*sJFzrq!Ub_w-(3;3j@s+wgZCk7?d&VjiO>1ndk6~Jih*C9iG|>oHO=^^; zqe&}_`-wM6`tkSQnQV@Q_Ul57rpwg1o_;OcqnWmJW}bZMQ!wO1S2CYXs$+kVI4?wtu+s9u^`hz>+* z5}l1JYJf_6o&rrezk{@Xs*FqHw`*ASp%o=NUvy(;U*VUj*m6>np)Kw|Qmv#R6SnZV zeeSbX?qaQ{Ot#JZN>6aGK-{rbUf8F@k>K;z+|KGsqDCae#6&he9)h4hpAxtLvOc%_ z7pz8Bzzi%AC8%PnW;=W_-RiI%uxYj2Xa5ev*9~3P4R4N$5hqiy<Q*`edv)z=!e@CMbi0C98(}KbN!VCb`P_yz#r%16 z_OAB@On2(XJG(RP23-P?x>R+F-KgWkw z@@HPg>+e>S`hXzsnh2l3d-~F2819)|&lTlF=h#LcFZ>t0eEF+iXJ+nYgecYn0y~c& zW>v9dk7bD2TdMG?orYn-@1C z>*i%EZtvR}As})xnm|jV96~z?*sL9Vu|Mvpg-1tTOxUe2AT8DP&ZWhm$&x~ML(34v zu*BZZfgXi`=z*pf&RPcVYQ$(-O}speUT-xA@wyjdPWa4T`8rotfDz!UJiqPqj<0lZ zU$|)Go;-Ypes6cy2LZ8AGSy@>u@wG1cNVJFHs>aUv!ogBDtzTgJlt`yxwJt32)Cu= zNK*zt!_}y!4>9&Gg@#ElcB~psguaBDsh|C!gfW)NPN53Jv}2xE4*^`KK}Yx&dj6^< zeT1$%(jGF(JD$gSW@lgABCIBcRvlzR)I%?wjlP7o3uBx{;w-*(y@XlDO%(QXO#Nlg z^yGBf3@E4%KUqHr1~%0P6zN4H)#M_BzYr|?wQiM-X;~D@{jp%3zZNVD55c_PTiq+6 zaRTS`Xp@gG;M#VDjCU77P*PapcQhS?>Zuw#0abt&hX4IUT0N zW!7!tf?up_r%0G?Aq|KO@Nv*Vii?a|4^0IdRxfLW{A0=4y_{VED)_4&yxZq7t2+kj zhu)5a;017UziyD%hfiq5VHuJ0aw~f%TKnNB-ZWdset2D16z{tGsWS1fRNN49^{v3x z^=YqL!#Y17852jnTA))8I-HW3Eo-u2IxB!CW>5YiSLrBZtD0Fn!|qJ)X4iunmw(j3 zTV>G87j^uHt=fP%{G|Q$5X`UrEkt$9#fse8pm+iq8pR2NP0gfx9^-cRy&0ZomOHET zp4$0b`~Pb1OXHGUyMEjI$tKgD1 z-6(15F1MPQk|{VtYDzg#YNDW`p^zeq67%%l)%%?DocHtja6X*hkLv^6Kj2>XwXQX< z|B83ba-&C|7mp6^hS+PFT?u_fJt~TPtG|D^`EK&P*9%oPc( zhh3ky$t|DnR2y>zZiRHSfo`b~yM9da7}K~*Dx&X;UIYj~39Wl!1<#lx8h2KojB<|y z$(ShkqIZoC#_-gtep{(3^7fPGCx4{P0e?5>i|}WPx;?#jWI?~-o1LTLKdpsK)|kzm z(Pt~wY2;#_7Jb4b=EIFu!sVVOwGE0E+9RfL`z*}0_)_E_uA0AxmAHs@<4Nd8=qt>0&LoJHg5F zm<8WecJVUGbk(0E)W%9!mntW7MVmh&0$J~&r0i{kn2$sFBx;iUng}h}(J9!ir@-CV z$$^u}MoEJ8*U1I77M$JTwaSj6fVFK!Re7fT=X}dGtgZ4v>X~C4QIb2TxZ(lw7ALuf zWExIT*8S*Nt6`41*l_GSt(wAvKg?XNC$-cyn7Nl^Di1tz8Q={Y{9^&iXEg*1oxE}( z+I94io}_~u_M`|-50=~FoFI2*cRD^eWO3$InRJK^8IgH==JJAD?d@OGURtDnLOWap zFDjbEy(d3C)i>kAc`CNtH?I&Q=$XBYh!=1XoksNc+C}Co##Pep{JTTsXKpv*u}-L+ zqW(mwHN4CcMoK72%JswrP`5I6QKdCU`oi-Q^6u){cl@KGkHOEb%L&Ur`D9azu#y&j z0?I-hyM(B)n21*ic6HkBhu%g$jN2w!&ZyYMZTxOFwQ32U5o?Q-QusqoH0bzo%V`hT$~k8pg$jXq z=rqi2ZONS238DS!JO(D$jQly^5uEG<(-JcHN70 zK4-ZWKMId57I7z=1Ie}%pI49!x4bwW3~b{vlOvxM;s)JyOrEn_34TC6Z1ng1qPl_p zllmu{B*_hbl3*!f%Y}@z8r?f=D#mweN1jV8`hoPwL#=hW^`?ePi{jSB=cePjD-N%{ zB^tC3yC#BAESCCkfr7J_7)wTh+OCbk6m^;V`zBJrbR`Ju^Q6WqEf zn{eIPx)bVgR$tA1n3q$xOd3EW!8y#oMO|=Exwg%IHATH#zzqq_+){J5{XUe1`KdxZ0g_f)ka$zf5Qyhg_?6{gg{DdO*!QCVD_+a$=eTJ+*R%dA+fK0C{^@LW(OXRy zry;p3z{+uoYQLLUT8iGm#)3JF_Gq)$a7(J%T=bz+FxUS!?8WxH0@+-NkdS25h1^yK z!|1SXXF}+qm}vmy>n82CgC7O+00wY1^PZ%fdTJS`^vNcY7fOc!XqVP#zSG{!x&aNQ zu)IT}m*I}F%(lzVcIH^a3#M(4^Bi72JR4I#$e)E7)7tp9ltVCzaopkW)*8?=i@pse z;fH--*{dy`7R21C4WHexDebCP0KgLHa z21Mu*=zrV8naM`9qTzYy$LTr#>pMSrc`r!3;+mx@{FbKqzvOoV{lz0)+>zlox>}Nw znczuq4p*UVb@WU$m#xm$u~NDxpP)Ag;=$93xvhWM6fx#-?ZOS%?rUT)&so0BGg0p> zA4ro1MYu92C;5ESAGY=ED2GRv`6*bLof(J~+?A{U6~3ohYrq}8rQ7>ql{66tyXQc| zm=+k}jPmVFmPTdO_#>aNy5!^xLA_F-*v#kO_AjuFyrT`HuA%tvLn|sNd$`;=VHA-(ZB5oY(+t{YMyC9cj&=cGfPIwZ$rY_ zxznZ1oP?K~8VK&%GRyOgvmv+{isOwD0EU4=BTHKad10&ozVnrNZF^_e^NTp{uRpvJ z3vAc3bKqx58*doGf)B-4q~{QmEMkZe;v1l{l$2N zz#%&)c8D?UOsIV-3f)mucahMXv|IgTH*t;d@L3NfI$Jbpdy7%sccVntvOfO3zR`@?^v$4DmynT5PIMiK3B5$ z%JCmr=LGRXle)2;krOG8O+?9_2Iq7U^XsBD?Lqv7Pv@!RIoz9gPx)R98 z&aS->ddiFA85C~2IId26Tx!B32QD8m0PR*YI6b_-Xs;%0W%WL+C7f`PQ<7~5Ibx0D zuNcd{#vL^#Z5vNjvtm5sVvG=0kp@&3Z%KpiNvC$9V2j0iG%Y6InW-IeBXZ-X>%z*6<1I}$Y;gnYu zy@VR#xtd|eC;JtiMCER7d*{uL`G*6_b4d)EPVYJ68E+gO4BA>7U#zNo7lioymOVh$ zu8LCaYR?oLDCb--G7I6fp#8f$RL%u)F}DRY$9pw1;zbs7-67E~ zUZ*|lqoxAc>#LbLoWP(mB&bz*_%W*xDQmqXdHxAho)c-Yru*zvH49SEx2SMMAv%(A z?OxnFfMDK$Lr&UcV1%ExAQJ2GaoywLZL@z;b#3;i%$X$mnd8FfwV8K+ky83};-MyC zC~TWxPn3TNaUz}(x9C^oirLaRT&S--u+x>i+P{Pj0WCM&2>hX2H1{g}wJ6nQL6L08 z@kaz9XffAH@y=Z^Z1w9icemY)jM>Mad3nrb#$rNK);EIZ7uiHQE|s>0aB}Lu@^ju7 z?9Hz^;v=Y@t=B#M39($zfXfDAzn}ZY_eR0X(FZWjMx+HW?Y3cX9 z{+<6R>bJ`_gd^_LX@@(fWNIcE}9nLkG zb&tysCD7mbp)IXnVz3^BH#NFkS7NVhx~>9nNYMgcmD>zYd*!^-mO%$A+`0+I8R(XO z`fV*ug8c`R+jK8ET5X4v*gR+d%yu`x6s^jS>IWbuX%Omi^0mcd+uN#h(S*bpZCo8V zS-@-Uy@1{2P=IebjOX~yxrY(s$y=6}gPd+jp*Cd`c4kN)xU zRFpzM8aEKu7E!s z>6#p(HLo^0XcC<)eH?4=c>f|6(YC+yzBR9#dh#OV%-B$WM#3csE>5(q{}QTvF7Ped zte?^-iXEO~zZU(C^Fw5}F-2&6)W1Mb8-A%J;&>J$-)m{Oe9 zZn}saP7>LE9;ebroS13@qv+sOl_G>+Nv{l%C!b!|irZNR)(_1gHVtQ8)#E|{F<1pY z&T=1Okp?10nEl&j@^7;67zii@eU!&56l9FB#v8)azr6V3zsvD(vgeS)52a{^P3RaJ zeP-6uK2-C-%L!sKkR`gJ-k=w#v6YU7O{vw~XG{=#ODO{NJD0jMx2bMl=2o z9GUg;=%=i2cr5?j+gsEJ;I1TB06AJ+hvOJM>?)`Tdj63xM+X*ueXg4|$$H2TIlQNf z%w_v&5JA9j-Dy~H?3})JGgkvXe9JjG08~80>4yhR&YrWX<(sq7LE>aPDYu6Ur;F4b zT33mUyJ2Pdg9Bvi#(@a2pYB%EobeT|{@&To`Be>RIdAfspS%#0mDf8HMPneaby>Rg zg2L2Pi{gV32!x~&SqD1w=Ve!_@VL-=R+zz>Si6u5yna|6(@u&u$HWv=z6>xwT=@`6 zAIWR??CkvpZ%;9$>5N7Cr0R>Eg39Gg2MqJHv+rkw=gT|d|KkU~nqj+)kVD)cI2S5+u@C5C{GERaP2(JJ2#bP?znY2%hfe5uLLzYw`ZQ`x7U*I zyhOE1w((PO-@hvN9PSW?agL+Qp4Z{$5ud2%&B#W71CfC)6<~mDU;eS5+rK&U7BdV>@e8RmbK1i+?lZ8Za|a%Su688%1TRkiup?AHuWYfc+t-gPW~HSLG0b^j z#iaQygP{RS2_*r&f|!6@&5HydLxDENYS{Xonk<_D+?@lb%pS(R%S1c{jn%koO*yXN zh02c3q-J|lE295!A}P5!EpZ?%a_73Dvd~V~>$cmf8@2pEw068ds;h2EEl@%qJB|dZ z?%?Y)T3kq8$@Uf@gK+G-49SQ%$`S{3}H0?88ky z#ja@;6yn}Ec+UEQp5*lM5{mZYI^RHa1W0%p|ImTNE6$pzli>0){mGN#wtv2AMCS^x zK4?oD#TZ*Gh9RFlbPu_vX1SWDn58r(TDHj_;eHidX;ASE+c;-kM(9giGeowWM#*Ly zCsh7;jp=?&BM#9PG|1qTXPi0$B{n8a#4I1F;j3&vQK(JRIV9req$^+XRYXSLh!{II z#dn{#fR3XBqi7Um>AL!HCqHvU zB*TM+e-rJ`wEpx22CJNM9pDAxIKs?pI6svobL<8h!P`MXD}o?!(DnI&ZR4ch)lVr2 zQQWJ}jnF8}T9b9czsd1K_nEDyhYKMHiI4M^)zdIn{qriX7_8}cPYLLo2GWZQ_Wbq@ z#OD9whd-?!RnK|pMs9rMW zr5pFU0aaH*bGT=@ZL#mOu(yn=d&ru0 z@&K|(qnp+1#9FRiD?`}TdbRF&!PImz&1uRUdXnPJV#o!Kv@gWmar7XuB^?au1}_LS zeLAHA(4o}8+IVg>uJyyur-C%2;#2_LtOY@CbeN6B z0asxVtcZm#)2h7mU%ikVydsS-K%<$idY#D_`_jIy2C@g0d=6x43B$%FHe|G&m=0)+ zQz(@att+vAmj31&L|=(T0SkP{u%Ub%@ZX!mQf5tXA5Dy4it8|^1`!gK!?m~p)wDp( zbxNpS(BhAu@V9A_vj|!i^4%V&YE<)%sJU6jTZ|uFJgtUG?4Wjq^Nd&OGk3@Fx-$PI@qPd*R(Yy-oVLgG1*t%o)xS4+ zTm1^!mLqts9G7oY2huATA~o=KM1afFCY>|E5h_ccPNg%UZC% zMIU&cq(?*LXvT*5&*D13geSn6Dj_IklL>A;b1f ztc9Oe;JzG`McjZTPi{8z4fj-d%K)2uDK%)$whlJX>`MpGVwpX^@9 zA*)`HUz0u0ckNv+Sz0+LuY*qQGI+iD@=>(n9Q7T`VL^HRYR&@xN~CdG$JS1$zJENn zmlpB|Hk6u?EY>P*Ux9g6YI}K-1>BB*j2=BKQS*g!i3?c!0sXpBF#@dMca_zI9cN#H z@Q-YMGQk>2N`zUs!7L+y5PIal3YV6Yj3P2)p@{8|y;W;qb894}An@LDqV2Z$;_6WNLmc|Jq zxp1g?DdfpCEcA#g z84W8{kDQ#eR?tLJo@=8HIYq?)fOCc)fkXOeZDP>UccTdWlQ#>GN-oW^uwASH`ROLP zCo1{A$z_XG$0mptB-}Wj&n$in@=sKAxG}ICuas}>&*@j^0^+A70n11jAVcSFc@2o# zSh!)8{U$C1cM=x%>*$zz4*!885nv{Rd^z*9GFEyDdWE?@u57|}%Q8%&lv5N`I ze+pzsQ_0JV(JM#HUpA{$R>KQnlCHPHU}%Fb&davV%cc7Nyj^t`L7CNJ2yVF0@{iKM ze$yIk7c5~HEC=Mji{QnIR=@Lr{A$3R)sDVp&q8385%ZZi9$=?-heB>>wE4F{yi*-iecQiFb;IaD+Y5Y~eXyaAh zUHC1dIt5W*GaQb8+T9RwTltHj1l@FFFh*uKo1^NQE3!Pe2-Xs9r+%y=hb|8uVanMT zwl-%e!g@5zOXZT9-#Q1qb`CR-j8g|MXDQdiVxNR`*G^*$r%7LaVyV}2KdM-^Cq5YA zuZ3B%B8O5?KQ9Pm++WP)CeDhRg?UC~0!PDM6e2HJxqGFTx)yYoB+HUo!{}nwMFO~H zGcz`~$3tw-b0ZdO$K}_@8b8V|Lw3)W!XeCFPCv5O^|74gOx2tGDf+io=m8img0E|J zlyo5X@=<#HG#r#JvxAn4JqTYtB&83PUzG(Q?U!E@(Vay1n!oW$K33^EAN2`cgrXX9 z`$E*gY^Rfp`iC4^I5r2y&1Lu0BL`M4SBIx--kxayud3IECE)d~CJbkdw`-%mf2<7q z+0gYCXBn+YR^5m8A>?u7WXDNOaklFu}wykm;LxqvkX7jlIrDdg=7xjx@u3nTZ5 z8v!X8#7Z@xUHU8yAIWXp<8dv}j;>H7?q=rp$ z**BcRKU~5r#Ses8YuR%TI{Qtcz2qh%aQKYCK zD$-OyuwVfM6%^6O3MzJqAnJo+K~Mw{xZkzUnMs29Jn#FvpZmxC+#5aXthM&qd#}Cr z+H03{&X9N8DyCqJDREuD&e%TO>2D~9{~0tQIXG^AFndn-ZijtB?z zwpCloY)+@kYnf`dxNDsjhtrZ(P-v-kmD^K-g7lr`qDN&jR=!wd5AW|(?yKz_>&ODc z9*nI4=V>1ocMHdd3Unh}l=LQ2O@RIykqSQjDcF=n{+0~oEC7RqSbVgf)50L^5Q=)L zEvq#Z@epH0tr`DY+``z1R(Vpq_E}!gPp$$$8gIMY4p98h!q}7)x5r%uitBa=2-)Xe zT&@0w`WxMf`41@RATkyECWEow;~68{YFnA}AF}<8-CndtF{bY}S-OkiD|(@@_%Ovo z^H8L++W?ubxRInj>~`KW4Ryv_BLL@h1tcR^!Cg^BZ0DN)q65WLPH4$aC| zT7`$36p~gZr5I*KVd?~3h|+3>#>r+ktWcwHs{oZ&m{Ff-kXe*q?FNoXFo|InD6cgt zLrl!1vYJswa)3#FEfhl0Ms>F^Pa*_i7m>A-?b3iE(F!YQb%L5~pk}9#2DZ_f1Zfv~ zL(h!|DIJ$;V@g3*8VwJH0eHjQ0Z_^$&K-)ft$~!sBu30jrTitrUA9v`NC zgzob)d1Cmy4BRzgCPf%8hy!a7mB3Mr)K^xxn7WZ`t_-!pPb3AUwkXN<)JA0+Emf^L z+^F*RI753?Y$4hU?=kW!^kD&EC#`TzeONfGD3EKakD)@*+5=2$Pk=zR6(dC-6lzu` zjSMrZ5(nz6=xBW_vECpbrCesUPJ8>fAftMY2Te;305SuJS(zAMRE3W-tBfj5uS05U z2d;FtXxRTgbe9JDgz7^BxK2S~W@U>~3X_rsg1UbgA$-ad{i9|Yz~V$NxTe%3x{fLZ6~-2t9SZ^bZHCm418 z7fJO<@{|_#p|vk^B)g1yH$0}s+K(t(s5&*-U&egMCAT-~+_#WG8U&II{=`Nk>Jxi} zYEqLFekSEejX{n=e~w^(BIO7$YGFgLjLKV-*RNkUYPcb})yyijwLdE19&A=M8xk~a zXeLRijj9Nfn!9#Vq){z-aCo><@))C<0v6h=lI|F3OyJW|y3lTvU~=jb)?H0QfLRfcFs>XJ-2z1|bpi^wsr<(OrTiEFOZgz-AM_b!f$Cx-g~w1nrn-G@ z0nr#{9RTCSy9Sa82LX_msNH=~j=LDZI+%C}DCz{)5TMYHyVY0!{ z8*R2#(h=j#Z!-*TdF;F2{D)M;v;SHa#b|K{F2`n0|J6BOF3$%>v$txTdsb6NZSVv<@T8OxSS3 zFmWjrN-O4aJ#IPDjZ=-7ZIsqq!3ndD1hnP?G@8H^t$9S}10-v#1-K=d8Zbd9-N_=W ziFS=5PX7pfctArWxRxs=jP>f;(w6wR1h^#PW+DwwbwXSStkOa@D-xQSDp^lGtL8+o z5)_&(QQY@Y9b+Cg;XS5+&m#gIXPPg3_}5JHy@W^iP_SAO#a{#2Bssu+3zYPXfsV7o zxS3j150_LIx-lzUNve%mVNnSUm+U|$X&^grGc=G@8@Q3lYz<`425w(6Cf5}c0b@x_ zlj_s2AJYtxa5MBnWaMiDE4*7BA7+K8tEJIvMZD1`MX4=4&N0RZ0vyu9T8M6ad8Tll zM;g-#hTzHc@QJvKRydJ59=0BedxARdU}?PG3P<9@ALC!a5J+z>YdM6JDSly^tI_}b zFD{DvPuwW(JfNuYpvVxok=ryBp;-67U}#q{VI38~#sYJ}74+6|0FC4tSVYai+E3Z7 zqo|n25il@aNeqsF0sBb|j(~v{N(_#Gfo4byj(~w+DKR)A#kw)@608WYM#E@OyRc%_ zhj%w~XU6)(JpwvPqempWtF5<@suKY8Qpbl|CxQr+G9;PR+#5`ybrQJJiU!1F5OL9| z5hA6klMJ#H)*GljTGvgaF{Vz6Hwls&a(=TCvuP>vM!BW{QasZqcKRow=oTRjCS?_t zY&K*ts;()+t_h%~f+|fKC{>mmb7Lj0GOB~xmzZ>8n#2wjDLknAi`18;q$29aHGxqnon@ zh+dtnCmC2>oqS3i)>AL72vBkW6|YVp$c)Nv@|@1t^5skoy9l>MG?HRgIEC6(2}K(z z&Pw~1B(x)l{5h$M<;aGZCM+2fLqv_s0Wr1Ba*u%QdQJGa0FB6=Q)^!VVM3N5%%<;W$JlY>?+-B(1CHI;-bRBXl15$?*nbEAr-J()r%fC z71sljfnh;uSOhSw?g6vXsC0Rd;PR3n;=R5#!~HdtF_V(C(6IkSw6=A+b=Hj;F1F2Z zNPK|1Z-j$2;Eh?YcMbC5B-d$Rjhs(`Fb^P@W6eLrXyV!1j# z+=c00?HUb`5N4eVk=9vzCcEGIUu2a^4|C=6N-*_HmGII7gS+@+oMSlhAM%ETX2^=vRs-O3EAbzWSr2`or%U zfi9zv(6%A1@}&G9E5)rJU!GWHj7R zEl>I%gz#p@%S!NR)gw^W%2E?9Yu((%Y!u_JNuxf5&(UHCpMa&YZ!}uhLb2u!|4GQY z4kF#sf5SYAzumZY;+lxih&4Z*SpZ|K09RLFvv4VZLj{SCB?8vS*u!eySYyj?< z6#e>uWRC#s#MMRS_m!-qu-;D=z>0MN;vC=Ya0HBnJ_bkV9PlI5*^bso)@qEw8<%2X zuJtI22W`HL*LxlS9iYKspdI407P5T&-t0+zh5~ua=1A`o3&h)PX!JnnfQ1id4tyGT z+DOy{#`izFhYvg?B~sRu{Is4@%8@_gr}YVk$e~~2OH<;35GSQP%_yaN)Z5%Cv%#Lf z*t#yIYucYEMD3nSZiLmFK6zf+8O~Yk=hUZt%sG$yIkjo8an5so&WyBYIOlUer#fvD z=X~SmIMNW!QI|HzSC>6;zS?c@ljVsu7APs79|a}OYeTs#a0Y*xtqoOZLCOBK>^4+C z3!KWI*0l{4?M^`LQm?stks>rlNLxy+&h;P&O*f~MF2T5oF67Hc1&4)Z9xV!&5cdWTHDF&nDza zKHMCP#|L3bl<(RM#+S{i1f+}M-E^o_z!WWFN0gpNOLOUO(j=yWj|+5uf?0_fZ`7wq z)(2BRDHN!Y7Dz$5B(;v8!})Xx)g_ydxCPb5Co2*XRdlq1W^l!|8f}KqKgCk(v=VNdL41_O9f+MJ>?HHVi z*8Tru5Ki>}sxe5t_MgTerHiyuR{wnr(z#eX{J_M0z6mmVh3gSGse3U7wVID=kv5I$ z5bL90lW$U<@pMNX&vMG57Uyk;XN9Tf(2Z}vt&c&vVH?Q! z6ne^(sJ^DgT37Aa0X97(N~GsviBu0gm&rot3gNmnLP&}aX?igIA%b-Fg$QkOxM;tP)u7&1iQy~yLc#bj_i}XcmN3^YvOMBVVxm!! z4dViwh02%si?%)qN!_EgWWFYt)rpAzq_FiV&Ys|7kJov%ZEK``i<+LVCL-4WDLITk z`Svm6Tj|%PW!Mj`f|}CIV#Jh>6C^yEqZ6cL75b=|j@LIqfdM~Uy?*`1SjvS}6#R{< zZt1yb3H~rSu^F&vAlwMc9hMBmfzmk{iv`jZmw$2qkN*0DM;FO=ggl+^RDuq@(Kkt` zWx8lWjzCdky#sftg##lX;GaN}F{?@bN*d^r(M?2#r`}{5X*JuBOmYv6R@(2y^SK6- z6Ae@AYS^OH9yYyPQDO{+Q+t^Xh;mEKCS&6;4qft$E;c(-)E zc9Hxv7w$3+m(Ne9$;ZL86u>#~TDnQEY@~RWq6Zr(0C#Jzh?s;!^KN5B9;g)&uHEQZ zJZ5_aw{97Qw`SlR6=ss^nAtm}M@njs)Smr`qheKnk60M%1oty^VC*5n3%zcKv%-TU zwkw^n?FfLKiVIm$f%Lvmr{Tpp6z|GGAH%sxr;IAsR1(G?)E7#wZ;8|CLHsGCvM?}! zPQ;af3v&s>)W8s*I3G%~VYsH?qOnS{bYToKEca+W;`vZ6y_>@?Du-k!JrWmU5dPjZ z5D#WyUj;uBp=OV?BY00xQbarUS_JXm4ay2tvuA?|-pk>g?Ff(Iun&jVxy%bei;%aF z!wFn6D!AIHW+|Z`M5)=VV1l-wNftFr3!+-SYUeep*&ERW=L8Y7#1QNoO0X%A;5S@y zp=mVo&IqSm<2nD+0K%VPBy%}5O`&G*#3=H6|WHG51)k{PjHGhTgbzcDJ9{hPzMSi;wGT!<#TYsf~l z^iHnBNpQEVcYtUKErtuncG&K84GY0t*2rSMM zf(As5_EX!?Uqq2d8`vm#(`ex2a|SleoMWDZy}Sy~t_|!$XjlYMI=(`P0ks3~og^Z! zfsHd#njTaWN_kauMG@7PryYuQMI~Wpp3Ryd`8udc*zXr|$!*a@b)j(q<(hC!VqKY? zDNqWjPSi9`VSs_^#wt0r2~;g+zuQ>=Br6m|rDBvTkm+4CWe4h(s0L0A1Vxg~NUvo> zWU7$o8!A&7oXU{%#YIsmSv<{zhwhXw2UHMB`2l6tvI(*z9)&=%luH^|7?+#@N<>|B zwy}eG<+Lt5Z9b*J62VBH#1_cZ@i>X9=J`|z3_I8&Hj`7M5i)kLWkez0M67ov;pIUo zt)8c?V@sGGn*GS_@(?IR2Lr1@H%?-Y5rwo-+=AQLa+bi_MZKy@V1>rlRYvx@@TRJ; zakuae@biFU8`p?$s?_RqCE-CqM*+_&kE%vD_7L9zT*l!R4xi+3KZi#ZZzA<21<8yC z$H<=5e+cM~A^aO7!F-OtD&eY+!PyPGFMB@h9hJbYsy_tW3ckR$s|nU}n4}^6E7fO! z+X4s=(~#sF>aPJ`=KSj%7Ws4aWRF9iFm_A8hblF@U|xhsF_Yuk5aN6+5EO&n0X!Y{ zJ<4ffKLf@J=K+fas%0np6RCYnB=bY~HNfF|;Id`TM~mvQjpIWIe#l`BpfC07I5qf( zLcm}j$HJcMT@IJ3^x*s%NgP)!N;7ni4EE>Rgth6|#*+$yS2&!CSHke@4}GC#160(C zx-fz}^#lVsKbpgD3?%a-hh3uy@5fk`ul>~o@BY0PPf(jMEIXZ%u%>?_# z5Ih@7@Dy;lOqKx8RKqK%b#<_(zy@-!`&xa}-^QSzj+9qPuvbh+f9=W2F5vX$Fpk5) zB5{UuXyBY$j$Z@xm2BbVuTUj{vqnw)uhlJOh6Z*=2{}rFH5~o|2+uT2SEIe7 z{8R>Xsq|CBLDl&wN?XjS)hr`C57cX%TFVq6g=&#q_e)}?V%iQ2f2*~#h1=8!a`yRrFe}$(Eep^+qweZY%MIU)_f;jydn{?;@2UH+akAu;@XyqP z{F3vdzf}+QQvoqQsx#S8UddXv&wO5;%_hp!e(lFXwqJ5V$VH^(b|S`VHX_6;+{(U` zsmIKM=2ls9t>wXJohHwpZ=%Yeq1epZFy#YiJ;p~_UWy9W6#1#^amD=fLTc@v$c~!Z z{An?|WKF4`QX2Yd%Gj!SVytDqYa4`V?2t^o%c*lRwTM#|T5Lk{B&S;U?KGCp(^f~E z4yRJ+k8E8RH$>AyJr8F&2F&cL(s;{P&O_6J_G&Bga*gBb- z%c<97>cYgyMwqFU=Yi%pc%&bPl!gY6{#NYC1KQ#7*~y`4e%!i^411AD|O zQ6B|12nz^>A{HV8}ELYeBwDXEmz zmi4;%nx+1HiP~@JPLyn9&+BDsqh`5g4cjbJ&uH!iwM(K{bL>XVJ$Rl??Uka< zJ$Q7>DQ$lHJ;FUKRi;YX8}NS5AekC$+NimgWy#b?(>73fGF6BA?qkI=btme(k4=`T zBS>4zrpeT2NL$NXGBrQolCX}|$<#dop==#%lqqWa{cNdBQQPllt2woh$H?{UIZmx* zDKQ^2+I&m>wU@!i>EEtP7c^3Y-R&w>h=Hw z+sra$>idw_G+Wq6nffE-O;AOgYGPkUAJuGSefXYvF|)_*5w@}-nL1*+1nL`^`V=0r zwT;$WS>piGOsah=TPjmj`&PDErjF_N2#>J!GS#d%ut(SynaWpwu6dL_E>k7SW>C+{ z)GdLhHIK0aGBqObdr+^*)b}ChG~3uaGWAEuMNpq|N@~$|_5u&?Qj4~;Pi1P1;i_gk z3mi;ZuVtz@rS@^=<}EbD)t=& z)T}_D@{K(2Mqbx*N)h_}#BtJ4WFxt54`3=+vPhE%`Ju7ICwT??K88w=ooZMtY@+2Q=vXMU)H6$%h<8JGhR8Zw1lB!(bT)&dVCOYdPBk=F zu@|Aanmx>QqZ;vEEHqTGPooV6C5vj`(&{y^u*fV}nh30!w_-9Zz^wuPjV)5K9) zuCM`TmDKmUZj5ZU*5AfjLnK-fHp%6|p*icD*w+V78{z8GvY7*yH#AJ|ePsITyKQ?nbMjt&Xgk!~1JDx5FroPvsW)zYmj9uZT4_)%7s< z-U0Bawz$Z(y#l`#*#ERf-zeM8+j1H$#g12o23C)Al@s9@Uw}B*0o3E{<3zZD_2jTW zhv^*Va5$R7@f_L!Lz#o)GdQg0a2a3}W^XEUJ%_siE$n^31okVVIptSIb4gc$WYPh9 zu^f(%=WsL6^$Or1wq7_EkikA<{|?Ou+!&)~n}ubjViqZUA6N?59BT(`G`ZOeJlAJz zUie&mAC?rWW;=xO*tc#LvWyR~-NId#oq)=ir#ak*Gtm>_N7ypq`RI=U7wEo(JXvFh z@JP&A_9pvI_bbnPnRBjls1!B}_Xp|#$D87X9YUt1o3L9bu=D`T1Y9N@SN0Wj!UJ&` zfD3f_!e>Hn{g;?Yb0Ukt`6y7$zUOURCX5CDdqJrmFZ?RJ+kUbTDU#(oh)ZI;LI?4Z zk)Vy^$2qPu&I0E*1Hp}94S){a9f0ffO8__P?*zPs%R9on(5EtL74*z9-Y@jzCGUWq z-Gu(4HtxzHp$8g>eB zP~5k|Xp!W13nPtZg+O*K<^o_mR(;4Dz6bJ?xo)oqG=TqSy9=<%J<1ON2V#Y=TZoGe z632_T#hOH$_y%U?-NF|!5u!s>w~qrf#Ks{tKD>w6L3};nPC*bd+Jw8wrRoDwd_+>0`u=1XYrw#fA& zS>|DJ89Zkz;CXmde=$4yQD~x!X+$|^qj$2^Vo=ad@iTV4{ciCT>!!LSL<(lrUdWFO zcoQ`?$Gy)>I4v558QMMEoVLi&f;iOBUlGIG8^c>cb{?+SEvz!;f`2sJrs&M_V=oAu zF^(yBehy=YaE-Iu-$_#ZRl+1CQAj%dl#2nCAhZ;8;6QylPsQh3YRbEl9fEQ3i4gp0@yGG>y=Dx3ZC%f0!FjxfSs5ZFp;eV zOyzJOhnbu|l05`|A?Hlsu#7zi&UDrc=wWBInRvFeOqq%G&@yEi$IE2=9@eB=z&Q&z zX90Fu+jWQV+_=APt3bI9b9kCVg-D#P_*Qw2?zH$e@N@-nY#cUmxS7LOI6SF1z?{01 zio=jO#W@|6B%jWqjl(7mH*>g^!&f*w%;6?2$sgkIB!^5#91Dj-Ih?{_BZr$fJjCHi z4w;_hr*PQF;U*3bad?tL7QoBoa43gUIBeu_6NiT+e$cZhZBr1}io=r}vS7~P@Fa(< z9WRr^q3t@tVnaDTh2v8=-pJu54i9m7l0%z;@-}gpZX(>qVUvk0-^B6F9KOP#GL-l_ zc1YD7S1PXQxT@KHl?&GlTuq=Cv%RWEasLMNt-_1&Mm%X!Vd06tP<9)u!-@7%_BK1o z48mZ+h56^8@Ry(!`-&YDqZMAoU5a%IrE<7Zk99}@R@-s-N~I(J(tBP+2v$_pnh3yy z27)Pp1dqfK+@pyBoY0>%`hwB1bXK+P{O~~6K8@l6|gC=A5R^O z^=mfPdjcBN?kfFeds zJK#ltA}hvPN?>CFMZ9Nf20ji@#0gp`@Y?`IJi`eGJ`qsFlaff_lL19mjgcxaC!ok& z_)-sFYyygS<`M_I4p3yX@DxkHx~&87*%;FTn*%7axp*r{z}tB7z#H&vOJMT>4fyi0 zE8xc%_X_hx(_pi~e1)Z&t>#$sLA*0NL@`~lUGbJ8N|~h`Dwx?PX4pdrWgoPsdpN%{ zA(AQa{CB7j&CHQ>k7bRJ8!E)HBW4lz4s0D>Qy40AVh)pnWeHtaE>=-fj9pn8?n8xS zHa}X4dv_KPL-#&x0hb@h9t3}wFqlnLsldO5eW0WCboNpdErc`K^*Aa&o9&6D`*0Sc zQ-hx)>r=w&;;8)b>@j|y!0zDpNwQoimt%rWzPng$J1p!4oc*Arvsz~_uA9lZd?73slKEei<2_s*&I%iLEbU7&U8<)$L^NtA!((h zJ^!Id@OjR1E;6K+ZuzxURko>B_9;DCPPVhQ+V1vKGiq&B4sU&?tGdSKw!0yb>+pDS zqdYy?s4)eZ*@cDK`9)*Kr}kpD@|m_82ar5RncL-YP4lLdIGmu1T*Wy~FOWgyZpTb} zuHEakyFEktpowf)t+Q-OFIF~nj2%swX)o`^s%lzrstEZUp2B*M*IrF|Qswgc_J&#e zqd~6n+A8}Hxn*q7DAZx|+H^u@ z%Fbei*`=e#T1^L+}rI`i!g#}c1-l6+QJls=}YcoZeGlA^-W zLbwX$_A_Mnkr-0{rsNdJZSeO=Avby{+FqJoR5T_hqqr!$utl?0JgNj1$E{G7~! zEOMB!Ib#a)^DqYd9aB(Rl9QiRPy*i=$1RePlb=3jJjn5!%pNz2T2pu%r{r5+ac)r# z@n+hpYVD<^G>B}h!tO22vUzRH<3q}(vT9G6%U$J|N>PQSm$~b!9A!+lU#6?7%3eku z?@1YMciP=ZqC#@YQGHRR+ioidTI8B;cl!Lc9ED3BOfo*tEXNmSlHZoI;dYonB{ic#EAL+cbNDlVVAgoy53Wo))@g*fX~r z3s{aP$La7o5QSzV2dbE9cY6yR}r5U!e z>3HL8n8RKLZid}nQ|PL7mj68|$5~VB9p-Y|E8I61D8f%k{ik$Z09E%-1&pQs&9_zC z|6ch>d;QH5G8|4cxuC}G9EKnNx=GITsw!7qwx`TibCblP`kQexZ614}-RXgOXWk@J zo^4jH-C5zS{JWaa!_9;0-;**cT@D1hzbBB{{?1Kz)}zgT<5!kA%h?!v1?C!eJ-63L z7=SyBzw7vjXrZ_>we34DaYKLdGTL?_7rTMwFRi5`TS{xitE_`sHJ;g{FwNJw+-(Qe z82dCkVttui9&WB$H}I;O>{$+PCVr`nhLs#^F`L*~VOz4QhI7m7_$|v$gQl={D(qF{ zw%b{m(_8GZRoHop@-To2ua@s9d33GIYon>qQDsL;jz=1_Eu5*@PMYUi7|0|Akv6P! zgoX-d8&+Xut+(7&*OpmOhhXEWbkwvFrD55^7~`!!`NVn2|Y|RW6SYuWTudB!;zaVkzW45x?tryaW|gGWZLjT|MpEI)D`avioXAMi1mi=1Nh1?Q+1$j#TEc5* z6qqUq$+y>WYhYE~h|b~RQF<@WLx4y^;=w{E^@L3yo` zhGQyk5iF)PfMc42!UBcSmJ~n61EZgU7E^00DoDPC=iBtOaG-!3T3UD*$oA@~RrP#i zv}WJn3ayjm9Bx~=z1rrU-jY;gbHfGr1dh3)RYG|khH6!dpro(eJ;DJKIa~NXZD?SR zMX<#puO+b%p%PA8Kg#Z|cJSp~OPVhug26OLMXfY>|2;X&?kRISYH0D;k~pl&R^e$O zrEcQGdW^lwHj87e(!oT}IHX;p)9bdCd0R63^uQo5hadhuA=6b;?{-vFwo3AK6m<7u z4bhUPW@ZbXRacF{C?ZkLnJIq;E8*>v8mMK;fLHVmu85ySD}jIE00A!1kJE>8$P zXHLN!;4E|0P>OvBtAGMd{9G8rjRTY-Lq)BdW0h@VK0EGiKVWSe@6ykA70h ztE&9xK%AJ4iP>J2+KUsl@KhNsud7B5&UJc`%b#v{&g6J&-@|ys0Ti#V)a$|zE+K-z zE32h>OFkRot4NxZCI8^Mvr4SCJzm&MB5Nw8yEJ)8=8!nU?O0FSF-Kx&OxxMfwRU%X z3y1bz^4i2#5+*ze_4@MA;TUq$LXB@ovs~4LVuK)KT)qGi4qSQ7p5dC6Q-)vJkbRe7 za-+abn*(W}%G-1_ObYNhm=nC1|D?5*pDoYBa#mhZD`(?oAvIg`st}^2Eq;qv-lT{9 zRp3OerQf;f{X0SKt1Xl-y^3*gi&`=(foIy?41o*&hj`AHlTc}{~8Z>m+1hle{PLrjoTFz^5Jmzw9XT6a}-HuaFNuUxt#ca15q9{?`oT4LG z3Uvn{zo94PA?aH<@uHCyreL6eRiWJS0udD5Nb{=K^gXOA;#;iIiM@^p@EO)I9f=lA)gbRglugiaG*D>0bb z=kX5Inmr4Pw(?f<+gRG2VCCSs@%chZ%WmGo+HRaZ)PXb}Il{vcZ7n$^9i~VmhO)1l z(HtHWA%qPwKQZ+$`Z$ZiXd8~tAAJi#UOEp49{hrI~<_SNVKR?iN<* zLon_5Vh8PEF*Ep5;3V=A+sE;Du(WG~q2gs^{9LdE2Z-N7!j+#3iJK zr_AuJSKBbD9I2CKsY)p~>BL+$r5If}o&hec#z)sW%BE+RgO*2d3j;&EY`UG2csG-( zv}E=VG+#66Sd-c#&G~M5)riT^?eP})NyNG;R|VRNGX|2DG1x%Ha6a0yr1hDD`ii9G zPLkN;Sh(o((QScRqK^aU9W!7H^p5V2m+#Og5-kdP2c+vBIE5Dy>dZdvO~uI#zVm zk`CT-ek{$gf?6+jB`vb~*yOT2*GxM{s2k~Qnn!nzNC&}rc4sZC5P%$&7r=NHek5p|eF+S6Jz)lW{^>R;_fBXXg<-dlsv- z&uTTw842;p64szyuB~1U3#}e!!({xiwq&~WTDa3F7aXvjuX!+xu=l9v-HK(2+UK@Yz8hJk3>c;(rvv2J5E@*RhZ(hlA?!AUhz7-`}7 zYU9IGe)3K@Jj_SQ^SUqMU^PcUU0Qm1p$zZA7COg6rzZvOZ1{3Ly_=xuh!^xb;ynn~ zp%CACXW^QP@2M;B4v!n}FwewQ1zrU%W-P>4-aT>k;rBHBe0~+)fy1Ln{FefWStJ!% zhdfT?av_%sm_MZ_)ldZa>9`l*%^fH1SbO0+atGe&xk-%!DMval-+|JcvP?C~aN}*C zB9u>M`S@+L<+bG?tqihuuBDxgM%!HY2HbYD+PY9}h0vxJ66KI14R4}V99d}^%BV#v zy?D3D1KN$Zq{v>dKwdmb8IP+7?^5N#repB#)L7v0c)Q6b?E&7loQZgcstD&H()&gG+HZIBJ$sRy*6AN!Z4(>M=PcGp=p$-&U1vneh z<&dMwr^y9cpgg5gx)Taf)ue``5SfNbo(9FKQ>iRcja-k7FN8x4L+vGSmoYHlL>S(| zyWRx}7jk*QBLg_)uJxcSGWbNi=u?X(lan|hHI~=skxOUsZBsKKOGBa@d27*1(jSIM zFOu~n8{F7->P8FlNKQz2Ph4fl;o>@SWNa7nNGbTSEf{ zPSG_8uasu;I;q2b_9}8arT)Fq;&_9EUZz3~6gDipZ6r(mNjXyR>L9+1 z=}9h5b&w3XVLk3N)ag#czycf1f|g$1O0;uQ9_ppxNEVWOQL5`^wIm_GBt=?~b<2^@ z(@Ogmx99rQ6Qn*SDbk*Npb8jyEDa=y8>2p!$w3tia&P(sE3iD&<3pQa#0qp@|Lv+yi%JlrZaSUF$Tn}rsDM}Ymk?b2a_8boXAJR63TuX!zbSi5YD|eg6ya(1kQ_(~f6~yE+@k`T$V0mB{|T2E#oJ6FlT1&u(~UM_$%RPq zat9{;JeV8tJ`#9ix$8I(3~5-Oz`lu2sgm2;P&W;F z3PNPBX}D-;`UYDj(xjk7v(|$*Qz#P!NJ|;1`I#&iPLYFdpNN-oQO$)k2ZC2pyc)YL;o6nu*ln)~WHW^A^JNQoJJvX_={5Vp}PS0W=fQ;>E=~ zua#^YZN|VVZL~@KpR_R#Wwx{#&+O65w1BCD?ycunoOHkfwA!Gk=7CN$G8 z0JPL@mP-9ZwyTC5xt?#vD+ABT9k7D8ti=ggKgvUv@y!#`Fu!q*Y|&Tl&7AINJ1t6S z-fOEj#mg-88BWTf2{}EbOG`(ZliCgsc1uf`q7@0vU9^^>dF{XH!o%7~sRceCYFh?* zV=YRPRuvw;QmbM#*HY+{R)18B+$tU*GNCW)L_L`eKP`ntixCQG1xIVMQc%)zSPCcP z(Ja12Iu~n+OxPwDl6kmiViBH$oY`{t$wWzQOV5Q=AuqEKdBz|=UN6P>%~U2d32iCc zS92l$1)Py+0j)gn0YPCG+-Y+_QNjYNQNW>=(=18Ba~hYlfj1NOrEo~=T=MV=;Izu3 zt&4@*oC1Cd6BG!Ns)>jfEIfz%6RlZkmXv}TRyP$vm6I<_yPCV{kKuKBZ0#AQv&V8$5=jSwNKBa9l2af&g^m=zIWEDtr# z6SQgr6qE8yp^RB5RSecJWib8W_i5;+;-aLO8NXw!M&=^pxQGZ;Yic}#Rz>JF_~1pW z*J_PbDkem<6Y%MY$!=^s0ZMDKqfC7SKm`762{9(ZWN)Vl&}w6i-Uw|(M1(dtm}>Sy zAQ)weB9$zPRJ(xkwMvZ`AoBJvGB%zvHh!x@+Zw+oac)EWriaSdc-7Pd+SsHrHtCQ< zt5x6wc$6b>On|f?f)z|iu*QP&jZLBSMTl0RN7rZsolv2hjJ0>yM%l&yef z%+!>O+G2xa6@lo4_AJ!Y)E_sf6HF~^8r)rD((>wJO^r=jT)|K+7X4vrTxOgB0Fpx> z^gq5TAxU+psd2SjMmjnGIba853o;0zDA$56hasQ~i>1a=m&3u1a8V&xL^e~kR^LMu z$)gPI1+`u@&M*!|zoLpG!2!_NSCmRm-6VAuS(faF0?>ldAqGL=6XOjmMgx&#Y<_MM#56Eq5L-_v}d9$p^7s2OewUL zXpc{!MXd_97GhiXsVY?CSB;d35k=A1xKNA@#!!b7z-R2HRvjdlieA#;b0Z-jMvPTO zv=kvXDORP8RiOx`g!9K3n`WSm!CLZr6>fWHPaGTB`{XjEh@&GVE{GABat^>kfd17r zCH-q_%Au5Sh`>esgIG%VHd9g-d?G{ugGp&161~Ti@HG76p#<;+62k|m0N4iNUx_3@ zpZqBCiv(6Oi91MN&jr*b>%3+=u07iH9njoG%md1Of03<u2jz)~9dJ z{;9p~J<|Gz3Pqx!aJr)gCHWuC3u1dg2vLMLDG@ri@*Vn zQSK=QW4Rs$Ae?Bm_?0>QQ? z#i)RwFoKO*%v2aO_;*6+$4HCBuoAbe2Ct?1-#ySWrruE~IzrBJ3 zQ;{4#ZZ!E{+q1m7!(!>xqgN`)SW0M>c+yS74f+(#XSUDymJ%&o1)6CYj_LocLkkekr}6dvJ(9k={tf^9Fi` z8$!7({uB$B?u}om`A>~V!6O=ak0`O#S8=2dg)hkrXe5vXfi0X)tRgXpzp|T$$5#$~ z#{z~vT^O2HcE8FF)7(!*VZod2qUrqVcR%QKv04*Gm z-m6bvCYxu0&pgxx)`Dj`W;`0a@};9|%z2}-GHN<9_UQQfSrd<}e(I0kzI*qcVOu|3 zQ+4*~r15(?k1Wes>w5cR+k}@pzrCj2T*I8+7do#T{J`ppVPT3-+c%Y$9cmhywk|PX z*RSp)JxdN9SX|yeW5hd`UwL3|^tkRnuBq7-K0^ESXIG04uI(N8&D(MB|MAh;YqiC7 zC3PjmB`Y5|Ft%UfBZljb-Z5ZppYUIH)_$~9{lWKR<}OKpG`89KzViL2Vh?FXZOPoa ze0E9aZvuW>y#A%M4I|1fub6av>FirRnb7aa+ZLaH<4{3`(C^BEL7!F(-#NYCi5K>M z`|!KnOYeF4hcj#L{;OZZv?(9Fd;O0;3fC0AR`gtK?^ti#nQq4vYxTdGkLi!)@7UY1 z>yllUpS9nzefZ)>z8|yr@;yV>f825W>z}hfv-bQI@Y%O>(~pf^Re16FrmZ{>F3wiyqG^Tb6Y_A=wna3_~^J_3!j<$ z$*41HznN9P=*O=5`?k$}wz|XTA1|2Mba!I|KDz&{)3F)HbjJ$Pk2W?4vsJ%6wW%&W zu2CJMk5x}n?ALj_oQXJNJ9c{0hnxPLUNO{lM?=7$1;b5O-!wio-1O6k*e9kx*X5&b zn!-MRUK@8HzxMk9c*u3fZRtO4iXOVRX-LlA@&{7Aw*~#6tX9=7n7JTh)1B$-nx0fn z(hLarv+h`zP2JNE{_FVnKkxeWa>GOR`wGfG+jMGsX-Zi2=~-dcfVFAMM=txRdGWK) zo^uT~Hw7&l|9;M)H%$iv-qPf+n>Frh-67BD(v%s&=Q@| z>qO-{`yHkN;bF~R#_fT#9{;g421ljD4nk8B;HQaoemj)@d8g zeq9qNV|VpwI@qh}V7I1&1DXydG#%{Q^wru! zu7ZLSGGo5`wQs_?e(~q}bvf64 z#7S4qNmt%U*T|E|T6+JX>yyR#!(W{}^XucofBju|>DE=@vzlIeVbkPG7p&9f{Cecn zhD|4CTuQx?Htn;4ohNJG`S-+~<7OGp*(RoTiFdM>3+$y&pEF(jr1NxFWOvoeo!@+B z{_86a-8rLE-r9Y-S*S1GseW?LiVG7OkDfU_D{^?<0sFvtuk{`L^8BW>cdmrzp8TWB zxj(klh8%3_sQj|qj3L&TC3C*+@zwQ@Hfhgwd-JQfCF_swd3oihn%Dmwch})T*Ryqh zRf^ZYR$hzO{Wa2j>5BQ1#&k(zzSQ%%Cs$0kZm5~_<)7W}JZ#_ecGD+0@9eoH@XHRr z_Nt93Q08Nm*KE0b;Oib2&US7NoO{QvOK)8gPaZveF6`u;p^44Cn)QDzox0(T4kxSK zbKiUZ?$>OId!ydyUw*aP*yHhJgW=!UmbtS^wqmD*;U>Rt3FG4`RzsDbnI|> z-sE+kX0LcG;LSHPUhiJsZ0t2Zq*q1A+WPc=S$ZCR_x2sH9N0dp{qApi_WWh(s=0+D zhKxwMT$gdh(QTvgkG#h!j;-mqMKOAB#HoO9T~G8|y8pfn*Y;K#cRc^s*k#_|RlB!L zU0t+Ce>s11{Zr%0_KthL^vBohr(WH;=-QEt3o)DPR~-B6=xdi#=Wn<-!1=)TZFjmB zUoy?JzJC3sh}22njxXAL_)3PxnPW=+bc{)CehGNu=OWYa%8;KfEZXx+ zK=u6inRAAWKmE=#JGKn6f0*^z?Ps>kJu+o}PT21&b_74utT^!geD$!8K8k#(qRWQE z+xLHb=J=bdo6kJ=Vdwnix9xu{d2+A$Zv@XjcKYIy=~h!zj|cxXaNlR)uc=@ksPvva*`IQ;RLW73CGo-`r4`R># zIefx^jP#X}!Ef(r2zdU$m0Z12k?_;!5q&eaeDX|F!@;Ac@4o-JqdH})Rw>>4q5 zbHln{rkbP1Tt9zkNU1gA%z_VQ-B*8cRl8?jD=0Xd@$%%-LqDx6oUo$o@SNc#F-NQW zX`Z-s)q^Ff*>@cOO7&#-2!kbN#*&VTt6`ZJL#7O$A9Kbte9(b+&fTvp89jY@R)%f) zkNWk_r;6LHKPAjxIB0D`TF=im$ERU^tnT#9AB#GL+`agVcMh>Xf`a#JPK>UaHR!;WIhS_yaYa5+tr6e+ z;*%lXi|Zl_e!e@cAba8`ar3Wiu@5hKH+m23O{Pfo+9_wOCY3y3m z?zcY{e>wTt{kN1~JdpXbcF#)#Oo4xHNM8GU^{4yZ`c@bHMQC!o=dF8>90~p7yn|Uz#0h<=4+Yx%iC-C-?jOfcnK(_NA=;ddbwEuJ@Vc zJ@fs;eSXs9|2*r3{d+e*f9l-FUmRa~;){&~=WoAqA@Fs+XQ_eEHJke=pxSVf6FU ze%?_sWX|p%K73>L!|j&T1^zVex%iLIf4aJG=hVAb9o#VI_XjsGJsP;J-z($(+<$d+ z-%fXZy=rS=kHwo?)N_i40-Z;O>y&@=%*e}yMFPNjZckw za$wz=XC9gIhjY%h@B5vwJ^S8AFV8)!-*qS^aPh^W>Q`;2v{4s7I`G{KKTO>E*6yGF z+^^}F;9BYNKK9@eXY~GU`vzWEyF&Bi)o!0$jeBe4-sYmS^_x$xe&egJX8uq)Z1yj4 zbL-}Qa7)&eUFoY!=iD*xsy1r#5AQ!VyJW@A$3CC_v*)9a-dq3dq2hrbrXC%*w<3Mz zfjJFVA9}d`FL(U;S?%+lmwx{91<&n2{P5jJpFDWs#b^Kh+wqT9e-(Qswx-jy=k6Vo zmS#AA|3`x(4t(BekfXgy)A6ce^$&xGWc7CB=3O1z`Q-WqSB<3`f0-JvaM!z=8V(Np zz#RDd`zp`bt_x?(?eYGMN&h|&cKp4`Cm)Y|aL!%*;#Me{o<5-2Y-(En;$;COq*W~H zRWhAYlC*UOfX&G+S%3@-Fs zn6q>G7k5AO$I--%lYYHr%m=3Z4=$Se!f(57n|X2Cm1W;eh?{(E_D{&Xf!CsA z0uPLx67cFXZ!5n1c7u4EVcbJ6&%UDB8F&BBbAEpL>~~j3&3s|g(eA3@}9?a@mY-f=Bw*~E!XVdYa_{d9EILqQ!EUJ+k&Pb;cu) z7d`NF!^2jS`>^(_XzfQcr$MN8gE{xlfb$I!OS+4~}-J9~kU7eftin48;caPln{DMW# zjXjd+cwv}%*1Z1DHE&w~T=tR&?{y4|ioY;)$l%*Dz74#m@6k^-pIcl0*3P;wc65xt zecS6Hhu{49wE?&5pRasiVd|`B2Y!|@wVh*FLf)wtw*4@A!H=IBAKCJK=JoG#x7-&s zY~rD*XY73rF8OYctKa-fCqCG?`GxqG*FXFD@18Yd_=kL?h zKRSNmg5S3P;_T6V`M#P*gD#!e{B3xLPKNR0(khO3UpRc?==Wak(JQ|6uGyOlgSDyu zij97HT%|o@=XX7yc;I;2)ug7A+Yi0kvuV+o#*Ou%g|<`gRz*HobY{iJzm48@E}-He z)11H^b3d=zHf-dMf2H?-VEDFML-&-tx3Swb?YP(17C&}(L&EOyhmKV}tv$Z{)7yT1 z`2DUkpSOi{`ZD_I+lE}!RlO6?r_-YQ-aff^#(=K-3m&Z+Qn9FF#77?=p8R{@gSB6W zWq#EzC;9Qw7wdY2)ONpqa`lNN>$1DwH?T*aUDfKH&n`a^^7G})vzN;sYJX|0>$!@^ z*Y`dUaAeJ_D|gO%B`B(Qwdsec&)R-C(sAND8|RzD|zVJ`4MUD)?eH@;=#+)UhBQ-+U8vy z(uVHO*?q3oJG-BMrfEUnb)A}AZ8#(5?YS!oTEx84xS++l37dN4ZT#*3PH$XtXveI+ z!&Bq`dCv9zZFj6`=^pdzku?#!YlcTZ*dg=#dLhHwg@4d%&d4DV3;%Tgtk>MRqZYXH zPp=->{8E#rA30s|uGwv)y1cS@)w-p3ZmkmZWZz>^K|gK&xYwG3Q)gB$YuF|@JbTB8 zr$;aOJ~VgLiOBv59Tr4~_3QV`8<$!~KfUhmSEIrUDhz%leC$8+r?hcJ$1UvXUb3vk z(t(Zky|rU@op&RahkRC1J#=t#@TraGr_b#)ut!Y2yeC%nthQoE&Iczi{`qeSixa!O z-K*`T_j)uMGidYXm|e9(_UC@GKK7S-4gNkdF0RjA*B*Ml%c=YB`z~_YuF3-k4sG(* zcU=8wAY!-bw(*UbFiyk}ZOwmfyQ^{g6Qmc@0;-#Ft+-6jj0esiSi%-`mZ zj2v*O!@|KYej9SO)#7pSjURk;PD6eqww;cNUCxv6*e(|otEg!wQ zZ(7WO7Y7wAzoYe%1G9%VnwPnCNaG=|Prtwagd=r-sGfWGYjf)~9#Hkf_U^8CPh8tJ zB`ULBhr6@Cd~Is_YZbn~Blv3k4=*gbdav5|&94?j_gvAe>B;EbTkCxr@!h2T4Wni@ zZ?t~$8^Ood)_e2Ii;I`^`s0bA|EZL)Z*$YP+pbAWd@uU5`G+>YzP3Wvdo7-F-Ivt# zoi4raTReEhwb&isjBWF6PV4M;*G_jhJu>g&`tAdt81HHH>$=5*KE3y^AJ4cl=|b*- znB0t=Re$K%y3W-7$1B!r7xzKE-v;)Z)b-?d4YstbcQB~Q>I+{y^-AvIS1!|b#CzIy9#Uk=b!yA zTwObS+*2z@*6KgAQNer1+)FyBcb|PFs_yuRHb1QkE}T_(KJJ&%v(Cm;Z(1w2sV8i1 z`S5kU|NYjc4$WtMIrzZGySfZpH}dM{_KB+|c3!e?Q)0wDu1R^L-d;JV^YXbTzlnNy z!~BrsoNHm*mK=P&Y3|Aa_r@2j=+tw?%yp9ruZ@4Q#TRV~4!?I#!SH!o*3YkB_{f35 z$MW}1J@?qjb{QKtY;k9Hh>34{fBdgW{o3cYI6r%Q@Y#R&Yd?J9(TVrxzx3ukkqf@7 zv~Wn(gR#4-G@f;Ae9#MN2gi(^_U(}o?hS2|PX2uNrgqcU?u|Ut{+l_URQ9SJaNj-JvMW9yZD~gTrnRvLTdHLg7FBgzH*D;C}#t00IF70tf^U2p~`v5g3!18R{9A z^-kKjEVYbAbAP0sb|eSJv)3 z@mtdO|Jk_S>h_dM>h|OybsL4GAoU*@MjPS7Q9kC=KdzF~3Drx?A zq*hY(fH*+VaX>sIERcUOIK_hQUvcA-=6~myO6tzB!79cg4m*lq0k}w5pnMP(TTw22 z$VPGbrt-e{U$$(SnwOVn8t@v`A;!Dh!RjvHAH&YEfCb_qVgd5O`Uk^9=p!T>Vjt1* z2rAM?#5Rj_?2CVY>dp5AtNDll1%`tr4}=Aac|Y-qg`hJ&9F6^i>kE(ze`qr+Q_}qJ z2L5+@D(eBU$ah!PFwx~gz(dd%Iu;-c+mj8w!E~p91@;p&Ui?WbY5qS-udHI&oyG&o z0|k-^jLonZ6Kv=Vp`Ymb6EGm1;SaB7WlEa=JsFi%41|L>7AO}S4<;A9pXgW!x>M2_ zq(4b6%y{u9%@_av=)aH0RZ;hh0}L=0upmryxk%Ic3F!+vok3#>^$~w~H7nzbf3y5{ zX?wG(sCzTD@G-=Q1H(kXf@H(M!dos-cj|bEvH|^r#u7U^oL(e2W?ypF17lvV0=~JUkF)M4J-f;lnImvy`ONop#GubP(*+7 zF@)<-r}x(`UrFEp{S&IG1rw^OECwtJL@ZD?5D(rzFgCEz`pTY+D(1SA<3Vy^$CuOV zzWDb?{~dU)8t{(%YXRlKD=<7b4%k0bq2|U887~% z-3a~>0~Qz#ga=@NSddHzI9TcoFWu=qj`+i?Ss7pa`=kGk=G0J+Ou|r|1sw}rE;QLV z^n!ths4pzB@ETXEn2!Jc(CdqTGra85j!mwiA_f!)ha)5tJl6V%11y;SEZR@(=x}4ca(ca_`9CqOrm6>yg^q(D8-&Ht9786UTnMt^-AAeP0 zv{N%{si$UWLBpXI;8Dwv2_IM-n+&)J`jd?#IG%vc#ADJKC>M5gIK5ud{1?sw-Vp-| zURY?dVaP=-K`soL@X{H4EIGo)RRag7{MqFzY5q^ouC1O13=jtvBpgUKFlO>0>5CJf zGtBgbms|iAc6>R#Uef%3l3QD40de4=2o_#_gyX>UhIK#DG2vsYQ~vDo`QqOneRAf- z+A0f#1IB~}$pplwXVq2Sg<`q^B-00YND z!$ZVD>m$@ZymSWX3$c%ouHa)U>QATq+2t!~{y(2rS7jI=4jc=H2g-yb8@jF#`v~+E zU0+~-k?=SysfwGPOZcJXBUs=cRX7gX1dxvFzzP+5X`d)(z+&2RD`A~*IpnW5< zh3k+U_yrIMAP_*{rXt|Z%p3-O>u2rWb4%NGp!qVV{c?14^zUx&5ospe{h4zt4P{6s zN&_wa&`{RtCqHA|Hw=8{$iGN(mzHXXNli>?0`upiV z(iXn3{>ToNDK7ow=Sn`V`Q0WZu) zlKVN4zZdzv?L>cB?n{n)49IjjJufc(%y&ujUo!DqB3~ulmk)UYSwsJL>@UcRQ+nlm zR`ffSf6+&eeA39bMD)SZeH6Kj>3-e73-*1PE~n>K^gAt2K2_u^;^l8h{&kYikiiT0 zF9aT(wkPK+F8$=^p!-Bg{tdccm<2B%F@Lz5N58jyepT@45&XNjPZRU~BVQ)Le@E>5 zGOkX~t?+j$|72UP+1P9TNxEMW^W8%~KJaDa_eJJ~`ixAk)Ap_Cm+P}SKWt(ruloz2 zZxQz|l6|bOzlgk8)o+(xT>8l`gzTC{+iuUweMCmU@q zyJYUqLB2j-GA8lD`~acPSkY&fZbiRS`9m8@=93`%sGyy>;FBTW7seC%ZgKgN>2%t@ z75#F3R_Eknfw94hU_;OSZIBo8tMKMU^Cz*Y-!8ql^pl^&NwjU{_N~k>0PK4WTW5nG z>Mutn-#R-wt*#fBezf0acK&3aD)8ZD*N^tf;P2w)^Flri&|j?RvrD(4->Lk0+2}KS zbivjZc+ve6xO~yQ5pB@1@5^*LZQqK1xjw6N-Nsz7n>{@n?CLRycEjwx6!l5c{E>>% zZ`GchUR?TR8*$xlfZNLJHm}_Nm->r*Uu3$Ro)?#X&92wn##^)fm;69DAELcK^5T?U zIiD5%PUSBrS+i5t?UTt)Td>_nyJWgAMt|Y*1^k%VAvf&3V@c;q=1j;l5n%xn6$DRG` z<1!7F1LmFLNcq+`FQ+7g7!{-47KQ;3$Zo5faNWomI0_&TK)?!tw9L%x()dh>c0))T z#%P1nx^?SP6_6&vt+dfb^xTT{X|^!9XEfSe@O{wWx{@tcUYG;Sg7SKRCYcnYdpht>>H7X_e*=eYl?Ly`~E5skp8xt_^d0 z3JqIWw-<1=qQxxTj6OTeag7ew=e*WTg>`v(&6L)D$%aLw!>%ne`o!{P$FvU^(TRH- zIi(fvzgeADY5vgnIjw!d-d)DNRK{LRI<~?ZF3Bv)fE6uf>1OoVVLr)htrpg4wSC1j zIvKXQ9H1S5wvQOD(Ta4~wPi-1SpH@o2k0x_J3rwUh<)$-L+gZc47goR%Xsz$7MI5F zr2=hM^IC!Q00IF7_&OB;!I!NpP2)QJNagmaJvqjC%Y66-oi?`$bntJu;@Sn$QpAUntp(Wo zAv$fJ=6iSJ_YoN_#z>vS&r^RYR5ny=;G7Dbx8)-z}VPWr600few@zt9B_}ZlBWS*qHyrxj${5l6-yeTW&P}tIq)=JwS_G zk9_X5ee!cDGAGTyfy3s`0U!B0YI1w>x!k@L{_@-?`9jfLBbyfmTJ-xQeUHbgUb%gl zK02p4MQx6b`_1sVMDk-|-$mhb-`e-p?7xTOw0(VEi_dS0bFnmEsLyTUJU914B>Jsl zxqT~~yyn`3IZUr_LcpA$e4nUYt9s@3DZd<(&x7Ib!1v>~qJ_=-+WXNsZJ)jwK;KUg z{V&8hQ@T$$x9h}@L~h>-r_~uv)U&jIKi{)or-l22h}ht~_;Poc-v6!YmD`tbztQKV zrG28~M#b`c6`k|;=G>@u9n?D~@CsD65zy>bjsG_q4WlLP=!>Xw%Jg8PRh+kI00H+p zqB!gV8O;K&yOv=^8I9iZC>I?YRU->C6{=(t(+)B85Fg+g06_I~UAuKm)G5Pf`= z>9nIC-;;K^E5W`q#yhpwJ1l#*w|;*W>!-0DW1<7!6^(a9%{B?!5^etQy_xdMu~@%+ z4bR#8Apd5#X1}Gi$KH=|Pa51)$H)7hSic$l_&$N}S@h1Q?~6n4!TdeXj5bUY>o?0o z?^9%>qVM}cb~HBcPh$OM^y71|_AO2AJDOU1+TI5GdmGqq5p8lEV*QjyjPZShy_3*0 zw_w+R`&=Bt0PjO$8Sz-GUv3-o(K@yEJj>e>Y$=F0s#C5*te^6T@uzcyb$tFEI{Ky- zy=$Rej95lI7VDSW#(em^j6T%*bG!VEjL*koi#{J?U07bMUu?Iej{m>vr*`~}={Z%7 zvA!GWXNq1)>${llA2CxY}&LJAB5`_D?jPZPYpt-ZxDDTlxxdxAVHJw>eX+dQ9_d>4e#rM*#qmMRgU4cd zv3*?MqIEVlF7UNjU**MXOlPC72dod_K9cOc(qx^?s(t2D0Pk9)LrFhl8zP-zd9i&_ zcaq&dt{;hc@K`J_*1I>Smi`@U{C+p;%3Tw*@?t)*yj-`Fb1LsNCVfRQmMf0lDh+xH z9)Up*UB4=za_=XC-tj74P6<-Fb}zDX`mFI08tN?Hdu*O+)z)VlBBqx z&J<;&lFBmO!%9WL)mTXN!1Y)q4f3VJnf6;>{>R&}-X|d44Odc>c$1nAvpf+nC#?NN zD#O|Qa0rwvr*wza#8^9~5oa-QlnQ@IteFUvankcY>48+ccd2f`W8@NOwQE{dxaFHf`k zH2~^Og*%WA_bN?5#=1Ty_bHOyC-1uDyCvVN_N>f9z`2LvFdVqd0@Uov9ZxQ&tkAj_ zpr9z7x@IOPg=V?s^+=&^9Nv?R8N6O-zt!E}wlm<{d>dJ5>g(l(u&S6+fqTBV*h~&hSL{FMK zHZ9d17Mh;;P+XkL1FVmXP4c+H!ljx!h5K&3Q@BKRr*ItvsH#&qA>4)Cshj`rzXb3W A1poj5 literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/bin/Release/windows-setup-requirements.PNG b/src/ame-upgrade-script/bin/Release/windows-setup-requirements.PNG new file mode 100644 index 0000000000000000000000000000000000000000..55842d0e4b1de2cf29c31589795d60dda57d50f6 GIT binary patch literal 25789 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
NjV3DqO$v60l$%AtJ)G! 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 literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/console.ico b/src/ame-upgrade-script/console.ico new file mode 100644 index 0000000000000000000000000000000000000000..b8a8113fd2af4729a7f7c87bae0a612fb196410d GIT binary patch literal 43006 zcmeHQNv|En74Ap``*{FQ3qn{}i6XIM_ytxLM9C_vNC-u?f+7(J1Z-o!$LL@n%w|yD zDq;Z}q)17W6$>024}h5rwi(P|euDW2o%2=ISAF{2>Ra{t-iNQ>>nGK#+uhYw=X`zY zRCm=mr>g2l)tYL@j!N?F)%Cxus(n>e-FTxve&ZKa^{Sk^{(66W$F)^;%NBuBv|bN>y#!=8xaJvZ^lpqpCJZIn;m06;-wPy3{9aNR!n8NjUHR zq@Ce!Kwv;%Kwv;%Kwv;%K;Yi_`R#l5FZ_G&{)Kv#r6b^7cs{ao*RJ}en{HY)>4qC_ zsKN97;kn~@HStegDepX9ZTY~z*Lkb$xs%^%KmP}A|5bhTp0)MSyVul5nEt$`{vXm^ zO*(w%n)aT#S*8N%`jeX8HP)f?17%({;ygU#K zmxq2b77L{_4&Q}-67+@0MIYKy_e`7rlfwVWJ?mlu7AJPE^O!`rPL*cu3I@~}eRxgXGj0Cg z-M6krA`WdVAQu4-Cl{fgL@bo{P)p+@9ke-zq?;BK(4SLCQ&Z- z`hG%vk<%F*OV~&H@S3`39RI2ExpSu$*4L-zeR@xF;NUP(SWq?^EZTAb-5K%FvLXG0 zV@ZyV((BXa|NRHn*GLWrjRkQqazQL&KY{KP-Jx}c!y@3|$JM!+)qfv6xIy?=X<^Z)Rnjr9i)ZKz!?SbU(dfNTJd&_9qj zSops3?!NVD-5KzpT;%vFy*`frKKk#Yhc^oE;NK_6Ln}Ev0uJaOp^rGZ2>PO>J3Gdb zQvPz~#_^xKH+B7^M>f_m0ShL<19IW85DZ%VWK184@?rW(s_j1Krp^Dyk8Z485*$7b z2{OSH<$_q)J|gn)KIKC4mRtaXpg;TYn!0D&{D1P-tLoDSkUS2j9UfOTSU^4k9v?oO z?juouYAk}zpgg2_>2q#5_y-0qIUIr?Qx_Juc>>+@!v=PojG`Q z{pn*!SGg3ih;rd&`KZRHB+}X#ku7Lp)arl%n5pv&0 z3b1hcbF`o2=qSBDb^f2Yx&{VJ#KFsjmkD5!lneBapf^(e#OaHmGfMf(m76yI=bqeD zGo1w%0gp3~iy#|OCK7$*lb|~xA8{sh+KKkVIr#9705eLD9GI35YIQPV+q+E>aBVI0=u_VP; zA9}~}pK2p_?u%zO*IzvClgDAR;IX-pi7{B5eOz!+`qPag7*9lJ;x}~$Gf&z z|K+p7J1}5sVc}(?k&DerE*hC=>5MRzeCo#428UAqa^5GmQU2B^LpQ937?Cr_KMjFKw;AeNiw# z3RrkNG!DLxuz$342K9yRBh(dPY=!Nn>HjVFT z{S#zhCCG9g9tQbebvDlh-vR_@bT4%6Ct4}s$G&8C*pv_q!|7N1O@~K1ZD++-ShLi z#83UZ+;{D)T^E`!2HG#)dh4y1-CQGRChmRa7-!)g%ETzE!RbVsr+l7Jo=!~mqhzqMW4hVW6_UWctPK{ zbd?@=(O-H$eW>Ug((*5)Kb`RrYIq6$gu+8@!OJ_&|LxMz z-?qo!AU-_GpDXw?Pm&!kF$-Paz_eY9;NX}OeetY7(7@mve zg?+}-TiSjX{kFcY<4+QH@zFm3zC^*F$of>Fzi3{%>d&2@lz#ew(2iN#az|eW;Q?|+ zUVNYN&xC%1IXb(pPf9;+vRih@!GD9kJuMkCyg0u<=`&sQ<<57}Un+mFnRGq~)+Ysa z<;n-cJ{QLme6@mnSvpJG@1oz<*L6&v3gith%4RLlPfEYH<4xOids~0w z_YwHe_Wj_clwMn|i~dsiJ9xLZOOE!)w98hu`mjUhb7}fZkT2mUWp`ZKei!|g&sjYl z=)bhFQCAB7H269R3>VRLiy z%{R|f0!_qi)@UO=E0I2L`+}Izu(1en(?gta+9lAw!sf7fAvPs>AN**0;A}#;R!`dl z6}LLZ?>6!NOXy;mKJ>-)cxU&~j>mpf>{eip)3TF@ao4@w3fnHp`_RXAYTBqYHXVUh z#)1ymT3So!Vwn_ub`B56ERUS)x6THIacL!fa~s#unC8S)*OmL7qAzz3Wa}2d5n9_H(~e^yQu})+T9R z;n%-aeA;01LR*n{0=<-3*zV+L($`b;>FcTAt@U7ue-~+u@i7~0Pa!@kaSgPl>g+n# zhd#eX>esG6mbKD`-gex^R&4Bu>$-{Y%ROHmZ;@-%F8-!nYllq-Y&o0_gvfy43%isq ztWxLu;Kwy}Ya4*|ThQz598&A)!CoUpN7uPN^w~AQvu@429pkjY73<8+dO2jFi+ z6n(kp%QbPXi!(-+!!^XyW6Vin>gnBBBR;RDBiB}nK7D`ccY7^Q*1to{H{crMy@j}D zIvym~?^AVlo$Es%)=%4OsIq>FbyU3;9PB4Nwz5vIaP6Wcbv{L34s)!@VLh(3Myl4~ z?HVc9dTFzw>BzN}qEFwS`pr0Bq!Y1=N@>OOPu1CVt`B_|xYjALxth3BO{}Gety;6C z%t8jbXi1$<(U-&gvDDhEtjqeiVV+KhZIlD7`};UySd-OsTR!ZuZNCeD_$}%E7*l?voM-0# ztiZ;$XOC_B_BxNPzn+_;=lpEgD-<-f);58XA9w5MRHG7B|nE_me4YpL+msKLqVxq31~X zoG_PL;wNI;@51SgeLt_iV?6#4gFn&|{5>=_mvd?H1H~NPP+nKUX0FZoWYMTW$zcQ|>3`DXx)(*oB;@*fqD@RII%E8QZI% z&qw>e(z2|3xyA$1ajEL(_qDTif~}kTo^5|yzkJ)ZaXhtj=IFH&c->bTQj^)Tn2fhuPZ$fW-gtoLzAHI`W-sZY~dkx3#`!DSI?d`LCd+vJ}F=h}W zXUzAWu0KUTz8~;i#c#YA=Z4?C;kzzH8_wzaQ)T%5L>rVC$Axw>neQcCe~Ny*_xims z{XUq!Js+zeey53j7HP9}==xbk=lK3`-ynR)R(1=BTX7mmzJK&R`nRs%wvBRJhxYHU zp)F-ALEc!WtwYz(GCKd}kXok?`^a%mEPh+T?nU3Df9v{f+bDvpI0`-iHZ?exw0UTSmHx14^XsC(s&$kXLWUY4*H=F+rkW_`%<9=1&q za=wSXc;&QO`r+!~yGq|apzmW{v#JM3E9kR&@%7ucxOjDVr}6O*oA;Slf1i$Fq3g3e z$9ZqW!V9+Sc&C6JJL_uV?4+Fu#D%NGsk-o zXt(8a^yx8Nzb~L}%=O}a%ai8Uw#Rw8Ga=s8Y1t!P&sW;=Ir=bua_l_!WV1&(=0-vL zQt5NHX&9SfKZkiWWjl%bmrCE8k6c$fo4v4yDCZEd|Kor6|76MZrP|M(8}~eN_olA1 zzNO}NJmoR!ndZ29IgF!q{k@D~-%mUsupW$8Fl*Q@iR0FeE979t{y3H_Rd!IG_oigB zPf0VUTStmS#Z{FZ9_0L^D9_j1)e%&5*tNZ>7@li1z=rZ`N@7L{P zy^8B*ZX5_}tK;t1*PM=quZFDmAnv34ZcMCub+zw&0_0nYI+OYsZD>06{knavD`~fn z^&njazxDmP-ctuR$9<-;zczH^@rV5Vx}3h>)?ISU`%81`C+4_s5 +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache b/src/ame-upgrade-script/obj/Debug/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..920169b914e95e6d7bcef2923df396d39a69783d GIT binary patch literal 792 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 literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/obj/Debug/ame_upgrade_preparation_tool.pdb b/src/ame-upgrade-script/obj/Debug/ame_upgrade_preparation_tool.pdb new file mode 100644 index 0000000000000000000000000000000000000000..9d17e968051cd04dfd5fd83c79069470aa73ee97 GIT binary patch literal 34304 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 a-Jaa`SfIxOJr?M(K#v7_EbuN^;Qs(nBv(QJ literal 0 HcmV?d00001 diff --git a/src/ame-upgrade-script/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/src/ame-upgrade-script/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..3871b18 --- /dev/null +++ b/src/ame-upgrade-script/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache b/src/ame-upgrade-script/obj/Release/ame-upgrade-preparation-tool.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..920169b914e95e6d7bcef2923df396d39a69783d GIT binary patch literal 792 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 A1poj5 literal 0 HcmV?d00001 diff --git a/src/ame_upgrade_script.sln b/src/ame_upgrade_script.sln new file mode 100644 index 0000000..8a19e28 --- /dev/null +++ b/src/ame_upgrade_script.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ame-upgrade-preparation-tool", "ame-upgrade-preparation-tool\ame-upgrade-preparation-tool.csproj", "{DD855BAB-FA5B-458D-8F42-F2F5E7866D0E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DD855BAB-FA5B-458D-8F42-F2F5E7866D0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD855BAB-FA5B-458D-8F42-F2F5E7866D0E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD855BAB-FA5B-458D-8F42-F2F5E7866D0E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD855BAB-FA5B-458D-8F42-F2F5E7866D0E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal