一个没问题的版本

This commit is contained in:
ww-rm
2025-04-20 12:49:29 +08:00
parent 46b3937236
commit 5d819114d0
8 changed files with 545 additions and 339 deletions

View File

@@ -32,7 +32,6 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpinePreviewPanel)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpinePreviewPanel));
panel_Render = new Panel(); panel_Render = new Panel();
tableLayoutPanel1 = new TableLayoutPanel(); tableLayoutPanel1 = new TableLayoutPanel();
panel_Container = new Panel();
flowLayoutPanel1 = new FlowLayoutPanel(); flowLayoutPanel1 = new FlowLayoutPanel();
button_Stop = new Button(); button_Stop = new Button();
imageList = new ImageList(components); imageList = new ImageList(components);
@@ -40,11 +39,16 @@
button_Start = new Button(); button_Start = new Button();
button_ForwardStep = new Button(); button_ForwardStep = new Button();
button_ForwardFast = new Button(); button_ForwardFast = new Button();
button_FullScreen = new Button();
panel_ViewContainer = new Panel();
panel_RenderContainer = new Panel();
toolTip = new ToolTip(components); toolTip = new ToolTip(components);
spinePreviewFullScreenForm = new SpineViewer.Forms.SpinePreviewFullScreenForm();
wallpaperForm = new WallpaperForm(); wallpaperForm = new WallpaperForm();
tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.SuspendLayout();
panel_Container.SuspendLayout();
flowLayoutPanel1.SuspendLayout(); flowLayoutPanel1.SuspendLayout();
panel_ViewContainer.SuspendLayout();
panel_RenderContainer.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// panel_Render // panel_Render
@@ -64,8 +68,8 @@
// //
tableLayoutPanel1.ColumnCount = 1; tableLayoutPanel1.ColumnCount = 1;
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
tableLayoutPanel1.Controls.Add(panel_Container, 0, 0);
tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 1); tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 1);
tableLayoutPanel1.Controls.Add(panel_ViewContainer, 0, 0);
tableLayoutPanel1.Dock = DockStyle.Fill; tableLayoutPanel1.Dock = DockStyle.Fill;
tableLayoutPanel1.Location = new Point(0, 0); tableLayoutPanel1.Location = new Point(0, 0);
tableLayoutPanel1.Margin = new Padding(0); tableLayoutPanel1.Margin = new Padding(0);
@@ -76,17 +80,6 @@
tableLayoutPanel1.Size = new Size(641, 636); tableLayoutPanel1.Size = new Size(641, 636);
tableLayoutPanel1.TabIndex = 2; tableLayoutPanel1.TabIndex = 2;
// //
// panel_Container
//
panel_Container.BackColor = SystemColors.ControlDark;
panel_Container.Controls.Add(panel_Render);
panel_Container.Dock = DockStyle.Fill;
panel_Container.Location = new Point(0, 0);
panel_Container.Margin = new Padding(0);
panel_Container.Name = "panel_Container";
panel_Container.Size = new Size(641, 594);
panel_Container.TabIndex = 0;
//
// flowLayoutPanel1 // flowLayoutPanel1
// //
flowLayoutPanel1.Anchor = AnchorStyles.None; flowLayoutPanel1.Anchor = AnchorStyles.None;
@@ -97,10 +90,11 @@
flowLayoutPanel1.Controls.Add(button_Start); flowLayoutPanel1.Controls.Add(button_Start);
flowLayoutPanel1.Controls.Add(button_ForwardStep); flowLayoutPanel1.Controls.Add(button_ForwardStep);
flowLayoutPanel1.Controls.Add(button_ForwardFast); flowLayoutPanel1.Controls.Add(button_ForwardFast);
flowLayoutPanel1.Location = new Point(138, 594); flowLayoutPanel1.Controls.Add(button_FullScreen);
flowLayoutPanel1.Location = new Point(101, 594);
flowLayoutPanel1.Margin = new Padding(0); flowLayoutPanel1.Margin = new Padding(0);
flowLayoutPanel1.Name = "flowLayoutPanel1"; flowLayoutPanel1.Name = "flowLayoutPanel1";
flowLayoutPanel1.Size = new Size(365, 42); flowLayoutPanel1.Size = new Size(438, 42);
flowLayoutPanel1.TabIndex = 1; flowLayoutPanel1.TabIndex = 1;
// //
// button_Stop // button_Stop
@@ -123,18 +117,19 @@
imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.ColorDepth = ColorDepth.Depth32Bit;
imageList.ImageStream = (ImageListStreamer)resources.GetObject("imageList.ImageStream"); imageList.ImageStream = (ImageListStreamer)resources.GetObject("imageList.ImageStream");
imageList.TransparentColor = Color.Transparent; imageList.TransparentColor = Color.Transparent;
imageList.Images.SetKeyName(0, "stop"); imageList.Images.SetKeyName(0, "arrows-maximize");
imageList.Images.SetKeyName(1, "restart"); imageList.Images.SetKeyName(1, "forward-fast");
imageList.Images.SetKeyName(2, "start"); imageList.Images.SetKeyName(2, "forward-step");
imageList.Images.SetKeyName(3, "pause"); imageList.Images.SetKeyName(3, "pause");
imageList.Images.SetKeyName(4, "forward-step"); imageList.Images.SetKeyName(4, "rotate-left");
imageList.Images.SetKeyName(5, "forward-fast"); imageList.Images.SetKeyName(5, "start");
imageList.Images.SetKeyName(6, "stop");
// //
// button_Restart // button_Restart
// //
button_Restart.AutoSize = true; button_Restart.AutoSize = true;
button_Restart.AutoSizeMode = AutoSizeMode.GrowAndShrink; button_Restart.AutoSizeMode = AutoSizeMode.GrowAndShrink;
button_Restart.ImageKey = "restart"; button_Restart.ImageKey = "rotate-left";
button_Restart.ImageList = imageList; button_Restart.ImageList = imageList;
button_Restart.Location = new Point(76, 3); button_Restart.Location = new Point(76, 3);
button_Restart.Name = "button_Restart"; button_Restart.Name = "button_Restart";
@@ -191,17 +186,69 @@
button_ForwardFast.UseVisualStyleBackColor = true; button_ForwardFast.UseVisualStyleBackColor = true;
button_ForwardFast.Click += button_ForwardFast_Click; button_ForwardFast.Click += button_ForwardFast_Click;
// //
// button_FullScreen
//
button_FullScreen.AutoSize = true;
button_FullScreen.AutoSizeMode = AutoSizeMode.GrowAndShrink;
button_FullScreen.ImageKey = "arrows-maximize";
button_FullScreen.ImageList = imageList;
button_FullScreen.Location = new Point(368, 3);
button_FullScreen.Name = "button_FullScreen";
button_FullScreen.Padding = new Padding(15, 3, 15, 3);
button_FullScreen.Size = new Size(67, 36);
button_FullScreen.TabIndex = 5;
toolTip.SetToolTip(button_FullScreen, "全屏预览");
button_FullScreen.UseVisualStyleBackColor = true;
button_FullScreen.Click += button_FullScreen_Click;
//
// panel_ViewContainer
//
panel_ViewContainer.Controls.Add(panel_RenderContainer);
panel_ViewContainer.Dock = DockStyle.Fill;
panel_ViewContainer.Location = new Point(0, 0);
panel_ViewContainer.Margin = new Padding(0);
panel_ViewContainer.Name = "panel_ViewContainer";
panel_ViewContainer.Size = new Size(641, 594);
panel_ViewContainer.TabIndex = 6;
//
// panel_RenderContainer
//
panel_RenderContainer.BackColor = SystemColors.ControlDark;
panel_RenderContainer.Controls.Add(panel_Render);
panel_RenderContainer.Dock = DockStyle.Fill;
panel_RenderContainer.Location = new Point(0, 0);
panel_RenderContainer.Margin = new Padding(0);
panel_RenderContainer.Name = "panel_RenderContainer";
panel_RenderContainer.Size = new Size(641, 594);
panel_RenderContainer.TabIndex = 0;
panel_RenderContainer.SizeChanged += panel_RenderContainer_SizeChanged;
//
// spinePreviewFullScreenForm
//
spinePreviewFullScreenForm.ClientSize = new Size(2560, 1440);
spinePreviewFullScreenForm.ControlBox = false;
spinePreviewFullScreenForm.FormBorderStyle = FormBorderStyle.None;
spinePreviewFullScreenForm.MaximizeBox = false;
spinePreviewFullScreenForm.MinimizeBox = false;
spinePreviewFullScreenForm.Name = "SpinePreviewFullScreenForm";
spinePreviewFullScreenForm.ShowIcon = false;
spinePreviewFullScreenForm.ShowInTaskbar = false;
spinePreviewFullScreenForm.StartPosition = FormStartPosition.Manual;
spinePreviewFullScreenForm.TopMost = true;
spinePreviewFullScreenForm.Visible = false;
spinePreviewFullScreenForm.KeyDown += spinePreviewFullScreenForm_KeyDown;
//
// wallpaperForm // wallpaperForm
// //
wallpaperForm.ClientSize = new Size(490, 456); wallpaperForm.ClientSize = new Size(512, 512);
wallpaperForm.ControlBox = false; wallpaperForm.ControlBox = false;
wallpaperForm.FormBorderStyle = FormBorderStyle.None;
wallpaperForm.MaximizeBox = false; wallpaperForm.MaximizeBox = false;
wallpaperForm.MinimizeBox = false; wallpaperForm.MinimizeBox = false;
wallpaperForm.Name = "WallpaperForm"; wallpaperForm.Name = "WallpaperForm";
wallpaperForm.ShowIcon = false; wallpaperForm.ShowIcon = false;
wallpaperForm.ShowInTaskbar = false; wallpaperForm.ShowInTaskbar = false;
wallpaperForm.StartPosition = FormStartPosition.Manual; wallpaperForm.StartPosition = FormStartPosition.Manual;
wallpaperForm.Text = "SpineViewerWallpaperForm";
wallpaperForm.Visible = false; wallpaperForm.Visible = false;
// //
// SpinePreviewPanel // SpinePreviewPanel
@@ -211,12 +258,12 @@
Controls.Add(tableLayoutPanel1); Controls.Add(tableLayoutPanel1);
Name = "SpinePreviewPanel"; Name = "SpinePreviewPanel";
Size = new Size(641, 636); Size = new Size(641, 636);
SizeChanged += SpinePreviewPanel_SizeChanged;
tableLayoutPanel1.ResumeLayout(false); tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout(); tableLayoutPanel1.PerformLayout();
panel_Container.ResumeLayout(false);
flowLayoutPanel1.ResumeLayout(false); flowLayoutPanel1.ResumeLayout(false);
flowLayoutPanel1.PerformLayout(); flowLayoutPanel1.PerformLayout();
panel_ViewContainer.ResumeLayout(false);
panel_RenderContainer.ResumeLayout(false);
ResumeLayout(false); ResumeLayout(false);
} }
@@ -224,7 +271,7 @@
private Panel panel_Render; private Panel panel_Render;
private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel1;
private Panel panel_Container; private Panel panel_RenderContainer;
private FlowLayoutPanel flowLayoutPanel1; private FlowLayoutPanel flowLayoutPanel1;
private Button button_Stop; private Button button_Stop;
private Button button_Start; private Button button_Start;
@@ -233,6 +280,9 @@
private Button button_ForwardStep; private Button button_ForwardStep;
private Button button_ForwardFast; private Button button_ForwardFast;
private Button button_Restart; private Button button_Restart;
private Button button_FullScreen;
private Panel panel_ViewContainer;
private Forms.SpinePreviewFullScreenForm spinePreviewFullScreenForm;
private WallpaperForm wallpaperForm; private WallpaperForm wallpaperForm;
} }
} }

View File

@@ -22,11 +22,13 @@ namespace SpineViewer.Controls
InitializeComponent(); InitializeComponent();
renderWindow = new(panel_Render.Handle); renderWindow = new(panel_Render.Handle);
renderWindow.SetActive(false); renderWindow.SetActive(false);
wallpaperTexture = new(1, 1); wallpaperWindow = new(wallpaperForm.Handle);
_wallpaperFormHandle = wallpaperForm.Handle; wallpaperWindow.SetVisible(false);
wallpaperWindow.SetActive(false);
// 设置默认参数 // 设置默认参数
Resolution = new(2048, 2048); Resolution = new(2048, 2048);
Zoom = 1;
Center = new(0, 0); Center = new(0, 0);
FlipY = true; FlipY = true;
MaxFps = 30; MaxFps = 30;
@@ -71,49 +73,36 @@ namespace SpineViewer.Controls
get => resolution; get => resolution;
set set
{ {
if (value == resolution) return;
if (value.Width <= 0) value.Width = 100; if (value.Width <= 0) value.Width = 100;
if (value.Height <= 0) value.Height = 100; if (value.Height <= 0) value.Height = 100;
float parentX = panel_Render.Parent.Width; var previousZoom = Zoom;
float parentY = panel_Render.Parent.Height;
float sizeX = value.Width;
float sizeY = value.Height;
if ((sizeY / sizeX) < (parentY / parentX)) float parentW = panel_Render.Parent.Width;
{ float parentH = panel_Render.Parent.Height;
// 相同的 X, 子窗口 Y 更小 float renderW = value.Width;
sizeY = parentX * sizeY / sizeX; float renderH = value.Height;
sizeX = parentX; float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render
} renderW *= scale;
else renderH *= scale;
{
// 相同的 Y, 子窗口 X 更小
sizeX = parentY * sizeX / sizeY;
sizeY = parentY;
}
// 必须通过 SFML 的方法调整窗口 // 必须通过 SFML 的方法调整窗口
renderWindow.Position = new((int)(parentX - sizeX) / 2, (int)(parentY - sizeY) / 2); renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Size = new((uint)sizeX, (uint)sizeY); renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
// 将 view 的大小设置成于 resolution 相同的大小, 其余属性都不变
using var view = renderWindow.GetView();
var signX = Math.Sign(view.Size.X);
var signY = Math.Sign(view.Size.Y);
view.Size = new(value.Width * signX, value.Height * signY);
renderWindow.SetView(view);
resolution = value; resolution = value;
// 设置完 resolution 后还原缩放比例
Zoom = previousZoom;
// 设置壁纸窗口分辨率 // 设置壁纸窗口分辨率
wallpaperForm.Size = value; wallpaperForm.Size = value;
_memDCsize = new() { cx = value.Width, cy = value.Height }; wallpaperWindow.Size = new((uint)value.Width, (uint)value.Height);
wallpaperTexture.Dispose(); using var view = renderWindow.GetView();
wallpaperTexture = new((uint)value.Width, (uint)value.Height); wallpaperWindow.SetView(view);
wallpaperTexture.SetView(view);
} }
} }
private Size resolution = new(0, 0); private Size resolution = new(100, 100);
/// <summary> /// <summary>
/// 画面中心点 /// 画面中心点
@@ -133,7 +122,7 @@ namespace SpineViewer.Controls
using var view = renderWindow.GetView(); using var view = renderWindow.GetView();
view.Center = new(value.X, value.Y); view.Center = new(value.X, value.Y);
renderWindow.SetView(view); renderWindow.SetView(view);
wallpaperTexture.SetView(view); wallpaperWindow.SetView(view);
} }
} }
@@ -157,7 +146,7 @@ namespace SpineViewer.Controls
var signY = Math.Sign(view.Size.Y); var signY = Math.Sign(view.Size.Y);
view.Size = new(resolution.Width / value * signX, resolution.Height / value * signY); view.Size = new(resolution.Width / value * signX, resolution.Height / value * signY);
renderWindow.SetView(view); renderWindow.SetView(view);
wallpaperTexture.SetView(view); wallpaperWindow.SetView(view);
} }
} }
@@ -178,7 +167,7 @@ namespace SpineViewer.Controls
using var view = renderWindow.GetView(); using var view = renderWindow.GetView();
view.Rotation = value; view.Rotation = value;
renderWindow.SetView(view); renderWindow.SetView(view);
wallpaperTexture.SetView(view); wallpaperWindow.SetView(view);
} }
} }
@@ -202,7 +191,7 @@ namespace SpineViewer.Controls
size.X *= -1; size.X *= -1;
view.Size = size; view.Size = size;
renderWindow.SetView(view); renderWindow.SetView(view);
wallpaperTexture.SetView(view); wallpaperWindow.SetView(view);
} }
} }
@@ -226,7 +215,7 @@ namespace SpineViewer.Controls
size.Y *= -1; size.Y *= -1;
view.Size = size; view.Size = size;
renderWindow.SetView(view); renderWindow.SetView(view);
wallpaperTexture.SetView(view); wallpaperWindow.SetView(view);
} }
} }
@@ -270,17 +259,16 @@ namespace SpineViewer.Controls
if (enableDesktopProjection == value) return; if (enableDesktopProjection == value) return;
if (value) if (value)
{ {
screenDC = Win32.GetDC(IntPtr.Zero); var screenBounds = Screen.FromControl(this).Bounds;
memDC = Win32.CreateCompatibleDC(screenDC); Resolution = screenBounds.Size;
wallpaperWindow.Position = new(screenBounds.X, screenBounds.Y);
wallpaperWindow.Size = new((uint)screenBounds.Size.Width, (uint)screenBounds.Size.Height);
//wallpaperForm.SetWallpaper(); // 窗口被创建和此处都需要设置一遍嵌入桌面, 否则无法正常显示, 原因未知
wallpaperForm.Show(); wallpaperForm.Show();
} }
else else
{ {
wallpaperForm.Hide(); wallpaperForm.Hide();
Win32.DeleteDC(memDC);
Win32.ReleaseDC(IntPtr.Zero, screenDC);
memDC = 0;
screenDC = 0;
} }
enableDesktopProjection = value; enableDesktopProjection = value;
} }
@@ -311,24 +299,10 @@ namespace SpineViewer.Controls
/// </summary> /// </summary>
private readonly SFML.Graphics.RenderWindow renderWindow; private readonly SFML.Graphics.RenderWindow renderWindow;
/// <summary>
/// 屏幕 DC
/// </summary>
private IntPtr screenDC;
/// <summary>
/// 用于壁纸窗口的内存 DC
/// </summary>
private IntPtr memDC;
private readonly IntPtr _wallpaperFormHandle;
private Win32.SIZE _memDCsize = new();
private Win32.POINT _memDCptSrc = new() { x = 0, y = 0 };
private Win32.BLENDFUNCTION _memDCblend = new() { BlendOp = 0, BlendFlags = 0, SourceConstantAlpha = 255, AlphaFormat = Win32.AC_SRC_ALPHA };
/// <summary> /// <summary>
/// 壁纸窗口 /// 壁纸窗口
/// </summary> /// </summary>
private SFML.Graphics.RenderTexture wallpaperTexture; private SFML.Graphics.RenderWindow wallpaperWindow;
/// <summary> /// <summary>
/// 帧间隔计时器 /// 帧间隔计时器
@@ -406,7 +380,7 @@ namespace SpineViewer.Controls
try try
{ {
renderWindow.SetActive(true); renderWindow.SetActive(true);
wallpaperTexture.SetActive(true); wallpaperWindow.SetActive(true);
float delta; float delta;
while (cancelToken is not null && !cancelToken.IsCancellationRequested) while (cancelToken is not null && !cancelToken.IsCancellationRequested)
@@ -425,7 +399,7 @@ namespace SpineViewer.Controls
} }
renderWindow.Clear(BackgroundColor); renderWindow.Clear(BackgroundColor);
if (enableDesktopProjection) wallpaperTexture.Clear(SFML.Graphics.Color.Transparent); if(enableDesktopProjection) wallpaperWindow.Clear(BackgroundColor);
if (ShowAxis) if (ShowAxis)
{ {
@@ -460,30 +434,14 @@ namespace SpineViewer.Controls
renderWindow.Draw(spine); renderWindow.Draw(spine);
spine.EnableDebug = false; spine.EnableDebug = false;
if (enableDesktopProjection) wallpaperTexture.Draw(spine); if (enableDesktopProjection) wallpaperWindow.Draw(spine);
} }
} }
} }
renderWindow.Display(); renderWindow.Display();
// 桌面投影
if (enableDesktopProjection)
{
wallpaperTexture.Display();
using var img = wallpaperTexture.Texture.CopyToImage();
img.SaveToMemory(out var imgBuffer, "bmp");
using var stream = new MemoryStream(imgBuffer);
using var bitmap = new Bitmap(stream);
var newBitmap = bitmap.GetHbitmap(Color.FromArgb(0)); if (enableDesktopProjection) wallpaperWindow.Display();
var oldBitmap = Win32.SelectObject(memDC, newBitmap);
Win32.UpdateLayeredWindow(_wallpaperFormHandle, screenDC, IntPtr.Zero, ref _memDCsize, memDC, ref _memDCptSrc, 0, ref _memDCblend, Win32.ULW_ALPHA);
Win32.SelectObject(memDC, oldBitmap);
Win32.DeleteObject(newBitmap);
}
} }
} }
catch (Exception ex) catch (Exception ex)
@@ -495,7 +453,7 @@ namespace SpineViewer.Controls
finally finally
{ {
renderWindow.SetActive(false); renderWindow.SetActive(false);
wallpaperTexture.SetActive(false); wallpaperWindow.SetActive(false);
} }
} }
@@ -506,7 +464,7 @@ namespace SpineViewer.Controls
/// </summary> /// </summary>
private SFML.System.Vector2f? draggingSrc = null; private SFML.System.Vector2f? draggingSrc = null;
private void SpinePreviewPanel_SizeChanged(object sender, EventArgs e) private void panel_RenderContainer_SizeChanged(object sender, EventArgs e)
{ {
if (renderWindow is null) if (renderWindow is null)
return; return;
@@ -516,12 +474,12 @@ namespace SpineViewer.Controls
float renderW = panel_Render.Width; float renderW = panel_Render.Width;
float renderH = panel_Render.Height; float renderH = panel_Render.Height;
float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render
renderH *= scale;
renderW *= scale; renderW *= scale;
renderH *= scale;
// 必须通过 SFML 的方法调整窗口 // 必须通过 SFML 的方法调整窗口, 此处必须四舍五入, 否则在全屏和小窗多次切换之后会有明显的舍入误差
renderWindow.Position = new((int)(parentW - renderW) / 2, (int)(parentH - renderH) / 2); renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Size = new((uint)renderW, (uint)renderH); renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
} }
private void panel_Render_MouseDown(object sender, MouseEventArgs e) private void panel_Render_MouseDown(object sender, MouseEventArgs e)
@@ -733,6 +691,25 @@ namespace SpineViewer.Controls
} }
} }
private void button_FullScreen_Click(object sender, EventArgs e)
{
var screenBounds = Screen.FromControl(this).Bounds;
Resolution = screenBounds.Size;
spinePreviewFullScreenForm.Controls.Add(panel_RenderContainer);
spinePreviewFullScreenForm.Bounds = screenBounds;
spinePreviewFullScreenForm.Show();
PropertyGrid?.Refresh();
}
private void spinePreviewFullScreenForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
spinePreviewFullScreenForm.Hide();
panel_ViewContainer.Controls.Add(panel_RenderContainer);
}
}
//public void ClickStopButton() => button_Stop_Click(button_Stop, EventArgs.Empty); //public void ClickStopButton() => button_Stop_Click(button_Stop, EventArgs.Empty);
//public void ClickRestartButton() => button_Restart_Click(button_Restart, EventArgs.Empty); //public void ClickRestartButton() => button_Restart_Click(button_Restart, EventArgs.Empty);
//public void ClickStartButton() => button_Start_Click(button_Start, EventArgs.Empty); //public void ClickStartButton() => button_Start_Click(button_Start, EventArgs.Empty);

View File

@@ -124,206 +124,170 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAHi0AAAJNU0Z0AUkBTAIBAQYB SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8iMAAAJNU0Z0AUkBTAIBAQcB
AAGIAQABiAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0q AAFgAQABYAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0+
AAQCAy0BRQNbAc0DYAHoA1kBxgMyAU8DDwEUBAIYAAMOARIDQwF3A10BzwNbAc0DLQFFBAIYAANWAbID AAMEAQUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/A1UB
YAHoA1wB1gNDAXcDFgEeBAIYAAMKAQ0DSQGFA2AB4wNfAeUDUQGeAyQBNAMJAQsEARgAAwsBDgM7AWQD sWQAA0wB7wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
XgHSA1YBsv8AEQAEAgMxAUwDYgHhAwAB/wM3AfkDYAHbA0QBewMeASoDBgEIFAADGAEhA1cBwgMhAfsD AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/Ay0BRbcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
YgHhAzEBTAQCGAADWQHDAwAB/wMnAfwDYQHrA0gBhAMWAR4YAAMLAQ4DTQGSAzQB+QMSAf4DVwHyA1gB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9cAANEAXgDAAH/AwAB
ugM3AVoDEQEWAwIBAxQAAxcBHwNJAYYDYQHrA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wMAAf8DJAH9A2AB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
4ANQAZoDLgFGAxEBFgMGAQcEAQgAAxoBJANbAc0DAAH/A2IB4QMxAUwEAhgAA1kBwwMAAf8DAAH/AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/swAB/wMAAf8DAAH/AwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/AwAB
/wNbAdADPgFrAw8BEwMCAQMQAAMLAQ4DTQGSAzQB+QMAAf8DAAH/A0IB9gNcAcsDRAF5Ax4BKgMGAQcM /zcAAf8DAAH/BwAB/wMAAf8DAAH/AwAB/wMAAf9XAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
AAQBAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wM3AfkDXAHnA0YB9QNZAe4DWQG7A0MB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
dwMoATsDDwEUBAEEAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMDJgH8A1MB8ANGAfUDNwH5A10B /wMAAf+vAAH/AwAB/wNRAaQnAAH/AwAB/wMAAf8DAAH/MwAB/wMAAf8IAANOAZcDAAH/AwAB/wMAAf8D
zgNDAXcDGgEjAwIBAwwAAwsBDgNNAZIDNAH5AwEB/wMnAfoDPQH4AzcB+QNgAeMDTgGYAyQBNQMGAQgE AAH/Ay4BSE8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB/+AAAxUBHQMAAf8DAAH/AwAB/y8AAf8DAAH/EwAB
AQQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1wB2QM7AWMDWQG7A0QB9wM8AfgD /wMAAf8DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf/kAAMmATgDAAH/AwAB/wMAAf8r
XAHnA1sBxQNBAXMDEwEZAwIBAwMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMDYQHrA1ABmgNVAbED AAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8DAAH/QwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/6wAB/wMAAf8D
UAHzAyEB+wNbAeQDSwGPAxsBJQMDAQQIAAMLAQ4DTQGSAzQB+QMlAf0DXAHZA1oBxwNGAfUDEgH+A2EB AAH/KwAB/wMAAf8cAAMzAfYDAAH/AwAB/wMAAf8DAAH/AwQBBTsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
6wNSAaMDJQE3AwMBBAQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQD /+8AAf8DAAH/AwAB/ycAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf9LAAH/AwAB
FgEdA1UBrwMAAf8DAAH/AwAB/wMAAf8DVQGvAxYBHQMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD /wMAAf/vAAH/AwAB/wMAAf8nAAH/AwAB/ygAAwcBCQMAAf8DAAH/AwAB/wMAAf8DWwHjLwAB/wMAAf8D
WwHkAzsBZQMHAQkDSQGGAyEB+wMAAf8DAAH/A1kBwQMdASkIAAMLAQ4DTQGSAzQB+QM0AfkDTQGSAzkE AAH/SwAB/wMAAf8DAAH/7AADIAEtAwAB/wMAAf8nAAH/AwAB/zMAAf8DAAH/AwAB/wMAAf8DAAH/KwAB
XgHiAwAB/wMAAf8DYAHjAzYBWAMFAQYEAAQBAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB /wMAAf8DAAH/SwAB/wMAAf8DAAH/8wAB/wMAAf8nAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8nAAH/AwAB
/wNbAc0DGgEkAwIBAwMTARoDRgF/A1sB3gMhAfsDEgH+AzwB+ANZAbsDOwFjA1wB2QMAAf8DYgHhAzEB /wMAAf9LAAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/PAADPwFsAwAB/wMAAf8nAAH/AwAB/wMAAf9L
TAQCGAADWQHDA1sB5AM7AWUDBwQJAQwDOgFhA18B1QNFAfUDNwH5A1sBygMyAU8DDwEUAw0BEQNNAZID AAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB/0sAAf8D
NAH5AzQB+QNNAZIDEQEWAy0BRANaAb8DWAHvAyEB+wNdAdwDPwFuAxYBHgMEAQUDGAEhA0oBiwNdAewD AAH/AwAB/5sAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/NAADCAEKAwAB/wMAAf8nAAH/AwAB
WQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQEAAQCAxMBGgM9AWcDWQHAA1gB7wMSAf4DRAH3A1wB /zAAA10BzgMAAf8DAAH/AwAB/wMAAf8EAScAAf8DAAH/AwAB/0sAAf8DAAH/AwAB/5QAAwUBBgMAAf8D
5wM3AfkDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQQAAwsBDgMxAU0DWAG9A0IB9gM3AfkD AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/zMAAf8DAAH/AwAB/ycAAf8DAAH/LwAB/wMAAf8D
YAHbA0QBeAMhAS8DTgGVAzQB+QM0AfkDTQGSAwsBDgMGAQgDIAEuA00BkgNdAdwDRgH1A1oB6QNOAZYD AAH/AwAB/wMAAf8vAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/AwAB
KAE8AyABLQNLAY0DXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkCAAEAgMMARADLwFJA1IB /wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8nAAH/AwAB/ycAAf8DAAH/AwAB/wMAAf8DAAH/NwAB
owNbAeQDRAH3AxIB/gMAAf8DAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQgAAxABFQM/AW0D /wMAAf8DAAH/SwAB/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8PAAH/AwAB/wMAAf8DFQEcLwAB/wMAAf8D
XAHWAycB+gMkAf0DXAHWA0QBeQNUAasDIQH7AzQB+QNNAZIDCwEOBAADAwEEAxsBJgNBAXMDWgHEA00B AAH/KwAB/wMAAf8cAAM9AWkDAAH/AwAB/wMAAf8DAAH/A0MBdjsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
9ANZAe4DVQG0A0QBegNRAaIDWQHuA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkEAADCAEKAyMB /5QAAwUBBgMAAf8DAAH/CwAB/wMAAf8DAAH/AxMBGjMAAf8DAAH/AwAB/ysAAf8DAAH/GwAB/wMAAf8D
MwNEAXkDVwG8A18B5QMnAfoDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQgAAwMBBAMaASQD AAH/AwAB/wMAAf9DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wcAAf8DAAH/AwAB
QgF0A14B0gMhAfsDQgH2A10B0QNgAeADJAH9AzQB+QNNAZIDCwEOCAADAgEDAxIBFwM1AVUDWAG6A1gB /wMbASYzAAH/AwAB/wMAAf8vAAH/AwAB/xMAAf8DAAH/AwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/SwAB
8QNCAfYDWwHeA2AB2wM8AfgDWQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQUAAMCAQMDDgESAyMB /wMAAf8DAAH/lAADBQEGAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMdASgkAANQAe4DAAH/AwAB
MgM9AWgDXgHdAwAB/wNiAeEDMQFMBAIYAANZAcMDWwHkAzsBZQMHAQkMAAMCAQMDDwETAzQBUwNdAdED /wMAAf8EAS8AAf8DAAH/CAADGAEhAwAB/wMAAf8DAAH/AwAB/wNcActPAAH/AwAB/wMAAf9LAAH/AwAB
PAH4AyUB/AMlAf0DAAH/AzQB+QNNAZIDCwEODAAEAQMJAQwDIwEzA1UBrgMmAf0DJAH9AyUB/AMSAf4D /wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/A1sB4wMAAf8DAAH/AwAB/wMAAf8DUAGfFwAB/wMAAf8D
WQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQgAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD AAH/AwAB/wMAAf83AAH/AwAB/wcAAf8DAAH/AwAB/wMAAf8DAAH/VwAB/wMAAf8DAAH/AwAB/wMqAUAD
WwHkAzsBZQMHAQkYAAMPARQDVwG5AwAB/wMAAf8DAAH/AzQB+QNNAZIDCwEOGAADRwGAA14B7QMAAf8D KgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUAD
AAH/AwAB/wNZAcP/ABEABAIDMQFMA2IB4QMAAf8DWwHNAxoBJBQABAIDBwEJAxYBHQM1AVUDXAHZAwAB AAH/AwAB/wMAAf8DAAH/mwAB/wMAAf8DAAH/Ax0BKQQAAwIBAwMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wNiAeEDMQFMBAIYAANZAcMDWwHkAzsBZQMHAQkMAAQBAw0BEQM0AVMDXQHRAzcB+QMTAf4DEgH+AwAB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DBwEJWAAD
/wM0AfkDTQGSAwsBDgwABAEDCQELAx4BKwNTAakDJgH9AyQB/QMlAfwDEgH+A1kBw/8AEQAEAgMxAUwD WQHDAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
YgHhAwAB/wNbAc0DGgEkEAADBwEJAxsBJgM0AVMDTQGSA14B3QM3AfkDAAH/A2IB4QMxAUwEAhgAA1kB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/5wAAxIBFwMAAf8UAANKAYkDAAH/AwAB/wMAAf8D
wwNbAeQDOwFlAwcBCQgABAIDEAEVAzkBXgNbAc0DIQH7AyEB+wNcAecDWQHuAxIB/gM0AfkDTQGSAwsB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/AyEB+2cAAf8DAAH/AwAB/wMAAf8D
DggAAwIBAwMSARcDNQFVA1gBuANYAfEDQgH2A1sB3gNgAdsDPAH4A1kBw/8AEQAEAgMxAUwDYgHhAwAB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
/wNbAc0DGgEkCAAEAgMMARADLgFGA00BkgNcAcgDYQHrAyQB/QMAAf8DAAH/A2IB4QMxAUwEAhgAA1kB AAH/AwAB/wNbAcXIAANGAYADWgG/Ay4BSFQAA1oBv3QAA0YBgANaAb8DWgG/A1oBvwNaAb8DWgG/A1oB
wwNbAeQDOwFlAwcBCQgAAwkBDAMxAU4DWAG3A1AB8wMkAf0DXgHdA04BlgNZAb4DJQH8AzQB+QNNAZID vwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DLgFIpwAB/wMAAf8DAAH/AwAB
CwEOBAADAwEEAxsBJgNBAXMDWgHEA00B9ANZAe4DVQG0A0QBegNRAaIDWQHuA1kBw/8AEQAEAgMxAUwD /wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADPQFpAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
YgHhAwAB/wNbAc0DGgEkBAAEAgMTARoDPQFnA1oBvwNhAesDJwH6A0MB9gNcAecDNwH5AwAB/wNiAeED AAH/EwAB/wMAAf8DAAH/LwAB/wMAAf8DAAH/KAADGQEiAwAB/wMAAf8jAAH/AwAB/wMAAf8oAAM/AW0D
MQFMBAIYAANZAcMDWwHkAzsBZQMHAQkEAAMLAQ4DLgFHA1UBrQNYAe8DPQH4A2AB2wNEAXoDJAE1A04B AAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
mAMmAfoDNAH5A00BkgMLAQ4DBgEIAyABLgNNAZIDXQHcA0YB9QNaAekDTgGWAygBPAMgAS0DSwGNA10B AAH/KwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADAwEEAwAB/wMAAf8DAAH/AwAB
7ANZAcP/ABEABAIDMQFMA2IB4QMAAf8DWwHNAxoBJAMCAQMDEwEaA0YBfwNbAd4DIQH7AxIB/gM8AfgD /wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DAAH/AwAB/yQAA1YBtgMAAf8DAAH/AwAB
WQG7AzsBYwNcAdkDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcECQEMAzoBYQNdAdQDTQH0AzcB /wMAAf8kAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AwAB/wMAAf8DMgH4IwAB/wMAAf8DAAH/NwAB
+QNbAcoDMgFPAw8BFAMNAREDTQGSAzQB+QM0AfkDTQGSAxEBFgMtAUQDWgG/A1gB7wMmAfwDYAHgA0AB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
cQMXAR8DBAEFAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkAxYBHQNVAa8D /wMAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8D
AAH/AwAB/wMAAf8DAAH/A1UBrwMWAR0DGgEkA1sBzQMAAf8DYgHhAzEBTAQCGAADWQHDA1sB5AM7AWUD AAH/AwAB/wMAAf8DAAH/IAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8gAAMmAfkDAAH/AwAB/xwAA0oB
BwEJA0kBhgMhAfsDAAH/AwAB/wNZAcEDHQEpCAADCwEOA00BkgM0AfkDNAH5A00BkgM5BF4B4gMAAf8D 8QMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/x8AAf8DAAH/AwAB/zcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
AAH/A14B7QNKAYsDGAEgCAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1wB2QM7AWMD /wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB
WQG7A0QB9wMmAfwDTQH0A1wB2QNGAX4DEwEaAwIBAwMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD /wMAAf8DAAH/AwwB/jMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/AwAB/wMAAf8D
YQHrA1ABmgNVAbEDUAHzAyEB+wNfAeUDSwGPAxsBJQMDAQQIAAMLAQ4DTQGSAzQB+QMhAfsDVgGzA0wB AAH/AwAB/wNZAbsYAANWAbUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQGeGAADJgH5AwAB/wMAAf8c
jgNhAesDEgH+A1MB8ANXAbkDLgFHAwYBCAQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeED AANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1ABnRcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
AAH/AzcB+QNcAecDRgH1A1cB8QNbAdMDUQGkAzgBWwMTARkEAgQAAxoBJANbAc0DAAH/A2IB4QMxAUwE /w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB
AhgAA1kBwwMmAfwDUwHwA0YB9QMlAf0DXgHXA0YBfgMaASQDAgEDDAADCwEOA00BkgM0AfkDEgH+A1AB /wMAAf8rAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8D
8wNZAe4DRAH3A2AB4wNOAZgDJwE5AwgBCgQBBAAEAQMYASEDSgGLA10B7ANZAcP/ABEABAIDMQFMA2IB AAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAyYB+QMAAf8D
4QMAAf8DAAH/AyQB/QNiAeEDUgGjAzsBYwMhAS8DCgENBAIIAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIY AAH/HAADSgHxAwAB/wMAAf8DEQEWBAEDAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/zcAAf8D
AANZAcMDAAH/AwAB/wMAAf8DYAHoA0oBiwMWAR0DBAEFEAADCwEOA00BkgM0AfkDAAH/AwAB/wNCAfYD AAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswcAAf8D
XAHLA0QBeQMeASoDBgEHDAAEAQMYASEDSgGLA10B7ANZAcP/ABEABAIDMQFMA2IB4QMAAf8DNwH5A2AB AAH/AwAB/wMAAf8jAAH/AwAB/wMAAf8DAAH/BwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoBwAB
2wNFAXwDIQEwAwwBEAMDAQQQAAMaASMDXAHIAyUB/QNiAeEDMQFMBAIYAANZAcMDAAH/AycB/ANhAesD /wMAAf8DAAH/AwAB/wMAAf8QAANWAbUDAAH/AwAB/wMzAVAHAAH/AwAB/wMAAf8DAAH/AwAB/xAAAyYB
TgGXAyMBMwQCFAADCwEOA00BkgM0AfkDEgH+A1cB8gNYAboDNwFaAxEBFgMCAQMUAAMXAR8DSQGGA2EB +QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWCwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf83
6wNZAcP/ABEABAIDLQFFA14B0gNXAfIDXQHJAzIBTwMQARUDAgEDGAADEwEaA1ABnwNbAeQDWwHQAy0B AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wNWAbML
RQQCGAADVQG0A1oB7gNfAdoDRAF4AxgBIAMDAQQYAAMKAQ0DSQGGA2AB6ANaAekDUAGfAyQBNAMJAQsE AAH/AwAB/wMAAf8DDAH+GwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/Az0B
ARgAAwsBDgM7AWUDWwHTA1YBsv8AFQADAwEEAycBOgM/AW0DFAEbKAADDwETAzEBTgMdASkDAgEDHAAD aAgAA14B2wMAAf8DAAH/AwAB/wMAAf8MAANWAbUDAAH/AwAB/wMzAVAIAANbAeMDAAH/AwAB/wMAAf8D
DgESAzEBTQMjATMDBAEFJAADBgEHAygBPAMoATwDBgEHJAAEAQMHAQkDCwEOAwIBA/8ABQADAgEDAw8B AAH/DAADJgH5AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMRARYMAAMzAVIDAAH/AwAB/wMAAf8DAAH/AwAB
FANJAYgDXwHlA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB /wcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
6ANgAegDYAHoA2AB6ANgAegDYAHoA1sB5ANGAX4DBQEGBAEoAAMCAQMDDQERAx8BLAMtAUYDVwG5A2AB /ycAAf8DAAH/A1YBsw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/DAAD
6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB4wNZAb4DMgFPAw8BEwMCAQMwAAMTARkDRgF+A2AB6ANgAegD VAGrAwAB/wMAAf8DPQFoDAADJQE3AwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAzIB
WQHBAzkBXgMmATgDDwEUBAJcAAM5AV8DXgHiA1wB5wNgAegDYAHoA2AB6ANgAegDXQHcAzwBZgMGAQgD TwMAAf8DAAH/AwAB/wMAAf8IAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB
BgEIAzwBZgNdAdwDYAHoA2AB6ANgAegDYAHoA10B3ANQAZ0DJQE2IAADDAEQAzwBZgNdAc8DJAH9AycB /wMAAf8DAAH/AwwB/gMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB
+gNYAe8DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B /wMAAf8DAAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xAAAwwBDwMAAf8D
7QNYAe8DJwH6AyYB/ANWAbUDKwFCAwgBCiQABAIDGAEhA0ABcANaAb8DXQHfA14B7QNYAe8DXQHsA2EB MwH2DAADVAGrAwAB/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8D
5gNfAeUDXQHqA14B7QNTAfADQwH2A10B0QNDAXcDHgErAwYBBywAAz0BaQNbAd4DAQH/AzcB+QNdAewD AAH/AwAB/wMAAf8EAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhgAA1UB6QMAAf8DAAH/AwAB
WwHkA14B1wNEAXsDHgEqAwYBCFgAAz8BbAMlAf0DPAH4A1gB7wNeAe0DWQHuAycB+gNCAfYDTwGbAx4B /wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
KwMgAS0DUAGdA0IB9gMnAfoDWQHuA14B7QNYAe8DRAH3A1cB8gM7AWUgAAMTARkDUAGcA0QB9wNDAfYD /0cAAf8DAAH/AwAB/wMMAf4DAAH/AwAB/wMAAf8DAAH/LAADVAGrAwAB/wMAAf8DPQFoGwAB/wMAAf8D
XQHMA0sBjQNGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYAD AAH/AwAB/wNdAc4DAAH/AwAB/wMzAVAbAAH/AwAB/wMAAf8DAAH/AyAB+gMAAf8DAAH/HAADSgHxAwAB
RgGAA0sBjwNcAdkDJAH9A1cB8QNOAZQDEgEYJAADBQEGAzEBTgNbAdADVwHyA14B4gNVAa4DSgGKA0YB /wMAAf8DEQEWIwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
fwNDAXcDQwF2A0UBfANGAYADTwGbA14B3QNgAegDXwHaA04BlgMoATwDCQEMKAADRwGDAzwB+AMmAfwD /wMAAf8PAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8wAANUAasDAAH/AwAB/wM9AWgf
WwHTA1MBpgNcAdkDNwH5A2AB4ANQAZoDLQFEAwsBDlQAAz8BbAMmAfwDWwHTA0wBjgNGAYADSgGKA10B AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMwFQHwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADSgHxAwAB
3AMlAf0DXgHdAzoBYAM6AWIDXQHfAyQB/QNdAdwDSgGKA0YBgANMAY4DWwHTAyYB/AM/AWwgAAMUARsD /wMAAf8DEQEWJwAB/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
UgGlAyMB/QNbAdADPwFsAxgBIQMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARID /w8AAf8DAAH/AwAB/08AAf8DAAH/AwAB/wMAAf80AANUAasDAAH/AwAB/wM9AWgjAAH/AwAB/wMAAf8D
DgESAw4BEgMOARIDDgESAyABLgNXAbkDJAH9AyMB/QNSAaUDFAEbJAADBQEGAzEBTQNaAccDXAHIA0AB AAH/AwAB/wMzAVAjAAH/AwAB/wMAAf8DAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFisAAf8DAAH/AwAB
bwMlATcDEwEaAw4BEgMNAREDDAEQAw4BEgMOARIDHQEoAzoBYANLAY8DWwHYA2EB5gNWAbYDMQFNAwYB /zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB
CCQAA0kBhgMhAfsDNwH5A1UBrgMqAUADPwFtA10B0QNGAfUDWQHuA1gBtwM2AVcDFgEdAwwBEAQCSAAD /wMAAf8DAAH/AwwB/jAAA1QBqwMAAf8DAAH/Az0BaB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMzAVAf
PwFsAzcB+QNVAa4DIAEtAw4BEgMbASUDWQG+AwAB/wNeAe0DPwFtAz8BbQNeAe0DAAH/A1kBvgMbASUD AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMRARYkAANcAdkDAAH/AwAB/wMAAf83
DgESAyABLQNVAa4DNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1YBtgMoATwDCAEKOAADFgEeA1YBswMkAf0D AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf9HAAH/AwAB/wMAAf8D
IwH9A1IBpQMUARskAAQBAw8BFAMjATMDIQEwAwsBDgMDAQQEARQABAIDBwEJAx4BKgNLAYwDXQHfA0QB AAH/AwAB/wMAAf8DAAH/AwAB/ywAA1QBqwMAAf8DAAH/Az0BaBsAAf8DAAH/AwAB/wMAAf8DSgHxAwAB
9wNTAakDKAE7JAADSQGGAyEB+wM3AfkDUwGnAxYBHgMMARADKgFAA1gBugNRAfMDTgH0A2AB2wNXAbwD /wMAAf8DMwFQGwAB/wMAAf8DAAH/AwAB/wMMAf4DAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFiMAAf8D
QgF0AxMBGQMCAQNEAAM/AWwDNwH5A1MBpwMVARwEAAMPARQDVwG5AwAB/wNeAe0DPwFtAz8BbQNeAe0D AAH/AwAB/wMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8D
AAH/A1cBuQMPARQEAAMVARwDUwGnAzcB+QM/AWwgAAMUARsDUgGlAyMB/QNVAbQDJgE4AwcBCTgAAxYB AAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xcAAf8DWAG4DAADVAGrAwAB
HgNWAbMDJAH9AyMB/QNSAaUDFAEbYAADFQEcA1MBpwM3AfkDIQH7A0kBhiQAA0kBhgMhAfsDNwH5A1MB /wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8DAAH/AwAB/wMAAf8E
pwMVARwIAAMPARMDQwF2A1wB2QMlAf0DAAH/AwAB/wNVAa8DFgEdRAADPwFsAzcB+QNTAacDFQEcBAAD AAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhgAAzABSgMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
DwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAAD /zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YB
FAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBG2AAAwIBAwMeASoD sw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DDAH+DwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
VQG0A0QB9wNSAaADGwElAwUBBhwAA0kBhgMhAfsDNwH5A1MBpwMVARwIAAQCAwkBCwMYASADRAF6A2AB PQFoEwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAwkBDAMAAf8DAAH/AwAB/wMAAf8I
2wNBAfcDRAH3A1kBuwMqAUADDgESAwUBBgQCNAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8D AAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB/wMAAf8DAAH/AxgB/QMAAf8D
XgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0D AAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/JwAB/wMAAf8D
VQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBG2QAAw8BEwNAAW8DXQHUA1kB7wNMAZED VgGzCwAB/wMAAf8DAAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8MAANUAasDAAH/AwAB
EgEYHAADSQGGAyEB+wM3AfkDUwGnAxUBHBAABAIDDQERAzYBVwNYAbcDXQHsA1gB8QNdAdEDRAF5AzMB /wM9AWgIAAM6AWADAAH/AwAB/wMAAf8DAAH/DAADVgG1AwAB/wMAAf8DMwFQCAADSwGMAwAB/wMAAf8D
UAMbASYDBgEHMAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB AAH/AwAB/wwAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWDAADBwEJAwAB/wMAAf8DAAH/AwAB
/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4D /wMAAf8HAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
VgGzAyQB/QMjAf0DUgGlAxQBG2QAAwIBAwMPARMDUQGeAyMB/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkD /wMAAf8nAAH/AwAB/wNWAbMHAAH/AwAB/wMAAf8DAAH/IwAB/wMAAf8DAAH/AwAB/wcAAf8DAAH/AwAB
UwGnAxUBHBgAAwsBDgMtAUQDSwGPA1sBxQNiAeEDYgHhA1sBzQNMAZADKAE7AwkBDCwAAz8BbAM3AfkD /wwAA1QBqwMAAf8DAAH/Az0BaAcAAf8DAAH/AwAB/wMAAf8DAAH/EAADVgG1AwAB/wMAAf8DMwFQBwAB
UwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacD /wMAAf8DAAH/AwAB/wMAAf8QAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFgsAAf8DAAH/AwAB
NwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARts /wMAAf8DAAH/A08BmQsAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
AANNAZMDIwH9A1IBpQMUARscAANJAYYDIQH7AzcB+QNTAacDFQEcHAADBgEIAxkBIgMvAUkDQAFxA10B /w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB/wMAAf8rAAH/AwAB/wMAAf8DDAH+AwAB
zANQAfMDWgHpA1YBtgMtAUQsAAM/AWwDNwH5A1MBpwMVARwEAAMPARQDVwG5AwAB/wNeAe0DPwFtAz8B /wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8DAAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB
bQNeAe0DAAH/A1cBuQMPARQEAAMVARwDUwGnAzcB+QM/AWwgAAMUARsDUgGlAyMB/QNVAbQDJgE4AwcB /wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWBwAB
CTgAAxYBHgNWAbMDJAH9AyMB/QNSAaUDFAEbbAADTQGTAyMB/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkD /wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
UwGnAxUBHCAABAIDBAEFAwsBDgMwAUwDWQHBA0MB9gM1AfkDQQFyAwYBCCgAAz8BbAM3AfkDUwGnAxUB /wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8DAAH/AwAB
HAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8B /wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DPwH0GAADVgG1AwAB/wMAAf8DAAH/AwAB
bCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARtsAANNAZMD /wMAAf8DAAH/A1QB7BgAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DWAHrAwAB/wMAAf8DAAH/AwAB
IwH9A1IBpQMUARscAANJAYYDIQH7AzcB+QNTAacDFQEcMAADFQEcA1MBpwM3AfkDWwHTAzoBYSgAAz8B /wM/AfQXAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
bAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUB /wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
HANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IB AAH/AwAB/wMAAf8DQwF3HAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8DMAFMHAADJgH5AwAB/wMAAf8c
pQMUARsQAAQBAwQBBQMLAQ4DDwETAw8BEwMPARMDDwETAw8BEwMNAREDCQEMAwMBBAQBLAADTQGTAyMB AANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8fAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8DKgFAAyoB
/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkDUwGnAxUBHCAABAEDAgEDAwsBDgMwAUwDWQHBA0MB9gM1AfkD QAMqAUADAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8DKgFAAyoBQAMqAUADAAH/AwAB/wMAAf8nAAH/AwAB
QQFyAwYBCCgAAz8BbAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8D /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8bAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
VwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YB /wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwYBCCAAA1YBtgMAAf8DAAH/AwAB/wMAAf8DAgEDIAAD
swMkAf0DIwH9A1IBpQMUARsQAAMGAQgDJAE1Az4BawNGAX0DRgF+A0YBfgNGAX4DRgF+A0QBewM9AWkD JgH5AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/yMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
JAE0AwkBDCwAA00BkwMjAf0DUgGlAxQBGxwAA0kBhgMhAfsDNwH5A1MBpwMVARwcAAMGAQgDEgEXAyMB /wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
MwM/AW4DWwHNA0MB9gNdAeoDVgG2Ay0BRCwAAz8BbAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B /ycAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAA0wBkAMAAf8DAAH/AwAB/wMAAf8D
7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UB AAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/y8AAf8DAAH/AwAB/ygAAzYBWAMAAf8DAAH/IwAB
tAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARsQAAMQARUDRgF/A1wB2QNdAeoDYQHmA2IB /wMAAf8DAAH/Aw0BESQAA1UBrQMAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8D
4QNgAeADXgHiA1wB5wNiAeEDUAGdAyEBMCQAAwIBAwMPARMDUQGeAyMB/QNSAaUDFAEbHAADSQGGAyEB AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8sAANaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DFQEcGAAD
+wM3AfkDUwGnAxUBHBgAAwsBDgMtAUQDRgGBA1MBqQNdAd8DYAHoA18B2gNOAZYDKAE8AwkBDCwAAz8B TwGZA1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvxgAA04BlzQAA0sBjTAAAwwBDygAA1ABmjAAAygB
bAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUB PEAAAzgBWwNaAb8DWgG/A1oBvwMwAUwYAANEAXoDWgG/A1oBvwNaAb8DIAEtHAABQgFNAT4HAAE+AwAB
HANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IB KAMAAXwDAAEwAwABAQEAAQEGAAEDFgAD/wEAAf8B4AEHAf8B+AE/Av8B4AIAAXgEAAH/AcABAQH/AfgB
pQMUARsQAAMTARoDTgGYA0UB9QMAAf8DYAHgA1YBtgNZAb4DXgHXA0QB9wMmAfwDWgHHAysBQiQAAw8B HwL/AcACAAF4BAAB/wGDAeAB/wH5AQcC/wHAAgABOAQAAf8BjwH4AX8B+QGBAv8BxwH/Af4BOAQAAv8B
EwNAAW8DXQHUA1kB7wNNAZIDEgEYHAADSQGGAyEB+wM3AfkDUwGnAxUBHBAABAIDDQERAzYBVwNYAbcD /AE/AfkB4AL/AccB/wH+ATgEAAL/Af4BHwH5AfgBPwH/AccB/wH+ATgEAAP/AR8B+QH8AQ8B/wHHAf8B
XQHqA10B7ANfAdUDSwGPAzoBYAMeASsDBgEHMAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8D /gE4BAAD/wGPAfkB/wEHAf8BxwH/Af4BOAQAA/8BjwH5Af8BgQH/AccB/wH+ATgEAAP/AY8B+QH/AeAB
XgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0D /wHHAf8B/gE4BAAD/wHPAfkB/wH4AX8BxwH/Af4BOAQAA/8BzwH5Af8B/AF/AccB/wH+ATgEAAP/Ac8B
VQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNRAaQD +QH/AfgBfwHHAf8B/gE4BAAB8AEPAf8BjwH5Af8B4AF/AccB/wH+ATgEAAHgAQcB/wGPAfkB/wHBAf8B
JAE0A0QBeANeAd0DRAH3A1sB3gM7AWMDDgESIAADAgEDAx4BKgNVAbQDRAH3A1EBoQMbASYDBQEGHAAD xwH/Af4BOAQAAeABBwH/AY8B+QH/AQcB/wHHAf8B/gE4BAAB4wGHAf8BHwH5AfwBDwH/AccB/wH+ATgE
SQGGAyEB+wM3AfkDUwGnAxUBHAwABAEDEwEZA0QBegNgAdsDQQH3A0QB9wNZAbsDKwFCAxMBGQMIAQoD AAHjAQ8B/wEfAfkB+AE/Af8BxwH/Af4BOAQAAeIBHwH+AT8B+QHgAv8BxwH/Af4BOAQAAeABDwH4AT8B
AgEDNAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkD +QGBAv8BxwH/Af4BOAQAAeABAwHgAf8B+QEHAv8BwAIAATgEAAHwAYABAQH/AfgBDwL/AcACAAF4BAAB
DwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB 8wHgAQcB/wH4AT8C/wHgAgABeAQAAf8B/gE/Af8B/gP/AfgBAAEBAfgEAAHwAQcBwAEPAR8B/AF/AeMB
/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNOAZUDMQFMA2IB4QMAAf8DWwHNAxoBJCgAAxUB /AF/AeMB/wHwAR4BAwLwAQcBwAEOAQ8B+AE/AeMB+AEfAeMB/wHgAQwBAQLwAX8B/gEOAQcB+AEfAeMB
HANTAacDNwH5AyEB+wNJAYYkAANJAYYDIQH7AzcB+QNTAacDFQEcDAADCwEOA00BkgM0AfkDAAH/AwAB +AEPAeMB/wHgAQwBAQLwAT8B/AEOAQEB+AEHAeMB+AEDAeMB/wHjAYwBcQLwAR8B+AEOAQAB+AEDAeMB
/wNVAa8DFgEdRAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB +AEBAeMB/wHjAYwBcQHwAfEBDwHwAY4BEAF4AUEB4wH4AWAB4wH/AeMBjAFxAfAB8QGHAeEBjgEYATgB
/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVgG2AygBPAMIAQo4AAMWAR4D YAHjAfgBcAEjAf8B4wGMAXEB8AHxAsMBjgEcARgBcAFjAfgBfAEDAf8B4wGMAXEB8AHzAeEBhwGOAR8B
VgGzAyQB/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNGAfUDWQHvAycB/AMUAf4DXQHMAx0B CAF8ASMB+AF+AQMB/wHjAYwBcQHwAf8B8AEPAf4BHwGAAX4BAwH4AX8BgwH/AeMBjAFxAfAB/wH4AR8B
KQQCGAAEAgMGAQcDDwETAzIBTwNZAcADRQH1A10B0QM6AWAkAANJAYYDIQH7AzcB+QNTAacDFgEeAwwB /gEfAcABfwEDAfgBfwHDAf8B4wGMAXEB8AH/AfwBPwH+AR8B4AF/AYMB+AF/AeMB/wHjAYwBcQHwAf8B
EAMqAUADVwG5A1oB6QNZAe8DYAHoA10BzwNGAX0DEwEaAwIBA0QAAz8BbAM3AfkDUwGnAxUBHAQAAw8B +AEfAf4BHwHAAX8BAwH4AX8BwwH/AeMBjAFxAfAB/wHwAQ8B/gEfAYABfgEDAfgBfwGDAf8B4wGMAXEB
FANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQB 8AHzAeEBhwHOAR8BCAF8ASMB+AF+AQMB/wHjAYwBcQHwAfECwwGOAR4BGAFwAWMB+AF8AQMB/wHjAYwB
GwNSAaUDIwH9A1sB0AM/AWwDGAEhAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4B cQHwAfEBhwHhAY4BGAE4AWAB4wH4AXABIwH/AeMBjAFxAfAB8QEPAfABjgEQAXgBQQHjAfgBYAFjAf8B
EgMOARIDDgESAw4BEgMOARIDIAEuA1cBuQMkAf0DIwH9A1IBpQMUARsQAAMUARsDUAGaA0IB9gMAAf8D 4wGMAXEC8AEfAfgBDgEAAfgBAwHjAfgBQQHjAf8B4wGMAXEC8AE/AfwBDgEBAfgBBwHjAfgBAwHjAf8B
AAH/AyYB+gNFAfUDJAH9A2AB4ANAAXEDHQEoAw4BEgMNAREDCQEMAwgBCgMLBA4BEgMcAScDOAFbA0QB 4wGMAXEC8AF/Af4BDgEDAfgBDwHjAfgBDwHjAf8B4AEMAQEC8AEHAeABDgEHAfgBHwHjAfgBHwHjAf8B
eQNaAccDYgHhA1YBtgM0AVQDDAEPJAADSQGGAyEB+wM3AfkDVQGuAyoBQAM/AW0DXQHRA0YB9QNZAe4D 4AEMAQEC8AEHAcABDwEfAfwBfwHjAfwBPwHjAf8B8AEeAQMB8AH4AQcB4AEfAb8B/gH/AfcB/gH/AfcB
WQG7A0QBeQMqAUADEQEWBAJIAAM/AWwDNwH5A1UBrgMgAS0DDgESAxsBJQNZAb4DAAH/A14B7QM/AW0D /wH4AT8BBwHwCw==
PwFtA14B7QMAAf8DWQG+AxsBJQMOARIDIAEtA1UBrgM3AfkDPwFsIAADEwEaA1EBpAMlAfwDQgH2A10B
zANLAY0DRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YB
gANLAY8DXAHZAyQB/QNNAfQDTgGYAxMBGRAAAxIBGANLAYwDXgHtAwAB/wMmAf0DXAHZA1UBsQNdAd8D
RgH1A2AB4ANPAZsDRgGAA0QBegM5AV4DMwFQAz0BaANGAX4DUAGaA18B2gNbAeQDXwHaA08BmwMpAT4D
CgENKAADSQGGAyEB+wMmAfwDWwHTA1MBpgNcAdkDNwH5A2AB4ANQAZoDLQFFAxABFQMGAQcEAUwAAz8B
bAMmAfwDWwHTA0wBjgNGAYADSgGKA10B3AMkAf0DXQHfAzoBYgM6AWIDXQHfAyQB/QNdAdwDSgGKA0YB
gANMAY4DWwHTAyYB/AM/AWwgAAMSARcDSgGLA10B6gMSAf4DJwH6A1gB7wNeAe0DXgHtA14B7QNeAe0D
XgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA1gB7wMnAfoDJAH9A1cBwgM0AVQD
CwEOEAADCAEKAy4BSANVAbEDXgHiA2AB2wNPAZsDLQFEA0MBdwNdAcwDYgHhA10B6gNeAe0DWgHpA1sB
0wNcAcgDXwHaA2EB6wNVAfIDNwH5A14B0gNEAXgDIQEvAwcBCSwAA0IBdQNdAeoDAQH/AzcB+QNTAfAD
XQHsA1wB2QNEAXsDHgEqAwYBCFgAAz8BbAMBAf8DNwH5A1gB7wNeAe0DWQHuAycB+gNCAfYDUAGdAyAB
LQMgAS0DUAGdA0IB9gMnAfoDWQHuA14B7QNYAe8DNwH5AxIB/gM/AWwgAAMFAQYDGgEjA00BkwNhAeYD
XgHtA0QB9gNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcD
RAH3A0QB9gNeAe0DXwHlA0cBgwMKAQ0EAhAABAEDCAEKAx8BLAMuAUgDLQFEAxsBJQMHAQkDDwETAyMB
MgMuAUcDVwG5A2AB6ANaAekDWgHuA1gB8QNdAewDWgHpA2AB6ANbAdADNAFTAw8BEwMCAQMwAAMWAR4D
RwGDA14B7QNYAfEDXwHVA0wBjgMrAUIDDwEUBAJcAAM6AWIDWgHpA14B7QNEAfYDRAH3A0QB9gNdAewD
XQHcAzwBZgMGAQgDBgEIAzwBZgNdAdwDXgHtA0QB9gNEAfcDRAH2A14B7QNhAeYDOgFiLAAEAQMjATMD
TgGXA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasD
TgGXAyMBMwQBTAADCQELAzkBXQNHAYIDJwE6AwQBBUgABAIDIgExAzoBYQMPARRwAAMDAQQDKAE7A04B
mANUAasDUQGeAyEBLxQAAwMBBAMlATcDUAGfA1QBqwNOAZgDKAE7AwMBBBgAAUIBTQE+BwABPgMAASgD
AAF8AwABMAMAAQEBAAEBBgABAxYAA/8BAAH8AQMB8AE/AQMB8AEPAcAIAAH8AQEB8AE/AQMB8AEHAcAI
AAH8AQABMAE/AQAB8AEDAYAIAAH8AQABEAE/AQABcAEAAYAIAAH8AgABPwEAATABAAGACAAB/AIAAT8B
AAEwAQABgAgAAfwCAAE/DAAB/AEIAQABPwEICwAB/AEMAQABPwEMAQABIAkAAfwBDwEAAT8BDAEAATAJ
AAH8AQ8BgAE/AQ4BAAE4CQAB/AEPAfABPwEPAcABPwkAAfwBDwGAAT8BDgEAATgJAAH8AQ8BAAE/AQwB
AAEwCQAB/AEMAQABPwEMAQABIAkAAfwBCAEAAT8BCAsAAfwCAAE/DAAB/AIAAT8BAAEwCgAB/AIAAT8B
AAEwAQABgAgAAfwBAAEQAT8BAAFwAQABgAgAAfwBAAEwAT8BAAHwAQMBgAgAAfwBAAHwAT8BAQHwAQcB
wAgAAfwBAwHwAT8BAwHwAQ8BwAgAAf4BHwH4AX8BDwH4AX8BwAgAAeACAAEHAf4BAAEBAf8B4AEPAv8B
4AEAAQEB8AHgAgABBwH8AgAB/wHgAQcC/wHgAQABAQHwAeACAAEHAfwCAAF/AeABAwL/AeABAAEBAfAB
4AIAAQcB/AIAAT8B4AEAAX8B/wHgAQABAQHwAeABfwH+AQcB/AEHAcABPwHgAQABPwH/AeEBAAEhAfAB
4AF/Af4BBwL/AfgBPwHgAcABPwH/AeEBAAEhAfAB4AF/Af4BBwL/AfgBDwHgAcABAwH/AeEBAAEhAfAB
4AF/Af4BBwL/AfwBDwHgAfABAQH/AeEBAAEhAfAB4AF/Af4BBwL/AfwBDwHgAfwBAAH/AeEBAAEhAfAB
4AF/Af4BBwP/AQ8B4AH+AQAB/wHhAQABIQHwAeABfwH+AQcD/wEPAeAB/wEAAX8B4QEAASEB8AHgAX8B
/gEHA/8BDwHgAf8B8AF/AeEBAAEhAfAB4AF/Af4BBwGAAQcB/wEPAeAB/wEAAX8B4QEAASEB8AHgAX8B
/gEHAYABBwH/AQ8B4AH+AQAB/wHhAQABIQHwAeABfwH+AQcBgAEHAfwBDwHgAfwBAAH/AeEBAAEhAfAB
4AF/Af4BBwGAAQcB/AEPAeAB8AEBAf8B4QEAASEB8AHgAX8B/gEHAYABBwH4AQ8C4AEDAf8B4QEAASEB
8AHgAX8B/gEHAYABHwH4AT8C4AE/Af8B4QEAASEB8AHgAX8B/gEHAYABDwHAAT8B4AEAAT8B/wHhAQAB
IQHwAeACAAEHAYACAAE/AeABAAF/Af8B4AEAAQEB8AHgAgABBwGAAgABfwHgAQAC/wHgAQABAQHwAeAC
AAEHAYACAAH/AeABBwL/AeABAAEBAfAB4AIAAQcBgAEAAQEB/wHgAQ8C/wHgAQABAQHwAfwCAAE/Af8B
+AE/Af8B8AP/AfABPgEDAfAL
</value> </value>
</data> </data>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 17</value> <value>165, 17</value>
</metadata> </metadata>
<metadata name="spinePreviewFullScreenForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>307, 18</value>
</metadata>
<metadata name="wallpaperForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="wallpaperForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>291, 17</value> <value>630, 18</value>
</metadata> </metadata>
</root> </root>

View File

@@ -0,0 +1,51 @@
namespace SpineViewer.Forms
{
partial class SpinePreviewFullScreenForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
SuspendLayout();
//
// SpinePreviewFullScreenForm
//
AutoScaleMode = AutoScaleMode.None;
ClientSize = new Size(512, 512);
ControlBox = false;
FormBorderStyle = FormBorderStyle.None;
MaximizeBox = false;
MinimizeBox = false;
Name = "SpinePreviewFullScreenForm";
ShowIcon = false;
ShowInTaskbar = false;
StartPosition = FormStartPosition.Manual;
TopMost = true;
ResumeLayout(false);
}
#endregion
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SpineViewer.Forms
{
[ToolboxItem(true)]
[Designer(typeof(ComponentDesigner), typeof(IDesigner))]
[DesignTimeVisible(true)]
public partial class SpinePreviewFullScreenForm: Form
{
public SpinePreviewFullScreenForm()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -61,7 +61,6 @@
toolStripMenuItem_About = new ToolStripMenuItem(); toolStripMenuItem_About = new ToolStripMenuItem();
toolStripMenuItem_Experiment = new ToolStripMenuItem(); toolStripMenuItem_Experiment = new ToolStripMenuItem();
toolStripMenuItem_DesktopProjection = new ToolStripMenuItem(); toolStripMenuItem_DesktopProjection = new ToolStripMenuItem();
toolStripMenuItem_Debug = new ToolStripMenuItem();
rtbLog = new RichTextBox(); rtbLog = new RichTextBox();
splitContainer_MainForm = new SplitContainer(); splitContainer_MainForm = new SplitContainer();
splitContainer_Functional = new SplitContainer(); splitContainer_Functional = new SplitContainer();
@@ -77,6 +76,7 @@
spinePreviewPanel = new SpineViewer.Controls.SpinePreviewPanel(); spinePreviewPanel = new SpineViewer.Controls.SpinePreviewPanel();
panel_MainForm = new Panel(); panel_MainForm = new Panel();
toolTip = new ToolTip(components); toolTip = new ToolTip(components);
toolStripMenuItem_Debug = new ToolStripMenuItem();
menuStrip.SuspendLayout(); menuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer_MainForm).BeginInit(); ((System.ComponentModel.ISupportInitialize)splitContainer_MainForm).BeginInit();
splitContainer_MainForm.Panel1.SuspendLayout(); splitContainer_MainForm.Panel1.SuspendLayout();
@@ -274,7 +274,7 @@
// //
// toolStripMenuItem_Help // toolStripMenuItem_Help
// //
toolStripMenuItem_Help.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_Diagnostics, toolStripSeparator3, toolStripMenuItem_About }); toolStripMenuItem_Help.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_Diagnostics, toolStripSeparator3, toolStripMenuItem_About, toolStripMenuItem_Debug });
toolStripMenuItem_Help.Name = "toolStripMenuItem_Help"; toolStripMenuItem_Help.Name = "toolStripMenuItem_Help";
toolStripMenuItem_Help.Size = new Size(88, 28); toolStripMenuItem_Help.Size = new Size(88, 28);
toolStripMenuItem_Help.Text = "帮助(&H)"; toolStripMenuItem_Help.Text = "帮助(&H)";
@@ -282,25 +282,25 @@
// toolStripMenuItem_Diagnostics // toolStripMenuItem_Diagnostics
// //
toolStripMenuItem_Diagnostics.Name = "toolStripMenuItem_Diagnostics"; toolStripMenuItem_Diagnostics.Name = "toolStripMenuItem_Diagnostics";
toolStripMenuItem_Diagnostics.Size = new Size(208, 34); toolStripMenuItem_Diagnostics.Size = new Size(270, 34);
toolStripMenuItem_Diagnostics.Text = "诊断信息(&D)"; toolStripMenuItem_Diagnostics.Text = "诊断信息(&D)";
toolStripMenuItem_Diagnostics.Click += toolStripMenuItem_Diagnostics_Click; toolStripMenuItem_Diagnostics.Click += toolStripMenuItem_Diagnostics_Click;
// //
// toolStripSeparator3 // toolStripSeparator3
// //
toolStripSeparator3.Name = "toolStripSeparator3"; toolStripSeparator3.Name = "toolStripSeparator3";
toolStripSeparator3.Size = new Size(205, 6); toolStripSeparator3.Size = new Size(267, 6);
// //
// toolStripMenuItem_About // toolStripMenuItem_About
// //
toolStripMenuItem_About.Name = "toolStripMenuItem_About"; toolStripMenuItem_About.Name = "toolStripMenuItem_About";
toolStripMenuItem_About.Size = new Size(208, 34); toolStripMenuItem_About.Size = new Size(270, 34);
toolStripMenuItem_About.Text = "关于(&A)"; toolStripMenuItem_About.Text = "关于(&A)";
toolStripMenuItem_About.Click += toolStripMenuItem_About_Click; toolStripMenuItem_About.Click += toolStripMenuItem_About_Click;
// //
// toolStripMenuItem_Experiment // toolStripMenuItem_Experiment
// //
toolStripMenuItem_Experiment.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_DesktopProjection, toolStripMenuItem_Debug }); toolStripMenuItem_Experiment.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_DesktopProjection });
toolStripMenuItem_Experiment.Name = "toolStripMenuItem_Experiment"; toolStripMenuItem_Experiment.Name = "toolStripMenuItem_Experiment";
toolStripMenuItem_Experiment.Size = new Size(138, 28); toolStripMenuItem_Experiment.Size = new Size(138, 28);
toolStripMenuItem_Experiment.Text = "实验性功能(&E)"; toolStripMenuItem_Experiment.Text = "实验性功能(&E)";
@@ -308,18 +308,10 @@
// toolStripMenuItem_DesktopProjection // toolStripMenuItem_DesktopProjection
// //
toolStripMenuItem_DesktopProjection.Name = "toolStripMenuItem_DesktopProjection"; toolStripMenuItem_DesktopProjection.Name = "toolStripMenuItem_DesktopProjection";
toolStripMenuItem_DesktopProjection.Size = new Size(270, 34); toolStripMenuItem_DesktopProjection.Size = new Size(182, 34);
toolStripMenuItem_DesktopProjection.Text = "桌面投影"; toolStripMenuItem_DesktopProjection.Text = "桌面投影";
toolStripMenuItem_DesktopProjection.Click += toolStripMenuItem_DesktopProjection_Click; toolStripMenuItem_DesktopProjection.Click += toolStripMenuItem_DesktopProjection_Click;
// //
// toolStripMenuItem_Debug
//
toolStripMenuItem_Debug.Name = "toolStripMenuItem_Debug";
toolStripMenuItem_Debug.Size = new Size(270, 34);
toolStripMenuItem_Debug.Text = "调试";
toolStripMenuItem_Debug.Visible = false;
toolStripMenuItem_Debug.Click += toolStripMenuItem_Debug_Click;
//
// rtbLog // rtbLog
// //
rtbLog.BackColor = SystemColors.Window; rtbLog.BackColor = SystemColors.Window;
@@ -330,7 +322,7 @@
rtbLog.Margin = new Padding(3, 2, 3, 2); rtbLog.Margin = new Padding(3, 2, 3, 2);
rtbLog.Name = "rtbLog"; rtbLog.Name = "rtbLog";
rtbLog.ReadOnly = true; rtbLog.ReadOnly = true;
rtbLog.Size = new Size(1758, 150); rtbLog.Size = new Size(1758, 154);
rtbLog.TabIndex = 0; rtbLog.TabIndex = 0;
rtbLog.Text = ""; rtbLog.Text = "";
rtbLog.WordWrap = false; rtbLog.WordWrap = false;
@@ -354,7 +346,7 @@
splitContainer_MainForm.Panel2.Controls.Add(rtbLog); splitContainer_MainForm.Panel2.Controls.Add(rtbLog);
splitContainer_MainForm.Panel2.Cursor = Cursors.Default; splitContainer_MainForm.Panel2.Cursor = Cursors.Default;
splitContainer_MainForm.Size = new Size(1758, 1097); splitContainer_MainForm.Size = new Size(1758, 1097);
splitContainer_MainForm.SplitterDistance = 939; splitContainer_MainForm.SplitterDistance = 935;
splitContainer_MainForm.SplitterWidth = 8; splitContainer_MainForm.SplitterWidth = 8;
splitContainer_MainForm.TabIndex = 3; splitContainer_MainForm.TabIndex = 3;
splitContainer_MainForm.TabStop = false; splitContainer_MainForm.TabStop = false;
@@ -378,7 +370,7 @@
// //
splitContainer_Functional.Panel2.Controls.Add(groupBox_Preview); splitContainer_Functional.Panel2.Controls.Add(groupBox_Preview);
splitContainer_Functional.Panel2.Cursor = Cursors.Default; splitContainer_Functional.Panel2.Cursor = Cursors.Default;
splitContainer_Functional.Size = new Size(1758, 939); splitContainer_Functional.Size = new Size(1758, 935);
splitContainer_Functional.SplitterDistance = 788; splitContainer_Functional.SplitterDistance = 788;
splitContainer_Functional.SplitterWidth = 8; splitContainer_Functional.SplitterWidth = 8;
splitContainer_Functional.TabIndex = 2; splitContainer_Functional.TabIndex = 2;
@@ -402,7 +394,7 @@
// //
splitContainer_Information.Panel2.Controls.Add(splitContainer_Config); splitContainer_Information.Panel2.Controls.Add(splitContainer_Config);
splitContainer_Information.Panel2.Cursor = Cursors.Default; splitContainer_Information.Panel2.Cursor = Cursors.Default;
splitContainer_Information.Size = new Size(788, 939); splitContainer_Information.Size = new Size(788, 935);
splitContainer_Information.SplitterDistance = 351; splitContainer_Information.SplitterDistance = 351;
splitContainer_Information.SplitterWidth = 8; splitContainer_Information.SplitterWidth = 8;
splitContainer_Information.TabIndex = 1; splitContainer_Information.TabIndex = 1;
@@ -416,7 +408,7 @@
groupBox_SkelList.Dock = DockStyle.Fill; groupBox_SkelList.Dock = DockStyle.Fill;
groupBox_SkelList.Location = new Point(0, 0); groupBox_SkelList.Location = new Point(0, 0);
groupBox_SkelList.Name = "groupBox_SkelList"; groupBox_SkelList.Name = "groupBox_SkelList";
groupBox_SkelList.Size = new Size(351, 939); groupBox_SkelList.Size = new Size(351, 935);
groupBox_SkelList.TabIndex = 0; groupBox_SkelList.TabIndex = 0;
groupBox_SkelList.TabStop = false; groupBox_SkelList.TabStop = false;
groupBox_SkelList.Text = "模型列表"; groupBox_SkelList.Text = "模型列表";
@@ -426,7 +418,7 @@
spineListView.Dock = DockStyle.Fill; spineListView.Dock = DockStyle.Fill;
spineListView.Location = new Point(3, 26); spineListView.Location = new Point(3, 26);
spineListView.Name = "spineListView"; spineListView.Name = "spineListView";
spineListView.Size = new Size(345, 910); spineListView.Size = new Size(345, 906);
spineListView.SpinePropertyGrid = spineViewPropertyGrid; spineListView.SpinePropertyGrid = spineViewPropertyGrid;
spineListView.TabIndex = 0; spineListView.TabIndex = 0;
// //
@@ -435,7 +427,7 @@
spineViewPropertyGrid.Dock = DockStyle.Fill; spineViewPropertyGrid.Dock = DockStyle.Fill;
spineViewPropertyGrid.Location = new Point(3, 26); spineViewPropertyGrid.Location = new Point(3, 26);
spineViewPropertyGrid.Name = "spineViewPropertyGrid"; spineViewPropertyGrid.Name = "spineViewPropertyGrid";
spineViewPropertyGrid.Size = new Size(423, 582); spineViewPropertyGrid.Size = new Size(423, 580);
spineViewPropertyGrid.TabIndex = 0; spineViewPropertyGrid.TabIndex = 0;
// //
// splitContainer_Config // splitContainer_Config
@@ -452,8 +444,8 @@
// splitContainer_Config.Panel2 // splitContainer_Config.Panel2
// //
splitContainer_Config.Panel2.Controls.Add(groupBox_SkelConfig); splitContainer_Config.Panel2.Controls.Add(groupBox_SkelConfig);
splitContainer_Config.Size = new Size(429, 939); splitContainer_Config.Size = new Size(429, 935);
splitContainer_Config.SplitterDistance = 320; splitContainer_Config.SplitterDistance = 318;
splitContainer_Config.SplitterWidth = 8; splitContainer_Config.SplitterWidth = 8;
splitContainer_Config.TabIndex = 0; splitContainer_Config.TabIndex = 0;
// //
@@ -464,7 +456,7 @@
groupBox_PreviewConfig.Location = new Point(0, 0); groupBox_PreviewConfig.Location = new Point(0, 0);
groupBox_PreviewConfig.Margin = new Padding(0); groupBox_PreviewConfig.Margin = new Padding(0);
groupBox_PreviewConfig.Name = "groupBox_PreviewConfig"; groupBox_PreviewConfig.Name = "groupBox_PreviewConfig";
groupBox_PreviewConfig.Size = new Size(429, 320); groupBox_PreviewConfig.Size = new Size(429, 318);
groupBox_PreviewConfig.TabIndex = 1; groupBox_PreviewConfig.TabIndex = 1;
groupBox_PreviewConfig.TabStop = false; groupBox_PreviewConfig.TabStop = false;
groupBox_PreviewConfig.Text = "画面参数"; groupBox_PreviewConfig.Text = "画面参数";
@@ -475,7 +467,7 @@
propertyGrid_Previewer.HelpVisible = false; propertyGrid_Previewer.HelpVisible = false;
propertyGrid_Previewer.Location = new Point(3, 26); propertyGrid_Previewer.Location = new Point(3, 26);
propertyGrid_Previewer.Name = "propertyGrid_Previewer"; propertyGrid_Previewer.Name = "propertyGrid_Previewer";
propertyGrid_Previewer.Size = new Size(423, 291); propertyGrid_Previewer.Size = new Size(423, 289);
propertyGrid_Previewer.TabIndex = 1; propertyGrid_Previewer.TabIndex = 1;
propertyGrid_Previewer.ToolbarVisible = false; propertyGrid_Previewer.ToolbarVisible = false;
// //
@@ -486,7 +478,7 @@
groupBox_SkelConfig.Location = new Point(0, 0); groupBox_SkelConfig.Location = new Point(0, 0);
groupBox_SkelConfig.Margin = new Padding(0); groupBox_SkelConfig.Margin = new Padding(0);
groupBox_SkelConfig.Name = "groupBox_SkelConfig"; groupBox_SkelConfig.Name = "groupBox_SkelConfig";
groupBox_SkelConfig.Size = new Size(429, 611); groupBox_SkelConfig.Size = new Size(429, 609);
groupBox_SkelConfig.TabIndex = 0; groupBox_SkelConfig.TabIndex = 0;
groupBox_SkelConfig.TabStop = false; groupBox_SkelConfig.TabStop = false;
groupBox_SkelConfig.Text = "模型参数"; groupBox_SkelConfig.Text = "模型参数";
@@ -497,7 +489,7 @@
groupBox_Preview.Dock = DockStyle.Fill; groupBox_Preview.Dock = DockStyle.Fill;
groupBox_Preview.Location = new Point(0, 0); groupBox_Preview.Location = new Point(0, 0);
groupBox_Preview.Name = "groupBox_Preview"; groupBox_Preview.Name = "groupBox_Preview";
groupBox_Preview.Size = new Size(962, 939); groupBox_Preview.Size = new Size(962, 935);
groupBox_Preview.TabIndex = 1; groupBox_Preview.TabIndex = 1;
groupBox_Preview.TabStop = false; groupBox_Preview.TabStop = false;
groupBox_Preview.Text = "预览画面"; groupBox_Preview.Text = "预览画面";
@@ -508,7 +500,7 @@
spinePreviewPanel.Location = new Point(3, 26); spinePreviewPanel.Location = new Point(3, 26);
spinePreviewPanel.Name = "spinePreviewPanel"; spinePreviewPanel.Name = "spinePreviewPanel";
spinePreviewPanel.PropertyGrid = propertyGrid_Previewer; spinePreviewPanel.PropertyGrid = propertyGrid_Previewer;
spinePreviewPanel.Size = new Size(956, 910); spinePreviewPanel.Size = new Size(956, 906);
spinePreviewPanel.SpineListView = spineListView; spinePreviewPanel.SpineListView = spineListView;
spinePreviewPanel.TabIndex = 0; spinePreviewPanel.TabIndex = 0;
// //
@@ -526,6 +518,13 @@
// //
toolTip.ShowAlways = true; toolTip.ShowAlways = true;
// //
// toolStripMenuItem_Debug
//
toolStripMenuItem_Debug.Name = "toolStripMenuItem_Debug";
toolStripMenuItem_Debug.Size = new Size(270, 34);
toolStripMenuItem_Debug.Text = "调试";
toolStripMenuItem_Debug.Visible = false;
//
// SpineViewerForm // SpineViewerForm
// //
AutoScaleDimensions = new SizeF(144F, 144F); AutoScaleDimensions = new SizeF(144F, 144F);

View File

@@ -28,11 +28,32 @@ namespace SpineViewer
get get
{ {
var cp = base.CreateParams; var cp = base.CreateParams;
cp.X = cp.Y = 0; cp.ExStyle = Win32.WS_EX_LAYERED;
cp.ExStyle = Win32.WS_EX_LAYERED | Win32.WS_EX_TOOLWINDOW;
cp.Style = Win32.WS_POPUP;
return cp; return cp;
} }
} }
//protected override void OnHandleCreated(EventArgs e)
//{
// base.OnHandleCreated(e);
// Win32.SetLayeredWindowAttributes(Handle, 0, 255, Win32.LWA_ALPHA);
// SetWallpaper();
//}
//public void SetWallpaper()
//{
// // 设置成嵌入桌面
// var progman = Win32.FindWindow("Progman", null);
// if (progman != IntPtr.Zero)
// {
// // 确保 WorkerW 被创建
// Win32.SendMessageTimeout(progman, Win32.WM_SPAWN_WORKER, IntPtr.Zero, IntPtr.Zero, Win32.SMTO_NORMAL, 1000, out _);
// var workerW = Win32.GetWorkerW();
// if (workerW != IntPtr.Zero)
// {
// Win32.SetParent(Handle, workerW);
// }
// }
//}
} }
} }