srf_init:
	 ;读取配置
    IniWrite,aliyun,yz.ini,Settings,Source
    IniWrite,1.5.6,yz.ini,Version,Version
	global srf_default_value, Gbuffer, YzIni:=class_EasyIni("yz.ini"), DllFolder:=A_ScriptDir "\Lib\Dll_" (A_PtrSize=4?"x86":"x64"),robot:=yzIni.robot.robot
	srf_default_value:={Settings:{Startingup:0, Autoupdatefg:1, Adminfg:1, CloudInput:0, DebugLevel:1, fuzhuma:0, SendDelay:0, ClipHistory:0, Imagine:0, MemoryDB:0, Settingsbak:"", MouseCross:0, dwxg:0
		, Magicstring:0, Superrun:0, Wordfrequency:0, fixedword:0, Learning:0, Inputscheme:"pinyin", chaojijp:0, Traditional:0, Showquanpin:0, Source:"aliyun", mhy:"000000000", fyfz:0, bmhg:0
		, lspy:0, simasp:1, wumaqc:1, wumasp:1, Different:0, IMEmode:1, ClipWindows:"", IMECnWindows:"", IMEEnWindows:"", EnSymbol:0, SaveCloud:0, ShowCode:0, Singleword:0, zigen:0
		, decfre:0, Tofirst:0}
		, Func:{CustomFuncName:"{""fanyi"":""fy"",""label"":""l"",""magic"":""s"",""mode"":""m"",""run"":""r"",""scheme"":""sc"",""soso"":""ss""}"}
		, GuiStyle:{TextFont:InStr(ListFonts(),"Microsoft YaHei UI")?"Microsoft YaHei UI":"黑体",SymbolFont:"Segoe UI Symbol", FontBold:0, FontSize:20, BorderColor:"8080FF", CodeColor:"8080FF", TextColor:"000000"
		, BackgroundColor:"FFFFFF", ListNum:5, Textdirection:"Horizontal", FocusBackColor:"0080C0", FocusColor:"FFFFFF"
		, LogoSize:39, ToolTipStyle:(A_OSVersion="WIN_XP"?1:2), Lockedposition:0}
		, Hotkey:{Double:0, Switch:"LShift", Enterfg:2, Escfg:1, Shiftfg:2, fanyefg:"[] -=", 23hx:"", ycdzfg:""}
		, DBFile:{main:"Lib\ciku.db", extend:"Lib\ciku_extend.db"}
		, Version:{Version:"1.5.6"}
        , autoit:{文档:"C:\Users\Public\Documents|default"}
        , robot:{robot:1}}
	LoadIni(), yzPID:=DllCall("GetCurrentProcessId")
	Yz_Abort:="    影子输入法是由河许人和天黑请闭眼联合开发的简单、简洁、高度自定义输入法。影子输入法起源于AutoHotkey高手群 Hello_srf开发的柚子输入法,融合了承影和jip输入法的理念。 影子输入法为开源、绿色、安全的输入法。请放心使用!"
	If Adminfg&&!(A_IsAdmin || RegExMatch(DllCall("GetCommandLine", "Str"), " /restart(?!\S)")){
		Try	{
			If A_IsCompiled
				Run *RunAs "%A_ScriptFullPath%" /restart
			Else
				Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
		}
		ExitApp
	} Else If (A_IsAdmin)
		YzIni.Settings["Adminfg"]:=1
	FileDelete, temp32.exe
	FileDelete, temp64.exe
    ;设置robot规则
	if FileExist("rules.ini")
    {
    }
    Else
    {
        IniWrite default,rules.ini,设置,默认模式
        IniWrite *.doc;*.docx;*.wps|移动|D:\归类\Word,rules.ini,default,Doc
        IniWrite *.xls;*.xlsx|移动|D:\归类\Excel,rules.ini,default,Xls
        IniWrite *.txt|移动|D:\归类\文本,rules.ini,default,文本
        IniWrite *.pdf|移动|D:\归类\pdf,rules.ini,default,Pdf
        IniWrite *.dwg|移动|D:\归类\CAD","rules.ini,default,CAD
        IniWrite 333*|移动|D:\归类\文件夹,rules.ini,default,333
        IniWrite *c44|移动|D:\归类\文件夹,rules.ini,default,c44
        IniWrite *.zip;*.7z|移动|D:\归类\压缩文件,rules.ini,default,压缩文件
        IniWrite *.pptx;*.ppt|移动|D:\归类\ppt,rules.ini,default,ppt
        IniWrite *.ahk|移动|D:\归类\ahk,rules.ini,default,ahk
    }
    global INI
	INI=%A_ScriptDir%\rules.ini

	;设置默认模式
	global DefaultMode:=""
	iniread,DefaultMode,%INI%,设置,默认模式,default
	;定义数组
	global RulesArray:={}
	global RulesMode:=[]	
	global LBIsPress
;}

Label_Main:	;{ 主运行代码
	;读取规则
	RulesArray:=ReadINIToArray(INI)
	;没有规则则提示
	if  (RulesArray.MaxIndex()<1){
		MsgBox, 64, 提示, 请设置规则
		gosub,Label_DrawGUI_ManagerRules
		return
	}
	;如果有参数传入，则直接处理，否则弹出窗体
	if 0 > 0
	{
		gosub,2GuiDropFiles
	} 
    ;else 
    ;{
		;gosub,Label_DrawGUI_Main
	;}
   
	If (Source="Gitee")
		Sourceurl:="https://gitee.com/orz707/shadow/raw/master"
	Else
		Sourceurl:="https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz"
	If !FileExist(DllFolder "\SQLite3.dll"){
		Progress, B2 ZH-1 ZW-1 FS12, %DllFolder%\SQLite3.dll不存在！`n正在下载，请稍后...
		If !URLDownloadToFile(A_PtrSize=4?Sourceurl "/Lib/Dll_x86/SQLite3.dll":"https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/Lib/Dll_x64/SQLite3.dll", DllFolder "\SQLite3.dll"){
			Progress, Off
			MsgBox, 16, 错误, SQLite3.dll下载失败！`n请手动下载后放在%DllFolder%。
			ExitApp
		}
		Progress, Off
	}
	If (!FileExist("Lib\yz.icl"))
		URLDownloadToFile("https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/Lib/yz.icl", "Lib\yz.icl")
	If (!FileExist(main)){
		tvar:=1
		If (FileExist("ciku_demo.db")){
			FileGetSize, var, ciku_demo.db, M
			Runtime:=A_TickCount
			FileCopy, ciku_demo.db, %main%
			If (ErrorLevel){
				Try	{
					If A_IsCompiled
						Run *RunAs "%A_ScriptFullPath%" /restart
					Else
						Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
				}
				ExitApp
			}
			If (var*1000/(A_TickCount-Runtime)<400){
				MsgBox, 64, 提示, 如遇到输入卡顿的现象，可尝试开启内存数据库选项。
			}
		} Else {
			Run, https://www.autoahk.com/archives/15117
			Progress, B2 ZH-1 ZW-1 FS12, 正在下载词库ciku.db
			URLDownloadToFile("https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/ciku_demo.db", "ciku_demo.db")
			Progress, Off
			Goto srf_init
		}
	}
	If (!FileExist("Lib\IMEConverter.exe"))
		URLDownloadToFile(Sourceurl "/Lib/IMEConverter.exe", "Lib\IMEConverter.exe")
	If (!FileExist("Lib\CloudInput.exe"))
		URLDownloadToFile(Sourceurl "/Lib/IMEConverter.exe", "Lib\CloudInput.exe")

	;画主窗口
	Gosub TRAYMENU
	Gosub LoadLogo
    Gosub LoadDB
	ChangeDB()
	Gosub module_functions
	Gosub houxuankuangguicreate
	Gosub Registrationhotkey
	GUIFont:=InStr(ListFonts(),"Microsoft YaHei UI")?"Microsoft YaHei UI":"黑体", TickCount(0, 1), TickCount(0, 2)
	valueindex:=Traditional?5:2, SendDelaymode:=(SendDelay?"{Text}{Delay," SendDelay*10 ",0}":""), localpos:=1
	waitnum:=srf_mode:=Learnfg:=0, ClipSaved:="", MethodTable:={sanma:"sanma",lianda:"lianda"}, AppIMEtable:=[], history_field_array:=[]
	pinyinec:={pinyin:"全拼",xhsp:"小鹤双拼",zrmsp:"自然码双拼",abcsp:"ABC双拼",sgsp:"搜狗双拼",wrsp:"微软双拼",jjsp:"加加双拼"}, pinyince:=[], customspjm:=[]
	Function_for_select:=[], save_field_array:=[], SQL_buffer:=[], srf_Plugins:=[], srf_last_input:=[], srf_Custom_Func:=[], srf_for_select_obj:=[]
	#Include *i Lib\usercustoms.ahk
	Try srf_Custom_Func:=JSON.Load(CustomFuncName)
	setmohuyingobj()
	shurulei:=MethodTable[Inputscheme]?MethodTable[Inputscheme]:Inputscheme~="sp$|pinyin"?"pinyin":"xingma", pinyinlist:=""
	Gosub Registrationfuncandlabel
	For Key,Value In customspjm
		pinyinec[Key]:=customspjm[Key,"1"], pinyince[customspjm[Key,"1"]]:=Key
	For Key,Value In pinyinec
		pinyince[Value]:=Key, pinyinlist .= "|" Value
	
	If (tvar){
		Progress, B2 ZH-1 ZW-1 FS12, 词库初始化。。。
		DB.GetTable("SELECT name FROM sqlite_master WHERE type='table' AND name NOT IN ('sqlite_sequence','hebing')",Result)
		Loop % Result.RowCount
			DB.Exec("CREATE INDEX IF NOT EXISTS ""sy_" Result.Rows[A_Index,1] """ ON """ Result.Rows[A_Index,1] """ (""" (Result.Rows[A_Index,1]="pinyin"?"jp":"key") """);")
		Progress, Off
		Gosub cikuManager
		Gosub Option
		Gosub Help
	}
	If (fuzhuma)	; 载入辅助码
		Gosub Loadfuzhuma
	SetTimer, AppImeAutoSwitch, 150
	If (CloudInput&&Inputscheme~="pinyin|sp$")
		Try	{
			Run, % "Lib\CloudInput.exe " DllCall("GetCurrentProcessId") " " YzIni["Hidden","CloudApi"], , , tvar
			srf_Plugins["CloudInput",1]:=tvar
		}
	If Autoupdatefg
		SetTimer, srfAutoupdatefg, -10
	If A_Args[1]
		Gosub help
Return

AppImeAutoSwitch(){
	Critical, Off
	static history_active:="", htype:=0
	global yzPID, AppIMEtable, Different, srf_mode, IMEmode, srf_inputing, SendDelay
		, SendDelaymode, IMEEnWindows, IMECnWindows, ClipWindows
	DetectHiddenWindows, On
	If (WinExist("ahk_class #32768")){
		If (srf_mode){
			If (Different&&history_active){
				cleanappimetable(StrSplit(history_active,"|")[1])
				If (htype>-1)
					AppIMEtable[StrSplit(history_active,"|")[1]]:=srf_mode
			}
			Gosub srfSwitch
			history_active:=""
		}
		Return
	}
	WinGet, activeexe, ProcessName, A
	WinGetClass, activeclass, A
	If (history_active=activeexe "|" activeclass)
		Return
	If (Different){
		If (history_active){
			cleanappimetable(StrSplit(history_active,"|")[1])
			If (htype>-1)
				AppIMEtable[StrSplit(history_active,"|")[1]]:=srf_mode
		}
		SendDelaymode:=(SendDelay?"{Text}{Delay," SendDelay*10 ",0}":"")
		Switch ttt:=(checkactivewindow(htype,activeexe,activeclass)^srf_mode){
			Case 1:
				If (!srf_inputing)
					Gosub srfSwitch
			Case -2,-1:
				If (AppIMEtable[activeexe]=""){
					AppIMEtable[activeexe]:=IMEmode-1
					If (!srf_inputing&&srf_mode!=IMEmode-1)
						Gosub srfSwitch
				} Else If (!srf_inputing&&AppIMEtable[activeexe]!=srf_mode)
					Gosub srfSwitch
			Case -4,-3:
				SendDelaymode:="{Fast}"
				If (!srf_mode)
					Gosub srfSwitch
		}
	} Else If (srf_mode!=IMEmode-1)
		Gosub srfSwitch
	If (!srf_inputing)
		SetTimer, ToolTipInputStatus, -100
	history_active:=activeexe "|" activeclass
}
checkactivewindow(ByRef type,arr*){
	global IMECnWindows,IMEEnWindows,ClipWindows
	If (IMEEnWindows)
		For Key,Value In arr
			If Value In %IMEEnWindows%
				Return 0, type:=Key
	If (arr[2]~="^(#\d+|Net UI Tool Window|Edit)")
		Return 0, type:=-1
	If (ClipWindows)
		For Key,Value In arr
			If Value In %ClipWindows%
				Return -3, type:=Key
	If (IMECnWindows)
		For Key,Value In arr
			If Value In %IMECnWindows%
				Return 1, type:=Key
	Return -1,type:=0
}
cleanappimetable(exe){
	global AppIMEtable
	static history
	If !WinExist("ahk_exe" history)
		AppIMEtable.Delete(history)
	history:=exe
}
ChangeDB(){
	global DB
	DB.GetTable("SELECT 1 FROM sqlite_master WHERE type='table' AND tbl_name='pinyin' AND NOT instr(sql,'jp')", Result)
	If (Result.Rows[1,1]){
		MsgBox, 308, 词库调整, 本次更新将调整pinyin词库结构，优化文件占用空间，如有重要信息，请注意备份词库！`n是否继续？
		IfMsgBox, No
			ExitApp
		Progress, B2 ZH-1 ZW-1 FS12, 调整词库中，请稍后...
		DB.Exec("BEGIN TRANSACTION;")
		DB.Exec("DROP TABLE IF EXISTS 'main'.'hebing';")
		DB.Exec("CREATE TABLE 'main'.'hebing' (""jp"" TEXT,""Key"" TEXT,""Value"" TEXT,""weight"" INTEGER DEFAULT 0);")
		DB.Exec("INSERT INTO 'main'.'hebing' SELECT szm(Key),Key,Value,max(weight) FROM 'main'.'pinyin' GROUP by Key,Value ORDER by ROWID;")
		DB.Exec("DROP TABLE 'main'.'pinyin';ALTER TABLE 'main'.'hebing' RENAME TO 'pinyin';")
		DB.Exec("CREATE INDEX 'main'.'sy_pinyin' ON 'pinyin' ('jp');")
		DB.Exec("DROP TABLE IF EXISTS 'main'.'jianpin';")
		DB.Exec("COMMIT TRANSACTION;")
		DB.Exec("VACUUM")
		Progress, Off
		MsgBox 调整完成
	}
	DB.GetTable("SELECT tbl_name,count(*) as n FROM sqlite_master WHERE name!='sqlite_sequence' GROUP by tbl_name HAVING n=1",Result)
	If (Result.RowCount){
		Loop % Result.RowCount
			DB.Exec("CREATE INDEX ""sy_" Result.Rows[A_Index,1] """ ON """ Result.Rows[A_Index,1] """ (""" (Result.Rows[A_Index,1]="pinyin"?"jp":"key") """)")
	}
}

Loadfuzhuma:
ReLoadfuzhuma:
	srf_fzm_fancha_table:=[]
	If !FileExist("Lib\@fzm.txt"){
		fuzhuma:=0
		GuiControl, 3:, fuzhuma, 0
		If (A_ThisLabel="ReLoadfuzhuma")
			MsgBox, 48, 提示, 辅助码文件不存在，请在Lib目录下放置辅助码文件@fzm.txt，格式如下：`n吖=k`n阿=e`n啊=k`n文本编码为UTF-8-Bom或ANSI
	} Else {
		FileRead, tvar, Lib\@fzm.txt
		Loop, Parse, tvar, `n, `r
		{
			If (A_LoopField="")
				Continue
			srf_fzm_fancha_table[(tarr:=StrSplit(A_LoopField, "="))[1]]:=tarr[2]
		}
		Key:=tvar:=""
	}
Return
FuncHotkey:
	srf_all_input:=srf_func_hk[A_ThisHotkey] func_key, srf_inputing:=1
	Gosub srf_tooltip
Return
Registrationfuncandlabel:	; 注册内置函数
	srf_func_table:=[], srf_func_hk:=[]
	; Hotkey If, srf_mode
	For Key,Value In srf_Default_Func
		If RegExMatch(srf_Custom_Func[Value[1]],"^&\K.+$",Match){
			srf_func_table[Value[1]]:=Func(Key)
			Try {
				Hotkey, %Match%, FuncHotkey, On
				srf_func_hk[Match]:=Value[1]
			}
		} Else
			srf_func_table[srf_Custom_Func[Value[1]]?srf_Custom_Func[Value[1]]:Value[1]]:=Func(Key)
	; Hotkey If
	; For Key,Value In srf_func_hk
	; 	Hotkey, %Key%, FuncHotkey, On
Return

;备份
Backup(){
	If !FileExist("backups")
		FileCreateDir, backups
	Loop, Files, %A_ScriptDir%\*.*
		If (A_LoopFileFullPath~=StrReplace("i)" A_ScriptDir "\","\","\\") "[^\\]+\.(exe|ahk|db|ini)")
			FileCopy, %A_LoopFileFullPath%, % StrReplace(A_LoopFileFullPath,A_ScriptDir,A_ScriptDir "\backups"), 1
	FileCopyDir, %A_ScriptDir%\Lib, %A_ScriptDir%\backups\Lib, 1
}
;更新
srfAutoupdatefg:
srfUpdate:
	;获取更新信息
	If (!DllCall("Wininet.dll\InternetCheckConnection", "Str", Sourceurl, "UInt", 0x1, "UInt", 0x0, "Int")){
		If (A_ThisLabel="srfUpdate")
			MsgBox, 16, 检查更新, 网络异常,将无法更新脚本！, 5
	} Else {
		If !RegExMatch(var:=SendRequest(Sourceurl "/yz.ini"), "i)Version=\K[\d\.]+", UpdateVersion){
			If (A_ThisLabel="srfUpdate")
				MsgBox, 16, 检查更新, 获取版本信息失败！, 5
		} Else If (Version>=UpdateVersion){
			If (A_ThisLabel="srfUpdate")
				MsgBox, 64, 检查更新, 影子输入法已经是最新版本了。, 5
		} Else If (Version<UpdateVersion){
        
		  UrlDownloadToFile, https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/change.txt, change.txt
            FileRead,changetext,change.txt
            MsgBox, 36, 检查更新, % "检测到影子输入法有新版本`n`n" Version "`t版本更新后=>`t" UpdateVersion "`n`n更新说明：`n" RegExReplace(changetext, "im).*v" RegExReplace(UpdateVersion,"^(\d+\.\d+.\d+)(\.\d)?","$1") "([^" Chr(2) "]+).*", "$1") "`n是否更新到最新版本？"
			IfMsgBox Yes
			{
				Backup()
				If FileExist("影子输入法32.exe")
					FileMove, 影子输入法32.exe, temp32.exe
				If FileExist("影子输入法64.exe")
					FileMove, 影子输入法64.exe, temp64.exe
				downloadfilenum:=0
				If !URLDownloadToFile(Sourceurl "/影子输入法32.exe", "影子输入法32.exe"){
					If FileExist("temp32.exe")
						FileMove, temp32.exe, 影子输入法32.exe
					MsgBox, 48, 检查更新, 下载影子输入法32位失败, 2
				} Else
					downloadfilenum++
				If !URLDownloadToFile(Sourceurl "/影子输入法64.exe", "影子输入法64.exe"){
					If FileExist("temp64.exe")
						FileMove, temp64.exe, 影子输入法64.exe
					MsgBox, 48, 检查更新, 下载影子输入法64位失败, 2
				} Else
					downloadfilenum++
				RegExMatch(var,"i)UpdateFile=\K.+", UpdateFile), var:=""
				Loop, Parse, UpdateFile, `,
				{
					If (A_LoopField~="i)\.exe$"){
						tvar:=RegExReplace(A_LoopField,".*/")
						Process, Exist, %tvar%
						If (ErrorLevel)
							Process, Close, %ErrorLevel%
					}
					If (A_LoopField~="(IMEConverter.exe|yz.icl)"){
						If !URLDownloadToFile("https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/" A_LoopField, StrReplace(A_LoopField,"/","\"))
							MsgBox, 48, 检查更新, % "下载" RegExReplace(A_LoopField,".*/") "失败", 2
					} Else If !URLDownloadToFile(Sourceurl "/" A_LoopField, StrReplace(A_LoopField,"/","\"))
						MsgBox, 48, 检查更新, % "下载" RegExReplace(A_LoopField, ".*/") "失败", 2
				}
				If (downloadfilenum>0){
					Version:=YzIni.Version["Version"]:=UpdateVersion, YzIni.Save()
					If A_IsCompiled
						Run "%A_ScriptFullPath%" /restart update
					Else
						Run "%A_AhkPath%" /restart "%A_ScriptFullPath%" update
					ExitApp
				}
			}
		}
	}
Return
; 界面
;------------------------------------------------------------------------------------------------------------------------
; 选词框gui、ToolTip
houxuankuangguicreate:
	Height:=60
	If (Caret="")
		Caret:={X:A_ScreenWidth//2-A_ScreenWidth//8, Y:A_ScreenHeight-20-Height*(InStr(ToolTipText,"`n")?2.5:4)}
	If (ToolTipStyle=1)
		DrawHXGUI("", "Shutdown"), @TSF:=ToolTip(1, "", "Q1 B" BackgroundColor " T" TextColor " S" FontSize, TextFont, FontBold)
	Else
		DrawHXGUI("", "init"), ToolTip()
Return

;托盘按钮
TRAYMENU:
	Menu, Tray, NoStandard                                         ;去掉标准托盘按钮
	Menu, Tray, DeleteAll                                              ;清空托盘按钮
	Menu, Tray, Add, 词库管理, cikuManager
	Menu, Tray, Icon, 词库管理, Lib\yz.icl, 3
	Menu, Tray, Add
	Menu, Tray, Add, 选项, Option
	Menu, Tray, Icon, 选项, Lib\yz.icl, 4
	Menu, Tray, Add, 更新, srfUpdate
	Menu, Tray, Icon, 更新, Lib\yz.icl, 5
	Menu, Tray, Add, 帮助, Help
	Menu, Tray, Icon, 帮助, Lib\yz.icl, 6
	
	Menu, Tray, Add
	Menu, Tray, Add, 禁用, srfsuspend
	Menu, Tray, Icon, 禁用, Lib\yz.icl, 14
	Menu, Tray, Add, 重启, srfreload
	Menu, Tray, Icon, 重启, Lib\yz.icl, 8
	Menu, Tray, Add, 退出, EXIT
	Menu, Tray, Icon, 退出, Lib\yz.icl, 9
	Menu, Tray, Default, 词库管理
	Menu, Tray, Tip, 影子
	Menu, Tray, Icon, Lib\yz.icl, 2, 1
	Menu, Tray, Click, 2
	Menu, MyContextMenu, Add, 新建(&N), NewRow
	Menu, MyContextMenu, Add, 复制(&C), CopyRow
	Menu, MyContextMenu, Add, 删除(&D), DelRow
	Menu, MyContextMenu, Add, 刷新(&R), Refresh2
	Menu, MyContextMenu, Add, 撤销(&U), Revoke
	Menu, BarMenu, Add, 100/页, fynumset
	Menu, BarMenu, Add, 500/页, fynumset
	Menu, BarMenu, Add, 1000/页, fynumset
	Menu, appContextMenu, Add, 剪贴板`tAlt+D, 剪贴板
	Menu, appContextMenu, Add, 中文`tAlt+C, 中文
	Menu, appContextMenu, Add, 英文`tAlt+E, 英文
	Menu, appContextMenu, Add, 删除`tDel, 删除
Return

;加载logo
LoadLogo:
SetLogoSize:
	WinGetPos,,,,TrayWnd_Height,ahk_class Shell_TrayWnd

	If (A_OSVersion="WIN_XP"){
    	Gui, 2:Destroy
		;Gui, 2:-Caption +AlwaysOnTop +ToolWindow -DPIScale +HwndHGui2
        Gui, 2:-Caption +E0x8000088 -DPIScale +HwndHGui2
		If FileExist("yz.png")
			Gui, 2:Add, Picture, , yz.png
		Else
			Gui, 2:Add, Picture, Icon1, Lib\yz.icl
		Gui, 2:Show, % "NA x" (YzIni["Hidden","X"]?YzIni["Hidden","X"]:A_ScreenWidth-A_ScreenWidth//5-(64*LogoSize//200)) " y" (YzIni["Hidden","Y"]?YzIni["Hidden","Y"]:A_ScreenHeight-TrayWnd_Height-(64*LogoSize//100))
		WinSet, TransColor, F0F0F0 255, ahk_id%HGui2%
	
		If !(srf_mode)
			Gui, 2:Hide
	} 
    Else
    {
		SetYzLogo(srf_mode)
        Gui, 2:Show, % "NA x" (YzIni["Hidden","X"]?YzIni["Hidden","X"]:A_ScreenWidth-A_ScreenWidth//5-(64*LogoSize//200)) " y" (YzIni["Hidden","Y"]?YzIni["Hidden","Y"]:A_ScreenHeight-TrayWnd_Height-(64*LogoSize//100)-50)
    }
		If !(srf_mode)
			Gui, 2:Hide
Return    
	

	; 加载数据库
	LoadDB:
	If (DB._Handle)
		DB.CloseDB()
	DB:="", DB:=new SQLiteDB
	If (MemoryDB){
		Suspend, On
		Progress, B2 ZH-1 ZW-1 FS12, 载入内存数据库中，请稍后...
		If !(DB.OpenDB("")&&DB.LoadOrSaveDb(main)){
			MsgBox, 16, 数据库错误, % "消息:`t" DB.ErrorMsg "`n代码:`t" DB.ErrorCode
			ExitApp
		}
		Suspend, Off
		Progress, Off
	} Else If !DB.OpenDB(main){
		MsgBox, 16, 数据库错误, % "消息:`t" DB.ErrorMsg "`n代码:`t" DB.ErrorCode
		ExitApp
	}
	DB.CreateScalarFunc("REGEXP", 2, RegisterCallback("SQLiteDB_RegExp", "C"))
	DB.CreateScalarFunc("szm", 1, RegisterCallback("shouzimu", "C"))
	; DB.CreateScalarFunc("erjiayi", 2, RegisterCallback("erjiayi", "C"))
	DB.Exec("DROP TABLE IF EXISTS 'main'.''")
	DB.AttachDB(extend, "extend")
	If (extend!=main)&&DB.GetTable("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name IN ('English','functions','hotstrings','customs','symbol')",TableInfo){
		Loop % TableInfo.RowCount {
			If (TableInfo.Rows[A_Index,1]="English"), TableName:=TableInfo.Rows[A_Index,1]
				_SQL = CREATE TABLE 'extend'.'English' ("key" TEXT COLLATE NOCASE,"weight" INTEGER DEFAULT 0);
			Else If (TableName ~= "functions|hotstrings|symbol|customs")
				_SQL = CREATE TABLE 'extend'.'%TableName%' ("key" TEXT,"value" TEXT,"comment" TEXT);
			If DB.Exec(_SQL)
				DB.Exec("INSERT INTO 'extend'.'" TableName "' SELECT * FROM 'main'.'" TableName "'"), DB.Exec("DROP TABLE 'main'.'" TableInfo.Rows[A_Index, 1] "'")
		}
	}
Return

96GuiEscape:
	99GuiEscape:
	Gui Hide
Return

Help:
	Gui, 96:Destroy
	If DllCall("Wininet.dll\InternetCheckConnection", "Str", "https://gitee.com/orz707/shadow/wikis/pages", "UInt", 0x1, "UInt", 0x0, "Int"){
		Gui, 96:-DPIScale
		Gui, 96:Margin, 0, 0
		Gui, 96:Add, ActiveX, % "w" Min(A_ScreenWidth-100, 1200) " h" Min(A_ScreenHeight-100, 800) " vwb", Shell.Explorer
		If (A_Args[1]="update"), A_Args:=[] {
    		wb.Navigate("https://gitee.com/orz707/shadow/wikis/pages?sort_id=1811043&doc_id=434278")
			TrayTip, 影子输入法, 更新完成, 3
		} Else
			wb.Navigate("https://gitee.com/orz707/shadow/wikis/pages")
		Gui, 96:Show, , 影子输入法 帮助
		Return
	}
	Gui, 96:Margin, 20, 20
	Gui, 96:Add, Picture, xm w13 h-1 Icon1, Lib\yz.icl
	Gui, 96:Font, s11 Bold, %GUIFont%
	Gui, 96:Add, Text, x+10 yp, 简易帮助
	Gui, 96:Font
	Gui, 96:Font, s11, %GUIFont%
	Gui, 96:Add, Text, y+5, LShift切换输入模式
	Gui, 96:Add, Text, y+5, Space首选上屏, Enter英文字符上屏
	Gui, 96:Add, Text, y+5, /键 内置功能键
	Gui, 96:Add, Text, y+5, 1、2、3、……、，、。候选上屏
	Gui, 96:Add, Text, y+5, Ctrl + 1、2、3、……调节对应项到首选，`n长按调至指定位置
	Gui, 96:Add, Text, y+5, Ctrl + Alt + 1、2、3、……删除对应词条
	Gui, 96:Add, Text, y+5, Left、Right、Ctrl + 字母 调整插入位置
	Gui, 96:Add, Text, y+5, Ctrl + = 快捷造词
	Gui, 96:Add, Text, y+5, Ctrl + Shift + Alt + F1 帮助
	Gui, 96:Add, Text, y+5, 在选项、词库管理的控件处停留0.5秒`n显示详细说明
	Gui, 96:Add, Text, y+5, 选项 - 控制 - 命令管理 - 模式切换`n有更多便捷的设置
	Gui, 96:Add, Picture, xm y+20 w13 h-1 Icon11, Lib\yz.icl
	Gui, 96:Font, s11 Bold, %GUIFont%
	Gui, 96:Add, Text, x+10 yp, 详细帮助
	Gui, 96:Font
	Gui, 96:Font, s11, %GUIFont%
	Gui, 96:Add, Link, y+5, <a href="https://gitee.com/orz707/shadow/wikis">影子帮助文档</a>
	Gui, 96:Show, , 影子输入法 帮助
Return

SetYzLogo(fg){
	static Hwnd:=0
	global pToken, LogoSize, YzIni
	If (!Hwnd)
		Gui, 2:-Caption +E0x8080088 +ToolWindow +LastFound -DPIScale +HwndHwnd
	If (!pToken)&&(!pToken:=Gdip_Startup()){
		MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
		ExitApp
	}
	Gui, 2:Show, NA
	If FileExist("yz.png")
		pBitmap:=Gdip_CreateBitmapFromFile("yz.png")
	Else {
		pBitmap:="iVBORw0"
		. "KGgoAAAANSUhEUgAAAHgAAACJCAYAAADnqvxuAAAKN2lDQ1BzUkdCIElFQzYxOTY2LTIuMQAAeJydlndUU9kWh8+9N71QkhCKlNB"
		. "raFICSA29SJEuKjEJEErAkAAiNkRUcERRkaYIMijggKNDkbEiioUBUbHrBBlE1HFwFBuWSWStGd+8ee/Nm98f935rn73P3Wfvfda"
		. "6AJD8gwXCTFgJgAyhWBTh58WIjYtnYAcBDPAAA2wA4HCzs0IW+EYCmQJ82IxsmRP4F726DiD5+yrTP4zBAP+flLlZIjEAUJiM5/L"
		. "42VwZF8k4PVecJbdPyZi2NE3OMErOIlmCMlaTc/IsW3z2mWUPOfMyhDwZy3PO4mXw5Nwn4405Er6MkWAZF+cI+LkyviZjg3RJhkD"
		. "Gb+SxGXxONgAoktwu5nNTZGwtY5IoMoIt43kA4EjJX/DSL1jMzxPLD8XOzFouEiSniBkmXFOGjZMTi+HPz03ni8XMMA43jSPiMdi"
		. "ZGVkc4XIAZs/8WRR5bRmyIjvYODk4MG0tbb4o1H9d/JuS93aWXoR/7hlEH/jD9ld+mQ0AsKZltdn6h21pFQBd6wFQu/2HzWAvAIq"
		. "yvnUOfXEeunxeUsTiLGcrq9zcXEsBn2spL+jv+p8Of0NffM9Svt3v5WF485M4knQxQ143bmZ6pkTEyM7icPkM5p+H+B8H/nUeFhH"
		. "8JL6IL5RFRMumTCBMlrVbyBOIBZlChkD4n5r4D8P+pNm5lona+BHQllgCpSEaQH4eACgqESAJe2Qr0O99C8ZHA/nNi9GZmJ37z4L"
		. "+fVe4TP7IFiR/jmNHRDK4ElHO7Jr8WgI0IABFQAPqQBvoAxPABLbAEbgAD+ADAkEoiARxYDHgghSQAUQgFxSAtaAYlIKtYCeoBnW"
		. "gETSDNnAYdIFj4DQ4By6By2AE3AFSMA6egCnwCsxAEISFyBAVUod0IEPIHLKFWJAb5AMFQxFQHJQIJUNCSAIVQOugUqgcqobqoWb"
		. "oW+godBq6AA1Dt6BRaBL6FXoHIzAJpsFasBFsBbNgTzgIjoQXwcnwMjgfLoK3wJVwA3wQ7oRPw5fgEVgKP4GnEYAQETqiizARFsJ"
		. "GQpF4JAkRIauQEqQCaUDakB6kH7mKSJGnyFsUBkVFMVBMlAvKHxWF4qKWoVahNqOqUQdQnag+1FXUKGoK9RFNRmuizdHO6AB0LDo"
		. "ZnYsuRlegm9Ad6LPoEfQ4+hUGg6FjjDGOGH9MHCYVswKzGbMb0445hRnGjGGmsVisOtYc64oNxXKwYmwxtgp7EHsSewU7jn2DI+J"
		. "0cLY4X1w8TogrxFXgWnAncFdwE7gZvBLeEO+MD8Xz8MvxZfhGfA9+CD+OnyEoE4wJroRIQiphLaGS0EY4S7hLeEEkEvWITsRwooC"
		. "4hlhJPEQ8TxwlviVRSGYkNimBJCFtIe0nnSLdIr0gk8lGZA9yPFlM3kJuJp8h3ye/UaAqWCoEKPAUVivUKHQqXFF4pohXNFT0VFy"
		. "smK9YoXhEcUjxqRJeyUiJrcRRWqVUo3RU6YbStDJV2UY5VDlDebNyi/IF5UcULMWI4kPhUYoo+yhnKGNUhKpPZVO51HXURupZ6jg"
		. "NQzOmBdBSaaW0b2iDtCkVioqdSrRKnkqNynEVKR2hG9ED6On0Mvph+nX6O1UtVU9Vvuom1TbVK6qv1eaoeajx1UrU2tVG1N6pM9R"
		. "91NPUt6l3qd/TQGmYaYRr5Grs0Tir8XQObY7LHO6ckjmH59zWhDXNNCM0V2ju0xzQnNbS1vLTytKq0jqj9VSbru2hnaq9Q/uE9qQ"
		. "OVcdNR6CzQ+ekzmOGCsOTkc6oZPQxpnQ1df11Jbr1uoO6M3rGelF6hXrtevf0Cfos/ST9Hfq9+lMGOgYhBgUGrQa3DfGGLMMUw12"
		. "G/YavjYyNYow2GHUZPTJWMw4wzjduNb5rQjZxN1lm0mByzRRjyjJNM91tetkMNrM3SzGrMRsyh80dzAXmu82HLdAWThZCiwaLG0w"
		. "S05OZw2xljlrSLYMtCy27LJ9ZGVjFW22z6rf6aG1vnW7daH3HhmITaFNo02Pzq62ZLde2xvbaXPJc37mr53bPfW5nbse322N3055"
		. "qH2K/wb7X/oODo4PIoc1h0tHAMdGx1vEGi8YKY21mnXdCO3k5rXY65vTW2cFZ7HzY+RcXpkuaS4vLo3nG8/jzGueNueq5clzrXaV"
		. "uDLdEt71uUnddd457g/sDD30PnkeTx4SnqWeq50HPZ17WXiKvDq/XbGf2SvYpb8Tbz7vEe9CH4hPlU+1z31fPN9m31XfKz95vhd8"
		. "pf7R/kP82/xsBWgHcgOaAqUDHwJWBfUGkoAVB1UEPgs2CRcE9IXBIYMj2kLvzDecL53eFgtCA0O2h98KMw5aFfR+OCQ8Lrwl/GGE"
		. "TURDRv4C6YMmClgWvIr0iyyLvRJlESaJ6oxWjE6Kbo1/HeMeUx0hjrWJXxl6K04gTxHXHY+Oj45vipxf6LNy5cDzBPqE44foi40V"
		. "5iy4s1licvvj4EsUlnCVHEtGJMYktie85oZwGzvTSgKW1S6e4bO4u7hOeB28Hb5Lvyi/nTyS5JpUnPUp2Td6ePJninlKR8lTAFlQ"
		. "Lnqf6p9alvk4LTduf9ik9Jr09A5eRmHFUSBGmCfsytTPzMoezzLOKs6TLnJftXDYlChI1ZUPZi7K7xTTZz9SAxESyXjKa45ZTk/M"
		. "mNzr3SJ5ynjBvYLnZ8k3LJ/J9879egVrBXdFboFuwtmB0pefK+lXQqqWrelfrry5aPb7Gb82BtYS1aWt/KLQuLC98uS5mXU+RVtG"
		. "aorH1futbixWKRcU3NrhsqNuI2ijYOLhp7qaqTR9LeCUXS61LK0rfb+ZuvviVzVeVX33akrRlsMyhbM9WzFbh1uvb3LcdKFcuzy8"
		. "f2x6yvXMHY0fJjpc7l+y8UGFXUbeLsEuyS1oZXNldZVC1tep9dUr1SI1XTXutZu2m2te7ebuv7PHY01anVVda926vYO/Ner/6zga"
		. "jhop9mH05+x42Rjf2f836urlJo6m06cN+4X7pgYgDfc2Ozc0tmi1lrXCrpHXyYMLBy994f9Pdxmyrb6e3lx4ChySHHn+b+O31w0G"
		. "He4+wjrR9Z/hdbQe1o6QT6lzeOdWV0iXtjusePhp4tLfHpafje8vv9x/TPVZzXOV42QnCiaITn07mn5w+lXXq6enk02O9S3rvnIk"
		. "9c60vvG/wbNDZ8+d8z53p9+w/ed71/LELzheOXmRd7LrkcKlzwH6g4wf7HzoGHQY7hxyHui87Xe4Znjd84or7ldNXva+euxZw7dL"
		. "I/JHh61HXb95IuCG9ybv56Fb6ree3c27P3FlzF3235J7SvYr7mvcbfjT9sV3qID0+6j068GDBgztj3LEnP2X/9H686CH5YcWEzkT"
		. "zI9tHxyZ9Jy8/Xvh4/EnWk5mnxT8r/1z7zOTZd794/DIwFTs1/lz0/NOvm1+ov9j/0u5l73TY9P1XGa9mXpe8UX9z4C3rbf+7mHc"
		. "TM7nvse8rP5h+6PkY9PHup4xPn34D94Tz+49wZioAAAAJcEhZcwAAHsIAAB7CAW7QdT4AACAASURBVHic7V0HfBVV1j93Xk97KaQ"
		. "QehNQQ4lUg5SEjmBDV7CtZS3op66N1bWuuLa176q7uHZQF1cXEVCBUKRKJ6KCSC9JSO/tvfn+d+aVmXnzWvISsJz8XmbmljN35j+"
		. "n3XvnjlEURWprOv/8859hjF3lcDhmLFmyZFWbN+BXRMZTcVKAOw2bNIPB8Dq2fU5FG34tdEoABgmube+pU6d2X7Ro0f5T1I5fPJ0"
		. "SgJ1O53FIcS++DxMxFpt/nYp2/BroVKnob7EZ5TrMpt8AbjVqNsBTpkwZBum7A2D9Z/HixZ+GUxcSvFEQhFv5PupnY19AmrO5bfm"
		. "N/FNLJPj/AM7l2F4+adKk3y1duvQ/oVaE95wLTLn7zvBLnjBhwjBs17egLb+RH2oJwPXuHYD1GH7/hRA6Qqn45ZdfHp8y5fzN2B3"
		. "iqj+DfgO4VajZAEOhbmOMrmVMOuwDKZ6O7UehcxDfJhfAEOSZ2dnZ9+fm5lY1tz2/kT41G2BRdCxmTHhZFF0Qk3gfhQFwYWHhO8n"
		. "JyY9CzaegbqLVar0NyU81tz2/kT41G+AvvvjiwOTJk9cBnBGupMyJEyeOQ/qyUOpv3ry5BlL/CAB+jR9j+xBs8UKo7++V5XCO4Uu"
		. "WLNnQ3Hb+2qlFYRK86NcAjBtgbksfxCYkgDkBzH8B5MuwOwa/KKPRuBSAjgagB3l+VlaWLT4+/gt47NPgqa9uSVt/rdQigIuKihZ"
		. "Azf4Vu11cSSMB2ER41F+EUp+HRrC9M2022yYcduZ88MCsB48bAf4SbP+EtDj8+PY3gJtBLQIYarYRIDwBUDwdFdh/sXfv3v337Nl"
		. "TH6ium+BY5Y8bN2WSyUS5OEyFRW8PTbAIfHl9i6vYBEh2b0j2npa099dILe7JgqS9OX78xFkAZoDL3erdvXv3P2P7cKg8li1b/B3"
		. "s92g8HEug6Lu5kt3g4qGR4uVZ+N3R0vb+2qjFAPPYd9y4ydcbjbRRFMkkp7IHANgGOFxL9epAGuf89NNPjyulHGV/GDVq1NCoqKj"
		. "/AehzvaUZySOa7PdQ549A4sta2uZfE0WkL3rZsiXboFLvBQgvupIMCKE+njBh8gyY0s+UZbnjZLfbH4CUJ+HwFmXe6tWrTwLEHIR"
		. "Mb+HwcjnVM14dh3Re/slItPnXQhEbbIBj9RJA7o7d211JUYLA/jdp0uRXyspKH9qwYUMFT4yNjR0NiYTKZTeh/EKtQwYJrYMNnom"
		. "Q6UdIMvfKmSL7bjwAr/0mxaFTREeTYI/vHD9+fAOAuUdOETk4tyPUmQGVPQ/pxyDZ7geAgzwX5c/+6quvypV8oPa52D6MB+AA6vw"
		. "T+y7VT0kWi4VLsEryfyP/FFGAXcDcCzC/BzB/x77NlZWM4zvlXdUUoY4Gg/E5bG/Q4wfpfgu8jkKiPyY5XOJe+k2w4VvgUf87km3"
		. "/pVKrjAfDYXozJ2fSJrOZ3sVhZuDS4nWQ4k8hxYv98FoGkLPgXS+GN93Z5VHPhXR3hsZ41PVQ/UZ+qNUG/FesWLobkjcE4N0Kufs"
		. "LkuyM6RZlBoPh3+PGjeu/bNmyAr0CAPlb2OThjBk+h/0eSLJ6fxhpfQYPHnwt7/Zsrev4uVOrzuhwDR++DPA+Aoh/EUV2PY4N7nw"
		. "F4KlGo3EeHKiJcKCa9HjxIcbhw4ePttsTlqBelovDZe3aJXfHQ3QJNMDh1ryWnyu1yZQdl2TeBFX7CkB+GgBN5umaGbs5cKD+Dam"
		. "/zt+4MvfE+UNgNpuhrtlIOZUNgh3fOn785Cu/+mrJl8ryPCRDnbpfsxpv0zlZXNViMwUSNwFAwrliZynzAfjVyLIDxBsgyUV6PPi"
		. "YMdTypHbt2vH4OsfltLUzGIj3XT8GSZ/jnv6zbt262rFjJ/fOyMg4kJeX19Da13c60imZdAd1+iVAXAG1/AcA/TiSkuQcSWdfYDZ"
		. "bRsG+Pgkp/QceimptfW5zoQ0uQP5XOHT3evGpuI+hXhbyrkK9Qp64fPmSPTjOhnrf4o7Ff010quZFk8vWvgagF0DlPo39a11xM6d"
		. "4gIc0ds+ECZNeqq2tfnXNmjWlyvoc+JEjR54fHR29Cof9FFnjUXcbtMTleJDWusrmAuTL4Qus9OfI/VLplAHsJpcqvh6SNx/AvI3"
		. "9jt5cEfEzzbHZbH8CQG9A876gdKY46GOhg41G0zc4TOdpLsetA5y6lXy4EbE0j7M5yB+CxyyU/3L58uU/tdkFnmJqc4Chkg1jxow"
		. "fAJs5lDFxIJyuPtj2AjTJsMGCsqzbywbwMdjcibq3AaRPRFFc2dTUtGHlypV5AP0YpPVCsOXjxTaF48av7W8AeUBFRcWN3B4D5Fd"
		. "R/xFI8qeQ5F1td9WnjtoEYKjheEjU+QDqQtzcbEhmgmxvmQtE/QBZ+14cyvL2XgY+l5lMJgKwRZD8LwD8QpTmkwJe0vICjytjYuL"
		. "6oA0XQVschQZ4HPX+jnpvwiHb0gqXe1pRqwIMMMdAZm+ECr0Q4FjVuXqRiz7Qnhq+gLcD2Fdil/8q8UN4JRo0pXi5QXDcNgLYSZD"
		. "4PHjVd3bs0HH+bVkT37lmX+0ewWEwM4PD7GQGp9HhaGgyinXOpsaiISd//k5ZxAHmKjgnJ+dyxoR78evvTtcBR4e0oIcFeGwQnh2"
		. "sJGz7b69xh96rSklqLG2Mf7eL4ZL8GBN1ruFljHIPjNEoj2wYTbSzfQ4PrQpEEg+BzUHw3yOSc5fY0LRzYPHaQwEbd5pQRAGGxF4"
		. "IJ4bP0eobrGwbAO7Ds0Eg47tdDT2uPSBSt2qRZh5qoje7m2j6YQe1r9PtCzHj1wk6oBO2I3hzGHcTTEbalTb2GM64zkniStZAX/Q"
		. "vyT0YsHGniCIC8OjRo3sh1OEzLHO8qZEFJxI8OdVDTN/qZqSb9zmoQ60M8lvdDHTNAQelhDSLzEMdeFepgB9/DAD4d5D0j1mTuKB"
		. "fUe63YXFqRWoRwPylMajjO00m8xzcTPfQYKuB48s3PJ5uvnUQwje6C3TnXgcl1zG65IhIb3U30K17nRSr2xMegJinDWdC0h8Wjex"
		. "hgL0LqXOpwfk+JPuUTk5oNsBQx6kA9z1c4ThtXmuCEymeVUZGb3c10O0/OqlnlUg5+UT/Bui37XOSKZz3HEXNOWTA+yH1FTILT+1"
		. "My/l3Y33jS4NK15ySl9ybBTDs7BCo4/+S1CnhfkkwMEUSnEjxPBrFaFG6QBcfFWloMdHBaKKPOgp01aEwxiaYpqwCcJGJ0VDht1s"
		. "s5lt3pubMczLx8YH5uftCZ95yChtggHsRwJ1H3tkadKqlsSU8v05mdHa5SL0RZHFV/UJvOW3kyRBB1pdgbZ5BYHQ1wJ4JoOc66sS"
		. "HM8v1B1MiTWEBnJ097gZBYK/jRqpizdNBGlvCcwH85Pu/g8sM1XwdFOnzALkHAO9YG+QETKddSsB9wTYC6FsEG5uxK3Xsw3tP5r4"
		. "6PcRXbptLIQOckzPuJkEg/qKY7206TaSxuTyLLEQrU4nGww5zT3rKCZHe70p07w+4QYEEWdQ5r54EKx8EOS0e5V7unZJ95fakUX8"
		. "YWLy61bpNQwIYankGbsarJE+VCVr+9AA8OF8lzxXJRCMLGdkgT+cVEm1JEGk5QJ90IgCPECVYlOJnpkpzlRtiNJm+yUsb++Anhbn"
		. "PP9IKy1gEBXgMSBAMb5Nr6SOmdSokammM2xo89fj651mDO7EmWaSJ+TIUlx5h9GJvkYbB+Ur0N1VAK8FawEU1qJI7KjJPOdexBc7"
		. "YsxenZI/fYR91xYDy1Sf9NrIZFBDg884b28NsNiwguUdHbqTujT39OjWaw3NNMlfTjAwo1qUasU6pSIvTiK4+5GcwhIkqDkpJVeV"
		. "pgXaXU0vzOMFm2rozZcwl/QtXbvZ/peGRX4Czs7OtZrPAF1ZJCsRAP+b9eQJebmK0JZFLrVyYq+c5Z4qwyYza6UlxaB60FkjdY54"
		. "iiKyTKBhW56VlX52Rn/uxv2sLh/wCjFDor2hBZij2UUu+N/f0A1yfr0iL2os0uNgoOVfptYx6VjlpVYoIlS3oMAjLg/YLrKy2PXk"
		. "2kQkf7UrJua9f4YrnAl5UCKQLMKR3EM4ovWISLjh6FGnAZR4+pcLiqd8uohJ41JuSnDSiSAZ0JCziB52ddMlRQVLdagbBJVirqt3"
		. "HOsB6ywJheDx/25U2Nr5f/vKHgl5IAPIBmPcvjx49hi8SKsW6LQVHjyLBszU99RWQ2PNOyuX7lxrona5O+iFWpLPLNVIcigRrgda"
		. "RZlWe26cRpXHsB+Fh2zLyl98TtPF+yAfg0aNHz8TmHH8Vfg2AH7OJdCRKpM41jKwIXHpXMNodJ1JGuaZgKDY4gP3VA13pgEn7jN0"
		. "NSa5triSrAB48eLApNjbu0XAY/FIB35johCctd9j1rRBoPdR20Gb4Ucty2SDAkldlq/YlkCHJqWOLMwqWv0hhkgrgmJiYGThrD/9"
		. "XEJx+KYDvihfp8iNyoTMqGX3cUaRGgUndmXpMPdrVfUDkY2/DAlax73oontuZNvZQ//zlYa0LqlXRdypvxOkCTmvwDAZ4PnRzsUl"
		. "EeMSoE1Q1v+VHbU7qUSUoTqGopLpx7rSwvOdgIAsCE9/bnjTq3HC6Nj0Ajxo1KksQDAMD34S2ACd8vpHgqQf4PjhWycUCWZyMkgB"
		. "0ITzsnlUuPqLnn7eCllkgoP06Wb4ge1iJLNpoMn2yLmHk4KxS9YsA/sgDMGOGq4MVbhtwpNRTzpPzOGoVPTgkAuBis/fYrwQr0xV"
		. "pemra374fFS2zElmPWIv5TexeFOQ2SCQB3Lt3b0t6evqlvxRwgvGU+QbnWWIRPV2PsY2Magzk7YoU1d2Ubgl2p8s2WVbt0qkU0hw"
		. "OyJ6WKYEnuhCe9c3wrF8Pdu0SwO3btx+FTcKpupFtzVOPrx7PaoNXYi0OPpdLKcGac3qkVSu9imOlylbEu1qQpWr60utJw/a5bWl"
		. "jl2XmB34Nxyifm03SyzxdHKJTxVPU8BKkffmY+XjQwYBlXqln7mQ1iL6S6vLB9SU6ysSc/xQEYVyg95+Nrrb4TJzzd9GaFH98/dL"
		. "PiWdUE/NIbAOkN66RKXwjL0/mz/76AIv69iiy338FVby2kBoPF/hIqgpkhWrXk2gk5GxLGXMVdt71dx3GzMzM+Lg4e9CJ6u42K+l"
		. "0BicSPNPqBI9klkMUulcxX0klBdha+6sA1m2LxfIaso7oR7E3X0DlT8+n0qfmeVukVMd+pFfKU4BtYPTk6rTsT0bl6y+mboyOtg8"
		. "mIp2hkuB0OoMTCZ69KgWPxJ60OKldvVHfBrtO4Aaa6app737JLS9Q6tcvk332TKqav1yS5IDSGwBsUHoCCfzFuwf1rsEoCM4MUer"
		. "YDv/Gael0AkdJWcVGGlpipOR6RhVGkT5Lb6Tdcd65bno8rcjOqDBKN5c7WyUIkTrBjfa1tYo26ADtsc+K/cZd+6n4ijmUNO9Biv/"
		. "TFVQ063mN6iW/YGvzXNs7dsWNeLlfxdpC7bVD8bAz5LapL/KXAvgt+y10XrHJI3n8BvesNtJNA6uoSfDPc0yhGZ6zzOvHGIfURSk"
		. "B7LnZOuGSQkpFVxk9kDk5DslYRM/IkQDWguYPbG2ei2IoysKl+C5thhHn7KGH5S8B8I61ggfcV7vX0/RjZthVRjFwnmIAXpmg73z"
		. "a4ExdfMzikdbv7A7qU2Egk+gfVI+NxWHUlTlwpqKpZt4KcpZX+4DM65j6dfe22V1vynAS4qOpcv6yYIDqSDHdtDl+2BODyzYWK8s"
		. "Zca7U0G7kqQBcSm02z4R62evlN5Y/yU/2rqErjljpYJSTykx+Iwu64YCVEhq8bsn3MU00oCyw/VVKb937uZRc9T+Kefp6KjrrD9R"
		. "0uNAHZMsIeVmRklkvUszMsRQ760Iynd1NSouZMZaOT52tuANqG+wH9CizJYav4TlHmcivO6U5WLUN4FKqplTo5zlic5KsJvnMDBP"
		. "ltmuk53rpLYrn5XkJJHd0kVmVe9zqpAsk++tuqE8jVUDze1M+8UGKfvYGard7LhV2nKmSZE7GLinSNvHVO31aY83KoPRFT9PJW5+"
		. "nhiP5PjZYt/Uif7FVnLVNGPx0pnNzozsPNliMEbUD16R+SEOhtgBc5hs64KVwjFa2a6Cck2Y6q9JE005Y6LP28juiXE0PKzHR8pQ"
		. "GD8/zkX/lIZuKB8+phLRziWbaQQN3AXe86+mWlMs5uZ3N6EoxD8ygitlvUNzTfyDzyAwynt016LVzkHk41fBBvvpK1c6VWpoZtTe"
		. "k2M/HnmdIkXd0mPSkJLSJb/5J78PTp8KOv9WljpIATmaZia4+bKXxcJ74G6Id6gzkRN3c5Abicj4UYF9/IMrncVH2Hnkl2GV33eO"
		. "9nj4NdbwrlstLfEXNmirZXNMI1bpvEtXMz4V0V1HMLdNU6Y3fHqD6tbv8dHD4Jyav3KsC2OBbzJeRVspPX7WuTmgQGD15Ro0kvTO"
		. "OWim9Vr5cCTCnQMOLzbQ+qYFm7Y+SuyI1/HjpKDwRVVK/tEaCfY7JA7Jj5wFqXPMtWa4YI2VxcKuf/JDqv84jQ+cUsr9+BzWs/Zb"
		. "qPt9AifP/rDpn9Qcr6CQ861AAla9FZaPHb7Nnt3O/3MYB5kYpNjgb9cl+ToDzpi5Mr6Nt8Y10K4DsXWWUwOJnu+OnKEm6Exq8wGs"
		. "pDd74MdjzIe4R2IDTcMgryRo+9Ys2UkPeAWmfA+yA86UEl8fG9Xn7qfGI71ptzPNf9FHTGhttNFjYxeT6ZC93sqrQnhAA1tLPD/D"
		. "DNgfdf1YlXXDCSlcdtuHieYeGQOMKLZ77w3T8kZ54IPbAk1aN50rM/Q33SY2npp0HVHwEe4yEi7Gf7C3bZmZ78qpe+4xqFm+U2+D"
		. "+p1XPQZwtDzHGx4plgOEKFIui0F6dHwITHzo9Aef9yXz6jZv43qft62i7vZFuPBBN/SrkrwVw8KqMfAkH33MMKDfRP3pUSzZb0Jk"
		. "Gqz/cR+TYdVDFJ+q2aVIvVsyfZ6jSS2c+IYHrxrSlhNs0Ct50FLxp/soVHQHbs5UFIgFOcwCPdhD1rTJQxzpGyXCMrE7ZJvKFU0p"
		. "MTiqEV/wTYthjLsBCAZyPAp0LB2p9YqMq/WCUgx44q4LsjVBfTYLEn09s/2BzErZqvoNLLNTQq4q22ZtocJnr8xFKNR1gsL76plc"
		. "o+p//J+2bpwyh5GPzPXzr4GCV3vyi/BpaC4BVqW95axOSY0ZhZykH+JBvlchLYyCecZCa6YVGGl5mlG6y5AC5bKR3KzsTfItngLb"
		. "FNdH6hCbKi/OumqIHOO9DTsTDch5i2691XjAqRwhUbvL2S++EZJ9Tpo6Dox2MRqD+4va1sMOuvADTaqRs1yXXv7eSnGXVFPvRnzx"
		. "5TXkHyYjwqfrvCwPesUB216/6dm0RFZ9HLoB3BzwLuVqqPIog4J0grX88bCZ7k7vXKTC4fMvHCUZDKseUmOm4xUmfpNXTWkioP5W"
		. "+JLWenv02jszgtyI58FpJ/0uvpUGlFp/06Uej6ZaBJXQwuom6Vhv9TYrTBbth0SYqn/gQNUE9U3w0WaYOlXq53J0w0g10jzgptqJ"
		. "SKMMkXLu0Kj4HeGf41SMDOBe+OwFunI7dC3Z6N+A8nr0d8ev4kw76R9caKrB47a0bcC6fr3atpud226VB+0/hUfujzQkNtC6pnkY"
		. "Uq0HuAVCH4IF6p3M1Pfq9PaD0uokp9poQMvHiPDa2TB0mpRoRGzfmtdriO4M+FgSDsaysbLvdnsANlGRcWsPe+uN7caEJ0hgBr4K"
		pBitmap.="47TbSM9/F0jM9q2m3zmJX++AFf55aR9cfiqaUeoHmdqkmfmo9tf7sGRVkA4haSb7hYIwkxdxBGwjHS9Vj6a+/WCOB1iuzPR0eVkh"
		. "y7bzlEbh6XYrq2i6rpzEvL69qxIjz+HrLkkhHotsylJ4x+Eo0pEKnj6UFxG3lgz/G0EO9K2lftO/aJu92roGTZKZpJ6KoY62Rnux"
		. "VQdVGX7VeC0fggbPKUM5GM45EUztXjNyt2kRTkfZyj0r65/ZEqHzyF4v6JUOXkMZ2IkJGwZThmhctrkDrXF8yiXy3pV7PWNdaQ+A"
		. "FTppJZnje9+yLoTvgIddrTlAPj/pvPSvp+bx4yZF6MS+BHulbTset3ofBrdb5//+1r6HP4FidXWGmCQVWGl9go+sPxNLGxGJ6o2s"
		. "VzToQE3b7qp/4gMyQXO5ktTqJYi8JYIfD8YnBYPTzOdjW6ba0h7tkYBiUAq95WoGF/qOxtbyde6Gq34J6vuFQDHWCFL+yM4Ge6VV"
		. "JmxL1nS8nrn9XXL30W5tUR498H0+z98bRPRmltDuuUbLV5+dbKSoMU8NBtn94f+tLMxO6SgBv2LBhJ9Q0//hy79BqttzJavQz2B4"
		. "pmnjSSgsgfcqmudv5MdLPrDBRVomVYhwC/QWgfdCxGg5UVcCOhg14CJ7pVU73/xhP4yDRS1Nr6Sc8MAvhed8OrTHEHSMHofrPN1H"
		. "V7H+To9zneyORJUZdPK+uQDO9g81f26pToyDAgHskKLFRoI7wsI/YlLbY28v0TM8K+ttuA50Bu8qbdwXCoD6VJnqydzniYv+rGeW"
		. "m1NExWzGdsMoqiKv0UqOD/oJ6s/fF0XnFZt01g7RU/Y/PItJrFYjAPtkDcF1dzRtWq+1hgKNamb21AD9qEaURmtgIedF61N4HYJl"
		. "e/jaB3oXE3n9mKf31+wQAK3deDCqz0L+2J8H5Kqft8Q1+r31PbKNPGr/El7pXUkZ5QsQigwhQkgfgrVu3nszKGvEBmnqtskRr9WL"
		. "xlI1xDhpX2npfFTD7EaXcdvX0lz3xNL9DNd0DkC+BVz39eDTZGw2Sx/zs7kSa17EKXncVKbEKdu3c+/4KEj79hC1wwbYju+ruNjU"
		. "1zjEaTfz7Bwpj0nq9WMsQfmcD4NaCuMIg+kyZ4vS/tBpIq5muPBojqeine5bTp/CYLwTQVxyNlRymq5A3qNxCc84ohTqWtUAoIeQ"
		. "OxMinEcAW1b3dtGnT/qysrDfR7Jv814kc4PwF62WJjTSp2By8cJjkgKHdH8VVqSvsUbSTp8yBGn4GztWQUgvN3ZlEb0BaP4REL0u"
		. "ppT/us9OwUiv1hU2eu6Mdvdy9ApJZS6GEkKVhLTbd6mT2EZ66urqHLBbbdHItgBYcsJYB/llSI2VWGimtoVkvV3ioCYCaFOf+BB5"
		. "upSoOVreTvwo6u08ZPbY3nvohzp0NUGdCahdBup+DRF972EGTC6LJBi/7PuRllVjohR4VVKYC0BfweDh3orx7OpDoAzC3xcOHj7g"
		. "PwEhf2A6/kyO8bst64Ppaej09eMgqDQaERYxcnfLy8oPfwvnJQ9iy2d4gDQcGayfvxbq/TwnddjCOJhdGUSc4ZbceiJN+NVy9M2+"
		. "nx7klVmnWxx8zism/DyVSZrnJtScPREj9zySqtm1Idbrmb9Om9W8NGzbsciIh6HL94QKup9YOW500t309zTpu8745IJKrL5d5gPQ"
		. "ZdfG+SCLRWVUmOhtqNRMxbm5SPa1NaJAcn0AEgaMXoIJ3xTbQrQA61iFrEj7j1l3TDTTv/ZwDr/t7lF2PmHhftLq3pgvUwpQCzee"
		. "hdO+IG2jR/wMQmQehXhdg/r5pZmbWtVaryBf7SPTm+J615YDLUv5NrINi4IFeI90gX/DCoT5wnPjvhiMibYLTsxpg7IBUB4peViT"
		. "zOVsN9PsjMTShMMq1tK5Xgjl1hDx0qBdpIB6gGceiqcDioM3x9XQUoRhXzZMLrdJ6HiJTS2+45JF+IgUv361EgW9SuV8Hdtu2dcf"
		. "OPfdcSDFbQp61PPQaqz5D8/qt5Uq58Kq5mp5Z6Dse65cUalop3fzx4Dd7FJyo0bCf5UYnrQHQq/DbC8nTaxd3kLg0fwBna2qBDb9"
		. "osjp8hwLdR7xLdHKh7DH73HhleY2URso+yw+B/wcAf4UBI5T169cvA8h3oUUvBz6NkloG+BeJDZIHfFW+Tc2JuQYCgqhp1bkVqt3"
		. "eJNA0gMF/hxH2LIXErkiqk2yttl35kMy58Ko3QTqf/T7R5wpFjWRrwdXaXp92uf63FvBeYoEB5gSQXxk27NxujLE/hiONipOoc0M"
		. "AnMfHvJfrRthkyWVx3aVgp1cC6pZiuUXuNJlHZzhTNx+OoWugZt9Nr6LP4HHref/cxuqpWa1t1gNXXT40EEVVWe+D03zgxSMh9TF"
		. "8883Gu4cMGQZbzK5Rprcm4BvimqjIWEN3HLNRQqPvuLEXNHnLNAOySrBV89Rd95jfPBvUb5dao4ejul2MLsiP8qhAVZ6OBLuP3eD"
		. "6A1VPeoNRIDUcmNiPIQHMnS5BEK4fOnQYf5/4Cs+JW2BvFbXUuYrsvXBe/tytmm47FkVnVhtV3rTuGysKW+wrvXIav6G1qLysXR1"
		. "9nVBHP8T4jltGNzG6/EQ0TYcNDiTB0n4wcN15Cs/Z9440P4wK5IjBBdkXci8hQHYA5KuHDh1ahDt2h5waOQdLUUt1VAZV/ddO1XR"
		. "RkYUuLrJ637PR2mSFLdZKr0raQVYUmABePO49aGuSpszyGbp8+mz3GiO8ZLPsDSsAUrR2P877NGNiHdhFgXFnnHg4WPIJEyYtSLp"
		. "SHARMPbCaNfGuvv7bsLqBnfJXQe4cPnz4jwIJLzl1vtWraqiOBmlO3Mxv/n+T62kbpO2WEzbJhmqdKzeIHlWteACUILv3ubc+oNI"
		. "sgenbcrdkKrSAl7qDzZ9FB92Y0PDpl+7EY8KUjlar+Z9gO9nzYGikmHRADVV6/anpAMCf5J/AbVY//4YNG/5xd8bI0h8tjnknTZr"
		. "nW0WRjZsPQNoe6FZF009aaRok2qCywa7SHFtRfjNINrk6kqxsiOfY/7l1sjqLRrakxHbx3Ym1n0hL/HZwLj66Wsi+oK8tbj44Xqo"
		. "CV9Gp4dpzg9qA7Vq0JQ8NrEKb2yNxlCiIPQLY2CKk8hV1OpBbY5COXWYkfd282QM5cbvXfvhA+zGvfprQYP86xuHn6Ys84LzP+cO"
		. "Usvr7eAAAEABJREFUWloX10A3nYiiM6BS9ewsc9ljPWA9ZYi8c6kDnFjvNoMnfxnx+SLrBcfb1S3kHy+hUc7cJoA8s29UbBPqSO+"
		. "neOyuGtxdolN80VFd82kXp/rrpDCD7MfYCdOYQfpOVboCvD0iNV3X++Ty9bwcfzXFkpgwFTbrCRz2UPIQ5ctcy/ebDTD/iNOO9jl"
		. "rZpSYpw6rctJ/ENoctAYbSYkc4EcQyz7UtZLGlJlpZoGN7A6Dx/ZqQXYzdqd7T8K8TdCzJ/oqWk5zR26C8DRAWeBebY6D/LEgXHV"
		. "e9NQKJNzkBld2tJwnwOveTpVL5/tbnc6VvvDHmLFbyGJaheb3xHFFI9WNI7J0/i5xwoAzS77cwd87QvpHm+PHLbdaRQ76GZr2reD"
		. "blg3Fis6lxISp3RoEml1goW1RDloc10jHXCPtzem2DMdx4zc5N6GBNuKc1+TbKLvMqgsyaYHVqmm/jfWror2gM+p6wjq1K/YOuPN"
		. "c3yO8+UT01NWwI1zCOgDct5xVjgc6OpeWhDKg2Ktq+bG9SeMuITJswZk+NjLLpyL/1AIQ+z5l3NdikWPymc7cqsFly4rzUsf+Ade"
		. "3WmGXy/bnr9ySSS0EuF5gS5Wdipk1Bum3G9K1KrYJW9k7dVNrxc28N+q1DjW0PbaRbj0W43ppTQsyqaRZ2SCVqtY5t25/MlO01El"
		. "8JvsBbZH21Ys+gHR/uJcmmXs6F6umbR6KnzyciewypyDGik7acLiybh6kXzUN9IziZbt+TJr4Bs51HQ4t7rbgyvo6kiieZFtMGQX"
		. "L1+xKG3scu+lyGVri/uhliwAeejz34I70nK2k+YjHWfBy+a9SEGlztIO+gWQftDhbPW7eAIALulbQQ4di5VEhBZCy76GQZlVlpmc"
		. "tKJAEy+mufKM4AJvP9cq4VK4H3MeA+LWxk59ljN0lyiMaUIJ0fed468M/2idd2at86dfqczheF5lwi8sWH8Xmr41NTR9ovyyOtmx"
		. "GmQukS3HSJ+70Fs+Wger5CIZI9ystsZCk7Eqj9CswOml1rIPWRzdJn1iX6rYC4PuhPR7pUkmPuUDWOllMAaov0FoKIMFESsdyNGm"
		. "WL/JH18VOfgpA3YG6bwD8LxBPH20iShGYcJdgpC/3JY7P6lny1XZ3eS7Fe5In8JVY0kh0TO97csUm/aaKja72VjsLK5a6k1sMsKN"
		. "B/NBopidJd60PL6U2CXRZqUDTyoy0BvHsV3FN0mugSooU4Hww4alOVfTooRgykeZp8gFaobr98PYHvyJn9LGYKR07VC0+Gqilh+M"
		. "mZpNguMchOi/tVrb0v8q874SML80JHbYSMzyLw7Gas+zGQ5H6n6KVmx/x1xKRncEvFQ/jApcDJlGLAR5UtOrI9vScL3CLpoRSnvc"
		. "ija8w0WhI9QqAvBQOkne2TuR6xvZENdKbaTV044lodWWdsIj5kWDvYg1BJRghufAoySvc6BIPfw7GTXoOnBZ0K1eDy+lMZ17D3qS"
		. "J8yDRj28UsmzDnOs8n6d2MpF/TZFNShrK35Wp0NbdkTq6Fx6cDKlNTnkmjpsiMqGRiY5/4ckLCWC5Akk9SZPLTTSsykjzExsoT5p"
		. "iE56DJZUIAPqyhHrKrDLRoEozubs+dNWyHyYsRBss7TO6/oj9/C2dyj/XXWZ/X8z4MbzzDHX+pJcvN0M8hP/GmJioOBx6AGau71R"
		. "Hsxi+/J1qSR4eDwupcXNdb9PuHlS4ap3SS48IwAsL1nw+LW3MXqaJxYIRb3Sig9H/FVppJRykBQBa/apwy+PmNyDFGdUmeb6XP1B"
		. "bboPdpV89Gjelf0WV889nIhxS5hkMhms4lzqxcYufk/GzdMZm39kVy1TL7ACwbi4v8f681HFJ8NwWiAYywsU525Aad6Pove/Pa+P"
		. "riAAsdXqkZb9AAnst5EpyP6Jnf0ylibpAV7+SUi8t36tP4QNebHLSFwl1NLXE6j8sarYN9pFivi7zzTFxwpWH7ZM/7ly+5FpFu7J"
		. "ERBUfla8o1bOje2ImpDMruxX2+f+U6Tvso5LNFks/uaNEktObRIM8rdk1HLKVf78BR9kF+UfnaflGbM55eSG9bU+T1EfHkCt5hEp"
		. "Wnz3qDTQ730rPpNZRJV94rBkDEz4lUGRhYh1NKLMovlrmDYv8x8CBgfW0X1Xe0/ccg8b//tuEkXed7fq+EcC189xLo0fzRSrzlWx"
		. "2JmbHWy3m25ucTb8/s2R5rjLPbDbfAgfLIIdJzhW4K/y7woWwy92wvQxtGIKGbN2Xv3KwO/ZVUsQA5kH69vY5cwBK0E+9qMgNsms"
		. "GZftGge4otNDTaXWkfQOouT1jfBHw9bENNKrC1S2jAtRfDBwaaSRY1ZIop+1MbNa5jvdh085kNl+K7StKHq6Y1sc2f5eYPUA0GWb"
		. "L4NLsjPwVz2iKPLejffYNuDGP2NP689mKPq8rRvStEbGg4k1Ki7srXFss1eX/XCB3bTDQ70rM9H6SelWclnjVX8c10Eg3wKpxxqB"
		. "yGpi7BlRvusgN70RyAQyJexdFh0FTPbUvYeIPPUu/WBaI7+6U8YPJZFgILlF4iD7NyF+uBVeiASdy39iQPuKzcce3676LGlGA+TK"
		. "229Kz78ZFLAqrosIeu+dCj4b3ux7x8n6LQ1PQS+EA/h3CplqD09WNqew/DaulPuQDqipdvG61kP0E127HSuvnpsdbLiNBHE0GWro"
		. "3acKLTofzyT5ly1QLeG+OH5cUZWL3oNxd4MEHq6saqfHWQG0Yftx3KX83Rfy9r8zjuZ/vSM/hPSm632LyS+6hXfKCfEGZiV5I9X2"
		. "/V1VJmRsAcD4neq+1iTJqTKReDrhlCPubUutKT++QYH4c23v5KNO2pPEXxhL7D+zoeFGgu5kg3PZD8oSVkNAdaAa/0L7RZjYJdW1"
		. "uPpD8lzLzV59obvsiBvA55wyZvnXrN9wBoHoSZ1lElkfc2QiHNCD3rTNSQiOjEqM/hys8wA9ygGtNGhPcQhWtPdZMyMMJ7tmbNLG"
		. "8T+lXTyDYKBcEYeLupLHXCsTmoEx7lOdqfKKyvuIhcdQ5nOH5NBqKCMBdunSxpaSkvdG/f/8VO3fuLHUNQnCP+qWwmSlA5jefD1p"
		. "8DVUdWidHYMCPm5zkM3W1lSRY9rA9R4//kDh+2p7kCa/uso9ds7t4+Tsx1Gte58TOtzLG7oMXfwh8loqM8QW0Jrjr4pp3DTmZG7D"
		. "7MxhFBOCkpDS+1qXdZLLcju1jPC0zf+Ur29LG8N6t8WEzVIDcodH/W4fBbbC6QKnR6etnt5IEK/NcaYPx/y2jkdFZ7cZ68vFbf7j"
		. "4cPZE55563p25I2XM+/BhZkp5gjPk7wT7o8h0VTIxXYaD3ZmRkfFKXl5eCe9R2ZKWfY1BYDuRkxI+UxnAGGfoEhYM8FrB6TvPqbU"
		. "kmPTUtSaN8eFE8VEOLj/k92xnSs5qEggAi8twPS1eSCwiAAuCKPXo44bGW602PhrCF2KkQfm5+VvTs39nILasWefCDWhkrue8Ge6"
		. "uFnAn6UTKLZRgIn0A/aVrpBqelViuag4Hl+c5nXNFQbiDS3Wgj08Go4gA7HBQk+DVpNcOHjz4882bN0vfDTjneO6q7e3H3MeY8Hx"
		. "zeBe5lmGIxDeWTE7tirC+r7KGTWpbGxRsLdBMEK/B5ht3OTSRh5gvVDc41kTbhHlbUsfwyXveNYjDpIgAjJtUpDhkosjey8wckr1"
		. "t2zdSwweeWPnCjvTsM5B1c7i8f7K418dQpzcH8AQHIx+F2sI42MVF1Qw9wP1JMCrcsisle0O/wtz3+dGAEyue+1jIMPdMTXkPhya"
		. "B0evQgse5oDSnbREKk5oOqNZtIYqGRH8FkC8FyFKPzb78Vbf1TB3TATdgaqhc+ZfJ9pr139RvDuC8G1RtM5mOzg6fwrLDigfAlcZ"
		. "EA3tvZ/vsKxwiWwQVHdszLeX3SO/jqhELE7f4m+Ts3s3xqCMCMEKjg5mZg3ineoIi2Q6QlyI+fq6gQHzsqNNZs1rIvsyeyhbjIrP"
		. "98VLSwrj6gC9tKykUwLvXG1pfgsmPHfYFVgM+m4j75YmHFdQkOh1XDTm5qlnhUkQA5k7AoEGDVqGRF2nuGH/54L60NDYD+XMqe1W"
		. "+86/yDhfYGUAmGhmI55qoRlob7R5uaLmDxafH92jQSHCEFswIRYKV6XpS7Yea4F5dk5m/6hO/JYJQxHqy4Gh9hCfwIj/fH+wEX/u"
		. "fsbH2x+6OrXqrQ634x8dK4/g8Lp8YuQpqeWFsPa3k4Lp1mD7PsNrXu07+uKTaXkZAP1OIEkxhAcupHoIzIzN/5acBSwWhyI0Hl5c"
		. "sTEhIKobkJCnT5VjUc0lp+N1/zMbu/4Otcu+AOuNPveoNPbj1rsLFHzI7abelCaGRmrd+fBuekzWs2hTxGNjLJjwJDuHZLMdFTwe"
		. "4LV4tPGIA79+/v+6ccwbzCV/3KdP1uxgla3TGdmsj8V+40uiPpybFsxeN2GNQndb+UptIsCo/tMs8hNj4/HNO5H7b4oZRxEeTnC9"
		. "BFfPuyoBrCUUi5AmHZ06VSfoIVltJsJSmakyojGhFLaufGWj4L1yKKMBbt249DinmPVkPhVOvNQG3ww0fX2VWTA9Ssm0dCW5Gc51"
		. "o21M/Fax8WG/aTUso4uPBRUWFTyYlJfNlHqRPXDfna2WRBPzKcitZ3JIaxLY3m1qmCA6KDsc1AwtWrRkYoeYoKeIAHzp0qHbgwIE"
		. "zGTPwd2xMkfg8XXMBHwnHaqD+Yn6BqrUV8bX0/tXQWDt7yMkNPpPZI0WtspLv9u3bN2VmDuLO1gvavLYCnL/SOqM8jAXV2pD4DA5"
		. "cxKyBJ1ZuaO1ztdpq3Nu2bXlx4MBzOvP1tQKVaw3A02B3by+JItMpFlEdOuok8aFF+avefURe76TVqfWWWyfehbn97gEDMvk6Rfe"
		. "GWqelgHdsFOgugBsbxjhyG9AR/P5Wl183l79zlNmGJ25VgF3jmPdlZmZ+h/Dp79iPDpdHOJ+KPwf29roym/SC22lCWyGxf9+ff3L"
		. "+dGee75cx24BaFWA3bdu27e2MjIy1RqP5HYBzbkv5aUGPFgX6XYWFRtRGfuX4ZhAfdFkgis633Ta2LSVWS20CMKe8vLx9giCM7Nd"
		. "vwHUQwEcgh3wZoGbZXAXxJQ/ePL/S/HZWrXkMoJ8KjnziWptdl4tOwnFajOduYWHBsaXuKTinA7XpjXDKQfzc7t27v2e322dCbV8"
		. "JaTxP2Y4QAeef7HzX4Wh8fefOne438Tbj98zGhKxEs82cw0RhBLxraAvWnzSD1RGgfLjCm6FK1iDYWbWvaNX2SHdQRIra+kmXiPd"
		. "bY/Mm//Xt27ed1WodCyAANDsLgHeBJLQDztxeiwCcv4Z5FLvfI/8bPCaroPJ3+OM9rHQdL7/A9SM+O6JHamIfkYwZALwXE1knONf"
		. "8Bbl2rh9/F5d3rXL9zqdd1iG/DkaghEmLjom82/AgI3YAfu+eRla7Y+iJ9arXOwe0wj2KFP0/EGyZ6QvxPs4AAAAASUVORK5CYII"
		pBitmap:=Gdip_BitmapFromBase64(pBitmap)
	}
	PW:=Gdip_GetImageWidth(pBitmap), PH:=Gdip_GetImageHeight(pBitmap)
	hbm:=CreateDIBSection(PW*LogoSize//100, PH*LogoSize//100), hdc:=CreateCompatibleDC()
	obm:=SelectObject(hdc, hbm), G:=Gdip_GraphicsFromHDC(hdc), Gdip_SetInterpolationMode(G, 7)
	Gdip_DrawImage(G, pBitmap, 0, 0, PW*LogoSize//100, PH*LogoSize//100, 0, 0, PW, PH)
	UpdateLayeredWindow(Hwnd, hdc, YzIni["Hidden","X"]?YzIni["Hidden","X"]:A_ScreenWidth-A_ScreenWidth//5-(PW*LogoSize//200), YzIni["Hidden","Y"]?YzIni["Hidden","Y"]:A_ScreenHeight-TrayWnd_Height-(PH*LogoSize//100), PW*LogoSize//100, PH*LogoSize//100)
	SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc), Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmap)
	
	Gui, % "2:" (fg?"Show":"Hide")
}