diff --git a/CodeWalker.WinForms/FormUtils.cs b/CodeWalker.WinForms/FormUtils.cs index e6348e5..2f66c47 100644 --- a/CodeWalker.WinForms/FormUtils.cs +++ b/CodeWalker.WinForms/FormUtils.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Drawing; +using System.Reflection; using System.Runtime.InteropServices; using System.Windows.Forms; using WeifenLuo.WinFormsUI.Docking; @@ -228,6 +229,91 @@ namespace CodeWalker } + public static class FolderBrowserExtension + { + + public static DialogResult ShowDialogNew(this FolderBrowserDialog fbd) + { + return ShowDialogNew(fbd, (IntPtr)0); + } + public static DialogResult ShowDialogNew(this FolderBrowserDialog fbd, IntPtr hWndOwner) + { + if (Environment.OSVersion.Version.Major >= 6) + { + var ofd = new OpenFileDialog(); + ofd.Filter = "Folders|\n"; + ofd.AddExtension = false; + ofd.CheckFileExists = false; + ofd.DereferenceLinks = true; + ofd.Multiselect = false; + ofd.InitialDirectory = fbd.SelectedPath; + + int result = 0; + var ns = "System.Windows.Forms"; + var asmb = Assembly.GetAssembly(typeof(OpenFileDialog)); + var dialogint = GetType(asmb, ns, "FileDialogNative.IFileDialog"); + var dialog = Call(typeof(OpenFileDialog), ofd, "CreateVistaDialog"); + Call(typeof(OpenFileDialog), ofd, "OnBeforeVistaDialog", dialog); + var options = Convert.ToUInt32(Call(typeof(FileDialog), ofd, "GetOptions")); + options |= Convert.ToUInt32(GetEnumValue(asmb, ns, "FileDialogNative.FOS", "FOS_PICKFOLDERS")); + Call(dialogint, dialog, "SetOptions", options); + var pfde = New(asmb, ns, "FileDialog.VistaDialogEvents", ofd); + var parameters = new object[] { pfde, (uint)0 }; + Call(dialogint, dialog, "Advise", parameters); + var adviseres = Convert.ToUInt32(parameters[1]); + try { result = Convert.ToInt32(Call(dialogint, dialog, "Show", hWndOwner)); } + finally { Call(dialogint, dialog, "Unadvise", adviseres); } + GC.KeepAlive(pfde); + + fbd.SelectedPath = ofd.FileName; + + return (result == 0) ? DialogResult.OK : DialogResult.Cancel; + } + else + { + return fbd.ShowDialog(); + } + } + + + private static Type GetType(Assembly asmb, string ns, string name) + { + Type type = null; + string[] names = name.Split('.'); + if (names.Length > 0) + { + type = asmb.GetType(ns + "." + names[0]); + } + for (int i = 1; i < names.Length; i++) + { + type = type.GetNestedType(names[i], BindingFlags.NonPublic); + } + return type; + } + private static object Call(Type type, object obj, string func, params object[] parameters) + { + var mi = type.GetMethod(func, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (mi == null) return null; + return mi.Invoke(obj, parameters); + } + private static object GetEnumValue(Assembly asmb, string ns, string typeName, string name) + { + var type = GetType(asmb, ns, typeName); + var fieldInfo = type.GetField(name); + return fieldInfo.GetValue(null); + } + private static object New(Assembly asmb, string ns, string name, params object[] parameters) + { + var type = GetType(asmb, ns, name); + var ctorInfos = type.GetConstructors(); + foreach (ConstructorInfo ci in ctorInfos) + { + try { return ci.Invoke(parameters); } + catch { } + } + return null; + } + } public static class Prompt diff --git a/CodeWalker/ExploreForm.cs b/CodeWalker/ExploreForm.cs index ab64847..fe6bc6d 100644 --- a/CodeWalker/ExploreForm.cs +++ b/CodeWalker/ExploreForm.cs @@ -2033,7 +2033,7 @@ namespace CodeWalker FolderBrowserDialog.SelectedPath = selpath; } - if (FolderBrowserDialog.ShowDialog() != DialogResult.OK) return ""; + if (FolderBrowserDialog.ShowDialogNew() != DialogResult.OK) return ""; string folderpath = FolderBrowserDialog.SelectedPath; if (!folderpath.EndsWith("\\")) folderpath += "\\"; diff --git a/CodeWalker/Forms/YtdForm.cs b/CodeWalker/Forms/YtdForm.cs index 71e1029..70e269d 100644 --- a/CodeWalker/Forms/YtdForm.cs +++ b/CodeWalker/Forms/YtdForm.cs @@ -248,7 +248,7 @@ namespace CodeWalker.Forms private void SaveAll() { if (TexDict?.Textures?.data_items == null) return; - if (FolderBrowserDialog.ShowDialog() != DialogResult.OK) return; + if (FolderBrowserDialog.ShowDialogNew() != DialogResult.OK) return; var folder = FolderBrowserDialog.SelectedPath; foreach (var tex in TexDict.Textures.data_items) { diff --git a/CodeWalker/MenuForm.Designer.cs b/CodeWalker/MenuForm.Designer.cs index 1fa4e6c..d2a7e73 100644 --- a/CodeWalker/MenuForm.Designer.cs +++ b/CodeWalker/MenuForm.Designer.cs @@ -29,8 +29,6 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MenuForm)); - this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); - this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog(); this.ExtractScriptsButton = new System.Windows.Forms.Button(); this.BinarySearchButton = new System.Windows.Forms.Button(); this.RPFBrowserButton = new System.Windows.Forms.Button(); @@ -187,7 +185,7 @@ this.RPFExplorerButton.UseVisualStyleBackColor = true; this.RPFExplorerButton.Click += new System.EventHandler(this.RPFExplorerButton_Click); // - // MainForm + // MenuForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -207,7 +205,7 @@ this.Controls.Add(this.BinarySearchButton); this.Controls.Add(this.ExtractScriptsButton); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "MainForm"; + this.Name = "MenuForm"; this.Text = "CodeWalker Menu"; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed); this.Load += new System.EventHandler(this.MainForm_Load); @@ -216,8 +214,6 @@ } #endregion - private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog; - private System.Windows.Forms.OpenFileDialog OpenFileDialog; private System.Windows.Forms.Button ExtractScriptsButton; private System.Windows.Forms.Button BinarySearchButton; private System.Windows.Forms.Button RPFBrowserButton; diff --git a/CodeWalker/MenuForm.resx b/CodeWalker/MenuForm.resx index a662b38..1431f6b 100644 --- a/CodeWalker/MenuForm.resx +++ b/CodeWalker/MenuForm.resx @@ -117,12 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - 182, 17 - diff --git a/CodeWalker/Tools/BinarySearchForm.cs b/CodeWalker/Tools/BinarySearchForm.cs index 8c052ba..83857e5 100644 --- a/CodeWalker/Tools/BinarySearchForm.cs +++ b/CodeWalker/Tools/BinarySearchForm.cs @@ -98,7 +98,7 @@ namespace CodeWalker.Tools private void FileSearchFolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = FileSearchFolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { FileSearchFolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/Tools/BrowseForm.Designer.cs b/CodeWalker/Tools/BrowseForm.Designer.cs index 1f4c84b..6feb768 100644 --- a/CodeWalker/Tools/BrowseForm.Designer.cs +++ b/CodeWalker/Tools/BrowseForm.Designer.cs @@ -33,7 +33,6 @@ this.FolderBrowseButton = new System.Windows.Forms.Button(); this.FolderTextBox = new System.Windows.Forms.TextBox(); this.ScanButton = new System.Windows.Forms.Button(); - this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); @@ -790,7 +789,6 @@ private System.Windows.Forms.Button FolderBrowseButton; private System.Windows.Forms.TextBox FolderTextBox; private System.Windows.Forms.Button ScanButton; - private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog; private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.TreeView MainTreeView; private System.Windows.Forms.StatusStrip MainStatusStrip; diff --git a/CodeWalker/Tools/BrowseForm.resx b/CodeWalker/Tools/BrowseForm.resx index 6337549..257f9a7 100644 --- a/CodeWalker/Tools/BrowseForm.resx +++ b/CodeWalker/Tools/BrowseForm.resx @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - 182, 17 diff --git a/CodeWalker/Tools/ExtractKeysForm.Designer.cs b/CodeWalker/Tools/ExtractKeysForm.Designer.cs index d265bc5..efc9782 100644 --- a/CodeWalker/Tools/ExtractKeysForm.Designer.cs +++ b/CodeWalker/Tools/ExtractKeysForm.Designer.cs @@ -34,7 +34,6 @@ this.FolderBrowseButton = new System.Windows.Forms.Button(); this.FolderTextBox = new System.Windows.Forms.TextBox(); this.StatusLabel = new System.Windows.Forms.Label(); - this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); this.label2 = new System.Windows.Forms.Label(); this.ExeBrowseButton = new System.Windows.Forms.Button(); this.ExeTextBox = new System.Windows.Forms.TextBox(); @@ -151,7 +150,6 @@ private System.Windows.Forms.Button FolderBrowseButton; private System.Windows.Forms.TextBox FolderTextBox; private System.Windows.Forms.Label StatusLabel; - private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button ExeBrowseButton; private System.Windows.Forms.TextBox ExeTextBox; diff --git a/CodeWalker/Tools/ExtractKeysForm.resx b/CodeWalker/Tools/ExtractKeysForm.resx index e71684f..42db761 100644 --- a/CodeWalker/Tools/ExtractKeysForm.resx +++ b/CodeWalker/Tools/ExtractKeysForm.resx @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - 326, 17 diff --git a/CodeWalker/Tools/ExtractRawForm.cs b/CodeWalker/Tools/ExtractRawForm.cs index 003ad9f..d68bfe9 100644 --- a/CodeWalker/Tools/ExtractRawForm.cs +++ b/CodeWalker/Tools/ExtractRawForm.cs @@ -72,7 +72,7 @@ namespace CodeWalker.Tools private void OutputFolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = OutputFolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { OutputFolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/Tools/ExtractScriptsForm.cs b/CodeWalker/Tools/ExtractScriptsForm.cs index 6a54a3b..0cbf466 100644 --- a/CodeWalker/Tools/ExtractScriptsForm.cs +++ b/CodeWalker/Tools/ExtractScriptsForm.cs @@ -63,7 +63,7 @@ namespace CodeWalker.Tools private void OutputFolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = OutputFolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { OutputFolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/Tools/ExtractShadersForm.cs b/CodeWalker/Tools/ExtractShadersForm.cs index 6caffc8..23af922 100644 --- a/CodeWalker/Tools/ExtractShadersForm.cs +++ b/CodeWalker/Tools/ExtractShadersForm.cs @@ -57,7 +57,7 @@ namespace CodeWalker.Tools private void OutputFolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = OutputFolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { OutputFolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/Tools/ExtractTexForm.cs b/CodeWalker/Tools/ExtractTexForm.cs index c679783..06d9113 100644 --- a/CodeWalker/Tools/ExtractTexForm.cs +++ b/CodeWalker/Tools/ExtractTexForm.cs @@ -56,7 +56,7 @@ namespace CodeWalker.Tools private void OutputFolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = OutputFolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { OutputFolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/Utils/SelectFolderForm.cs b/CodeWalker/Utils/SelectFolderForm.cs index 541ddff..74d0ba0 100644 --- a/CodeWalker/Utils/SelectFolderForm.cs +++ b/CodeWalker/Utils/SelectFolderForm.cs @@ -33,7 +33,7 @@ namespace CodeWalker.Utils private void FolderBrowseButton_Click(object sender, EventArgs e) { FolderBrowserDialog.SelectedPath = FolderTextBox.Text; - DialogResult res = FolderBrowserDialog.ShowDialog(); + DialogResult res = FolderBrowserDialog.ShowDialogNew(); if (res == DialogResult.OK) { FolderTextBox.Text = FolderBrowserDialog.SelectedPath; diff --git a/CodeWalker/World/WorldInfoForm.cs b/CodeWalker/World/WorldInfoForm.cs index 4babfae..1f84c0d 100644 --- a/CodeWalker/World/WorldInfoForm.cs +++ b/CodeWalker/World/WorldInfoForm.cs @@ -538,7 +538,7 @@ namespace CodeWalker.World private void SaveAllTexturesButton_Click(object sender, EventArgs e) { - if (FolderBrowserDialog.ShowDialog() != DialogResult.OK) return; + if (FolderBrowserDialog.ShowDialogNew() != DialogResult.OK) return; string folderpath = FolderBrowserDialog.SelectedPath; if (!folderpath.EndsWith("\\")) folderpath += "\\"; diff --git a/CodeWalker/WorldForm.Designer.cs b/CodeWalker/WorldForm.Designer.cs index fa5679d..822a7ca 100644 --- a/CodeWalker/WorldForm.Designer.cs +++ b/CodeWalker/WorldForm.Designer.cs @@ -32,7 +32,6 @@ namespace CodeWalker { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WorldForm)); - this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); this.StatusStrip = new System.Windows.Forms.StatusStrip(); this.StatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.MousedLabel = new System.Windows.Forms.ToolStripStatusLabel(); @@ -178,6 +177,7 @@ namespace CodeWalker this.BoundsStyleComboBox = new System.Windows.Forms.ComboBox(); this.label8 = new System.Windows.Forms.Label(); this.OptionsLightingTabPage = new System.Windows.Forms.TabPage(); + this.HDLightsCheckBox = new System.Windows.Forms.CheckBox(); this.DeferredShadingCheckBox = new System.Windows.Forms.CheckBox(); this.WeatherRegionComboBox = new System.Windows.Forms.ComboBox(); this.label29 = new System.Windows.Forms.Label(); @@ -312,7 +312,6 @@ namespace CodeWalker this.ToolbarPanel = new System.Windows.Forms.Panel(); this.SubtitleLabel = new System.Windows.Forms.Label(); this.SubtitleTimer = new System.Windows.Forms.Timer(this.components); - this.HDLightsCheckBox = new System.Windows.Forms.CheckBox(); this.StatusStrip.SuspendLayout(); this.ToolsPanel.SuspendLayout(); this.ToolsTabControl.SuspendLayout(); @@ -2283,6 +2282,19 @@ namespace CodeWalker this.OptionsLightingTabPage.Text = "Lighting"; this.OptionsLightingTabPage.UseVisualStyleBackColor = true; // + // HDLightsCheckBox + // + this.HDLightsCheckBox.AutoSize = true; + this.HDLightsCheckBox.Checked = true; + this.HDLightsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.HDLightsCheckBox.Location = new System.Drawing.Point(10, 93); + this.HDLightsCheckBox.Name = "HDLightsCheckBox"; + this.HDLightsCheckBox.Size = new System.Drawing.Size(69, 17); + this.HDLightsCheckBox.TabIndex = 34; + this.HDLightsCheckBox.Text = "HD lights"; + this.HDLightsCheckBox.UseVisualStyleBackColor = true; + this.HDLightsCheckBox.CheckedChanged += new System.EventHandler(this.HDLightsCheckBox_CheckedChanged); + // // DeferredShadingCheckBox // this.DeferredShadingCheckBox.AutoSize = true; @@ -3592,19 +3604,6 @@ namespace CodeWalker // this.SubtitleTimer.Tick += new System.EventHandler(this.SubtitleTimer_Tick); // - // HDLightsCheckBox - // - this.HDLightsCheckBox.AutoSize = true; - this.HDLightsCheckBox.Checked = true; - this.HDLightsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.HDLightsCheckBox.Location = new System.Drawing.Point(10, 93); - this.HDLightsCheckBox.Name = "HDLightsCheckBox"; - this.HDLightsCheckBox.Size = new System.Drawing.Size(69, 17); - this.HDLightsCheckBox.TabIndex = 34; - this.HDLightsCheckBox.Text = "HD lights"; - this.HDLightsCheckBox.UseVisualStyleBackColor = true; - this.HDLightsCheckBox.CheckedChanged += new System.EventHandler(this.HDLightsCheckBox_CheckedChanged); - // // WorldForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -3696,8 +3695,6 @@ namespace CodeWalker } #endregion - - private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog; private System.Windows.Forms.StatusStrip StatusStrip; private System.Windows.Forms.ToolStripStatusLabel StatusLabel; private System.Windows.Forms.ComboBox ModelComboBox; diff --git a/CodeWalker/WorldForm.resx b/CodeWalker/WorldForm.resx index 1ea334c..0e069f5 100644 --- a/CodeWalker/WorldForm.resx +++ b/CodeWalker/WorldForm.resx @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - 182, 17 @@ -240,14 +237,6 @@ ufo YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB4SURBVDhP3ZC7DcAgDEQZKTMwHOvSIFriS7BlEB+HMic9 QJbvFThLUkpXzjkSpaeuzMPlEELx3jdsBauyCHBY6UWYPQI93KEljQD3jL6EGzN6x0bASyNYwkKU8Udm gd6TMnIikDJyIqjVNz8T7FgKrAwFX6lVinM3aJ05lWDPRRcAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB0SURBVDhP7ZNBCoAgEEXnSJ3BqxmetNpaMLhVv5DNRJS2 - CxIeuvA9XSjtg5mHEILPxB6U7JyLxphmSkDK1o5x9dst87SUfTXwRsYsA+paT0BGDGsVOJ92hdz3Bz4f - wGPC48uu7w5IGd+gBlpRMgYCnRwyESUj3CsQkYNFDwAAAABJRU5ErkJggg== @@ -269,13 +258,12 @@ ufo WBXYx9R1nV75RuyHKrrnzCcGjE1u9ZyD4BugoZigQ9xrngAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACtSURBVDhPrZBBEsIgEAR5Gy/wFV55T/wHr+KgHuCKNsVY - ZI2JiU7VVIVlp7OL+1mllIr7cb8Ie++PQwQYITnnM24NWxoBgsQYm/l+gk699bMsRA4h1JTSPsg0Xert - em/mGwh3vW1Z7MvIABSWqXG3+iZHAEw1m4wD49oVANgVOL/VeSgeDAiX1mpWeKy9BIQiI+OxWQF77tG5 - 2Fc729BmeElf/3lNhORe+oecewDObEqX49RqCgAAAABJRU5ErkJggg== + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB0SURBVDhP7ZNBCoAgEEXnSJ3BqxmetNpaMLhVv5DNRJS2 + CxIeuvA9XSjtg5mHEILPxB6U7JyLxphmSkDK1o5x9dst87SUfTXwRsYsA+paT0BGDGsVOJ92hdz3Bz4f + wGPC48uu7w5IGd+gBlpRMgYCnRwyESUj3CsQkYNFDwAAAABJRU5ErkJggg== @@ -304,6 +292,15 @@ ufo EcMw2DzPDMEke9AsYBrHs10vN4I1QqImwwDcFyMjQGaBHr5Bo8nEoYCnCQTGzVeI4oj6fIi+KHgoPBhC 4knCjTww9vxfbIUQNDEyiGIZ8t6tW/k0vC/AOpuiueNOLwVkUeylvju9FJCg8E1vM/2PlTv5UoervVTJ uQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACtSURBVDhPrZBBEsIgEAR5Gy/wFV55T/wHr+KgHuCKNsVY + ZI2JiU7VVIVlp7OL+1mllIr7cb8Ie++PQwQYITnnM24NWxoBgsQYm/l+gk699bMsRA4h1JTSPsg0Xert + em/mGwh3vW1Z7MvIABSWqXG3+iZHAEw1m4wD49oVANgVOL/VeSgeDAiX1mpWeKy9BIQiI+OxWQF77tG5 + 2Fc729BmeElf/3lNhORe+oecewDObEqX49RqCgAAAABJRU5ErkJggg== @@ -389,17 +386,6 @@ ufo 4BJN+IjGo5O8ZJndGVhKxpjWWts551aih0fre+0BLaVchRAezPB2NXSSV/gVwXGYPJiVUt6ns1ghCDjn UQG86w3FToVgDcWCWS9Fvi/Ao0RVAcwUjwpyhzmf4n8BFApS5HZRwRuONGMbrIJ1JIN8O2QAAAAASUVO RK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEvSURBVDhP3dK/K0dRGMfxKxRJopCSEkLya/guUhQRmQwG - WfwIkYySgYUSKUKJlOK/MBoMFMofYLUIsfJ+f3NuF3+A8tRree5zP/fcc070f6oHT/jAPTqQj6WvXvCM - TZQgG3H58gFGcYVLtGIN15jBNDbwiGNUIg4pQx8GsQuHhrCDW8yjHyns4Q0DcCXpykM5bFzgHGPYxw1G - UIVMtMHfWUUj4nIg/KurGIYrSAZYOXDGlbhXcZlegUO8Yxzb+BlQAwNW0G0jVAYK0AwHtnCEOyQDZvGC - ObTbKIIvLMA9WIYDizhFMsDjfsAZptCA9JcdfoVBvryOSbgCe4HPTuCz+BQMKEUvJmCy96ET1ehCuAf2 - 5ZF+uwdZKEYtmuBGFSIXhtejBe5PHX7dxL+qKPoEppRHcXOtiDsAAAAASUVORK5CYII= @@ -435,6 +421,17 @@ ufo rp3fhGJScIRLzKMLFTC9cMIu3nCDVUyjB6WkYA93mEWbAyH9cMImPuA+rWMA31YwBU82kF6BS32Er/aO M8zAh+OEghpcwQ2bg3uwBW8ewFd7xQkm0IA4oaAS7bh2KHjBIZbhV/D6GJkFphrdcIP8lFrAGPwPOjCO QdQiTqrAWNICd7gPnUj+xBKaU9dxfhTkjwV/FxU+AbsiGnc46OYIAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEvSURBVDhP3dK/K0dRGMfxKxRJopCSEkLya/guUhQRmQwG + WfwIkYySgYUSKUKJlOK/MBoMFMofYLUIsfJ+f3NuF3+A8tRree5zP/fcc070f6oHT/jAPTqQj6WvXvCM + TZQgG3H58gFGcYVLtGIN15jBNDbwiGNUIg4pQx8GsQuHhrCDW8yjHyns4Q0DcCXpykM5bFzgHGPYxw1G + UIVMtMHfWUUj4nIg/KurGIYrSAZYOXDGlbhXcZlegUO8Yxzb+BlQAwNW0G0jVAYK0AwHtnCEOyQDZvGC + ObTbKIIvLMA9WIYDizhFMsDjfsAZptCA9JcdfoVBvryOSbgCe4HPTuCz+BQMKEUvJmCy96ET1ehCuAf2 + 5ZF+uwdZKEYtmuBGFSIXhtejBe5PHX7dxL+qKPoEppRHcXOtiDsAAAAASUVORK5CYII=