diff --git a/Program.cs b/Program.cs index d418d39..4831cc5 100644 --- a/Program.cs +++ b/Program.cs @@ -6,15 +6,15 @@ namespace RTFPad { static class Program { - /// - /// The main entry point for the application. - /// [STAThread] - static void Main() + static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new rtfPadForm()); + string startDoc = ""; + if (args.Length > 0) { startDoc = args[0]; } + if (startDoc == "") { Application.Run(new rtfPadForm()); } + else { Application.Run(new rtfPadForm(startDoc)); } } } } \ No newline at end of file diff --git a/RTFPad.csproj b/RTFPad.csproj index ee3fc7c..d3a440b 100644 --- a/RTFPad.csproj +++ b/RTFPad.csproj @@ -10,14 +10,30 @@ Properties RTFPad RTFPad - v2.0 + v4.0 512 + + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true x86 true full - false + true bin\Debug\ DEBUG;TRACE prompt @@ -33,7 +49,10 @@ 4 - icon.ico + RTFPad.ico + + + RTFPad.Program @@ -74,7 +93,16 @@ rtfPadForm.cs - + + aboutForm.cs + + + findForm.cs + + + ResXFileCodeGenerator + icons1.Designer.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -83,10 +111,15 @@ True Resources.resx + True + + replaceForm.cs + rtfPadForm.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -99,6 +132,14 @@ + + + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/app.config b/app.config new file mode 100644 index 0000000..fcd0c93 --- /dev/null +++ b/app.config @@ -0,0 +1,3 @@ + + + diff --git a/bin/Debug/RTFPad.exe b/bin/Debug/RTFPad.exe index a1f42ea..7e36a04 100644 Binary files a/bin/Debug/RTFPad.exe and b/bin/Debug/RTFPad.exe differ diff --git a/bin/Debug/RTFPad.pdb b/bin/Debug/RTFPad.pdb index f34f742..4ce43f3 100644 Binary files a/bin/Debug/RTFPad.pdb and b/bin/Debug/RTFPad.pdb differ diff --git a/findForm.Designer.cs b/findForm.Designer.cs index 0aa4937..ef1aa8b 100644 --- a/findForm.Designer.cs +++ b/findForm.Designer.cs @@ -36,34 +36,36 @@ private void InitializeComponent() this.radioButtonUp = new System.Windows.Forms.RadioButton(); this.buttonFind = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); + this.checkBoxWholeWord = new System.Windows.Forms.CheckBox(); this.findDirectionGroupBox.SuspendLayout(); this.SuspendLayout(); // // findLabel // this.findLabel.AutoSize = true; - this.findLabel.Location = new System.Drawing.Point(13, 24); + this.findLabel.Location = new System.Drawing.Point(20, 37); + this.findLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.findLabel.Name = "findLabel"; - this.findLabel.Size = new System.Drawing.Size(56, 13); + this.findLabel.Size = new System.Drawing.Size(82, 20); this.findLabel.TabIndex = 0; this.findLabel.Text = "Fi&nd what:"; // // textBoxFind // - this.textBoxFind.Location = new System.Drawing.Point(75, 21); + this.textBoxFind.Location = new System.Drawing.Point(112, 32); + this.textBoxFind.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.textBoxFind.Name = "textBoxFind"; - this.textBoxFind.Size = new System.Drawing.Size(200, 20); + this.textBoxFind.Size = new System.Drawing.Size(298, 26); this.textBoxFind.TabIndex = 1; this.textBoxFind.TextChanged += new System.EventHandler(this.findTextBox_TextChanged); // // checkBoxMatchCase // this.checkBoxMatchCase.AutoSize = true; - this.checkBoxMatchCase.Checked = true; - this.checkBoxMatchCase.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxMatchCase.Location = new System.Drawing.Point(16, 89); + this.checkBoxMatchCase.Location = new System.Drawing.Point(24, 132); + this.checkBoxMatchCase.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.checkBoxMatchCase.Name = "checkBoxMatchCase"; - this.checkBoxMatchCase.Size = new System.Drawing.Size(82, 17); + this.checkBoxMatchCase.Size = new System.Drawing.Size(117, 24); this.checkBoxMatchCase.TabIndex = 2; this.checkBoxMatchCase.Text = "Match &case"; this.checkBoxMatchCase.UseVisualStyleBackColor = true; @@ -72,9 +74,11 @@ private void InitializeComponent() // this.findDirectionGroupBox.Controls.Add(this.radioButtonDown); this.findDirectionGroupBox.Controls.Add(this.radioButtonUp); - this.findDirectionGroupBox.Location = new System.Drawing.Point(155, 56); + this.findDirectionGroupBox.Location = new System.Drawing.Point(212, 84); + this.findDirectionGroupBox.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.findDirectionGroupBox.Name = "findDirectionGroupBox"; - this.findDirectionGroupBox.Size = new System.Drawing.Size(120, 50); + this.findDirectionGroupBox.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.findDirectionGroupBox.Size = new System.Drawing.Size(180, 77); this.findDirectionGroupBox.TabIndex = 3; this.findDirectionGroupBox.TabStop = false; this.findDirectionGroupBox.Text = "Direction"; @@ -83,9 +87,10 @@ private void InitializeComponent() // this.radioButtonDown.AutoSize = true; this.radioButtonDown.Checked = true; - this.radioButtonDown.Location = new System.Drawing.Point(61, 27); + this.radioButtonDown.Location = new System.Drawing.Point(92, 42); + this.radioButtonDown.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.radioButtonDown.Name = "radioButtonDown"; - this.radioButtonDown.Size = new System.Drawing.Size(53, 17); + this.radioButtonDown.Size = new System.Drawing.Size(75, 24); this.radioButtonDown.TabIndex = 1; this.radioButtonDown.TabStop = true; this.radioButtonDown.Text = "&Down"; @@ -94,9 +99,10 @@ private void InitializeComponent() // radioButtonUp // this.radioButtonUp.AutoSize = true; - this.radioButtonUp.Location = new System.Drawing.Point(6, 27); + this.radioButtonUp.Location = new System.Drawing.Point(9, 42); + this.radioButtonUp.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.radioButtonUp.Name = "radioButtonUp"; - this.radioButtonUp.Size = new System.Drawing.Size(39, 17); + this.radioButtonUp.Size = new System.Drawing.Size(55, 24); this.radioButtonUp.TabIndex = 0; this.radioButtonUp.Text = "&Up"; this.radioButtonUp.UseVisualStyleBackColor = true; @@ -104,9 +110,10 @@ private void InitializeComponent() // buttonFind // this.buttonFind.Enabled = false; - this.buttonFind.Location = new System.Drawing.Point(298, 24); + this.buttonFind.Location = new System.Drawing.Point(447, 32); + this.buttonFind.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonFind.Name = "buttonFind"; - this.buttonFind.Size = new System.Drawing.Size(75, 23); + this.buttonFind.Size = new System.Drawing.Size(112, 35); this.buttonFind.TabIndex = 4; this.buttonFind.Text = "&Find"; this.buttonFind.UseVisualStyleBackColor = true; @@ -115,22 +122,35 @@ private void InitializeComponent() // buttonCancel // this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(298, 53); + this.buttonCancel.Location = new System.Drawing.Point(447, 82); + this.buttonCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.Size = new System.Drawing.Size(112, 35); this.buttonCancel.TabIndex = 5; this.buttonCancel.Text = "Cancel"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // + // checkBoxWholeWord + // + this.checkBoxWholeWord.AutoSize = true; + this.checkBoxWholeWord.Location = new System.Drawing.Point(24, 93); + this.checkBoxWholeWord.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.checkBoxWholeWord.Name = "checkBoxWholeWord"; + this.checkBoxWholeWord.Size = new System.Drawing.Size(118, 24); + this.checkBoxWholeWord.TabIndex = 6; + this.checkBoxWholeWord.Text = "Whole word"; + this.checkBoxWholeWord.UseVisualStyleBackColor = true; + // // findForm // this.AcceptButton = this.buttonFind; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoValidate = System.Windows.Forms.AutoValidate.EnableAllowFocusChange; this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(394, 118); + this.ClientSize = new System.Drawing.Size(591, 182); + this.Controls.Add(this.checkBoxWholeWord); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonFind); this.Controls.Add(this.findDirectionGroupBox); @@ -138,6 +158,7 @@ private void InitializeComponent() this.Controls.Add(this.textBoxFind); this.Controls.Add(this.findLabel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "findForm"; @@ -161,5 +182,6 @@ private void InitializeComponent() private System.Windows.Forms.RadioButton radioButtonDown; private System.Windows.Forms.Button buttonFind; private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.CheckBox checkBoxWholeWord; } } \ No newline at end of file diff --git a/findForm.cs b/findForm.cs index da91223..5832966 100644 --- a/findForm.cs +++ b/findForm.cs @@ -1,9 +1,4 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; using System.Windows.Forms; @@ -30,9 +25,10 @@ private void buttonCancel_Click(object sender, EventArgs e) private void buttonFind_Click(object sender, EventArgs e) { if (((rtfPadForm)this.Owner).tabControl.TabCount <= 0) return; - if (((rtfPadForm)this.Owner).findText(this.textBoxFind.Text, - this.radioButtonDown.Checked, - this.checkBoxMatchCase.Checked) == false) + if (((rtfPadForm)this.Owner).findTextWhole(this.textBoxFind.Text, + this.radioButtonDown.Checked, + this.checkBoxMatchCase.Checked, + this.checkBoxWholeWord.Checked) == false) { MessageBox.Show("Can't find \'" + this.textBoxFind.Text + "\'", "Find", MessageBoxButtons.OK, diff --git a/findForm.resx b/findForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/findForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/pencil.png b/pencil.png new file mode 100644 index 0000000..4e937d3 Binary files /dev/null and b/pencil.png differ diff --git a/replaceForm.Designer.cs b/replaceForm.Designer.cs index de10a76..052c35d 100644 --- a/replaceForm.Designer.cs +++ b/replaceForm.Designer.cs @@ -37,47 +37,53 @@ private void InitializeComponent() this.buttonReplace = new System.Windows.Forms.Button(); this.buttonReplaceAll = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); + this.checkBoxWholeWord = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 19); + this.label1.Location = new System.Drawing.Point(18, 29); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(56, 13); + this.label1.Size = new System.Drawing.Size(82, 20); this.label1.TabIndex = 0; this.label1.Text = "Find what:"; // // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 44); + this.label2.Location = new System.Drawing.Point(18, 68); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(72, 13); + this.label2.Size = new System.Drawing.Size(104, 20); this.label2.TabIndex = 1; this.label2.Text = "Replace with:"; // // textBoxFind // - this.textBoxFind.Location = new System.Drawing.Point(90, 13); + this.textBoxFind.Location = new System.Drawing.Point(135, 20); + this.textBoxFind.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.textBoxFind.Name = "textBoxFind"; - this.textBoxFind.Size = new System.Drawing.Size(198, 20); + this.textBoxFind.Size = new System.Drawing.Size(295, 26); this.textBoxFind.TabIndex = 2; this.textBoxFind.TextChanged += new System.EventHandler(this.textBoxFind_TextChanged); // // textBoxReplace // - this.textBoxReplace.Location = new System.Drawing.Point(90, 41); + this.textBoxReplace.Location = new System.Drawing.Point(135, 63); + this.textBoxReplace.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.textBoxReplace.Name = "textBoxReplace"; - this.textBoxReplace.Size = new System.Drawing.Size(198, 20); + this.textBoxReplace.Size = new System.Drawing.Size(295, 26); this.textBoxReplace.TabIndex = 3; // // checkBoxMatchCase // this.checkBoxMatchCase.AutoSize = true; - this.checkBoxMatchCase.Location = new System.Drawing.Point(15, 125); + this.checkBoxMatchCase.Location = new System.Drawing.Point(22, 159); + this.checkBoxMatchCase.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.checkBoxMatchCase.Name = "checkBoxMatchCase"; - this.checkBoxMatchCase.Size = new System.Drawing.Size(82, 17); + this.checkBoxMatchCase.Size = new System.Drawing.Size(117, 24); this.checkBoxMatchCase.TabIndex = 4; this.checkBoxMatchCase.Text = "Match case"; this.checkBoxMatchCase.UseVisualStyleBackColor = true; @@ -85,9 +91,10 @@ private void InitializeComponent() // buttonFindNext // this.buttonFindNext.Enabled = false; - this.buttonFindNext.Location = new System.Drawing.Point(307, 9); + this.buttonFindNext.Location = new System.Drawing.Point(460, 14); + this.buttonFindNext.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonFindNext.Name = "buttonFindNext"; - this.buttonFindNext.Size = new System.Drawing.Size(75, 23); + this.buttonFindNext.Size = new System.Drawing.Size(112, 35); this.buttonFindNext.TabIndex = 5; this.buttonFindNext.Text = "Find next"; this.buttonFindNext.UseVisualStyleBackColor = true; @@ -96,9 +103,10 @@ private void InitializeComponent() // buttonReplace // this.buttonReplace.Enabled = false; - this.buttonReplace.Location = new System.Drawing.Point(307, 38); + this.buttonReplace.Location = new System.Drawing.Point(460, 58); + this.buttonReplace.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonReplace.Name = "buttonReplace"; - this.buttonReplace.Size = new System.Drawing.Size(75, 23); + this.buttonReplace.Size = new System.Drawing.Size(112, 35); this.buttonReplace.TabIndex = 6; this.buttonReplace.Text = "Replace"; this.buttonReplace.UseVisualStyleBackColor = true; @@ -107,9 +115,10 @@ private void InitializeComponent() // buttonReplaceAll // this.buttonReplaceAll.Enabled = false; - this.buttonReplaceAll.Location = new System.Drawing.Point(307, 67); + this.buttonReplaceAll.Location = new System.Drawing.Point(460, 103); + this.buttonReplaceAll.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonReplaceAll.Name = "buttonReplaceAll"; - this.buttonReplaceAll.Size = new System.Drawing.Size(75, 23); + this.buttonReplaceAll.Size = new System.Drawing.Size(112, 35); this.buttonReplaceAll.TabIndex = 7; this.buttonReplaceAll.Text = "Replace All"; this.buttonReplaceAll.UseVisualStyleBackColor = true; @@ -118,20 +127,33 @@ private void InitializeComponent() // buttonCancel // this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(307, 96); + this.buttonCancel.Location = new System.Drawing.Point(460, 148); + this.buttonCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.Size = new System.Drawing.Size(112, 35); this.buttonCancel.TabIndex = 8; this.buttonCancel.Text = "Cancel"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // + // checkBoxWholeWord + // + this.checkBoxWholeWord.AutoSize = true; + this.checkBoxWholeWord.Location = new System.Drawing.Point(22, 122); + this.checkBoxWholeWord.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.checkBoxWholeWord.Name = "checkBoxWholeWord"; + this.checkBoxWholeWord.Size = new System.Drawing.Size(118, 24); + this.checkBoxWholeWord.TabIndex = 9; + this.checkBoxWholeWord.Text = "Whole word"; + this.checkBoxWholeWord.UseVisualStyleBackColor = true; + // // replaceForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(394, 170); + this.ClientSize = new System.Drawing.Size(591, 205); + this.Controls.Add(this.checkBoxWholeWord); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonReplaceAll); this.Controls.Add(this.buttonReplace); @@ -142,6 +164,7 @@ private void InitializeComponent() this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.Name = "replaceForm"; this.ShowIcon = false; this.Text = "Replace"; @@ -161,5 +184,6 @@ private void InitializeComponent() private System.Windows.Forms.Button buttonReplace; private System.Windows.Forms.Button buttonReplaceAll; private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.CheckBox checkBoxWholeWord; } } \ No newline at end of file diff --git a/replaceForm.cs b/replaceForm.cs index 06f9640..0641caa 100644 --- a/replaceForm.cs +++ b/replaceForm.cs @@ -1,9 +1,4 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; using System.Windows.Forms; namespace RTFPad @@ -39,9 +34,10 @@ private void textBoxFind_TextChanged(object sender, EventArgs e) private void buttonFindNext_Click(object sender, EventArgs e) { if (((rtfPadForm)this.Owner).tabControl.TabCount <= 0) return; - if (((rtfPadForm)this.Owner).findText(this.textBoxFind.Text, - true, - this.checkBoxMatchCase.Checked) == false) + if (((rtfPadForm)this.Owner).findTextWhole(this.textBoxFind.Text, + true, + this.checkBoxMatchCase.Checked, + this.checkBoxWholeWord.Checked) == false) { MessageBox.Show("Can't find \'" + this.textBoxFind.Text + "'\'", "Find", MessageBoxButtons.OK, @@ -55,7 +51,8 @@ private void buttonReplace_Click(object sender, EventArgs e) if (((rtfPadForm)this.Owner).tabControl.TabCount <= 0) return; if (((rtfPadForm)this.Owner).replaceText(this.textBoxFind.Text, this.textBoxReplace.Text, - this.checkBoxMatchCase.Checked) == false) + this.checkBoxMatchCase.Checked, + this.checkBoxWholeWord.Checked) == false) { MessageBox.Show("Can't find \'" + this.textBoxFind.Text + "'\'", "Find", MessageBoxButtons.OK, @@ -67,7 +64,8 @@ private void buttonReplace_Click(object sender, EventArgs e) private void buttonReplaceAll_Click(object sender, EventArgs e) { if (((rtfPadForm)this.Owner).tabControl.TabCount <= 0) return; - ((rtfPadForm)this.Owner).replaceAllInText(this.textBoxFind.Text, this.textBoxReplace.Text, this.checkBoxMatchCase.Checked); + ((rtfPadForm)this.Owner).replaceAllInText(this.textBoxFind.Text, this.textBoxReplace.Text, + this.checkBoxMatchCase.Checked, this.checkBoxWholeWord.Checked); } } diff --git a/replaceForm.resx b/replaceForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/replaceForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/rtfPadForm.Designer.cs b/rtfPadForm.Designer.cs index 5e109c7..208bafb 100644 --- a/rtfPadForm.Designer.cs +++ b/rtfPadForm.Designer.cs @@ -35,6 +35,8 @@ private void InitializeComponent() this.menuFileNewTab = new System.Windows.Forms.ToolStripMenuItem(); this.menuFileCloseCurrentTab = new System.Windows.Forms.ToolStripMenuItem(); this.menuFileOpen = new System.Windows.Forms.ToolStripMenuItem(); + this.menuRecent = new System.Windows.Forms.ToolStripMenuItem(); + this.menuRecentLoad = new System.Windows.Forms.ToolStripMenuItem(); this.menuFileSave = new System.Windows.Forms.ToolStripMenuItem(); this.menuFileSaveAs = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); @@ -64,33 +66,15 @@ private void InitializeComponent() this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutRTFPadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStrip = new System.Windows.Forms.ToolStrip(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripCBoxFont = new System.Windows.Forms.ToolStripComboBox(); - this.toolStripCBoxFontSize = new System.Windows.Forms.ToolStripComboBox(); - this.dialogOpen = new System.Windows.Forms.OpenFileDialog(); - this.dialogSave = new System.Windows.Forms.SaveFileDialog(); - this.tabControl = new System.Windows.Forms.TabControl(); - this.statusStrip = new System.Windows.Forms.StatusStrip(); - this.statusStripInfoLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.tabMenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.contextMenuNew = new System.Windows.Forms.ToolStripMenuItem(); - this.contextMenuClose = new System.Windows.Forms.ToolStripMenuItem(); - this.dialogPrintPreview = new System.Windows.Forms.PrintPreviewDialog(); - this.dialogPrint = new System.Windows.Forms.PrintDialog(); - this.dialogPageSetup = new System.Windows.Forms.PageSetupDialog(); - this.dialogFont = new System.Windows.Forms.FontDialog(); - this.dialogColor = new System.Windows.Forms.ColorDialog(); this.toolStripNew = new System.Windows.Forms.ToolStripButton(); this.toolStripOpen = new System.Windows.Forms.ToolStripButton(); this.toolStripSave = new System.Windows.Forms.ToolStripButton(); this.toolStripPrint = new System.Windows.Forms.ToolStripButton(); this.toolStripPrintPreview = new System.Windows.Forms.ToolStripButton(); - this.toolStripFind = new System.Windows.Forms.ToolStripButton(); - this.toolStripCut = new System.Windows.Forms.ToolStripButton(); - this.toolStripCopy = new System.Windows.Forms.ToolStripButton(); - this.toolStripPaste = new System.Windows.Forms.ToolStripButton(); this.toolStripUndo = new System.Windows.Forms.ToolStripButton(); this.toolStripRedo = new System.Windows.Forms.ToolStripButton(); + this.toolStripCBoxFont = new System.Windows.Forms.ToolStripComboBox(); + this.toolStripCBoxFontSize = new System.Windows.Forms.ToolStripComboBox(); this.toolStripBold = new System.Windows.Forms.ToolStripButton(); this.toolStripItalic = new System.Windows.Forms.ToolStripButton(); this.toolStripUnderline = new System.Windows.Forms.ToolStripButton(); @@ -100,6 +84,22 @@ private void InitializeComponent() this.toolStripAlignCenter = new System.Windows.Forms.ToolStripButton(); this.toolStripAlignRight = new System.Windows.Forms.ToolStripButton(); this.toolStripBullet = new System.Windows.Forms.ToolStripButton(); + this.dialogOpen = new System.Windows.Forms.OpenFileDialog(); + this.dialogSave = new System.Windows.Forms.SaveFileDialog(); + this.tabControl = new System.Windows.Forms.TabControl(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.statusStripInfoLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.tabMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.contextMenuNew = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuClose = new System.Windows.Forms.ToolStripMenuItem(); + this.dialogPrintPreview = new System.Windows.Forms.PrintPreviewDialog(); + this.dialogPrint = new System.Windows.Forms.PrintDialog(); + this.dialogPageSetup = new System.Windows.Forms.PageSetupDialog(); + this.dialogFont = new System.Windows.Forms.FontDialog(); + this.dialogColor = new System.Windows.Forms.ColorDialog(); + this.btnToBottom = new System.Windows.Forms.Button(); + this.btnEditDocument = new System.Windows.Forms.Button(); + this.timerAutoloadFile = new System.Windows.Forms.Timer(this.components); this.menuStrip1.SuspendLayout(); this.toolStrip.SuspendLayout(); this.statusStrip.SuspendLayout(); @@ -108,6 +108,8 @@ private void InitializeComponent() // // menuStrip1 // + this.menuStrip1.GripMargin = new System.Windows.Forms.Padding(2, 2, 0, 2); + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuFile, this.menuEdit, @@ -116,7 +118,7 @@ private void InitializeComponent() this.helpToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(792, 24); + this.menuStrip1.Size = new System.Drawing.Size(978, 33); this.menuStrip1.TabIndex = 1; this.menuStrip1.Text = "menuStrip1"; // @@ -126,6 +128,7 @@ private void InitializeComponent() this.menuFileNewTab, this.menuFileCloseCurrentTab, this.menuFileOpen, + this.menuRecent, this.menuFileSave, this.menuFileSaveAs, this.toolStripSeparator1, @@ -135,7 +138,7 @@ private void InitializeComponent() this.toolStripSeparator2, this.menuFileExit}); this.menuFile.Name = "menuFile"; - this.menuFile.Size = new System.Drawing.Size(37, 20); + this.menuFile.Size = new System.Drawing.Size(54, 29); this.menuFile.Text = "&File"; this.menuFile.Click += new System.EventHandler(this.menuFile_Click); // @@ -143,7 +146,7 @@ private void InitializeComponent() // this.menuFileNewTab.Name = "menuFileNewTab"; this.menuFileNewTab.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); - this.menuFileNewTab.Size = new System.Drawing.Size(214, 22); + this.menuFileNewTab.Size = new System.Drawing.Size(320, 34); this.menuFileNewTab.Text = "&New Tab..."; this.menuFileNewTab.Click += new System.EventHandler(this.menuFileNew_Click); // @@ -152,7 +155,7 @@ private void InitializeComponent() this.menuFileCloseCurrentTab.Enabled = false; this.menuFileCloseCurrentTab.Name = "menuFileCloseCurrentTab"; this.menuFileCloseCurrentTab.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); - this.menuFileCloseCurrentTab.Size = new System.Drawing.Size(214, 22); + this.menuFileCloseCurrentTab.Size = new System.Drawing.Size(320, 34); this.menuFileCloseCurrentTab.Text = "&Close Current Tab"; this.menuFileCloseCurrentTab.Click += new System.EventHandler(this.menuFileCloseCurrentTab_Click); // @@ -160,60 +163,75 @@ private void InitializeComponent() // this.menuFileOpen.Name = "menuFileOpen"; this.menuFileOpen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.menuFileOpen.Size = new System.Drawing.Size(214, 22); + this.menuFileOpen.Size = new System.Drawing.Size(320, 34); this.menuFileOpen.Text = "&Open..."; this.menuFileOpen.Click += new System.EventHandler(this.menuFileOpen_Click); // + // menuRecent + // + this.menuRecent.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuRecentLoad}); + this.menuRecent.Name = "menuRecent"; + this.menuRecent.Size = new System.Drawing.Size(320, 34); + this.menuRecent.Text = "Recent..."; + // + // menuRecentLoad + // + this.menuRecentLoad.Name = "menuRecentLoad"; + this.menuRecentLoad.Size = new System.Drawing.Size(270, 34); + this.menuRecentLoad.Text = "(filename)"; + this.menuRecentLoad.Click += new System.EventHandler(this.menuRecentLoad_Click); + // // menuFileSave // this.menuFileSave.Name = "menuFileSave"; this.menuFileSave.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); - this.menuFileSave.Size = new System.Drawing.Size(214, 22); + this.menuFileSave.Size = new System.Drawing.Size(320, 34); this.menuFileSave.Text = "&Save"; this.menuFileSave.Click += new System.EventHandler(this.menuFileSave_Click); // // menuFileSaveAs // this.menuFileSaveAs.Name = "menuFileSaveAs"; - this.menuFileSaveAs.Size = new System.Drawing.Size(214, 22); + this.menuFileSaveAs.Size = new System.Drawing.Size(320, 34); this.menuFileSaveAs.Text = "Save &As..."; this.menuFileSaveAs.Click += new System.EventHandler(this.menuFileSaveAs_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(211, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(317, 6); // // menuFilePrint // this.menuFilePrint.Name = "menuFilePrint"; - this.menuFilePrint.Size = new System.Drawing.Size(214, 22); + this.menuFilePrint.Size = new System.Drawing.Size(320, 34); this.menuFilePrint.Text = "&Print..."; this.menuFilePrint.Click += new System.EventHandler(this.menuFilePrint_Click); // // menuFilePrintPreview // this.menuFilePrintPreview.Name = "menuFilePrintPreview"; - this.menuFilePrintPreview.Size = new System.Drawing.Size(214, 22); + this.menuFilePrintPreview.Size = new System.Drawing.Size(320, 34); this.menuFilePrintPreview.Text = "Print Pre&view..."; this.menuFilePrintPreview.Click += new System.EventHandler(this.menuFilePrintPreview_Click); // // menuFilePageSetup // this.menuFilePageSetup.Name = "menuFilePageSetup"; - this.menuFilePageSetup.Size = new System.Drawing.Size(214, 22); + this.menuFilePageSetup.Size = new System.Drawing.Size(320, 34); this.menuFilePageSetup.Text = "Page Set&up..."; this.menuFilePageSetup.Click += new System.EventHandler(this.menuFilePageSetup_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(211, 6); + this.toolStripSeparator2.Size = new System.Drawing.Size(317, 6); // // menuFileExit // this.menuFileExit.Name = "menuFileExit"; - this.menuFileExit.Size = new System.Drawing.Size(214, 22); + this.menuFileExit.Size = new System.Drawing.Size(320, 34); this.menuFileExit.Text = "E&xit"; this.menuFileExit.Click += new System.EventHandler(this.menuFileExit_Click); // @@ -233,14 +251,14 @@ private void InitializeComponent() this.menuEditFindNext, this.menuEditReplace}); this.menuEdit.Name = "menuEdit"; - this.menuEdit.Size = new System.Drawing.Size(39, 20); + this.menuEdit.Size = new System.Drawing.Size(58, 29); this.menuEdit.Text = "&Edit"; // // menuEditUndo // this.menuEditUndo.Name = "menuEditUndo"; this.menuEditUndo.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.menuEditUndo.Size = new System.Drawing.Size(164, 22); + this.menuEditUndo.Size = new System.Drawing.Size(248, 34); this.menuEditUndo.Text = "&Undo"; this.menuEditUndo.Click += new System.EventHandler(this.menuEditUndo_Click); // @@ -248,20 +266,20 @@ private void InitializeComponent() // this.menuEditRedo.Name = "menuEditRedo"; this.menuEditRedo.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.menuEditRedo.Size = new System.Drawing.Size(164, 22); + this.menuEditRedo.Size = new System.Drawing.Size(248, 34); this.menuEditRedo.Text = "&Redo"; this.menuEditRedo.Click += new System.EventHandler(this.menuEditRedo_Click); // // toolStripSeparator6 // this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(161, 6); + this.toolStripSeparator6.Size = new System.Drawing.Size(245, 6); // // menuEditCut // this.menuEditCut.Name = "menuEditCut"; this.menuEditCut.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); - this.menuEditCut.Size = new System.Drawing.Size(164, 22); + this.menuEditCut.Size = new System.Drawing.Size(248, 34); this.menuEditCut.Text = "Cu&t"; this.menuEditCut.Click += new System.EventHandler(this.menuEditCut_Click); // @@ -269,7 +287,7 @@ private void InitializeComponent() // this.menuEditCopy.Name = "menuEditCopy"; this.menuEditCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.menuEditCopy.Size = new System.Drawing.Size(164, 22); + this.menuEditCopy.Size = new System.Drawing.Size(248, 34); this.menuEditCopy.Text = "&Copy"; this.menuEditCopy.Click += new System.EventHandler(this.menuEditCopy_Click); // @@ -277,7 +295,7 @@ private void InitializeComponent() // this.menuEditPaste.Name = "menuEditPaste"; this.menuEditPaste.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); - this.menuEditPaste.Size = new System.Drawing.Size(164, 22); + this.menuEditPaste.Size = new System.Drawing.Size(248, 34); this.menuEditPaste.Text = "&Paste"; this.menuEditPaste.Click += new System.EventHandler(this.menuEditPaste_Click); // @@ -285,7 +303,7 @@ private void InitializeComponent() // this.menuEditClear.Name = "menuEditClear"; this.menuEditClear.ShortcutKeys = System.Windows.Forms.Keys.Delete; - this.menuEditClear.Size = new System.Drawing.Size(164, 22); + this.menuEditClear.Size = new System.Drawing.Size(248, 34); this.menuEditClear.Text = "Cle&ar"; this.menuEditClear.Click += new System.EventHandler(this.menuEditClear_Click); // @@ -293,20 +311,20 @@ private void InitializeComponent() // this.menuEditSelectAll.Name = "menuEditSelectAll"; this.menuEditSelectAll.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); - this.menuEditSelectAll.Size = new System.Drawing.Size(164, 22); + this.menuEditSelectAll.Size = new System.Drawing.Size(248, 34); this.menuEditSelectAll.Text = "Select A&ll"; this.menuEditSelectAll.Click += new System.EventHandler(this.menuEditSelectAll_Click); // // toolStripSeparator7 // this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(161, 6); + this.toolStripSeparator7.Size = new System.Drawing.Size(245, 6); // // menuEditFind // this.menuEditFind.Name = "menuEditFind"; this.menuEditFind.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F))); - this.menuEditFind.Size = new System.Drawing.Size(164, 22); + this.menuEditFind.Size = new System.Drawing.Size(248, 34); this.menuEditFind.Text = "&Find"; this.menuEditFind.Click += new System.EventHandler(this.menuEditFind_Click); // @@ -314,7 +332,7 @@ private void InitializeComponent() // this.menuEditFindNext.Name = "menuEditFindNext"; this.menuEditFindNext.ShortcutKeys = System.Windows.Forms.Keys.F3; - this.menuEditFindNext.Size = new System.Drawing.Size(164, 22); + this.menuEditFindNext.Size = new System.Drawing.Size(248, 34); this.menuEditFindNext.Text = "Find &Next"; this.menuEditFindNext.Click += new System.EventHandler(this.menuEditFindNext_Click); // @@ -322,7 +340,7 @@ private void InitializeComponent() // this.menuEditReplace.Name = "menuEditReplace"; this.menuEditReplace.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.H))); - this.menuEditReplace.Size = new System.Drawing.Size(164, 22); + this.menuEditReplace.Size = new System.Drawing.Size(248, 34); this.menuEditReplace.Text = "&Replace"; this.menuEditReplace.Click += new System.EventHandler(this.menuEditReplace_Click); // @@ -331,13 +349,13 @@ private void InitializeComponent() this.menuView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuViewWordWrap}); this.menuView.Name = "menuView"; - this.menuView.Size = new System.Drawing.Size(44, 20); + this.menuView.Size = new System.Drawing.Size(65, 29); this.menuView.Text = "&View"; // // menuViewWordWrap // this.menuViewWordWrap.Name = "menuViewWordWrap"; - this.menuViewWordWrap.Size = new System.Drawing.Size(134, 22); + this.menuViewWordWrap.Size = new System.Drawing.Size(206, 34); this.menuViewWordWrap.Text = "&Word Wrap"; this.menuViewWordWrap.Click += new System.EventHandler(this.menuViewWordWrap_Click); // @@ -347,20 +365,20 @@ private void InitializeComponent() this.menuFormatFont, this.menuFormatColor}); this.menuFormat.Name = "menuFormat"; - this.menuFormat.Size = new System.Drawing.Size(57, 20); + this.menuFormat.Size = new System.Drawing.Size(85, 29); this.menuFormat.Text = "F&ormat"; // // menuFormatFont // this.menuFormatFont.Name = "menuFormatFont"; - this.menuFormatFont.Size = new System.Drawing.Size(103, 22); + this.menuFormatFont.Size = new System.Drawing.Size(157, 34); this.menuFormatFont.Text = "&Font"; this.menuFormatFont.Click += new System.EventHandler(this.menuFormatFont_Click); // // menuFormatColor // this.menuFormatColor.Name = "menuFormatColor"; - this.menuFormatColor.Size = new System.Drawing.Size(103, 22); + this.menuFormatColor.Size = new System.Drawing.Size(157, 34); this.menuFormatColor.Text = "&Color"; this.menuFormatColor.Click += new System.EventHandler(this.menuFormatColor_Click); // @@ -369,32 +387,28 @@ private void InitializeComponent() this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.aboutRTFPadToolStripMenuItem}); this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; - this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.helpToolStripMenuItem.Size = new System.Drawing.Size(65, 29); this.helpToolStripMenuItem.Text = "&Help"; // // aboutRTFPadToolStripMenuItem // this.aboutRTFPadToolStripMenuItem.Name = "aboutRTFPadToolStripMenuItem"; - this.aboutRTFPadToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.aboutRTFPadToolStripMenuItem.Size = new System.Drawing.Size(226, 34); this.aboutRTFPadToolStripMenuItem.Text = "&About RTFPad"; this.aboutRTFPadToolStripMenuItem.Click += new System.EventHandler(this.aboutRTFPadToolStripMenuItem_Click); // // toolStrip // this.toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip.ImageScalingSize = new System.Drawing.Size(24, 24); this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripNew, this.toolStripOpen, this.toolStripSave, this.toolStripPrint, this.toolStripPrintPreview, - this.toolStripFind, - this.toolStripCut, - this.toolStripCopy, - this.toolStripPaste, this.toolStripUndo, this.toolStripRedo, - this.toolStripSeparator5, this.toolStripCBoxFont, this.toolStripCBoxFontSize, this.toolStripBold, @@ -406,151 +420,22 @@ private void InitializeComponent() this.toolStripAlignCenter, this.toolStripAlignRight, this.toolStripBullet}); - this.toolStrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; - this.toolStrip.Location = new System.Drawing.Point(0, 24); + this.toolStrip.Location = new System.Drawing.Point(0, 33); this.toolStrip.Name = "toolStrip"; - this.toolStrip.Size = new System.Drawing.Size(792, 46); + this.toolStrip.Padding = new System.Windows.Forms.Padding(0); + this.toolStrip.Size = new System.Drawing.Size(978, 33); + this.toolStrip.Stretch = true; this.toolStrip.TabIndex = 2; this.toolStrip.Text = "toolStrip"; // - // toolStripSeparator5 - // - this.toolStripSeparator5.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.toolStripSeparator5.Margin = new System.Windows.Forms.Padding(0, 0, 500, 0); - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(6, 23); - // - // toolStripCBoxFont - // - this.toolStripCBoxFont.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.toolStripCBoxFont.DropDownWidth = 200; - this.toolStripCBoxFont.MaxDropDownItems = 30; - this.toolStripCBoxFont.Name = "toolStripCBoxFont"; - this.toolStripCBoxFont.Size = new System.Drawing.Size(180, 23); - this.toolStripCBoxFont.SelectedIndexChanged += new System.EventHandler(this.toolStripCBoxFont_SelectedIndexChanged); - // - // toolStripCBoxFontSize - // - this.toolStripCBoxFontSize.AutoSize = false; - this.toolStripCBoxFontSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.toolStripCBoxFontSize.Items.AddRange(new object[] { - "8", - "9", - "10", - "11", - "12", - "14", - "16", - "18", - "20", - "22", - "24", - "26", - "28", - "36", - "48", - "72"}); - this.toolStripCBoxFontSize.MaxDropDownItems = 16; - this.toolStripCBoxFontSize.Name = "toolStripCBoxFontSize"; - this.toolStripCBoxFontSize.Size = new System.Drawing.Size(50, 23); - this.toolStripCBoxFontSize.SelectedIndexChanged += new System.EventHandler(this.toolStripCBoxFontSize_SelectedIndexChanged); - // - // dialogOpen - // - this.dialogOpen.DefaultExt = "rtf"; - this.dialogOpen.Filter = "Rich Text Format (*.rtf)|*.rtf|Plain text File (*.txt)|*.txt|All Files|"; - // - // dialogSave - // - this.dialogSave.DefaultExt = "rtf"; - this.dialogSave.Filter = "Rich Text Format (*.rtf)|*.rtf|Plain text File (*.txt)|*.txt|All Files|"; - // - // tabControl - // - this.tabControl.AllowDrop = true; - this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabControl.ItemSize = new System.Drawing.Size(0, 18); - this.tabControl.Location = new System.Drawing.Point(0, 70); - this.tabControl.Name = "tabControl"; - this.tabControl.SelectedIndex = 0; - this.tabControl.Size = new System.Drawing.Size(792, 476); - this.tabControl.TabIndex = 0; - this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged); - this.tabControl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tabControl_MouseUp); - // - // statusStrip - // - this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.statusStripInfoLabel}); - this.statusStrip.Location = new System.Drawing.Point(0, 546); - this.statusStrip.Name = "statusStrip"; - this.statusStrip.Size = new System.Drawing.Size(792, 22); - this.statusStrip.TabIndex = 3; - // - // statusStripInfoLabel - // - this.statusStripInfoLabel.Name = "statusStripInfoLabel"; - this.statusStripInfoLabel.Size = new System.Drawing.Size(0, 17); - // - // tabMenu - // - this.tabMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.contextMenuNew, - this.contextMenuClose}); - this.tabMenu.Name = "tabMenu"; - this.tabMenu.Size = new System.Drawing.Size(127, 48); - // - // contextMenuNew - // - this.contextMenuNew.Name = "contextMenuNew"; - this.contextMenuNew.Size = new System.Drawing.Size(126, 22); - this.contextMenuNew.Text = "&New Tab"; - this.contextMenuNew.Click += new System.EventHandler(this.contextMenuNew_Click); - // - // contextMenuClose - // - this.contextMenuClose.Name = "contextMenuClose"; - this.contextMenuClose.Size = new System.Drawing.Size(126, 22); - this.contextMenuClose.Text = "&Close Tab"; - this.contextMenuClose.Click += new System.EventHandler(this.contextMenuClose_Click); - // - // dialogPrintPreview - // - this.dialogPrintPreview.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.dialogPrintPreview.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.dialogPrintPreview.ClientSize = new System.Drawing.Size(400, 300); - this.dialogPrintPreview.Enabled = true; - this.dialogPrintPreview.Icon = ((System.Drawing.Icon)(resources.GetObject("dialogPrintPreview.Icon"))); - this.dialogPrintPreview.Name = "dialogPrintPreview"; - this.dialogPrintPreview.ShowIcon = false; - this.dialogPrintPreview.Visible = false; - // - // dialogPrint - // - this.dialogPrint.UseEXDialog = true; - // - // dialogPageSetup - // - this.dialogPageSetup.EnableMetric = true; - this.dialogPageSetup.MinMargins = new System.Drawing.Printing.Margins(10, 10, 10, 10); - // - // dialogFont - // - this.dialogFont.FontMustExist = true; - this.dialogFont.ShowColor = true; - // - // dialogColor - // - this.dialogColor.AnyColor = true; - this.dialogColor.FullOpen = true; - // // toolStripNew // this.toolStripNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripNew.Image = global::RTFPad.icons.NewDocument; this.toolStripNew.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripNew.Name = "toolStripNew"; - this.toolStripNew.Size = new System.Drawing.Size(23, 20); + this.toolStripNew.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripNew.Size = new System.Drawing.Size(34, 28); this.toolStripNew.Text = "New Tab"; this.toolStripNew.Click += new System.EventHandler(this.toolStripNew_Click); this.toolStripNew.MouseEnter += new System.EventHandler(this.toolStripNew_MouseEnter); @@ -562,7 +447,8 @@ private void InitializeComponent() this.toolStripOpen.Image = global::RTFPad.icons.OpenFolder; this.toolStripOpen.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripOpen.Name = "toolStripOpen"; - this.toolStripOpen.Size = new System.Drawing.Size(23, 20); + this.toolStripOpen.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripOpen.Size = new System.Drawing.Size(34, 28); this.toolStripOpen.Text = "Open File"; this.toolStripOpen.Click += new System.EventHandler(this.toolStripOpen_Click); this.toolStripOpen.MouseEnter += new System.EventHandler(this.toolStripOpen_MouseEnter); @@ -574,7 +460,8 @@ private void InitializeComponent() this.toolStripSave.Image = global::RTFPad.icons.Save; this.toolStripSave.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripSave.Name = "toolStripSave"; - this.toolStripSave.Size = new System.Drawing.Size(23, 20); + this.toolStripSave.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripSave.Size = new System.Drawing.Size(34, 28); this.toolStripSave.Text = "Save Current Tab"; this.toolStripSave.Click += new System.EventHandler(this.toolStripSave_Click); this.toolStripSave.MouseEnter += new System.EventHandler(this.toolStripSave_MouseEnter); @@ -586,7 +473,8 @@ private void InitializeComponent() this.toolStripPrint.Image = global::RTFPad.icons.Print; this.toolStripPrint.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripPrint.Name = "toolStripPrint"; - this.toolStripPrint.Size = new System.Drawing.Size(23, 20); + this.toolStripPrint.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripPrint.Size = new System.Drawing.Size(34, 28); this.toolStripPrint.Text = "Print Current Tab"; this.toolStripPrint.Click += new System.EventHandler(this.toolStripPrint_Click); this.toolStripPrint.MouseEnter += new System.EventHandler(this.toolStripPrint_MouseEnter); @@ -598,67 +486,21 @@ private void InitializeComponent() this.toolStripPrintPreview.Image = global::RTFPad.icons.PrintPreview; this.toolStripPrintPreview.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripPrintPreview.Name = "toolStripPrintPreview"; - this.toolStripPrintPreview.Size = new System.Drawing.Size(23, 20); + this.toolStripPrintPreview.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripPrintPreview.Size = new System.Drawing.Size(34, 28); this.toolStripPrintPreview.Text = "Print Preview"; this.toolStripPrintPreview.Click += new System.EventHandler(this.toolStripPrintPreview_Click); this.toolStripPrintPreview.MouseEnter += new System.EventHandler(this.toolStripPrintPreview_MouseEnter); this.toolStripPrintPreview.MouseLeave += new System.EventHandler(this.toolStripPrintPreview_MouseLeave); // - // toolStripFind - // - this.toolStripFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripFind.Image = global::RTFPad.icons.Find; - this.toolStripFind.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripFind.Name = "toolStripFind"; - this.toolStripFind.Size = new System.Drawing.Size(23, 20); - this.toolStripFind.Text = "Find"; - this.toolStripFind.Click += new System.EventHandler(this.toolStripFind_Click); - this.toolStripFind.MouseEnter += new System.EventHandler(this.toolStripFind_MouseEnter); - this.toolStripFind.MouseLeave += new System.EventHandler(this.toolStripFind_MouseLeave); - // - // toolStripCut - // - this.toolStripCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripCut.Image = global::RTFPad.icons.Cut; - this.toolStripCut.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripCut.Name = "toolStripCut"; - this.toolStripCut.Size = new System.Drawing.Size(23, 20); - this.toolStripCut.Text = "Cut"; - this.toolStripCut.Click += new System.EventHandler(this.toolStripCut_Click); - this.toolStripCut.MouseEnter += new System.EventHandler(this.toolStripCut_MouseEnter); - this.toolStripCut.MouseLeave += new System.EventHandler(this.toolStripCut_MouseLeave); - // - // toolStripCopy - // - this.toolStripCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripCopy.Image = global::RTFPad.icons.Copy; - this.toolStripCopy.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripCopy.Name = "toolStripCopy"; - this.toolStripCopy.Size = new System.Drawing.Size(23, 20); - this.toolStripCopy.Text = "Copy"; - this.toolStripCopy.Click += new System.EventHandler(this.toolStripCopy_Click); - this.toolStripCopy.MouseEnter += new System.EventHandler(this.toolStripCopy_MouseEnter); - this.toolStripCopy.MouseLeave += new System.EventHandler(this.toolStripCopy_MouseLeave); - // - // toolStripPaste - // - this.toolStripPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripPaste.Image = global::RTFPad.icons.Paste; - this.toolStripPaste.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripPaste.Name = "toolStripPaste"; - this.toolStripPaste.Size = new System.Drawing.Size(23, 20); - this.toolStripPaste.Text = "Paste"; - this.toolStripPaste.Click += new System.EventHandler(this.toolStripPaste_Click); - this.toolStripPaste.MouseEnter += new System.EventHandler(this.toolStripPaste_MouseEnter); - this.toolStripPaste.MouseLeave += new System.EventHandler(this.toolStripPaste_MouseLeave); - // // toolStripUndo // this.toolStripUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripUndo.Image = global::RTFPad.icons.Edit_Undo; this.toolStripUndo.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripUndo.Name = "toolStripUndo"; - this.toolStripUndo.Size = new System.Drawing.Size(23, 20); + this.toolStripUndo.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripUndo.Size = new System.Drawing.Size(34, 28); this.toolStripUndo.Text = "Undo"; this.toolStripUndo.Click += new System.EventHandler(this.toolStripUndo_Click); this.toolStripUndo.MouseEnter += new System.EventHandler(this.toolStripUndo_MouseEnter); @@ -670,19 +512,60 @@ private void InitializeComponent() this.toolStripRedo.Image = global::RTFPad.icons.Edit_Redo; this.toolStripRedo.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripRedo.Name = "toolStripRedo"; - this.toolStripRedo.Size = new System.Drawing.Size(23, 20); + this.toolStripRedo.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripRedo.Size = new System.Drawing.Size(34, 28); this.toolStripRedo.Text = "Redo"; this.toolStripRedo.Click += new System.EventHandler(this.toolStripRedo_Click); this.toolStripRedo.MouseEnter += new System.EventHandler(this.toolStripRedo_MouseEnter); this.toolStripRedo.MouseLeave += new System.EventHandler(this.toolStripRedo_MouseLeave); // + // toolStripCBoxFont + // + this.toolStripCBoxFont.AutoSize = false; + this.toolStripCBoxFont.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.toolStripCBoxFont.DropDownWidth = 200; + this.toolStripCBoxFont.Margin = new System.Windows.Forms.Padding(0); + this.toolStripCBoxFont.MaxDropDownItems = 30; + this.toolStripCBoxFont.Name = "toolStripCBoxFont"; + this.toolStripCBoxFont.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripCBoxFont.Size = new System.Drawing.Size(200, 33); + this.toolStripCBoxFont.SelectedIndexChanged += new System.EventHandler(this.toolStripCBoxFont_SelectedIndexChanged); + // + // toolStripCBoxFontSize + // + this.toolStripCBoxFontSize.AutoSize = false; + this.toolStripCBoxFontSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.toolStripCBoxFontSize.Items.AddRange(new object[] { + "8", + "9", + "10", + "11", + "12", + "14", + "16", + "18", + "20", + "22", + "24", + "26", + "28", + "36", + "48", + "72"}); + this.toolStripCBoxFontSize.MaxDropDownItems = 16; + this.toolStripCBoxFontSize.Name = "toolStripCBoxFontSize"; + this.toolStripCBoxFontSize.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripCBoxFontSize.Size = new System.Drawing.Size(73, 33); + this.toolStripCBoxFontSize.SelectedIndexChanged += new System.EventHandler(this.toolStripCBoxFontSize_SelectedIndexChanged); + // // toolStripBold // this.toolStripBold.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripBold.Image = global::RTFPad.icons.Bold; this.toolStripBold.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripBold.Name = "toolStripBold"; - this.toolStripBold.Size = new System.Drawing.Size(23, 20); + this.toolStripBold.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripBold.Size = new System.Drawing.Size(34, 28); this.toolStripBold.Text = "Bold"; this.toolStripBold.Click += new System.EventHandler(this.toolStripBold_Click); this.toolStripBold.MouseEnter += new System.EventHandler(this.toolStripBold_MouseEnter); @@ -694,7 +577,8 @@ private void InitializeComponent() this.toolStripItalic.Image = global::RTFPad.icons.Italic; this.toolStripItalic.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripItalic.Name = "toolStripItalic"; - this.toolStripItalic.Size = new System.Drawing.Size(23, 20); + this.toolStripItalic.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripItalic.Size = new System.Drawing.Size(34, 28); this.toolStripItalic.Text = "Italic"; this.toolStripItalic.Click += new System.EventHandler(this.toolStripItalic_Click); this.toolStripItalic.MouseEnter += new System.EventHandler(this.toolStripItalic_MouseEnter); @@ -706,8 +590,9 @@ private void InitializeComponent() this.toolStripUnderline.Image = global::RTFPad.icons.Underline; this.toolStripUnderline.ImageTransparentColor = System.Drawing.Color.White; this.toolStripUnderline.Name = "toolStripUnderline"; - this.toolStripUnderline.Size = new System.Drawing.Size(23, 20); - this.toolStripUnderline.Text = "toolStripButton3"; + this.toolStripUnderline.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripUnderline.Size = new System.Drawing.Size(34, 28); + this.toolStripUnderline.Text = "Underline"; this.toolStripUnderline.Click += new System.EventHandler(this.toolStripUnderline_Click); this.toolStripUnderline.MouseEnter += new System.EventHandler(this.toolStripUnderline_MouseEnter); this.toolStripUnderline.MouseLeave += new System.EventHandler(this.toolStripUnderline_MouseLeave); @@ -718,7 +603,8 @@ private void InitializeComponent() this.toolStripStrikethrough.Image = global::RTFPad.icons.Strikeout; this.toolStripStrikethrough.ImageTransparentColor = System.Drawing.Color.White; this.toolStripStrikethrough.Name = "toolStripStrikethrough"; - this.toolStripStrikethrough.Size = new System.Drawing.Size(23, 20); + this.toolStripStrikethrough.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripStrikethrough.Size = new System.Drawing.Size(34, 28); this.toolStripStrikethrough.Text = "Strikethrough"; this.toolStripStrikethrough.Click += new System.EventHandler(this.toolStripStrikethrough_Click); this.toolStripStrikethrough.MouseEnter += new System.EventHandler(this.toolStripStrikethrough_MouseEnter); @@ -730,9 +616,10 @@ private void InitializeComponent() this.toolStripFontColor.Image = global::RTFPad.icons.Color; this.toolStripFontColor.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripFontColor.Name = "toolStripFontColor"; - this.toolStripFontColor.Size = new System.Drawing.Size(29, 20); + this.toolStripFontColor.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripFontColor.Size = new System.Drawing.Size(42, 28); this.toolStripFontColor.Text = "Color Picker"; - this.toolStripFontColor.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripFontColor_DropDownItemClicked); + this.toolStripFontColor.Click += new System.EventHandler(this.toolStripFontColor_Click); this.toolStripFontColor.MouseEnter += new System.EventHandler(this.toolStripFontColor_MouseEnter); this.toolStripFontColor.MouseLeave += new System.EventHandler(this.toolStripFontColor_MouseLeave); // @@ -742,7 +629,8 @@ private void InitializeComponent() this.toolStripAlignLeft.Image = global::RTFPad.icons.Left; this.toolStripAlignLeft.ImageTransparentColor = System.Drawing.Color.White; this.toolStripAlignLeft.Name = "toolStripAlignLeft"; - this.toolStripAlignLeft.Size = new System.Drawing.Size(23, 20); + this.toolStripAlignLeft.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripAlignLeft.Size = new System.Drawing.Size(34, 28); this.toolStripAlignLeft.Text = "Left Align"; this.toolStripAlignLeft.Click += new System.EventHandler(this.toolStripAlignLeft_Click); this.toolStripAlignLeft.MouseEnter += new System.EventHandler(this.toolStripAlignLeft_MouseEnter); @@ -754,7 +642,8 @@ private void InitializeComponent() this.toolStripAlignCenter.Image = global::RTFPad.icons.Center; this.toolStripAlignCenter.ImageTransparentColor = System.Drawing.Color.White; this.toolStripAlignCenter.Name = "toolStripAlignCenter"; - this.toolStripAlignCenter.Size = new System.Drawing.Size(23, 20); + this.toolStripAlignCenter.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripAlignCenter.Size = new System.Drawing.Size(34, 28); this.toolStripAlignCenter.Text = "Center"; this.toolStripAlignCenter.Click += new System.EventHandler(this.toolStripAlignCenter_Click); this.toolStripAlignCenter.MouseEnter += new System.EventHandler(this.toolStripAlignCenter_MouseEnter); @@ -766,7 +655,8 @@ private void InitializeComponent() this.toolStripAlignRight.Image = global::RTFPad.icons.Right; this.toolStripAlignRight.ImageTransparentColor = System.Drawing.Color.White; this.toolStripAlignRight.Name = "toolStripAlignRight"; - this.toolStripAlignRight.Size = new System.Drawing.Size(23, 20); + this.toolStripAlignRight.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripAlignRight.Size = new System.Drawing.Size(34, 28); this.toolStripAlignRight.Text = "Right Align"; this.toolStripAlignRight.Click += new System.EventHandler(this.toolStripAlignRight_Click); this.toolStripAlignRight.MouseEnter += new System.EventHandler(this.toolStripAlignRight_MouseEnter); @@ -777,28 +667,167 @@ private void InitializeComponent() this.toolStripBullet.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripBullet.Image = global::RTFPad.icons.List_Bullets; this.toolStripBullet.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripBullet.Margin = new System.Windows.Forms.Padding(0); this.toolStripBullet.Name = "toolStripBullet"; - this.toolStripBullet.Size = new System.Drawing.Size(23, 20); + this.toolStripBullet.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.toolStripBullet.Size = new System.Drawing.Size(34, 33); this.toolStripBullet.Text = "Bullets"; this.toolStripBullet.Click += new System.EventHandler(this.toolStripBullet_Click); this.toolStripBullet.MouseEnter += new System.EventHandler(this.toolStripBullet_MouseEnter); this.toolStripBullet.MouseLeave += new System.EventHandler(this.toolStripBullet_MouseLeave); // + // dialogOpen + // + this.dialogOpen.DefaultExt = "rtf"; + this.dialogOpen.Filter = "Rich Text Format (*.rtf)|*.rtf|Plain text File (*.txt)|*.txt|All Files|"; + // + // dialogSave + // + this.dialogSave.DefaultExt = "rtf"; + this.dialogSave.Filter = "Rich Text Format (*.rtf)|*.rtf|Plain text File (*.txt)|*.txt|All Files|"; + // + // tabControl + // + this.tabControl.AllowDrop = true; + this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabControl.ItemSize = new System.Drawing.Size(0, 18); + this.tabControl.Location = new System.Drawing.Point(0, 66); + this.tabControl.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.tabControl.Name = "tabControl"; + this.tabControl.SelectedIndex = 0; + this.tabControl.Size = new System.Drawing.Size(978, 962); + this.tabControl.TabIndex = 0; + this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged); + this.tabControl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tabControl_MouseUp); + // + // statusStrip + // + this.statusStrip.ImageScalingSize = new System.Drawing.Size(24, 24); + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusStripInfoLabel}); + this.statusStrip.Location = new System.Drawing.Point(0, 1028); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Padding = new System.Windows.Forms.Padding(2, 0, 21, 0); + this.statusStrip.Size = new System.Drawing.Size(978, 22); + this.statusStrip.TabIndex = 3; + // + // statusStripInfoLabel + // + this.statusStripInfoLabel.Name = "statusStripInfoLabel"; + this.statusStripInfoLabel.Size = new System.Drawing.Size(0, 15); + // + // tabMenu + // + this.tabMenu.ImageScalingSize = new System.Drawing.Size(24, 24); + this.tabMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.contextMenuNew, + this.contextMenuClose}); + this.tabMenu.Name = "tabMenu"; + this.tabMenu.Size = new System.Drawing.Size(160, 68); + // + // contextMenuNew + // + this.contextMenuNew.Name = "contextMenuNew"; + this.contextMenuNew.Size = new System.Drawing.Size(159, 32); + this.contextMenuNew.Text = "&New Tab"; + this.contextMenuNew.Click += new System.EventHandler(this.contextMenuNew_Click); + // + // contextMenuClose + // + this.contextMenuClose.Name = "contextMenuClose"; + this.contextMenuClose.Size = new System.Drawing.Size(159, 32); + this.contextMenuClose.Text = "&Close Tab"; + this.contextMenuClose.Click += new System.EventHandler(this.contextMenuClose_Click); + // + // dialogPrintPreview + // + this.dialogPrintPreview.AutoScrollMargin = new System.Drawing.Size(0, 0); + this.dialogPrintPreview.AutoScrollMinSize = new System.Drawing.Size(0, 0); + this.dialogPrintPreview.ClientSize = new System.Drawing.Size(400, 300); + this.dialogPrintPreview.Enabled = true; + this.dialogPrintPreview.Icon = ((System.Drawing.Icon)(resources.GetObject("dialogPrintPreview.Icon"))); + this.dialogPrintPreview.Name = "dialogPrintPreview"; + this.dialogPrintPreview.ShowIcon = false; + this.dialogPrintPreview.Visible = false; + // + // dialogPrint + // + this.dialogPrint.UseEXDialog = true; + // + // dialogPageSetup + // + this.dialogPageSetup.EnableMetric = true; + this.dialogPageSetup.MinMargins = new System.Drawing.Printing.Margins(10, 10, 10, 10); + // + // dialogFont + // + this.dialogFont.Color = System.Drawing.Color.FromArgb(((int)(((byte)(182)))), ((int)(((byte)(246)))), ((int)(((byte)(240))))); + this.dialogFont.FontMustExist = true; + this.dialogFont.ShowColor = true; + // + // dialogColor + // + this.dialogColor.AnyColor = true; + this.dialogColor.FullOpen = true; + // + // btnToBottom + // + this.btnToBottom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnToBottom.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.btnToBottom.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnToBottom.Image = ((System.Drawing.Image)(resources.GetObject("btnToBottom.Image"))); + this.btnToBottom.Location = new System.Drawing.Point(905, 124); + this.btnToBottom.Margin = new System.Windows.Forms.Padding(0); + this.btnToBottom.Name = "btnToBottom"; + this.btnToBottom.Size = new System.Drawing.Size(26, 24); + this.btnToBottom.TabIndex = 4; + this.btnToBottom.UseVisualStyleBackColor = true; + this.btnToBottom.Visible = false; + this.btnToBottom.Click += new System.EventHandler(this.btnToBottom_Click); + // + // btnEditDocument + // + this.btnEditDocument.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnEditDocument.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.btnEditDocument.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnEditDocument.Image = ((System.Drawing.Image)(resources.GetObject("btnEditDocument.Image"))); + this.btnEditDocument.Location = new System.Drawing.Point(896, 124); + this.btnEditDocument.Margin = new System.Windows.Forms.Padding(0); + this.btnEditDocument.Name = "btnEditDocument"; + this.btnEditDocument.Size = new System.Drawing.Size(36, 36); + this.btnEditDocument.TabIndex = 5; + this.btnEditDocument.UseVisualStyleBackColor = true; + this.btnEditDocument.Visible = false; + this.btnEditDocument.Click += new System.EventHandler(this.btnEditDocument_Click); + // + // timerAutoloadFile + // + this.timerAutoloadFile.Enabled = true; + this.timerAutoloadFile.Interval = 1000; + this.timerAutoloadFile.Tick += new System.EventHandler(this.timerAutoloadFile_Tick); + // // rtfPadForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(792, 568); + this.ClientSize = new System.Drawing.Size(978, 1050); + this.Controls.Add(this.btnEditDocument); + this.Controls.Add(this.btnToBottom); this.Controls.Add(this.tabControl); this.Controls.Add(this.statusStrip); this.Controls.Add(this.toolStrip); this.Controls.Add(this.menuStrip1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Location = new System.Drawing.Point(300, 10); this.MainMenuStrip = this.menuStrip1; - this.MinimumSize = new System.Drawing.Size(800, 600); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MinimumSize = new System.Drawing.Size(300, 100); this.Name = "rtfPadForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; this.Text = "RTFPad"; - this.SizeChanged += new System.EventHandler(this.rtfPadForm_SizeChanged); + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.rtfPadForm_FormClosing); + this.Resize += new System.EventHandler(this.rtfPadForm_Resize); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); this.toolStrip.ResumeLayout(false); @@ -841,12 +870,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton toolStripOpen; private System.Windows.Forms.ToolStripButton toolStripPrint; private System.Windows.Forms.ToolStripButton toolStripPrintPreview; - private System.Windows.Forms.ToolStripButton toolStripFind; - private System.Windows.Forms.ToolStripButton toolStripCut; - private System.Windows.Forms.ToolStripButton toolStripCopy; - private System.Windows.Forms.ToolStripButton toolStripPaste; private System.Windows.Forms.ToolStripButton toolStripUndo; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; private System.Windows.Forms.ToolStripComboBox toolStripCBoxFont; private System.Windows.Forms.ToolStripComboBox toolStripCBoxFontSize; private System.Windows.Forms.ToolStripDropDownButton toolStripFontColor; @@ -882,6 +906,11 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem menuFormatColor; private System.Windows.Forms.ColorDialog dialogColor; private System.Windows.Forms.ToolStripButton toolStripBullet; + private System.Windows.Forms.Button btnToBottom; + private System.Windows.Forms.Button btnEditDocument; + private System.Windows.Forms.Timer timerAutoloadFile; + private System.Windows.Forms.ToolStripMenuItem menuRecent; + private System.Windows.Forms.ToolStripMenuItem menuRecentLoad; } } diff --git a/rtfPadForm.cs b/rtfPadForm.cs index bac72c9..5ee08c5 100644 --- a/rtfPadForm.cs +++ b/rtfPadForm.cs @@ -1,12 +1,10 @@ using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Text; using System.Windows.Forms; using System.IO; using PrintPreviewRichTextBox; +using System.Threading; namespace RTFPad { @@ -20,44 +18,116 @@ public partial class rtfPadForm : Form private Dictionary selectedColorInTab = new Dictionary(); private Dictionary textToFindInTab = new Dictionary(); private Dictionary matchCaseInTab = new Dictionary(); + private Dictionary tabIsReadOnly = new Dictionary(); protected internal TabControl tabControl = new TabControl(); private FontFamily[] fontList; private string[] colorList = System.Enum.GetNames(typeof(KnownColor)); + private string punctList = ",. :;'\"?!\n\r"; + private bool pastEOD; + private string recentlyEdited = ""; + private string strExeFilePath = System.Reflection.Assembly.GetExecutingAssembly().Location; + private string recentEditPath = @"recentEdits.txt"; + private string autoLoadFile = @"autoload.txt"; + private string MRUhistoryFile = @"mruHistory.txt"; #endregion #region constructor - public rtfPadForm() + public rtfPadForm(string startdoc) { InitializeComponent(); - this.fontList = FontFamily.Families; - foreach (FontFamily font in fontList) + bool ok; + Mutex ownerMutex; + ownerMutex = new System.Threading.Mutex(true, "RTFPad", out ok); + if (!ok) { - this.toolStripCBoxFont.Items.Add(font.Name); - } - foreach (string color in colorList) - { - Color boja = Color.FromKnownColor((KnownColor)System.Enum.Parse(typeof(KnownColor), color)); - if (boja.IsSystemColor == false && boja.Name != Color.Transparent.Name) - this.toolStripFontColor.DropDownItems.Add(color); - + string chkFileName = strExeFilePath.Replace(".exe", "_") + autoLoadFile; + File.AppendAllText(chkFileName, startdoc + "\n\r"); + this.Close(); + Application.Exit(); + return; } + GC.KeepAlive(ownerMutex); + SetupTheForm(); + LoadFileFromParm(startdoc); + } + + private void LoadFileFromParm(string startdoc) + { + int LastSlash = startdoc.LastIndexOf('\\'); + string FileToOpen = startdoc.Substring(LastSlash + 1); + try { OpenFileNamed(this, null, FileToOpen, startdoc); } + catch (Exception exception) { showStdErr(exception); } + } + + public rtfPadForm() + { + InitializeComponent(); + SetupTheForm(); + } + + private void SetupTheForm() + { + SetupTheFonts(); foreach (ToolStripDropDownItem entry in this.toolStripFontColor.DropDownItems) { entry.BackColor = Color.FromKnownColor((KnownColor)System.Enum.Parse(typeof(KnownColor), entry.Text)); Color c = entry.BackColor; int Luminance = (int)(0.2126 * c.R + 0.7152 * c.G + 0.0722 * c.B); if (Luminance > 50) - { - entry.ForeColor = Color.Black; - } + { entry.ForeColor = Color.Black; } else - { - entry.ForeColor = Color.White; - } - + { entry.ForeColor = Color.White; } } + try { recentlyEdited = File.ReadAllText(strExeFilePath.Replace(".exe", "_") + recentEditPath); } + catch { } this.newTab(); this.rtb_SelectionChanged(this, new EventArgs()); + this.toolStripCBoxFont.Text = "Calibri"; + this.toolStripCBoxFontSize.Text = "20"; + this.Height = 750; + SetupMRUlist(); + } + + private void SetupMRUlist() + { + this.menuRecent.DropDownItems.Clear(); + int NumOfMRU = 0; + string MRUhistoryFileName = strExeFilePath.Replace(".exe", "_") + MRUhistoryFile; + if (!File.Exists(MRUhistoryFileName)) { return; } + string[] MRUFileList = File.ReadAllLines(MRUhistoryFileName); + int listCount = MRUFileList.Length; + for (int i = listCount - 1; i >= 0; i--) + { + if (NumOfMRU > 5) { return; } + if (MRUFileList[i] == "") { continue; } + string[] MRUcomponents = MRUFileList[i].Split(new char[] { ';' }); + bool hadMatch = false; + foreach(ToolStripItem aRecentFile in this.menuRecent.DropDownItems) + { + if (aRecentFile.Text == MRUcomponents[0]) + { hadMatch = true; break; } + } + + if (hadMatch) { continue; } + ToolStripMenuItem newMRUitem = new ToolStripMenuItem(); + newMRUitem.Text = MRUcomponents[0]; + newMRUitem.Tag = MRUcomponents[1]; + newMRUitem.Click += new System.EventHandler(this.menuRecentLoad_Click); + this.menuRecent.DropDownItems.Add(newMRUitem); + NumOfMRU++; + } + } + + private void SetupTheFonts() + { + this.fontList = FontFamily.Families; + object[] fontObjects = new object[fontList.Length]; + int fontIdx = 0; + foreach (FontFamily font in fontList) + { + fontObjects[fontIdx++] = font.Name; + } + this.toolStripCBoxFont.Items.AddRange(fontObjects); } #endregion @@ -66,29 +136,6 @@ public rtfPadForm() /* File Exit */ private void menuFileExit_Click(object sender, EventArgs e) { - if (this.tabControl.TabCount <= 0) return; - - for (int i = this.tabControl.TabCount; i >= 0; --i) - { - this.tabControl.SelectedIndex = i; - RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; - - if (rtb.Text != (string)rtb.Tag) - { - - DialogResult result = MessageBox.Show("Do you wish to save changes to " + this.tabControl.SelectedTab.Text + " ?", - "RTFPad", MessageBoxButtons.YesNoCancel); - - if (result == DialogResult.Yes) - { - menuFileSave_Click(sender, e); - } - else if (result == DialogResult.Cancel) - { - return; - } - } - } this.Close(); } @@ -103,70 +150,114 @@ private void menuFileOpen_Click(object sender, EventArgs e) { if (this.dialogOpen.ShowDialog() == DialogResult.OK) { - bool exists = false; - for (int i = 0; i < this.tabControl.TabCount; i++) + string FileToOpen = this.dialogOpen.SafeFileName; + string wholeFileName = this.dialogOpen.FileName; + try { OpenFileNamed(sender, e, FileToOpen, wholeFileName); } + catch (Exception exception) { showStdErr(exception); } + } + } + + private void OpenFileNamed(object sender, EventArgs e, string FileToOpen, string wholeFileName) + { + bool exists = false; + for (int i = 0; i < this.tabControl.TabCount; i++) + { + if (this.tabControl.TabPages[i].Text == FileToOpen) { - if (this.tabControl.TabPages[i].Text == this.dialogOpen.SafeFileName) - { - exists = true; - this.tabControl.SelectedIndex = i; - } + exists = true; + this.tabControl.SelectedIndex = i; } + } + + if (exists) { return; } - if (exists == false) + if (this.tabControl.TabCount < MAX_TABS) this.newTab(); + else + { + DialogResult mBoxResult = MessageBox.Show("Max tab count reached! Do you wish to open the file in the current tab?", + "RTFPad", MessageBoxButtons.YesNoCancel); + switch (mBoxResult) { - if (this.tabControl.TabCount < MAX_TABS) menuFileNew_Click(sender, e); - else - { - DialogResult mBoxResult = MessageBox.Show("Max tab count reached! Do you wish to open the file in the current tab?", - "RTFPad", MessageBoxButtons.YesNoCancel); - switch (mBoxResult) - { - case DialogResult.Yes: this.closeTab(); - this.newTab(); - break; - case DialogResult.No: MessageBox.Show("Close a tab", "RTFPad", MessageBoxButtons.OK); - return; - case DialogResult.Cancel: return; - } + case DialogResult.Yes: + this.closeTab(); + this.newTab(); + break; + case DialogResult.No: + MessageBox.Show("Close a tab", "RTFPad", MessageBoxButtons.OK); + return; + case DialogResult.Cancel: return; + } - } - RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; - - StreamReader value; - openedFileInTab.TryGetValue(this.tabControl.SelectedTab.Text, out value); - if (value != null) - this.openedFileInTab[this.tabControl.SelectedTab.Text].Close(); - - this.fileTypeInTab.Remove(this.tabControl.SelectedTab.Text); - this.fileNameInTab.Remove(this.tabControl.SelectedTab.Text); - this.openedFileInTab.Remove(this.tabControl.SelectedTab.Text); - this.selectedColorInTab.Remove(this.tabControl.SelectedTab.Text); - this.textToFindInTab.Remove(this.tabControl.SelectedTab.Text); - this.matchCaseInTab.Remove(this.tabControl.SelectedTab.Text); - - this.tabControl.SelectedTab.Text = this.dialogOpen.SafeFileName; - int fileType = 0; - if (this.dialogOpen.FilterIndex == 1) - { - rtb.LoadFile(this.dialogOpen.FileName, RichTextBoxStreamType.RichText); - fileType = 1; - } - else - { - rtb.LoadFile(this.dialogOpen.FileName, RichTextBoxStreamType.PlainText); - fileType = 2; - } - rtb.Tag = rtb.Text; - this.openedFileInTab[this.tabControl.SelectedTab.Text] = new StreamReader(this.dialogOpen.FileName); - this.tabControl.SelectedTab.Text = this.dialogOpen.SafeFileName; - this.fileNameInTab[this.tabControl.SelectedTab.Text] = this.dialogOpen.FileName; - this.Text = "RTFPad - " + this.tabControl.SelectedTab.Text; - this.fileTypeInTab[this.tabControl.SelectedTab.Text] = fileType; - this.rtb_SelectionChanged(sender, e); - this.tabControl_SelectedIndexChanged(sender, e); + } + + RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; + + StreamReader value; + openedFileInTab.TryGetValue(this.tabControl.SelectedTab.Text, out value); + if (value != null) + this.openedFileInTab[this.tabControl.SelectedTab.Text].Close(); + + ClearTabInfo(this.tabControl.SelectedTab.Text); + + this.tabControl.SelectedTab.Text = FileToOpen; + int fileType = 0; + string exten = wholeFileName.Substring(wholeFileName.LastIndexOf('.') + 1); + try + { + if (exten.ToLower() == "rtf") + { + rtb.LoadFile(wholeFileName, RichTextBoxStreamType.RichText); + fileType = 1; } + else + { + rtb.LoadFile(wholeFileName, RichTextBoxStreamType.PlainText); + fileType = 2; + } + } + catch (Exception loadEx) + { + int badTab = this.tabControl.SelectedIndex; + this.tabControl.SelectedIndex--; + this.tabControl.TabPages.RemoveAt(badTab); + throw loadEx; } + rtb.Tag = rtb.Text; + this.openedFileInTab[this.tabControl.SelectedTab.Text] = new StreamReader(wholeFileName); + this.tabControl.SelectedTab.Text = FileToOpen; + this.fileNameInTab[this.tabControl.SelectedTab.Text] = wholeFileName; + this.Text = "RTFPad - " + this.tabControl.SelectedTab.Text; + this.fileTypeInTab[this.tabControl.SelectedTab.Text] = fileType; + this.rtb_SelectionChanged(sender, e); + this.tabControl_SelectedIndexChanged(sender, e); + if (!recentlyEdited.Contains(wholeFileName)) + { + btnEditDocument.Visible = true; + rtb.ReadOnly = true; + this.tabIsReadOnly[this.tabControl.SelectedTab.Text] = true; + this.tabControl.SelectedTab.BackColor = Color.Blue; + this.menuFileSave.Enabled = false; + this.menuFileSaveAs.Enabled = false; + this.toolStripSave.Enabled = false; + } + else + { + string backupFileName = wholeFileName.Substring(0, wholeFileName.LastIndexOf('.')) + ".bak"; + File.Copy(wholeFileName, backupFileName, true); + this.tabIsReadOnly[this.tabControl.SelectedTab.Text] = false; + } + if (rtb.TextLength > 1000) { btnToBottom.Visible = true; } + } + + private void ClearTabInfo(string tabName) + { + this.fileTypeInTab.Remove(tabName); + this.fileNameInTab.Remove(tabName); + this.openedFileInTab.Remove(tabName); + this.selectedColorInTab.Remove(tabName); + this.textToFindInTab.Remove(tabName); + this.matchCaseInTab.Remove(tabName); + this.tabIsReadOnly.Remove(tabName); } /* File Save As */ @@ -180,12 +271,7 @@ private void menuFileSaveAs_Click(object sender, EventArgs e) if (value != null) this.openedFileInTab[this.tabControl.SelectedTab.Text].Close(); - this.fileTypeInTab.Remove(this.tabControl.SelectedTab.Text); - this.fileNameInTab.Remove(this.tabControl.SelectedTab.Text); - this.openedFileInTab.Remove(this.tabControl.SelectedTab.Text); - this.selectedColorInTab.Remove(this.tabControl.SelectedTab.Text); - this.textToFindInTab.Remove(this.tabControl.SelectedTab.Text); - this.matchCaseInTab.Remove(this.tabControl.SelectedTab.Text); + ClearTabInfo(this.tabControl.SelectedTab.Text); this.tabControl.SelectedTab.Text = this.dialogSave.FileName.Substring(this.dialogSave.FileName.LastIndexOf('\\') + 1); @@ -214,6 +300,7 @@ private void menuFileSaveAs_Click(object sender, EventArgs e) private void menuFileSave_Click(object sender, EventArgs e) { RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; + rtb.Tag = rtb.Text; string currentTabKey = this.tabControl.SelectedTab.Text; StreamReader value; this.openedFileInTab.TryGetValue(currentTabKey, out value); @@ -391,11 +478,13 @@ private void menuViewWordWrap_Click(object sender, EventArgs e) { rtb.WordWrap = false; menuViewWordWrap.Checked = false; + rtb.ScrollBars = RichTextBoxScrollBars.ForcedBoth; } else { rtb.WordWrap = true; menuViewWordWrap.Checked = true; + rtb.ScrollBars = RichTextBoxScrollBars.ForcedVertical; } } #endregion @@ -540,23 +629,16 @@ private void toolStripCBoxFontSize_SelectedIndexChanged(object sender, EventArgs } /* Tool Strip Color */ - private void toolStripFontColor_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + private void toolStripFontColor_Click(object sender, EventArgs e) { - if (this.tabControl.TabCount <= 0) return; - - RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; - rtb.SelectionColor = Color.FromKnownColor((KnownColor)System.Enum.Parse(typeof(KnownColor), e.ClickedItem.Text)); - - if (!this.selectedColorInTab.ContainsKey(this.tabControl.SelectedTab.Text)) - this.selectedColorInTab.Add(this.tabControl.SelectedTab.Text, default(int)); + ColorDialog MyDialog = new ColorDialog(); + MyDialog.Color = Color.Black; - int index; - this.selectedColorInTab.TryGetValue(this.tabControl.SelectedTab.Text, out index); - - ((ToolStripMenuItem)this.toolStripFontColor.DropDownItems[index]).Checked = false; - this.selectedColorInTab[this.tabControl.SelectedTab.Text] = this.toolStripFontColor. - DropDownItems.IndexOf((ToolStripMenuItem)e.ClickedItem); - ((ToolStripMenuItem)e.ClickedItem).Checked = true; + if (MyDialog.ShowDialog() == DialogResult.OK) + { + RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; + rtb.SelectionColor = MyDialog.Color; + } } /* Tool Strip Undo */ @@ -789,12 +871,14 @@ private void newTab() rtb.Dock = DockStyle.Fill; rtb.Multiline = true; rtb.WordWrap = true; - rtb.ScrollBars = RichTextBoxScrollBars.Both; + //rtb.ScrollBars = RichTextBoxScrollBars.Both; + rtb.ScrollBars = RichTextBoxScrollBars.ForcedVertical; rtb.EnableAutoDragDrop = true; rtb.AcceptsTab = true; rtb.AutoWordSelection = true; rtb.DetectUrls = true; rtb.HideSelection = false; + rtb.ShowSelectionMargin = true; rtb.Tag = rtb.Text; rtb.SelectionChanged += new EventHandler(rtb_SelectionChanged); @@ -802,6 +886,7 @@ private void newTab() rtb.KeyDown += new KeyEventHandler(rtb_KeyDown); this.Text = "RTFPad - " + this.tabControl.SelectedTab.Text; fileTypeInTab[this.tabControl.SelectedTab.Text] = 1; + tabIsReadOnly[this.tabControl.SelectedTab.Text] = false; changeUIState_CloseCurrentTabButton(); tabControl_SelectedIndexChanged(this, new EventArgs()); this.ActiveControl = rtb; @@ -817,26 +902,60 @@ private void newTab() */ private void closeTab() { - if (this.tabControl.TabCount <= 0) + int rtfTabCount = this.tabControl.TabCount; + int tabFormerLoc = this.tabControl.SelectedIndex; + if (rtfTabCount <= 0) { MessageBox.Show("There are no tabs", "Cannot Close Tab", MessageBoxButtons.OK); return; } + string tabKey = this.tabControl.SelectedTab.Text; - this.fileNameInTab.Remove(tabKey); - this.fileTypeInTab.Remove(tabKey); - this.openedFileInTab.Remove(tabKey); - this.selectedColorInTab.Remove(tabKey); - this.textToFindInTab.Remove(tabKey); - this.matchCaseInTab.Remove(tabKey); - //this.tabControl.TabPages.RemoveByKey("tab " + this.tabControl.SelectedIndex.ToString()); + + // add to MRU list and history + if (this.tabControl.SelectedTab.Controls[0].Text != "") + { + ToolStripMenuItem newMRUitem = new ToolStripMenuItem(); + newMRUitem.Text = tabKey; + newMRUitem.Tag = this.fileNameInTab[tabKey]; + newMRUitem.Click += new System.EventHandler(this.menuRecentLoad_Click); + this.menuRecent.DropDownItems.Insert(0, newMRUitem); + string MRUhistoryFileName = strExeFilePath.Replace(".exe", "_") + MRUhistoryFile; + File.AppendAllText(MRUhistoryFileName, tabKey + ";" + this.fileNameInTab[tabKey] + "\n\r"); + } + + // remove tab info and tab + ClearTabInfo(tabKey); this.tabControl.TabPages.RemoveAt(this.tabControl.SelectedIndex); + + // reposition to last tab, or one to the right of former tab + int newTabIdx = tabFormerLoc; + if (tabFormerLoc > rtfTabCount - 2) { newTabIdx = rtfTabCount - 2; } + this.tabControl.SelectedIndex = newTabIdx; } /* Function which finds the first occurence of textToFind in the textbox * Used by: Find, Find Next, Replace, Replace All */ + protected internal bool findText(string textToFind, bool searchDirectionDown, bool matchCase) + { + return findTextWhole(textToFind, searchDirectionDown, matchCase, false); + } + + protected internal bool findTextWhole(string textToFind, bool searchDirectionDown, bool matchCase, bool wholeWord) + { if (!wholeWord) + { return BasicFind(textToFind, searchDirectionDown, matchCase, wholeWord); } + pastEOD = false; + while (!pastEOD) + { + bool findResult = BasicFind(textToFind, searchDirectionDown, matchCase, wholeWord); + if (findResult) {return true;} + } + return false; + } + + private bool BasicFind(string textToFind, bool searchDirectionDown, bool matchCase, bool wholeWord) { RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; StringComparison comparator = matchCase ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; @@ -859,7 +978,29 @@ protected internal bool findText(string textToFind, bool searchDirectionDown, bo { startIndex = rtb.Text.LastIndexOf(textToFind, rtb.SelectionStart, comparator); } - if (startIndex == -1 || startIndex >= rtb.Text.Length) return false; + if (startIndex == -1 || startIndex >= rtb.Text.Length) + { + pastEOD = true; + return false; + } + if (wholeWord) + { + string checkpunct; + try { checkpunct = rtb.Text.Substring(startIndex - 1, 1); } + catch { checkpunct = " "; } + if (!punctList.Contains(checkpunct)) + { + rtb.Select(startIndex, length); + return false; + } + try { checkpunct = rtb.Text.Substring(startIndex + length, 1); } + catch { checkpunct = " "; } + if (!punctList.Contains(checkpunct)) + { + rtb.Select(startIndex, length); + return false; + } + } rtb.Select(startIndex, length); rtb.ScrollToCaret(); return true; @@ -868,12 +1009,12 @@ protected internal bool findText(string textToFind, bool searchDirectionDown, bo /* Function which replaces the first occurence of textToReplace with replaceWith * Used by: Replace, Replace All */ - protected internal bool replaceText(string textToReplace, string replaceWith, bool matchCase) + protected internal bool replaceText(string textToReplace, string replaceWith, bool matchCase, bool matchword) { RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; if (rtb.SelectedText.Length == 0 || rtb.SelectedText.ToLower() != textToReplace.ToLower()) { - return findText(textToReplace, true, matchCase); + return findTextWhole(textToReplace, true, matchCase, matchword); } else { @@ -885,14 +1026,14 @@ protected internal bool replaceText(string textToReplace, string replaceWith, bo /* Replaces all matching text with another * Used by: Replace All */ - protected internal void replaceAllInText(string textToReplace, string replaceWith, bool matchCase) + protected internal void replaceAllInText(string textToReplace, string replaceWith, bool matchCase, bool matchWord) { RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; rtb.SelectionStart = 0; rtb.SelectionLength = 0; - while (this.findText(textToReplace, true, matchCase)) + while (this.findTextWhole(textToReplace, true, matchCase, matchWord)) { - replaceText(textToReplace, replaceWith, matchCase); + replaceText(textToReplace, replaceWith, matchCase, matchWord); } } @@ -927,7 +1068,7 @@ protected override bool ProcessCmdKey(ref Message msg, Keys keyData) /* Blocks Ctrl + i in tab to act as the tab key - * + * In ReadOnly, a space sends a page down */ private void rtb_KeyDown(object sender, KeyEventArgs e) { @@ -937,6 +1078,29 @@ private void rtb_KeyDown(object sender, KeyEventArgs e) { e.SuppressKeyPress = true; } + if (rtb.ReadOnly && e.KeyCode == Keys.Space) + { + SendKeys.Send("{PGDN}"); + e.SuppressKeyPress = true; + } + } + + + private void showStdErr(Exception exception) + { + MessageBox.Show("Error: " + exception.ToString(), "RTFPad"); + } + + private void timerAutoloadFile_Tick(object sender, EventArgs e) + { + string chkFileName = strExeFilePath.Replace(".exe", "_") + autoLoadFile; + if (!File.Exists(chkFileName)) { return; } + string[] loadFileList = File.ReadAllLines(chkFileName); + File.Delete(chkFileName); + foreach (string loadFile in loadFileList) + { + if (loadFile.Length > 2) { LoadFileFromParm(loadFile); } + } } #endregion @@ -948,7 +1112,7 @@ private void rtb_TextChanged(Object sender, EventArgs e) if (rtb.TextLength == 0) { this.menuEditFind.Enabled = false; - this.toolStripFind.Enabled = false; + //this.toolStripFind.Enabled = false; this.menuEditFindNext.Enabled = false; this.menuEditReplace.Enabled = false; this.menuEditSelectAll.Enabled = false; @@ -957,7 +1121,7 @@ private void rtb_TextChanged(Object sender, EventArgs e) else { this.menuEditFind.Enabled = true; - this.toolStripFind.Enabled = true; + //this.toolStripFind.Enabled = true; this.menuEditFindNext.Enabled = true; this.menuEditReplace.Enabled = true; this.menuEditSelectAll.Enabled = true; @@ -995,7 +1159,7 @@ private void rtb_SelectionChanged(Object sender, EventArgs e) if (rtb.TextLength == 0) { this.menuEditFind.Enabled = false; - this.toolStripFind.Enabled = false; + //this.toolStripFind.Enabled = false; this.menuEditFindNext.Enabled = false; this.menuEditReplace.Enabled = false; this.menuEditSelectAll.Enabled = false; @@ -1004,7 +1168,7 @@ private void rtb_SelectionChanged(Object sender, EventArgs e) else { this.menuEditFind.Enabled = true; - this.toolStripFind.Enabled = true; + //this.toolStripFind.Enabled = true; this.menuEditFindNext.Enabled = true; this.menuEditReplace.Enabled = true; this.menuEditSelectAll.Enabled = true; @@ -1036,17 +1200,17 @@ private void rtb_SelectionChanged(Object sender, EventArgs e) { this.menuEditClear.Enabled = false; this.menuEditCut.Enabled = false; - this.toolStripCut.Enabled = false; + //this.toolStripCut.Enabled = false; this.menuEditCopy.Enabled = false; - this.toolStripCopy.Enabled = false; + //this.toolStripCopy.Enabled = false; } else { this.menuEditClear.Enabled = true; this.menuEditCut.Enabled = true; - this.toolStripCut.Enabled = true; + //this.toolStripCut.Enabled = true; this.menuEditCopy.Enabled = true; - this.toolStripCopy.Enabled = true; + //this.toolStripCopy.Enabled = true; } if (rtb.SelectionFont.Bold) this.toolStripBold.Checked = true; else this.toolStripBold.Checked = false; @@ -1085,7 +1249,7 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e) this.Text = "RTFPad - " + this.tabControl.SelectedTab.Text; this.rtb_SelectionChanged(sender, e); this.menuEditPaste.Enabled = true; - this.toolStripPaste.Enabled = true; + //this.toolStripPaste.Enabled = true; this.menuFilePrint.Enabled = true; this.toolStripPrint.Enabled = true; this.menuFilePrintPreview.Enabled = true; @@ -1100,7 +1264,7 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e) if (this.fileTypeInTab[this.tabControl.SelectedTab.Text] == 2) { this.toolStripCBoxFont.Visible = false; - this.toolStripCBoxFontSize.Visible = false; + //this.toolStripCBoxFontSize.Visible = false; this.toolStripFontColor.Visible = false; this.toolStripBold.Visible = false; this.toolStripItalic.Visible = false; @@ -1121,7 +1285,7 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e) else { this.menuEditFind.Enabled = false; - this.toolStripFind.Enabled = false; + //this.toolStripFind.Enabled = false; this.menuEditFindNext.Enabled = false; this.menuEditReplace.Enabled = false; this.menuEditSelectAll.Enabled = false; @@ -1131,11 +1295,11 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e) this.toolStripRedo.Enabled = false; this.menuEditClear.Enabled = false; this.menuEditCut.Enabled = false; - this.toolStripCut.Enabled = false; + //this.toolStripCut.Enabled = false; this.menuEditCopy.Enabled = false; - this.toolStripCopy.Enabled = false; + //this.toolStripCopy.Enabled = false; this.menuEditPaste.Enabled = false; - this.toolStripPaste.Enabled = false; + //this.toolStripPaste.Enabled = false; this.menuFilePrint.Enabled = false; this.toolStripPrint.Enabled = false; this.menuFilePrintPreview.Enabled = false; @@ -1146,6 +1310,14 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e) this.toolStripAlignCenter.Checked = false; this.toolStripAlignRight.Checked = false; } + + try + { + if (this.tabIsReadOnly[this.tabControl.SelectedTab.Text] == true) + { btnEditDocument.Visible = true; } + else { btnEditDocument.Visible = false; } + } + catch { } } /* Checks if the mouse is over the tab header @@ -1168,18 +1340,70 @@ private void tabControl_MouseUp(object sender, MouseEventArgs e) } } - /* Event which watches for the change in form size - * Used for styling the Tool Strip so it's displayed in two rows when possible - */ - private void rtfPadForm_SizeChanged(object sender, EventArgs e) + private void rtfPadForm_Resize(object sender, EventArgs e) { - if (this.WindowState == FormWindowState.Maximized || this.Size.Width > 900 ) - { - toolStripSeparator5.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0); - } - else + this.toolStrip.ImageScalingSize = new Size(16, 16); + } + + private void btnToBottom_Click(object sender, EventArgs e) + { + RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; + rtb.BringToFront(); + rtb.Focus(); + SendKeys.Send("^({END})"); + btnToBottom.Visible = false; + } + + private void btnEditDocument_Click(object sender, EventArgs e) + { + btnEditDocument.Visible = false; + string currentTabKey = this.tabControl.SelectedTab.Text; + string wholeFileName = this.fileNameInTab[currentTabKey]; + recentlyEdited = wholeFileName + ";" + recentlyEdited; + RichTextBox rtb = (RichTextBox)this.tabControl.SelectedTab.Controls[0]; + rtb.ReadOnly = false; + this.tabIsReadOnly[this.tabControl.SelectedTab.Text] = false; + this.menuFileSave.Enabled = true; + this.menuFileSaveAs.Enabled = true; + this.toolStripSave.Enabled = true; + this.tabControl.SelectedTab.BackColor = SystemColors.Control; + string backupFileName = wholeFileName.Substring(0, wholeFileName.LastIndexOf('.')) + ".bak"; + File.Copy(wholeFileName, backupFileName, true); + } + + private void rtfPadForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (this.tabControl.TabCount <= 0) return; + + int maxEdLen = recentlyEdited.Length; + if (maxEdLen > 500) { maxEdLen = 500; } + File.WriteAllText(strExeFilePath.Replace(".exe", "_") + recentEditPath, + recentlyEdited.Substring(0, maxEdLen)); + + string MRUhistoryFileName = strExeFilePath.Replace(".exe", "_") + MRUhistoryFile; + + for (int i = this.tabControl.TabCount; i > 0; --i) { - toolStripSeparator5.Margin = new System.Windows.Forms.Padding(0, 0, 500, 0); + this.tabControl.SelectedIndex = i; + string tabKey = this.tabControl.SelectedTab.Text; + File.AppendAllText(MRUhistoryFileName, tabKey + ";" + this.fileNameInTab[tabKey] + "\n\r"); + + RichTextBox rtb = (RichTextBox)this.tabControl.TabPages[i - 1].Controls[0]; + if (rtb.Text != rtb.Tag.ToString()) + { + DialogResult result = MessageBox.Show("Do you wish to save changes to " + this.tabControl.SelectedTab.Text + " ?", + "RTFPad", MessageBoxButtons.YesNoCancel); + + if (result == DialogResult.Yes) + { + menuFileSave_Click(sender, e); + } + else if (result == DialogResult.Cancel) + { + e.Cancel = true; + return; + } + } } } #endregion @@ -1386,5 +1610,13 @@ private void toolStripBullet_MouseLeave(object sender, EventArgs e) this.statusStripInfoLabel.Text = ""; } #endregion + + private void menuRecentLoad_Click(object sender, EventArgs e) + { + ToolStripMenuItem MRUtoOpen = (ToolStripMenuItem)sender; + string shortFileName = MRUtoOpen.Text; + string MRUfileToOpen = MRUtoOpen.Tag.ToString(); + OpenFileNamed(sender, null, shortFileName, MRUfileToOpen); + } } } \ No newline at end of file diff --git a/rtfPadForm.resx b/rtfPadForm.resx index 1b7a409..cec2cb5 100644 --- a/rtfPadForm.resx +++ b/rtfPadForm.resx @@ -112,33 +112,33 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 216, 56 + + 1165, 17 - - 118, 56 + + 1030, 17 - - 331, 56 + + 17, 63 - - 556, 56 + + 328, 63 - - 447, 56 + + 178, 63 - - 17, 56 + + 892, 17 - - 128, 17 + + 168, 17 - + AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA @@ -312,546 +312,333 @@ wf+0BQAAgAUAAIAFAACAAQAAgAHB/4ABAACAAQAAgAEAALwBAAC8AQAAvAHB/4ABbP///5H/ - + 17, 17 - - 281, 17 + + 382, 17 - - 540, 17 + + 739, 17 - - 425, 17 + + 582, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAPCAYAAADtc08vAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW + JQAAFiUBSVIk8AAAAhhJREFUOE/N099Lk1Ecx3H/hCDI5vPs+f3smeIUxaVkIog/LlyD0NyFVBCWLcUk + CCS96Mc0oUA0gsBQiyCEoA1sF1YENRduWg1LWBAFGppB/8I7nrayOaPbLr4X5/A9r3Pgez4FmquYvLLc + +XuuYvQda4diUfBrIasa5Y0Bxm9N0NVRh6CY2UYLUS4l0HOZOzeHaax0IeqZC3IASZapbD/P4uu3jPYc + ptCpZwETh1DBubE50m+itNWZPw/uClS09fMyscRw0JcH9N6I8C4Z4cihfwGLyb8AYVYS/yngRtYMipxS + LiAoOFUDUVMp3AHsE3Ukw8oAslVGVX0TZYaDEn8fscQSodPN7FHKqG1uouFgDcLeEoLXM4DPK6FWean1 + VmWA/UY5J0bucy90ivqOXp69WGCo5yitA7eZmgwxMz1Dv6+Ds1dmWY7NEvDXM/pgiovtLRlAUAxagtdI + rX4kEp4jHlsgHI2SSK8yMXCSoalHrKSSzEfjLCeeM/f0CenUPMcasi/QDBOn5qFz8C7v17bYWF9j6+sn + Ho5dwKOpSN5WJsJxvn3fYv3LJhvpJINdPkRV356CohkIajndV6f5sLHG48lLVJsmgmoiyirGAT/j4Vds + fk4x0hdAVFQkw507RlnTUYpr6Ow+Q1O1hyI7C5YdIDeipFHaGCAYPE6JYU9ml39gl2qYFDnV3w1/lh02 + h1NDNreTagM/AHb2ypKZSGYxAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW + JQAAFiUBSVIk8AAAAnhJREFUSEvtkttLk3Ech/0X6qbLdrCtWc2UxG6aSF1HJw+lgmmGEHgRFnRhbnNq + aIlEBzMrS517984t5yQwCSnKytrChE5YWRB0F4zSucMTm1n6bpqb2ZUP/C5+hw8Pn+/7JvEfSZIerCSr + skXpd7loq21gxOOWXs1j2TKnIHJVnsXQWh0tmbt55l5YuCyZ66YZi3wnAU0hpJXhVeZwa/s+Xo6OSp9G + SFjmGBjgctlxptNLCKUU4UstJrS1BK8yl47MvXiejEgjicmcQidnqip58eYtny9YmNpWil9TwFRqcaSh + e00WHaaz0lj8MrtopTtXxmRjNu8eOvG8/8jERQuTGUcIaYqY1hTSItfR77gtjcYn67XbMOcng14NehW+ + xizG79vwfJjg0xURb0YpbTIddqsojUZYsqzPJtCVJydQrYIaLRi3wOkN+Bt2MP7AjufVa+oPH8N6rV0a + /c2SZL09ArZDyQT1KjD9Es0uvQp/g476UxVY+vqk0Xn8VeZy2LAVKMGwMVoU3hvUWPLW4xQ6pNEoFpU5 + bQKWfAWh8DeqmSMJr1otwWo1nXlKeoRuaTQmC8r+jE4d3ahGS6BazfUDMkSLWRpdkJiyO3YB20HFzF8n + FYX3ejXtOQp6RKs0uigxZV3nKvhWlwbGFDBsjhpdWCTE0WiWmLKxwWZ+DJbDpWyo0swITVr8CYxuLjFl + 38faCD4/CY8roWUXGDdFGrXuVyBa4xvdXKJkdruDhzfKCLgr8T09gfduOV9M6bTukWE2J9ZoliiZQW8k + U7mOr8PnGR9q5p5YR1PVUcTuLunTuImSDT8apqmpmUlfUHq1bKJkK8mq7J/wE4qehPLFMDgAAAAAAElF + TkSuQmCC + + + + 482, 63 + + + 121 - AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA - IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAAL7yAAI3///8B////AbyAACW8gACpvIAAi7yAAGG8gAA/vIAAqbyAAJu8gABF////Af// - /wH///8B////AbyAABW8gADtvIAAIbyAAAu7gABtvIAAl7yAAG+8gACpvIAAlbyAAG+7gACXvIAAf/// - /wH///8B////Af///wH///8BvIAA37yAAMG7gADbvIAAZ7yAANW8gABTvIAA37yAAE+8gADBvIAAb7yA - ALP///8B////Af///wH///8B////AbyAAKm7gABbvIAAf7yAAJu8gAAvvIAAdbyAAGm8gAAFvIAAP7yA - AH28gADhvIAAA////wH///8B////Af///wG8gABvvIAA27yAANe8gABH////ASOrIyMjqyMH////Af// - /wH///8BvIAA27yAAB8jqyMDI6sjfSOrI20jqyMb////Af///wH///8BI6sjAyOrI2siqyJ5I6sjjSOr - I08jqyMD////AbyAABG7gAAF////Af///wEjqyMhI6ojcyKrIo0jqyNfI6sjJSOrI40jqyM1////Af// - /wEjqyNFI6sjjyOqI0H///8B////ASsr1gksLNYDKyvVBSws1gf///8BJJVBOSOqJG0knDcPLCzWCf// - /wH///8B////ASOrIwMjqyNVI6sjRf///wEsLNW9LCzWSSws1ZMsLNZ9LCzWAyws1t0sLNYnLCzVESsr - 1u8sLNYF////Af///wH///8B////Af///wH///8BLCzVhyws1p8sLNbXLCzVNf///wEsLNarLCzWWf// - /wEsLNbZLCzWPyws1hX///8B////Af///wH///8B////ASws1lMsLNXhLCzVoSws1qH///8BLCzWeSws - 1ov///8BLCzWpSws1tEsLNWH////Af///wH///8B////Af///wEsLNYfLCzW5yws1kkrK9b7LCzWIysr - 1m8sLNbHLCzWMyws1XUsLNajLCzWMyws1Q3///8B////Af///wH///8BLCzVAyws1o8sLNaZLCzWXSws - 1jssLNWZLCzVmSws1ZksLNZHLCzVmSws1ZksLNUx////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA - //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA - AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AbuAAEW8gABxvIAAMf///wH///8B////Af///wH///8BvIAACbyA - AFm8gABfvIAAGbyAAGe8gABpvIAAC////wG8gAAbvIAAZ7uAAF+8gAArvIAAcbyAAE////8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8Bu4AAd7yAAP+8gACT////Af///wH///8B////Af// - /wG8gACNvIAA/7yAAOm7gADBvIAA7byAAPe7gAAbvIAACbyAANe8gAD/vIAA37yAAM+8gAD/vIAAwf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gABDvIAA/7yAAMf///8B////Af// - /wH///8B////AbyAANu8gAD7vIAANbyAADG8gADtvIAA/7yAADm8gAAzvIAA+7yAANm8gAALvIAAb7yA - AP+8gADbvIAACf///wH///8B////Af///wH///8B////Af///wH///8B////AbyAABG8gAD9vIAA8byA - AEW7gAA7vIAAI7uAAAP///8BvIAA1byAAPu7gAAt////AbuAAJu8gAD/u4AAb7yAAC28gAD7vIAA1f// - /wG8gAANvIAA37yAAPe8gAAf////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbuA - ANe8gAD/vIAA/7yAAP28gAD3vIAAvbyAACO8gACRvIAA/7yAAHv///8BvIAAWbyAAP+8gACnvIAABbyA - AN28gAD5vIAAMf///wG7gACpvIAA/7yAAE3///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAAo7yAAP+8gACjvIAAY7uAALu8gAD/u4AAzbyAAB28gADlvIAA9buAAIG8gABzvIAA/byA - ANe8gAAJvIAATbyAAPu8gADbvIAAZ7yAAKm8gAD/vIAAgf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wG8gABvvIAA/7yAAJn///8BvIAAEbuAAOu8gAD/u4AAL7yAAB27gACbvIAA4byA - APO8gADlvIAAu7yAAA////8BvIAAPbyAALm8gADtvIAA77yAAP+8gAC3////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AbyAADu8gAD/vIAAzf///wG8gAAZvIAA67yAAP+8gAA9////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAAXvIAA7byAAOG7gAAL////Af// - /wH///8B////Af///wH///8B////Af///wH///8BvIAAD7yAAPe8gAD5vIAAxbyAAOG8gAD/vIAA4byA - AA////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyAAAO8gADPvIAA/byA - ACP///8B////Af///wH///8B////Af///wH///8B////Af///wG7gAAFvIAAsbyAANe8gADXvIAA0byA - AKe8gAAv////Af///wH///8BI6sjHSOrI2sjqyMX////Af///wH///8B////Af///wH///8B////AbyA - AJ+8gAD/u4AAV////wH///8BI6sjBSOrI40jqyNnI6sjHf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////ASOrI0sjqyPTI6ojwSOrI9kjqyNrI6sjD////wH///8B////Af// - /wH///8BvIAAF7yAACm7gAAT////Af///wEjqyMDI6sjUyOrI7MjqyPjI6sjsSOrI1kiqiIV////Af// - /wH///8B////Af///wH///8B////ASOrIwUjqyOHI6sj1yOrI0UjqyMFI6sjOyOrI7MjqyPTI6sjWyOr - IwX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjAyOrIxsjqiNlI6sjvyOr - I+UjqyObI6sjSSOrIwn///8B////Af///wEjqyMjI6sjvyOrI7EjqyMb////Af///wH///8BI6sjBSOq - I0kjqiPDI6sjzyOrI1MjqyMF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEjqyMDI6ojIyOrI38jqyPRI6oj5SKrIo8jqyMzI6sjXSOrI+MjqyNvI6sjBf///wH///8B////Af// - /wH///8B////ASOrIwUjqyNLI6sjzyOrI8EjqyM9I6sjA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMtI6sjiyOrI+EjqyPLI6sjMf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMHI6sjYyOrI98jqyOnI6sjC////wH///8BLCzWDyws - 1RUsLNYJ////ASws1gMsLNYTLCzVFSws1gX///8B////ASws1hMsLNYVLCzWA////wH///8BLCzWByws - 1RUsLNYP////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjDyOrI1kjqyMJ////Af// - /wErK9aTLCzW/ysr1nf///8BKyvWHSws1vEsLNb9LCzWG////wEsLNYHLCzW0Sws1v0sLNYz////Af// - /wEsLNY3LCzW/yws1tH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASws1l8sLNb/LCzWq////wEsLNZDLCzW/yws1tcsLNYF////Af///wEsLNalLCzW/yws - 1WX///8B////ASws1gksLNb5LCzW7ysr1RH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BLCzVKyws1v8sLNbbLCzVBSws1oEsLNb/LCzWnf///wH///8B////ASws - 1nEsLNb/LCzWl////wH///8B////ASws1s0sLNb7KyvWN////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wErK9YJLCzW7Sws1fcsLNalLCzW7yws1u0sLNY3////Af// - /wH///8BLCzWPyws1v8sLNbJKyvWA////wH///8BLCzWmSws1v8sLNaDKyvWPSsr1j0sLNYX////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////ASws1gMrK9a/LCzW/yws1v8sLNb/LCzV9Sws - 1qUsLNYb////Af///wEsLNYZLCzW8yws1ussLNYT////Af///wEsLNZlLCzW/yws1v8sLNb/LCzW/yws - 1oH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASws1o0sLNb/LCzWgysr - 1hMsLNZ/LCzW/Sws1sf///8B////ASws1gUsLNbTLCzW/yws1jP///8B////ASws1jEsLNb/KyvW5yws - 1l0sLNZdLCzVPf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BLCzWVyws - 1v8sLNaz////ASws1hcsLNbzLCzW/yws1R3///8B////ASws1qMsLNb/LCzWZ////wH///8BLCzWCyws - 1vEsLNbvLCzWGf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEsLNYlLCzW/Sws1uksLNZrLCzWoysr1v0sLNb5LCzWEyws1l0sLNZnLCzVsSws1v8sLNa7LCzWZyws - 1mcsLNYXLCzVwyws1v0sLNaFLCzWZyws1mcsLNUv////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASws1gssLNbjLCzW/yws1v8sLNb9LCzW7Sws1W8sLNYDLCzWwyws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1lksLNaRLCzW/yws1v8sLNb/LCzW/yws1pv///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////ASws1SksLNYzLCzWMyws1TEsLNYX////Af///wEsLNYjLCzWMyws - 1jMsLNYzLCzWMyws1jMsLNYzLCzWGSws1hksLNYzLCzWMyws1jMsLNYzLCzWJf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wG7gAAnvIAAKbyAACe7gAAJ////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAGbyA - ACm8gAAdvIAAA7yAABW8gAApvIAAKbuAABf///8B////Af///wG8gAAHvIAAI7yAACm8gAAdvIAABbyA - ACW8gAApu4AAJbyAAAf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wG8gADZvIAA/7uAAPe8gAA/////Af///wH///8B////Af///wH///8B////Af// - /wG8gABRvIAA3buAAP28gADnu4AAgbyAAH+8gAD/u4AA/7uAAI3///8B////AbyAAA+8gAClvIAA8byA - AP+8gADjvIAAb7yAANm7gAD/vIAA67yAACX///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wG8gAClu4AA/7yAAP+7gABr////Af///wH///8B////Af// - /wH///8B////AbyAABO8gADnvIAA/7yAAP28gADRu4AA1byAANW8gAD/u4AA/7yAAKP///8B////AbyA - AHm8gAD9vIAA/7yAAOu8gADJu4AA57uAAPG7gAD/u4AA97yAAC////8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG7gABxu4AA/7yAAP+7gACf////Af// - /wH///8B////Af///wH///8B////AbuAAEm8gAD7u4AA/7uAAM27gAAPvIAAH7uAAL28gAD/u4AA/7uA - AL+7gAAL////AbyAAL+7gAD/vIAA/byAAGO8gAAJvIAAXbyAAPW7gAD/u4AA/7yAAEv///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAA7vIAA/7yA - AP+8gADRvIAAA////wH///8B////Af///wH///8B////AbyAAFe8gAD9vIAA/7yAAKf///8B////AbuA - AD28gAD1vIAA/7yAAOO8gAAb////AbyAAM28gAD/u4AA+buAADP///8Bu4AAB7yAAKe8gAD/vIAA/7yA - AHv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wG8gAANu4AA+7yAAP+8gADvvIAAabuAAF28gABVvIAAP7yAABP///8B////AbyAAD28gAD7vIAA/7uA - AMX///8B////AbyAAA27gADHvIAA/7yAAP28gAA5////AbuAALO7gAD/vIAA+7uAAE////8B////AbyA - AE+7gAD9vIAA/7uAAK27gAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8Bu4AA0byAAP+7gAD/vIAA/7yAAP+7gAD9u4AA9byAAN+8gACBvIAADbyA - AAu8gADpvIAA/7yAAPG8gAAn////Af///wG7gACTvIAA/7uAAP+8gABt////AbuAAHG8gAD9vIAA/7uA - AJ3///8B////AbuAACO7gADpvIAA/7uAANG8gAAT////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8Bu4AAnbuAAP+8gAD/vIAA/7yAAP+8gAD/vIAA/7yA - AP+7gAD9vIAAr7uAAAu8gACBu4AA/7uAAP+8gACtvIAAC////wG8gABbu4AA/7uAAP+7gACjvIAAA7uA - ABW8gADlu4AA/7yAAPO8gABJ////AbuAAA28gADJu4AA/7uAAPW7gAAl////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAabyAAP+8gAD/vIAAqbuA - AAu8gAAbvIAAc7yAAPO8gAD/vIAA/7uAAGO8gAAJvIAAw7uAAP+8gAD9u4AA0buAAIe8gACfvIAA/byA - AP+7gADPvIAAD////wG7gABFvIAA9byAAP+8gAD1u4AApbyAAIG8gADZu4AA/7yAAP+8gABP////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAM7yA - AP+7gAD/vIAA07uAAAf///8B////AbyAAIu8gAD/vIAA/7yAALm8gAAFvIAAC7uAAI+7gADvvIAA+7yA - AP+8gAD/u4AA/byAAPu8gADvvIAAHf///wH///8BvIAANbyAAMW8gAD5vIAA/byAAP+8gAD9vIAA/7uA - AP+8gACF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAADbuAAPO8gAD/vIAA6byAACX///8B////AbyAAFW8gAD/u4AA/7uAANm8gAAH////Af// - /wG7gAAVvIAATbyAAGu8gABtu4AAYbyAAEW7gAAdvIAAA////wH///8B////AbyAAAO8gAA1u4AAY7yA - AG+8gAB/vIAA9buAAP+8gAC1u4AAB////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BvIAABbuAAMW7gAD/u4AA+byAAEn///8BvIAAC7yAAJG8gAD/vIAA/7yA - AM+8gAAH////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wG8gAAbvIAA3byAAP+7gADbvIAAE////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AbyAAJW7gAD/vIAA/7yAAMe8gAClvIAAwbyA - APm8gAD/vIAA/7yAAIu8gAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wG8gAAFvIAAwbyAAP+8gAD7u4AAKf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyAAGG8gAD/vIAA/7uA - AP+8gAD/u4AA/7uAAP+8gAD9vIAAxbuAABv///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bu4AAlbyAAP+8gAD/u4AAW/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyA - ACm8gADDu4AAw7uAAMO8gADDvIAAv7yAAKm7gABpvIAAF////wH///8B////Af///wH///8BIqoiEyOr - I4UjqiObI6sjLyOrIwX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bu4AAY7yA - AP+7gAD/vIAAj////wH///8B////Af///wEjqiMHI6sjXyOrI2UjqiMfI6sjA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASOr - IwMjqyMxIqoitSOrI/MjqyPvI6oj5yOrI4MjqyMh////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAAE7yAAD28gAA9vIAAKf///wH///8B////Af///wEiqiILIqoirSKrIvsjqyPhI6sjpyOr - I1cjqyMT////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BI6sjByOrI1cjqyPjI6sj3yKrIl8jqyM5IqoioSOrI/MjqyPfI6ojfSOrIxn///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6ojFSKq - IkkjqyOjI6sj5SOrI/kjqyPdI6ojnyOrI0cjqyMP////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEjqiMNIqsinSOqI/UjqyO5I6sjJyOrIwP///8BIqsiCSOrIz8iqiKrI6sj9SOq - I9ciqyJlI6sjDf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEjqyMFI6sjGSKqIlcjqiOpI6sj7SOrI/cjqyPXI6sjfyOrIzUjqiMF////Af// - /wH///8B////Af///wH///8B////ASKqIjcjqyPHI6sj8yOrI30jqyMT////Af///wH///8B////Af// - /wEjqiMJI6sjTyOrI8MjqyP7I6sj0yOrI2MjqyML////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEjqyMFI6ojHSOrI2cjqyPBIqsi+yOr - I/UjqyPRI6sjfyOrIyf///8B////Af///wEiqyILI6sjbSOqI+sjqiPdIqsiTyOrIwP///8B////Af// - /wH///8B////Af///wH///8B////ASOqIwsjqyNPI6sjySOqI/sjqiPNI6ojTyOrIwX///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEiqyIFI6sjKyKqIn0jqyPRI6oj+yOrI/MjqiPDI6sjYSOrIy0jqyOpI6sj+yKrIq0jqyMb////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjByKqIlsjqyPXI6sj+SKr - IrsjqyM5I6sjA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMDI6sjKyOrI5EjqyPdI6sj+yOrI/8jqyPtI6sjaSOr - IwP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEjqiMPI6sjcSOrI+MjqyP5I6sjoyKqIif///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEjqyMHI6sjSyKq - ImsjqyMn////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////ASOrIx8iqyKLI6sj6SOqI4n///8B////Af///wH///8BLCzWESws - 1R8rK9YfLCzWE////wH///8B////ASws1Q8sLNUfLCzVHysr1Rn///8B////Af///wErK9YDLCzWGyws - 1R8sLNYfKyvVB////wH///8B////Af///wErK9YPLCzWHysr1R8sLNYT////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BIqoiGyKqIhf///8B////Af// - /wH///8BKyvVayws1v8rK9X/LCzWpf///wH///8B////ASws1ocsLNb/LCzW/yws1q8sLNYD////Af// - /wErK9YNLCzWxSws1v8sLNb7LCzWP////wH///8B////Af///wErK9ZhLCzW/yws1v8sLNat////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BKyvWNysr1f8rK9b/LCzW0yws1gf///8BLCzVAysr1bsrK9b/KyvW/ysr - 1nf///8B////Af///wEsLNYDLCzWnSsr1f8sLNb/KyvVb////wH///8B////Af///wErK9YtKyvV/yws - 1v8rK9bZLCzWBf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BLCzVDysr1fMsLNb/LCzW6Ssr1if///8BLCzWFSws - 1tssLNb/LCzV/yws1jv///8B////Af///wH///8BKyvWayws1v8rK9X/LCzWo////wH///8B////Af// - /wEsLNYFLCzW8yws1v8sLNbrKyvWI////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BLCzWByws1ccsLNb/KyvV+Sws - 1kv///8BLCzWNyws1vMsLNb/LCzW6ysr1hP///8B////Af///wH///8BLCzWOSws1f0sLNb/LCzWySws - 1Q3///8B////Af///wH///8BLCzVwSws1v8sLNb3LCzVR////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BLCzWAyws - 1pcsLNb/LCzV/ysr1nksLNYRLCzWmSws1f8rK9X/LCzWqysr1QX///8B////Af///wH///8BLCzWHSws - 1ucsLNb/LCzW5yws1iP///8B////Af///wH///8BLCzWjSws1v8sLNb/LCzWb////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASws1WMsLNb/LCzW/yws1u0sLNbfLCzW+yws1v8sLNbXKyvWMf///wH///8B////Af// - /wH///8BLCzWDSws1sUrK9X/LCzW/Sws1j////8B////Af///wH///8BLCzVWSws1v8sLNb/LCzWuyws - 1l0sLNZdLCzWXSws1lcrK9YN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////ASws1i8sLNb/KyvV/yws1v8sLNb/LCzV/yws1v8sLNXpLCzWlyws - 1if///8B////Af///wH///8B////ASws1p0sLNb/LCzW/yws1XH///8B////Af///wH///8BLCzWJSsr - 1v8sLNb/KyvV/ysr1v8sLNb/LCzW/yws1v0sLNY1////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////ASws1hErK9XpLCzV/yws1vkrK9alKyvWkysr - 1r8rK9b7LCzV/yws1ucrK9Y5////Af///wH///8B////ASsr1msrK9X/KyvV/yws1qP///8B////Af// - /wH///8BKyvVCSws1ucrK9X/KyvV/yws1v8rK9X/LCzV/ysr1v8sLNZt////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASws1gkrK9a9LCzW/yws - 1v0sLNZL////ASws1gUsLNZzLCzW+ysr1f8sLNbT////Af///wH///8B////ASws1jsrK9b9LCzW/yws - 1cksLNUP////Af///wH///8BLCzWBSws1bcsLNb/LCzW+ysr1lUsLNULLCzWCyws1QssLNYH////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEsLNaPLCzW/yws1v8sLNZ/////Af///wEsLNYfLCzV6yws1v8sLNb/LCzWJ////wH///8B////ASws - 1h8sLNbjLCzW/yws1ussLNYh////Af///wH///8B////ASws1oUsLNb/LCzW/yws1n3///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wErK9VbLCzW/yws1v8sLNW1KyvVAyws1gMsLNZFKyvW9Sws1v8sLNb/LCzVM/// - /wH///8B////ASws1QsrK9XFKyvV/yws1v8sLNZB////Af///wH///8B////ASws1lEsLNX/KyvW/yws - 1rH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wErK9UrKyvV/Sws1v8sLNXrKyvVnSws1qUsLNXnKyvV/yws - 1v8rK9XxLCzWDSws1T0sLNaZLCzVmSws1ZksLNbfLCzW/ysr1f8sLNbBLCzWmSsr1pksLNaZLCzWLSws - 1iEsLNb7LCzW/yws1ussLNabLCzWmSws1ZkrK9aZLCzVZyws1gP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEsLNYVLCzW3Sws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/ysr1vUsLNZv////ASws1jksLNb/LCzW/ysr1v8sLNb/LCzW/ysr1v8sLNb/LCzW/yws - 1v8sLNb/LCzVdyws1g0sLNbbLCzW/ysr1v8sLNb/KyvV/yws1v8rK9X/LCzW0Sws1gv///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEsLNYHLCzWlyws - 1s0sLNXNKyvVzSws1sssLNbDLCzVmSws1kMsLNYD////ASws1hEsLNbDLCzWzSws1c0sLNbNLCzWzSws - 1c0sLNbNLCzWzSws1s0sLNbNLCzWhSsr1gUsLNaRLCzWzSws1c0sLNbNLCzWzSws1s0sLNbNLCzWxSws - 1RH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA - AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAA5vIAA17yAAOG8gADhvIAAr7uA - ABf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbuAAB28gACRvIAA0buA - ANe8gAClvIAAP7yAACO7gAC7vIAA4byAAOG8gADFvIAAJf///wH///8B////AbyAAA+8gABdvIAAwbuA - AN28gADbvIAAn7yAACW8gACJvIAA4byAAOG8gADdvIAAXf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bu4AALbyA - AN28gAD/vIAA/7yAAOW8gAAn////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbuA - ABm8gACxvIAA/7yAAP+8gAD/vIAA/7yAAOe8gABxvIAAy7yAAP+8gAD/vIAA6byAADH///8B////Af// - /wG8gAB7u4AA9byAAP+8gAD/vIAA/7yAAP28gADBvIAAn7yAAP+8gAD/vIAA/byAAHf///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AbyAABW7gAC9vIAA/7yAAP+8gAD9vIAARf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wG8gABpvIAA/byAAP+8gAD/vIAA7byAALm7gADFvIAA67yAAO28gAD/vIAA/7yA - APm8gAA9////Af///wG8gAAhvIAA67yAAP+8gAD/vIAA+7uAAMe8gAC5u4AA6byAAPO8gAD/vIAA/7yA - AP+8gACR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wG8gAADvIAAnbyAAP+8gAD/vIAA/7yAAHP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BvIAAqbyAAP+8gAD/vIAA+7yAAIe8gAANvIAAF7yA - AJO8gAD9vIAA/7yAAP+8gAD/vIAAWf///wH///8BvIAAV7yAAPe8gAD/vIAA/7yAANO8gAAZvIAADbyA - AFW8gADtvIAA/7yAAP+8gAD/vIAAp7yAAAn///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyAAGe8gAD/vIAA/7yA - AP+8gACr////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyAAMe8gAD/vIAA/7yA - APO8gABB////Af///wG8gAAXvIAAu7yAAP+8gAD/vIAA/7yAAI3///8B////AbyAAG+8gAD7vIAA/7yA - AP+7gACT////Af///wH///8BvIAAebuAAP28gAD/vIAA/7yAAMW8gAAb////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wG8gAA1vIAA/7yAAP+8gAD/u4AA07yAAAn///8B////Af///wH///8B////Af///wH///8B////Af// - /wG7gADBvIAA/7yAAP+7gAD1vIAARf///wH///8B////AbyAAGe8gAD7vIAA/7yAAP+8gADB////Af// - /wG7gABnvIAA+byAAP+8gAD/u4AAl////wH///8B////AbyAACu8gADbvIAA/7yAAP+8gADlvIAAL/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BvIAACbyAAPe8gAD/vIAA/7yAAO+8gACLvIAAe7uAAHm8gABvvIAAXbyA - AC+7gAAH////Af///wH///8Bu4AAmbyAAP+8gAD/vIAA+byAAGv///8B////Af///wG8gAAXvIAA87yA - AP+8gAD/vIAA5buAABf///8BvIAASbyAAPW8gAD/vIAA/7yAAMP///8B////Af///wG8gAALvIAApbyA - AP+8gAD/vIAA/byAAEv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gADLvIAA/7yAAP+8gAD/vIAA/7yA - AP+7gAD/vIAA+7yAAPW8gADlu4AAubyAAEu8gAAJ////AbyAAFm8gAD5vIAA/7yAAP+8gACpvIAAD/// - /wH///8B////AbyAAM28gAD/vIAA/7uAAO+8gABD////AbyAABO8gADlvIAA/7yAAP+8gADtvIAAKf// - /wH///8B////AbuAAHG8gAD9vIAA/7yAAP+8gAB/////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAl7yA - AP+8gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gADvvIAAe7yAAAe7gAAjvIAAz7yA - AP+8gAD/vIAA77yAAEf///8B////Af///wG8gACXvIAA/7yAAP+8gAD5vIAAb////wH///8BvIAAk7yA - AP+8gAD/vIAA/buAAI+7gAAJ////Af///wG8gAA/vIAA+byAAP+8gAD/vIAAsf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AbyAAGO8gAD9vIAA/7yAAP+8gADtvIAAvbyAALm8gADDvIAA5byAAP+8gAD/vIAA/7yA - APO8gABrvIAABbyAAFu8gAD7vIAA/7yAAP+8gADbvIAAT7yAABO8gAADvIAAY7yAAP28gAD/vIAA/7yA - AJ28gAAJ////AbyAACm8gADLvIAA/7yAAP+8gAD3vIAAf7yAAB+8gAAFvIAAEbyAAPO8gAD/vIAA/7yA - AN+7gAAL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wG8gABDvIAA67yAAP+8gAD/vIAAzbuAABX///8BvIAAEbyA - AD28gADNvIAA/7yAAP+8gAD/vIAA17yAABG7gAAHvIAAnbyAAPu8gAD/vIAA/7yAAO28gAC5vIAAp7yA - AMO8gAD9vIAA/7yAAP+8gADDvIAAFf///wG8gAADvIAAQbuAAO+8gAD/vIAA/7yAAPm7gADLvIAAqbyA - AKm8gAD3vIAA/7yAAP+8gADrvIAAL////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAI7yAANO8gAD/vIAA/7yA - APe8gAAl////Af///wH///8BvIAAN7yAAOO8gAD/vIAA/7yAAP+8gABJ////AbyAAAe8gABnu4AA2byA - AP28gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD/vIAA77yAACf///8B////Af///wG7gAAxvIAAr7yA - APe8gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD/vIAA97yAAF////8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbuA - AAm8gAC7vIAA/7yAAP+8gAD/u4AATf///wH///8B////AbyAAAu8gADHvIAA/7yAAP+8gAD/vIAAdf// - /wH///8BvIAAA7yAACu8gABtvIAAr7yAANe8gADnu4AA5byAANe8gAC7vIAAl7yAAGe7gAAR////Af// - /wH///8B////AbyAABO8gABTvIAAnbyAANG8gADnvIAA5byAAN28gAD9vIAA/7yAAP28gACHvIAAA/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BvIAAjbyAAP+8gAD/vIAA/7yAAIP///8B////Af///wG8gAAHvIAAxbyA - AP+8gAD/vIAA/7yAAIP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAA5vIAA57yA - AP+8gAD/vIAAr7yAAA////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AbyAAFu8gAD/vIAA/7yAAP+8gAC1vIAAA/// - /wG8gAAJvIAAT7uAAOe8gAD/vIAA/7yAAP+8gABt////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAAIbyAAM28gAD/vIAA/7yAANe8gAAd////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAAnvIAA/byA - AP+8gAD/vIAA5byAAIu8gACHvIAAnbuAAOm8gAD/vIAA/7yAAP+8gAD5vIAAL////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AbyAAAm8gACzvIAA/7yAAP+8gAD5vIAAL////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BvIAAEbyAAN+8gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD5vIAAl7yA - AAn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BvIAAibyAAP+8gAD/vIAA/7yA - AF////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AbyAAAu8gACzvIAA/7yAAP+8gAD/vIAA/7yAAP+8gAD/vIAA/7yA - AP+8gAD5vIAAmbuAABn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbyA - AFu8gAD/vIAA/7yAAP+8gACR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8gAADvIAAX7yAAK28gACtvIAArbyA - AK28gACtvIAArbyAAJ28gAB3vIAALbyAAAX///8B////Af///wH///8B////Af///wH///8BI6sjCyOr - I2kjqyPpI6ojwSOrI00jqyMN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wG8gAAlvIAA/7yAAP+8gAD/vIAAxbyAAAX///8B////Af///wH///8B////ASOr - IwUjqyM3I6sjTyOrIxcjqiMF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEjqiMDI6sjEyOrI4UjqyPtI6sj/SOrI/0jqyPrI6sjlyOrIykjqyMF////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BvIAABbyAAFG8gABTvIAAU7yAAEW8gAAF////Af// - /wH///8B////Af///wEjqyMRI6sjryOrI/8jqiPrIqoilSOrI1UjqyMdI6sjA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEjqyMDI6sjRyOrI80jqyP/I6sj3yOrI3cjqyOXI6sj3yOrI/8jqiPvIqsikyOr - IzcjqiMF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BI6sjByOrI2sjqyPVI6sj8SOrI/0jqyPzI6sjzyOr - I5MiqiIzI6sjFSOrIwX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMVI6ojZSOrI98jqyP3I6sjwyOqI0EjqyMHI6ojDSOr - IzkjqyOvI6sj6yKqIvsjqyPbI6sjgSKqIiUjqyMD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjCSOr - I0UjqyOVI6sj0yOrI/sjqyP/I6sj+yOrI9EjqyN9IqsiQyOrIw3///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEjqyMVI6sjrSOrI/cjqyP1I6sjkSOr - IxH///8B////Af///wH///8BI6sjBSOrI0EjqiOlI6sj8yOrI/8jqyPTI6sjcyOrIxX///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BI6sjCSOrIxsjqyNLI6sjnyOrI9kjqyPzI6sj+yOrI+0jqyPDI6sjYSOr - Iy0jqyMP////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASOrIwkjqyNPI6ojxSOr - I/kjqyPVI6sjXSOrIxH///8B////Af///wH///8B////Af///wH///8BI6sjDSOqI1cjqyO7I6sj8yOr - I/kjqyPPI6sjbyOrIx0jqyMD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASKrIgMjqyMbI6sjXSOr - I7MjqyPpI6sj/yOrI/0jqyPlI6sjqSOqI2kjqyMjI6sjA////wH///8B////Af///wH///8B////ASOr - Iw0jqyN1I6sj6SOrI/8jqyO9I6sjOf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BI6sjESOrI2MjqyPBI6sj/yOrI/0jqyPJI6sjZyOrIxP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASOrIwMiqiILI6sjHSOrI20jqyPBI6sj5yOrI/0jqyP5I6sj6yOrI60jqyNRI6sjJSOr - Iwf///8BI6sjAyOrIzsjqyO/I6sj+SOrI+UjqyN9I6sjDSOrIwP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMDI6sjDSOrI1sjqyO9I6sj9yOrI/cjqyPBI6sjUSOr - IxP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjEyOrIz8jqyN/I6sjzyOr - I/sjqyP/I6sj9SOrI9MjqyOPI6ojMyOrI10jqyPVI6sj/SOrI9sjqyNPI6sjCf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BI6sjFyOr - I3cjqyPZI6sj/yOrI/EjqyOrI6sjNSOrIwX///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASOrIwMjqyMpI6ojhyOrI88jqyPzI6sj/yOrI/8jqyP/I6sj8yOrI5cjqiMT////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BI6sjGSKrIn0jqyPXI6sj/SOrI/UjqyOfI6sjMyOrIwf///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////ASOrIwUjqyMjI6sjSyOrI6UjqyPjI6sj1SOr - I2EjqyMV////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEjqyMFI6ojMyOrI5sjqyPtI6oj/SOr - I80iqyIn////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BI6sjOSOrI5kjqyOtI6sjIf///wH///8B////Af///wH///8BLCzWDyws1iksLNUpLCzVKSws - 1h0sLNYD////Af///wH///8BLCzWBSws1iMsLNUpLCzVKSws1SksLNYR////Af///wH///8B////ASws - 1gUsLNYhLCzVKSws1SksLNYnLCzWC////wH///8B////Af///wH///8B////ASws1hksLNUpLCzVKSws - 1SksLNYV////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEjqyMLI6sjFSOrIwX///8B////Af///wH///8B////ASws - 1k0rK9XzLCzW/yws1v8sLNbDLCzVEf///wH///8B////ASws1icsLNbZLCzW/yws1v8sLNb/LCzVT/// - /wH///8B////Af///wErK9UTKyvWuSws1v8sLNb/LCzW9yws1U3///8B////Af///wH///8B////Af// - /wEsLNaJLCzW/yws1v8sLNb/LCzWif///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEsLNYvLCzW3Sws1v8sLNb/LCzW7Sws1h3///8B////Af///wEsLNZJLCzW7Sws - 1v8sLNb/LCzW9Sws1hv///8B////Af///wH///8BKyvVBSws1ZEsLNb/LCzW/yws1v8sLNV7////Af// - /wH///8B////Af///wH///8BLCzVVSws1v8sLNb/LCzW/yws1bn///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BLCzWEyws1scsLNb/LCzW/yws1v8sLNY9////Af// - /wH///8BLCzWaysr1f0sLNb/LCzW/yws1sssLNUN////Af///wH///8B////Af///wEsLNZrLCzW+Sws - 1v8sLNb/LCzWq////wH///8B////Af///wH///8B////ASws1iMsLNb/LCzW/yws1v8sLNbZLCzWD/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEsLNWhLCzW/yws - 1v8sLNb/LCzWdf///wH///8BLCzVBSws1p0sLNb/LCzW/yws1v8sLNaTKyvWBf///wH///8B////Af// - /wH///8BLCzWPyws1u8sLNb/LCzW/yws1uEsLNYD////Af///wH///8B////Af///wH///8BLCzW6Sws - 1v8sLNb/LCzW5yws1jX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BKyvVcSws1v8sLNb/LCzW/yws1qX///8B////ASws1gksLNbNLCzW/yws1v8sLNb5LCzWZ/// - /wH///8B////Af///wH///8B////ASws1hksLNblLCzW/yws1v8sLNb3LCzVG////wH///8B////Af// - /wH///8B////ASws1rksLNb/LCzW/yws1vMsLNZX////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////ASws1jksLNb/LCzW/yws1v8rK9XNKyvVE////wEsLNYzKyvW/Sws - 1v8sLNb/LCzW4ysr1TP///8B////Af///wH///8B////Af///wH///8BLCzWxyws1v8sLNb/LCzW+ysr - 1k////8B////Af///wH///8B////Af///wEsLNZ/LCzW/yws1v8sLNb9LCzWfSws1gP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEsLNYXLCzW7yws1v8sLNb/KyvV4Sws - 1kksLNZLLCzWwSws1v8sLNb/LCzW/ysr1q0sLNYJ////Af///wH///8B////Af///wH///8B////ASws - 1pcsLNb/LCzW/yws1v0sLNZ9////Af///wH///8B////Af///wH///8BLCzWVyws1vcsLNb/LCzW/yws - 1qMsLNYL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BLCzWDSws - 1sUsLNb/LCzW/yws1v8sLNb/LCzW/yws1v8sLNb/LCzW+ysr1r0sLNYp////Af///wH///8B////Af// - /wH///8B////Af///wEsLNZjLCzW/yws1v8rK9b/LCzVpyws1gn///8B////Af///wH///8B////ASws - 1jcsLNbhLCzW/yws1v8rK9bdLCzWgysr1nsrK9Z7KyvWeysr1nssLNZb////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASws1gcsLNaVLCzW/yws1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1v0sLNbbLCzWgyws - 1i8sLNYF////Af///wH///8B////Af///wH///8BLCzWOyws1vUsLNb/LCzW/ysr1ccsLNYd////Af// - /wH///8B////Af///wEsLNYZLCzWyyws1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1v8sLNb/LCzW2yws - 1gn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BLCzWayws1vssLNb/LCzW/yws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1v8sLNXjLCzWXyws1gX///8B////Af///wH///8B////ASws1icrK9bXLCzW/yws - 1v8sLNbnLCzWL////wH///8B////Af///wH///8BKyvVAyws1q0sLNb/LCzW/yws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1ussLNYx////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASws1kUsLNbrLCzW/yws - 1v8sLNbfLCzVHSws1hcsLNY1LCzWiSws1ussLNb/LCzW/yws1u0sLNVf////Af///wH///8B////Af// - /wEsLNYRLCzWtSws1v8sLNb/LCzW/Sws1U3///8B////Af///wH///8B////Af///wEsLNZ5LCzW/yws - 1v8sLNb/LCzW5yws1rcsLNa3LCzWtyws1rcsLNWxLCzVQf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEsLNUjLCzW3Sws1v8sLNb/LCzV+yws1hf///8B////ASws1gcsLNZ9LCzW+Sws1v8sLNb/LCzW1f// - /wH///8B////Af///wH///8BLCzWAyws1pcsLNb/LCzW/yws1v8sLNV7////Af///wH///8B////Af// - /wH///8BKyvVSSws1v8sLNb/LCzW/yws1rksLNYD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BLCzWAyws1sMsLNb/LCzW/yws1v8sLNZP////Af///wH///8BLCzVKSws - 1uMsLNb/LCzW/yws1v8rK9Uv////Af///wH///8B////Af///wEsLNVjLCzW+yws1v8sLNb/LCzWtf// - /wH///8B////Af///wH///8B////ASws1hksLNb1LCzW/yws1v8sLNbVLCzWIf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wErK9WVLCzW/yws1v8sLNb/KyvVgf// - /wH///8B////ASsr1TEsLNbnLCzW/yws1v8sLNb/LCzWR////wH///8B////Af///wH///8BLCzWNyws - 1vksLNb/LCzW/yws1tssLNYJ////Af///wH///8B////Af///wEsLNYPLCzWzyws1v8sLNb/LCzW5yws - 1j////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BLCzWXyws - 1v8sLNb/LCzW/yws1bEsLNUHLCzWBSws1h8sLNabLCzW+yws1v8sLNb/LCzW/yws1Tf///8B////Af// - /wH///8B////ASws1gssLNbvLCzW/yws1v8sLNbrLCzWL////wH///8B////Af///wH///8BLCzWByws - 1p8sLNb/LCzW/yws1vsrK9Vj////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////ASws1jEsLNb5LCzW/yws1v8sLNXxLCzWzyws1c0sLNbZLCzW+Sws1v8sLNb/LCzW/yws - 1ucrK9YLLCzWCyws1qUsLNbNLCzWzSws1s0sLNbNLCzW+yws1v8sLNb/LCzW+yws1tksLNbNLCzWzSws - 1s0sLNbNLCzWUSws1gMsLNZ1LCzW/Sws1v8sLNb/LCzW4yws1s0sLNbNLCzWzSws1s0sLNbNLCzWqyws - 1hH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wErK9UdKyvW2yws1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1vEsLNZt////ASws1gkrK9ajLCzW/yws1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1pP///8BLCzWTyws1u8sLNb/LCzW/yws1v8sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1eUsLNY3////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BKyvVDyws1rEsLNb/LCzW/yws - 1v8sLNb/LCzW/yws1v8sLNb5LCzW6Ssr1cksLNZZLCzWCf///wEsLNYDLCzWcyws1v0sLNb/LCzW/yws - 1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1v8sLNa7LCzWEyws1iksLNbfLCzW/yws - 1v8sLNb/LCzW/yws1v8sLNb/LCzW/yws1v8sLNb1LCzWXf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ASws - 1gMsLNY/LCzWZyws1mcsLNZnLCzWZyws1mcsLNZlLCzWXSws1UMsLNUX////Af///wH///8B////ASws - 1SUsLNZjLCzWZyws1mcsLNZnLCzWZyws1mcsLNZnLCzWZyws1mcsLNZnLCzWZyws1mcsLNZnLCzWUyws - 1Q0sLNYJLCzWVSws1mcsLNZnLCzWZyws1mcsLNZnLCzWZyws1mcsLNZnLCzVZyws1S////8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAACUWAAAlFgAAAAAAAAAA + AAC/vML/vrzC/7y6wf+8ucD/u7q//7u5wP+6uL//ube+/7e2vf+3t73/tra8/7a1vP+2tbv/tbK5/7Sy + uv+1s7r/tLO5/7Oyuf+wsLf/sK+2/6+utf+vrbT/sK61/66utP+vrbT/rauy/6yrsv+sq7L/q6qx/6qp + sP+qqK//p6eu/6amrf+jo6r/oKCo/56epv+gnqX/oJ6g/5iXmP+foKf/n6Cn/5+gp/+foKf/n6Cn/5+g + p/+foKf/n6Cn/5+gp/+foKf/n6Cn/0RCRf9JRkn/SEdL/0lGSv9LSU3/S0pN/01KT/9OTE//T01P/1FO + T/9PTk7/UU5O/1BOT/9RTk7/xMHD/8K+wv/AvcL/v73C/768wf+9usD/vbm//7q5vv+6uL3/ure8/7i3 + u/+3tbv/t7S7/7azuv+0s7n/srG3/7Cwt/+wsLb/sLC2/6+utP+urbP/rqyz/62ss/+urLP/rq2z/62s + sv+rq7L/rKqx/6uqsP+pqK7/qKas/6Wmq/+mpqv/paWr/6Skq/+kpKn/pKSq/6Kiqf+hoaf/n6Cn/52d + pP+cnKP/nZ+m/5+fp/+foKf/nZ6l/4+RmP9/f4X/Z2dr/09PUv9FRUf/SEZJ/0tKTP9MSk3/TU1Q/1FR + U/9XVFj/UE1O/1BNTv9QTU7/UE1O/1BNTv9QTU7/UE1O/8K/w//BvsT/v73D/768wv+9usD/vLrA/7y5 + wP+6uL//ube9/7q3vf+3tr3/t7S8/7W0u/+0s7r/tLK5/7Syuf+zsrj/tLK5/7GxuP+xsLf/sa21/6+s + tP+urbT/rq61/6+ttP+srLP/rayz/6ursv+rqrH/qqiw/6ior/+npq3/pqat/6alrP+kpKv/pKOq/6Ki + qf+hoKj/np+m/6CgqP+jo6v/m5uj/4qMk/91dHv/VVRa/zc1Of8gHiD/EhES/xUTFP8kIyX/NzU3/0NA + RP9FREf/RkRI/0dGSv9KSEz/UE1O/0tJTP9MS03/T0xN/1BNTv9RT0//U1FS/1FPT/+/vML/vrzC/7y6 + wf+8ucD/u7q//7u5wP+6uL//ube+/7e2vf+3t73/tra8/7a1vP+2tbv/tbK5/7Syuv+1s7r/tLO5/7Oy + uf+wsLf/sK+2/6+utf+vrbT/sK61/66utP+vrbT/rauy/6yrsv+sq7L/q6qx/6qpsP+qqK//p6eu/6am + rf+jo6r/oKCo/56epv+gnqX/oJ6g/5iXmP+AgYP/Wltc/zo4Nv8cGhb/DQsL/wkHBv8FBAT/BwYF/w8O + Df8dGxz/MS8y/0RCRf9JRkn/SEdL/0lGSv9LSU3/S0pN/01KT/9OTE//T01P/1FOT/9PTk7/UU5O/1BO + T/9RTk7/u7i//7q5v/+5uL7/ube9/7i3vv+4tb3/trW8/7e2vf+2tbz/trS8/7W0u/+1tLv/trO6/7Sy + uf+0s7r/tLO6/7Syuv+zsrj/sbC3/7Cwtv+vrrX/rqyz/7Gvtv+zsbn/rq20/62ss/+sq7L/qqqx/6qp + sP+pqK//p6eu/6SkrP+ioqr/n5+m/5+go/+fnZz/jI2T/2tvjf9BS3//Ljt//yc0e/8fKGH/Ehc2/wMC + AP8BAAD/AwIC/wUDBP8NDAz/Kigs/0VFSP9MSk7/SkhM/0lHTP9KSE3/S0lP/0tKUP9NS1D/T01Q/05M + Tv9OTE3/T0xN/09MTf9PTU7/T0xN/7i2vf+3tbz/trW8/7W0u/+2tLv/tbS7/7Syuf+1s7v/tbS7/7Sz + uv+zsrn/tbK5/7Szuv+0srn/s7G4/7OyuP+zsrj/srG4/7Gwt/+wsLb/r662/6+vtv+npaz/nJid/7Gq + rv+zrbL/tLC2/7CttP+npq7/o6Ss/6Ghqf+ioqb/o6Gg/5eXmv9+g5X/W2Wa/0BQpv80R7H/OU28/zxQ + uv8/U77/QlfG/0BUw/8rOob/BwgV/wAAAP8JBwj/Liww/01KUP9QTlT/TUpP/0xJT/9MSVD/TEpR/0tK + Uf9LS1L/TUtS/05LUP9OTE7/TkxO/09NT/9PTU7/T05P/09NTv+3tbz/tbS7/7Szuv+0srn/tLK5/7Oz + uf+zsbj/sbC4/7KxuP+ysrn/srG5/7OxuP+ysrn/tLK5/7KxuP+ysbf/srG4/7KwuP+xsLf/r6+2/6+v + tv+5t7//dnN3/zZATv+PtM3/h6K1/3WEkP+Eg4j/rKqu/6Wkpf+fnZ7/ioyW/2tzmv9LWaP/N0qx/zdL + tv86Trn/PlC1/z1PsP89TrH/PE+z/zxPs/8+Ubb/Q1fG/zZGoP8XGir/ODU1/1NQVP9QTVP/T0xT/0xL + Uv9OS1L/TUxT/05NVf9OTVb/Tk1T/01MU/9NS1D/TkxP/09NUP9OTU//T0xO/1BOT/9PTE7/t7a8/7a0 + u/+0s7r/s7O5/7Oyuf+0srn/srG4/7Gwt/+ysLf/srC4/7GwuP+xsLf/sK+2/7Gwt/+wr7f/sLC3/7Gw + t/+vr7b/r661/6+utf+vrbX/tLK6/4aDh/9im8H/etT//3TH9P9BkOT/Klmd/3p4ff+ChKH/U2Cg/z1P + rf81SbP/OU26/z5Qt/8+T7P/PE2w/zxOsv8/U7v/QVXA/z5Rt/88Ta3/PFCy/z1Osv9BVMP/QEyW/zc6 + TP9IR03/VFBV/1BOVf9OTVT/Tk1T/05NVv9OTVf/TUxV/01MVP9QTVP/Tk1R/1BNUP9PTE//TkxO/09M + Tv9RT0//T0xO/7i2vf+2tLv/tbS7/7S0uv+zs7r/s7K5/7OxuP+zsbj/sbC2/7Cwt/+wr7b/sK62/6+u + tf+urrX/r6+2/7Gwt/+wr7b/rqy0/66stP+trLT/q6uy/6ior/+spqz/hb3e/3vS//9TqP//LIX//ymC + /v8mVp7/Mj6I/ztNvv88T7j/PVCy/zxPrf88ULD/P1O8/0lf1f9Saur/VnL1/1h0+P9Wc/L/SGHS/zxP + r/8+T7P/P1G3/0FSsf83P2j/KzBN/0tIUv9VUlj/UE9V/09NVP9OTVX/Tk1W/01MVv9OTVX/UU5U/09N + Uf9QTlD/TkxP/1BNT/9PTU//UU5P/09NT/+4t77/uLa8/7W1u/+1tLv/tLO6/7Oyuf+zsbj/srG4/7Cw + t/+xsLf/sK+2/66utf+wrrb/rq61/6+vtv+wr7f/r6+2/66ttP+rq7P/qqmx/6mpr/+qqKn/paGe/3Gb + tP9Npf//Kn///yuA//8thP//LIX//ytdpf85RIz/Pk+3/z5Qt/9EW8v/TWjj/1h0+P9Ydv7/V3X//1R0 + //9Rcf//S2n6/0ln9P9DW8//Pk+w/z5Rtv8+ULP/Nj9z/ywxV/8xNFP/UlBX/1FPVv9OTFT/Tk1V/09N + Vv9OTVb/T05U/09MU/9PTVH/T01Q/09OT/9RTlD/T01P/1BOUP9PTU//vLrB/7m4v/+3tbz/trS7/7Sz + uv+0srr/s7K5/7KxuP+ysLj/sbC3/6+vtv+urrX/sK+3/7Gutv+wrrb/rq20/62ss/+rqrD/qqqu/6uq + p/+dnKD/gIWf/1ljoP84UYr/KXjm/yyF//8tgv//LYL//y2D//8shf7/Kluj/0JSqP9Xcfn/V3T//1Z2 + //9Udf//UHH//0Zl/P8rRdT/FCib/w0acv8VGVL/KDmL/0FVuf8+ULP/PlC2/zY/ef8yNVv/MTdf/0xL + V/9TUFb/T01V/05MVP9OTVT/TkxU/01MUv9OS1H/TkxQ/09OUP9QTlD/T05Q/1BOT/9TUVL/UE5P/7+9 + w/+8usH/uLe+/7e1vf+3tb3/trW8/7Wzu/+zsrj/sLG4/7Gvt/+vrrX/sK62/6+utv+urLX/q6uz/6+t + sf+urKv/pKOk/4uOnv9ocaL/SVio/zhLsv86Tbn/PEqo/y5Kif8peOD/LYb//y2C//8tgv//LYP//yuE + /v8tYKn/SV7A/1Rw//9Jaf//OFTe/x8zoP8THmX/T1N8/5WVmP+ys7j/bnWP/wAELf8/UrL/PlGz/z5Q + t/83QH7/NDhd/zU7Y/9KSVj/UlBU/09NVP9OTFL/TUtR/0tJUf9MSFD/TElP/0xKTv9OTU7/T0xP/09M + T/9QTk//U1JR/1BOT//Cv8X/v73D/7u6wf+5uL//uLa+/7a0vP+0s7r/sbC4/7Gvt/+vr7f/rq61/66t + tf+urLL/rqyv/6uqqf+Xl6H/dn2i/1Fdpf87Ta//OUu2/zxOuP9AUbP/Pk+u/z1Osv9CUrf/OFeg/yp5 + 4v8thv//LYL//y2C//8thP//K4T9/y5isv8uQJ3/ESBx/xEVPP8RFSf/Iycz/9HS0P///////////5Ki + 4/8ACUz/O0uk/z5Qs/8+ULb/OEJ+/zQ6Xf82O2T/SkpZ/1NPVP9PS1L/TEpP/0xHTv9JR0z/SEZL/0lH + Sv9KSUv/TUtN/09MT/9QTU7/UU9P/1ZUVP9RT0//x8LI/8TBxv/AvsX/vr3E/7y6wf+4t7//tbW8/7Cv + t/+trLT/qamx/6ensP+traz/oqKn/4SIpf9eZ6j/Q1Gu/zdKtP87Trj/PVCz/z1Nrv8+T7D/QlS7/0lg + 0P9Sben/Wnj//1ly+P85W7T/LX3s/y2G//8tgv//LYL//y6D//8phf//J1aX/yMiJP8rMT7/LzND/y40 + Qf/NztL///////////+Rn9v/AAlI/zpJoP8+UbP/PlK0/zdCf/82OV3/Nzxl/0pJWP9RTlH/TklP/0pG + S/9HREn/RUNH/0RBRf9FQkX/R0ZI/0tKTP9OTE7/Uk9R/1pWV/9jYGD/WlZX/8jGyv/Gw8j/xMLH/8PA + xv/Bv8b/v73D/727wv+2tr7/rKy0/6SlrP+ioqH/eH6c/0parf87TLX/PU65/z5Qt/9AUbP/PU6x/z5R + uP9KXs3/Umzj/1l2+v9bev//Wnn//0Zn+P8rStn/HiqC/x0zV/8ufu3/LYb//y2C//8nf///MIT+/5+/ + 5/+SkIr/LS83/zAyN/81Nj3/zMzP////////////lKDW/wAFPf84SJn/QFGy/z9RtP84RIH/Njpe/zc9 + Zv9MS1r/Uk9R/0pHTP9FQ0f/REBE/0A+Qf89PD//QT5A/0RDRf9JSEr/U1BS/2JfYP9wbGz/eHR1/3Bs + bP/LyMz/ycbL/8fEyv/Hw8n/xcPI/8XBx//EwMb/wr/G/768wv+8urj/dHqq/zhKs/88T7j/QlKz/0FR + r/9DVbn/R1zK/1Nr4v9ceff/Xnz//1x7//9YeP//VXf//05w//9EXdP/T1Jp/w0NFv8GAQr/JT1k/y19 + 7v8ng///MIP9/5684f/g29L/lHft/0UnoP8xMDX/ODk5/8vLzf///////////5mk1f8AAS//N0WR/0FR + sf8/UbP/O0WD/zc7Xv84PWf/UlFg/1hVVv9IRUn/Qj9D/z88QP86ODr/NjU2/zg2N/9HRkf/X1xd/3Ju + bv94dHX/dXFy/3RwcP91cXL/zMnO/8rHzP/Ixsv/yMXK/8fEyf/Fwcf/xMDF/8C9w//HxMH/iIy6/zxL + uP9BUrb/RFW1/0dZw/9RZ+D/V3Pz/117//9dfP//Wnn//1Z3//9Mbf//O1jj/x83rP8vO4b/4OP0//f3 + +P8uLz//DREq/yYmMf8qQmf/N4Dm/6XC5f/e2ND/kHLo/1wn/v9iLf//RSmc/zY1OP/Ky8r///////// + //+bpdP/AAAo/zZCiv9AUa//PVGy/ztEhP84Ol3/ODxm/11dbv9tam3/VlRY/zw6Pf8sKSv/GhoZ/yQk + I/9MSkv/bmxs/3p2dv91cXL/bWpr/2pmZ/9qZ2f/amZn/8zKz//Myc7/ysnN/8nGy//HxMn/x8PI/8XC + x//Oysf/p6jC/z5Pt/8+UbP/R1rG/01n8P9Pcf//TW3//0hn//9Laf//TGv//zxb6P8nO6//FSJx/xAX + Qf8RFCj/Oj5H////+v/q6u//Jic2/xAUJ/8rLjv/MzE0/1NXXP/HwsX/k3Px/1km+/9eLfn/ZS///1Io + 1P82MkD/ycrG////////////nKbN/wAAHv8zO33/QE+r/z5Qs/85RIX/ODpd/ztAav9PT1v/Q0A7/ygn + I/8NCwf/AAEA/yckJf9bV1f/dXBw/3Fvb/9taWr/aWZn/2lmZ/9qZmb/amho/2pmZv/PzND/z8vP/8vK + zv/LyM3/ycbL/8jFyf/Kxcj/ycbJ/1hluf87TrT/RlzL/zFGu/8aLYX/FiZ//xYnjf8XKJH/GSuN/xId + Zv8QFjz/FRor/yUoMP8vND7/LDE9/0RIUf/7+/r/5+fs/yUmMf8RFSP/LS85/z07QP89PTf/SkFl/1kq + 7P9iLf//Yy///1os6P89L2b/OTo2/8bHyP///////////6Goyv8AABj/LTZw/z5Npf9AT7L/O0WI/zk8 + Xv89Qmr/Iytc/wwWTv8FDTT/DhAe/1VOR/90bm3/c25t/25qaf9saGn/bGdo/2pnaP9raGj/a2do/2to + aP9rZ2j/0M3Q/8/Mz//Mys7/y8jN/8rHzP/Ixcr/08/M/5ebwv83SbP/SFvC/yw+nf8CBR//AAAA/wAA + AP8AAAD/AgEC/xMUE/8jJCj/LzM7/zU5Qv83OUL/NzhA/zAwN/9ISlD//f38/+Xl6f8kJCv/FhUg/zAw + N/89PED/QUBD/zg6Nv89L2r/WSzk/1gs3v8+M2P/Ojwz/zw8Pv/Fxcf///////////+nrcj/AAAT/ygx + Zf89Sp//P02u/zxEh/85PF3/PT9j/yw7jf8kOqz/Jjmj/yAwiv9ERmz/cmxr/3NubP9vamv/bmpr/21o + af9saGj/a2do/2pmZ/9qZ2j/amZn/9DO0f/PzdD/zszP/8zJzf/Lx8z/y8fL/9LOzf9kcLv/O0+4/zxO + rf8HCy3/AAAD/wIABf8FBAf/FxcZ/y0vM/85O0H/PDxE/zk5QP85OUD/OzpA/zs6P/8yMTf/SktP//39 + /P/k5Ob/IiMp/xcXH/8yMTb/PTw//0BBQ/9BQEP/PT85/zs0Uv87NVD/P0A6/z89QP88Oz7/w8TF//// + ////////rbHH/wAAEf8kK1r/OkeW/z1Mqf87Roj/Oz1d/z5BY/8uPIn/Ijef/yQzj/8cKoX/FSJ0/0BC + Zf9wa3P/enRx/3Fsbf9vamz/bWho/2xoaP9sZ2j/cWxt/2xnaP/SztL/0M3R/8/N0P/Nys3/y8jM/9LO + zf+7usr/Sli3/0dYv/8mM3//BQcl/wQDCv8IBQT/FBMY/y0uMv87Oz7/PT1C/zw8Qv87O0H/PDtB/zs8 + P/88Oz//NDQ3/0xNT//+/v3/4uLl/yEiJ/8ZGR//MzM3/z09QP9AQEP/QT9D/0JBRP9CQz7/QUM//0JB + Q/8/PT//Ozg8/8HBwv///////////7O2y/8BAhH/ICVQ/zdDjP88SqT/O0aJ/z0/X/9AQmT/MDyF/yEz + lf8iL4b/Gydz/xMeY/8jK17/PUJk/3hzeP+Dfnz/fXl6/4B6e/+Ef4D/iYKD/4+Kiv+JgoP/0s7R/9LN + 0f/Rzc//zszO/83Kzf/X0tD/pajH/zpMtf9GWLr/GyVp/wsQPv8KCRX/EA4O/xkXG/8tLjH/Ozs+/z4+ + Qv8+PkL/PD1B/z0+Qv8+PkH/Pj1A/zY1OP9NTlH//v/+/+Li4/8iISX/Gxof/zMzN/8/PkH/QkJF/0FC + RP9CQUP/QUBC/z8/QP89PD3/ODU3/zAvMf+8vL3///////////+4usv/BAQQ/xwgSP80PoT/Okee/ztG + if8+QF//QEFg/zlIl/8uSsT/Ii+G/xcfXv8QGlX/KTBf/y40Xv9ycIH/q6aj/6Sfn/+moKH/qqSl/6um + p/+uqan/q6an/9TO0P/Tzs//0s7P/9HNz//PzM7/2dTQ/5WaxP85TLf/QFCw/xkjZ/8OF07/ERIn/xwZ + Gv8gHSD/Ly4w/zw8Pv9AP0P/Pz5C/z4+Qf9AP0L/Pz5A/0A+Qf84Nzn/T05R///////h4eL/ISEj/x0c + IP81Mzb/Pz5B/0JBRP9AP0D/PDs8/zk3Of80MzX/MS8y/y4rLv8lIyX/tba2////////////vb7N/wcH + Ef8YGz//MDl6/zdDk/88Rof/P0Bh/0NFYv8xQ5H/FTCa/w8bVv8UGkv/DxdN/ygvXv83PWf/fHuQ/8fB + vv+/urr/vbe4/723uP+8trf/vbi4/7y2t//Tzs7/083O/9HNz//Rzc7/0czN/9vVz/+Sl8P/Ok23/z5O + qv8ZI2f/DxlW/xMVLf8gHR3/Ih8j/zAuMP88Oz7/QEBE/z8/Qv8/P0L/QD9C/0E/Qf9BQEL/OTc7/1FQ + U///////4ODg/yAgIv8eHSH/NTM2/zs5Pf86ODv/NTQ2/zIxMv8vLS7/LSwu/yYkJf8VExT/Hx0d/7q5 + uf///////////8LD0P8JCRH/FRk5/y01cf8zPor/O0SD/z5AYv9CRWv/NThW/yglLv8PECn/EhpP/w4W + S/8nLl3/Nzxm/319k//Rysj/x8HC/8W+wP/Dvb//wr29/8O+vv/Cvb3/083O/9LMzf/Szc7/0czN/9HM + zf/c1dD/kZbD/zxPt/89TKj/GSFj/xAaVv8VFi//IR4d/yQhI/8yMDH/PT1A/0BBQ/9BQEP/QUBD/0JB + RP9DQUP/QkFD/zk5PP9SUlX//////9/e3/8gHyP/Hx8j/zQyNf80MjP/MzEz/yooKv8gHh//ICAf/yAh + If9ISEj/gYCA/7Ozsv/29vb///7////////Gx9P/CwoS/xIWNP8rMmz/MDl//zhBf/8+QWL/KS1W/5CR + pf////7/T1Jn/wcPSP8OFUr/Jixb/zc8Z/97fJL/1M3K/8rExP/HwMH/xsDA/8W/wP/GwMH/xsDB/9PO + zv/Szc7/0czN/9HMzf/SzM3/3NXP/46Twf8+T7j/Pkum/xkgXv8RGlT/Fhgv/yIfHv8lIiT/MjAy/z8+ + Qf9BQUT/QkJE/0JCRP9DQkT/Q0JE/0JBQv84Njn/UE9Q///////f3t//ISEk/x8fIv8tLC7/IiAh/xgW + GP80NDT/VlZW/4uLiv/W1tb/9vb1///////////////////+////////zMzY/w4NE/8PEi//KTBn/y41 + dP83P3v/PkFj/yksVP+TlKv//////09RZP8GD0f/DhVL/yQqWf83OmT/eXmQ/9bPzf/KxMX/x8HD/8bA + wf/Fv8D/x8HB/8fBwf/Tzs//08zN/9HMzf/Sy83/0szN/9vVz/+Kj8D/QE+3/zxKov8XH1r/ERpT/xcY + Lv8jIR7/JSMl/zMwMv9BPkH/Q0NF/0JCRP9BQEL/Pz4//z07Pf86Nzn/LSos/0VDRP//////2djZ/w0N + Ef8WFRj/OTg5/3Bwcf+vsK//2drZ//////////////////X19//S1dj/lpyj/9HT1v///////////9HR + 3f8RERj/DhEu/ycuY/8sM2z/NT54/zxAY/8nK1P/kJOp//////9SU2P/Bg5A/w0WSv8iKVf/NDhi/3V1 + jf/X0M//ysTG/8jDxP/HwcL/xr/A/8jCwv/IwsL/1M7P/9LNzv/RzM3/0cvN/9LNzv/c1dH/iI3A/z9Q + t/88SaD/Fx5X/xIaUv8YGSz/JCMf/yckJv8yLzL/Ozk7/z08Pv87OTz/NjQ2/zQyNP8zMDL/LCkr/xgW + GP86ODn//////+Li4v98fHz/sbGx//v7+//////////////////n6Ov/ur/E/5idpf9lbXf/Q01W/ywy + PP+0trn////////////U1eH/FhUc/xAULP8oLmP/KzFn/zM7dP86PmL/JypS/42Ppf//////VVVl/wUL + PP8NFEj/ISdV/zQ4Yv9xcov/1c/O/8vFxv/Jw8P/x8HC/8e/wP/JwsL/ycLC/9XQ0P/Uzs//0szO/9LM + zv/Tzc7/3NXQ/4WKv/8+Ubr/O0ie/xYeVf8SG1T/GBos/yYkIf8nJif/LSwu/zAvMf8yMDL/Ly0v/ysq + LP8kIyT/GBcY/zAuL/9QT0//lpWW//7+/v/////////////////19vf/19nc/6arsf9wd4D/TVNb/yow + OP8XGyH/FRUZ/w0NEf8HBQv/qqqs////////////2dvn/xgYIf8MDij/Jy5j/ykvYv8xOXD/OT1h/yUo + UP+HiqD//////1ZVZf8DCTb/DBNG/x4kUf8zN2D/bm+H/9XOzf/Mxcf/ysLE/8fAwf/HwMH/yMLD/8jC + w//Vz8//0s3N/9LMzf/SzM3/083N/9zVz/+AhsD/P1G6/zpHnv8XHlT/FR1Y/xobLf8nJSL/Kigq/y8t + L/8qKCn/HRoc/yMhIv8tLC3/XVtc/6Ghof/S0tH/////////////////6enp/5WWl/9ucXb/Vltj/zA2 + Pf8bHyX/Dg8T/wMDBf8CAAD/CAYI/w0LD/8NCg7/Dw4S/7Gys////////////+Dh6/8cHSf/CQwm/ygu + Y/8nLV//LjZq/zc8YP8jKE7/goab//////9ZV2T/AQYy/w0URf8dI1H/MjZe/2lrgv/Wzs3/zMXG/8rC + w//HwMH/x8DB/8nCw//JwsP/1M/O/9LMzf/Qy8z/0czM/9HNzf/b1M//foS+/z9SvP84Rpv/Fh1U/xYg + X/8ZGy//IiAd/x8dH/8YFhf/NzY3/2tpav+fnp7/6+vr/////////////////8DDyP/FyMv//////6+v + r/8AAAD/AAAA/wAAAP8DAQL/AAAA/wYDBP8QDg//GxkZ/yMiI/8mJin/ISAm/ystMf+8vb3///////// + ///m5/H/ICAs/wgKIv8nLmP/Jyte/ykxYv8zOVz/IydN/36Bl///////Wlll/wAGLv8NFEX/HCJO/zE1 + W/9kZX7/1s7N/8zFxf/JwsP/xsDC/8e/wf/IwsL/yMLC/9TOz//Szc3/0MvM/9DMzP/RzMz/2tPO/3qD + vv9AVL3/OEeb/xgfV/8KFFD/EhQl/ywpJ/9cWFn/r6ur/+Tk5P////////////Pz9f/T1tr/kZae/2Rr + c/8qMTn/fH6C//////+urq7/AAAA/wYEBv8AAAD/Dw4O/zc2Nv8wLy//VlVX/2NhZP8zMjP/ERAU/ygo + L/86PEH/uru8////////////7O32/yMkL/8GCB//Ji1h/yUrW/8mLl7/MTZa/yImS/94e5L//////11b + Z/8ABCv/DBNE/xogSv8wNVn/X2B6/9TNzP/MxcX/yMHC/8W/wP/GwMD/yMHC/8jBwv/UztD/0s3N/9HM + zP/RzMz/0szN/9rUzv92f73/PlK7/ztLpP8ZI17/R0VS/3Jsaf+ak5D/8efo///////+/v7/xcfL/5aa + of9iaHD/NTxE/yElKv8REhf/AAAA/3Fwb///////r6+v/w0NDf8gHiH/bWxt/1VTVf9UU1T/Q0JE/z89 + QP9EREf/Z2dq/xkYHP8nJi3/LS41/7S1tv////////////Dy+v8nJzP/BAYb/yQqXf8jKVn/Ji1d/y80 + WP8hJUn/cXWM//////9fXGj/AAMp/w0TQv8YHkj/LzNY/1pbdv/Ty8v/ycLD/8bAwP/Fvr//xr6//8jB + wf/IwcH/1M/Q/9POzv/Rzc3/0cvM/9LMzf/a087/c3y9/0BSvP84SKD/DhhI/42Jkf+zqab/hH5+/4+J + i/95fYP/UVde/zU6Qf8YGyD/CwsP/wMBBP8AAAD/DgsM/wQCA/93eXf//////8HAwv9QT1L/PTs+/01M + Tv9MS07/aWls/0lLUP9xdXv/cXmC/1lhaf8uMDb/ISEm/yQkK/+wsbL////////////29/7/Kys4/wID + F/8iKVv/IidW/ycuYf8tM1j/ICNH/2tuhv/+////YF5p/wABJf8ME0D/FRxF/y4yV/9VVnL/0crJ/8jC + w//HwMH/xb/A/8W+v//HwMH/x8DB/9TO0P/Uzs7/0s3N/9HLzP/Rzcz/2tPO/3B5vP9AU7z/OUeg/xAZ + R/85OD//MS0s/w8ODv8AAAD/AAAC/wUFCf8CAAH/AgAA/wEAAf8lJCT/NzU1/zs5Ov+BgIH/mZqa//X1 + 9f+BgIL/Tk1R/zw9QP91eH3/ZGtz/3qCif9WX2f/MzhB/yUoL/8bHSH/ICAk/y0tMf8yMzn/tbW2//// + ////////+vv//y4uPP8AAhT/ICdX/yEmVP8pMGf/LTNZ/x8jRf9kaID//f3+/2NhbP8AACP/DBI+/xQZ + Qv8uMlb/T1Ft/9DJyP/IwsL/xb7A/8W+wP/Fvr//xb/A/8W/wP/Uzs//087N/9LNzf/SzM3/087N/9vU + z/9rdrv/QlO9/zhFnv8UG0v/AAAB/wAAAP8AAAD/BQMD/w0MC/8bGRr/IB4f/0hHR/94eHj/S0pL/21r + bf9EQ0X/PDs+/9LR0v/8/Pz/SUlK/1NUVP8XGRz/Gh0h/yktNP8cHyb/Gxsf/yEgJP8pKSv/MjE0/zs6 + PP8+PD//Nzc6/7a2tv////////////7+//8yMUD/AAAR/x0kU/8gJVL/KjR0/y40Xv8fI0P/YGN8//v7 + /f9mZG//AAAf/wwRO/8SFj7/LDBU/0lLaP/Ox8f/xsDB/8S+v//Evb//xL6+/8W/v//Fv7//083O/9PN + zf/Szc3/0szN/9POzv/c1M//aHO7/0NWwf8zQZP/DBE3/wgHF/8CAQD/BgYG/xoZHP8oKCn/YWFh/2Jg + Yv84Njn/YV9h/2NjZv9fYWb/mZ6j/2pweP/l5+j//////xYWFv8AAAD/AwIB/wkHCP8hISb/MzM4/z08 + P/9AQUP/QkJF/0NDRv9CQkT/Pz5B/zc2OP+1tbX/////////////////NTVE/wAAEP8bIVD/ICZU/y46 + g/8vNWL/ISRD/1tedv/6+vv/Z2Vw/wAAG/8NETj/EBU7/youUf9ERmT/zMXF/8bAwf/Evb//w72+/8O9 + vv/Evb//xL2//9LMzf/TzM7/0czN/9HLzf/TzM3/2tLO/2Vwuv9EV8L/NECO/wcMLP8KCyH/CAcI/xEP + Ef8lIiT/MTAy/zEwNP9vb3T/h4uR/1ddZP9+hI3/V19p/y81P/8/Qkn/5+fo//////8fHh//BQQG/xsa + Hv8qKCz/QUBE/0VFR/9DQ0b/Q0NF/0JDRf9BQkT/QUBC/z07Pf8vLi//rq+u/////////////////zg3 + R/8AAA7/GiBM/yAnW/8yQJL/MTdm/yIkQv9VWXH/+Pn5/2hnc/8AABj/DRE2/w8TOv8oLE//QEJg/8rE + wv/GwMD/w72+/8K8vf/Cu7z/xb2+/8W9vv/Tzc7/0szN/9DLzP/Qy8z/0czM/9nRzv9jbrn/RVnC/zNA + jf8JDjH/Cw4q/xIQGf8aGBr/JSMk/zg3Of9ISUz/UVZb/0pQVv8wNT3/HiAo/x4eJP8bGyD/Pj5B/+rq + 6v//////IR8g/w0LD/8fHyL/LSsu/0BAQv9EREb/QkFD/0A/Qf8+PD3/ODc5/zQyNP8sKy3/GRgY/6Sk + o/////////////////83N03/AAAM/xkfS/8mLnD/OUmo/zE5av8iJD//UlZs//j4+P9paXb/AAAV/w0Q + M/8OFET/JytQ/z0/W//GwMD/xb/A/8O8vf/BvLz/w7y8/8S+vv/Evr7/0czN/9DLzP/Py8z/0MrL/9DL + y//Yz83/YGq5/0lYw/8yP4z/CxA6/wwRM/8WFh3/Hxwd/yckJv89Oz7/Pj4//z47PP8qKi3/JSUp/zMz + Nf88Oz7/ODc6/1FRU//s7Ov//////yEhIf8SExb/JCIm/yooK/86Ojv/PDs9/zc0Nv8vLi//Kicp/yAe + If8VExX/FRIU/ycnJ/+ztLL/////////////////OkBf/wAAB/8bIlj/MkKZ/z5Rtv8xOWz/ISM9/01R + Zv/29vb/aGd2/wAAEv8MEDP/ERpX/yQrVf85O1b/wbu9/8bAwP/DvL3/wry8/8K8u//Fvr3/xb69/8/K + y//Qysv/z8nL/8/Jy//Qycv/1s7M/11ouf9HWMH/MD2J/w4SP/8NEzn/Fxgf/yEfH/8oJij/Pjw+/0JC + RP9CQET/QkJE/0NDRf9DQkX/QUBD/zo3O/9QUFL/6+vr///+//8iISP/FhcZ/yooK/8rKCv/KCYo/x0b + Hf8aGBr/JCIj/ysqK/9NTU7/hoWG/6yrrP/U1NT/+fn6//7+/v///////////05Wdv8AAhj/LTqM/z1S + tP89ULf/Mjlq/yMkOv9JS1//8/P0/2Rnd/8AAA7/DBE3/xQgZP8jKlf/NjhU/764u//GwMD/wru8/8G7 + u//Cu7v/xb69/8W+vf/Pycr/zsnK/83Iyf/Ox8n/z8nJ/9XOy/9ZZbn/RlXA/y86hf8PFD//DxU+/xka + If8hIB//KSgo/z48P/9CQkX/QkBE/0JBRP9BQUT/QkJE/0JBQ/88Ojz/U1JV/+vr6///////KCYp/woJ + C/8dGx3/HBob/zo4Of9iYWL/gYCC/7a2tv/n5+f/+Pj5//////////////////////////////////// + //9kbI3/EhpW/0BTuv8/ULP/P1O4/yEoUf8XGCz/Q0RV//Hx8v9iZnj/AAAN/wwSO/8WI2//Iitc/zQ2 + Uf+6tLj/xsDA/8C7u/+/ubn/wbq6/8S8vP/EvLz/zsjJ/87Hyf/Mx8j/y8bH/87HyP/Ty8j/VmO5/0VU + wP8vOIL/DhQ+/w8WQf8ZGiP/IyAf/yooKf8/PkD/Q0RG/0NDRv9EQ0b/Q0NG/0FAQv8+PD7/Lywu/zg3 + OP/i4uL//////11cXv9XV1j/oqKi/8nJyf/h4eL///////////////////////////////////////// + /////////f39/93d3//Dwrz/UVh9/zFCpf8/ULb/PlC1/zxOrv8UGDT/Cgwi/y4vPv/r6ur/YWR5/wAA + Df8OE0D/GSh7/yMtZP8wMkz/tK+y/8XAv//AuLr/v7i5/7+4uf/Burv/wbq7/8vHx//Lxcb/ycTF/8rD + xf/MxcX/zsfF/1Rhuf9FVcH/LziA/w8UP/8PFkH/GRoi/yIhIP8sKiv/QUBD/0RERv89PD7/Li0w/yIh + I/8hHyH/IiAi/ygmKP9gX2D/6Ojo//////////////////////////////////////////////////// + ////////9fX2/9jY2f+foKL/c3V5/05OUv8WFBD/BAYT/zNCmf9CVb3/PU6x/0JVv/8uOob/Dg8f/woM + If8jIy3/5+fl/1xie/8AAA3/DxVH/x0th/8jLmn/LC9G/66prf/Fvr7/vre5/763uP++uLj/v7m5/7+5 + uf/LxMX/ycPD/8fCw//HwcL/ycLC/8nDwv9RYLn/RFbB/y03gP8QFUL/DxZE/xcYIP8fHh3/Hhwd/yIh + Iv8ZGBj/JSMj/0RDQ/9iYmL/jo2O/8rJyf/q6ur/+/v7///+/v/+/v7///////////////////////// + ////////3Nvd/7W1uP+TlJf/WVpc/yQkJf8SEA//AwIA/wAAAP8AAAD/EhQs/zdHnf9CVsD/PlCy/z1R + tf9BVb//GyBK/wwLF/8GCRz/KCYp/+bm5P9dZYP/AAAO/xAXTv8hNJf/JDJx/ykrQf+ppan/xL6+/7y2 + uP+8trf/vLW2/722t/+9trf/yMHC/8fAwf/Ev8D/xb6//8fAv//Gv8D/Ul+5/0RXwP8sOYL/ExpO/w8X + TP8YGB//Kykn/0xISf9/fX3/s7Kx/8vLyv/w8PD///////////////////////////////////////79 + /v/k5OX/z8/R/52eoP9kZGf/Q0JF/yMhIP8AAAD/AAAA/wAAAP8LCQ7/EhMi/yAkR/8tNmz/N0SQ/0JU + uf9BVr7/PlCz/z1Ps/9DVsH/Lz+Q/w0KE/8LCA7/ODtE/6usrP/8+/r/c3eQ/wAAC/8SG1z/K0Gw/yc1 + ef8lJz3/paGm/8S9vf+8tbb/u7S2/7qztP+8tbX/vLW1/8S+v//Evr//wry9/8K8vP/Evrz/wLq9/09e + uv9EV7//LjuI/w8YWP81Omf/cmxq/4uFg//n3+D///////////////////////////////////////z8 + /f/Z2Nr/o6Sn/31+gv9TU1T/Hh0b/wEBAP8CAQD/AAAA/wEAAv8RFCf/ISdN/y42bf81Qor/PU2l/0JU + u/9DVL7/QlO//0FUv/8+ULf/PlGz/z5Qtf9AU7j/PU62/xQdVP8HCSb/BQcW/6+ztP/m6ev/7u/y/2pv + hv8AAAj/Gid5/zNLwv8pNn//IyQ6/6Ccov/DvL3/urO0/7qztf+5s7T/urS0/7q0tP/Bu7v/wby8/8C6 + u/+/urv/wry6/7u2vP9MXbn/RVW//zdEl/8aJGf/QUVx/5SJhf+KgoH/1c3N////////////8/P0/9HQ + 0/+1tbf/ioqM/1NSU/8oJyb/FhQQ/wEAAP8AAAD/AwQN/xIWK/8hJkn/LDRr/zZEj/9AUqv/Q1a5/0ZY + wv9HWsj/RVjC/0FUu/8+ULX/PlCz/z5OtP8+T7P/PlC0/z5Rtf8/Urf/QFG5/yEwiP8VH2H/AgtM/05W + fP/JzM//fIGM/9LU2f9xc4P/AAAT/yM1mP84UM3/KziD/yEiN/+alp7/wry8/7mytP+4s7T/uLGz/7my + s/+5srP/v7i5/7+5uf+8uLj/vbi4/8C5uP+7trr/TF25/0BSvP9EVLL/Nz+B/0NLfP+ZlqT/eHR4/2Jd + Xv9kY2X/UU9N/zIxKf8ODAX/AAAA/wAAAP8EBAr/DxAj/xwjSv8sNXH/OEaR/z9Opv9DVLn/R1jG/0RV + wv9CVb//QVW8/0BTuf9AUrf/QFK2/0BStf8/UbX/P1C0/z5QtP8/UbT/P1G1/z9Rs/8+T7P/O062/yc7 + o/8cLIf/Dx99/yYyg/+kqbj/n6Cl/0lLV//a293/c3WC/wAAIf8sQbP/OlPS/yw5h/8gITX/lpKa/8O8 + uv+3srP/t7Ky/7ewsP+4sbH/uLGx/7y1tv+8trb/urW1/7m0tf+7tbX/wbi0/1llvP8/Ubr/RVe//0VT + qP9ncqb/c3qb/wICC/8AAAD/AAAA/wABEP8PFTT/ICdU/y45df83RpL/QVGv/0ZXwP9FV8H/RljF/0VZ + xP9CVb3/P1K4/z9QtP8+ULT/P1G2/z9Qt/8/ULf/P1G4/z9Rtv8/UbP/Pk+x/z1Psf8+TrH/PE+w/zxP + tf8/U8D/OlDE/y1Euv8kOav/FCqg/yw9o//AxeH/p6eq/4qJkP86OUL/19fa/3R1gf8CCUP/OFDS/zhS + 0P8rOYn/HR0v/4+MlP/Burn/ta+v/7Wvr/+0ra7/trCw/7awsP+3sbL/uLKy/7aysv+2sLH/trCw/761 + rv94fbr/Ok2+/0ZXu/9EVr//Rle7/0lTpP8wOnf/NUST/0BQrP9DVbf/RVfB/0hbyv9FWMf/Q1bC/0NV + vv9CVbr/QVO4/0BRuP9BUrf/PlG2/z5Rtf8/UbX/PlC0/z5Os/88TbH/PEyx/z1Qs/8/Urn/QFbB/0JY + yv9FWtb/R1/j/0pj6P9OZOX/RVvW/zRMxf8uRsb/MUjF/1pryf/V2fP/9Pb9/5KVnv+Mi5D/NzdA/8rK + zP93eIb/EyOC/ztV2P84Uc//JDJ+/xAQH/+Jho3/v7m3/7Ksrv+xrK3/sKqs/7KsrP+yrKz/s62u/7Kt + rf+yra3/squt/7GqrP+4sKn/oJ6x/z9Swv9DVb3/RVe9/0JUvv9CVcL/SFzK/0dbyP9FWcX/Q1bA/0JT + vf9AUrn/P1G5/0BSuP9CU7n/QVO4/z9Stv89T7P/PU6x/z1Psv89T7T/Pk+1/0JVv/9EWc7/SF7d/01m + 5f9LZeH/Rl3d/0Vd2v9KXsj/SFqt/0lXlP9KU3z/U1t2/2Vref94e4v/ipC9/6yy3//g4vP/6uz8/97i + 9f+Rkpn/jY2R/zU2QP++vb7/eX2Y/yE5tf83T8r/OVHP/xwkX/8RDxr/lpKX/7izsv+vqar/rqiq/62n + qf+vqaj/r6mo/62nqP+uqKn/raip/6ynqP+tpqf/rKam/7eupP90fL3/N03G/0NVvv9EVr7/Q1a9/0JU + vv9CU77/QVO8/z9Ruf9AUrr/QFK4/z5Rt/8/ULb/PU+1/z5RvP8+U8f/PlTN/z9W1f9FXdz/Tmbh/1Bp + 7P9OaOz/UWbR/1Bhtf9EU5D/Tlh//1pgdP9laGz/cnFv/4aGf/+aloz/rqqh/7ezrf+9urX/vrq7/76+ + y//Extn/u77T/8bI3P/W2ef/rqyy/56dpP9FRlD/trax/4CN2P8oQMj/Nk3H/zhPyv8ICST/HRof/6+q + qf+uqKj/rKWn/6qkpv+poqT/q6Wl/6ulpf+noqL/qKGi/6iio/+ooqP/qaKj/6ehov+qo6H/rqel/214 + vv87Usj/OE7D/z1Svv8/ULv/PU67/z5QvP8/U8H/P1bJ/0BX0f9AWd3/RF/n/0tl6f9Sa+n/WW/p/2R4 + 5P94htn/b37W/0Bc5/9EXOL/HC2M/w8RKv8XFxf/lJKQ/766tf/Bvbv/0MvN/9XQ0v/Py8z/yMPH/8C8 + wP/AvsL/w8DE/8HAy//Bxdf/vcHP/8PHz//Q0dT/0NDR/8zPzP/Cwrz/aWlj/ztGcf89Vc7/M0vF/zpR + 0P8rPJj/AAAB/1VRU/+xrKr/p6Gi/6ehov+moKH/pp+g/6ehov+noaL/opyc/6Gcnf+inJ3/opyd/6Kc + nf+inJ3/opyd/6aem/+so53/ioyt/2dzv/9TZtH/SWHf/0lj5f9LZen/UWnu/1xy7P9pe9//dYHQ/4KJ + wf+Mj7X/lZOp/56Xnf+jm5T/r6ON/4iIo/8uStX/QVnd/xwrh/8AACD/KCgy/+nm8v/38vn/5uHp/9zZ + 3//V0tb/0c/S/9TS1f/b2dj/ycrK/73Awv+ztLj/n6Ch/4yNjf95en3/aWt5/1leeP9IUHf/NUB2/zA9 + g/8iN6n/LEO8/zZOxf84Tsb/DRhc/xgZN/+blZT/p6Gh/6Gcnf+inJ3/o52e/6Kbnf+jnZ3/o52d/5yW + lv+blZX/m5WW/5uVlv+blZb/m5aW/5yWlv+alZX/nJWV/6Wbkf+knZf/nZic/5OTq/+Lj7f/jo6t/5WR + nf+Zkpb/m5OR/52Vi/+flYf/nZSJ/5iRif+Vj4v/lI6N/5yUiv+BgZ//NE/U/0BY3v8xRLT/AAAq/11a + Vv/o49//sqyq/42KiP9vbWv/YF9f/1RVXf9ZX3D/XGN7/0tTdv85RHf/M0GB/zdGkf85S6T/OEyz/zNI + uf8nPbn/Jju6/ypBxf8tRcn/MkjC/zRJwf80TMb/ITaj/xMhc/97eIv/qaKe/5yXmf+dmJn/n5iZ/5+Z + mv+emJr/n5qa/5+amv+Ujo7/k46O/5OOjv+UjY7/lI6O/5WPj/+Vj4//lI6N/5ONjf+UjY7/k46N/5SO + i/+Xj4r/mJCH/5aOh/+TjIf/kYuH/4+Jhv+NiIf/jIeH/4yHh/+Mhob/jIaG/42Ih/+Ri4X/h4SS/z5W + 0f86Udf/QVjd/yY2lP8sMFD/NTpe/xYgVv8OHGH/EiN0/xgrh/8gNJ3/HzSl/x4zqf8mPbz/L0jO/zZQ + 1/86VNr/OVHW/zdO0P8zScv/MkjI/zFJxv8wR8P/MEfC/zJHxP80S8r/KUTF/yxBqP95eJX/pZ2W/5qU + lf+alZX/m5WV/5uVlf+blZX/mpSV/5uWlv+blpb/jIaF/4uFhf+KhYX/i4aF/4yFhf+LhYX/jYaG/4uF + hf+LhoX/i4aG/4qFhP+KhYT/ioSE/4mEhP+IgoP/iIOC/4iCgv+HgYH/hYGA/4aAgP+HgYH/hoCA/4eB + gP+HgoL/h4GC/46GfP9XZb3/NE7c/z1U0/9BWN7/OVHZ/zNM1f85U9//O1Ti/zpU4f86VOD/O1bd/zxU + 2f86Utb/OFDT/zZN0P8yS8//MUrP/zNL0v82Ttf/N1Da/zpU2/87Vd3/Plfg/0Ba4P9CW+H/Sl/T/19q + sP+JhpH/nJSM/5SOj/+Vj4//lI+P/5WPj/+WkJD/lpCR/5WQj/+WkZD/lpGQ/4N9ff+BfXz/gX18/4J9 + fP+CfX3/gn19/4J8ff+CfXz/gn18/4J9fP+BfHz/gn18/4F7e/+Be3v/gHp7/4B7e/+Be3r/gHt6/397 + ev+Ae3v/gXt7/4F7ev9/e3r/gHx7/4B6fP+DfHb/e3iF/0NY0/81T+D/OVDV/zhP1/83TtX/N07V/zhQ + 2P86U9z/PFbg/zxY4/89Wej/QFvt/0Nf8f9HYev/S2Pk/09m3v9Wadn/XWzT/2Jwy/9odL7/b3ez/3Z6 + qf99gJ//goKV/4eCif+SioD/kYuF/42Jiv+Pior/j4qJ/4+Jiv+Qion/kYmK/5CKiv+Pion/kIqJ/5CK + if94dHP/eHNy/3dzcv94dHP/eHNz/3hyc/94c3P/eHNy/3hycv93c3L/eHNz/3hycv93cnL/d3Jz/3hy + c/94cXL/eHJx/3hzcv93cnL/eXNz/3l0dP95dHP/eXR0/3l0c/95dHT/eHNz/3x2bf90cX//VmO+/0de + 5P9HYOz/SmLr/0tk5v9OZuT/U2je/1tt0v9gb8X/ZnC2/2xypv9vcpr/cnOP/3V0h/94dX7/e3V2/353 + bv+Demz/hHtu/4R8cP+EfXP/hH11/4eAef+HgHz/hoCA/4aBgf+JhIP/ioWE/4mEg/+JhYT/ioWE/4mD + g/+IhIL/iIKC/4iCgf+IgoH/bmlo/25oaP9sZ2f/bGhn/2xnZ/9tZ2f/bmhn/2xnZv9rZ2f/bWho/21o + aP9taGj/bmho/21paf9uaWn/bWhn/25paP9vamn/bmlp/29qav9va2r/b2tq/3Bra/9wa2v/cGpr/3Bq + a/9va2v/dG1m/3VuZP9vbnv/aW2S/2ltjf9tbX3/cGxv/3Juaf90bmj/dW9m/3duZP93b2P/d3Bj/3dv + Zf92b2j/d3Bq/3VwbP91cG7/dnFx/3hycv94dHP/eXV1/3p2dv96dXb/fXd3/355ef+AeXn/gHt7/4B7 + e/+Be3z/gHt7/397ev9/enn/fnl4/314d/99eHf/fXh3/2FcW/9gXFz/Xlpb/2BcW/9gXFz/YFtc/2Ba + W/9fW1v/X1tc/2BcXP9fXFz/YFxd/2FdXf9iXV3/Yl1d/2FdXv9hXl7/Yl5e/2NfX/9kX1//ZGBg/2Vf + YP9kX2D/ZF9g/2VfX/9lYGD/ZWFg/2VgYf9lYF//Z2Fc/2hhWP9oYVj/aGNc/2hjYP9oZGL/aGRj/2pl + Y/9qZGP/amVk/2tmZv9qZmb/amZm/2tmZv9sZmf/bWdn/21oZ/9uaWn/b2tq/3FsbP9xbGz/cWxs/3Nu + bv90b27/dXBv/3Nubv9zb27/dG1u/3Jtbf9xbWz/cGtq/25paP9sZmf/a2Zl/2tmZf9TT07/Uk5O/1BN + Tv9STk7/UU5O/1JOTv9RTUz/UU1M/1FNTf9RTk//Uk9P/1NPUP9UUFD/VlFR/1ZSUv9WUlL/VlJS/1ZS + Uv9VUlL/VVJR/1VTUv9WUlL/V1JS/1ZSU/9WUVL/VlJS/1ZTU/9XU1P/V1NT/1dSVP9XU1X/V1NU/1dV + Vf9ZVVb/WVZW/1tVVv9cV1f/W1dX/11ZWf9eWlr/XVpZ/15aWv9fWlr/X1ta/2BbXP9hXVz/YV1c/2Je + Xf9jXVz/Yl1d/2NeXf9lXl7/ZWBf/2RfXv9iXl7/Y15e/2JdXf9hXFz/YFta/1xXV/9aVVX/WFRT/1hU + VP9YVFT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -859,7 +646,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= \ No newline at end of file diff --git a/toBottom.png b/toBottom.png new file mode 100644 index 0000000..db2ce58 Binary files /dev/null and b/toBottom.png differ