Files
archived-g-helper/ghelper.ps1
2023-02-14 23:03:02 +01:00

679 lines
59 KiB
PowerShell

# Self-elevate the script
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
$CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine -WindowStyle Hidden
Exit
}
}
# DPI Awareness
Add-Type -TypeDefinition @'
using System.Runtime.InteropServices;
public class ProcessDPI {
[DllImport("user32.dll", SetLastError=true)]
public static extern bool SetProcessDPIAware();
}
'@
$null = [ProcessDPI]::SetProcessDPIAware()
[System.Windows.Forms.Application]::EnableVisualStyles()
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName WindowsFormsIntegration
function SetAutostart () {
$taskName = "G14Helper"
$task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
if ($null -ne $task) {return }
if ([System.IO.Path]::GetExtension($PSCommandPath) -eq '.ps1') {
$action = New-ScheduledTaskAction -Execute "powershell" -Argument "-WindowStyle Hidden -File $PSCommandPath"
} else {
$psScriptPath = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName
$action = New-ScheduledTaskAction -Execute $psScriptPath
}
$trigger = New-ScheduledTaskTrigger -AtLogon
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
$definition = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings -Description "Run $($taskName) at Logon"
Register-ScheduledTask -TaskName $taskName -InputObject $definition
SaveConfigSetting -Name 'autostart' -Value 1
}
function CheckAutostart () {
$task = Get-ScheduledTask -TaskName "G14Helper" -ErrorAction SilentlyContinue
$Menu_Autostart.Checked = ($null -ne $task)
}
function DisableAutostart () {
Unregister-ScheduledTask -TaskName "G14Helper" -Confirm:$false
SaveConfigSetting -Name 'autostart' -Value 0
}
function Set-ScreenRefreshRate
{
param (
[Parameter(Mandatory=$true)]
[int] $Frequency
)
$pinvokeCode = @"
using System;
using System.Runtime.InteropServices;
namespace Display
{
[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE1
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public short dmOrientation;
public short dmPaperSize;
public short dmPaperLength;
public short dmPaperWidth;
public short dmScale;
public short dmCopies;
public short dmDefaultSource;
public short dmPrintQuality;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
class User_32
{
[DllImport("user32.dll")]
public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode);
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);
public const int ENUM_CURRENT_SETTINGS = -1;
public const int CDS_UPDATEREGISTRY = 0x01;
public const int CDS_TEST = 0x02;
public const int DISP_CHANGE_SUCCESSFUL = 0;
public const int DISP_CHANGE_RESTART = 1;
public const int DISP_CHANGE_FAILED = -1;
}
public class PrimaryScreen
{
static public string ChangeRefreshRate(int frequency)
{
DEVMODE1 dm = new DEVMODE1();
if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmDisplayFrequency = frequency;
int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST);
if (iRet == User_32.DISP_CHANGE_FAILED)
{
return "Unable to process your request. Sorry for this inconvenience.";
}
else
{
iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);
switch (iRet)
{
case User_32.DISP_CHANGE_SUCCESSFUL:
{
return "Success";
}
case User_32.DISP_CHANGE_RESTART:
{
return "You need to reboot for the change to happen.\n If you feel any problems after rebooting your machine\nThen try to change resolution in Safe Mode.";
}
default:
{
return "Failed to change the resolution";
}
}
}
}
else
{
return "Failed to change the resolution.";
}
}
}
}
"@ # don't indend this line
Add-Type $pinvokeCode
[Display.PrimaryScreen]::ChangeRefreshRate($frequency)
}
function isLaptopScreenMain {
Add-Type -AssemblyName System.Windows.Forms
$name = [System.Windows.Forms.Screen]::PrimaryScreen | Select-Object -ExpandProperty "DeviceName"
if ($name -eq "\\.\DISPLAY1") {
return $true
}
}
function Get-ScreenRefreshRate
{
$frequency = Get-WmiObject -Class "Win32_VideoController" | Select-Object -ExpandProperty "CurrentRefreshRate"
return $frequency
}
# Some fancy icons in base64
$icon_eco = [Drawing.Icon][IO.MemoryStream][Convert]::FromBase64String("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Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAbUibMGI4mzBgAAAAAAAAAAAAAAAAAAAAAAAAAAAIayAwCMtgkAirQGe4q0Bv6KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4m0Bf+PtxH/xNqD//f67v////////////////////////////7+/f/+/vz////////////////////////////8/fn/2Oat/5zALP+JswT/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQGfYu0CwCLtQMAAAAAAAAAAAAAAAAAAAAAAIq0BQCKtAUbirQG0oq0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/4+3EP/K3Y7//P35//////////////////P35v/Z56//w9mA/7jRZ/+20GT/v9Z3/9Tjo//v9dz//v79/////////////////+Tuxf+ewTD/ibME/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG1Im0BR2KtAUAAAAAAAAAAAAAAAAAhbIDAIu0BgCKtAZdirQG+4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/i7QH/8DXef/8/fj////////////6/PT/0eGc/6HCNv+Ntg3/ibMD/4izAv+IswL/iLMC/4y1Cf+avif/wdd7//D13//////////////////h7L//lrwh/4mzBP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG+4mzBmCKtAYAi7IDAAAAAAAAAAAAibMFAIizBQWKtAamirQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswP/psZC//T45/////////////j67/+81HD/jbYM/4mzA/+KtAX/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswT/ibQE/6TEPf/k7sb/////////////////yt2P/4y1Cf+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BqiJswQGibMFAAAAAAAAAAAAirMFAIqzBR2KtAbYirQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bf+Otg7/1+aq/////////////f77/8LYfv+LtQj/irQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4izAv+fwTL/6/LU////////////9fnq/6TFPv+JswP/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BtqJtAYfirQGAAAAAAAAAAAAirQGAIq0BUOKtAb0irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzA/+lxT//9/ru////////////4Ou8/5K5GP+JtAT/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswT/ss5c//r88////////////8vdkP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BvSKtAZDirQGAAAAAAAAAAAAirQGAIq0BmiKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzBP/E2YH////////////8/fn/s85c/4izAv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/4q0Bf+KtAX/irQF/4q0Bf+JtAT/jrcP/9vos////////////+jwz/+Uuhv/ibQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAZlirQGAAAAAAAAAAAAirYHAIq0BoiKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/463D//c6bX////////////t89j/l7wi/4mzBP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bf+KtAX/jbYN/463Dv+Otw7/jrcO/463Dv+Otg7/jLYL/73Vc//+//7///////f67v+kxT3/ibMD/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAaHi7QHAAAAAAAAAAAAh7kJAIq0Bp2KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibQF/5S6G//p8dH////////////W5aj/jLUL/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/422Df+602z/2uix/9votP/b6LP/2+iz/9vos//b6LP/2+iy/+XvyP/+/vz///////3++v+xzVn/iLMC/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAabi7YJAAAAAAAAAAAAYb0vAIq0BqaKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibME/5e8Iv/x9uD////////////G24b/ibMD/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibMD/6TFPv/2+ev///////////////////////////////////////////////////////////+40Wf/iLMB/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAamiMACAAAAAAAAAAAAXMAyAIq0BqaKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibME/5e8Iv/x9uH////////////E2YL/iLMC/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibMD/6PEOv/1+er///////////////////////////////////////////////////////v89v+uy1L/iLMC/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAamiL0EAAAAAAAAAAAAiLYKAIq0BpuKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/ibQF/5S6G//p8dH////////////Q4Zv/i7QI/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/422DP+20GT/1uSn/9flqv/X5ar/1+Wq/9flqv/X5ar/1+Wq/9flqv/X5ar/1uWp/7zUcf+PtxL/irQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAadi7kHAAAAAAAAAAAAirYHAIq0BoeKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/462Dv/b6LL////////////l7sj/kbkW/4q0Bf+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswT/jLUK/422DP+Ntgv/jbYL/422C/+Ntgv/jbYL/422C/+Ntgz/jLUL/4m0Bf+KtAX/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAaIi7UHAAAAAAAAAAAAi7QGAIq0BmaKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzBP/C2H/////////////5+/L/q8lM/4izAv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bf+KtAX/irQF/4q0Bf+KtAX/irQF/4q0Bf+KtAX/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAZoirQGAAAAAAAAAAAAirQGAIq0BkOKtAb0irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzA/+jxDz/9vnr////////////2+iy/5C4E/+JtAX/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswT/iLMD/4mzBP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BvSKtAVDirQGAAAAAAAAAAAAirMFAIqzBR+KtAbairQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+Mtgv/0+Oh/////////////P36/8PZf/+LtQn/ibQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzBP+cwCz/tc9h/5/CNP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BtiJswUdibMFAAAAAAAAAAAAirMFAImzBAaKtAaoirQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswP/pMQ9//L34/////////////j78f/B2Hz/kLgS/4izA/+KtAX/irQG/4q0Bv+KtAb/irQG/4q0Bv+JswT/irQH/67LUv/r8tT////+/+vy1P+cvyz/ibME/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BqaKswUFirMFAAAAAAAAAAAAhbIDAIu0BgCKswZgirQG+4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/7zUcP/7/Pf////////////7/ff/2Oas/6fHQ/+PtxD/ibME/4izAv+IswL/iLMC/4u1CP+YvSP/xNmB//X56/////////////r89f+pyEj/iLMC/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG+4q0Bl2KtAYAjLIDAAAAAAAAAAAAAAAAAIq0BQCKswUdirQG1Iq0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQF/462Dv/H24f//P34//////////////////f67v/e6rn/xdqE/7jSaf+20GP/vdVz/9Hhnf/s89f//v78/////////////////9zptf+TuRj/ibQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG0om0BRuKtAUAAAAAAAAAAAAAAAAAAAAAAImxAwCMuwsAirMGfoq0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4m0Bf+Otw//wNd6//X46f////////////////////////////7+/f/9/vz////+///////////////////////9/vr/2eeu/5u/Kv+JtAT/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb+irQGe4e0CgCMswMAAAAAAAAAAAAAAAAAAAAAAAAAAACKswYAirMGJIq0BtWKtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAX/i7QH/6jHRv/e6rn/+/z2/////////////////////////////////////////////v78/+vy1P+91HL/kbkW/4mzBP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAbTirMGIoqzBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJsQMAjLgKAIqzBmeKtAb4irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4mzA/+RuBX/rMpP/9Dhm//o8M3/9Pjo//j68P/5+/H/9vns/+zz1v/X5ar/uNFn/5i9I/+JtAT/ibQF/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BveKtAZlirUMAIqzBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAirMGAIqyBQ6KtAanirQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAX/iLMD/4u1CP+Tuhn/nsEw/6bGQv+nx0T/ocM3/5a7H/+Ntgz/ibMD/4mzBP+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0Bv+KtAb/irQG/4q0BqWKswUMirMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhLAAAIu0BgCKswUnirQGzIq0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BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA//+AAf//AAD//AAAP/8AAP/4AAAP/wAA/+AAAAf/AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADgAAAAAAcAAOAAAAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPAAAAAADwAA+AAAAAAfAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/wAAAf/wAA//wAAD//AAD//4AB//8AAP///////wAA////////AAA=")
$icon_standard = [Drawing.Icon][IO.MemoryStream][Convert]::FromBase64String("AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvrjoA7646AO+uOgDvrjoA7646AO+uOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvojIA8ddUAO6tOQbvrjof7646Q++uOmbvrjqH7646m++uOqbvrjqm7646ne+uOojvrjpo7646Q++uOh3vrToG79hWAO+iMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7604AO+sOAHvrTkd7646YO+uOqjvrjra76469e+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/76469O+uOtjvrjqm7646Xe+tOhvvqzcB76w5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+vNwDvticA7646I++uOn7vrjrV7646+u+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646+u+uOtLvrjp87606Ie+mNAHvqzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpqzoA8K45AO+uOQ/vrjpn76461e+uOv7vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr976460++uOmXvrToM7646AO+rOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+sOQDvsjsA7646J++uOqfvrjr47646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvfvrjql7646J++qOwDvrzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7Ks4APq5PwDvrTo97646zO+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646zu+uOj/vvUEA76s4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtrDkA87I8AO6tOkTvrjrZ7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOtrvrTpE77I8AO+sOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+sNwDurzwA7646P++uOtrvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjrZ7606Pe+vOwDvqjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7K0/AO+uOQDvrjko7646ze+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7604/++tOP/vrTj/7604/++uOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646zO+uOifvrjkA760/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7605AO+tOQzvrjql7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7603/++vO//wtEj/8bpW//K/Yv/yv2T/8bpY//C1Sv/vrz3/7603/++uOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOqfwrjoO8K46AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvqzgA8LY/AO+uOmXvrjr37646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/ws0f/9Md3//nesP/87tX//fbq//758P/++fH//ffs//zw2v/54bf/9cyC//G2Tf/vrTj/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvjvrjpn7607AO+uOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvrTkA7605Iu+uOtPvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7689//TGdf/76s3//vz4//////////////////////////////////////////////37//zu1//1z4n/8LNF/++tOP/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjrU8K46I/CuOgAAAAAAAAAAAAAAAAAAAAAAAAAAAO+qNwDvsTsA7646e++uOv7vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOf/wsUP/99ad//758v/////////////////////////////+/f///v3//////////////////////////////fr/+uS+//G6WP/vrTj/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646feeuOQDzrjoAAAAAAAAAAAAAAAAAAAAAAO+tOQDvrTob76460u+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7645//CxQv/42qb///36//////////////////336//65cD/99aa//XOh//1zYT/9tOU//nhtv/99OT///79//////////////////vs0f/yu1v/7604/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/76461O+uOR3wrjoAAAAAAAAAAAAAAAAA76k3AO+uOgDvrjpd7646+++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7647//bTlf///fr////////////++/b/+d+x//K+YP/vsD//7604/++tN//vrTf/7603/++vPf/xuVT/99SW//315v/////////////////76sz/8bdP/++tOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646+++uOmDvrjoA7683AAAAAAAAAAAA7q06AO6sOQXvrjqm7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTj/88Fp//337P////////////768v/20I7/77A//++tOP/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTj/7645//PAZf/77NL/////////////////+Nun/++vPf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOqjurjkG7q46AAAAAAAAAAAA7q46AO6uOh3vrjrY7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/wsUD/+uO8//////////////77//fVmf/vrzv/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tN//yvF3//PHd/////////////vjv//PAZv/vrTj/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOtrwrjof8K46AAAAAAAAAAAA7646AO+uOkPvrjr07646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/zwWf//vnx////////////++nK//C0SP/vrTn/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTj/9cp+//779v////////////jbp//vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvTvrjpD7646AAAAAAAAAAAA8K46AO+uOmjvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/31pz//////////////fv/9cp+/++tN//vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOf/vrjn/7645/++uOf/vrTn/8LFB//rmw/////////////zv2f/wtUv/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjpl7646AAAAAAAAAAAA8a86AO+uOojvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7645//CxQf/658X////////////88uD/8bdQ/++tOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/77BA//CxQf/wsUH/8LFB//CxQf/wsUH/77A+//bRkP////7///////758v/zwGb/7604/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqH7646AAAAAAAAAAAA768+AO+uOp3vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7645//C1S//88Nv////////////547r/768+/++uOv/vrjr/7646/++uOv/vrjr/7646/++wP//2z4v/+ubB//rmw//65sP/+ubD//rmw//65sP/+ubC//zt1P///v3////////9+//0yXz/7603/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqb7687AAAAAAAAAAAA76xFAO+uOqbvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7605//G3UP/99ef////////////32KD/7604/++uOv/vrjr/7646/++uOv/vrjr/7604//PAZv/++O/////////////////////////////////////////////////////////////1zof/76w2/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqm76w4AAAAAAAAAAAA76xIAO+uOqbvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7605//G3UP/99ef////////////31pz/7603/++uOv/vrjr/7646/++uOv/vrjr/7604//K/Y//++O7///////////////////////////////////////////////////////78+P/0x3b/7603/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqm76w4AAAAAAAAAAAA7687AO+uOpvvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7645//C1Sv/88Nr////////////53rD/7687/++uOv/vrjr/7646/++uOv/vrjr/7646/++wP//1zYX/+eK5//rjvP/647v/+uO7//rju//647v/+uO7//rju//647z/+eO7//bRj//wskP/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqd7687AAAAAAAAAAAA8a86AO+uOofvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++wQP/65sL////////////77dP/8LNH/++uOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTn/7689/++wPv/vsD7/77A+/++wPv/vsD7/77A+/++wPv/vsD7/77A+/++uOf/vrjn/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjqI8K46AAAAAAAAAAAA8K46AO+uOmbvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/31Zn////////////++/X/9MVy/++tN//vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjpo8K46AAAAAAAAAAAA7646AO+uOkPvrjr07646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/ywGX//vnv////////////+ubD//CyRP/vrjn/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTj/7603/++tOP/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvTvrjpD7646AAAAAAAAAAAA7q46AO6tOh/vrjra7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vsD7/+eC1//////////////37//fVmv/vrzz/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOf/xuln/9cuC//K9Xv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOtjurTod7q06AAAAAAAAAAAA7q06AO6sOwbvrjqo7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrTj/88Bl//326f////////////779P/31Jf/8LJD/++tN//vrjn/7646/++uOv/vrjr/7646/++uOv/vrTj/7647//THdv/88d3////+//zx3f/xulj/7604/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOqburjkF7q46AAAAAAAAAAAA76k9AO+uOgDvrjpg7646+++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646//bRjv/+/Pj//////////////fn/+uS9//PCa//wsUL/7604/++tN//vrTf/7603/++vPP/xt1H/99ab//747/////////////789//zw27/7603/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646+++uOl3vrjoA77A3AAAAAAAAAAAAAAAAAO6tOgDurTod76461O+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7645//CxQP/32KD///35//////////////////758v/76Mj/99ee//XOif/1zIT/9tKR//nfsf/88t////79//////////////////rnxf/wtEj/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/76460u+tOhvvrjkAAAAAAAAAAAAAAAAAAAAAAOurOAD3sj0A7646fu+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOf/wsUH/9tSV//747v/////////////////////////////+/f///vz////+/////////////////////////fv/+uW///G6V//vrTn/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr+7646e++tOwDvsDgAAAAAAAAAAAAAAAAAAAAAAAAAAADurjoA7q45JO+uOtXvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7647//PDbf/66Mf//vz4//////////////////////////////////////////////79//zx3f/20Y//8LNG/++tOP/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjrT7606Iu+uOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvrjgA7648AO+uOmfvrjr47646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++tOP/ws0b/9MZ0//nesP/879j//vjt//768//++vT//vnw//zy3//647z/9c6H//G4Uf/vrTn/7645/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvfvrjpl765AAO+uOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7q46AO6uOg7vrjqn7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7603/++vPP/wtEn/8rxc//PBaf/zwmv/8r5g//G2Tv/vsD7/7603/++tOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOqXvrjkM7645AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77BAAO+uOQDvrjon7646zO+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjn/7604/++tN//vrTf/7604/++tOf/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646ze+uOifvrzoA76Q9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOmqOADxsDsA7646Pe+uOtnvrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjra7646P+yuOAD0rjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvrToA77A6AO+uOkTvrjra7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOtnvrjpE77A6AO+tOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA76w6AO+1OADvrjo/7646ze+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646zO+uOj3vsjoA76w6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+xOwDvozUA7646J++uOqXvrjr37646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOvjvrjqn7646J++wPQDvrDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvsT0A7646AO+vOwzvrjpk76460++uOv3vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr+76461e+uOmfvrjoP7646AO+xNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+vPADwr0EB7q06Ie+uOnzvrjrS7646+u+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/7646+u+uOtXvrjp+7646I++0LADvrzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7687AO+vPAHvrjsb7646Xe+uOqbvrjrY76469O+uOv/vrjr/7646/++uOv/vrjr/7646/++uOv/vrjr/76469O+uOtrvrjqo7646YO+tOx3vrD0B7608AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvskIA76AlAO+vOwXvrjod7646Q++uOmjvrjqI7646ne+uOqbvrjqm7646m++uOofvrjpm7646Q++uOh/urjsG8aIkAO+yQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvrjoA7646AO+uOgDvrjoA7646AO+uOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA//+AAf//AAD//AAAP/8AAP/4AAAP/wAA/+AAAAf/AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADgAAAAAAcAAOAAAAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPAAAAAADwAA+AAAAAAfAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/wAAAf/wAA//wAAD//AAD//4AB//8AAP///////wAA////////AAA=")
$icon_ultimate = [Drawing.Icon][IO.MemoryStream][Convert]::FromBase64String("AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/wYgIP8fICD/QyAg/2YgIP+HICD/myAg/6YgIP+mICD/nSAg/4ggIP9oICD/QyAg/x0gIP8GICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICD/ACAg/wEgIP8dICD/YCAg/6ggIP/aICD/9SAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/9CAg/9ggIP+mICD/XSAg/xsgIP8BICD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8AICD/IyAg/34gIP/VICD/+iAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/+iAg/9IgIP98ICD/ISAg/wEgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/w8gIP9nICD/1SAg//4gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/9ICD/0yAg/2UgIP8MICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8AICD/JyAg/6cgIP/4ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//cgIP+lICD/JyAg/wAgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICD/ACAg/wAgIP89ICD/zCAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/ziAg/z8gIP8AICD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/0QgIP/ZICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/9ogIP9EICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8AICD/PyAg/9ogIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/ZICD/PSAg/wAgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAICD/ACAg/wAgIP8oICD/zSAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///Hh7//x0d//8dHf//Hh7//x8f//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/zCAg/ycgIP8AICD/AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAICD/ACAg/wwgIP+lICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///HR3//yIi//8wMP//QED//05O//9PT///QkL//zMz//8jI///HR3//x8f//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/6cgIP8OICD/AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAgIP8AICD/ACAg/2UgIP/3ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x0d//8vL///ZGT//6Wl///Q0P//5+f//+/v///v7///6en//9bW//+trf//cnL//zY2//8eHv//Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//ggIP9nICD/ACAg/wAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAgIP8AICD/IiAg/9MgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///JCT//2Ji///Gxv//9/f/////////////////////////////////////////////+/v//9LS//96ev//LS3//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/UICD/IyAg/wAAAAAAAAAAAAAAAAgAAAAIAAAAACAg/wAgIP8AICD/eyAg//4gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x8f//8qKv//kJD///Dw//////////////////////////////39///8/P/////////////////////////////5+f//trb//0JC//8eHv//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/fSAg/wAgIP8AAAAAAAAAAAgAAAAIAAAAACAg/wAgIP8bICD/0iAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///ykp//+amv//+fn//////////////////+np//+3t///jY3//3d3//90dP//hob//6ys///g4P///f3//////////////////8vL//9FRf//Hh7//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/1CAg/x0gIP8AAAAAAAAAAAgAAAAIAgIPACAg/wAgIP9dICD/+yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ISH//4eH///5+f/////////////19f//pqb//0tL//8mJv//HR3//xwc//8dHf//HR3//yMj//8+Pv//iYn//+Li///////////////////Gxv//ODj//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/+yAg/2AgIP8AAgIPAAAAAAgAAAAIFBSeACAg/wUgIP+mICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8dHf//Vlb//+rq//////////////Hx//9/f///Jib//x0d//8gIP//ICD//yAg//8gIP//ICD//yAg//8eHv//Hx///1FR///MzP//////////////////m5v//yMj//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/6ggIP8GFBShAAAAAAgAAAAIGxvaACAg/x0gIP/YICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x8f//8nJ///s7P/////////////+/v//4yM//8iIv//Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x0d//9ISP//2dn/////////////7Oz//1JS//8dHf//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/9ogIP8fHBzcAAAAAAgAAAAIHh7sACAg/0MgIP/0ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x0d//9TU///7+//////////////w8P//zAw//8fH///ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8eHv//bW3///X1/////////////5ub//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//QgIP9DHh7tAAAAAAgAAAAIHR3qACAg/2ggIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x4e//+Pj//////////////6+v//bW3//x0d//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///x8f//8fH///Hx///x8f//8fH///KCj//7u7/////////////9TU//8zM///Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP9lHh7rAAAAAAgAAAAIGxvYACAg/4ggIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///ygo//+9vf/////////////c3P//OTn//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///Jyf//ygo//8oKP//KCj//ygo//8oKP//JSX//4KC///+/v////////Dw//9SUv//HR3//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+HGxvaAAAAAAgAAAAIFRWlACAg/50gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///zMz///W1v////////////+xsf//JCT//yAg//8gIP//ICD//yAg//8gIP//ICD//yYm//97e///ubn//7u7//+7u///u7v//7u7//+7u///urr//87O///8/P////////v7//9ra///HBz//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+bFhatAAAAAAgAAAAIAgIRACAg/6YgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hh7//zk5///k5P////////////+Tk///Hh7//yAg//8gIP//ICD//yAg//8gIP//HR3//1JS///t7f////////////////////////////////////////////////////////////93d///HBz//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+mAgIQAAAAAAgAAAAIAgIQACAg/6YgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hh7//zk5///k5P////////////+Pj///HR3//yAg//8gIP//ICD//yAg//8gIP//HR3//09P///s7P////////////////////////////////////////////////////////f3//9kZP//HR3//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+mAgIRAAAAAAgAAAAIFhatACAg/5sgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///zMz///V1f////////////+lpf//ISH//yAg//8gIP//ICD//yAg//8gIP//ICD//yUl//90dP//sLD//7Oz//+zs///s7P//7Oz//+zs///s7P//7Oz//+zs///srL//4CA//8qKv//Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+dFRWlAAAAAAgAAAAIGxvZACAg/4cgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///ycn//+6uv/////////////Ozv//Li7//x8f//8gIP//ICD//yAg//8gIP//ICD//yAg//8eHv//JCT//yUl//8lJf//JSX//yUl//8lJf//JSX//yUl//8lJf//JCT//x8f//8fH///ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP+IGxvZAAAAAAgAAAAIHh7rACAg/2YgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x4e//+MjP/////////////z8///X1///x0d//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP9oHR3qAAAAAAgAAAAIHh7tACAg/0MgIP/0ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x0d//9QUP//7e3/////////////urr//yws//8fH///ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8eHv//HR3//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//QgIP9DHh7sAAAAAAgAAAAIHBzcACAg/x8gIP/aICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8lJf//q6v/////////////+vr//4yM//8jI///Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x4e//9CQv//cXH//0lJ//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/9ggIP8dGxvaAAAAAAgAAAAIFBShACAg/wYgIP+oICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8dHf//UVH//+bm//////////////Pz//+Kiv//Kyv//x0d//8fH///ICD//yAg//8gIP//ICD//yAg//8eHv//ISH//2Rk///Z2f///v7//9nZ//9CQv//Hh7//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/6YgIP8FFBSeAAAAAAgAAAAIAgIPACAg/wAgIP9gICD/+yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//39////4+P/////////////4+P//tbX//1dX//8pKf//Hh7//xwc//8dHf//HR3//yIi//86Ov//jo7//+3t//////////////b2//9bW///HR3//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/+yAg/10gIP8AAgIPAAAAAAgAAAAIAAAAACAg/wAgIP8dICD/1CAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//Hx///ycn//+UlP//+Pj///////////////////Dw///Bwf//kZH//3l5//9zc///goL//6en///b2////Pz//////////////////729//8wMP//Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/0iAg/xsgIP8AAAAAAAAAAAgAAAAIAAAAACAg/wAgIP8AICD/fiAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x8f//8oKP//h4f//+vr//////////////////////////////39///8/P///v7////////////////////////7+///t7f//0BA//8fH///ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/+ICD/eyAg/wAgIP8AAAAAAAAAAAgAAAAIAAAAAAAAAAAgIP8AICD/JCAg/9UgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///ISH//1lZ///AwP//9/f//////////////////////////////////////////////Pz//9jY//+Bgf//Li7//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/TICD/IiAg/wAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAgIP8AICD/ACAg/2cgIP/4ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//x4e//8tLf//YWH//6Wl///T0///6+v///Ly///z8///7u7//9ra//+zs///d3f//zo6//8fH///Hx///yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//cgIP9lICD/ACAg/wAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAICD/ACAg/w4gIP+nICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///HR3//yIi//8xMf//Rkb//1ZW//9YWP//S0v//zY2//8lJf//HR3//x4e//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/6UgIP8MICD/AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAICD/ACAg/wAgIP8nICD/zCAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8fH///Hh7//x0d//8dHf//Hh7//x8f//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/zSAg/ycgIP8AICD/AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8AICD/PSAg/9kgIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/aICD/PyAg/wAgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/0QgIP/aICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg/9kgIP9EICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICD/ACAg/wAgIP8/ICD/zSAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/zCAg/z0gIP8AICD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8AICD/JyAg/6UgIP/3ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//ggIP+nICD/JyAg/wAgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/wwgIP9kICD/0yAg//0gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP/+ICD/1SAg/2cgIP8PICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAg/wAgIP8BICD/ISAg/3wgIP/SICD/+iAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/+iAg/9UgIP9+ICD/IyAg/wAgIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICD/ACAg/wEgIP8bICD/XSAg/6YgIP/YICD/9CAg//8gIP//ICD//yAg//8gIP//ICD//yAg//8gIP//ICD/9CAg/9ogIP+oICD/YCAg/x0gIP8BICD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIP8AICD/ACAg/wUgIP8dICD/QyAg/2ggIP+IICD/nSAg/6YgIP+mICD/myAg/4cgIP9mICD/QyAg/x8gIP8GICD/ACAg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAAAAAAAH///////gAAf/+AAf/+AAB//AAAP/4AAH/4AAAP/gAAf+AAAAf+AAB/wAAAA/4AAH+AAAAB/gAAfwAAAAD+AAB+AAAAAH4AAHwAAAAAPgAAeAAAAAAeAAB4AAAAAB4AAHAAAAAADgAAcAAAAAAOAABgAAAAAAYAAGAAAAAABgAAQAAAAAACAABAAAAAAAIAAEAAAAAAAgAAQAAAAAACAABAAAAAAAIAAEAAAAAAAgAAQAAAAAACAABAAAAAAAIAAEAAAAAAAgAAQAAAAAACAABAAAAAAAIAAEAAAAAAAgAAQAAAAAACAABAAAAAAAIAAGAAAAAABgAAYAAAAAAGAABwAAAAAA4AAHAAAAAADgAAeAAAAAAeAAB4AAAAAB4AAHwAAAAAPgAAfgAAAAB+AAB/AAAAAP4AAH+AAAAB/gAAf8AAAAP+AAB/4AAAB/4AAH/wAAAf/gAAf/wAAD/+AAB//4AB//4AAH///////gAAAAAAAAAAAAA=")
# Init Config and Log
$ghelper_app_path = "$($env:LOCALAPPDATA)\GHelper"
$ghelper_config_path = "$ghelper_app_path\config.json"
$ghelper_log_path = "$ghelper_app_path\log.txt"
New-Item -ItemType Directory -Force -Path $ghelper_app_path
#Systray menu
$Main_Tool_Icon = New-Object System.Windows.Forms.NotifyIcon
$Main_Tool_Icon.Text = "G14 Helper"
$Main_Tool_Icon.Icon = $icon_standard
$Main_Tool_Icon.Visible = $true
$Menu_Perf_Title = New-Object System.Windows.Forms.MenuItem("Mode")
$Menu_Perf_Title.Enabled = $false
$Menu_Perf_Silent = New-Object System.Windows.Forms.MenuItem("Silent")
$Menu_Perf_Balanced = New-Object System.Windows.Forms.MenuItem("Balanced")
$Menu_Perf_Turbo = New-Object System.Windows.Forms.MenuItem("Turbo")
$Menu_Eco = New-Object System.Windows.Forms.MenuItem("Eco")
$Menu_Standard = New-Object System.Windows.Forms.MenuItem("Standard")
$Menu_Ultimate = New-Object System.Windows.Forms.MenuItem("Ultimate")
$Menu_Title = New-Object System.Windows.Forms.MenuItem("GPU Mode")
$Menu_Title.Enabled = $false
$Menu_Eco = New-Object System.Windows.Forms.MenuItem("Eco")
$Menu_Standard = New-Object System.Windows.Forms.MenuItem("Standard")
$Menu_Ultimate = New-Object System.Windows.Forms.MenuItem("Ultimate")
$Menu_RR = New-Object System.Windows.Forms.MenuItem
$Menu_RR.Enabled = $false
$Menu_RR60 = New-Object System.Windows.Forms.MenuItem("60Hz")
$Menu_RR120 = New-Object System.Windows.Forms.MenuItem("120Hz")
$Menu_OD = New-Object System.Windows.Forms.MenuItem("Panel Overdrive")
$Menu_Autostart = New-Object System.Windows.Forms.MenuItem("Run on startup")
$Menu_Exit = New-Object System.Windows.Forms.MenuItem("Exit")
$contextmenu = New-Object System.Windows.Forms.ContextMenu
$contextmenu.MenuItems.AddRange($Menu_Perf_Title)
$contextmenu.MenuItems.AddRange($Menu_Perf_Silent)
$contextmenu.MenuItems.AddRange($Menu_Perf_Balanced)
$contextmenu.MenuItems.AddRange($Menu_Perf_Turbo)
$contextmenu.MenuItems.AddRange("-")
$contextmenu.MenuItems.AddRange($Menu_Title)
$contextmenu.MenuItems.AddRange($Menu_Eco)
$contextmenu.MenuItems.AddRange($Menu_Standard)
$contextmenu.MenuItems.AddRange($Menu_Ultimate)
$contextmenu.MenuItems.AddRange("-")
$contextmenu.MenuItems.AddRange($Menu_RR)
$contextmenu.MenuItems.AddRange($Menu_RR60)
$contextmenu.MenuItems.AddRange($Menu_RR120)
$contextmenu.MenuItems.AddRange($Menu_OD)
$contextmenu.MenuItems.AddRange("-")
$Menu_Charge60 = New-Object System.Windows.Forms.MenuItem("60%")
$Menu_Charge80 = New-Object System.Windows.Forms.MenuItem("80%")
$Menu_Charge100 = New-Object System.Windows.Forms.MenuItem("100%")
$Submenu_Charge = New-Object System.Windows.Forms.MenuItem("Charge Limit")
$Submenu_Charge.MenuItems.AddRange($Menu_Charge60)
$Submenu_Charge.MenuItems.AddRange($Menu_Charge80)
$Submenu_Charge.MenuItems.AddRange($Menu_Charge100)
$contextmenu.MenuItems.AddRange($Submenu_Charge)
$contextmenu.MenuItems.AddRange("-")
$contextmenu.MenuItems.AddRange($Menu_Autostart)
$contextmenu.MenuItems.AddRange("-")
$contextmenu.MenuItems.AddRange($Menu_Exit)
$Main_Tool_Icon.ContextMenu = $contextmenu
# Hardware Initialisation
$device_performance = 0x00120075;
$device_eco = 0x00090020;
$device_mux = 0x00090016;
$device_overdrive = 0x00050019;
$asushw = Get-CimInstance -Namespace root/wmi -ClassName AsusAtkWmi_WMNB
function CheckScreen {
$laptopScreen = isLaptopScreenMain;
if (-Not $laptopScreen) {
$Menu_RR.Text = "External Screen is main";
$Menu_RR60.Visible = $false;
$Menu_RR120.Visible = $false;
$Menu_OD.Visible = $false;
return;
} else {
$Menu_RR.Text = "Screen Refresh"
$Menu_RR60.Visible = $true;
$Menu_RR120.Visible = $true;
$Menu_OD.Visible = $true;
}
$refresh_rate = Get-ScreenRefreshRate
if ($refresh_rate -eq 60) {
$Menu_RR.Text = "Laptop Screen Refresh: "+$refresh_rate+"Hz"
$Menu_RR60.Checked = $true;
$Menu_RR120.Checked = $false;
} elseif ($refresh_rate -eq 120) {
$Menu_RR.Text = "Laptop Screen Refresh: "+$refresh_rate+"Hz"
$Menu_RR60.Checked = $false;
$Menu_RR120.Checked = $true;
}
$screen_overdrive = (Invoke-CimMethod $asushw -MethodName DSTS -Arguments @{Device_ID=$device_overdrive} | Select-Object -ExpandProperty device_status) - 65536;
if ($screen_overdrive -eq 1) {
$Menu_OD.Checked = $true;
$Menu_OD.Enabled = $true;
} elseif ($screen_overdrive -eq 0) {
$Menu_OD.Checked = $false;
$Menu_OD.Enabled = $true;
} else {
$Menu_OD.Enabled = $false;
}
}
function GetCPUTemperature {
$t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
$returntemp = ""
foreach ($temp in $t.CurrentTemperature)
{
$currentTempCelsius = ($temp / 10)
$returntemp += $currentTempCelsius.ToString() + "C "
}
return $returntemp
}
function UICheckStats {
$cpu_fan = [math]::Round(((Invoke-CimMethod $asushw -MethodName DSTS -Arguments @{Device_ID=0x00110013} | Select-Object -ExpandProperty device_status) - 65536)/0.6);
$gpu_fan = [math]::Round(((Invoke-CimMethod $asushw -MethodName DSTS -Arguments @{Device_ID=0x00110014} | Select-Object -ExpandProperty device_status) - 65536)/0.6);
$Menu_Perf_Title.Text = $script:title_performance+" | CPU Fan: "+$cpu_fan.ToString()+"%"
$Menu_Title.Text = $script:title_gpu+" | GPU Fan: "+$gpu_fan.ToString()+"%"
}
function Get-TimeStamp {
return "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date)
}
function WriteLog ([string]$event_name) {
Write-Output "$(Get-TimeStamp) $event_name" | Out-file $ghelper_log_path -append
}
function SaveConfigSetting ([string]$Name, $Value){
$global:ghelper_config[$Name] = $Value
$config = $global:ghelper_config
$config | ConvertTo-Json | Out-File $ghelper_config_path
}
function GetConfigSetting ([string]$Name) {
return $global:ghelper_config[$Name]
}
function LoadConfig {
$global:ghelper_config = @{}
$configJson = (Get-Content -Raw $ghelper_config_path -ErrorAction SilentlyContinue -ErrorVariable ConfigError) | ConvertFrom-Json
$configJson.psobject.properties | Foreach { $global:ghelper_config[$_.Name] = $_.Value }
if ($ConfigError) {
$global:ghelper_config = @{
"performance_mode" = 0
"panel_overdrive" = 1
}
$config = $global:ghelper_config
$config | ConvertTo-Json | Out-File $ghelper_config_path
}
}
function SetPeformanceMode ($performance_mode = 0) {
$Menu_Perf_Silent.Checked = $false;
$Menu_Perf_Balanced.Checked = $false;
$Menu_Perf_Turbo.Checked = $false;
switch ($performance_mode)
{
1 {
$script:title_performance = "Mode: Turbo"
$Menu_Perf_Turbo.Checked = $true
}
2 {
$script:title_performance = "Mode: Silent"
$Menu_Perf_Silent.Checked = $true
}
Default {
$script:title_performance = "Mode: Balanced"
$Menu_Perf_Balanced.Checked = $true
$performance_mode = 0
}
}
SaveConfigSetting -Name 'performance_mode' -Value $performance_mode
UICheckStats
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_performance ; Control_status=$performance_mode } | Out-Null
WriteLog("Performance set to "+$performance_mode)
}
function SetChargeLimit ($charge_limit = 100) {
$Menu_Charge60.Checked = $false;
$Menu_Charge80.Checked = $false;
$Menu_Charge100.Checked = $false;
switch ($charge_limit)
{
60 {
$Menu_Charge60.Checked = $true
}
80 {
$Menu_Charge80.Checked = $true
}
Default {
$Menu_Charge100.Checked = $true
$charge_limit = 100
}
}
SaveConfigSetting -Name 'charge_limit' -Value $charge_limit
$Submenu_Charge.Text = "Charge Limit: $charge_limit%"
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=0x00120057 ; Control_status=$charge_limit } | Out-Null
WriteLog("Charge limit set to "+$charge_limit)
}
function SetPanelOverdrive ($overdrive = 1) {
SaveConfigSetting -Name 'panel_overdrive' -Value $overdrive
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_overdrive ; Control_status=$overdrive } | Out-Null
WriteLog("Panel Overdrive set to "+$overdrive)
}
function GetGPUMode {
$mux_mode = (Invoke-CimMethod $asushw -MethodName DSTS -Arguments @{Device_ID=$device_mux} | Select-Object -ExpandProperty device_status) - 65536;
$eco_mode = (Invoke-CimMethod $asushw -MethodName DSTS -Arguments @{Device_ID=$device_eco} | Select-Object -ExpandProperty device_status) - 65536;
$script:gpu_mode = "standard"
if ($mux_mode -eq 0) {
$script:gpu_mode = "ultimate"
} else {
if ($eco_mode -eq 1) {
$script:gpu_mode = "eco"
} else {
$script:gpu_mode = "standard"
}
if (-Not $mux_mode -eq 1) {
# No MUX Switch
$Menu_Ultimate.Enabled = $false
}
}
UIGPUMode($script:gpu_mode)
WriteLog("GPU mode detected : $script:gpu_mode")
}
function SetGPUMode ($gpu_mode = "standard") {
if ($gpu_mode -eq $script:gpu_mode) {return}
$restart = $false;
$changed = $false;
if ($script:gpu_mode -eq "ultimate") {
$msgBox = [System.Windows.MessageBox]::Show('Switching off Ultimate Mode requires restart','Reboot now?','OKCancel')
if ($msgBox -eq 'OK') {
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_mux ; Control_status=1 }
$restart = $true;
$changed = $true;
}
} elseif ($gpu_mode -eq "ultimate") {
$msgBox = [System.Windows.MessageBox]::Show('Ultimate mode requires restart','Reboot now?','OKCancel')
if ($msgBox -eq 'OK') {
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_mux ; Control_status=0 }
$restart = $true;
$changed = $true;
}
} elseif ($gpu_mode -eq "eco") {
UIGPUMode($gpu_mode);
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_eco ; Control_status=1 }
$changed = $true;
} elseif ($gpu_mode -eq "standard") {
UIGPUMode($gpu_mode);
Invoke-CimMethod $asushw -MethodName DEVS -Arguments @{Device_ID=$device_eco ; Control_status=0 }
$changed = $true;
}
if ($changed) {
$script:gpu_mode = $gpu_mode;
SaveConfigSetting -Name 'gpu_mode' -Value $gpu_mode
WriteLog("GPU set to "+$gpu_mode)
}
if ($restart) {
UIGPUMode($gpu_mode);
WriteLog("Restarting")
Restart-Computer
}
}
function UIGPUMode ($gpu_mode) {
$Menu_Eco.Checked = $false;
$Menu_Standard.Checked = $false;
$Menu_Ultimate.Checked = $false;
switch ($gpu_mode)
{
"eco" {
$script:title_gpu = "GPU: iGPU only"
$Menu_Eco.Checked = $true
$Main_Tool_Icon.Icon = $icon_eco
}
"ultimate" {
$script:title_gpu = "GPU: dGPU"
$Menu_Ultimate.Checked = $true
$Main_Tool_Icon.Icon = $icon_ultimate
}
Default {
$script:title_gpu = "GPU: Balanced"
$Menu_Standard.Checked = $true
$gpu_mode = "standard"
$Main_Tool_Icon.Icon = $icon_standard
}
}
UICheckStats
}
LoadConfig
SetPeformanceMode(GetConfigSetting('performance_mode'))
SetPanelOverdrive(GetConfigSetting('panel_overdrive'))
SetChargeLimit(GetConfigSetting('charge_limit'))
GetGPUMode
CheckAutostart
CheckScreen
$timer = New-Object System.Windows.Forms.Timer
$timer.Add_Tick({UICheckStats})
$timer.Interval = 5000
$timer.Enabled = $True
# ---------------------------------------------------------------------
# Action when after a click on the systray icon
# ---------------------------------------------------------------------
$Main_Tool_Icon.Add_Click({
CheckScreen
UICheckStats
If ($_.Button -eq [Windows.Forms.MouseButtons]::Left) {
$Main_Tool_Icon.GetType().GetMethod("ShowContextMenu",[System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::NonPublic).Invoke($Main_Tool_Icon,$null)
}
})
$Menu_Perf_Silent.add_Click({
SetPeformanceMode(2)
})
$Menu_Perf_Balanced.add_Click({
SetPeformanceMode(0)
})
$Menu_Perf_Turbo.add_Click({
SetPeformanceMode(1)
})
$Menu_Eco.add_Click({
SetGPUMode("eco")
})
$Menu_Standard.add_Click({
SetGPUMode("standard")
})
$Menu_Ultimate.add_Click({
SetGPUMode("ultimate")
})
$Menu_RR60.add_Click({
Set-ScreenRefreshRate -Frequency 60
CheckScreen
})
$Menu_RR120.add_Click({
Set-ScreenRefreshRate -Frequency 120
CheckScreen
})
$Menu_Charge60.add_Click({
SetChargeLimit(60)
})
$Menu_Charge80.add_Click({
SetChargeLimit(80)
})
$Menu_Charge100.add_Click({
SetChargeLimit(100)
})
$Menu_OD.add_Click({
if ($Menu_OD.Checked) {
SetPanelOverdrive(0)
} else {
SetPanelOverdrive(1)
}
CheckScreen
})
$Menu_Autostart.add_Click({
if ($Menu_Autostart.Checked) {
DisableAutostart
} else {
SetAutostart
}
CheckAutostart
})
# When Exit is clicked, close everything and kill the PowerShell process
$Menu_Exit.add_Click({
$Main_Tool_Icon.Visible = $false
Stop-Process $pid
})
# Make PowerShell Disappear
$windowcode = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
$asyncwindow = Add-Type -MemberDefinition $windowcode -name Win32ShowWindowAsync -namespace Win32Functions -PassThru
$null = $asyncwindow::ShowWindowAsync((Get-Process -PID $pid).MainWindowHandle, 0)
# Force garbage collection just to start slightly lower RAM usage.
[System.GC]::Collect()
# Create an application context for it to all run within.
# This helps with responsiveness, especially when clicking Exit.
$appContext = New-Object System.Windows.Forms.ApplicationContext
[void][System.Windows.Forms.Application]::Run($appContext)