From 9f94843b883d0191d6ccee0f84357434b9882ab9 Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:59:56 +0100 Subject: [PATCH 1/8] Multiple changes. --- CHANGELOG.md | 13 +- mefit/Common/FWBase.cs | 55 +++- mefit/Program.cs | 2 +- mefit/Properties/AssemblyInfo.cs | 4 +- mefit/UI/ArrowDrawer.cs | 11 +- mefit/UI/METMessageBox.Designer.cs | 3 +- mefit/WinForms/aboutWindow.Designer.cs | 3 +- mefit/WinForms/editorWindow.Designer.cs | 363 +++++++++++----------- mefit/WinForms/infoWindow.Designer.cs | 60 ++-- mefit/WinForms/infoWindow.cs | 52 +++- mefit/WinForms/mainWindow.Designer.cs | 129 ++++---- mefit/WinForms/mainWindow.cs | 109 +++++-- mefit/WinForms/settingsWindow.Designer.cs | 3 +- mefit/WinForms/termsWindow.Designer.cs | 3 +- 14 files changed, 461 insertions(+), 349 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63681be..5678450 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@

Version History

- V1.0.2 • + V1.0.3 • + V1.0.2V1.0.1V1.0.0V0.7.0 • @@ -14,6 +15,16 @@ V0.3.4

+## Version 1.0.3 + +#### New: +- Updated the firmware parser with a new feature that attempts to force find the Fsys Store if it was not initially located within the NVRAM on the first pass. + +#### Enhancements: +- Implemented a visual colour change in the presentation of NVRAM store labels in the main window. The manual has been updated to reflect this change. +- Improved the image validation logic. +- User interface improvements. + ## Version 1.0.2 #### Enhancements: diff --git a/mefit/Common/FWBase.cs b/mefit/Common/FWBase.cs index 8ed28d2..32f0b6c 100644 --- a/mefit/Common/FWBase.cs +++ b/mefit/Common/FWBase.cs @@ -179,6 +179,17 @@ internal static void LoadFirmwareBaseData(byte[] sourceBytes, string fileName) EfiLock = (SvsStoreData.PrimaryStoreBase != -1 && SvsStoreData.PrimaryStoreBytes != null) ? EfiLock = GetIsEfiLocked(SvsStoreData.PrimaryStoreBytes) : EfiLockStatus.Unknown; + + if (FsysStoreData.FsysBytes == null) + { + FsysStoreData = GetFsysStoreData(sourceBytes, false, true); + + if (FsysStoreData.FsysBytes != null) + { + Logger.WriteToLogFile($"Force found Fsys Store at {FsysStoreData.FsysBase:X}h." + + $" The image may be misaligned or corrupt ({FileInfoData.FileNameWithExt}).", LogType.Application); + } + } } internal static void ResetFirmwareBaseData() @@ -201,11 +212,14 @@ internal static void ResetFirmwareBaseData() internal static bool IsValidImage(byte[] sourceBytes) { - int dxeCore = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.DXE_CORE); + int dxeCore = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.DXE_CORE, 16, 16); - if (!Descriptor.DescriptorMode && dxeCore == -1) + if (!Descriptor.DescriptorMode) { - return false; + if (dxeCore == -1) + { + return false; + } } return true; @@ -280,7 +294,7 @@ private static PdrSection DefaultPdrSection() #endregion #region Fsys Store - internal static FsysStore GetFsysStoreData(byte[] sourceBytes, bool isFsysStoreOnly) + internal static FsysStore GetFsysStoreData(byte[] sourceBytes, bool isFsysStoreOnly, bool forceFind = false) { // Base should be zero if the isFsysStoreOnly flag is set int fsysBase = 0; @@ -288,23 +302,30 @@ internal static FsysStore GetFsysStoreData(byte[] sourceBytes, bool isFsysStoreO // Arg to skip Fsys searching if (!isFsysStoreOnly) { - // First we need to locate the NVRAM section GUID - int guidBase = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.NVRAM_SECTION_GUID, _biosBase, _biosLimit); + if (!forceFind) + { + // First we need to locate the NVRAM section GUID + int guidBase = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.NVRAM_SECTION_GUID, _biosBase, _biosLimit); + + if (guidBase == -1) + { + // NVRAM store was not found so return default data + return DefaultFsysRegion(); + } - if (guidBase == -1) + // Get NVRAM section size from header + byte[] sectionLengthBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, guidBase + GUID_LENGTH, 4); + // Convert NVRAM section size to int32 + int nvramLength = BitConverter.ToInt32(sectionLengthBytes, 0); + // Search for the Fsys store within bounds of the NVRAM section + fsysBase = BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, guidBase - ZERO_VECTOR_LENGTH - GUID_LENGTH, nvramLength); + } + else { - // NVRAM store was not found so return default data - return DefaultFsysRegion(); + fsysBase = BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, _biosBase, _biosLimit); } - // Get NVRAM section size from header - byte[] sectionLengthBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, guidBase + GUID_LENGTH, 4); - // Convert NVRAM section size to int32 - int nvramLength = BitConverter.ToInt32(sectionLengthBytes, 0); - // Search for the Fsys store within bounds of the NVRAM section - fsysBase = BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, guidBase - ZERO_VECTOR_LENGTH - GUID_LENGTH, nvramLength); - - // Fsys store was not found within scope of the NVRAM section + // Fsys store was not found within scope of the binary. if (fsysBase == -1) { return DefaultFsysRegion(); diff --git a/mefit/Program.cs b/mefit/Program.cs index f0df909..da5ea7b 100644 --- a/mefit/Program.cs +++ b/mefit/Program.cs @@ -33,7 +33,7 @@ internal struct METPath internal struct METVersion { - internal static readonly string Build = "230718.1355"; + internal static readonly string Build = "230723.1256"; internal static readonly string Channel = "Stable"; } diff --git a/mefit/Properties/AssemblyInfo.cs b/mefit/Properties/AssemblyInfo.cs index e4cf637..fd3ace8 100644 --- a/mefit/Properties/AssemblyInfo.cs +++ b/mefit/Properties/AssemblyInfo.cs @@ -33,6 +33,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2")] -[assembly: AssemblyFileVersion("1.0.2")] +[assembly: AssemblyVersion("1.0.3")] +[assembly: AssemblyFileVersion("1.0.3")] [assembly: NeutralResourcesLanguage("en")] diff --git a/mefit/UI/ArrowDrawer.cs b/mefit/UI/ArrowDrawer.cs index 6e32028..a435425 100644 --- a/mefit/UI/ArrowDrawer.cs +++ b/mefit/UI/ArrowDrawer.cs @@ -14,18 +14,15 @@ public class ArrowDrawer { - private static Color arrowColor; public static void Draw(Control control, Color color) { - arrowColor = color; - control.Paint += (sender, e) => { int arrowX = control.Width / 2; int arrowY = control.Height - 6; - using (SolidBrush brush = new SolidBrush(arrowColor)) + using (SolidBrush brush = new SolidBrush(color)) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.InterpolationMode = InterpolationMode.HighQualityBilinear; @@ -42,10 +39,4 @@ public static void Draw(Control control, Color color) } }; } - - public static void Update(Control control, Color color) - { - arrowColor = color; - control.Invalidate(); - } } \ No newline at end of file diff --git a/mefit/UI/METMessageBox.Designer.cs b/mefit/UI/METMessageBox.Designer.cs index b7e5bb7..096d27c 100644 --- a/mefit/UI/METMessageBox.Designer.cs +++ b/mefit/UI/METMessageBox.Designer.cs @@ -185,8 +185,9 @@ private void InitializeComponent() // this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); diff --git a/mefit/WinForms/aboutWindow.Designer.cs b/mefit/WinForms/aboutWindow.Designer.cs index e813902..de0e415 100644 --- a/mefit/WinForms/aboutWindow.Designer.cs +++ b/mefit/WinForms/aboutWindow.Designer.cs @@ -315,8 +315,9 @@ private void InitializeComponent() this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); diff --git a/mefit/WinForms/editorWindow.Designer.cs b/mefit/WinForms/editorWindow.Designer.cs index 5c4e28b..489db7c 100644 --- a/mefit/WinForms/editorWindow.Designer.cs +++ b/mefit/WinForms/editorWindow.Designer.cs @@ -36,8 +36,10 @@ private void InitializeComponent() this.lblNvramText = new System.Windows.Forms.Label(); this.lblSerialText = new System.Windows.Forms.Label(); this.tlpSerialA = new System.Windows.Forms.TableLayoutPanel(); + this.cbxReplaceSerial = new Mac_EFI_Toolkit.UI.METCheckbox(); this.tlpFsys = new System.Windows.Forms.TableLayoutPanel(); this.cmdFsysPath = new System.Windows.Forms.Button(); + this.cbxReplaceFsysStore = new Mac_EFI_Toolkit.UI.METCheckbox(); this.lblFsysStoreText = new System.Windows.Forms.Label(); this.tlpSerialB = new System.Windows.Forms.TableLayoutPanel(); this.lblHwcText = new System.Windows.Forms.Label(); @@ -46,13 +48,20 @@ private void InitializeComponent() this.tbxHwc = new System.Windows.Forms.TextBox(); this.tlpNss = new System.Windows.Forms.TableLayoutPanel(); this.lblNssChevRight = new System.Windows.Forms.Label(); + this.cbxClearNssStore = new Mac_EFI_Toolkit.UI.METCheckbox(); + this.cbxClearNssBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); this.tlpSvs = new System.Windows.Forms.TableLayoutPanel(); + this.cbxClearSvsStore = new Mac_EFI_Toolkit.UI.METCheckbox(); + this.cbxClearSvsBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); this.lblSvsChevRight = new System.Windows.Forms.Label(); this.tlpVss = new System.Windows.Forms.TableLayoutPanel(); this.lblVssChevRight = new System.Windows.Forms.Label(); + this.cbxClearVssBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); + this.cbxClearVssStore = new Mac_EFI_Toolkit.UI.METCheckbox(); this.lblMeText = new System.Windows.Forms.Label(); this.tlpMeRegion = new System.Windows.Forms.TableLayoutPanel(); this.cmdMePath = new System.Windows.Forms.Button(); + this.cbxReplaceMeRegion = new Mac_EFI_Toolkit.UI.METCheckbox(); this.tlpLog = new System.Windows.Forms.TableLayoutPanel(); this.pnlLog = new System.Windows.Forms.Panel(); this.rtbLog = new System.Windows.Forms.RichTextBox(); @@ -68,15 +77,6 @@ private void InitializeComponent() this.cmdBuild = new System.Windows.Forms.Button(); this.cmdOpenLast = new System.Windows.Forms.Button(); this.cmdOpenBuildsDir = new System.Windows.Forms.Button(); - this.cbxReplaceSerial = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxReplaceFsysStore = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearNssStore = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearNssBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearSvsStore = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearSvsBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearVssBackup = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxClearVssStore = new Mac_EFI_Toolkit.UI.METCheckbox(); - this.cbxReplaceMeRegion = new Mac_EFI_Toolkit.UI.METCheckbox(); this.pnlMain.SuspendLayout(); this.tlpMain.SuspendLayout(); this.tlpOptions.SuspendLayout(); @@ -215,6 +215,25 @@ private void InitializeComponent() this.tlpSerialA.Size = new System.Drawing.Size(400, 30); this.tlpSerialA.TabIndex = 1; // + // cbxReplaceSerial + // + this.cbxReplaceSerial.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxReplaceSerial.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxReplaceSerial.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxReplaceSerial.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxReplaceSerial.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxReplaceSerial.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxReplaceSerial.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxReplaceSerial.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxReplaceSerial.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.cbxReplaceSerial.Location = new System.Drawing.Point(11, 4); + this.cbxReplaceSerial.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxReplaceSerial.Name = "cbxReplaceSerial"; + this.cbxReplaceSerial.Size = new System.Drawing.Size(192, 21); + this.cbxReplaceSerial.TabIndex = 0; + this.cbxReplaceSerial.Text = "Replace Serial Number"; + this.cbxReplaceSerial.CheckedChanged += new System.EventHandler(this.cmdReplaceSerial_CheckedChanged); + // // tlpFsys // this.tlpFsys.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); @@ -252,6 +271,25 @@ private void InitializeComponent() this.cmdFsysPath.UseVisualStyleBackColor = false; this.cmdFsysPath.Click += new System.EventHandler(this.cmdFsysPath_Click); // + // cbxReplaceFsysStore + // + this.cbxReplaceFsysStore.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxReplaceFsysStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxReplaceFsysStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxReplaceFsysStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxReplaceFsysStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxReplaceFsysStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxReplaceFsysStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxReplaceFsysStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxReplaceFsysStore.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.cbxReplaceFsysStore.Location = new System.Drawing.Point(11, 4); + this.cbxReplaceFsysStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxReplaceFsysStore.Name = "cbxReplaceFsysStore"; + this.cbxReplaceFsysStore.Size = new System.Drawing.Size(163, 21); + this.cbxReplaceFsysStore.TabIndex = 0; + this.cbxReplaceFsysStore.Text = "Replace Fsys Store"; + this.cbxReplaceFsysStore.CheckedChanged += new System.EventHandler(this.cbxReplaceFsysStore_CheckedChanged); + // // lblFsysStoreText // this.lblFsysStoreText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -381,6 +419,44 @@ private void InitializeComponent() this.lblNssChevRight.Text = "."; this.lblNssChevRight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // cbxClearNssStore + // + this.cbxClearNssStore.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearNssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearNssStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearNssStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearNssStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearNssStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearNssStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearNssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearNssStore.ForeColor = System.Drawing.Color.White; + this.cbxClearNssStore.Location = new System.Drawing.Point(11, 4); + this.cbxClearNssStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxClearNssStore.Name = "cbxClearNssStore"; + this.cbxClearNssStore.Size = new System.Drawing.Size(149, 21); + this.cbxClearNssStore.TabIndex = 0; + this.cbxClearNssStore.Text = "Clear NSS Store"; + this.cbxClearNssStore.CheckedChanged += new System.EventHandler(this.cbxClearNssStore_CheckedChanged); + // + // cbxClearNssBackup + // + this.cbxClearNssBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearNssBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearNssBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearNssBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearNssBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearNssBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearNssBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearNssBackup.Enabled = false; + this.cbxClearNssBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearNssBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); + this.cbxClearNssBackup.Location = new System.Drawing.Point(190, 4); + this.cbxClearNssBackup.Margin = new System.Windows.Forms.Padding(0); + this.cbxClearNssBackup.Name = "cbxClearNssBackup"; + this.cbxClearNssBackup.Size = new System.Drawing.Size(210, 21); + this.cbxClearNssBackup.TabIndex = 1; + this.cbxClearNssBackup.Text = "Clear NSS Backup Store"; + // // tlpSvs // this.tlpSvs.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); @@ -400,6 +476,44 @@ private void InitializeComponent() this.tlpSvs.Size = new System.Drawing.Size(400, 30); this.tlpSvs.TabIndex = 4; // + // cbxClearSvsStore + // + this.cbxClearSvsStore.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearSvsStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearSvsStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearSvsStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearSvsStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearSvsStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearSvsStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearSvsStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearSvsStore.ForeColor = System.Drawing.Color.White; + this.cbxClearSvsStore.Location = new System.Drawing.Point(11, 4); + this.cbxClearSvsStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxClearSvsStore.Name = "cbxClearSvsStore"; + this.cbxClearSvsStore.Size = new System.Drawing.Size(149, 21); + this.cbxClearSvsStore.TabIndex = 0; + this.cbxClearSvsStore.Text = "Clear SVS Store"; + this.cbxClearSvsStore.CheckedChanged += new System.EventHandler(this.cbxClearSvsStore_CheckedChanged); + // + // cbxClearSvsBackup + // + this.cbxClearSvsBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearSvsBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearSvsBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearSvsBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearSvsBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearSvsBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearSvsBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearSvsBackup.Enabled = false; + this.cbxClearSvsBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearSvsBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); + this.cbxClearSvsBackup.Location = new System.Drawing.Point(190, 4); + this.cbxClearSvsBackup.Margin = new System.Windows.Forms.Padding(0); + this.cbxClearSvsBackup.Name = "cbxClearSvsBackup"; + this.cbxClearSvsBackup.Size = new System.Drawing.Size(210, 21); + this.cbxClearSvsBackup.TabIndex = 1; + this.cbxClearSvsBackup.Text = "Clear SVS Backup Store"; + // // lblSvsChevRight // this.lblSvsChevRight.Anchor = System.Windows.Forms.AnchorStyles.Left; @@ -447,6 +561,44 @@ private void InitializeComponent() this.lblVssChevRight.Text = "."; this.lblVssChevRight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // cbxClearVssBackup + // + this.cbxClearVssBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearVssBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearVssBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearVssBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearVssBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearVssBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearVssBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearVssBackup.Enabled = false; + this.cbxClearVssBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearVssBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); + this.cbxClearVssBackup.Location = new System.Drawing.Point(190, 4); + this.cbxClearVssBackup.Margin = new System.Windows.Forms.Padding(0); + this.cbxClearVssBackup.Name = "cbxClearVssBackup"; + this.cbxClearVssBackup.Size = new System.Drawing.Size(210, 21); + this.cbxClearVssBackup.TabIndex = 1; + this.cbxClearVssBackup.Text = "Clear VSS Backup Store"; + // + // cbxClearVssStore + // + this.cbxClearVssStore.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxClearVssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxClearVssStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxClearVssStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxClearVssStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxClearVssStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxClearVssStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxClearVssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxClearVssStore.ForeColor = System.Drawing.Color.White; + this.cbxClearVssStore.Location = new System.Drawing.Point(11, 4); + this.cbxClearVssStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxClearVssStore.Name = "cbxClearVssStore"; + this.cbxClearVssStore.Size = new System.Drawing.Size(149, 21); + this.cbxClearVssStore.TabIndex = 0; + this.cbxClearVssStore.Text = "Clear VSS Store"; + this.cbxClearVssStore.CheckedChanged += new System.EventHandler(this.cbxClearVssStore_CheckedChanged); + // // lblMeText // this.lblMeText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -498,6 +650,25 @@ private void InitializeComponent() this.cmdMePath.UseVisualStyleBackColor = false; this.cmdMePath.Click += new System.EventHandler(this.cmdMePath_Click); // + // cbxReplaceMeRegion + // + this.cbxReplaceMeRegion.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cbxReplaceMeRegion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cbxReplaceMeRegion.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.cbxReplaceMeRegion.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.cbxReplaceMeRegion.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); + this.cbxReplaceMeRegion.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); + this.cbxReplaceMeRegion.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.cbxReplaceMeRegion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbxReplaceMeRegion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.cbxReplaceMeRegion.Location = new System.Drawing.Point(11, 4); + this.cbxReplaceMeRegion.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); + this.cbxReplaceMeRegion.Name = "cbxReplaceMeRegion"; + this.cbxReplaceMeRegion.Size = new System.Drawing.Size(163, 21); + this.cbxReplaceMeRegion.TabIndex = 0; + this.cbxReplaceMeRegion.Text = "Replace ME Region"; + this.cbxReplaceMeRegion.CheckedChanged += new System.EventHandler(this.cbxReplaceMeRegion_CheckedChanged); + // // tlpLog // this.tlpLog.ColumnCount = 1; @@ -638,8 +809,9 @@ private void InitializeComponent() this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -768,177 +940,6 @@ private void InitializeComponent() this.cmdOpenBuildsDir.UseVisualStyleBackColor = false; this.cmdOpenBuildsDir.Click += new System.EventHandler(this.cmdOpenBuildsDir_Click); // - // cbxReplaceSerial - // - this.cbxReplaceSerial.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxReplaceSerial.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxReplaceSerial.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxReplaceSerial.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxReplaceSerial.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxReplaceSerial.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxReplaceSerial.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxReplaceSerial.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxReplaceSerial.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.cbxReplaceSerial.Location = new System.Drawing.Point(11, 4); - this.cbxReplaceSerial.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxReplaceSerial.Name = "cbxReplaceSerial"; - this.cbxReplaceSerial.Size = new System.Drawing.Size(192, 21); - this.cbxReplaceSerial.TabIndex = 0; - this.cbxReplaceSerial.Text = "Replace Serial Number"; - this.cbxReplaceSerial.CheckedChanged += new System.EventHandler(this.cmdReplaceSerial_CheckedChanged); - // - // cbxReplaceFsysStore - // - this.cbxReplaceFsysStore.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxReplaceFsysStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxReplaceFsysStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxReplaceFsysStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxReplaceFsysStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxReplaceFsysStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxReplaceFsysStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxReplaceFsysStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxReplaceFsysStore.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.cbxReplaceFsysStore.Location = new System.Drawing.Point(11, 4); - this.cbxReplaceFsysStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxReplaceFsysStore.Name = "cbxReplaceFsysStore"; - this.cbxReplaceFsysStore.Size = new System.Drawing.Size(163, 21); - this.cbxReplaceFsysStore.TabIndex = 0; - this.cbxReplaceFsysStore.Text = "Replace Fsys Store"; - this.cbxReplaceFsysStore.CheckedChanged += new System.EventHandler(this.cbxReplaceFsysStore_CheckedChanged); - // - // cbxClearNssStore - // - this.cbxClearNssStore.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearNssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearNssStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearNssStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearNssStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearNssStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearNssStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearNssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearNssStore.ForeColor = System.Drawing.Color.White; - this.cbxClearNssStore.Location = new System.Drawing.Point(11, 4); - this.cbxClearNssStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxClearNssStore.Name = "cbxClearNssStore"; - this.cbxClearNssStore.Size = new System.Drawing.Size(149, 21); - this.cbxClearNssStore.TabIndex = 0; - this.cbxClearNssStore.Text = "Clear NSS Store"; - this.cbxClearNssStore.CheckedChanged += new System.EventHandler(this.cbxClearNssStore_CheckedChanged); - // - // cbxClearNssBackup - // - this.cbxClearNssBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearNssBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearNssBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearNssBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearNssBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearNssBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearNssBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearNssBackup.Enabled = false; - this.cbxClearNssBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearNssBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); - this.cbxClearNssBackup.Location = new System.Drawing.Point(190, 4); - this.cbxClearNssBackup.Margin = new System.Windows.Forms.Padding(0); - this.cbxClearNssBackup.Name = "cbxClearNssBackup"; - this.cbxClearNssBackup.Size = new System.Drawing.Size(210, 21); - this.cbxClearNssBackup.TabIndex = 1; - this.cbxClearNssBackup.Text = "Clear NSS Backup Store"; - // - // cbxClearSvsStore - // - this.cbxClearSvsStore.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearSvsStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearSvsStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearSvsStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearSvsStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearSvsStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearSvsStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearSvsStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearSvsStore.ForeColor = System.Drawing.Color.White; - this.cbxClearSvsStore.Location = new System.Drawing.Point(11, 4); - this.cbxClearSvsStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxClearSvsStore.Name = "cbxClearSvsStore"; - this.cbxClearSvsStore.Size = new System.Drawing.Size(149, 21); - this.cbxClearSvsStore.TabIndex = 0; - this.cbxClearSvsStore.Text = "Clear SVS Store"; - this.cbxClearSvsStore.CheckedChanged += new System.EventHandler(this.cbxClearSvsStore_CheckedChanged); - // - // cbxClearSvsBackup - // - this.cbxClearSvsBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearSvsBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearSvsBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearSvsBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearSvsBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearSvsBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearSvsBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearSvsBackup.Enabled = false; - this.cbxClearSvsBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearSvsBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); - this.cbxClearSvsBackup.Location = new System.Drawing.Point(190, 4); - this.cbxClearSvsBackup.Margin = new System.Windows.Forms.Padding(0); - this.cbxClearSvsBackup.Name = "cbxClearSvsBackup"; - this.cbxClearSvsBackup.Size = new System.Drawing.Size(210, 21); - this.cbxClearSvsBackup.TabIndex = 1; - this.cbxClearSvsBackup.Text = "Clear SVS Backup Store"; - // - // cbxClearVssBackup - // - this.cbxClearVssBackup.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearVssBackup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearVssBackup.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearVssBackup.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearVssBackup.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearVssBackup.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearVssBackup.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearVssBackup.Enabled = false; - this.cbxClearVssBackup.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearVssBackup.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); - this.cbxClearVssBackup.Location = new System.Drawing.Point(190, 4); - this.cbxClearVssBackup.Margin = new System.Windows.Forms.Padding(0); - this.cbxClearVssBackup.Name = "cbxClearVssBackup"; - this.cbxClearVssBackup.Size = new System.Drawing.Size(210, 21); - this.cbxClearVssBackup.TabIndex = 1; - this.cbxClearVssBackup.Text = "Clear VSS Backup Store"; - // - // cbxClearVssStore - // - this.cbxClearVssStore.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxClearVssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxClearVssStore.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxClearVssStore.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxClearVssStore.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxClearVssStore.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxClearVssStore.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxClearVssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxClearVssStore.ForeColor = System.Drawing.Color.White; - this.cbxClearVssStore.Location = new System.Drawing.Point(11, 4); - this.cbxClearVssStore.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxClearVssStore.Name = "cbxClearVssStore"; - this.cbxClearVssStore.Size = new System.Drawing.Size(149, 21); - this.cbxClearVssStore.TabIndex = 0; - this.cbxClearVssStore.Text = "Clear VSS Store"; - this.cbxClearVssStore.CheckedChanged += new System.EventHandler(this.cbxClearVssStore_CheckedChanged); - // - // cbxReplaceMeRegion - // - this.cbxReplaceMeRegion.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.cbxReplaceMeRegion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cbxReplaceMeRegion.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); - this.cbxReplaceMeRegion.BorderColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.cbxReplaceMeRegion.CheckedColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(170)))), ((int)(((byte)(255))))); - this.cbxReplaceMeRegion.ClientColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(10)))), ((int)(((byte)(10))))); - this.cbxReplaceMeRegion.ClientColorActive = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.cbxReplaceMeRegion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbxReplaceMeRegion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.cbxReplaceMeRegion.Location = new System.Drawing.Point(11, 4); - this.cbxReplaceMeRegion.Margin = new System.Windows.Forms.Padding(11, 0, 0, 0); - this.cbxReplaceMeRegion.Name = "cbxReplaceMeRegion"; - this.cbxReplaceMeRegion.Size = new System.Drawing.Size(163, 21); - this.cbxReplaceMeRegion.TabIndex = 0; - this.cbxReplaceMeRegion.Text = "Replace ME Region"; - this.cbxReplaceMeRegion.CheckedChanged += new System.EventHandler(this.cbxReplaceMeRegion_CheckedChanged); - // // editorWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F); diff --git a/mefit/WinForms/infoWindow.Designer.cs b/mefit/WinForms/infoWindow.Designer.cs index 3dcfb8e..1550362 100644 --- a/mefit/WinForms/infoWindow.Designer.cs +++ b/mefit/WinForms/infoWindow.Designer.cs @@ -102,8 +102,9 @@ private void InitializeComponent() this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -149,13 +150,13 @@ private void InitializeComponent() this.tlpBottom.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tlpBottom.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tlpBottom.Controls.Add(this.lblSectionData, 0, 0); - this.tlpBottom.Dock = System.Windows.Forms.DockStyle.Bottom; - this.tlpBottom.Location = new System.Drawing.Point(0, 311); + this.tlpBottom.Dock = System.Windows.Forms.DockStyle.Fill; + this.tlpBottom.Location = new System.Drawing.Point(0, 312); this.tlpBottom.Margin = new System.Windows.Forms.Padding(0); this.tlpBottom.Name = "tlpBottom"; this.tlpBottom.RowCount = 1; this.tlpBottom.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tlpBottom.Size = new System.Drawing.Size(438, 35); + this.tlpBottom.Size = new System.Drawing.Size(438, 34); this.tlpBottom.TabIndex = 1; // // lblSectionData @@ -169,7 +170,7 @@ private void InitializeComponent() this.lblSectionData.Margin = new System.Windows.Forms.Padding(0); this.lblSectionData.Name = "lblSectionData"; this.lblSectionData.Padding = new System.Windows.Forms.Padding(8, 0, 0, 0); - this.lblSectionData.Size = new System.Drawing.Size(438, 35); + this.lblSectionData.Size = new System.Drawing.Size(438, 34); this.lblSectionData.TabIndex = 101; this.lblSectionData.Text = "..."; this.lblSectionData.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -204,7 +205,7 @@ private void InitializeComponent() this.tlpMain.Location = new System.Drawing.Point(0, 0); this.tlpMain.Margin = new System.Windows.Forms.Padding(0); this.tlpMain.Name = "tlpMain"; - this.tlpMain.RowCount = 20; + this.tlpMain.RowCount = 21; this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 1F)); this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); @@ -225,12 +226,13 @@ private void InitializeComponent() this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 1F)); this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 1F)); - this.tlpMain.Size = new System.Drawing.Size(438, 313); + this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tlpMain.Size = new System.Drawing.Size(438, 312); this.tlpMain.TabIndex = 0; // // lblBiosIdText // - this.lblBiosIdText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBiosIdText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBiosIdText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBiosIdText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBiosIdText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -245,7 +247,7 @@ private void InitializeComponent() // // lblModelText // - this.lblModelText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblModelText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblModelText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblModelText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblModelText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -260,7 +262,7 @@ private void InitializeComponent() // // lblEfiVersionText // - this.lblEfiVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblEfiVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblEfiVersionText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblEfiVersionText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblEfiVersionText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -275,7 +277,7 @@ private void InitializeComponent() // // lblBuiltByText // - this.lblBuiltByText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBuiltByText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBuiltByText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuiltByText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuiltByText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -290,7 +292,7 @@ private void InitializeComponent() // // lblDateStamptext // - this.lblDateStamptext.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblDateStamptext.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblDateStamptext.Dock = System.Windows.Forms.DockStyle.Fill; this.lblDateStamptext.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDateStamptext.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -305,7 +307,7 @@ private void InitializeComponent() // // lblRevisionText // - this.lblRevisionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblRevisionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblRevisionText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblRevisionText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblRevisionText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -320,7 +322,7 @@ private void InitializeComponent() // // lblBootromText // - this.lblBootromText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBootromText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBootromText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBootromText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBootromText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -335,7 +337,7 @@ private void InitializeComponent() // // lblBuildcaveText // - this.lblBuildcaveText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBuildcaveText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBuildcaveText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuildcaveText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuildcaveText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -350,7 +352,7 @@ private void InitializeComponent() // // lblBuildTypeText // - this.lblBuildTypeText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBuildTypeText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBuildTypeText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuildTypeText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuildTypeText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -365,7 +367,7 @@ private void InitializeComponent() // // lblCompilerText // - this.lblCompilerText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblCompilerText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblCompilerText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblCompilerText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblCompilerText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -381,7 +383,7 @@ private void InitializeComponent() // lblBiosId // this.lblBiosId.AutoEllipsis = true; - this.lblBiosId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); + this.lblBiosId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblBiosId.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBiosId.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBiosId.ForeColor = System.Drawing.Color.White; @@ -396,7 +398,7 @@ private void InitializeComponent() // lblModel // this.lblModel.AutoEllipsis = true; - this.lblModel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + this.lblModel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblModel.Dock = System.Windows.Forms.DockStyle.Fill; this.lblModel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblModel.ForeColor = System.Drawing.Color.White; @@ -411,7 +413,7 @@ private void InitializeComponent() // lblEfiVersion // this.lblEfiVersion.AutoEllipsis = true; - this.lblEfiVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); + this.lblEfiVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblEfiVersion.Dock = System.Windows.Forms.DockStyle.Fill; this.lblEfiVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblEfiVersion.ForeColor = System.Drawing.Color.White; @@ -426,7 +428,7 @@ private void InitializeComponent() // lblBuiltBy // this.lblBuiltBy.AutoEllipsis = true; - this.lblBuiltBy.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + this.lblBuiltBy.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblBuiltBy.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuiltBy.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuiltBy.ForeColor = System.Drawing.Color.White; @@ -441,7 +443,7 @@ private void InitializeComponent() // lblDateStamp // this.lblDateStamp.AutoEllipsis = true; - this.lblDateStamp.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); + this.lblDateStamp.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblDateStamp.Dock = System.Windows.Forms.DockStyle.Fill; this.lblDateStamp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDateStamp.ForeColor = System.Drawing.Color.White; @@ -456,7 +458,7 @@ private void InitializeComponent() // lblRevision // this.lblRevision.AutoEllipsis = true; - this.lblRevision.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + this.lblRevision.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblRevision.Dock = System.Windows.Forms.DockStyle.Fill; this.lblRevision.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblRevision.ForeColor = System.Drawing.Color.White; @@ -471,7 +473,7 @@ private void InitializeComponent() // lblBootRom // this.lblBootRom.AutoEllipsis = true; - this.lblBootRom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); + this.lblBootRom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblBootRom.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBootRom.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBootRom.ForeColor = System.Drawing.Color.White; @@ -486,7 +488,7 @@ private void InitializeComponent() // lblBuildcaveId // this.lblBuildcaveId.AutoEllipsis = true; - this.lblBuildcaveId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + this.lblBuildcaveId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblBuildcaveId.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuildcaveId.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuildcaveId.ForeColor = System.Drawing.Color.White; @@ -501,7 +503,7 @@ private void InitializeComponent() // lblBuildType // this.lblBuildType.AutoEllipsis = true; - this.lblBuildType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); + this.lblBuildType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblBuildType.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBuildType.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBuildType.ForeColor = System.Drawing.Color.White; @@ -516,7 +518,7 @@ private void InitializeComponent() // lblCompiler // this.lblCompiler.AutoEllipsis = true; - this.lblCompiler.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + this.lblCompiler.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblCompiler.Dock = System.Windows.Forms.DockStyle.Fill; this.lblCompiler.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblCompiler.ForeColor = System.Drawing.Color.White; @@ -575,6 +577,8 @@ private void InitializeComponent() private System.Windows.Forms.Label lblBuildcaveText; private System.Windows.Forms.Label lblBuildTypeText; private System.Windows.Forms.Label lblCompilerText; + private System.Windows.Forms.TableLayoutPanel tlpBottom; + private System.Windows.Forms.Label lblSectionData; private System.Windows.Forms.Label lblBiosId; private System.Windows.Forms.Label lblModel; private System.Windows.Forms.Label lblEfiVersion; @@ -584,8 +588,6 @@ private void InitializeComponent() private System.Windows.Forms.Label lblBootRom; private System.Windows.Forms.Label lblBuildcaveId; private System.Windows.Forms.Label lblBuildType; - private System.Windows.Forms.TableLayoutPanel tlpBottom; - private System.Windows.Forms.Label lblSectionData; private METLabel lblCompiler; } } \ No newline at end of file diff --git a/mefit/WinForms/infoWindow.cs b/mefit/WinForms/infoWindow.cs index ef58cc6..9b6fe0b 100644 --- a/mefit/WinForms/infoWindow.cs +++ b/mefit/WinForms/infoWindow.cs @@ -35,27 +35,53 @@ public infoWindow() { InitializeComponent(); - lblTitle.MouseMove += infoWindow_MouseMove; + Load += infoWindow_Load; KeyDown += infoWindow_KeyDown; + lblTitle.MouseMove += infoWindow_MouseMove; + + InterfaceUtils.SetTableLayoutPanelHeight(tlpMain); cmdClose.Font = Program.FONT_MDL2_REG_12; cmdClose.Text = Chars.EXIT_CROSS; + } + #endregion - lblBiosId.Text = FWBase.ROMInfoSectionData.BiosId ?? "N/A"; + #region Window Events + private void infoWindow_Load(object sender, EventArgs e) + { + lblBiosId.Text = FWBase.ROMInfoSectionData.BiosId + ?? "N/A"; lblModel.Text = FWBase.ROMInfoSectionData.Model != null ? $"{FWBase.ROMInfoSectionData.Model} ({MacUtils.ConvertEfiModelCode(FWBase.ROMInfoSectionData.Model)})" : "N/A"; - lblEfiVersion.Text = FWBase.ROMInfoSectionData.EfiVersion ?? "N/A"; - lblBuiltBy.Text = FWBase.ROMInfoSectionData.BuiltBy ?? "N/A"; - lblDateStamp.Text = FWBase.ROMInfoSectionData.DateStamp ?? "N/A"; - lblRevision.Text = FWBase.ROMInfoSectionData.Revision ?? "N/A"; - lblBootRom.Text = FWBase.ROMInfoSectionData.RomVersion ?? "N/A"; - lblBuildcaveId.Text = FWBase.ROMInfoSectionData.BuildcaveId ?? "N/A"; - lblBuildType.Text = FWBase.ROMInfoSectionData.BuildType ?? "N/A"; - lblCompiler.Text = FWBase.ROMInfoSectionData.Compiler ?? "N/A"; - - lblSectionData.Text = $"Base: {FWBase.ROMInfoSectionData.SectionBase:X2}h, " + - $"Size: {FWBase.ROMInfoSectionData.SectionBytes.Length:X2}h" ?? string.Empty; + lblEfiVersion.Text = + FWBase.ROMInfoSectionData.EfiVersion + ?? "N/A"; + lblBuiltBy.Text = + FWBase.ROMInfoSectionData.BuiltBy + ?? "N/A"; + lblDateStamp.Text = + FWBase.ROMInfoSectionData.DateStamp + ?? "N/A"; + lblRevision.Text = + FWBase.ROMInfoSectionData.Revision + ?? "N/A"; + lblBootRom.Text = + FWBase.ROMInfoSectionData.RomVersion + ?? "N/A"; + lblBuildcaveId.Text = + FWBase.ROMInfoSectionData.BuildcaveId + ?? "N/A"; + lblBuildType.Text = + FWBase.ROMInfoSectionData.BuildType + ?? "N/A"; + lblCompiler.Text = + FWBase.ROMInfoSectionData.Compiler + ?? "N/A"; + lblSectionData.Text = + $"Base: {FWBase.ROMInfoSectionData.SectionBase:X2}h, " + + $"Size: {FWBase.ROMInfoSectionData.SectionBytes.Length:X2}h" + ?? string.Empty; foreach (Label label in tlpMain.Controls) { diff --git a/mefit/WinForms/mainWindow.Designer.cs b/mefit/WinForms/mainWindow.Designer.cs index 3cfc849..ecf45b6 100644 --- a/mefit/WinForms/mainWindow.Designer.cs +++ b/mefit/WinForms/mainWindow.Designer.cs @@ -96,7 +96,8 @@ private void InitializeComponent() this.tlpMenu = new System.Windows.Forms.TableLayoutPanel(); this.pnlMenuSeperator1 = new System.Windows.Forms.Panel(); this.pnlMenuSeperator0 = new System.Windows.Forms.Panel(); - this.cmdCopy = new System.Windows.Forms.Button(); + this.cmdCopyMenu = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); this.tlpTitle = new System.Windows.Forms.TableLayoutPanel(); this.cmdClose = new System.Windows.Forms.Button(); this.cmdMenu = new System.Windows.Forms.Button(); @@ -386,7 +387,7 @@ private void InitializeComponent() // lblFileCreatedDate // this.lblFileCreatedDate.AutoEllipsis = true; - this.lblFileCreatedDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(52)))), ((int)(((byte)(52))))); + this.lblFileCreatedDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblFileCreatedDate.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFileCreatedDate.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFileCreatedDate.ForeColor = System.Drawing.Color.White; @@ -401,7 +402,7 @@ private void InitializeComponent() // lblFileModifiedDate // this.lblFileModifiedDate.AutoEllipsis = true; - this.lblFileModifiedDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(52)))), ((int)(((byte)(52))))); + this.lblFileModifiedDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblFileModifiedDate.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFileModifiedDate.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFileModifiedDate.ForeColor = System.Drawing.Color.White; @@ -416,7 +417,7 @@ private void InitializeComponent() // lblFileCrc // this.lblFileCrc.AutoEllipsis = true; - this.lblFileCrc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblFileCrc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblFileCrc.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFileCrc.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFileCrc.ForeColor = System.Drawing.Color.White; @@ -430,7 +431,7 @@ private void InitializeComponent() // // lblCreatedText // - this.lblCreatedText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblCreatedText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblCreatedText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblCreatedText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblCreatedText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -446,7 +447,7 @@ private void InitializeComponent() // lblFileSizeBytes // this.lblFileSizeBytes.AutoEllipsis = true; - this.lblFileSizeBytes.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblFileSizeBytes.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblFileSizeBytes.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFileSizeBytes.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFileSizeBytes.ForeColor = System.Drawing.Color.White; @@ -460,7 +461,7 @@ private void InitializeComponent() // // lblModifiedText // - this.lblModifiedText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblModifiedText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblModifiedText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblModifiedText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblModifiedText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -475,7 +476,7 @@ private void InitializeComponent() // // lblSizeBytesText // - this.lblSizeBytesText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblSizeBytesText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblSizeBytesText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSizeBytesText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSizeBytesText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -490,7 +491,7 @@ private void InitializeComponent() // // lblChecksumText // - this.lblChecksumText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblChecksumText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblChecksumText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblChecksumText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblChecksumText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -552,7 +553,7 @@ private void InitializeComponent() // // lblNvramText // - this.lblNvramText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblNvramText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblNvramText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblNvramText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblNvramText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -567,7 +568,7 @@ private void InitializeComponent() // // lblFsysStoreText // - this.lblFsysStoreText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblFsysStoreText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblFsysStoreText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFsysStoreText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFsysStoreText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -583,7 +584,7 @@ private void InitializeComponent() // lblApfsCapable // this.lblApfsCapable.AutoEllipsis = true; - this.lblApfsCapable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(54)))), ((int)(((byte)(54)))), ((int)(((byte)(54))))); + this.lblApfsCapable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblApfsCapable.Dock = System.Windows.Forms.DockStyle.Fill; this.lblApfsCapable.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblApfsCapable.ForeColor = System.Drawing.Color.White; @@ -597,7 +598,7 @@ private void InitializeComponent() // // lblEfiVersionText // - this.lblEfiVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblEfiVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblEfiVersionText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblEfiVersionText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblEfiVersionText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -613,7 +614,7 @@ private void InitializeComponent() // lblFitVersion // this.lblFitVersion.AutoEllipsis = true; - this.lblFitVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblFitVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblFitVersion.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFitVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFitVersion.ForeColor = System.Drawing.Color.White; @@ -628,7 +629,7 @@ private void InitializeComponent() // lblHwc // this.lblHwc.AutoEllipsis = true; - this.lblHwc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblHwc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblHwc.Dock = System.Windows.Forms.DockStyle.Fill; this.lblHwc.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblHwc.ForeColor = System.Drawing.Color.White; @@ -642,7 +643,7 @@ private void InitializeComponent() // // lblSerialText // - this.lblSerialText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblSerialText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblSerialText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSerialText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSerialText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -658,7 +659,7 @@ private void InitializeComponent() // lblApfsCapableText // this.lblApfsCapableText.AutoEllipsis = true; - this.lblApfsCapableText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblApfsCapableText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblApfsCapableText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblApfsCapableText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblApfsCapableText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -673,7 +674,7 @@ private void InitializeComponent() // // lblFitVersionText // - this.lblFitVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblFitVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblFitVersionText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFitVersionText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFitVersionText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -727,7 +728,7 @@ private void InitializeComponent() // lblSerialNumber // this.lblSerialNumber.AutoEllipsis = true; - this.lblSerialNumber.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblSerialNumber.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblSerialNumber.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSerialNumber.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSerialNumber.ForeColor = System.Drawing.Color.White; @@ -741,7 +742,7 @@ private void InitializeComponent() // // lblHwcText // - this.lblHwcText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblHwcText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblHwcText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblHwcText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblHwcText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -778,7 +779,7 @@ private void InitializeComponent() // lblFsysCrc // this.lblFsysCrc.AutoEllipsis = true; - this.lblFsysCrc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(52)))), ((int)(((byte)(52))))); + this.lblFsysCrc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblFsysCrc.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFsysCrc.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFsysCrc.ForeColor = System.Drawing.Color.White; @@ -850,7 +851,7 @@ private void InitializeComponent() // lblEfiVersion // this.lblEfiVersion.AutoEllipsis = true; - this.lblEfiVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblEfiVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblEfiVersion.Dock = System.Windows.Forms.DockStyle.Fill; this.lblEfiVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblEfiVersion.ForeColor = System.Drawing.Color.White; @@ -909,7 +910,7 @@ private void InitializeComponent() // lblEfiLock // this.lblEfiLock.AutoEllipsis = true; - this.lblEfiLock.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblEfiLock.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblEfiLock.Dock = System.Windows.Forms.DockStyle.Fill; this.lblEfiLock.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblEfiLock.ForeColor = System.Drawing.Color.White; @@ -923,7 +924,7 @@ private void InitializeComponent() // lblNssStore // this.lblNssStore.AutoEllipsis = true; - this.lblNssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblNssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblNssStore.Dock = System.Windows.Forms.DockStyle.Fill; this.lblNssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblNssStore.ForeColor = System.Drawing.Color.White; @@ -938,7 +939,7 @@ private void InitializeComponent() // lblSvsStore // this.lblSvsStore.AutoEllipsis = true; - this.lblSvsStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblSvsStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblSvsStore.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSvsStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSvsStore.ForeColor = System.Drawing.Color.White; @@ -953,7 +954,7 @@ private void InitializeComponent() // lblVssStore // this.lblVssStore.AutoEllipsis = true; - this.lblVssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblVssStore.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblVssStore.Dock = System.Windows.Forms.DockStyle.Fill; this.lblVssStore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblVssStore.ForeColor = System.Drawing.Color.White; @@ -967,7 +968,7 @@ private void InitializeComponent() // // lblSonText // - this.lblSonText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblSonText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblSonText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSonText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSonText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -983,7 +984,7 @@ private void InitializeComponent() // lblOrderNo // this.lblOrderNo.AutoEllipsis = true; - this.lblOrderNo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(52)))), ((int)(((byte)(52))))); + this.lblOrderNo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblOrderNo.Dock = System.Windows.Forms.DockStyle.Fill; this.lblOrderNo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblOrderNo.ForeColor = System.Drawing.Color.White; @@ -997,7 +998,7 @@ private void InitializeComponent() // // lblBoardIdText // - this.lblBoardIdText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblBoardIdText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblBoardIdText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBoardIdText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBoardIdText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -1013,7 +1014,7 @@ private void InitializeComponent() // lblBoardId // this.lblBoardId.AutoEllipsis = true; - this.lblBoardId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(54)))), ((int)(((byte)(54)))), ((int)(((byte)(54))))); + this.lblBoardId.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); this.lblBoardId.Dock = System.Windows.Forms.DockStyle.Fill; this.lblBoardId.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblBoardId.ForeColor = System.Drawing.Color.White; @@ -1027,7 +1028,7 @@ private void InitializeComponent() // // lblMeVersionText // - this.lblMeVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(23)))), ((int)(((byte)(23)))), ((int)(((byte)(23))))); + this.lblMeVersionText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35))))); this.lblMeVersionText.Dock = System.Windows.Forms.DockStyle.Fill; this.lblMeVersionText.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblMeVersionText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(225)))), ((int)(((byte)(240))))); @@ -1061,7 +1062,7 @@ private void InitializeComponent() // lblMeVersion // this.lblMeVersion.AutoEllipsis = true; - this.lblMeVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(42)))), ((int)(((byte)(42))))); + this.lblMeVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.lblMeVersion.Dock = System.Windows.Forms.DockStyle.Fill; this.lblMeVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblMeVersion.ForeColor = System.Drawing.Color.White; @@ -1215,7 +1216,7 @@ private void InitializeComponent() // this.tlpMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15))))); this.tlpMenu.BackgroundImage = global::Mac_EFI_Toolkit.Properties.Resources.imgSprite; - this.tlpMenu.ColumnCount = 8; + this.tlpMenu.ColumnCount = 9; this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 1F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); @@ -1223,16 +1224,17 @@ private void InitializeComponent() this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 5F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F)); + this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 5F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 426F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tlpMenu.Controls.Add(this.pnlMenuSeperator1, 5, 0); this.tlpMenu.Controls.Add(this.cmdOpen, 0, 0); this.tlpMenu.Controls.Add(this.cmdReset, 2, 0); this.tlpMenu.Controls.Add(this.pnlMenuSeperator0, 3, 0); - this.tlpMenu.Controls.Add(this.cmdCopy, 4, 0); + this.tlpMenu.Controls.Add(this.cmdCopyMenu, 4, 0); this.tlpMenu.Controls.Add(this.cmdEdit, 6, 0); + this.tlpMenu.Controls.Add(this.panel1, 7, 0); this.tlpMenu.Dock = System.Windows.Forms.DockStyle.Top; this.tlpMenu.Location = new System.Drawing.Point(1, 51); this.tlpMenu.Margin = new System.Windows.Forms.Padding(2); @@ -1262,26 +1264,36 @@ private void InitializeComponent() this.pnlMenuSeperator0.Size = new System.Drawing.Size(1, 24); this.pnlMenuSeperator0.TabIndex = 7; // - // cmdCopy - // - this.cmdCopy.BackColor = System.Drawing.Color.Transparent; - this.cmdCopy.Dock = System.Windows.Forms.DockStyle.Fill; - this.cmdCopy.Enabled = false; - this.cmdCopy.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); - this.cmdCopy.FlatAppearance.BorderSize = 0; - this.cmdCopy.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); - this.cmdCopy.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); - this.cmdCopy.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmdCopy.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cmdCopy.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(225)))), ((int)(((byte)(225)))), ((int)(((byte)(225))))); - this.cmdCopy.Location = new System.Drawing.Point(147, 1); - this.cmdCopy.Margin = new System.Windows.Forms.Padding(1); - this.cmdCopy.Name = "cmdCopy"; - this.cmdCopy.Size = new System.Drawing.Size(68, 36); - this.cmdCopy.TabIndex = 2; - this.cmdCopy.Text = "COPY"; - this.cmdCopy.UseVisualStyleBackColor = false; - this.cmdCopy.Click += new System.EventHandler(this.cmdCopy_Click); + // cmdCopyMenu + // + this.cmdCopyMenu.BackColor = System.Drawing.Color.Transparent; + this.cmdCopyMenu.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdCopyMenu.Enabled = false; + this.cmdCopyMenu.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.cmdCopyMenu.FlatAppearance.BorderSize = 0; + this.cmdCopyMenu.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.cmdCopyMenu.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.cmdCopyMenu.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmdCopyMenu.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cmdCopyMenu.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(225)))), ((int)(((byte)(225)))), ((int)(((byte)(225))))); + this.cmdCopyMenu.Location = new System.Drawing.Point(147, 1); + this.cmdCopyMenu.Margin = new System.Windows.Forms.Padding(1); + this.cmdCopyMenu.Name = "cmdCopyMenu"; + this.cmdCopyMenu.Size = new System.Drawing.Size(68, 36); + this.cmdCopyMenu.TabIndex = 2; + this.cmdCopyMenu.Text = "COPY"; + this.cmdCopyMenu.UseVisualStyleBackColor = false; + this.cmdCopyMenu.Click += new System.EventHandler(this.cmdCopy_Click); + // + // panel1 + // + this.panel1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.panel1.Location = new System.Drawing.Point(303, 7); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1, 24); + this.panel1.TabIndex = 9; // // tlpTitle // @@ -1313,7 +1325,7 @@ private void InitializeComponent() // this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; - this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); @@ -1366,7 +1378,7 @@ private void InitializeComponent() this.cmdMin.Location = new System.Drawing.Point(613, 0); this.cmdMin.Margin = new System.Windows.Forms.Padding(0); this.cmdMin.Name = "cmdMin"; - this.cmdMin.Padding = new System.Windows.Forms.Padding(2, 10, 0, 1); + this.cmdMin.Padding = new System.Windows.Forms.Padding(2, 0, 0, 1); this.cmdMin.Size = new System.Drawing.Size(50, 50); this.cmdMin.TabIndex = 99; this.cmdMin.TabStop = false; @@ -1849,7 +1861,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem openBuildsDirectoryToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem openFsysStoresDirectoryToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; - private System.Windows.Forms.Button cmdCopy; + private System.Windows.Forms.Button cmdCopyMenu; private System.Windows.Forms.ToolStripMenuItem sizeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem crc32ToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem createdDateToolStripMenuItem; @@ -1881,5 +1893,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem usageManualToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem homepageToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem changelogToolStripMenuItem; + private System.Windows.Forms.Panel panel1; } } \ No newline at end of file diff --git a/mefit/WinForms/mainWindow.cs b/mefit/WinForms/mainWindow.cs index 46a60d3..049cc7a 100644 --- a/mefit/WinForms/mainWindow.cs +++ b/mefit/WinForms/mainWindow.cs @@ -71,7 +71,7 @@ public mainWindow() // Set button properties (font and text) SetButtonProperties(); - ArrowDrawer.Draw(cmdCopy, Colours.DROP_ARROW_DISABLED); + ArrowDrawer.Draw(cmdCopyMenu, Colours.DROP_ARROW_DISABLED); } #endregion @@ -181,7 +181,7 @@ private void mainWindow_KeyDown(object sender, KeyEventArgs e) cmdReset.PerformClick(); break; case Keys.C: - cmdCopy.PerformClick(); + cmdCopyMenu.PerformClick(); break; case Keys.E: cmdEdit.PerformClick(); @@ -291,7 +291,8 @@ private void cmdReset_Click(object sender, EventArgs e) return; } - DialogResult result = METMessageBox.Show(this, "Reset", "This will unload the firmware and all associated data, are you sure you want to reset?", + DialogResult result = + METMessageBox.Show(this, "Reset", "This will unload the firmware and all associated data, are you sure you want to reset?", METMessageType.Warning, METMessageButtons.YesNo); if (result == DialogResult.Yes) @@ -668,6 +669,7 @@ private void restartApplicationToolStripMenuItem_Click(object sender, EventArgs private void settingsToolStripMenuItem_Click(object sender, EventArgs e) { SetHalfOpacity(); + using (Form formWindow = new settingsWindow()) { formWindow.FormClosed += ChildWindowClosed; @@ -678,6 +680,7 @@ private void settingsToolStripMenuItem_Click(object sender, EventArgs e) private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { SetHalfOpacity(); + using (Form formWindow = new aboutWindow()) { formWindow.FormClosed += ChildWindowClosed; @@ -847,7 +850,11 @@ private void UpdateFileSizeLabel() if (!isValidSize) { lblFileSizeBytes.ForeColor = Colours.ERROR_RED; - lblFileSizeBytes.Text += isValidSize ? string.Empty : $" ({FileUtils.GetSizeDifference(fileSize)})"; + + lblFileSizeBytes.Text += + isValidSize + ? string.Empty + : $" ({FileUtils.GetSizeDifference(fileSize)})"; } } @@ -868,7 +875,8 @@ private void UpdateFileModifiedDateLabel() private void UpdateModelLabel() { - lblModel.Text = $"MODEL: {MacUtils.ConvertEfiModelCode(FWBase.EFISectionData.ModelPart) ?? "N/A"}"; + lblModel.Text = + $"MODEL: {MacUtils.ConvertEfiModelCode(FWBase.EFISectionData.ModelPart) ?? "N/A"}"; // Load and append the config code asynchronously if (FWBase.FsysStoreData.HWC != null) @@ -879,12 +887,16 @@ private void UpdateModelLabel() private void UpdateFirmwareSerialNumber() { - lblSerialNumber.Text = FWBase.FsysStoreData.Serial ?? "N/A"; + lblSerialNumber.Text = + FWBase.FsysStoreData.Serial ?? + "N/A"; } private void UpdateHardwareConfigLabel() { - lblHwc.Text = FWBase.FsysStoreData.HWC ?? "N/A"; + lblHwc.Text = + FWBase.FsysStoreData.HWC + ?? "N/A"; } private void UpdateFsysLabel() @@ -892,8 +904,10 @@ private void UpdateFsysLabel() if (FWBase.FsysStoreData.CrcString != null) { lblFsysCrc.Text = $"CRC32: {FWBase.FsysStoreData.CrcString}h"; - lblFsysCrc.ForeColor = string.Equals(FWBase.FsysStoreData.CrcCalcString, - FWBase.FsysStoreData.CrcString) ? Colours.COMPLETE_GREEN : Colours.ERROR_RED; + lblFsysCrc.ForeColor = + string.Equals(FWBase.FsysStoreData.CrcCalcString, FWBase.FsysStoreData.CrcString) + ? Colours.COMPLETE_GREEN + : Colours.ERROR_RED; } else { @@ -903,21 +917,28 @@ private void UpdateFsysLabel() private void UpdateOrderNumberLabel() { - lblOrderNo.Text = FWBase.FsysStoreData.SON ?? "N/A"; + lblOrderNo.Text = + FWBase.FsysStoreData.SON + ?? "N/A"; } private void UpdateEfiVersionLabel() { - lblEfiVersion.Text = FWBase.FirmwareVersion ?? "N/A"; + lblEfiVersion.Text = + FWBase.FirmwareVersion + ?? "N/A"; } private void UpdateNvramLabel(Label label, NvramStore storeData, string text) { label.Text = text; - Color foreColor = (!storeData.IsPrimaryStoreEmpty || !storeData.IsBackupStoreEmpty) + Color foreColor = + !storeData.IsPrimaryStoreEmpty || !storeData.IsBackupStoreEmpty + ? Color.White + : storeData.PrimaryStoreBase != -1 ? Colours.COMPLETE_GREEN - : (storeData.PrimaryStoreBase != -1 ? Color.White : Colours.DISABLED_TEXT); + : Colours.DISABLED_TEXT; label.ForeColor = foreColor; } @@ -958,7 +979,9 @@ private Color GetEfiLockStatusColor(EfiLockStatus lockStatus) private void UpdateBoardIdLabel() { - lblBoardId.Text = FWBase.PDRSectionData.BoardId ?? "N/A"; + lblBoardId.Text = + FWBase.PDRSectionData.BoardId + ?? "N/A"; } private void UpdateApfsCapableLabel() @@ -966,10 +989,6 @@ private void UpdateApfsCapableLabel() switch (FWBase.IsApfsCapable) { - case ApfsCapable.Unknown: - lblApfsCapable.Text = "UNKOWN"; - lblApfsCapable.ForeColor = Colours.ERROR_RED; - break; case ApfsCapable.Guid: lblApfsCapable.Text = "YES (DXE)"; break; @@ -980,23 +999,32 @@ private void UpdateApfsCapableLabel() lblApfsCapable.Text = "DRIVER NOT FOUND"; lblApfsCapable.ForeColor = Colours.WARNING_ORANGE; break; + case ApfsCapable.Unknown: + lblApfsCapable.Text = "UNKOWN"; + lblApfsCapable.ForeColor = Colours.ERROR_RED; + break; } } private void UpdateFitVersionLabel() { - lblFitVersion.Text = FWBase.FitVersion ?? "N/A"; + lblFitVersion.Text = + FWBase.FitVersion + ?? "N/A"; } private void UpdateIntelMeLabel() { - lblMeVersion.Text = FWBase.MeVersion ?? "N/A"; + lblMeVersion.Text = + FWBase.MeVersion + ?? "N/A"; if (Descriptor.MeBase != 0) { if (!string.IsNullOrEmpty(FWBase.MeVersion)) { - lblMeVersion.Text += $" ({Descriptor.MeBase:X2}h)"; + lblMeVersion.Text += + $" ({Descriptor.MeBase:X2}h)"; } } } @@ -1033,22 +1061,34 @@ private void ShowContextMenu(Control control, ContextMenuStrip menu) private void ToggleControlEnable(bool enable) { - ArrowDrawer.Update(cmdCopy, enable ? Colours.DROP_ARROW_ENABLED : Colours.DROP_ARROW_DISABLED); + ArrowDrawer.Draw + ( + cmdCopyMenu, + enable + ? Colours.DROP_ARROW_ENABLED + : Colours.DROP_ARROW_DISABLED + ); + + Button[] buttons = + { + cmdReset, cmdEdit, cmdCopyMenu, cmdNavigate, cmdReload, + cmdFixFsysCrc, cmdExportFsys , cmdAppleRomInfo, cmdExportMe + }; - Button[] buttons = { cmdReset, cmdEdit, cmdCopy, cmdNavigate, cmdReload, - cmdFixFsysCrc, cmdExportFsys , cmdAppleRomInfo, cmdExportMe}; foreach (Button button in buttons) { button.Enabled = enable; } - cmdEveryMacSearch.Enabled = (FWBase.FsysStoreData.Serial != null); + cmdEveryMacSearch.Enabled = + FWBase.FsysStoreData.Serial != null; if (FWBase.FsysStoreData.FsysBytes != null) { - cmdFixFsysCrc.Enabled = MacUtils.GetUintFsysCrc32 - (FWBase.FsysStoreData.FsysBytes).ToString("X8") == FWBase.FsysStoreData.CrcString - ? false : true; + cmdFixFsysCrc.Enabled = + MacUtils.GetUintFsysCrc32(FWBase.FsysStoreData.FsysBytes).ToString("X8") == FWBase.FsysStoreData.CrcString + ? false + : true; } else { @@ -1110,7 +1150,7 @@ private void SetTipHandlers() { Button[] buttons = { - cmdMenu, cmdOpen, cmdReset, cmdCopy, cmdEdit, cmdNavigate, + cmdMenu, cmdOpen, cmdReset, cmdCopyMenu, cmdEdit, cmdNavigate, cmdReload, cmdEveryMacSearch, cmdFixFsysCrc, cmdExportFsys, cmdAppleRomInfo, cmdExportMe }; @@ -1143,7 +1183,7 @@ private void HandleMouseEnterTip(object sender, EventArgs e) { cmdReset, "Reset (CTRL + R)" }, { cmdEdit, "Firmware Editor (CTRL + E)" }, { cmdMenu, "Application Menu (CTRL + M)"}, - { cmdCopy, "Copy (CTRL + C)" }, + { cmdCopyMenu, "Copy (CTRL + C)" }, { cmdNavigate, "Navigate to File (ALT + N)" }, { cmdReload, "Reload File from Disk (ALT + R)" }, { cmdEveryMacSearch, "Search Serial with EveryMac (ALT + S)" }, @@ -1171,8 +1211,10 @@ private void HandleMouseLeaveTip(object sender, EventArgs e) private string SetNvramStoreTip(NvramStore storeData, string storeType) { - if (!storeData.IsPrimaryStoreEmpty || !storeData.IsBackupStoreEmpty) - return $"{storeType} data present in the NVRAM"; + if (!storeData.IsPrimaryStoreEmpty && !storeData.IsBackupStoreEmpty) + return $"Data present in both {storeType} stores"; + else if (!storeData.IsPrimaryStoreEmpty && storeData.IsBackupStoreEmpty) + return $"Data present in the primary {storeType} store"; else if (storeData.PrimaryStoreBase != -1) return $"{storeType} NVRAM stores are empty (0xFF)"; @@ -1202,7 +1244,8 @@ private void GetPrivateMemoryUsage(object state) { lblPrivateMemory.Invoke((Action)(() => { - lblPrivateMemory.Text = $"{Helper.GetBytesReadableSize(currentProcess.PrivateMemorySize64)}"; + lblPrivateMemory.Text = + $"{Helper.GetBytesReadableSize(currentProcess.PrivateMemorySize64)}"; })); } } diff --git a/mefit/WinForms/settingsWindow.Designer.cs b/mefit/WinForms/settingsWindow.Designer.cs index 1fead82..4335d8d 100644 --- a/mefit/WinForms/settingsWindow.Designer.cs +++ b/mefit/WinForms/settingsWindow.Designer.cs @@ -662,8 +662,9 @@ private void InitializeComponent() this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); diff --git a/mefit/WinForms/termsWindow.Designer.cs b/mefit/WinForms/termsWindow.Designer.cs index 8d1571d..dadcc6d 100644 --- a/mefit/WinForms/termsWindow.Designer.cs +++ b/mefit/WinForms/termsWindow.Designer.cs @@ -95,8 +95,9 @@ private void InitializeComponent() // this.cmdClose.BackColor = System.Drawing.Color.Transparent; this.cmdClose.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmdClose.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); this.cmdClose.FlatAppearance.BorderSize = 0; - this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.cmdClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); this.cmdClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cmdClose.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); From 7027df2ea9b3e469e6fc18c03270c3c7aae25509 Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Sun, 23 Jul 2023 13:09:16 +0100 Subject: [PATCH 2/8] Update MANUAL.md --- MANUAL.md | 2 +- files/images/met.png | Bin 36824 -> 37168 bytes files/images/met_alt.png | Bin 36205 -> 36573 bytes files/manual/nvram.png | Bin 1440 -> 1427 bytes files/manual/nvramlocked.png | Bin 1485 -> 1451 bytes 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/MANUAL.md b/MANUAL.md index 60e1e0c..adb6d1d 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -221,7 +221,7 @@ This section provides information about the firmware version, and includes one b -This section is divided into four items. The first three items represent different NVRAM store types, indicating their status. Each store type will appear white when empty, green when data is present, and grey when the store is not found. +This section is divided into four items. The first three items represent different NVRAM store types, indicating their status. Each store type will appear green when empty, white when data is present, and grey when the store is not found. The padlock item represents EFI Lock status. If the padlock icon is green and unlocked, it signifies that a Message Authentication Code (MAC) was not found, indicating that the EFI is likely not locked. Conversely, if the padlock icon is red and locked, it suggests that a Message Authentication Code (MAC) was found, indicating that the EFI is likely password locked. diff --git a/files/images/met.png b/files/images/met.png index c9c1a350cb69b8d811c894a3e6529f217e8fc879..17cad5851e622292781b001e23ca15ac17647c71 100644 GIT binary patch literal 37168 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 literal 36824 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 R*9=6C~G*}!p^ff@B;<%%9^bw%V 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 RZvj8@FO;Q=p1=9<-vE2eLJ9x? diff --git a/files/manual/nvram.png b/files/manual/nvram.png index d13262e6227f595aeef8df6f79e5d0e54bce4f0c..5c9a804a77583bfd14e28b0809f924df621116dc 100644 GIT binary patch delta 1358 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 delta 1417 zcmb7^>pRm60LR%H&X#NJNH|C*+RWvsNNlz>np`56AC8TOF3X}$#F5S1cCx1|*YmhV zxkZMFR%tfHF{9jS5}H{pMK~&QJ)Y-0=MOmF_utQp&x=nztRKb>phq0XyPir2n=5`o znZ{_P%v-H%Sb~IP_og3KQeBUkFmyR1f9j%q?-EVjb5T5El>3ZJhG`VEBV`em-p+Vy z@}LDh^qKfL$8gTJO@WhF4hFwsmwLBAmuqk)WP5|sS;st(N@_KRi&6IU+vx+Pxx+2W z&t)kSg_X1Ep{x)h)}!~%&$eT z5}GHj#vHB(NGdyq9bu^I=xoiPnnJTOp{k%}vzm^eL0XfM)$gm0l!{-gmT;}jI#$=5 z3m7}&JZa#h>xwIe$u7>xgugKrs^MF1)G_zKqgwgH_Y=@gHE=aLRHA8ZZGCRMkeNy= z;U5hZgB=Mc_f8%;7&#bngQN4%+Jew~&Vn^RchzifNhrKj{S#xXq&34nS&f@nyBtZu! z0n0K)nb-qJ1Apd%&hcbJiWZit)N&97N7f$9O zOhotl!H!oUha66K55(ORgTBr3!LeOWeXLlYU$)`lhsB)n<$)9MnRImDl58ZZqC1kM zwkR(=V+AbWo~(Q)zj9jG>xDABW+O4_u{m{a#Xf zLD!q^!p<4;FIfd?2ub(z)wiLuCa~n>a0$hwFDT9C668xFm>zM8*SK%cP{?#GA(d!4 z=l~cx3aV1}Aoy(=IQ#6KszRQO>SqOWoub8iH&8$JVuv%VV9H;Nqt0svwmTn)v^C@< zFV=n<;aG4z}7 zfL=`gBQBjBw7gV25?sYc;wM_3UIJ|FN`rVZE5=DUm)KwTKGyQyq+-EuYdYg0&t_HQ z;@vBYf&Tn{>2xL_ce$dq9))i;b=wOYWwX@UW~?o#KrQ_OC^%bI_bl|<2QIrnG>yV)S%flwEZ2R1d+O=pv7_8E-Jb?LQ7bii#sTZr)zCnKQ2_TEH z8X^5dT*RjarYY?8!$@bbwg`)y=&wN>jj8C97v$$6jJ0C^MWxv1XIRja{nvbrvij6G z30giqscJ+kK$__*P!h=&Du_=7Q)29 Date: Sun, 6 Aug 2023 03:52:34 +0100 Subject: [PATCH 3/8] Crash fix. Other minor changes. --- CHANGELOG.md | 3 + README.md | 2 +- files/manual/title.png | Bin 3896 -> 3892 bytes mefit/Debug.cs | 152 +++++++++++++++----------- mefit/Program.cs | 2 +- mefit/WinForms/mainWindow.Designer.cs | 33 +++--- mefit/WinForms/mainWindow.cs | 12 +- 7 files changed, 116 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5678450..6581ab1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,9 @@ - Improved the image validation logic. - User interface improvements. +#### Bugs: +- Fixed an scenario where dragging and dropping a file onto the application executable would result in a crash when "Create a Debug Log" was clicked. This issue was resolved by dynamically constructing the file path when necessary. + ## Version 1.0.2 #### Enhancements: diff --git a/README.md b/README.md index 6d3c578..3ed6454 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

SMCFT Logo
-Mac EFI Toolkit V1.0.2 +Mac EFI Toolkit V1.0.3

A tool for analysis of Mac BIOS firmware, with limited editing capabilities.

diff --git a/files/manual/title.png b/files/manual/title.png index 8eef6458e8581652dd704c347af7bd23ba81db08..d8639d3745642634a423491474d16050189d37de 100644 GIT binary patch delta 3877 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 z zk#_fk;JobY?%%X(l!$|cAmjKX!+VCM6f7}8$cGUY7-1K3u990H*OFb)+;q@x?TpWe nn>oOl!%{2ld#u&v<>mhY1`yQq7lMv>00000NkvXXu0mjfP5z?2 delta 3881 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 r>x2=eauQlU!aVn?bZRfXdj9\r\n"); - builder.AppendLine($"Name: {Application.ProductName}"); - builder.AppendLine($"Version: {Application.ProductVersion}.{METVersion.Build}"); - builder.AppendLine($"Channel: {METVersion.Channel}"); - builder.AppendLine($"Mode: {BitnessMode()}"); - builder.AppendLine($"Debug: {IsDebugMode()}"); - builder.AppendLine($"Elevated: {IsRunAsAdmin()}"); - builder.AppendLine($"SHA256: {FileUtils.GetSha256Digest(appBytes)}\r\n"); + builder.AppendLine($"# // Mac EFI Toolkit Debug Log - {DateTime.Now}\r\n"); - builder.AppendLine("<-- Operating System -->\r\n"); - builder.AppendLine($"Name: {OSUtils.GetName}"); - builder.AppendLine($"Bitness: {OSUtils.GetBitness()}"); - builder.AppendLine($"Kernel: {OSUtils.GetKernelVersion.ProductVersion}\r\n"); + builder.AppendLine("<-- Application -->\r\n"); + builder.AppendLine($"Name: {Application.ProductName}"); + builder.AppendLine($"Version: {Application.ProductVersion}.{METVersion.Build}"); + builder.AppendLine($"Channel: {METVersion.Channel}"); + builder.AppendLine($"Mode: {BitnessMode()}"); + builder.AppendLine($"Debug: {IsDebugMode()}"); + builder.AppendLine($"Elevated: {IsRunAsAdmin()}"); + builder.AppendLine($"SHA256: {FileUtils.GetSha256Digest(appBytes)}\r\n"); - builder.AppendLine("<-- Fonts -->\r\n"); - builder.AppendLine($"Segoe UI Reg: {OSUtils.IsFontStyleAvailable("Segoe UI", FontStyle.Regular)}"); - builder.AppendLine($"Segoe UI Bol: {OSUtils.IsFontStyleAvailable("Segoe UI", FontStyle.Bold)}"); - builder.AppendLine($"Segoe UI Sem: {OSUtils.IsFontStyleAvailable("Segoe UI Semibold", FontStyle.Regular)}"); - builder.AppendLine($"Consolas Reg: {OSUtils.IsFontStyleAvailable("Consolas", FontStyle.Bold)}\r\n"); + builder.AppendLine("<-- Operating System -->\r\n"); + builder.AppendLine($"Name: {OSUtils.GetName}"); + builder.AppendLine($"Bitness: {OSUtils.GetBitness()}"); + builder.AppendLine($"Kernel: {OSUtils.GetKernelVersion.ProductVersion}\r\n"); - builder.AppendLine("<-- Exception Data -->\r\n"); - builder.AppendLine(GetExceptionData(e)); + builder.AppendLine("<-- Fonts -->\r\n"); + builder.AppendLine($"Segoe UI Reg: {OSUtils.IsFontStyleAvailable("Segoe UI", FontStyle.Regular)}"); + builder.AppendLine($"Segoe UI Bol: {OSUtils.IsFontStyleAvailable("Segoe UI", FontStyle.Bold)}"); + builder.AppendLine($"Segoe UI Sem: {OSUtils.IsFontStyleAvailable("Segoe UI Semibold", FontStyle.Regular)}"); + builder.AppendLine($"Consolas Reg: {OSUtils.IsFontStyleAvailable("Consolas", FontStyle.Bold)}\r\n"); - builder.AppendLine("<-- Firmware -->\r\n"); - builder.AppendLine(GetFirmwareData()); + builder.AppendLine("<-- Exception Data -->\r\n"); + builder.AppendLine(GetExceptionData(e)); - builder.AppendLine("<-- Modules -->\r\n"); - builder.AppendLine(GetProcessModules()); - builder.AppendLine("# // End of file"); + builder.AppendLine("<-- Firmware -->\r\n"); + builder.AppendLine(GetFirmwareData()); - return builder.ToString(); + builder.AppendLine("<-- Modules -->\r\n"); + builder.AppendLine(GetProcessModules()); + builder.AppendLine("# // End of file"); + + return builder.ToString(); + } + catch (Exception ex) + { + Logger.WriteExceptionToAppLog(ex); + return null; + } } private static string GetExceptionData(Exception e) @@ -102,32 +112,40 @@ private static string GetFirmwareData() StringBuilder builder = new StringBuilder(); - if (Descriptor.DescriptorMode) + try { - builder.AppendLine($" Descriptor ->\r\n"); - builder.AppendLine($"Des_Mode: {Descriptor.DescriptorMode}"); - builder.AppendLine($"PDR: {Descriptor.PdrBase:X2}h, {Descriptor.PdrLimit:X2}h"); - builder.AppendLine($"ME: {Descriptor.MeBase:X2}h, {Descriptor.MeLimit:X2}h"); - builder.AppendLine($"BIOS: {Descriptor.BiosBase:X2}h, {Descriptor.BiosLimit:X2}h\r\n"); + if (Descriptor.DescriptorMode) + { + builder.AppendLine($" Descriptor ->\r\n"); + builder.AppendLine($"Des_Mode: {Descriptor.DescriptorMode}"); + builder.AppendLine($"PDR: {Descriptor.PdrBase:X2}h, {Descriptor.PdrLimit:X2}h"); + builder.AppendLine($"ME: {Descriptor.MeBase:X2}h, {Descriptor.MeLimit:X2}h"); + builder.AppendLine($"BIOS: {Descriptor.BiosBase:X2}h, {Descriptor.BiosLimit:X2}h\r\n"); + } + + builder.AppendLine($" File ->\r\n"); + builder.AppendLine($"File Size: {FWBase.FileInfoData.FileLength:X2}h\r\n"); + + builder.AppendLine($" Fsys Store ->\r\n"); + builder.AppendLine($"Fsys Base: {FWBase.FsysStoreData.FsysBase:X2}h"); + builder.AppendLine($"Serial Base: {FWBase.FsysStoreData.SerialBase:X2}h"); + builder.AppendLine($"HWC Base: {FWBase.FsysStoreData.HWCBase:X2}h\r\n"); + + builder.AppendLine($" NVRAM ->\r\n"); + builder.AppendLine($"VSS Primary: Base {FWBase.VssStoreData.PrimaryStoreBase:X2}h, Size {FWBase.VssStoreData.PrimaryStoreSize:X2}h"); + builder.AppendLine($"VSS Backup: Base {FWBase.VssStoreData.BackupStoreBase:X2}h, Size {FWBase.VssStoreData.BackupStoreSize:X2}h"); + builder.AppendLine($"SVS Primary: Base {FWBase.SvsStoreData.PrimaryStoreBase:X2}h, Size {FWBase.SvsStoreData.PrimaryStoreSize:X2}h"); + builder.AppendLine($"SVS Backup: Base {FWBase.SvsStoreData.BackupStoreBase:X2}h, Size {FWBase.SvsStoreData.BackupStoreSize:X2}h"); + builder.AppendLine($"NSS Primary: Base {FWBase.NssStoreData.PrimaryStoreBase:X2}h, Size {FWBase.NssStoreData.PrimaryStoreSize:X2}h"); + builder.AppendLine($"NSS Backup: Base {FWBase.NssStoreData.BackupStoreBase:X2}h, Size {FWBase.NssStoreData.BackupStoreSize:X2}h"); + + return builder.ToString(); + } + catch (Exception e) + { + Logger.WriteExceptionToAppLog(e); + return null; } - - builder.AppendLine($" File ->\r\n"); - builder.AppendLine($"File Size: {FWBase.FileInfoData.FileLength:X2}h\r\n"); - - builder.AppendLine($" Fsys Store ->\r\n"); - builder.AppendLine($"Fsys Base: {FWBase.FsysStoreData.FsysBase:X2}h"); - builder.AppendLine($"Serial Base: {FWBase.FsysStoreData.SerialBase:X2}h"); - builder.AppendLine($"HWC Base: {FWBase.FsysStoreData.HWCBase:X2}h\r\n"); - - builder.AppendLine($" NVRAM ->\r\n"); - builder.AppendLine($"VSS Primary: Base {FWBase.VssStoreData.PrimaryStoreBase:X2}h, Size {FWBase.VssStoreData.PrimaryStoreSize:X2}h"); - builder.AppendLine($"VSS Backup: Base {FWBase.VssStoreData.BackupStoreBase:X2}h, Size {FWBase.VssStoreData.BackupStoreSize:X2}h"); - builder.AppendLine($"SVS Primary: Base {FWBase.SvsStoreData.PrimaryStoreBase:X2}h, Size {FWBase.SvsStoreData.PrimaryStoreSize:X2}h"); - builder.AppendLine($"SVS Backup: Base {FWBase.SvsStoreData.BackupStoreBase:X2}h, Size {FWBase.SvsStoreData.BackupStoreSize:X2}h"); - builder.AppendLine($"NSS Primary: Base {FWBase.NssStoreData.PrimaryStoreBase:X2}h, Size {FWBase.NssStoreData.PrimaryStoreSize:X2}h"); - builder.AppendLine($"NSS Backup: Base {FWBase.NssStoreData.BackupStoreBase:X2}h, Size {FWBase.NssStoreData.BackupStoreSize:X2}h"); - - return builder.ToString(); } private static string GetProcessModules() @@ -135,20 +153,28 @@ private static string GetProcessModules() int moduleNumber = 0; StringBuilder builder = new StringBuilder(); - foreach (ProcessModule module in Process.GetCurrentProcess().Modules) + try { - moduleNumber++; - - builder.AppendLine($" Module #{moduleNumber} -> '{module.ModuleName}'\r\n"); - builder.AppendLine($"Path: {module.FileName}"); - builder.AppendLine($"Version: {module.FileVersionInfo.FileVersion}"); - builder.AppendLine($"Description: {module.FileVersionInfo.FileDescription}"); - builder.AppendLine($"Size (Bytes): {module.ModuleMemorySize}"); - builder.AppendLine($"Base Address: {module.BaseAddress}"); - builder.AppendLine($"Entry Point: {module.EntryPointAddress}\r\n"); + foreach (ProcessModule module in Process.GetCurrentProcess().Modules) + { + moduleNumber++; + + builder.AppendLine($" Module #{moduleNumber} -> '{module.ModuleName}'\r\n"); + builder.AppendLine($"Path: {module.FileName}"); + builder.AppendLine($"Version: {module.FileVersionInfo.FileVersion}"); + builder.AppendLine($"Description: {module.FileVersionInfo.FileDescription}"); + builder.AppendLine($"Size (Bytes): {module.ModuleMemorySize}"); + builder.AppendLine($"Base Address: {module.BaseAddress}"); + builder.AppendLine($"Entry Point: {module.EntryPointAddress}\r\n"); + } + + return builder.ToString(); + } + catch (Exception e) + { + Logger.WriteExceptionToAppLog(e); + return null; } - - return builder.ToString(); } } diff --git a/mefit/Program.cs b/mefit/Program.cs index da5ea7b..673f0c1 100644 --- a/mefit/Program.cs +++ b/mefit/Program.cs @@ -33,7 +33,7 @@ internal struct METPath internal struct METVersion { - internal static readonly string Build = "230723.1256"; + internal static readonly string Build = "230806.0340"; internal static readonly string Channel = "Stable"; } diff --git a/mefit/WinForms/mainWindow.Designer.cs b/mefit/WinForms/mainWindow.Designer.cs index ecf45b6..3b54824 100644 --- a/mefit/WinForms/mainWindow.Designer.cs +++ b/mefit/WinForms/mainWindow.Designer.cs @@ -42,6 +42,7 @@ private void InitializeComponent() this.tlpFilename = new System.Windows.Forms.TableLayoutPanel(); this.cmdReload = new System.Windows.Forms.Button(); this.cmdNavigate = new System.Windows.Forms.Button(); + this.lblFilename = new METLabel(); this.lblModel = new System.Windows.Forms.Label(); this.tlpFile = new System.Windows.Forms.TableLayoutPanel(); this.lblFileCreatedDate = new System.Windows.Forms.Label(); @@ -103,7 +104,6 @@ private void InitializeComponent() this.cmdMenu = new System.Windows.Forms.Button(); this.cmdMin = new System.Windows.Forms.Button(); this.tlpVersionLabel = new System.Windows.Forms.TableLayoutPanel(); - this.lblFilename = new METLabel(); this.cmsMainMenu = new Mac_EFI_Toolkit.UI.METContextMenuStrip(); this.openLocalFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openBuildsDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -340,6 +340,19 @@ private void InitializeComponent() this.cmdNavigate.UseVisualStyleBackColor = false; this.cmdNavigate.Click += new System.EventHandler(this.cmdNavigate_Click); // + // lblFilename + // + this.lblFilename.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); + this.lblFilename.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblFilename.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold); + this.lblFilename.ForeColor = System.Drawing.Color.White; + this.lblFilename.Location = new System.Drawing.Point(0, 0); + this.lblFilename.Margin = new System.Windows.Forms.Padding(0); + this.lblFilename.Name = "lblFilename"; + this.lblFilename.Padding = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.lblFilename.Size = new System.Drawing.Size(639, 36); + this.lblFilename.TabIndex = 6; + // // lblModel // this.lblModel.AutoEllipsis = true; @@ -1216,7 +1229,7 @@ private void InitializeComponent() // this.tlpMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15))))); this.tlpMenu.BackgroundImage = global::Mac_EFI_Toolkit.Properties.Resources.imgSprite; - this.tlpMenu.ColumnCount = 9; + this.tlpMenu.ColumnCount = 10; this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 1F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); @@ -1225,9 +1238,8 @@ private void InitializeComponent() this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 5F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 5F)); + this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F)); this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 426F)); - this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.tlpMenu.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tlpMenu.Controls.Add(this.pnlMenuSeperator1, 5, 0); this.tlpMenu.Controls.Add(this.cmdOpen, 0, 0); this.tlpMenu.Controls.Add(this.cmdReset, 2, 0); @@ -1400,19 +1412,6 @@ private void InitializeComponent() this.tlpVersionLabel.Size = new System.Drawing.Size(60, 50); this.tlpVersionLabel.TabIndex = 100; // - // lblFilename - // - this.lblFilename.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); - this.lblFilename.Dock = System.Windows.Forms.DockStyle.Fill; - this.lblFilename.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold); - this.lblFilename.ForeColor = System.Drawing.Color.White; - this.lblFilename.Location = new System.Drawing.Point(0, 0); - this.lblFilename.Margin = new System.Windows.Forms.Padding(0); - this.lblFilename.Name = "lblFilename"; - this.lblFilename.Padding = new System.Windows.Forms.Padding(6, 0, 0, 0); - this.lblFilename.Size = new System.Drawing.Size(639, 36); - this.lblFilename.TabIndex = 6; - // // cmsMainMenu // this.cmsMainMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); diff --git a/mefit/WinForms/mainWindow.cs b/mefit/WinForms/mainWindow.cs index 049cc7a..ae3c229 100644 --- a/mefit/WinForms/mainWindow.cs +++ b/mefit/WinForms/mainWindow.cs @@ -302,6 +302,12 @@ private void cmdReset_Click(object sender, EventArgs e) } } + private void cmdCopy_Click(object sender, EventArgs e) + { + Control control = sender as Control; + ShowContextMenu(control, cmsCopy); + } + private void cmdEdit_Click(object sender, EventArgs e) { if (FWBase.LoadedBinaryBytes == null) @@ -335,12 +341,6 @@ private void cmdEdit_Click(object sender, EventArgs e) } } - private void cmdCopy_Click(object sender, EventArgs e) - { - Control control = sender as Control; - ShowContextMenu(control, cmsCopy); - } - private void cmdEveryMacSearch_Click(object sender, EventArgs e) { From a16a7f5ad6a6ff50cfb8a2059eb4ed332e8068f2 Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Sun, 6 Aug 2023 22:49:00 +0100 Subject: [PATCH 4/8] Minor UI information change. Display force find Fsys status with [F]. --- mefit/Common/FWBase.cs | 3 +++ mefit/WinForms/mainWindow.cs | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mefit/Common/FWBase.cs b/mefit/Common/FWBase.cs index 32f0b6c..1fd246c 100644 --- a/mefit/Common/FWBase.cs +++ b/mefit/Common/FWBase.cs @@ -125,6 +125,7 @@ class FWBase internal static string MeVersion = null; internal static byte[] LoadedBinaryBytes = null; internal static bool FirmwareLoaded = false; + internal static bool ForceFoundFsys = false; internal static FileInfoStore FileInfoData; internal static PdrSection PDRSectionData; @@ -186,6 +187,7 @@ internal static void LoadFirmwareBaseData(byte[] sourceBytes, string fileName) if (FsysStoreData.FsysBytes != null) { + ForceFoundFsys = true; Logger.WriteToLogFile($"Force found Fsys Store at {FsysStoreData.FsysBase:X}h." + $" The image may be misaligned or corrupt ({FileInfoData.FileNameWithExt}).", LogType.Application); } @@ -196,6 +198,7 @@ internal static void ResetFirmwareBaseData() { LoadedBinaryPath = null; LoadedBinaryBytes = null; + ForceFoundFsys = false; FileInfoData = default; PDRSectionData = default; VssStoreData = default; diff --git a/mefit/WinForms/mainWindow.cs b/mefit/WinForms/mainWindow.cs index ae3c229..7f0ec5d 100644 --- a/mefit/WinForms/mainWindow.cs +++ b/mefit/WinForms/mainWindow.cs @@ -903,9 +903,9 @@ private void UpdateFsysLabel() { if (FWBase.FsysStoreData.CrcString != null) { - lblFsysCrc.Text = $"CRC32: {FWBase.FsysStoreData.CrcString}h"; - lblFsysCrc.ForeColor = - string.Equals(FWBase.FsysStoreData.CrcCalcString, FWBase.FsysStoreData.CrcString) + lblFsysCrc.Text = + $"CRC: {FWBase.FsysStoreData.CrcString}h{(FWBase.ForceFoundFsys ? " [F]" : string.Empty)}"; + lblFsysCrc.ForeColor = string.Equals(FWBase.FsysStoreData.CrcCalcString, FWBase.FsysStoreData.CrcString) ? Colours.COMPLETE_GREEN : Colours.ERROR_RED; } From 24fb7706b810171d34cc44103b6e79c107f0b57b Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Mon, 7 Aug 2023 02:40:40 +0100 Subject: [PATCH 5/8] Update FWBase.cs Refactor GetFsysStoreData(). --- mefit/Common/FWBase.cs | 203 +++++++++++++++++------------------------ 1 file changed, 82 insertions(+), 121 deletions(-) diff --git a/mefit/Common/FWBase.cs b/mefit/Common/FWBase.cs index 1fd246c..ef48ebc 100644 --- a/mefit/Common/FWBase.cs +++ b/mefit/Common/FWBase.cs @@ -297,132 +297,46 @@ private static PdrSection DefaultPdrSection() #endregion #region Fsys Store + // Fsys resides in the NVRAM at either base: 20000h, or 22000h. + // Fsys size resides in the store at 0x09 and is 2 bytes in length, + // we should dynamically read it, not hardcode. internal static FsysStore GetFsysStoreData(byte[] sourceBytes, bool isFsysStoreOnly, bool forceFind = false) { - // Base should be zero if the isFsysStoreOnly flag is set - int fsysBase = 0; - - // Arg to skip Fsys searching - if (!isFsysStoreOnly) - { - if (!forceFind) - { - // First we need to locate the NVRAM section GUID - int guidBase = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.NVRAM_SECTION_GUID, _biosBase, _biosLimit); - - if (guidBase == -1) - { - // NVRAM store was not found so return default data - return DefaultFsysRegion(); - } - - // Get NVRAM section size from header - byte[] sectionLengthBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, guidBase + GUID_LENGTH, 4); - // Convert NVRAM section size to int32 - int nvramLength = BitConverter.ToInt32(sectionLengthBytes, 0); - // Search for the Fsys store within bounds of the NVRAM section - fsysBase = BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, guidBase - ZERO_VECTOR_LENGTH - GUID_LENGTH, nvramLength); - } - else - { - fsysBase = BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, _biosBase, _biosLimit); - } + // Find the base position of Fsys Store + int fsysBase = FindFsysBase(sourceBytes, isFsysStoreOnly, forceFind); - // Fsys store was not found within scope of the binary. - if (fsysBase == -1) - { - return DefaultFsysRegion(); - } - } - - byte[] fsysStoreBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, fsysBase, FSYS_RGN_SIZE); - - // Fsys store was not loaded - if (fsysStoreBytes == null) - { + // If Fsys Store base is not found, return default data + if (fsysBase == -1) return DefaultFsysRegion(); - } - // Fsys store was not the correct size - if (fsysStoreBytes.Length != FSYS_RGN_SIZE) - { - return DefaultFsysRegion(); - } + // Retrieve FsysStore bytes + byte[] fsysStoreBytes = GetFsysStoreBytes(sourceBytes, fsysBase); - // Get the Fsys store crc stored at 0x7FC (FSYS_RGN_SIZE - CRC32_LENGTH) - byte[] crcBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, fsysBase + FSYS_CRC_POS, CRC32_LENGTH); - byte[] crcEndianBytes = crcBytes.Reverse().ToArray(); // We need to flip the bytes from little endian - string crcString = BitConverter.ToString(crcEndianBytes).Replace("-", ""); + // If FsysStore is invalid, return default data + if (!IsValidFsysStore(fsysStoreBytes)) + return DefaultFsysRegion(); - // Manually calculate the Fsys store crc - uint uiCrcCalc = MacUtils.GetUintFsysCrc32(fsysStoreBytes); + // Retrieve CRC bytes and calculate CRC values + byte[] crcBytes = GetCrcBytes(sourceBytes, fsysBase); + string crcString = GetFlippedCrcString(crcBytes); + uint uiCrcCalc = CalculateFsysCrc(fsysStoreBytes); string crcCalcString = uiCrcCalc.ToString("X8"); - // Parse the serial number - int snDataStart = -1; - - // Look for the lower case system serial number signature - if ((snDataStart = BinaryUtils.GetBasePosition(sourceBytes, SSN_LOWER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - snDataStart += SSN_LOWER_SIG.Length; - - // Look for the upper case system serial number signature - if (snDataStart == -1) - { - if ((snDataStart = BinaryUtils.GetBasePosition(sourceBytes, SSN_UPPER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - snDataStart += SSN_UPPER_SIG.Length; - } - - // Look for other ssn signatures - if (snDataStart == -1) - { - if ((snDataStart = BinaryUtils.GetBasePosition(sourceBytes, SSNP_LOWER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - snDataStart += SSNP_LOWER_SIG.Length; - } - + // Find and parse various signatures within FsysStore + int snDataStart = FindSignaturePosition(sourceBytes, fsysBase, FSYS_RGN_SIZE, SSN_LOWER_SIG, SSN_UPPER_SIG, SSNP_LOWER_SIG); string serialString = ParseFsysString(sourceBytes, snDataStart); - if (serialString == null) snDataStart = -1; - - // Parse the hardware configuration code - int hwcDataStart = -1; - - // Look for the hardware configuration lower case signature - if ((hwcDataStart = BinaryUtils.GetBasePosition(sourceBytes, HWC_LOWER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - hwcDataStart += HWC_LOWER_SIG.Length; - - // Look for the hardware configuration upper case signature - if (hwcDataStart == -1) - { - if ((hwcDataStart = BinaryUtils.GetBasePosition(sourceBytes, HWC_UPPER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - hwcDataStart += HWC_UPPER_SIG.Length; - } + int hwcDataStart = FindSignaturePosition(sourceBytes, fsysBase, FSYS_RGN_SIZE, HWC_LOWER_SIG, HWC_UPPER_SIG); string hwcString = ParseFsysString(sourceBytes, hwcDataStart); - if (hwcString == null) hwcDataStart = -1; - - // Parse the system order number - int sonDataStart = -1; - - // Look for the system order number lower case signature - if ((sonDataStart = BinaryUtils.GetBasePosition(sourceBytes, SON_LOWER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - { - sonDataStart += SON_LOWER_SIG.Length; - } - - // Look for the system order number upper case signature - if (sonDataStart == -1) - { - if ((sonDataStart = BinaryUtils.GetBasePosition(sourceBytes, SON_UPPER_SIG, fsysBase, FSYS_RGN_SIZE)) != -1) - { - sonDataStart += SON_UPPER_SIG.Length; - } - } + int sonDataStart = FindSignaturePosition(sourceBytes, fsysBase, FSYS_RGN_SIZE, SON_LOWER_SIG, SON_UPPER_SIG); string sonString = ParseFsysString(sourceBytes, sonDataStart); + + // Trim trailing '/' from SON string if present if (sonString != null && sonString.EndsWith("/")) - { sonString = sonString.TrimEnd('/'); - } + // Create and return FsysStore object return new FsysStore { FsysBytes = fsysStoreBytes, @@ -440,34 +354,82 @@ internal static FsysStore GetFsysStoreData(byte[] sourceBytes, bool isFsysStoreO private static string ParseFsysString(byte[] sourceBytes, int basePos) { - // If the base is -1 return null - if (basePos == -1) - { + // Return null if base position is invalid or data size is zero + if (basePos == -1 || sourceBytes[basePos] == 0) return null; - } // Read size of the indicated variable int dataSize = sourceBytes[basePos]; - // Invalid data size + // Return null if data size is invalid if (dataSize == 0) - { return null; - } // Read the variable bytes byte[] dataBytes = BinaryUtils.GetBytesBaseLength(sourceBytes, basePos + LITERAL_POS, dataSize); - // Invalid bytes - if (dataBytes == null || dataBytes.Length > dataSize) - { + // Return null if bytes are invalid or exceed the data size + if (dataBytes == null || dataBytes.Length != dataSize) return null; - } // Return string data return _utf8.GetString(dataBytes); } + private static int FindFsysBase(byte[] sourceBytes, bool isFsysStoreOnly, bool forceFind) + { + if (isFsysStoreOnly) + return 0; + + if (forceFind) + return BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, _biosBase, _biosLimit); + + int guidBase = BinaryUtils.GetBasePosition(sourceBytes, FSGuids.NVRAM_SECTION_GUID, _biosBase, _biosLimit); + + if (guidBase == -1) + return -1; + + int nvramLength = BitConverter.ToInt32(BinaryUtils.GetBytesBaseLength(sourceBytes, guidBase + GUID_LENGTH, 4), 0); + return BinaryUtils.GetBasePosition(sourceBytes, FSYS_SIG, guidBase - ZERO_VECTOR_LENGTH - GUID_LENGTH, nvramLength); + } + + private static bool IsValidFsysStore(byte[] fsysStoreBytes) + { + return fsysStoreBytes != null && fsysStoreBytes.Length == FSYS_RGN_SIZE; + } + + private static string GetFlippedCrcString(byte[] crcBytes) + { + byte[] crcEndianBytes = crcBytes.Reverse().ToArray(); + return BitConverter.ToString(crcEndianBytes).Replace("-", ""); + } + + private static uint CalculateFsysCrc(byte[] fsysStoreBytes) + { + return MacUtils.GetUintFsysCrc32(fsysStoreBytes); + } + + private static int FindSignaturePosition(byte[] sourceBytes, int start, int limit, params byte[][] signatures) + { + foreach (byte[] sig in signatures) + { + int dataStart = BinaryUtils.GetBasePosition(sourceBytes, sig, start, limit); + if (dataStart != -1) + return dataStart + sig.Length; + } + return -1; + } + + private static byte[] GetFsysStoreBytes(byte[] sourceBytes, int fsysBase) + { + return BinaryUtils.GetBytesBaseLength(sourceBytes, fsysBase, FSYS_RGN_SIZE); + } + + private static byte[] GetCrcBytes(byte[] sourceBytes, int fsysBase) + { + return BinaryUtils.GetBytesBaseLength(sourceBytes, fsysBase + FSYS_CRC_POS, CRC32_LENGTH); + } + private static FsysStore DefaultFsysRegion() { return new FsysStore @@ -485,7 +447,6 @@ private static FsysStore DefaultFsysRegion() }; } - // Fsys resides in the NVRAM at either base: 20000h, or 22000h. internal static readonly byte[] FSYS_SIG = { 0x46, 0x73, 0x79, 0x73, From 22e0ec1676f3fec5786839c1068feb4cb1bd3d27 Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Mon, 7 Aug 2023 03:01:16 +0100 Subject: [PATCH 6/8] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6581ab1..b4750d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ ## Version 1.0.3 #### New: -- Updated the firmware parser with a new feature that attempts to force find the Fsys Store if it was not initially located within the NVRAM on the first pass. +- Updated the firmware parser with a new feature that attempts to force find the Fsys Store if it was not initially located within the NVRAM on the first pass. This change makes the application more reliable at extracting Fsys data from corrupt firmware. #### Enhancements: - Implemented a visual colour change in the presentation of NVRAM store labels in the main window. The manual has been updated to reflect this change. @@ -26,7 +26,7 @@ - User interface improvements. #### Bugs: -- Fixed an scenario where dragging and dropping a file onto the application executable would result in a crash when "Create a Debug Log" was clicked. This issue was resolved by dynamically constructing the file path when necessary. +- Fixed a scenario that caused a crash when dragging and dropping a file onto the application executable and subsequently clicking "Create a Debug Log." This issue was caused by a malformed file path in specific scenarios, and was resolved by dynamically constructing the executable file path when necessary. ## Version 1.0.2 From 53ea6b09376a94545a9cb13c46562d70416b9a2a Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Mon, 7 Aug 2023 19:01:08 +0100 Subject: [PATCH 7/8] Update MANUAL.md. --- MANUAL.md | 9 +++++++-- files/manual/apfsdxe.png | Bin 1307 -> 1323 bytes files/manual/apfslzma.png | Bin 1535 -> 1550 bytes files/manual/apfsno.png | Bin 1562 -> 1583 bytes files/manual/boardid.png | Bin 1728 -> 1567 bytes files/manual/crc.png | Bin 1037 -> 1042 bytes files/manual/created.png | Bin 1310 -> 1319 bytes files/manual/efiversion.png | Bin 1279 -> 1286 bytes files/manual/efiversionalt.png | Bin 1499 -> 1496 bytes files/manual/filesize.png | Bin 1279 -> 1302 bytes files/manual/filesizeinvalid.png | Bin 1494 -> 1523 bytes files/manual/fit.png | Bin 1088 -> 1099 bytes files/manual/fsys.png | Bin 1689 -> 1828 bytes files/manual/fsys_forced.png | Bin 0 -> 1906 bytes files/manual/fsysinvalid.png | Bin 1684 -> 1747 bytes files/manual/hwc.png | Bin 792 -> 798 bytes files/manual/intelme.png | Bin 1410 -> 1428 bytes files/manual/modified.png | Bin 1381 -> 1403 bytes files/manual/opencopymenu.png | Bin 1329 -> 0 bytes files/manual/openeditor.png | Bin 1406 -> 0 bytes files/manual/serial.png | Bin 1502 -> 1510 bytes files/manual/son.png | Bin 1041 -> 1046 bytes 22 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 files/manual/fsys_forced.png delete mode 100644 files/manual/opencopymenu.png delete mode 100644 files/manual/openeditor.png diff --git a/MANUAL.md b/MANUAL.md index adb6d1d..53fb4d2 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -111,7 +111,7 @@ This section displays the name of the loaded file and includes two buttons. Clic The file size of the loaded file is measured in bytes. If the file size is invalid, the label will appear red, and any discrepancy in bytes will be calculated and displayed. -> 🛈 8,388,615 (>7) would indicate the given file is 7 bytes too large. +> 🛈 8,388,615 (>7) would indicate the given firmware is 7 bytes too large. --- @@ -183,8 +183,13 @@ The Hardware Configuration Code (HWC) is located in the Fsys store and is derive + + + + +This section includes the checksum of the Fsys store and two buttons. If the CRC32 of the Fsys store is valid, the label will appear green and display the valid checksum. If the CRC32 is invalid, the label will appear red and display the invalid checksum. The presence of `[F]` appended to the checksum indicates the Fsys Store was force found by the application, and the firmware may be corrupt. -This section includes the checksum of the Fsys store and two buttons. If the CRC32 of the Fsys store is valid, the label will appear green and display the valid checksum. If the CRC32 is invalid, the label will appear red and display the invalid checksum. Clicking the "Wrench" button, which is enabled when the Fsys store checksum is invalid, will prompt a "Save As" dialog to export the binary file with a repaired Fsys CRC32 checksum. The "Save" button allows exporting of the 2048-byte (0x800h) Fsys store. +Clicking the "Wrench" button, which is enabled when the Fsys store checksum is invalid, will prompt a "Save As" dialog to export the binary file with a repaired Fsys CRC32 checksum. The "Save" button allows exporting of the 2048-byte (0x800h) Fsys store. --- diff --git a/files/manual/apfsdxe.png b/files/manual/apfsdxe.png index 122abd6557ef6754bd2cbee96f6f29d1d69dcdc9..ceee072cb7509956f9223a02ec549d22a4e139bc 100644 GIT binary patch delta 1166 zcmV;91abSD3abi`R!+c4L_t(|UhSGYZsRZzhW9S3W26>fz?TT%%9XERq;u(BoeS5l z(#IEYZr~f_2HD~8p&>=eRGuU6|3Sb;e2ka{{?8PhKYxJ&+O~ZFk)}X@X|iY*`{(Q1 z>-Dl-G_HwR9jURuo{yWhaRb`jMRu9q-ICgyX1O|ExEf!_eV8IK!*-|VvmbU&AN@(F z{+5cLGfyAs`f^5O@$~Zk{_^B*n8(BQ{d#z`KSXdVV`c^7>5@=#^_B3m|J9Rl(gkj`} z?nq-!9sRKWzhu$7!O`2J5J(QMXn#7$+zY6ZA2uk(E)Y%TUaUecs;~^x9vKJBoC&gU z;h}gBBE+&dt$d4f2X6taERyYj-JvAL8DcjqH-~+O8OTEFp(dq&a>N)>mUE>{TV5CO zBXV;s!bV{JOp%38_%Q#8ESmL+LTL{=7mgxxjBFegak3|Srd)n>7DA?HZDc+=V_%=Ervv+dJ9bxI-&yItzm z%XYznu>Tc5BMZ)>Ngc&hgs+rR)1DkU3`k;}FXbQW;rna+l2e*%iIoIqO|2~4=X?~f z8eEOd9>=#9=L8l0~LYiDbcz$@QbM$i=jfZ~=v#$c#xtoG)cs zlju*}Szv2_aYxk3BGrMt{DA`Z+HXV5KHoN4N}uhLL_L;~a}C$UFAlBI4L$u<@;@+T zAPas65m#)t&rl(YOeRND>PZ9dsM=Y?8w+2_{3{2KEra?p4+pcPN*3-NpU0PxI0?*|I$3bilBme-z*Je7?43{DZcpCXx~~{A(_KXAqQT4i$b--yDW-^~rY88!ft_5+7(^5Q5w4`N> zNW5%+(zyca!p7omsFFqauyyy0{IH!aiw(t|6YCRL*m}@NpKTuLzdiAXqnB=%d8Y{9 zamu69sZ*pZ+-<*-i~TFr-gN)X3uN`Q|KRTXAPV7Ap81S=jBt_xNHGxDNtz2eMGXZ^;6HdhSXV^97N|9v>gb gLIsco(9XldKg~G(1DP0A761SM07*qoM6N<$g0Kun1^@s6 delta 1143 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 diff --git a/files/manual/apfsno.png b/files/manual/apfsno.png index 492780969266a02ee5d06cd3ccc74529c893315c..90f52b466d291e76d83f1345dfd0dc37c2a127f3 100644 GIT binary patch delta 1515 zcmai!X;9J$0L8V$BTY*2kGU<1Whx<|co&%mt5|uWf?I~BkZELC>86GEedSt;sd;3W z=CQ&y-j)ZYBIdE>5nh;umF{?k=hp7Wot=GO--kEzoA+L>LbXDMJEH?{V@U}0`jV?p zA2Z(?pB|UDtvd!;M_XdOx;1srrLk2$dXCF0-orzttn0JOc46d8?(mT1&v|WS>X>8% znvI@&`H#)`AAg-m0eXGb=;Dvx)ZQHwt;J03%6 zrw@0c4nm({Tk@=i@!&0cjUDOChXy6kT$;lOvIUFX++I`nLOH6J?G*MiBlImV4!>`juyWN&j=TOb&`+k>cuaVb3g|1G z@L@#c2w~gA-T`Dx=*jIM@cf5`>xm5TZRn(@5F;>(v?D@0aJTeI+g2e4!FE+vWe9CP z6GVpUtDD`I_6)Yp9!%3u9^l9ieFWd=y{M< z@&Sdgy$gd#3GHa&6W`hCdRW;Lwsh2pElt)Ij*)3YIj(ivhdN|yi^?(?6{kUpMZG>c zUusBMto%m3X?|alE@eNYVD17F$2O08wWU-@1}wk<4g7w?Pq!Io8mGgQ)f#>^;cy?L zmxoZ@$jN~#305gPI5b{enXz%>jEOw_h8CuB;N65oD-Z0<<3*xbCiS7-FA^PpIVrd> zj5?KCS_qel_J5g!^Ja`?eh;hUvq(YFuW~_?9(&L6_RO2=_Uxuz0n!iC zvkbd_n3eX4+e&+T(`n;->L%U4^;RJC(!Oo?rXmu$RF0_v(J7$AA4SP8`_0;DEqz5% zs~ciQJBf1F64ItPLSFIJ(L?i_PgMhevMrIc ztWgMg>Uf%2Q9=nz`Kad~r=T>TTiupc!VOL(nc~sxpfC|n@f@P&Q1h=}>YPMZASsOwP2tMn?Hb1t(^C097R$ z_DYOa7WzG#aH4An)rPEbxo2W5zZ#BV%84cIBb{LgYC6K6X_h}1jv!pjUiyi$KVE}& z2^jHT697MxvifgMo;G!Q?!IHxQMq)xl(it>JHHX?<^?z@(++x4P0;HZi`5@9b3pT! z#JlsWYE>uLDiXFY?V364YtfCY9ku3U_PZC5_`Yh2Zp_rgj|_Om3yx@E zy3(9#@b{*;Oc3HMKK7W*k{^32KsF58~jF=o^{&li@XN68b zdpfV^;i}R3I#LIk7vUvRG@6)=7;H96HV6h|o9V7*^=czOs!{<>jBN!9lQgL67%SOU zvrNpqF6*nKH(uc|#-MNeJA5A3I@q+t_Q@i3Wb2(jwCQ(TfPAA7MhJ8w_YLgUjDDtX z5RR3LFZr-#%w{D_n2P&FL#TJikF^iFMs~92cBsIgDK~KoASGtKR>TE__E|6Vx*$iv zQZkm8N4Q~j-h0B-MzfwrIKYG_L~;z35p5!A7B=)7+hJc!a!6$6+VSE*AkKL=1#lx% xyob`6IF%fd>dKNWvvZ^K->3N>pLzMi{JaJF@msc|^D#i;oA5XXn<^`E)L+!O;~fA1 delta 1494 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 GxBmt$Jkrnr delta 1662 zcmai!eLT~N1IIVCk~vnGY|am5$8AaL#gT{QVGK7#W2cd3?hau?9@gsXq>*($VeDe4 zWXZBKou{yQ+9aKhC`$8C(mag0@{s8IhtS)6167r(R6e7ZxxsQ-HR=M z$dwRh`{UblJl3K@(F#|oR0=Hdl-yq|D-x6oOJo(0-Dfrhy4%TD^b{Q zLOc(S?EXRJHkO%~j(r&eXLPZ;r6Zp@A9i+5pO7WGQk;P=n zjZ-vX#uf|Q-ke9~s$MNz6kxDhRC8AOgl*~xyo@By=)%sy79X*`C7J5b-(&Yviy4(1 zn*y`colcvVS{v#c79xW1$**7LGm@Xx_hT}`&VsgSn^lTC(4g*SRO{X5esI~u(L0q0*m$R5W<+0Pn^j==I=`FE`hf3if zxPVJz^9u6H9xLoofOitOwM%7Ce~lWVQMv{IP@ zgdpGB1ipVA80KBN3VWcD2%@AA1_}txG&RKvg-2ijB)$4!lSA) z^Pp-k2#a>IbXc)$4~sXeZW4~B6&9f1CZ4MZDg4d-FH56eJEXS)(C=;x^G|Rt?};=( zlCjYzzc2d6FBqjIDuFD_7!2LD)S_6iMxm<*J94!FNWl4{&DqF@M3WS|01&0ky}Naga$7pRz33^!W!Z zI%U-SSj;C&T~IQV6nq7o6jly7Tca@wo!fY1qt9q)iz0@&AIesm)(wxDTZZZKYpmAi zg#b5cuHk7*3w}&NV;;GHuW&2=@?V2mNeK@>B-VH7i~k_>zG5BILdC*s z9Wz}Lyj$N0pVj|83aSl7?uxhY&iwr*AjhorGC1Vhs;b!(jFEJ`)Mv0=xkcUFfpTHv z?)@C9&crrs70q~7RC2R$9|7c$c_7D&V7-OxHbgmv6h0Q5LQ|s$tx1Ik35i|1YUCTX z-|0B#H(elThunaYa>1*g(fagi41U)H7bks;Au{3Wz|qY;FZ1Dd{m1HG12`wGqzgU~ zWWMHCsHc&VRhr%#EAchc13enfkx#o2zJ`Wus#6mH^`%OuV(sr^9b1m9)c2Xd zg7e&R-sgC2WR>21?c4U8l|}B@X9%~IkkfF>BI@Bk=PH+>zsF<+*o+GaGc>00&|Rx0 z_c?yx4dclm5^TgNs}27t)#BXP7%p53&AboxuNgob8j5t?+vk=ME~a1PMvLiu82#S` f{_p-COlN-7^Y8^t`bUb6fxd*`Mf4Q8M`Zp3qJAT` diff --git a/files/manual/crc.png b/files/manual/crc.png index 71ad936a6b5e235bb9b1190fd09e94093bf0d23b..ec8997ca961b372f87ed81a4af2971c81467485a 100644 GIT binary patch delta 893 zcmV-@1A_dG2$BepR!*l$L_t(|UhSGavf3~dMzfdamTh>38ERJGii)0!mXaQ7*RCij z*Z^6<%MP-G9=ju*qTBWwYQt$VoUC)!^#XM+RgFg1}9U^m)CxZO|vpf38b z@v^w@H`{Kr-S>Ajrr*}9sH^LL$q`gy)nFQ%W_wbOIQpqB%p)`Au`Ke$D@-a`-|p&f zeDdScVu|Xoq1I!fA!ep%DmBR8#}!c*mUD?ttY*F)-(hi4mqjUis=f5gR{5qH`^Qr*iAVBrm8sZ0?=Jm+!{DWvBn$Jv z_v-~tA`71IN)^YhCQ2G|Q<=|RNi*Y1vPjcAMlz;cl72@%GHuCa;VlGN%#vxc*bIKB zkl~7}GgENbO3Z>0qCHaAPP^E;rGFim? zm9#igShXve2)rnNYh|HQ-RfcCbhEm$pu#pRMrc^rhS)X5*m7g8OqK=9Y$f@Dcu=K; zy8dKkVf^53^I|Xqrpbcs2oks~=vJR-+K^YOICchikm*bjRw(a(z!S3YK~x_eKC^+MRZ}W4h*?p9&w)@+_U(GPThB()#_blACdi!5P z*5|8Bu?{=Svi&-*N7DTgj?_BBYqR%pO zS=hjbZAGcdH-a6aBQAcaJMqYZnU=*c z@fw>-GIxCV8=rjMnrzV%F4U%mmDrWoQo6|B^A0uzmcm?Fl#ThQABnEjL0h_8Tj_4o zU4-pLZ!w%-c7@q@7|hDuWeuB)yev}L)8nbnY@Kh_<9>M3ExeM}WtJlMbUO79gSTd; zEcAZ|KG`o&B3aOcXSyh6H<8j%zm)ymD`{bTNfvQ>$B1guE%DzNR>mVkS$GRU7K>z_ zEUK2A6e6rF>@h^0Db(4)9W=6Co?Us?E%reMgY7t0FAI+kVLJE(UX*E}S=S8n9yhZJ zJ_%VYl3B7Sbe{9F=&!CV``Bl@6lUL{FC~8(Hx$^~*>Jj9HWSY*0y>l~hneIDcu}TB zO$}th&ns~=Q&@H?S_r%;e`{xHcH$~W?tbrF~;e)7unf!mq z<_XWV#3~qiB`*uMcsvCb!ORDo?ySK+{~b&gTo9Qq3Y7(4Z8dylXJH~amB}dKnHE(^ zJTemZIkIr~Bi-QrnJEkZfv=xRjJ;0pLFYS%?6#0P=w>L;zU;`9KyTfGmJ~APW&d7C=6bg$N)EARm+80}~mf b^YQT;w(H|M8B{{Q00000NkvXXu0mjfZIG^h diff --git a/files/manual/created.png b/files/manual/created.png index 6681bc9de24c0b86c06f464b98eb313b57903ce2..45bad5320ba4db9f83e2e3ba12c4ce8082eca2f6 100644 GIT binary patch delta 1249 zcmai!|2xwO0LNX$e78%ZFY@^ExGOD(nk{3k*($8f2^(7%yQb#L?b0`z?t?K*N{zc2 zTVhE(mv%eZLbJ_uorR(&Wuy@&rsYbe;ravaxqJQeem&3o=aoK67nAv& zL4dq8?r+ce=r{8{KHUTD7m(8wBUgC{d)`k+i_cb|DRo(+O^HMiMw zH2j*z^mi7R7kg#gq2F=9<^VtC>uasnDH>WDp}$DY$Wd3Pi3S?d0RXvoXd!Za$;WXY z?cv{SYCy>>Z~UiP3Zl*DSYoP$6Ohznj7O|Kmt-b4>BAiI)p$&OFsiJCXx#B&ciE=8JWZgMx92h2^**(6e&HGVV*V4I_PEkRnbUNm)Flo4^dTfPY1%JgrRw&nt;?DbkZ1H>a2QB~=!xo}sMu9}TMjp}kMakdM2X@H0xPUw2;yv0JT1@`R|pF!Tc{=?43 z3n}gKeMIv<`z#gIA49@Xe!*3ce-AZ_h+Ld*HZ6|jy)H=^O|?oZKZ+GkQDsOQCLHLY zays7=>eB*qzh!!`3##VJg}r6ZqL#qRq(Qf_SsQxnL)Z~rbyy{s-Ixc?Svm|YJ>C)D zRez>e^GcwIm%rT(Kfyw5lO(E6I%rNQU@%(J&Gf*_(zDxGb?pmi$3}`ZvhoY_&}RGo z)P|=;po|4KBbV@8`X^|u)DedP*6AkaC=lf)SDcVMp?G5{CJ*7T8T^*K$c(Mp3^n=5 zHmD1Bu~xHY)t+M4{fW;Y63*YI+}V1(6E-G$FPH}*kXCecSBTWnDnyIM#X3LksmWju zFvA4y3-$TY(2ex)whl7(7)@C~VNpf0&}Z}_oCXT>dw1OFE0h7~qx%{VYn>}Y;SNm~ zo@{WwZ#rdj5EPUY8yib###fLxW;+d&*!opygk)od#(+IrwXFOhG+45DdYHFT$GM!r z@|qgBJJY(;)qS>OmrCAa)NiTo&y~JaFqp;!W$#DTr9dMLEmrUlCs(rFxy5t%?#L;; zn^%?!{6}01fZU%N*ncB>hYKeeBG3gH&iti6z@2q<-;6vzdeK(q@W2XevK-EVxbXHcCR0)32)jdUJWH&dmapZ$D5B>ZIrB&r8t-}i~R_0 zUMKjyg}?f?+{p+^L(yb2rVwfgKd=Hz&PgjZv`Hi zZ``5h)%&JNc=JK4%RFa|Q!FedcR^s9{^$}RX%=GxDJYrJJktyG3FiT&zPyh7kD46 zLK@TV*J#iKa2P~cIh}>P$tE4ADp=37kTQd`Qq?^u=@EkOG7T%N{z+r)tjpv^g(>&$ zFW1g0_i>(av8)3{WPd$F4sh0=CpdCx55%wmx}!K+dEd9Aq>f!@-JJFqO?08Ixe5<% z7fs0}o5yOc|EwKR?%k-_FMo}`j<42p2t}Tl=q(J)zTw?`l7UI9C85b4DHlwUs`J`xtx*wcxy0HT6Et(t`=H={;RFr)*G{8zTA36h*nU5FQIzAQuM zkG>TOcy~fV3)S_vA)=h zA%<0B=?K16!?wRYC6T~5StWWR+1-^3LeIjO?4}_{>+DBYN!J(5OQzLWp?1oG!Q*n@N$kd z)B{z=wkVdev(p?(xps2~V|t=o7L|mnV&~r|yb@4Fgta8?@T=MIS#F0?WYjD9JHwW? z=^j%1@6PQs<-%w|Cdt2pErkfN?GL1ygt4ealX&2>qX~L=7bm$gvqKB`T)1Ec56F;S zuA*m&gYCWFKBer>v;1omdehvlY{VBNw#J5fg$;YY)?Dt3z{MTdM%ZfS?K9(5|3-V9 zI2O6rCH(Q*en-h5rnJy6ad?@aI?W>W0eNmK(oJyDCmvRrF8~8sz&mzd;(OcxE9-Qs z`FLQ&L>!Gf>N)C+Jhattq-1U#7=#D7hEJ5wk58sd6nsq6+ur(ihFq}&u@p=#i&SMH z4>Mao^+I~epiy^wH=})4jO@Zg;}$vHNAfv=EgKwX5YP9lJUZJ-{c+R9XuQtwTxKk!XqH|VduAsR4J*zAfAzf?8wPTF-^iUg`ZAeCuhKQvYBacx+mH3BxY|2FxHl5!~Zfdwq z9384Cl*^XA61{wO(mS8Kbqjl$VG%%_&PVFr9OK??3AaS}>xN|R-J8D{KViqJhcxn{M4|l)62iNNcWHAUJ3y_3XvY^q* z7qPOK@17r?_&BYm8C}oUC;$5MVLi*T+3NoJ;eL~6s>Y!gv5k%_TW+Z_D2}J@aUY0S zS==07ULJ3+?SD*93ywGTqNcpV$}12H#x`ExK8go6H})?8jkJ{ojd)+QlErDYSk8-K zlBs2J+OEs%^J!L>-fXcqHnDS!(ampTRF=8+d;2#ciPBx6=2KPR$s$mR+q{H7m00;5 zIe#Y$FGw;~1YPo#phZz!@Fs@31?AeR)$equXP%dZ*Vw-R#L-z6LwsjJxLpH3gA^gB zGYA{HJ$y8+PlpI4n!p01lZ6g@h)t5dD^leL+0?Kk)-Na<<(%Q)YHaLZ0OIH-iy?ju zF%)UuAws?*L`bw#5p{tL=(tlPK z@ur~B^#y0K)$b+?`}^N-R9)r^g}&uJc}iK>UNuaOcpOdLA%)i23LlM17Lp>sDtZOH zKFlCnP*Zj~8B{c?D)Fnov9U`5Xh|zsT(mI-jaXTLS0!2&0Gy+pEbzZhKO&F?NJ1-F zv>lMeAb>1D5+IB516hD1Ko;W%vN-@rfGoxjWC4-@S&SdZ0we*l7(b8&NCIRrejp2w egjbZs9KAnIbaCv$8 z1%S?o|45(D&R=Oj7QFzn07ZZ-h7V)`iU3&*AIJg}0kRlAkbeaz0%S3KAPZ0g$YS_F z7N7`_#qfbFKoPQJaeDUkBDi>DKo-3KvH(TMlEuaM+uwJ$--7FP1G4A^kOe40mMp}` z@PAqz1QeUT-LZJ0(Si{P+O_kUF%9wMkRw(@^PiY#P?_WM1{ zHpdH_&6+#o1Pi)iVJlj6iKn2(#_k0miFUFOBgGeQEQ{btWW3r5eQf45nM{{kIh8`$ zRyAttg}x;}!)Rv8J_Omas{OwD7tPhJ_i|RVEGXHO(wY?6JGxZk z&Me`Aet)GKV23ca;R->_y zf~Xglob6QoZnF~4M2n4FzmgFx`@9n-5|2yHt)9!G3X@1tToz8e*rXQPHTalV6xzmCf(2hVLDbHgKZb6gdJY|PZg~EZXA<^ z6MrN>RRVFzRRW2^TyQ3ex&{5UWvkm+A@@8k3#YMr0Z5~@Ec*D)LSjx0{29cATs(uY zL3d(XPsBrn6isM>p~-^69-@;(cfC}(K~^;^iS-NmjsBeB-fC>@UI5Z)CyRdm8lq5l zw`*P#JU&#^N1BcpvW0CIe+*IWA5j(_B7a3T`0+^jS3OyH@CBX4sjn`u-X4vO-3vex zEo6~s3NczghRjDKh*q-D-}YkImlUc+T%i|})7ffmUN`!Yo^9n19OB%ul!pjf!P$=L zofn*Dmm{+1{jVV!7OGka$Rt-;lU1rLUhkw-cIp|cjx@?bp615JmIWY_Tv?=>LVt|5 zFF4Inznv`f_rKpb(LY|$t?DOFUlzJo4pZZ8XCG3;I&05IgOY`h39yWwf!Bu_WD63u zvywriQC4|h{f&)n3P2`VvN+8#g&3)_0Iy22EC4u0o-FWJrymi>0u&)j7P$km=mn4k zC<0_Ld>{)@1ju6eKo+0~kj3zUEHXe5AdBGxS%4xy7Q+X!07ZZ-h7V)`itviEI6MCb XQOcnV`&u1900000NkvXXu0mjfD2Fu# diff --git a/files/manual/efiversionalt.png b/files/manual/efiversionalt.png index b84d00cc0b12bb4c9fc21264c4a56426db722a81..8cd75c401f5cc4262a85e64049ab8ae96ffe13ab 100644 GIT binary patch delta 1428 zcmai!c`(}v6vs)hyHYDug4)(uw2eAi6*MBmUBRMKtdJH(ix9_}%8$|CFDIGyDE{f4uL!H=pm!o9{5>4TNH0G>7;h zirl=pHQF#pxT+sw!A0b73y_25Z2EA$4Kbp-l>gAPF+@`0*6?gMUgId7XTP_xH(B}2 zG@Y#{P?(bDZ)Y_O;ART*P6RIgAc63xpEP(}i({Is9t)tBq^0j-x3)J|+XyG;rp+-U z4qpA2e&m=XNWG4a!T=w54vo#{^W&HsvF>Im6^A4Ob&gafMi9+EV;~F_0C@|X3DnT5oEOOl}Xlg#N`p{p9+{1P;rPSbM zrVRQ3#6~2GIjvA%*7{PK?W0m%?9h@ch`O!F(-E`0Uo(E9A1uiFYOFRwEFM z$G3CmwTPxxFv&k(_-(5z1>BCaRE(>(egupBb(41j`vol6fE^ zl)NBf!XYHpsz_*^K5c!J7!}A@ijiOeNckg)x(8H#xr7+D^SldH&S-SWT@rO?r=zk| zACnlPr5*T@>0w-pp~i4P#Y6Ct{CkO^&-je3QRCLb)74HxX$E=K@%G4c;izKJ zpL6HCBf{i}*?5_c^{CwC{3pj{b3U6j2QDcu&N{#7%9Iy4S3G7da~1`HC6drZC*veh7bIBi{JK6F9(2y|BG z!`zSv6xrs1=c!yRp+mFMu_GvJTYJD^^_9T#hVU6OG~VloJPYTSiq{EnYw$gwe?{5X8 delta 1431 zcmV;I1!(%%3)>5jR)26wL_t(|UhSK|ZX!t##_uhhom1<=jggQR$xq-*362PDx(NXx zDZz#491<@Xm!Xwk069KswaLYP17B73zp9#Un3)@|p|^f&Y3b_fs>b5`m>IOc+!zG(8 z7RDf$S=5i2g)s3;A|e#D8hCSR7toU%x#*_$h-{4huJVc>D&l2;V??5x&AUg*pse&4h_mQywiF zS7!tC`(a1aOT>wH2Xs12#dI|b814O{lUW>>v-va(r%W=7<7SoOQ}lv@dS|=fCJARZ zo0*^X!nd3H>GjdVEHa;V&<`NYA}X7-6=zT(Zl@JD<9|tV1CtqxB{17p6dO;)MIl!{ zg%*eS8ka;aAu5R4C!2;zzG!vyFbfzh{i2gu?3!wHX3@AXqZV6@jr9)jg^L%PBRLJ8~zekA7wWqm5tu zV6$l4iGPgOd$5n~oF6xEK^`F`AQ{Y6kpi`$># zJDR(t_wuasX7RYtANEGHDW_-<{B_ckRGH2~bcRO@FQk>?C8-w5H_rhS-(9h(T*#lG zHhP-{jI)06qs>CyiST<6=OdfhWHct}hO!iA)qlLdtVd%o1;~exXy@|x+cn%1Ew@-d znh}+K*@F|o?UGo!e6x7KPdn343I+)XIYh}2Nm@uq)cTQokY{pLzfd~aRm=J(}Z26a|uZ~;Ve$2o^oK>W{MOX zlN(DHA}qz_+5G8PWbqg>OEqK#+Rxryt|^9N4sD3Xsg|y0(cURw^nJh?F7^AFh5!E7 z8z=t93tEald1|xpdvSyu)h^wnK%I^9qiZ({oJr9LJup(1su1BjSat&SCV!iyGNeU9 zZq3H^*>pRxo_es3xEb7P1!WaZIi~2FMFb2WQqJGRQj6pE7 ls2?*6V-ViZEbc!12dqZfU=aBWmiPbw002ovPDHLkV1gptu@V3P diff --git a/files/manual/filesize.png b/files/manual/filesize.png index f74e33a8f818470bd6962196d0babf5259e2203b..585660309f87f59deb16daaefebfc0d62443da2f 100644 GIT binary patch delta 1232 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 XfvsF6nfA{R00000NkvXXu0mjferY-J diff --git a/files/manual/filesizeinvalid.png b/files/manual/filesizeinvalid.png index bccaf2a082dbb94f9a8189673c97ca906059bf1b..9f11c86a5f255058a0b37aa65c501a757ace8a2e 100644 GIT binary patch delta 1419 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 uO|2}zKc!9<089y!{{twI$qpFKY% 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 Ef~b;8v;Y7A delta 1622 zcmV-c2C4a^4w(&*R(~!@L_t(|UhSK|ODjth$6qf59*ZPJdcV{@?#2nsefHda?s zn8skMWiU;O*Q7`p(%d4prqedqSq1CY*jT^+;JtHZW_Qp0+9YmrSu^L$VcE=_nO%_Y zXV1*8f0S7T(AnA95i1PA-}gcug#h+)CXC4YuRIAU0^a*1IPju;lK zTw+*+BZdVlmlzh|h+)CXC5A;fVpyNH6FVoNWf8h9L2eiM#ar$&^jZK1KQ3x?C z!qMWe*gdF6rGK4@I8R8i4OK>^PSa>)!eVf8K6rtnqxZ5qee0gXaTTy=^k(lL|I&Ew zovOao=(IVWJty;z`wi6|gtB3A^6S3)Uzf!F)lbz0omU@m`^VLZYDDRyZZ1^w(Z$q} zZ(QR37oEvHsfW&#QaoaFlNda>0F9M36(qGAuxg!vd=b0gK)JdIXq2QXJB9!;S*M zqO(ds5Pu!_p{8(_D$OxKgkj-^MOHg40a9Ju5DEw=s3OIf3QGy~bI~C#Q9v*(loo^q zLLn+gwfN_LeOrNJPpn7MOd5rTMWZ!|*ABBzOM088iIU+J%LF4+lYqthxUGIFsd7Vw zm;_fVy>y=EaXVS9NUT6rB6=lXNb>6>zN@yprGG*J=u5Eh*-y7O6$jB6fQc3&7&3dwX|n#$dE|SSXYC8^>VF*$@!W znt(IY8X+ke>`Yz4>S$@Yx@o|Y1bG2)frSswDbrxJ0_&j8SZt%jh>2%NH#;P`hON`a zaeq7yPQEFykPrC>IO_JpT?1-wBF(*^6gS!>=nUCI;#~GsjCw&C+bTdL4kW_pIV$0l^Jl>{AAc5!Eg_`M5EiNBM2>LylCY3|HZGACCjKEr zSZPCv&xm$^s*u@EdC@8CH4`%-pYKmHzAv?lmI0-o4Cw0BzM z$4da(;?9%;W4}&@J+W=6z0Odz1B`96 zZco<>ViSQbAL8#U$j&0VH`zqcFQMVaGvwrI8qbf;C;Jg{Hf`|&Vpu47V4;0I@ikIF z_+bGccpKebCa`$<-LQ~PZ^;Gn7Bk+VAo<=*q2u=O6`da^^vOFB=o0P8tJCyD&)JYb z$ASguRJ}0~$?MEW#1Pf|W}Qi*UrSVC53SA{;R+Sh>Wo2uBPHRxU9t!qIny#lesN0Yt#4 U7jUMs_W%F@07*qoM6N<$f()wx{{R30 diff --git a/files/manual/fsys_forced.png b/files/manual/fsys_forced.png new file mode 100644 index 0000000000000000000000000000000000000000..3f1d36a86d09aa105835172d87923eab9c9f39ab GIT binary patch literal 1906 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 L@gUcc=-j^nEN%y3 diff --git a/files/manual/hwc.png b/files/manual/hwc.png index 62cdbdf1543f52ef4a8073f14a9483248075146e..edad44449e55e16aa3cfb6422239433716b95095 100644 GIT binary patch delta 677 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 delta 1313 zcmaKm{Xf$Q0LO)S?G>7=W=S+pJ&b1RG>ll=8eWG;rYkq&qC6zrtP@{(nmrV2S0~4W zMXFnURq}A>VZI*kGU@cd>J0PD%O-KOT>rrJ{^|36eSUebZ&qzC3<31le8}D>*x~cV z?g?XFMtLi!2AZ$lKBIBdO@G&GFh-&0(sfb~D4LSvS9Lqz?>^jZ%;J=oam;6wkdC7| z8!TKc7J7Xa&S{sJdq=cd?VwXiB(q!>X?XOAJ!-!b==9;M3jE)Fw4=f`V?&!%7K}9F zswQ~SF*kJHC^Frf*t~$6N_6lHh^8;3wTwzP_4mrX3+QpU4eReY1q^a6$CcQ(Yo0XT zrNkC(oT+Q0`fTsEq(}WxyAAic=L6I#o~^M3Sx3ep{S%BDU>r5b>*Ih-b^7Pi2BOLM z$?COG$Xc*6lLJeAKJ$dj#Glnv+oOj4W)i1VDY|DYhRk*r%e}?Mm>@TQ$!05#U$KZO zhI*IT;FfZ%LEqNqU~=Q}YYPxOoCNM}XnuRp*C8Rg>3>9~&nERCBHIR@ z4aA}CP}Rl)b^H=afWyst5M$>QEo6tA-(KeGq`OMF^$x$wE1+41H)6Eo4h zl%bG+U8j(SQ%UcolKaA>n7g5Zoa{p$8CQvZL~LvF%#DK-qIYd@4*E?^;WUm^9E%qc zy6u!2RhT@l`gshv_>U(bvmMJHr6EDudz$#uP5!L^L;5Pt^G`%RB~&%Zm=eKU;-fczc);*S(lo(~QS=n#OvUWGKE5Hyx=s^Aeo zwYyiGAN%y;#SuK%t-zo%ij=E$=2_f1J6ZHqQ~pV{*O#^tOEA-Bps~Lv!lb+W zm_QPk>@IPO-gP6F{lb5mzayy9{F_8|3T4g(emKEJVS|c@S(00m9Y|4XShPi?MH=DE z;rs6_fr2hB zJuj{FVkhQRY&Df4A@le>R5*9X(T|?-3#R;}x?6O@g=A>s(x$Ru&yBX!{g1DSE)R3c z9I0HGxU-C=oVM2%|A$A@B diff --git a/files/manual/opencopymenu.png b/files/manual/opencopymenu.png deleted file mode 100644 index 7909147870011beb8cd750e4b1d4aed0d51a081c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmV-11Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&1jb23K~z{r&6itF z8$l37y#p*Pgp4dA3kk6YgsAfpTi{=7Z>pJ^YgQ_Gb~(!g`Z@&SIFy_*=%-tdMbxt z*@87dKZOW0KbEkOsaXS(!c83nu#IRX=I{i0#OMTYoMKN-X7bY%Ii$z}hDt>E-Q#I= zf*kTYrsmcIdvc_xM$Scbx+Mp}-A0Fr_HuP%(}qe4HdonKN@1CEV5BGuORW*?0MQxw z!ZN2fad9>lz!_4Ujw-VWrR+f+*S=L{yxdNyN>wr zbpf5j-u+0od7t<=Vk7|06f%^)EVw1Woxr&Yi1VtmFH68@ zvex%m+d7LaC=mR=lo4{60(ygXhubU?I3}rZJH8CKF z!Jx?5+8$D7P&$a;QBvTT0Il4Wf+o2F^7Y4*70@tDl!$M%lV z<4M%EETkw4OOs3iVY%I{2fFor$#O6?NY|WRX9@b*XwDM7B?}Pt|7WX4iJ1KL%dB)O zP6Je}9|RwduTzyBzeIXQQ@v0=hv+UgckAJ1IyJwM+In_Vx{TnRZ+Rj2F$n%=SqS2G zl*Mb47XjQ${PgZ!TpU(-jO_uCbiU<5EPV`uzbY%bWvdXEWj#i>fP0N0epju-o-M$_ z#sWAt?jD=}oTV>_9-><&0X5IvdiY49>JN+DK1CNHayNElaRma7EY!%A#kfrJ$4vWS zvl{&4Q*$rzLpyWi0U=8SCqDLeWU(i!N-3~$GBiPurJp5{z1cDesCkz46tYa{Z72oE zjgP%=|CVoOYsFX1F069ITV_l7aRMdFfgEQn^I;O~*6VnAX13^4y%$b4T5eq@#E#}6 zo~IWC%7CFFI7Gy;O^zAya8N%if*vYDDq2oe(|>jwL{DFc{<`Iu^~;1@`0=V6Wne zxAoT+XDy}XV2~$SXnLD0pe9hf*>7Qihov3~&@Tr0q0Salg?xXBHE_~GXAa^L?yY%Z zp3-ap$Kp2+ghyESiir0`U{`>9Mfj5};5LJ_I*(kgbV}vE<~Yv|00000NkvXXu0mjfT4ixl diff --git a/files/manual/openeditor.png b/files/manual/openeditor.png deleted file mode 100644 index 35adc1698a2a24d0dba514c3356a283ce36fbb6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmV-^1%djBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&1rtd`K~z{r&6Z(K z8%Yp__XcZWS;!UwSs=t6B7+pgLag=>u@D>WH9`oGJ%;UY505#>++@G*uU#IEaTd`2 z@cYrcsd-)Xy1IMtZ+m-thlhv5;qdtQ7|wWldP)TT`wD6XgTem({$?B)@2voj$5#B{ z-~c@%ykyCFh>!#nLx6g4qY!}9Ebn$uM&^Ac4fGBL2%dSSkzfh|C%in#v#7SlC>rt zvo@j0+lF-DL2Gi5yWTb=HVar4$O+2h5t6kDP2M&{Z`fc>*eyK4!wo3vtTzr?@vy=u ziHHOg^`@bnLc2qSy_(a%eB{d2rL|{gXK>ogbu(^P035_zHFg({0R4Lmbv{q)diuH3 zfsY@S_43D`XJ_5+=trVg80vN>^Sb`|SE}dSaMOg2{RF_p|6%C)pR1FTV(4Ma$-~gk zx}M+kDS!s#2CX|J;jN8<1*+n9GAh$vjdq7{jagTQ zUtG%x_Ri18&R7Kcmf4$|+Q^D_~3+lHLr3V0o>A;=>b z(V^=5$9~_WM4|v3qJB8MOvn9U47WXz6Cy8F8yzCm+s_b&7Pq5rw>)nFXIx=hVj*`HW2f`sYdY9dW=yAFL!Z)RY~yP~ro#|` z02Ls|uV+=oX-!8u8wyRbv$7%q#Sm95A$=pvlhS2u1V3HGC(}5KHHH14As)RT}q3^!qpS{F%vLp+~O0jpQvFuXI^sUU9$wkz0newPj|G z{4wU53B?ds&hLlQ9EniOIMlsHvRNu~j`7;!5hgO(hukt8ZQA65En&!*Ylbeg`%D+*s=Cw_il#kt#Z$|=hD<}(Dk6LxPl$;T*; zRP)gA15HJizYWO{E8qqJIQJ#KEB^ZhYS!a*`hj}W@54XwBcr;%91bxAT|Qo-!H~Zx z?X=$oMmg|zH%d#u^R6T$Ls;PjfHM=sRY%>lBGjvqyBG*El_h;PL_!>Bg3&L9dM3VL zs99J;u7rOk6DBAr@}(dU;qFB M07*qoM6N<$g0l3D`2YX_ diff --git a/files/manual/serial.png b/files/manual/serial.png index b7cd9dda3f7d7890f1522278b9db3a2621b9f3b5..9de69ab4c8959de34b25cd76024608c04a07edb6 100644 GIT binary patch delta 1442 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 ayjaPRQ%~-jS~qs@+nb}Ei)|GuFzFvN9>3NA diff --git a/files/manual/son.png b/files/manual/son.png index a4f1d77173ac4412e0b6cc291f8758bac2c2dd00..af29d03139c2d2107c661f81ffe52dc990449651 100644 GIT binary patch delta 884 zcmV-)1B?8T2$l$tR!^%*L_t(|UhSGaj^aQNM)xl3V-QdT>KO{!|s(qy->(%jQ=R=F}=3qXQ%ED%n9C7K}j;^a#MrrupDT~{8 z+ssfF8Cy`S2`-CljgPkK6N-J_fB7^o=lA*MU{;jM!UQ!+>GGg<8D%MbpDeDYxX(;v zp`_r0Yf)i-CJR*)9*akwV2h-H4Iv9qB#SXGnDlP-VMO2e+kLOkDJsn7*kbkqbY|hQ zP)oLwjupM>kZoe-4fb_S^ur{wh&q#5x{W!rP?`DxE{9ia^*Nr);jR z%0cG6i7cX*8dd3~pD&A*N;=DHn0zD)J?kpiErZXdHVJF_=3q_~$%2QIGmwSNyjqGk zBm5X*mQMRGyTpb`lLWsSe|2NB818@`H|(;b33T=Oy<)v z2kQ=5fHGOwZGW_%w;Kd!kW?1QS;PGQZ)7o|9%7O#Tu*%&S>%r)qYdRyDhm_eb29#v zES@w6Gowfrgw3J)cBuc(;-bGDvK*$euzn$5Y}U=8)%R8weo23Z)T{Qp<0M%SR#;3B zx+eO-X@vC)K5&KsYdbYO%d@U_1*+JV?2e&Q)nr5vPv@G0c~L40qFTD&FQ_a0R?;xc zIn_HyT{)EKo&qci^YEpgRRu`|5&#G0000< KMNUMnLSTZ@vbVzk delta 881 zcmV-%1CIQb2$2YoR#c`*L_t(|UhSGOj_NQFhTkpr4toZq6p=Uqb(&N;0tF>42Z%(O zJ{=_m7eMa>RfS#1pxm6)Q+;KJzoF{rqffhqoiH@5n(P`odQWc4 zVtu?^E?@hV9WrR;xMl;7n`ZO82dfTSul8Sd-nSTU4(3C?EGU!85vRWG)O99h38Ks8}nwERr=tv~_FzaKB z*$b#MODK!7vX$ys(VGs6R1=T=xH|eWkt|qeWtOgSXO>2Pfz$30TfL6^veBM!(vqDX2QVHvcB}ZCx%3v&4;a{Z_(a zWl?-Aw%S4N`vkHGKGdknF1@=fRyye{uYU5DENIqMuv-S7jcwxB(#^q~$dW}EPDU&X zn|V#V8DYl|S~_e?v%rUOlMsKl$`3V67FRo<+YRNABa0xgF4d7N7(Vm5CZ1Ec^1uO9 z8#XkfvF2btJa=co4h~n3_ySsrE+z}sBqT___X3l})rXF1P8fNz@Hc}aB3T5%*974Y z1_Lz99`sr`u6@f?b1*L+e`jH{JyjNT24PoJlOm9X9jZPvl7(}F`VoIl5Q#kN;B!0Z z@XOKAO(OJX%{x=09>QPLRh3iR|>6Si*j5d@*t}IM^ zkJ0#5vbfV6%#2J~xE$(thrRwkixa&&WI4QwrSXgMMN`$gmhN4FTcX#Hv})fwPLzcc z783;31TQ$9u-^U!rypmqQ^UPHQ?)D5#kOR<_m#RPA%bu^)f~)=Y*{D@_xA;T@xMxH z5;-p#=ZLd9ERZ0Ef->1^vMih(*lvRVo9Ve_Tbutx7JB4&0U5vib?6<#I(fsvp5pWV zQxuQ|m?8`CGH%NP011(~DJBD1hybzx@_{Tw09gR(e184|Q=djhdZNQ300000NkvXX Hu0mjfQU0F> From c85fc6cc47e9c194bfc84cc931f9e2f82b5c8182 Mon Sep 17 00:00:00 2001 From: David R <114369357+MuertoGB@users.noreply.github.com> Date: Mon, 7 Aug 2023 20:28:21 +0100 Subject: [PATCH 8/8] Fix typo. Release ready. --- README.md | 2 +- files/app/version.xml | 8 ++++---- mefit/Program.cs | 2 +- mefit/WinForms/mainWindow.cs | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3ed6454..553198d 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ This application provides support for most Mac BIOS/UEFI, with the exception of | Version| Release Date| Latest | Channel | |--------|-------------|--------|---------| -|[1.0.2](https://github.com/MuertoGB/MacEfiToolkit/releases/latest)| 18th July, 2023 | Yes | Stable | +|[1.0.3](https://github.com/MuertoGB/MacEfiToolkit/releases/latest)| 7th August, 2023 | Yes | Stable | > 📋 View the full changelog [here](CHANGELOG.md) diff --git a/files/app/version.xml b/files/app/version.xml index c3b06d7..0037570 100644 --- a/files/app/version.xml +++ b/files/app/version.xml @@ -1,10 +1,10 @@ - 1.0.2 - 1.0.2.230718.1355 - 18.07.2023 + 1.0.3 + 1.0.3.230807.2023 + 07.08.2023 Stable - e5c60bbfe544bab478110ff12c7d569c6aad7a0c3a7800035182732d7b15a9fa + 5804dc0b606f72a8c982d08be4610c51ba1ad6b4a9e7272c0d6c279f2e4333d0 \ No newline at end of file diff --git a/mefit/Program.cs b/mefit/Program.cs index 673f0c1..2ffddd8 100644 --- a/mefit/Program.cs +++ b/mefit/Program.cs @@ -33,7 +33,7 @@ internal struct METPath internal struct METVersion { - internal static readonly string Build = "230806.0340"; + internal static readonly string Build = "230807.2023"; internal static readonly string Channel = "Stable"; } diff --git a/mefit/WinForms/mainWindow.cs b/mefit/WinForms/mainWindow.cs index 7f0ec5d..cb66ffd 100644 --- a/mefit/WinForms/mainWindow.cs +++ b/mefit/WinForms/mainWindow.cs @@ -1000,7 +1000,7 @@ private void UpdateApfsCapableLabel() lblApfsCapable.ForeColor = Colours.WARNING_ORANGE; break; case ApfsCapable.Unknown: - lblApfsCapable.Text = "UNKOWN"; + lblApfsCapable.Text = "UNKNOWN"; lblApfsCapable.ForeColor = Colours.ERROR_RED; break; }