diff --git a/Forwarder/Forwarder/App.config b/Forwarder/Forwarder/App.config
index d1428ad..ecdcf8a 100644
--- a/Forwarder/Forwarder/App.config
+++ b/Forwarder/Forwarder/App.config
@@ -1,6 +1,6 @@
-
+
diff --git a/Forwarder/Forwarder/Extension.cs b/Forwarder/Forwarder/Extension.cs
index 2f3b2bb..b6b8b62 100644
--- a/Forwarder/Forwarder/Extension.cs
+++ b/Forwarder/Forwarder/Extension.cs
@@ -40,7 +40,7 @@
public static string FBytes(int bytes)
{
if (bytes < 1024)
- return bytes.ToString()+"b";
+ return bytes.ToString() + "b";
string tail = null;
double b = bytes;
if (b > 1024)
@@ -92,19 +92,38 @@
return result.ToString();
}
- public static string BinToTextSample(byte[] data)
+ public static string BinToTextSample(this byte[] data, int max = MAX_DIALOG_PREVIEW)
{
if (data == null || data.Length == 0)
return "";
- string result = Encoding.ASCII.GetString(data, 0, Math.Min(MAX_DIALOG_PREVIEW, data.Length));
+ string result = Encoding.ASCII.GetString(data, 0, Math.Min(max, data.Length));
StringBuilder sb = new StringBuilder(result.Trim());
for (int i = 0; i < sb.Length; i++)
if (Char.IsControl(sb[i]) && sb[i] != '\n' && sb[i] != '\r')
sb[i] = '□';
result = sb.ToString();
- if (data.Length > MAX_DIALOG_PREVIEW)
+ if (data.Length > max)
result += "\r\n...";
return result;
}
+
+ public static string ToComactString(this DateTime dt)
+ {
+ StringBuilder sb = new StringBuilder(dt.Year.ToString(), 64);
+ sb.Append(dt.Month.Lz());
+ sb.Append(dt.Day.Lz());
+ sb.Append(dt.Hour.Lz());
+ sb.Append(dt.Minute.Lz());
+ sb.Append(dt.Second.Lz());
+ return sb.ToString();
+ }
+
+ public static string Lz(this int i, int size = 2)
+ {
+ string result = i.ToString();
+ while (result.Length < size)
+ result = "0" + result;
+ return result;
+ }
}
}
diff --git a/Forwarder/Forwarder/FData.Designer.cs b/Forwarder/Forwarder/FData.Designer.cs
new file mode 100644
index 0000000..d4fdb78
--- /dev/null
+++ b/Forwarder/Forwarder/FData.Designer.cs
@@ -0,0 +1,83 @@
+namespace Forwarder
+{
+ partial class FData
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.tbData = new System.Windows.Forms.TextBox();
+ this.btSaveAll = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // tbData
+ //
+ this.tbData.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.tbData.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+ this.tbData.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.tbData.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.tbData.ForeColor = System.Drawing.Color.White;
+ this.tbData.Location = new System.Drawing.Point(12, 12);
+ this.tbData.Multiline = true;
+ this.tbData.Name = "tbData";
+ this.tbData.ReadOnly = true;
+ this.tbData.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.tbData.Size = new System.Drawing.Size(776, 385);
+ this.tbData.TabIndex = 0;
+ //
+ // btSaveAll
+ //
+ this.btSaveAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btSaveAll.Location = new System.Drawing.Point(680, 403);
+ this.btSaveAll.Name = "btSaveAll";
+ this.btSaveAll.Size = new System.Drawing.Size(108, 34);
+ this.btSaveAll.TabIndex = 5;
+ this.btSaveAll.Text = "Save";
+ this.btSaveAll.UseVisualStyleBackColor = true;
+ this.btSaveAll.Click += new System.EventHandler(this.btSaveAll_Click);
+ //
+ // FData
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.btSaveAll);
+ this.Controls.Add(this.tbData);
+ this.Name = "FData";
+ this.ShowIcon = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox tbData;
+ private System.Windows.Forms.Button btSaveAll;
+ }
+}
\ No newline at end of file
diff --git a/Forwarder/Forwarder/FData.cs b/Forwarder/Forwarder/FData.cs
new file mode 100644
index 0000000..fe6d6e0
--- /dev/null
+++ b/Forwarder/Forwarder/FData.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Forwarder
+{
+ public partial class FData : Form
+ {
+ private Sentence s;
+
+ private FData()
+ {
+ InitializeComponent();
+ }
+
+ public static void Execute(string title, Sentence s)
+ {
+ var f = new FData();
+ f.Text = title;
+ f.tbData.Text = s.Data.BinToTextSample(s.Data.Length);
+ f.tbData.SelectionLength = 0;
+ f.s = s;
+ f.Show();
+ f.tbData.SelectionLength = 0;
+ }
+
+ private void btSaveAll_Click(object sender, EventArgs e)
+ {
+ SaveFileDialog sfd = new SaveFileDialog();
+ sfd.Filter = "*.bin|Transaction binary";
+ sfd.DefaultExt = ".bin";
+ sfd.FileName = "Data.bin";
+ if (sfd.ShowDialog() == DialogResult.OK)
+ {
+ File.WriteAllBytes(sfd.FileName, s.Data);
+ }
+ }
+ }
+}
diff --git a/Forwarder/Forwarder/FData.resx b/Forwarder/Forwarder/FData.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Forwarder/Forwarder/FData.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/Forwarder/Forwarder/FTransmission.Designer.cs b/Forwarder/Forwarder/FTransmission.Designer.cs
index e87a61e..67d67cb 100644
--- a/Forwarder/Forwarder/FTransmission.Designer.cs
+++ b/Forwarder/Forwarder/FTransmission.Designer.cs
@@ -34,14 +34,16 @@
this.lbCtt = new System.Windows.Forms.Label();
this.pTimeline = new DBPanel();
this.tUpdate = new System.Windows.Forms.Timer(this.components);
+ this.btSaveAll = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// lbInfo
//
this.lbInfo.AutoSize = true;
- this.lbInfo.Location = new System.Drawing.Point(12, 9);
+ this.lbInfo.Location = new System.Drawing.Point(16, 11);
+ this.lbInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbInfo.Name = "lbInfo";
- this.lbInfo.Size = new System.Drawing.Size(112, 13);
+ this.lbInfo.Size = new System.Drawing.Size(142, 16);
this.lbInfo.TabIndex = 0;
this.lbInfo.Text = "Transmission between";
//
@@ -49,9 +51,10 @@
//
this.lbAt.AutoSize = true;
this.lbAt.ForeColor = System.Drawing.SystemColors.GrayText;
- this.lbAt.Location = new System.Drawing.Point(19, 22);
+ this.lbAt.Location = new System.Drawing.Point(25, 27);
+ this.lbAt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbAt.Name = "lbAt";
- this.lbAt.Size = new System.Drawing.Size(16, 13);
+ this.lbAt.Size = new System.Drawing.Size(18, 16);
this.lbAt.TabIndex = 1;
this.lbAt.Text = "at";
//
@@ -59,9 +62,10 @@
//
this.lbCtt.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.lbCtt.Location = new System.Drawing.Point(12, 35);
+ this.lbCtt.Location = new System.Drawing.Point(16, 43);
+ this.lbCtt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbCtt.Name = "lbCtt";
- this.lbCtt.Size = new System.Drawing.Size(360, 13);
+ this.lbCtt.Size = new System.Drawing.Size(1090, 16);
this.lbCtt.TabIndex = 2;
this.lbCtt.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@@ -73,9 +77,10 @@
this.pTimeline.AutoScroll = true;
this.pTimeline.BackColor = System.Drawing.SystemColors.Window;
this.pTimeline.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.pTimeline.Location = new System.Drawing.Point(12, 51);
+ this.pTimeline.Location = new System.Drawing.Point(16, 63);
+ this.pTimeline.Margin = new System.Windows.Forms.Padding(4);
this.pTimeline.Name = "pTimeline";
- this.pTimeline.Size = new System.Drawing.Size(360, 355);
+ this.pTimeline.Size = new System.Drawing.Size(1089, 609);
this.pTimeline.TabIndex = 3;
this.pTimeline.Resize += new System.EventHandler(this.pTimeline_Resize);
//
@@ -84,22 +89,32 @@
this.tUpdate.Interval = 1000;
this.tUpdate.Tick += new System.EventHandler(this.tUpdate_Tick);
//
+ // btSaveAll
+ //
+ this.btSaveAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btSaveAll.Location = new System.Drawing.Point(927, 679);
+ this.btSaveAll.Name = "btSaveAll";
+ this.btSaveAll.Size = new System.Drawing.Size(178, 34);
+ this.btSaveAll.TabIndex = 4;
+ this.btSaveAll.Text = "Save full transmission";
+ this.btSaveAll.UseVisualStyleBackColor = true;
+ this.btSaveAll.Click += new System.EventHandler(this.btSaveAll_Click);
+ //
// FTransmission
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(384, 418);
+ this.ClientSize = new System.Drawing.Size(1122, 725);
+ this.Controls.Add(this.btSaveAll);
this.Controls.Add(this.pTimeline);
this.Controls.Add(this.lbCtt);
this.Controls.Add(this.lbAt);
this.Controls.Add(this.lbInfo);
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.MinimumSize = new System.Drawing.Size(300, 200);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.MinimumSize = new System.Drawing.Size(394, 235);
this.Name = "FTransmission";
this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Transmission";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FTransmission_FormClosed);
this.ResumeLayout(false);
@@ -114,5 +129,6 @@
private System.Windows.Forms.Label lbCtt;
private DBPanel pTimeline;
private System.Windows.Forms.Timer tUpdate;
+ private System.Windows.Forms.Button btSaveAll;
}
}
\ No newline at end of file
diff --git a/Forwarder/Forwarder/FTransmission.cs b/Forwarder/Forwarder/FTransmission.cs
index d71a163..ad7e2c3 100644
--- a/Forwarder/Forwarder/FTransmission.cs
+++ b/Forwarder/Forwarder/FTransmission.cs
@@ -4,6 +4,7 @@
using System.Data;
using System.Drawing;
using System.Linq;
+using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -13,10 +14,10 @@
public partial class FTransmission : Form
{
private static Dictionary fmap = new Dictionary();
- private static Font fontMonospace = new Font("Lucida Console", 7.5f);
- private static Font fontSmall = new Font(FontFamily.GenericSansSerif, 6f);
+ private static Font fontMonospace = new Font("Lucida Console", 8f);
+ private static Font fontSmall = new Font(FontFamily.GenericSansSerif, 7f);
- private Transmission trans;
+ private readonly Transmission trans;
private FTransmission(Transmission trans)
{
@@ -28,10 +29,16 @@
pTimeline.HorizontalScroll.Visible = false;
pTimeline.HorizontalScroll.Maximum = 0;
pTimeline.AutoScroll = true;
+ Text += " " + trans.Id;
}
public static void Execute(Transmission trans)
{
+ if (trans == null)
+ {
+ MessageBox.Show("Can't not load transmission, try again.");
+ return;
+ }
FTransmission f;
if (!fmap.TryGetValue(trans, out f))
fmap[trans] = f = new FTransmission(trans);
@@ -54,6 +61,8 @@
private void LoadTransmission()
{
+ if (trans == null)
+ return;
lbInfo.Text = "Transmission between " + trans.SourceIP + " and " + trans.DestinationIP;
lbAt.Text = trans.Date.ToLongDateString() + " " + trans.Date.ToLongTimeString();
lbCtt.Text = "Uploaded: " + Utils.FBytes(trans.Uploaded) + " Downloaded: " + Utils.FBytes(trans.Downloaded);
@@ -66,18 +75,18 @@
DateTime tlast = tstart;
foreach (Sentence s in trans.Conversation)
{
- if ((s.Time - tlast).TotalSeconds > 30)
+ if ((s.Time - tlast).TotalSeconds > 5)
{
Label lbx = new Label();
lbx.Parent = pTimeline;
lbx.Font = fontSmall;
lbx.Text = "On hold by " + Utils.FTime(s.Time - tlast);
lbx.TextAlign = ContentAlignment.MiddleCenter;
- lbx.BackColor = Color.LightYellow;
+ lbx.BackColor = Color.LightGray;
lbx.Top = y;
lbx.Left = 5;
lbx.Width = pTimeline.ClientSize.Width - 10;
- y += lbx.Height + 4;
+ y += lbx.Height + 15;
}
Label lbs = new Label();
lbs.AutoSize = true;
@@ -88,20 +97,23 @@
lbs.Left = s.FromMe ? 5 : pTimeline.ClientSize.Width - 5 - w2;
lbs.BackColor = s.FromMe ? Color.LightGreen : Color.LightBlue;
lbs.TextAlign = s.FromMe ? ContentAlignment.TopLeft : ContentAlignment.TopRight;
- lbs.Text = Utils.BinToTextSample(s.Data);
+ lbs.Text = s.Data.BinToTextSample(1024);
lbs.Font = fontMonospace;
lbs.Parent = pTimeline;
+ lbs.Click += Lbs_Click;
+ lbs.Cursor = Cursors.Hand;
+ lbs.Tag = s;
Label lbt = new Label();
lbt.Parent = pTimeline;
lbt.Font = fontSmall;
- lbt.Text = Utils.FTime(s.Time - tstart);
+ lbt.Text = $"At: {Utils.FTime(s.Time - tstart)}";
lbt.AutoSize = true;
lbt.Top = lbs.Top - 2;
lbt.Left = s.FromMe ? w2 + 10 : lbs.Left - lbt.Width - 5;
Label lbd = new Label();
lbd.Parent = pTimeline;
lbd.Font = fontSmall;
- lbd.Text = Utils.FTime(s.Time - tlast);
+ lbd.Text = $"Take: {Utils.FTime(s.Time - tlast)}";
lbd.ForeColor = SystemColors.GrayText;
lbd.AutoSize = true;
lbd.Top = lbt.Top + lbt.Height - 1;
@@ -113,13 +125,20 @@
lbz.AutoSize = true;
lbz.Top = lbd.Top + lbd.Height - 1;
lbz.Left = s.FromMe ? w2 + 10 : lbs.Left - lbz.Width - 5;
- y += lbs.Height + 4;
+ y += lbs.Height + 15;
tlast = s.Time;
}
pTimeline.ResumeLayout();
pTimeline.VerticalScroll.Value = cscroll;
}
+ private void Lbs_Click(object sender, EventArgs e)
+ {
+ if (!(sender is Label lb)) return;
+ if (!(lb.Tag is Sentence s)) return;
+ FData.Execute(Utils.FTime(s.Time - trans.Date),s);
+ }
+
private void FTransmission_FormClosed(object sender, FormClosedEventArgs e)
{
fmap.Remove(trans);
@@ -136,5 +155,17 @@
tUpdate.Enabled = false;
LoadTransmission();
}
+
+ private void btSaveAll_Click(object sender, EventArgs e)
+ {
+ SaveFileDialog sfd = new SaveFileDialog();
+ sfd.Filter = "*.zip|Zipped Transmission file";
+ sfd.DefaultExt = ".zip";
+ sfd.FileName = $"Transmission {trans.Id}.zip";
+ if (sfd.ShowDialog() == DialogResult.OK)
+ {
+ trans.SaveToFile(sfd.FileName);
+ }
+ }
}
}
diff --git a/Forwarder/Forwarder/Forwarder.cs b/Forwarder/Forwarder/Forwarder.cs
index d496396..77a4cf5 100644
--- a/Forwarder/Forwarder/Forwarder.cs
+++ b/Forwarder/Forwarder/Forwarder.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
+using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Sockets;
@@ -183,7 +185,7 @@
fw = forwarder;
scksrc = source;
sckdst = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- trans = new Transmission(scksrc.RemoteEndPoint as IPEndPoint, sckdst.RemoteEndPoint as IPEndPoint);
+ trans = new Transmission(scksrc.RemoteEndPoint as IPEndPoint, remote);
forwarder.Message(ForwarderMessage.FromNewTransmission(trans));
sckdst.Connect(remote);
}
@@ -381,6 +383,55 @@
conversation.Add(new Sentence(b, false));
}
+ public void SaveToFile(string path)
+ {
+ using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
+ using (ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Create))
+ {
+ GenerateIndex(za.CreateEntry("Index.ini").Open());
+ for (int i = 0; i < conversation.Count; i++)
+ GeneratePart(za.CreateEntry($"Part-{i + 1}.bin").Open(), conversation[i]);
+ }
+ }
+
+ private void GenerateIndex(Stream s)
+ {
+ using (s)
+ using (StreamWriter sw = new StreamWriter(s, Encoding.UTF8))
+ {
+ sw.WriteLine("; Transmission index file");
+ sw.WriteLine();
+ sw.WriteLine($"From={SourceIP}");
+ sw.WriteLine($"To={DestinationIP}");
+ sw.WriteLine($"Time={date.ToUniversalTime().ToString("O")}");
+ sw.WriteLine($"TotalSent={uploaded}");
+ sw.WriteLine($"TotalRecv={downloaded}");
+ for (int i = 0; i < conversation.Count; i++)
+ {
+ sw.WriteLine();
+ sw.WriteLine($"[Transfer({i + 1})]");
+ Sentence sn = conversation[i];
+ sw.WriteLine($"Time={sn.Time.ToUniversalTime().ToString("O")}");
+ sw.WriteLine("Initiator=" + (sn.FromMe ? "Local" : "Remote"));
+ sw.WriteLine($"Size={sn.Data.Length}");
+ sw.WriteLine($"File=Part-{i + 1}.bin");
+ }
+ }
+ }
+
+ private void GeneratePart(Stream s, Sentence st)
+ {
+ using (s)
+ {
+ s.Write(st.Data, 0, st.Data.Length);
+ }
+ }
+
+ private string GetId()
+ {
+ return $"{src.Address}({src.Port})-{dst.Address}({dst.Port})@{date.ToComactString()}";
+ }
+
public IPEndPoint SourceIP => src;
public IPEndPoint DestinationIP => dst;
public object Tag { get; set; }
@@ -388,22 +439,19 @@
public int Downloaded => downloaded;
public DateTime Date => date;
public Sentence[] Conversation => conversation.ToArray();
+ public string Id => GetId();
}
public class Sentence
{
- private DateTime time= DateTime.Now;
- private byte[] data;
- private bool me;
-
- public Sentence(byte[] data,bool me)
+ public Sentence(byte[] data, bool me)
{
- this.me = me;
- this.data = data;
+ FromMe = me;
+ Data = data;
}
- public bool FromMe => me;
- public byte[] Data => data;
- public DateTime Time => time;
+ public bool FromMe { get; }
+ public byte[] Data { get; }
+ public DateTime Time { get; } = DateTime.Now;
}
}
diff --git a/Forwarder/Forwarder/Forwarder.csproj b/Forwarder/Forwarder/Forwarder.csproj
index 3781de2..a95a5aa 100644
--- a/Forwarder/Forwarder/Forwarder.csproj
+++ b/Forwarder/Forwarder/Forwarder.csproj
@@ -8,7 +8,7 @@
WinExe
Forwarder
Forwarder
- v4.5
+ v4.7.2
512
true
@@ -38,6 +38,8 @@
+
+
@@ -62,6 +64,12 @@
FAbout.cs
+
+ Form
+
+
+ FData.cs
+
Form
@@ -86,6 +94,9 @@
FAbout.cs
+
+ FData.cs
+
Form1.cs
diff --git a/Forwarder/Forwarder/ForwarderControl.Designer.cs b/Forwarder/Forwarder/ForwarderControl.Designer.cs
index b94c698..801a2bc 100644
--- a/Forwarder/Forwarder/ForwarderControl.Designer.cs
+++ b/Forwarder/Forwarder/ForwarderControl.Designer.cs
@@ -66,8 +66,9 @@
this.pConf.Controls.Add(this.lbSrc);
this.pConf.Dock = System.Windows.Forms.DockStyle.Top;
this.pConf.Location = new System.Drawing.Point(0, 0);
+ this.pConf.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pConf.Name = "pConf";
- this.pConf.Size = new System.Drawing.Size(424, 80);
+ this.pConf.Size = new System.Drawing.Size(565, 98);
this.pConf.TabIndex = 0;
//
// rbFollow
@@ -75,9 +76,10 @@
this.rbFollow.Appearance = System.Windows.Forms.Appearance.Button;
this.rbFollow.Checked = true;
this.rbFollow.Image = global::Forwarder.Properties.Resources.list_follow;
- this.rbFollow.Location = new System.Drawing.Point(28, 52);
+ this.rbFollow.Location = new System.Drawing.Point(37, 64);
+ this.rbFollow.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.rbFollow.Name = "rbFollow";
- this.rbFollow.Size = new System.Drawing.Size(25, 25);
+ this.rbFollow.Size = new System.Drawing.Size(33, 31);
this.rbFollow.TabIndex = 21;
this.rbFollow.TabStop = true;
this.toolTip1.SetToolTip(this.rbFollow, "Follow events");
@@ -86,9 +88,10 @@
// lbInfo
//
this.lbInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.lbInfo.Location = new System.Drawing.Point(274, 59);
+ this.lbInfo.Location = new System.Drawing.Point(365, 73);
+ this.lbInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbInfo.Name = "lbInfo";
- this.lbInfo.Size = new System.Drawing.Size(147, 16);
+ this.lbInfo.Size = new System.Drawing.Size(196, 20);
this.lbInfo.TabIndex = 19;
this.lbInfo.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@@ -96,9 +99,10 @@
//
this.btClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btClear.Image = global::Forwarder.Properties.Resources.list_clear;
- this.btClear.Location = new System.Drawing.Point(1, 52);
+ this.btClear.Location = new System.Drawing.Point(1, 64);
+ this.btClear.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btClear.Name = "btClear";
- this.btClear.Size = new System.Drawing.Size(25, 25);
+ this.btClear.Size = new System.Drawing.Size(33, 31);
this.btClear.TabIndex = 18;
this.toolTip1.SetToolTip(this.btClear, "Clear event list");
this.btClear.UseVisualStyleBackColor = true;
@@ -107,9 +111,10 @@
// btStart
//
this.btStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btStart.Location = new System.Drawing.Point(360, 25);
+ this.btStart.Location = new System.Drawing.Point(480, 31);
+ this.btStart.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.btStart.Name = "btStart";
- this.btStart.Size = new System.Drawing.Size(61, 23);
+ this.btStart.Size = new System.Drawing.Size(81, 28);
this.btStart.TabIndex = 17;
this.btStart.Text = "Start";
this.btStart.UseVisualStyleBackColor = true;
@@ -117,9 +122,10 @@
//
// tbDestPort
//
- this.tbDestPort.Location = new System.Drawing.Point(274, 27);
+ this.tbDestPort.Location = new System.Drawing.Point(365, 33);
+ this.tbDestPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.tbDestPort.Name = "tbDestPort";
- this.tbDestPort.Size = new System.Drawing.Size(41, 20);
+ this.tbDestPort.Size = new System.Drawing.Size(53, 22);
this.tbDestPort.TabIndex = 16;
this.tbDestPort.Text = "8088";
this.tbDestPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
@@ -128,35 +134,39 @@
// lbDestPort
//
this.lbDestPort.AutoSize = true;
- this.lbDestPort.Location = new System.Drawing.Point(243, 31);
+ this.lbDestPort.Location = new System.Drawing.Point(324, 38);
+ this.lbDestPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbDestPort.Name = "lbDestPort";
- this.lbDestPort.Size = new System.Drawing.Size(29, 13);
+ this.lbDestPort.Size = new System.Drawing.Size(34, 16);
this.lbDestPort.TabIndex = 15;
this.lbDestPort.Text = "Port:";
//
// tbDestHost
//
- this.tbDestHost.Location = new System.Drawing.Point(76, 29);
+ this.tbDestHost.Location = new System.Drawing.Point(101, 36);
+ this.tbDestHost.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.tbDestHost.Name = "tbDestHost";
- this.tbDestHost.Size = new System.Drawing.Size(161, 20);
+ this.tbDestHost.Size = new System.Drawing.Size(213, 22);
this.tbDestHost.TabIndex = 14;
this.tbDestHost.TextChanged += new System.EventHandler(this.ConfChanged);
//
// lbDestHost
//
this.lbDestHost.AutoSize = true;
- this.lbDestHost.Location = new System.Drawing.Point(7, 32);
+ this.lbDestHost.Location = new System.Drawing.Point(9, 39);
+ this.lbDestHost.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbDestHost.Name = "lbDestHost";
- this.lbDestHost.Size = new System.Drawing.Size(63, 13);
+ this.lbDestHost.Size = new System.Drawing.Size(77, 16);
this.lbDestHost.TabIndex = 13;
this.lbDestHost.Text = "Destination:";
//
// cbLocal
//
this.cbLocal.AutoSize = true;
- this.cbLocal.Location = new System.Drawing.Point(123, 6);
+ this.cbLocal.Location = new System.Drawing.Point(164, 7);
+ this.cbLocal.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.cbLocal.Name = "cbLocal";
- this.cbLocal.Size = new System.Drawing.Size(131, 17);
+ this.cbLocal.Size = new System.Drawing.Size(161, 20);
this.cbLocal.TabIndex = 12;
this.cbLocal.Text = "only local connections";
this.cbLocal.UseVisualStyleBackColor = true;
@@ -164,9 +174,10 @@
//
// tbSrcPort
//
- this.tbSrcPort.Location = new System.Drawing.Point(76, 3);
+ this.tbSrcPort.Location = new System.Drawing.Point(101, 4);
+ this.tbSrcPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.tbSrcPort.Name = "tbSrcPort";
- this.tbSrcPort.Size = new System.Drawing.Size(41, 20);
+ this.tbSrcPort.Size = new System.Drawing.Size(53, 22);
this.tbSrcPort.TabIndex = 11;
this.tbSrcPort.Text = "8088";
this.tbSrcPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
@@ -175,9 +186,10 @@
// lbSrc
//
this.lbSrc.AutoSize = true;
- this.lbSrc.Location = new System.Drawing.Point(4, 6);
+ this.lbSrc.Location = new System.Drawing.Point(5, 7);
+ this.lbSrc.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbSrc.Name = "lbSrc";
- this.lbSrc.Size = new System.Drawing.Size(66, 13);
+ this.lbSrc.Size = new System.Drawing.Size(80, 16);
this.lbSrc.TabIndex = 10;
this.lbSrc.Text = "Source Port:";
//
@@ -191,10 +203,11 @@
this.lvHistory.FullRowSelect = true;
this.lvHistory.GridLines = true;
this.lvHistory.HideSelection = false;
- this.lvHistory.Location = new System.Drawing.Point(0, 80);
+ this.lvHistory.Location = new System.Drawing.Point(0, 98);
+ this.lvHistory.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.lvHistory.MultiSelect = false;
this.lvHistory.Name = "lvHistory";
- this.lvHistory.Size = new System.Drawing.Size(424, 342);
+ this.lvHistory.Size = new System.Drawing.Size(565, 421);
this.lvHistory.SmallImageList = this.ilMsg;
this.lvHistory.TabIndex = 1;
this.lvHistory.UseCompatibleStateImageBehavior = false;
@@ -232,12 +245,13 @@
//
// ForwarderControl
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.lvHistory);
this.Controls.Add(this.pConf);
+ this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "ForwarderControl";
- this.Size = new System.Drawing.Size(424, 422);
+ this.Size = new System.Drawing.Size(565, 519);
this.pConf.ResumeLayout(false);
this.pConf.PerformLayout();
this.ResumeLayout(false);
diff --git a/Forwarder/Forwarder/ForwarderControl.resx b/Forwarder/Forwarder/ForwarderControl.resx
index 9cb1725..94051af 100644
--- a/Forwarder/Forwarder/ForwarderControl.resx
+++ b/Forwarder/Forwarder/ForwarderControl.resx
@@ -117,6 +117,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 98, 17
+
17, 17
@@ -124,125 +127,120 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
- GgAAAk1TRnQBSQFMAgEBBgEAASgBAAEoAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
- AwABIAMAAQEBAAEgBgABICYAAwQBBQMMARADDAEQAwQBBhwAAyMBMwMjATMDIwEzxAADBAEFAxMBGgMk
- ATUDIQExAw0BERwAATUBgQGsAf8BNAGAAasB/wE1AYEBrAH/wAADAwEEAxIBGAMmATkBKQF7AVMB8QEA
- AY4BSQH/AxABFhwAATMBegGrAf8BZgGyAdQB/wEzAYABqwH/vAADAgEDAxABFQMkATUBMwFyAVMB7AEA
- AccBhgH/AQABiwFGAf8DHAEnAxABFgMQARYDEAEWAxABFgMQARYDDAEQAwQBBQEzAXoBqgH/AWQBsAHT
- Af8BMwF6AasB/7gAAwIBAwMPARQDIgEyAVIBYQFZAc8BAAHAAYAB/wEAAeUBpgH/AQABiAFDAf8DLgFI
- AysBQwMrAUMDKwFDAysBQwMrAUIDIQExAwwBEAEzAXoBqgH/AWQBsAHTAf8BMgGBAa8B/xQAAwsBDwMi
- ATIDIwEzAyMBMwMjATMDGAEhAwcBCoQAAwMBBAMPARQDIgEyAVMBWwFWAcEBAAG8AYEB/wEAAdsBoAH/
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB0
+ GgAAAk1TRnQBSQFMAgEBBgEAATgBAAE4AQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ AwABIAMAAQEBAAEgBgABICYAAwQBBQMMARADDAEQAwUBBhwAAyMBMwMjATMDIwEzxAADBAEFAxMBGgMk
+ ATUDIgExAw0BERwAATUBgQGsAf8BNAGAAasB/wE1AYEBrAH/wAADAwEEAxIBGAMmATkBNQF1AVUB8QEA
+ AY4BSQH/AxEBFhwAATMBegGrAf8BZgGyAdQB/wEzAYABqwH/vAADAgEDAxABFQMkATUBQAFwAVkB7AEA
+ AccBhgH/AQABiwFGAf8DHAEnAxEBFgMRARYDEQEWAxEBFgMRARYDDAEQAwQBBQEzAXoBqgH/AWQBsAHT
+ Af8BMwF6AasB/7gAAwIBAwMPARQDIwEyAVoBYQFbAc8BAAHAAYAB/wEAAeUBpgH/AQABiAFDAf8DLgFI
+ AywBQwMsAUMDLAFDAywBQwMrAUIDIgExAwwBEAEzAXoBqgH/AWQBsAHTAf8BMgGBAa8B/xQAAwwBDwMj
+ ATIDIwEzAyMBMwMjATMDGAEhAwgBCoQAAwMBBAMPARQDIwEyAVcBWwFZAcEBAAG8AYEB/wEAAdsBoAH/
AQAB3AGhAf8BAAGDAT0B/wEAAYcBQQH/AQABiAFCAf8BAAGIAUIB/wEAAYgBQgH/AQABiAFCAf8BAAGK
- AUQB/wEmAXsBUwHyAxABFgEzAXoBqwH/AWMBsgHWAf8BMAGFAbYB/wMXASADCgENDAADPwFtA04B+wNF
- Af8DPgH/Az4B/wNVAbkDOAFdAxYBH4AAAwoBDQMgAS4BUwFbAVYBwQEAAboBgAH/AQAB1gGgAf8BAAHT
+ AUQB/wEyAXgBVwHyAxEBFgEzAXoBqwH/AWMBsgHWAf8BMAGFAbYB/wMYASADCgENDAADPwFtA1AB+wNF
+ Af8DPgH/Az4B/wNXAbkDOAFdAxcBH4AAAwoBDQMgAS4BVwFbAVkBwQEAAboBgAH/AQAB1gGgAf8BAAHT
AZwB/wEAAdMBnAH/AQAB2AGgAf8BAAHZAaIB/wEAAdoBogH/AQAB2gGiAf8BAAHaAaIB/wEAAdoBoQH/
- ATQB6AG+Af8BAAGJAUMB/wMQARYBMwF6AasB/wFhAawBzwH/AUgBQwFBAf8DVQGxAz0BaQMjATMDIwEz
- AyMBMwNIAf8DRwH/A0gF/wH8AfsB+QH/AW0BbAFrAf8BQAJBAf8DUwGtgAADDwEUAVMBWgFXAcABAAG4
+ ATQB6AG+Af8BAAGJAUMB/wMRARYBMwF6AasB/wFhAawBzwH/AUgBQwFBAf8DVQGxAz0BaQMjATMDIwEz
+ AyMBMwNIAf8DRwH/A0gF/wH8AfsB+QH/AW0BbAFrAf8BQAJBAf8DVQGtgAADDwEUAVgBWgFZAcABAAG4
AYEB/wEAAdIBnwH/AQABzgGbAf8BAAHNAZoB/wEAAc0BmgH/AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/
- AQABzwGbAf8BAAHPAZsB/wEAAc8BmgH/AU0B5QHDAf8BAAGHAUAB/wMQARYBMgF6AawB/wFiAbUB3AH/
+ AQABzwGbAf8BAAHPAZsB/wEAAc8BmgH/AU0B5QHDAf8BAAGHAUAB/wMRARYBMgF6AawB/wFiAbUB3AH/
AUgBQAE8Af8BPwE9ATwB/wNGAf8DRQH/Az4B/wM7Af8DPQH/Az4B/wM6Bf8B9gH1AfMB/wFkAWMBYgH/
AXcBdgF1Af8DRQH/gAADDAEQAQABigFDAf8BJwHcAbcB/wECAc0BoQH/AQAByQGZAf8BAAHJAZoB/wEA
AckBmQH/AQAByQGZAf8BAAHIAZkB/wEAAcgBmQH/AQAByAGZAf8BAAHIAZgB/wEAAcgBlwH/AWgB5gHN
- Af8BAAGHAT8B/wMQARYBMgF6AawB/wFhAbUB3AH/AUQBPAE5Af8BdQFyAXAB/wE5AjgB/wE/AT4BPQH/
+ Af8BAAGHAT8B/wMRARYBMgF6AawB/wFhAbUB3AH/AUQBPAE5Af8BdQFyAXAB/wE5AjgB/wE/AT4BPQH/
AfIB8QHwCf8BcQFvAW4B/wE6AjsB/wGOAYsBigH/AXYBdAFzAf8B2gHZAdgB/wG4ArcB/wM/Af+AAAME
- AQUBNwF3AVYB6wEAAbMBgQH/AV0B4AHHAf8BAAHGAZoB/wEAAcUBmQH/AQABxAGYAf8BAAHDAZgB/wEA
+ AQUBRAFzAVkB6wEAAbMBgQH/AV0B4AHHAf8BAAHGAZoB/wEAAcUBmQH/AQABxAGYAf8BAAHDAZgB/wEA
AcMBmQH/AQABwwGZAf8BAAHDAZkB/wEAAcMBmAH/AQABwwGXAf8BhwHpAdgB/wEAAYcBPwH/AxABFQEy
AXoBrAH/AWABtAHbAf8BPgE3ATMB/wHiAeAB3QH/AawBqwGqAf8BkAGPAY4B/wHqAekB6AX/Af4C/QH/
- AccBxgHFAf8DOAH/AVsBWQFWAf8BTAFKAUkB/wH7AfoB+QX/AzsB/4QAAwQBBQE+AW4BVwHlAQABrwF6
+ AccBxgHFAf8DOAH/AVsBWQFWAf8BTAFKAUkB/wH7AfoB+QX/AzsB/4QAAwQBBQFMAWwBXAHlAQABrwF6
Af8BWwHcAcYB/wEAAcABlwH/AZQB5gHYAf8BSAHnAdEB/wFMAekB1AH/AU0B6QHVAf8BTQHpAdUB/wFM
AekB1AH/AUkB6QHUAf8BnQHwAeYB/wEAAYkBQQH/AwoBDQEyAXoBrAH/AWABswHaAf8BPAE1ATEB/wHq
AegB5QH/Ae8B7gHtAf8B/gH/Af0B/wFmAWMBZAH/AXUBcgFzAf8BZgFlAWQB/wH0AfMB8gH/AzIB/wHn
- AuYB/wHJAcgBxgH/AdIB0QHQBf8DOwH/iAADBAEFAT4BbwFWAeYBAAGrAXoB/wFVAdkBxAH/AYIB4wHW
- Af8BAAGCATYB/wEAAYYBPQH/AQABhwE+Af8BAAGHAT4B/wEAAYcBPgH/AQABhwE/Af8BAAGJAUEB/wFS
- AVgBVQG0AwMBBAEyAXoBrAH/AWABswHbAf8BPQE2ATIB/wHHAcUBwwH/AbYBtQG0Af8C6QHoAf8BZwJl
+ AuYB/wHJAcgBxgH/AdIB0QHQBf8DOwH/iAADBAEFAUoBagFaAeYBAAGrAXoB/wFVAdkBxAH/AYIB4wHW
+ Af8BAAGCATYB/wEAAYYBPQH/AQABhwE+Af8BAAGHAT4B/wEAAYcBPgH/AQABhwE/Af8BAAGJAUEB/wFV
+ AVcBVQG0AwMBBAEyAXoBrAH/AWABswHbAf8BPQE2ATIB/wHHAcUBwwH/AbYBtQG0Af8C6QHoAf8BZwJl
Af8BdQJzAf8BZgFlAWQB/wHiAeEB4AH/Ay8F/wHwAe4B7AH/AVgBVwFWAf8BxQHDAcQB/wM9Af+MAAMD
- AQQBUwFcAVgBwAEAAaoBegH/AXUB4wHYAf8BAAGJAT8B/wMQARYcAAEyAXoBrAH/AWABtAHbAf8BPwE3
+ AQQBWAFbAVkBwAEAAaoBegH/AXUB4wHYAf8BAAGJAT8B/wMRARYcAAEyAXoBrAH/AWABtAHbAf8BPwE3
ATMB/wG8ArsB/wEtASwBLQH/ATUBNAEyAf8B6wHqAegF/wH7AvoB/wG1ArQB/wMyAf8D8QH/AegB5wHm
- Af8C2wHaAf8D3QH/Az8B/5AAAwIBAwFSAVUBVAGuAQABqwGHAf8BAAGMAUUB/wMNAREcAAEyAXoBrAH/
- AWEBtAHbAf8BQAE4ATQB/wHtAewB6wH/ApwBnQH/AYMCggH/AegB5wHmBf8B+QL4Af8D2AH/AzoB/wNG
- Af8DZQH/A20B/wPTAf8DQgH/lAADAwEEAVMBVwFWAbMBAAGOAUgB/wMEAQYcAAEzAYABrAH/AWMBtgHc
- Af8BRQE8ATYB/wFoAWYBZAH/A5AB/wG1ArQB/wHNAswB/wHMAssB/wLKAcgB/wOoAf8DQQH/BAADIgEx
- AzUBVwNWAbwDRwH/wAABVQFWAVcBsQEzAYMBsQH/AVACUgGkAzwBZgJZAVgBzQNBAf8DPwH/AT0CPgH/
- Az8B/wNIAfgDSQGIsAADHQEqAyMBMwMdASoYAAMDAQQDCgENAxABFQMQARYDEAEWAxABFgMQARYDEAEW
- AxABFgMQARYDEAEWAxABFgMQARYDEAEVAwoBDQMDAQQEAAMaASQDIwEzUAADBAEGAwwBEAMMARADBAEF
- LAADHwEtAXABYwFXAd0BpwFyAUAB/wFwAWMBVwHdAx8BLRQAAwoBDQMeASsDKgFAAysBQwMrAUMDKwFD
- AysBQwMrAUMDKwFDAysBQwMrAUMDKwFDAysBQwMqAUADHgErAwoBDQQAAWMCYAHDAWsBbQFuAf8DIwEz
- AyMBMwMjATMDIwEzAyMBMzwAAw0BEQMhATEDJAE1AxMBGgMEAQUkAAMfAS0BewFlAVEB6QHFAaMBeQH/
- AfsB9AHnAf8BxQGjAXkB/wF7AWUBUQHpAx8BLRAAAw4BEwFXAVsBYQHEATQBegHIAf8BMwF4AccB/wE0
- AXcBxwH/ATQBdwHHAf8BMwF4AccB/wEzAXgByAH/ATMBeAHIAf8BMwF4AccB/wE0AXcBxwH/ATQBdwHH
- Af8BMwF4AccB/wE0AXoByAH/AVcBWwFhAcQDDgETBAABnwGgAaIB/wLMAc4B/wFmAW4BeAH/AbsBgwE6
- Af8BtwGCAT4B/wG2AYMBPwH/AbgBhAFAAf8DIwEzOAADEAEWAQABjgFJAf8BKQF7AVMB8QMmATkDEgEY
- AwMBBBwAAx8BLQF6AWcBVAHoAcQBpAF6Af8B9gHtAd8B/wHBAZ4BdAH/AfYB7QHfAf8BxAGkAXoB/wF6
- AWcBVAHoAx8BLQwAAwoBDQE2AYYBzQH/AU4B4gL/AVAB4wL/AVEB4QL/AVEB4gL/AVAB5AL/AU4B5wL/
- AU4B5wL/AVAB5AL/AVEB4gL/AVEB4QL/AVAB4wL/AU4B4gL/ATYBhgHNAf8DCgENCAABnAGkAa4B/wG5
- AXkBMgH/AfkBwQFuAf8B8gG6AWgB/wHvAbYBYAH/AeUBtQFoAf8BtwGDAT8B/wMjATMYAAMEAQUDDAQQ
- ARYDEAEWAxABFgMQARYDEAEWAxwBJwEAAYsBRgH/AQABxwGGAf8BMwFyAVMB7AMkATUDEAEVAwIBAxQA
- Ax8BLQF6AWcBVAHoAcUBpQGBAf8B+AHxAeYB/wG0AYkBWAH/AaMBbQE5Af8BtAGJAVgB/wH4AfEB5gH/
- AcUBpQGBAf8BegFnAVQB6AMfAS0IAAMDAQQBVQFWAVkBsgF2AbwB5wH/AUwB2gL/AUUB1AL/AUcB1AL/
- AUUB2AL/AYoBYAFSAf8BigFgAVIB/wFFAdgC/wFHAdQC/wFFAdQC/wFMAdoC/wF2AbwB5wH/AVUBVgFZ
- AbIDAwEECAABuQGAATUB/wH0AckBjwH/AfYBwAFzAf8B8gG7AWsB/wHrAb8BgQH/AbEBeAE6Af8B7wGz
- AVgB/wG4AYQBPwH/GAADDAEQAyEBMQMrAUIDKwFDAysBQwMrAUMDKwFDAy4BSAEAAYgBQwH/AQAB5QGm
- Af8BAAHAAYAB/wFSAWEBWQHPAyIBMgMPARQDAgEDDAADHwEtAXoBZwFUAegBxwGmAYQB/wH6AfQB6gH/
- AbMBiQFXAf8BogFrATcB/wGjAWwBOAH/AaIBawE3Af8BswGJAVcB/wH6AfQB6gH/AccBpgGEAf8BegFn
- AVQB6AMfAS0IAAMHAQoBOgGCAckB/wGjAeUC/wE4AcwC/wE9AcwC/wE9AdEC/wE7AdkC/wE7AdkC/wE9
- AdEC/wE9AcwC/wE4AcwC/wGjAeUC/wE6AYIByQH/AwcBCgwAAbYBgAE5Af8B+AHRAZ4B/wH4AcIBeAH/
- AfIBywGUAf8BrgF1ATYB/wH0AboBZgH/AX4BcQFeAd0BuAGCATsB/wMjATMDIwEzEAADEAEWASYBewFT
- AfIBAAGKAUQB/wEAAYgBQgH/AQABiAFCAf8BAAGIAUIB/wEAAYgBQgH/AQABhwFBAf8BAAGDAT0B/wEA
- AdwBoQH/AQAB2wGgAf8BAAG8AYEB/wFTAVsBVgHBAyIBMgMPARQDAwEEBAADGwEmAXsBZQFRAekBxgGn
- AYQB/wH8AfcB7wH/AbMBigFaAf8BuAGRAWMB/wH6AfIB5AH/AfgB7wHgAf8B+wHzAeYB/wG5AZIBZAH/
- AbMBiwFaAf8B/AH3Ae8B/wHGAacBhAH/AXsBZQFRAekDHQEqBAADAQECA0MBeAFhAaEB2AH/AZIB5AL/
- ATABxwL/ATMBzwL/AV8BQwE5Af8BXwFDATkB/wEzAc8C/wEwAccC/wGSAeQC/wFhAaEB2AH/A0MBeAMB
- AQIMAAG1AYABOgL/AdwBrwH/AfsB1wGnAf8BrQFzATIB/wH5AcIBdgH/AYABdwFmAd4BtQF6ATkB/wG5
- AcUB2AH/AbgBgQE6Af8BuAGEAT8B/wMjATMMAAMQARYBAAGJAUMB/wE0AegBvgH/AQAB2gGhAf8BAAHa
- AaIB/wEAAdoBogH/AQAB2gGiAf8BAAHZAaIB/wEAAdgBoAH/AQAB0wGcAf8BAAHTAZwB/wEAAdYBoAH/
- AQABugGAAf8BUwFbAVYBwQMgAS4DCgENBAABYgFeAVkBzAHIAagBhwH/Af0B+QHyAf8BtQGMAVsB/wGm
- AXEBPgH/AaUBcAE9Af8BuAGQAWEB/wH9AfgB7wH/AaIBagE1Af8BpwFyAUAB/wGmAXEBPwH/AbUBjAFb
- Af8B/QH5AfIB/wHIAagBhwH/AXABYwFXAd0IAAMEAQYBVgFfAWsB0wGjAdEB8AH/AWUB1QL/ASUByQL/
- AWQBUQFHAf8BZAFRAUcB/wElAckC/wFlAdUC/wGjAdEB8AH/AVYBXwFrAdMDBAEGEAABtgGBATsC/wHr
- AcUB/wGtAXIBMAL/AcsBiAH/AYMBeQFsAd4BtQF6AToB/wMjATMBtQF6ATcB/wHpAcUBkQH/Ae0BrwFR
- Af8BtwGEAUAB/wMjATMIAAMQARYBAAGHAUAB/wFNAeUBwwH/AQABzwGaAf8BAAHPAZsB/wEAAc8BmwH/
- AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/AQABzQGaAf8BAAHNAZoB/wEAAc4BmwH/AQAB0gGfAf8BAAG4
- AYEB/wFTAVoBVwHAAw8BFAQAAaYBcAE+Bf8BxAGkAYEB/wGjAW0BOQH/AagBcwFCAf8BpgFwAT0B/wG5
- AZEBYgP/Af4B/wGkAW0BOQH/AakBdQFFAf8BqQF1AUQB/wGkAW0BOQH/AcQBpAGBBf8BpgFwAT4B/wsA
- AQEDHQEpAUABiAHMAf8BvQHtAv8BOQHMAv8BZwFWAU4B/wFnAVYBTgH/ATkBzAL/Ab0B7QL/AUABiAHM
- Af8DHQEpAwABARQAAbUBegE5Av8B2gGfAf8BgQF7AXAB3QG0AXgBNAH/AyMBMwG1AXoBOgH/AYIBdwFo
- Ad4B8QG3AWEB/wGyAXkBOgH/AeEBrAFaAf8BuAGEAUAB/wgAAxABFgEAAYcBPwH/AWgB5gHNAf8BAAHI
- AZcB/wEAAcgBmAH/AQAByAGZAf8BAAHIAZkB/wEAAcgBmQH/AQAByQGZAf8BAAHJAZkB/wEAAckBmgH/
- AQAByQGZAf8BAgHNAaEB/wEnAdwBtwH/AQABigFDAf8DDAEQBAABVgFUAVMBrAHJAakBiQP/AfwB/wG0
- AY0BXQH/AaUBbwE9Af8BvgGaAW8J/wGlAW8BPAH/AakBdQFEAf8BpwFyAT8B/wG1AY0BXgP/AfwB/wHJ
- AakBiQH/AV0BWwFWAcEMAAMCAQMBTwJRAZwBcAGvAeIB/wGzAfAC/wFoAVYBTQH/AWgBVgFNAf8BswHw
- Av8BcAGvAeIB/wFPAlEBnAMCAQMcAAG3AYIBPAH/AbYBegE3Af8BuAHEAdUB/wG1AXkBNQH/AYMBdwFo
- Ad4B+QHBAXQB/wGvAXUBNgH/AeYBuQFwAf8B5gG1AWsB/wG3AYMBPgH/CAADEAEVAQABhwE/Af8BhwHp
- AdgB/wEAAcMBlwH/AQABwwGYAf8BAAHDAZkB/wEAAcMBmQH/AQABwwGZAf8BAAHDAZgB/wEAAcQBmAH/
- AQABxQGZAf8BAAHGAZoB/wFdAeABxwH/AQABswGBAf8BNwF3AVYB6wMEAQUIAAFUAVIBUQGnAckBqgGL
- Bf8BtgGMAV0B/wGjAW0BOAH/AaIBawE2Af8BogFrATYB/wGmAXEBPgH/AaYBcQE+Af8BtwGNAV4F/wHJ
- AaoBiwH/AVQBUgFRAacUAAMGAQgBKwF4AcgB/wGgAdYB+QH/AZEB4gL/AZEB4gL/AaAB1gH5Af8BKwF4
- AcgB/wMGAQgoAAG3AYABOAH/Ae8BywGfAv8BzQGMAf8BrQFzATIB/wHuAcYBiwH/AfABtwFlAf8B7AHA
- AYEB/wG3AYIBPAH/CAADCgENAQABiQFBAf8BnQHwAeYB/wFJAekB1AH/AUwB6QHUAf8BTQHpAdUB/wFN
- AekB1QH/AUwB6QHUAf8BSAHnAdEB/wGUAeYB2AH/AQABwAGXAf8BWwHcAcYB/wEAAa8BegH/AT4BbgFX
- AeUDBAEFEAABVAFSAVEBpwHKAasBjAX/AbUBjAFcAf8BugGUAWYD/wH+Af8BowFsATgB/wG2AY4BXgX/
- AcoBqwGMAf8BVAFSAVEBpxsAAQEDMgFQAUUBkAHTAf8BxAHwAv8BxAHwAv8BRQGQAdMB/wMyAVADAAEB
- KAABtwGCATwC/wHcAaIB/wGuAXIBMAH/AfoB1AGjAf8B9gHAAXQB/wH0AbsBawH/AfcBzQGTAf8BvAGD
- ATkB/wgAAwMBBAFSAVgBVQG0AQABiQFBAf8BAAGHAT8B/wEAAYcBPgH/AQABhwE+Af8BAAGHAT4B/wEA
- AYYBPQH/AQABggE2Af8BggHjAdYB/wFVAdkBxAH/AQABqwF6Af8BPgFvAVYB5gMEAQUYAAFUAVIBUQGn
- AcoBrAGOBf8BswGKAVoB/wGgAWcBMQH/AbQBiwFbBf8BygGsAY4B/wFUAVIBUQGnIAADBAEFAVYBYwFw
- AdUBdQG8AewB/wF1AbwB7AH/AVYBYwFwAdUDBAEFMAABtQF6ATkC/wHqAcMC/wHhAbgC/wHdAbAC/wHb
- AasB/wG5AXkBMAH/AWYBbgF4Af8DIwEzIAADEAEWAQABiQE/Af8BdQHjAdgB/wEAAaoBegH/AVMBXAFY
- AcADAwEEIAABVAFSAVEBpwHLAa0BjgX/AcYBqAGGBf8BywGtAY8B/wFUAVIBUQGnKAADDgETAS8BhQHN
- Af8BLwGFAc0B/wMOARM4AAG2AYEBOwH/AbUBegE5Af8BtQF6ATgB/wG4AXoBNAH/AZwBpAGtAf8CzAHO
- Af8BawFsAW4B/yAAAw0BEQEAAYwBRQH/AQABqwGHAf8BUgFVAVQBrgMCAQMoAAFUAVIBUQGnAcsBrgGR
- Bf8BywGuAZEB/wFUAVIBUQGniAABnwGgAaIB/wNaAbQgAAMEAQYBAAGOAUgB/wFTAVcBVgGzAwMBBDAA
- AVYBVAFTAawBpgFwATwB/wFWAVQBUwGs2AABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEB
- FgAD/wEAAfgBfwEfAf8EAAHwAX8BHwH/BAAB4AF/AR8B/wQAAcABAAEfAf8EAAGAAQABHwEBBgABByUA
- AYAHAAHABwAB4AF/BgAB8AF/BgAB+AF/AQABEAQAAv8BAAEfBAAB/gE/AgABnwH/Af4BHwH8AR8CAAGA
- Af8B/gEPAfgBDwIAAYABfwH+AQcB8AEHAgABwAE/AQABAwHgAQMCAAHAAT8BAAEBAcABAQGAAQEBwAEP
- AgABgAEAAYABAQHAAQcCAAGAAQABwAEDAcABAwIAAYABAAHAAQMB4AEDAgABgAEAAeABBwHwAQMCAAHA
- AQEB8AEPAfwBAwEAAQEB4AEDAfABDwH8AQMBAAEDAfABBwH4AR8B/gEBAf4BBwH4AQ8B/AE/Af8BAQH+
- AQ8B/AEfA/8B+QH+AR8B/gE/Bv8L
+ Af8C2wHaAf8D3QH/Az8B/5AAAwIBAwNVAa4BAAGrAYcB/wEAAYwBRQH/Aw0BERwAATIBegGsAf8BYQG0
+ AdsB/wFAATgBNAH/Ae0B7AHrAf8CnAGdAf8BgwKCAf8B6AHnAeYF/wH5AvgB/wPYAf8DOgH/A0YB/wNl
+ Af8DbQH/A9MB/wNCAf+UAAMDAQQDVgGzAQABjgFIAf8DBQEGHAABMwGAAawB/wFjAbYB3AH/AUUBPAE2
+ Af8BaAFmAWQB/wOQAf8BtQK0Af8BzQLMAf8BzALLAf8CygHIAf8DqAH/A0EB/wQAAyIBMQM2BFcBvANH
+ Af/AAAFVAlcBsQEzAYMBsQH/AVECUgGkAzwBZgNbAc0DQQH/Az8B/wE9Aj4B/wM/Af8DSwH4A0kBiLAA
+ Ax4BKgMjATMDHgEqGAADAwEEAwoBDQMQARUDEQEWAxEBFgMRARYDEQEWAxEBFgMRARYDEQEWAxEBFgMR
+ ARYDEQEWAxABFQMKAQ0DAwEEBAADGgEkAyMBM1AAAwUBBgMMARADDAEQAwQBBSwAAyABLQFpAWMBWgHd
+ AacBcgFAAf8BaQFjAVoB3QMgAS0UAAMKAQ0DHgErAyoBQAMsAUMDLAFDAywBQwMsAUMDLAFDAywBQwMs
+ AUMDLAFDAywBQwMsAUMDKgFAAx4BKwMKAQ0EAAFeAl0BwwFrAW0BbgH/AyMBMwMjATMDIwEzAyMBMwMj
+ ATM8AAMNAREDIgExAyQBNQMTARoDBAEFJAADIAEtAXMBYwFWAekBxQGjAXkB/wH7AfQB5wH/AcUBowF5
+ Af8BcwFjAVYB6QMgAS0QAAMPARMBWgFbAV0BxAE0AXoByAH/ATMBeAHHAf8BNAF3AccB/wE0AXcBxwH/
+ ATMBeAHHAf8BMwF4AcgB/wEzAXgByAH/ATMBeAHHAf8BNAF3AccB/wE0AXcBxwH/ATMBeAHHAf8BNAF6
+ AcgB/wFaAVsBXQHEAw8BEwQAAZ8BoAGiAf8CzAHOAf8BZgFuAXgB/wG7AYMBOgH/AbcBggE+Af8BtgGD
+ AT8B/wG4AYQBQAH/AyMBMzgAAxEBFgEAAY4BSQH/ATUBdQFVAfEDJgE5AxIBGAMDAQQcAAMgAS0BcgFn
+ AVcB6AHEAaQBegH/AfYB7QHfAf8BwQGeAXQB/wH2Ae0B3wH/AcQBpAF6Af8BcgFnAVcB6AMgAS0MAAMK
+ AQ0BNgGGAc0B/wFOAeIC/wFQAeMC/wFRAeEC/wFRAeIC/wFQAeQC/wFOAecC/wFOAecC/wFQAeQC/wFR
+ AeIC/wFRAeEC/wFQAeMC/wFOAeIC/wE2AYYBzQH/AwoBDQgAAZwBpAGuAf8BuQF5ATIB/wH5AcEBbgH/
+ AfIBugFoAf8B7wG2AWAB/wHlAbUBaAH/AbcBgwE/Af8DIwEzGAADBAEFAwwBEAMRARYDEQEWAxEBFgMR
+ ARYDEQEWAxwBJwEAAYsBRgH/AQABxwGGAf8BQAFwAVkB7AMkATUDEAEVAwIBAxQAAyABLQFyAWcBVwHo
+ AcUBpQGBAf8B+AHxAeYB/wG0AYkBWAH/AaMBbQE5Af8BtAGJAVgB/wH4AfEB5gH/AcUBpQGBAf8BcgFn
+ AVcB6AMgAS0IAAMDAQQCVgFXAbIBdgG8AecB/wFMAdoC/wFFAdQC/wFHAdQC/wFFAdgC/wGKAWABUgH/
+ AYoBYAFSAf8BRQHYAv8BRwHUAv8BRQHUAv8BTAHaAv8BdgG8AecB/wJWAVcBsgMDAQQIAAG5AYABNQH/
+ AfQByQGPAf8B9gHAAXMB/wHyAbsBawH/AesBvwGBAf8BsQF4AToB/wHvAbMBWAH/AbgBhAE/Af8YAAMM
+ ARADIgExAysBQgMsAUMDLAFDAywBQwMsAUMDLgFIAQABiAFDAf8BAAHlAaYB/wEAAcABgAH/AVoBYQFb
+ Ac8DIwEyAw8BFAMCAQMMAAMgAS0BcgFnAVcB6AHHAaYBhAH/AfoB9AHqAf8BswGJAVcB/wGiAWsBNwH/
+ AaMBbAE4Af8BogFrATcB/wGzAYkBVwH/AfoB9AHqAf8BxwGmAYQB/wFyAWcBVwHoAyABLQgAAwgBCgE6
+ AYIByQH/AaMB5QL/ATgBzAL/AT0BzAL/AT0B0QL/ATsB2QL/ATsB2QL/AT0B0QL/AT0BzAL/ATgBzAL/
+ AaMB5QL/AToBggHJAf8DCAEKDAABtgGAATkB/wH4AdEBngH/AfgBwgF4Af8B8gHLAZQB/wGuAXUBNgH/
+ AfQBugFmAf8BcAFqAV4B3QG4AYIBOwH/AyMBMwMjATMQAAMRARYBMgF4AVcB8gEAAYoBRAH/AQABiAFC
+ Af8BAAGIAUIB/wEAAYgBQgH/AQABiAFCAf8BAAGHAUEB/wEAAYMBPQH/AQAB3AGhAf8BAAHbAaAB/wEA
+ AbwBgQH/AVcBWwFZAcEDIwEyAw8BFAMDAQQEAAMbASYBcwFjAVYB6QHGAacBhAH/AfwB9wHvAf8BswGK
+ AVoB/wG4AZEBYwH/AfoB8gHkAf8B+AHvAeAB/wH7AfMB5gH/AbkBkgFkAf8BswGLAVoB/wH8AfcB7wH/
+ AcYBpwGEAf8BcwFjAVYB6QMeASoEAAQCA0QBeAFhAaEB2AH/AZIB5AL/ATABxwL/ATMBzwL/AV8BQwE5
+ Af8BXwFDATkB/wEzAc8C/wEwAccC/wGSAeQC/wFhAaEB2AH/A0QBeAQCDAABtQGAAToC/wHcAa8B/wH7
+ AdcBpwH/Aa0BcwEyAf8B+QHCAXYB/wFyAW0BZAHeAbUBegE5Af8BuQHFAdgB/wG4AYEBOgH/AbgBhAE/
+ Af8DIwEzDAADEQEWAQABiQFDAf8BNAHoAb4B/wEAAdoBoQH/AQAB2gGiAf8BAAHaAaIB/wEAAdoBogH/
+ AQAB2QGiAf8BAAHYAaAB/wEAAdMBnAH/AQAB0wGcAf8BAAHWAaAB/wEAAboBgAH/AVcBWwFZAcEDIAEu
+ AwoBDQQAAV8BXQFbAcwByAGoAYcB/wH9AfkB8gH/AbUBjAFbAf8BpgFxAT4B/wGlAXABPQH/AbgBkAFh
+ Af8B/QH4Ae8B/wGiAWoBNQH/AacBcgFAAf8BpgFxAT8B/wG1AYwBWwH/Af0B+QHyAf8ByAGoAYcB/wFp
+ AWMBWgHdCAADBQEGAVoBXwFjAdMBowHRAfAB/wFlAdUC/wElAckC/wFkAVEBRwH/AWQBUQFHAf8BJQHJ
+ Av8BZQHVAv8BowHRAfAB/wFaAV8BYwHTAwUBBhAAAbYBgQE7Av8B6wHFAf8BrQFyATAC/wHLAYgB/wFz
+ AW0BZwHeAbUBegE6Af8DIwEzAbUBegE3Af8B6QHFAZEB/wHtAa8BUQH/AbcBhAFAAf8DIwEzCAADEQEW
+ AQABhwFAAf8BTQHlAcMB/wEAAc8BmgH/AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/AQABzwGbAf8BAAHP
+ AZsB/wEAAc0BmgH/AQABzQGaAf8BAAHOAZsB/wEAAdIBnwH/AQABuAGBAf8BWAFaAVkBwAMPARQEAAGm
+ AXABPgX/AcQBpAGBAf8BowFtATkB/wGoAXMBQgH/AaYBcAE9Af8BuQGRAWID/wH+Af8BpAFtATkB/wGp
+ AXUBRQH/AakBdQFEAf8BpAFtATkB/wHEAaQBgQX/AaYBcAE+Af8IAAQBAx0BKQFAAYgBzAH/Ab0B7QL/
+ ATkBzAL/AWcBVgFOAf8BZwFWAU4B/wE5AcwC/wG9Ae0C/wFAAYgBzAH/Ax0BKQQBFAABtQF6ATkC/wHa
+ AZ8B/wFzAXABaQHdAbQBeAE0Af8DIwEzAbUBegE6Af8BcgFtAWYB3gHxAbcBYQH/AbIBeQE6Af8B4QGs
+ AVoB/wG4AYQBQAH/CAADEQEWAQABhwE/Af8BaAHmAc0B/wEAAcgBlwH/AQAByAGYAf8BAAHIAZkB/wEA
+ AcgBmQH/AQAByAGZAf8BAAHJAZkB/wEAAckBmQH/AQAByQGaAf8BAAHJAZkB/wECAc0BoQH/AScB3AG3
+ Af8BAAGKAUMB/wMMARAEAANVAawByQGpAYkD/wH8Af8BtAGNAV0B/wGlAW8BPQH/Ab4BmgFvCf8BpQFv
+ ATwB/wGpAXUBRAH/AacBcgE/Af8BtQGNAV4D/wH8Af8ByQGpAYkB/wFcAVsBWQHBDAADAgEDAVACUQGc
+ AXABrwHiAf8BswHwAv8BaAFWAU0B/wFoAVYBTQH/AbMB8AL/AXABrwHiAf8BUAJRAZwDAgEDHAABtwGC
+ ATwB/wG2AXoBNwH/AbgBxAHVAf8BtQF5ATUB/wFzAW0BZgHeAfkBwQF0Af8BrwF1ATYB/wHmAbkBcAH/
+ AeYBtQFrAf8BtwGDAT4B/wgAAxABFQEAAYcBPwH/AYcB6QHYAf8BAAHDAZcB/wEAAcMBmAH/AQABwwGZ
+ Af8BAAHDAZkB/wEAAcMBmQH/AQABwwGYAf8BAAHEAZgB/wEAAcUBmQH/AQABxgGaAf8BXQHgAccB/wEA
+ AbMBgQH/AUQBcwFZAesDBAEFCAADUwGnAckBqgGLBf8BtgGMAV0B/wGjAW0BOAH/AaIBawE2Af8BogFr
+ ATYB/wGmAXEBPgH/AaYBcQE+Af8BtwGNAV4F/wHJAaoBiwH/A1MBpxQAAwYBCAErAXgByAH/AaAB1gH5
+ Af8BkQHiAv8BkQHiAv8BoAHWAfkB/wErAXgByAH/AwYBCCgAAbcBgAE4Af8B7wHLAZ8C/wHNAYwB/wGt
+ AXMBMgH/Ae4BxgGLAf8B8AG3AWUB/wHsAcABgQH/AbcBggE8Af8IAAMKAQ0BAAGJAUEB/wGdAfAB5gH/
+ AUkB6QHUAf8BTAHpAdQB/wFNAekB1QH/AU0B6QHVAf8BTAHpAdQB/wFIAecB0QH/AZQB5gHYAf8BAAHA
+ AZcB/wFbAdwBxgH/AQABrwF6Af8BTAFsAVwB5QMEAQUQAANTAacBygGrAYwF/wG1AYwBXAH/AboBlAFm
+ A/8B/gH/AaMBbAE4Af8BtgGOAV4F/wHKAasBjAH/A1MBpxgABAEDMwFQAUUBkAHTAf8BxAHwAv8BxAHw
+ Av8BRQGQAdMB/wMzAVAEASgAAbcBggE8Av8B3AGiAf8BrgFyATAB/wH6AdQBowH/AfYBwAF0Af8B9AG7
+ AWsB/wH3Ac0BkwH/AbwBgwE5Af8IAAMDAQQBVQFXAVUBtAEAAYkBQQH/AQABhwE/Af8BAAGHAT4B/wEA
+ AYcBPgH/AQABhwE+Af8BAAGGAT0B/wEAAYIBNgH/AYIB4wHWAf8BVQHZAcQB/wEAAasBegH/AUoBagFa
+ AeYDBAEFGAADUwGnAcoBrAGOBf8BswGKAVoB/wGgAWcBMQH/AbQBiwFbBf8BygGsAY4B/wNTAacgAAME
+ AQUBWwFjAWgB1QF1AbwB7AH/AXUBvAHsAf8BWwFjAWgB1QMEAQUwAAG1AXoBOQL/AeoBwwL/AeEBuAL/
+ Ad0BsAL/AdsBqwH/AbkBeQEwAf8BZgFuAXgB/wMjATMgAAMRARYBAAGJAT8B/wF1AeMB2AH/AQABqgF6
+ Af8BWAFbAVkBwAMDAQQgAANTAacBywGtAY4F/wHGAagBhgX/AcsBrQGPAf8DUwGnKAADDwETAS8BhQHN
+ Af8BLwGFAc0B/wMPARM4AAG2AYEBOwH/AbUBegE5Af8BtQF6ATgB/wG4AXoBNAH/AZwBpAGtAf8CzAHO
+ Af8BawFsAW4B/yAAAw0BEQEAAYwBRQH/AQABqwGHAf8DVQGuAwIBAygAA1MBpwHLAa4BkQX/AcsBrgGR
+ Af8DUwGniAABnwGgAaIB/wNYAbQgAAMFAQYBAAGOAUgB/wNWAbMDAwEEMAADVQGsAaYBcAE8Af8DVQGs
+ 2AABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/wEAAfgBfwEfAf8EAAHwAX8BHwH/
+ BAAB4AF/AR8B/wQAAcABAAEfAf8EAAGAAQABHwEBBgABByUAAYAHAAHABwAB4AF/BgAB8AF/BgAB+AF/
+ AQABEAQAAv8BAAEfBAAB/gE/AgABnwH/Af4BHwH8AR8CAAGAAf8B/gEPAfgBDwIAAYABfwH+AQcB8AEH
+ AgABwAE/AQABAwHgAQMCAAHAAT8BAAEBAcABAQGAAQEBwAEPAgABgAEAAYABAQHAAQcCAAGAAQABwAED
+ AcABAwIAAYABAAHAAQMB4AEDAgABgAEAAeABBwHwAQMCAAHAAQEB8AEPAfwBAwEAAQEB4AEDAfABDwH8
+ AQMBAAEDAfABBwH4AR8B/gEBAf4BBwH4AQ8B/AE/Af8BAQH+AQ8B/AEfA/8B+QH+AR8B/gE/Bv8L
-
- 98, 17
-
\ No newline at end of file
diff --git a/Forwarder/Forwarder/Program.cs b/Forwarder/Forwarder/Program.cs
index dc7ed0b..a2bce59 100644
--- a/Forwarder/Forwarder/Program.cs
+++ b/Forwarder/Forwarder/Program.cs
@@ -26,7 +26,7 @@
{
static class Program
{
- public const string VERSION = "1.1";
+ public const string VERSION = "1.2";
///
/// The main entry point for the application.
///
diff --git a/Forwarder/Forwarder/Properties/Resources.Designer.cs b/Forwarder/Forwarder/Properties/Resources.Designer.cs
index 1feea29..0f4acc7 100644
--- a/Forwarder/Forwarder/Properties/Resources.Designer.cs
+++ b/Forwarder/Forwarder/Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// Este código fue generado por una herramienta.
+// Versión de runtime:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+// se vuelve a generar el código.
//
//------------------------------------------------------------------------------
@@ -13,13 +13,13 @@
///
- /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+ // StronglyTypedResourceBuilder generó automáticamente esta clase
+ // a través de una herramienta como ResGen o Visual Studio.
+ // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen
+ // con la opción /str o recompile su proyecto de VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -33,7 +33,7 @@
}
///
- /// Returns the cached ResourceManager instance used by this class.
+ /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@
}
///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
+ /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las
+ /// búsquedas de recursos mediante esta clase de recurso fuertemente tipado.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap computer {
get {
@@ -71,7 +71,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap cross {
get {
@@ -81,7 +81,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap help {
get {
@@ -91,7 +91,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap link_go {
get {
@@ -101,7 +101,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap list_clear {
get {
@@ -111,7 +111,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap list_follow {
get {
@@ -121,7 +121,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap TcpForwarder {
get {
@@ -131,7 +131,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap world {
get {
@@ -141,7 +141,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap world_add {
get {
@@ -151,7 +151,7 @@
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Busca un recurso adaptado de tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap world_delete {
get {
diff --git a/Forwarder/Forwarder/Properties/Settings.Designer.cs b/Forwarder/Forwarder/Properties/Settings.Designer.cs
index cd4a553..fe87bc8 100644
--- a/Forwarder/Forwarder/Properties/Settings.Designer.cs
+++ b/Forwarder/Forwarder/Properties/Settings.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// Este código fue generado por una herramienta.
+// Versión de runtime:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+// se vuelve a generar el código.
//
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));