summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacobPalecki <[email protected]>2020-09-21 14:20:18 -0700
committerGitHub <[email protected]>2020-09-21 14:20:18 -0700
commit4ec16a2ff35e0e910a13f92713d56d317b24e790 (patch)
treec4aead24d52e3002cfd3282ddd697a3766de405a
parentMerge pull request #20 from JacobPalecki/GUI (diff)
parentx/y diff sens works (diff)
downloadrawaccel-4ec16a2ff35e0e910a13f92713d56d317b24e790.tar.xz
rawaccel-4ec16a2ff35e0e910a13f92713d56d317b24e790.zip
Merge pull request #21 from JacobPalecki/GUI
GUI: Icon, Separate X/Y sens mode, some fixes
-rw-r--r--Alpha.zipbin0 -> 2072225 bytes
-rw-r--r--common/accel-base.hpp2
-rw-r--r--common/accel-logarithm.hpp32
-rw-r--r--common/common.vcxitems1
-rw-r--r--common/rawaccel-settings.h2
-rw-r--r--common/rawaccel.hpp3
-rw-r--r--driver/driver.vcxproj1
-rw-r--r--grapher/Constants/Constants.cs15
-rw-r--r--grapher/Form1.Designer.cs260
-rw-r--r--grapher/Form1.cs2
-rw-r--r--grapher/Form1.resx1883
-rw-r--r--grapher/Icon/mouse.icobin0 -> 112630 bytes
-rw-r--r--grapher/Layouts/LinearLayout.cs2
-rw-r--r--grapher/Layouts/LogarithmLayout.cs21
-rw-r--r--grapher/Layouts/NaturalGainLayout.cs2
-rw-r--r--grapher/Layouts/NaturalLayout.cs2
-rw-r--r--grapher/Layouts/PowerLayout.cs2
-rw-r--r--grapher/Layouts/SigmoidGainLayout.cs4
-rw-r--r--grapher/Models/AccelGUI.cs7
-rw-r--r--grapher/Models/AccelGUIFactory.cs19
-rw-r--r--grapher/Models/Calculations/AccelCalculator.cs121
-rw-r--r--grapher/Models/Calculations/AccelChartData.cs31
-rw-r--r--grapher/Models/Calculations/AccelData.cs48
-rw-r--r--grapher/Models/Charts/AccelCharts.cs206
-rw-r--r--grapher/Models/Charts/ChartState/ChartState.cs104
-rw-r--r--grapher/Models/Charts/ChartState/ChartStateManager.cs78
-rw-r--r--grapher/Models/Charts/ChartState/CombinedState.cs46
-rw-r--r--grapher/Models/Charts/ChartState/XYOneGraphState.cs48
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs76
-rw-r--r--grapher/Models/Charts/ChartXY.cs41
-rw-r--r--grapher/Models/Fields/Field.cs14
-rw-r--r--grapher/Models/Fields/FieldXY.cs16
-rw-r--r--grapher/Models/Options/AccelTypeOptions.cs1
-rw-r--r--grapher/Models/Options/ApplyOptions.cs2
-rw-r--r--grapher/Models/Options/CapOptions.cs12
-rw-r--r--grapher/Models/Options/Option.cs6
-rw-r--r--grapher/Models/Serialized/DriverSettings.cs2
-rw-r--r--grapher/ReadMe/Guide.md82
-rw-r--r--grapher/ReadMe/ReadMe.md14
-rw-r--r--grapher/ReadMe/images/accel_readme_example.pngbin0 -> 50019 bytes
-rw-r--r--grapher/grapher.csproj10
41 files changed, 2947 insertions, 271 deletions
diff --git a/Alpha.zip b/Alpha.zip
new file mode 100644
index 0000000..af777f0
--- /dev/null
+++ b/Alpha.zip
Binary files differ
diff --git a/common/accel-base.hpp b/common/accel-base.hpp
index 714162f..d536923 100644
--- a/common/accel-base.hpp
+++ b/common/accel-base.hpp
@@ -40,7 +40,7 @@ namespace rawaccel {
inline double operator()(double speed) const {
double offset_speed = speed - offset;
- return offset_speed > 0 ? ( legacy_offset ? 1 + fn.legacy_offset(offset_speed) * weight : 1 + fn(offset_speed) ) : 1;
+ return offset_speed > 0 ? ( legacy_offset ? 1 + fn.legacy_offset(offset_speed) * weight : 1 + fn(offset_speed) * weight) : 1;
}
};
diff --git a/common/accel-logarithm.hpp b/common/accel-logarithm.hpp
new file mode 100644
index 0000000..044d23c
--- /dev/null
+++ b/common/accel-logarithm.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <math.h>
+
+#include "accel-base.hpp"
+
+namespace rawaccel {
+
+ /// <summary> Struct to hold sigmoid (s-shaped) gain implementation. </summary>
+ struct logarithm_impl {
+ double rate;
+ double offset;
+ double additive_const;
+
+ logarithm_impl (const accel_args& args) :
+ rate(args.rate), offset (args.offset) {
+ additive_const = offset * rate;
+ }
+
+ inline double operator()(double speed) const {
+ double scaled_speed = rate * speed + 1;
+ double base_speed = speed + offset;
+
+ return (scaled_speed * log(scaled_speed) + additive_const ) / ( rate * base_speed) - 1;
+ }
+
+ inline double legacy_offset(double speed) const { return operator()(speed); }
+ };
+
+ using accel_logarithm = additive_accel<logarithm_impl>;
+
+}
diff --git a/common/common.vcxitems b/common/common.vcxitems
index 2913080..fcd3ae8 100644
--- a/common/common.vcxitems
+++ b/common/common.vcxitems
@@ -17,6 +17,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)accel-base.hpp" />
<ClInclude Include="$(MSBuildThisFileDirectory)accel-classic.hpp" />
<ClInclude Include="$(MSBuildThisFileDirectory)accel-linear.hpp" />
+ <ClInclude Include="$(MSBuildThisFileDirectory)accel-logarithm.hpp" />
<ClInclude Include="$(MSBuildThisFileDirectory)accel-natural.hpp" />
<ClInclude Include="$(MSBuildThisFileDirectory)accel-naturalgain.hpp" />
<ClInclude Include="$(MSBuildThisFileDirectory)accel-noaccel.hpp" />
diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h
index 12f136d..8c483eb 100644
--- a/common/rawaccel-settings.h
+++ b/common/rawaccel-settings.h
@@ -6,7 +6,7 @@
namespace rawaccel {
enum class accel_mode {
- linear, classic, natural, naturalgain, sigmoidgain, power, noaccel
+ linear, classic, natural, naturalgain, sigmoidgain, power, logarithm, noaccel
};
struct settings {
diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp
index 08ac322..8819302 100644
--- a/common/rawaccel.hpp
+++ b/common/rawaccel.hpp
@@ -8,6 +8,7 @@
#include "accel-linear.hpp"
#include "accel-classic.hpp"
+#include "accel-logarithm.hpp"
#include "accel-natural.hpp"
#include "accel-naturalgain.hpp"
#include "accel-power.hpp"
@@ -84,6 +85,7 @@ namespace rawaccel {
case accel_mode::naturalgain: return vis(var.u.naturalgain);
case accel_mode::sigmoidgain: return vis(var.u.sigmoidgain);
case accel_mode::power: return vis(var.u.power);
+ case accel_mode::logarithm: return vis(var.u.logarithm);
default: return vis(var.u.noaccel);
}
}
@@ -98,6 +100,7 @@ namespace rawaccel {
accel_naturalgain naturalgain;
accel_sigmoidgain sigmoidgain;
accel_power power;
+ accel_logarithm logarithm;
accel_noaccel noaccel = {};
} u = {};
diff --git a/driver/driver.vcxproj b/driver/driver.vcxproj
index 9ebcf31..bee36c4 100644
--- a/driver/driver.vcxproj
+++ b/driver/driver.vcxproj
@@ -108,6 +108,7 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<FloatingPointModel>Precise</FloatingPointModel>
<CallingConvention>StdCall</CallingConvention>
+ <Optimization>MaxSpeed</Optimization>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
diff --git a/grapher/Constants/Constants.cs b/grapher/Constants/Constants.cs
index aaf8bb9..a51b09c 100644
--- a/grapher/Constants/Constants.cs
+++ b/grapher/Constants/Constants.cs
@@ -89,6 +89,21 @@ namespace grapher
/// <summary> Default text to be displayed on write button. </summary>
public const string WriteButtonDelayText = "Delay";
+ /// <summary> Title of sensitivity chart. </summary>
+ public const string SensitivityChartTitle = "Sensitivity";
+
+ /// <summary> Title of velocity chart. </summary>
+ public const string VelocityChartTitle = "Velocity";
+
+ /// <summary> Title of gain chart. </summary>
+ public const string GainChartTitle = "Gain";
+
+ /// <summary> Text for x component. </summary>
+ public const string XComponent = "X";
+
+ /// <summary> Text for y component. </summary>
+ public const string YComponent = "Y";
+
/// <summary> Default name of settings file. </summary>
public const string DefaultSettingsFileName = @"settings.json";
diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs
index f8a6578..535ee15 100644
--- a/grapher/Form1.Designer.cs
+++ b/grapher/Form1.Designer.cs
@@ -34,26 +34,42 @@ namespace grapher
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series5 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend4 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series7 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series8 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea5 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend5 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Title title2 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series9 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series10 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series11 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series12 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Title title3 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend4 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series13 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series14 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series15 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Title title4 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea5 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend5 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series16 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series17 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series18 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Title title5 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series19 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series20 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Series series21 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.Title title6 = new System.Windows.Forms.DataVisualization.Charting.Title();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RawAcceleration));
this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.accelTypeDropX = new System.Windows.Forms.ComboBox();
this.sensitivityBoxX = new System.Windows.Forms.TextBox();
@@ -89,6 +105,7 @@ namespace grapher
this.pollRateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PollRateTextBox = new System.Windows.Forms.ToolStripTextBox();
this.ScaleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.showLastMouseMoveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.advancedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.capStyleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.gainCapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -138,7 +155,6 @@ namespace grapher
this.OptionSetYTitle = new System.Windows.Forms.Label();
this.AccelTypeActiveLabelY = new System.Windows.Forms.Label();
this.ActiveValueTitleY = new System.Windows.Forms.Label();
- this.showLastMouseMoveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.AccelerationChart)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.VelocityChart)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.GainChart)).BeginInit();
@@ -151,7 +167,7 @@ namespace grapher
// AccelerationChart
//
chartArea1.AxisX.Title = "Speed (counts/ms)";
- chartArea1.AxisY.Title = "Sensitivity (magnitude ratio)";
+ chartArea1.AxisY.Title = "Ratio of Output to Input";
chartArea1.Name = "ChartArea1";
this.AccelerationChart.ChartAreas.Add(chartArea1);
legend1.Name = "Legend1";
@@ -166,12 +182,28 @@ namespace grapher
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
series2.Legend = "Legend1";
- series2.Name = "LastAccelVal";
+ series2.Name = "Last Mouse Move";
+ series3.ChartArea = "ChartArea1";
+ series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series3.Legend = "Legend1";
+ series3.Name = "Y: Accelerated Sensitivity";
+ series4.ChartArea = "ChartArea1";
+ series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series4.IsVisibleInLegend = false;
+ series4.Legend = "Legend1";
+ series4.Name = "Y - Last Mouse Move";
this.AccelerationChart.Series.Add(series1);
this.AccelerationChart.Series.Add(series2);
+ this.AccelerationChart.Series.Add(series3);
+ this.AccelerationChart.Series.Add(series4);
this.AccelerationChart.Size = new System.Drawing.Size(698, 328);
this.AccelerationChart.TabIndex = 0;
this.AccelerationChart.Text = "Sensitivity";
+ title1.DockedToChartArea = "ChartArea1";
+ title1.IsDockedInsideChartArea = false;
+ title1.Name = "Title";
+ title1.Text = "Sensitivity";
+ this.AccelerationChart.Titles.Add(title1);
//
// accelTypeDropX
//
@@ -376,20 +408,36 @@ namespace grapher
this.VelocityChart.Legends.Add(legend2);
this.VelocityChart.Location = new System.Drawing.Point(482, 334);
this.VelocityChart.Name = "VelocityChart";
- series3.ChartArea = "ChartArea1";
- series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
- series3.Legend = "Legend1";
- series3.Name = "Mouse Velocity";
- series4.ChartArea = "ChartArea1";
- series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
- series4.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
- series4.Legend = "Legend1";
- series4.Name = "LastVelocityVal";
- this.VelocityChart.Series.Add(series3);
- this.VelocityChart.Series.Add(series4);
+ series5.ChartArea = "ChartArea1";
+ series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series5.Legend = "Legend1";
+ series5.Name = "Output Velocity";
+ series6.ChartArea = "ChartArea1";
+ series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series6.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ series6.Legend = "Legend1";
+ series6.Name = "Last Mouse Move";
+ series7.ChartArea = "ChartArea1";
+ series7.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series7.Legend = "Legend1";
+ series7.Name = "Y: Output Velocity";
+ series8.ChartArea = "ChartArea1";
+ series8.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series8.IsVisibleInLegend = false;
+ series8.Legend = "Legend1";
+ series8.Name = "Y: Last Mouse Move";
+ this.VelocityChart.Series.Add(series5);
+ this.VelocityChart.Series.Add(series6);
+ this.VelocityChart.Series.Add(series7);
+ this.VelocityChart.Series.Add(series8);
this.VelocityChart.Size = new System.Drawing.Size(698, 307);
this.VelocityChart.TabIndex = 28;
this.VelocityChart.Text = "chart1";
+ title2.DockedToChartArea = "ChartArea1";
+ title2.IsDockedInsideChartArea = false;
+ title2.Name = "Title";
+ title2.Text = "Velocity";
+ this.VelocityChart.Titles.Add(title2);
//
// GainChart
//
@@ -401,20 +449,36 @@ namespace grapher
this.GainChart.Legends.Add(legend3);
this.GainChart.Location = new System.Drawing.Point(482, 647);
this.GainChart.Name = "GainChart";
- series5.ChartArea = "ChartArea1";
- series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
- series5.Legend = "Legend1";
- series5.Name = "Velocity Gain";
- series6.ChartArea = "ChartArea1";
- series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
- series6.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
- series6.Legend = "Legend1";
- series6.Name = "LastGainVal";
- this.GainChart.Series.Add(series5);
- this.GainChart.Series.Add(series6);
+ series9.ChartArea = "ChartArea1";
+ series9.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series9.Legend = "Legend1";
+ series9.Name = "Velocity Gain";
+ series10.ChartArea = "ChartArea1";
+ series10.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series10.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ series10.Legend = "Legend1";
+ series10.Name = "Last Mouse Move";
+ series11.ChartArea = "ChartArea1";
+ series11.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series11.Legend = "Legend1";
+ series11.Name = "Y: Velocity Gain";
+ series12.ChartArea = "ChartArea1";
+ series12.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series12.IsVisibleInLegend = false;
+ series12.Legend = "Legend1";
+ series12.Name = "Y: Last Mouse Move";
+ this.GainChart.Series.Add(series9);
+ this.GainChart.Series.Add(series10);
+ this.GainChart.Series.Add(series11);
+ this.GainChart.Series.Add(series12);
this.GainChart.Size = new System.Drawing.Size(698, 309);
this.GainChart.TabIndex = 29;
this.GainChart.Text = "chart1";
+ title3.DockedToChartArea = "ChartArea1";
+ title3.IsDockedInsideChartArea = false;
+ title3.Name = "Title";
+ title3.Text = "Gain";
+ this.GainChart.Titles.Add(title3);
//
// menuStrip1
//
@@ -491,6 +555,15 @@ namespace grapher
this.ScaleMenuItem.Size = new System.Drawing.Size(169, 22);
this.ScaleMenuItem.Text = "Re-scale by above";
//
+ // showLastMouseMoveToolStripMenuItem
+ //
+ this.showLastMouseMoveToolStripMenuItem.Checked = true;
+ this.showLastMouseMoveToolStripMenuItem.CheckOnClick = true;
+ this.showLastMouseMoveToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.showLastMouseMoveToolStripMenuItem.Name = "showLastMouseMoveToolStripMenuItem";
+ this.showLastMouseMoveToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
+ this.showLastMouseMoveToolStripMenuItem.Text = "Show Last Mouse Move";
+ //
// advancedToolStripMenuItem
//
this.advancedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -507,7 +580,7 @@ namespace grapher
this.gainCapToolStripMenuItem,
this.legacyCapToolStripMenuItem});
this.capStyleToolStripMenuItem.Name = "capStyleToolStripMenuItem";
- this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.capStyleToolStripMenuItem.Text = "Cap Style";
//
// gainCapToolStripMenuItem
@@ -530,7 +603,7 @@ namespace grapher
this.gainOffsetToolStripMenuItem,
this.legacyOffsetToolStripMenuItem});
this.offsetStyleToolStripMenuItem.Name = "offsetStyleToolStripMenuItem";
- this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.offsetStyleToolStripMenuItem.Text = "Offset Style";
//
// gainOffsetToolStripMenuItem
@@ -551,7 +624,7 @@ namespace grapher
this.wholeVectorToolStripMenuItem,
this.byVectorComponentToolStripMenuItem});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(163, 22);
this.toolStripMenuItem1.Text = "Application Style";
//
// wholeVectorToolStripMenuItem
@@ -589,27 +662,38 @@ namespace grapher
// AccelerationChartY
//
chartArea4.AxisX.Title = "Speed (counts/ms)";
- chartArea4.AxisY.Title = "Sensitivity (magnitude ratio)";
+ chartArea4.AxisY.Title = "Ratio of Output to Input)";
chartArea4.Name = "ChartArea1";
this.AccelerationChartY.ChartAreas.Add(chartArea4);
legend4.Name = "Legend1";
this.AccelerationChartY.Legends.Add(legend4);
this.AccelerationChartY.Location = new System.Drawing.Point(1186, 0);
this.AccelerationChartY.Name = "AccelerationChartY";
- series7.ChartArea = "ChartArea1";
- series7.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
- series7.Legend = "Legend1";
- series7.Name = "Accelerated Sensitivity";
- series8.ChartArea = "ChartArea1";
- series8.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
- series8.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
- series8.Legend = "Legend1";
- series8.Name = "LastAccelVal";
- this.AccelerationChartY.Series.Add(series7);
- this.AccelerationChartY.Series.Add(series8);
+ series13.ChartArea = "ChartArea1";
+ series13.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series13.Legend = "Legend1";
+ series13.Name = "Accelerated Sensitivity";
+ series14.ChartArea = "ChartArea1";
+ series14.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series14.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ series14.Legend = "Legend1";
+ series14.Name = "Last Mouse Move";
+ series15.ChartArea = "ChartArea1";
+ series15.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series15.IsVisibleInLegend = false;
+ series15.Legend = "Legend1";
+ series15.Name = "Placeholder";
+ this.AccelerationChartY.Series.Add(series13);
+ this.AccelerationChartY.Series.Add(series14);
+ this.AccelerationChartY.Series.Add(series15);
this.AccelerationChartY.Size = new System.Drawing.Size(698, 328);
this.AccelerationChartY.TabIndex = 31;
this.AccelerationChartY.Text = "chart1";
+ title4.DockedToChartArea = "ChartArea1";
+ title4.IsDockedInsideChartArea = false;
+ title4.Name = "Title";
+ title4.Text = "Sensitivity";
+ this.AccelerationChartY.Titles.Add(title4);
//
// VelocityChartY
//
@@ -621,20 +705,31 @@ namespace grapher
this.VelocityChartY.Legends.Add(legend5);
this.VelocityChartY.Location = new System.Drawing.Point(1186, 334);
this.VelocityChartY.Name = "VelocityChartY";
- series9.ChartArea = "ChartArea1";
- series9.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
- series9.Legend = "Legend1";
- series9.Name = "Mouse Velocity";
- series10.ChartArea = "ChartArea1";
- series10.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
- series10.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
- series10.Legend = "Legend1";
- series10.Name = "LastVelocityVal";
- this.VelocityChartY.Series.Add(series9);
- this.VelocityChartY.Series.Add(series10);
+ series16.ChartArea = "ChartArea1";
+ series16.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series16.Legend = "Legend1";
+ series16.Name = "Output Velocity";
+ series17.ChartArea = "ChartArea1";
+ series17.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series17.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ series17.Legend = "Legend1";
+ series17.Name = "Last Mouse Move";
+ series18.ChartArea = "ChartArea1";
+ series18.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series18.IsVisibleInLegend = false;
+ series18.Legend = "Legend1";
+ series18.Name = "Placeholder";
+ this.VelocityChartY.Series.Add(series16);
+ this.VelocityChartY.Series.Add(series17);
+ this.VelocityChartY.Series.Add(series18);
this.VelocityChartY.Size = new System.Drawing.Size(698, 307);
this.VelocityChartY.TabIndex = 32;
this.VelocityChartY.Text = "chart1";
+ title5.DockedToChartArea = "ChartArea1";
+ title5.IsDockedInsideChartArea = false;
+ title5.Name = "Title";
+ title5.Text = "Velocity";
+ this.VelocityChartY.Titles.Add(title5);
//
// GainChartY
//
@@ -646,20 +741,31 @@ namespace grapher
this.GainChartY.Legends.Add(legend6);
this.GainChartY.Location = new System.Drawing.Point(1186, 647);
this.GainChartY.Name = "GainChartY";
- series11.ChartArea = "ChartArea1";
- series11.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
- series11.Legend = "Legend1";
- series11.Name = "Velocity Gain";
- series12.ChartArea = "ChartArea1";
- series12.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
- series12.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
- series12.Legend = "Legend1";
- series12.Name = "LastGainVal";
- this.GainChartY.Series.Add(series11);
- this.GainChartY.Series.Add(series12);
+ series19.ChartArea = "ChartArea1";
+ series19.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series19.Legend = "Legend1";
+ series19.Name = "Velocity Gain";
+ series20.ChartArea = "ChartArea1";
+ series20.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
+ series20.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ series20.Legend = "Legend1";
+ series20.Name = "Last Mouse Move";
+ series21.ChartArea = "ChartArea1";
+ series21.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
+ series21.IsVisibleInLegend = false;
+ series21.Legend = "Legend1";
+ series21.Name = "Placeholder";
+ this.GainChartY.Series.Add(series19);
+ this.GainChartY.Series.Add(series20);
+ this.GainChartY.Series.Add(series21);
this.GainChartY.Size = new System.Drawing.Size(698, 309);
this.GainChartY.TabIndex = 33;
this.GainChartY.Text = "chart1";
+ title6.DockedToChartArea = "ChartArea1";
+ title6.IsDockedInsideChartArea = false;
+ title6.Name = "Title";
+ title6.Text = "Gain";
+ this.GainChartY.Titles.Add(title6);
//
// MouseLabel
//
@@ -961,15 +1067,6 @@ namespace grapher
this.ActiveValueTitleY.TabIndex = 67;
this.ActiveValueTitleY.Text = "Active";
//
- // showLastMouseMoveToolStripMenuItem
- //
- this.showLastMouseMoveToolStripMenuItem.Checked = true;
- this.showLastMouseMoveToolStripMenuItem.CheckOnClick = true;
- this.showLastMouseMoveToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.showLastMouseMoveToolStripMenuItem.Name = "showLastMouseMoveToolStripMenuItem";
- this.showLastMouseMoveToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
- this.showLastMouseMoveToolStripMenuItem.Text = "Show Last Mouse Move";
- //
// RawAcceleration
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1039,6 +1136,7 @@ namespace grapher
this.Controls.Add(this.accelTypeDropX);
this.Controls.Add(this.AccelerationChart);
this.Controls.Add(this.menuStrip1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "RawAcceleration";
this.Text = "Raw Acceleration Graph";
this.Load += new System.EventHandler(this.Form1_Load);
diff --git a/grapher/Form1.cs b/grapher/Form1.cs
index 103f239..3f2ca2a 100644
--- a/grapher/Form1.cs
+++ b/grapher/Form1.cs
@@ -58,7 +58,7 @@ namespace grapher
gainOffsetToolStripMenuItem,
legacyOffsetToolStripMenuItem,
AutoWriteMenuItem,
- scaleByDPIToolStripMenuItem,
+ ScaleMenuItem,
DPITextBox,
PollRateTextBox,
sensitivityBoxX,
diff --git a/grapher/Form1.resx b/grapher/Form1.resx
index 32fcbfb..f036fed 100644
--- a/grapher/Form1.resx
+++ b/grapher/Form1.resx
@@ -123,4 +123,1887 @@
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wD///8L////Mf///1D///9r////f////47///+d////ov///6P///+j////o////6L///+g////kP//
+ /4f///94////Zv///1H///86////IP///wX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8C////Lf///23///+n////2/////z/////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////+v//
+ /97///+4////kP///2L///8v////BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wP///9E////mv///+b/////////////
+ /////////f39/+Xl5f/Jycn/sbGx/56env+Pj4//hYWF/319ff95eXn/d3d3/3l5ef97e3v/gYGB/4qK
+ iv+VlZX/oqKi/7Ozs//ExMT/2dnZ//Hx8f/+/v7////////////////////////////////y////u///
+ /3r///8z////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /xv///99////4v///////////////+7u7v+2trb/gYGB/1FRUf8pKSn/HBwc/xoaGv8YGBj/FxcX/xYW
+ Fv8WFhb/FRUV/xUVFf8VFRX/FRUV/xUVFf8VFRX/FRUV/xYWFv8WFhb/FhYW/xUVFf8WFhb/FxcX/yUl
+ Jf9FRUX/aGho/46Ojv+4uLj/5ubm//7+/v/////////////////////k////jv///y7///8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Av///0r///+3/////P//////////6urq/5ycnP9PT0//Gxsb/xQU
+ FP8RERH/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ERER/xMTE/8VFRX/MjIy/21t
+ bf+tra3/7e3t/////////////////v///7n///8uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///0r////S////////
+ ///8/Pz/vLy8/19fX/8XFxf/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xMTE/8cHBz/W1tb/7Kysv/6+vr/////////
+ //z///+W////HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///xX///+q///////////v7+//jY2N/ywsLP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/FRUV/zc3N/+srKz//f39///////////y////nP///3z///9F////CwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9D////5f/////4+Pj/jo6O/x8f
+ H/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xER
+ Ef9FRUX/xcXF///////////////////////////3////tf///13///8LAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8G////jf////7/////0dHR/zg4OP8RERH/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8VFRX/v7+//9vb2/+ZmZn/1dXV//7+
+ /v////////////////H///+V////KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Bf///6///////Pz8/5SUlP8YGBj/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP/a2tr/kJCQ/xAQEP8QEBD/Ly8v/35+fv/W1tb////////////////+////t///
+ /0H///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wn///+9//////7+/v9VVVX/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/LS0t//z8/P9SUlL/EBAQ/xAQ
+ EP8QEBD/EBAQ/xEREf9ISEj/rKys//r6+v///////////////8X///9G////AQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8D////r//////7+/v/+vr6/x4eHv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP9ubm7/9PT0/xoaGv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/LCws/5SU
+ lP/z8/P////////////////F////Rv///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /4b/////9fX1/25ubv/6+vr/Ly8v/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/7Kysv+7u7v/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/yMjI/+MjIz/8vLy////////////////wv//
+ /z3///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9M/////v39/f9eXl7/Jycn//r6+v9DQ0P/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8YGBj/8fHx/3V1df8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8iIiL/j4+P//T09P///////////////7b///8zAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP//
+ /+v/////jo6O/xAQEP8UFBT/9fX1/1xcXP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1dXV//7+/v/LCws/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/JiYm/5iY
+ mP/4+Pj///////////7///+p////KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///+v/////8nJyf8UFBT/EBAQ/xAQEP/d3d3/enp6/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/paWl/8vLy/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/y0tLf+jo6P/+/v7///////////7////n///
+ /x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Uv//
+ ///29vb/MzMz/xAQEP8QEBD/EBAQ/7y8vP+cnJz/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xkZGf/u7u7/enp6/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP82Njb/rq6u//39/f//////////+P///5D///8WAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wb////d/////4ODg/8QEBD/EBAQ/xAQEP8QEBD/l5eX/8PD
+ w/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/YGBg//r6+v8pKSn/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Pz8//7u7
+ u/////////////////D///97////CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////aP//
+ ///h4eH/GBgY/xAQEP8QEBD/EBAQ/xAQEP9tbW3/7Ozs/xISEv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+6urr/u7u7/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0tLS//Jycn////////////////h////Vf//
+ /wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wT////e/////2xsbP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/z8/
+ P//7+/v/MzMz/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/Li4u//n5+f9fX1//EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xEREf9eXl7/3d3d////////////////tP///xsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Tv//
+ ///l5eX/FhYW/xAQEP8QEBD/EBAQ/xAQEP8QEBD/FhYW//Dw8P9oaGj/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+MjIz/5eXl/xYW
+ Fv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8XFxf/goKC//b2
+ 9v//////////7f///1IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///+s/////4eHh/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/v7+//6Kiov8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/Ghoa/+np6f+Ghob/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/MjIy/8bGxv///////////v///4v///8DAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP//
+ //L+/v7/MzMz/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+BgYH/4ODg/xEREf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9ycnL/8/Pz/yUl
+ Jf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/ExMT/4uLi//9/f3//////////67///8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9B/////9jY2P8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/0BAQP/7+/v/OTk5/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/FRUV/93d3f+bm5v/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1xcXP/19fX/////////
+ /8D///8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /3z/////mZmZ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EhIS/+Hh4f+CgoL/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9ra2v/9vb2/y4u
+ Lv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0ZGRv/v7+///////////7n///8HAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////sP////9mZmb/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/l5eX/9HR0f8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/GBgY/97e3v+bm5v/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0JC
+ Qv/x8fH//////////6H///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD////b/////z09Pf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9FRUX/+vr6/zs7
+ O/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP97e3v/8fHx/ygo
+ KP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/05OTv/5+fn//////////3UAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////A/////f/////ICAg/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf/X19f/lZWV/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/JSUl/+vr6/+Hh4f/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/21tbf//////////+////zsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8M//////r6+v8TExP/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/3h4
+ eP/r6+v/Gxsb/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+ioqL/3t7e/xoa
+ Gv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/6Kiov//////////3f//
+ /wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///w//////+Pj4/xEREf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ICAg/+3t7f90dHT/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/S0tL//j4+P9bW1v/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/Gxsb/9zc3P//////////jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Cv/////8/Pz/ExMT/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/kpKS/93d3f8WFhb/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xsbG//Y2Nj/r6+v/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/TExM//7+
+ /v/////7////LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8V//////b29v8RERH/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8pKSn/8fHx/3BwcP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/m5ub/+bm5v8mJib/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/rKys//////////+0////AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///yv/////6+vr/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP+QkJD/5eXl/xsbG/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/15eXv/39/f/WFhY/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8vLy//+fn5//////7///82AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////IP/////t7e3/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/yAgIP/r6+v/ioqK/xcX
+ F/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP81NTX/6urq/5OTk/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+fn5///////////6sAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8d/////+3t7f8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4yMjP/7+/v/8/Pz/9zc3P+FhYX/Gxsb/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Hx8f/9PT0//BwcH/FRUV/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/zMzM//9/f3/////+////xsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xL/////9/f3/xMT
+ E/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/nZ2d/7S0
+ tP9QUFD/cXFx/8HBwf/Dw8P/Kysr/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xYWFv+7u7v/2tra/yUlJf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/729vf//////////eAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Af///+7/////LCws/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP/BwcH/bGxs/xAQEP8RERH/EhIS/3V1df/U1NT/LCws/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8TExP/p6en/+bm5v82Njb/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/ZGRk///////////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////vf//
+ //9cXFz/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/5+f
+ n/9tbW3/EBAQ/xEREf8QEBD/EBAQ/6Kiov/Hx8f/ExMT/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/ExMT/52dnf/o6Oj/RERE/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8dHR3/+Pj4////
+ //3///8XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Av///zL///++/////5eXl/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/YWFh/3d3d/8QEBD/ERER/xAQEP8QEBD/Kioq/+rq
+ 6v9kZGT/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xQUFP+hoaH/6Ojo/0lJSf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP/AwMD//////////1UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///xj///8/////OP///zP///84////RP///1b///9x////kv///73////v////////
+ ////////3t7e/xISEv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8eHh7/sLCw/xAQEP8QEBD/ERER/xAQEP8QEBD/hISE/9ra2v8dHR3/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8bGxv/sLCw/+bm5v9GRkb/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4aG
+ hv//////////kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///96/////f//////////////////
+ //////////////////////////////7+/v/j4+P/qqqq/4qKiv//////RERE/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+srKz/Ozs7/xAQEP8QEBD/EBAQ/xAQ
+ EP8aGhr/1dXV/5SUlP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/LS0t/8nJyf/c3Nz/Ojo6/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/WFhY//////////++AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Bf////T/////+Pj4/+7u7v/n5+f/4ODg/9bW1v/FxcX/rq6u/5GRkf9sbGz/QEBA/ykp
+ Kf87Ozv/d3d3//b29v+goKD/EhIS/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/1RUVP+dnZ3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9NTU3/8PDw/1VVVf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1NT
+ U//j4+P/xcXF/ykpKf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP81NTX//////////+L///8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8J/////P/////k5OT/tra2/42N
+ jf9wcHD/YGBg/1xcXP9jY2P/dXV1/4+Pj/+xsbH/3t7e//7+/v////////////Pz8/8pKSn/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/FhYW/+Dg4P8rKyv/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP+RkZH/5OTk/z4+Pv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xoaGv+Tk5P/8/Pz/5aWlv8XFxf/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/x4eHv//////////+P///wMAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD////K////////////////////////////////////////////////////////
+ ////////////8v///7b////Y/////4mJif8VFRX/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/dnZ2/6ampv8RERH/EBAQ/xAQEP8QEBD/EhIS/xsbG//ExMT/4eHh/0dH
+ R/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9RUVH/1tbW/+Dg
+ 4P9XV1f/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/FBQU//r6+v//////////CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yf///+r////zP//
+ /93////k////8v///+3////j////0P///7b///+T////Z////zP///8FAAAAAP///1P/////7e3t/yoq
+ Kv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8TExP/zMzM/1BQ
+ UP8QEBD/EBAQ/xAQEP8RERH/EhIS/yIiIv/AwMD/7Ozs/1xcXP8RERH/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP81NTX/r6+v//Pz8/+enp7/ISEh/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8SEhL/+Pj4//////////8PAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Av///87/////lJSU/xgYGP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP86Ojr/29vb/yQkJP8QEBD/EBAQ/xAQEP8QEBD/ERER/xUV
+ Ff+UlJT//Pz8/7a2tv9AQED/EhIS/xAQEP8QEBD/EBAQ/xAQEP8yMjL/oaGh//Ly8v/CwsL/Q0ND/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xUVFf/8/Pz//////////wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Rf//
+ ///4+Pj/Q0ND/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP9ycnL/v7+//xYWFv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9ISEj/ycnJ//v7+/+7u7v/eXl5/0tL
+ S/9AQED/hYWF//T09P/S0tL/U1NT/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ISEh///////////2////AgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////sf/////T09P/IyMj/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+ioqL/n5+f/xEREf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8RERH/Tk5O/4+Pj//MzMz/+Pj4/9/f3//Q0ND/5OTk/yEhIf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP82Njb//////////+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8h////9P////+rq6v/FBQU/xAQEP8QEBD/EBAQ/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xcXF//Kysr/iYmJ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8VFRX/EhIS/xUVFf+zs7P/ZWVl/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1BQUP//////////xgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9t//////z8/P+NjY3/ERER/xAQ
+ EP8QEBD/ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/yYmJv/d3d3/cnJy/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/2BgYP+JiYn/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/bm5u//////////+lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wH///+2//////j4+P99fX3/ERER/xISEv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8oKCj/Z2dn/76+vv/8/Pz/ampq/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/ZGRk/4KCgv8SEhL/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+SkpL/////////
+ /4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xX////i//////X1
+ 9f92dnb/ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EhIS/z8/P/+Dg4P/x8fH//Ly8v/i4uL/paWl/29v
+ b//d3d3/eHh4/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf+1tbX/NTU1/xER
+ Ef8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/7m5uf//////////VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///zL////z//////X19f99fX3/NjY2/z8/P/9FRUX/ZWVl/56e
+ nv/g4OD/8/Pz/8TExP+CgoL/QEBA/xMTE/8QEBD/EBAQ/ygoKP/Ozs7/o6Oj/xsbG/8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8TExP/kZGR/1VVVf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8RERH/5+fn////
+ //////8nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /0P////3///////////+/v7////////////4+Pj/x8fH/3V1df8mJib/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xkZGf+kpKT/39/f/2NjY/8VFRX/EBAQ/xAQEP8ZGRn/YmJi/7a2tv9RUVH/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/y8vL///////////7P///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///0P////z//////v7+/+rq6v/KSkp/xQU
+ FP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9TU1P/vb29/97e
+ 3v/Q0ND/4uLi/+bm5v+SkpL/IiIi/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/bW1t////
+ //////+zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///zT////n/v7+//f39/+kpKT/GBgY/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ERER/yoqKv8rKyv/ExMT/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+1tbX//////////24AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8c////fP///+L//////v7+//j4
+ +P+6urr/JCQk/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ICAg//f3
+ 9//////+////IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wn///9W////t/////z//////////+3t7f/X19f///////r6+v/S0tL/OTk5/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP92dnb//////////8cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Af///zr///+X////7v//////////+/v7/8fHx/+CgoL/UFBQ/3x8
+ fP/09PT///////z8/P/l5eX/XV1d/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/FBQU/93d
+ 3f//////////YgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Jv///4H////b////////
+ ////////4ODg/52dnf9bW1v/XV1d/5+fn//k5OT///////////////////////7+/v/y8vL/jo6O/xYW
+ Fv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9ubm7//////////+f///8IAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wD///8g////dP///8z////////////////w8PD/s7Oz/3Fxcf9SUlL/h4eH/8nJyf/8/Pz/////////
+ ///////o////iv///0f////c///////////29vb/v7+//y4uLv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/JCQk/+vr
+ 6///////////awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////AP///yT///90////yf////7///////////f39//Dw8P/hISE/1VV
+ Vf93d3f/tra2//Ly8v////////////////v///+1////Uv///wYAAAAAAAAAAP///xH///+q////////
+ ///6+vr/4+Pj/2FhYf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xISEv+4uLj//////////8z///8EAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////NP///4L////S/////v//
+ ////////+fn5/8vLy/+SkpL/X19f/3Jycv+rq6v/5+fn/////////////////////9X///93////GwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///9e////6v/////9/f3/9PT0/6Ojo/8hISH/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/kJCQ////
+ ///////0////KwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /xD///9T////m////+T////////////////39/f/zMzM/5mZmf9paWn/eHh4/6urq//h4eH/////////
+ ////////////6P///5H///80////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8Y////u///////////+fn5/9ra2v9VVVX/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4GBgf///////////f///1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8K////QP///4H////F////+/////////////////Pz8//Nzc3/np6e/3Nz
+ c/+Hh4f/tLS0/+Tk5P/////////////////////x////n////0j///8EAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////fP////v//////f39//X1
+ 9f+ioqL/JCQk/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf+Kior/////////
+ //7///9xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xj///+I////xv////j/////////////
+ ///+/v7/7u7u/9TU1P+xsbH/mJiY/6qqqv/IyMj/7u7u//////////////////////H///+l////UP//
+ /wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Of///9j///////////39/f/k5OT/ZWVl/xEREf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8TExP/nZ2d///////////+////c////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////yv////////////////r6+v/x8fH/4eHh/8vLy//IyMj/09PT/+bm5v/8/Pz/////////
+ ////////////5v///5r///9K////BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP//
+ /3b////m///////////7+/v/vr6+/z4+Pv8SEhL/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/GBgY/7Gxsf//////////+///
+ /2P///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////v7+//09PT/7+/v/+7u
+ 7v/y8vL/+/v7//////////////////////z////K////gf///zb///8CAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wz///+d////////////////+fn5/6Sk
+ pP80NDT/ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/x8fH//Dw8P///////////X///9OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///+L//////v7+////////////////////////////////3////57///9Y////FQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8S////gv///+///////////+zs7P////////////Ly8v+fn5//Ozs7/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8rKyv/1NTU///////////u////PAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////a/////3//////////P//
+ /9f///+d////YP///yD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8S////gv////D//////////8zMzP9TU1P/Hh4e/6Ki
+ ov/////////////////4+Pj/qqqq/zw8PP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/RERE/+bm5v//////////4////ywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////HP///zf///8O////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Y////i///
+ //D//////////9HR0f9cXFz/GBgY/x4eHv99fX3/7e3t///////////r////tf////7//////f39/8jI
+ yP9tbW3/ICAg/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ERER/3R0dP/4+Pj//////////87///8dAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8l////mP////j//////////87Ozv9dXV3/GBgY/xwcHP9zc3P/5OTk////
+ ////////////yf///yf///8A////R////9z///////////7+/v/x8fH/q6ur/1tbW/8aGhr/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/y0t
+ Lf+5ubn///////////////+m////CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///86////r/////3//////v7+/8PD
+ w/9WVlb/GBgY/x4eHv90dHT/4eHh////////////////3////1z///8CAAAAAAAAAAAAAAAA////Cf//
+ /3v////v///////////9/f3/+Pj4/+np6f+oqKj/X19f/x8fH/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/yQkJP+NjY3/9fX1///////////1////aP///wEAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wX///9W////yP///////////Pz8/7Kysv9ISEj/FxcX/yIiIv9+fn7/5ubm////////////////3///
+ /2b///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wv///9u////4////////////v7+//r6
+ +v/29vb/7u7u/7m5uf93d3f/ODg4/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ExMT/0tLS/+kpKT/9fX1////
+ ////////////uf///yUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xL///90////4P//////////9PT0/5ycnP82Njb/FxcX/y0t
+ Lf+Pj4//7u7u////////////////3////2b///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8G////Vv///7r////8/////////////////Pz8//r6+v/39/f/3t7e/6Oj
+ o/9paWn/MTEx/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8gICD/YWFh/6Ojo//o6Oj/////////////////////xf///0r///8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///y7///+Z////9P//
+ ////////4+Pj/4KCgv8mJib/FxcX/0FBQf+mpqb/+Pj4////////////////0v///1z///8FAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af//
+ /zD///+j////////////////+/v7/////////////v7+//39/f/7+/v/5OTk/7CwsP98fHz/S0tL/yAg
+ IP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/x8fH/9gYGD/sbGx//f39//////////////////////l////kf//
+ /zP///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////B////1n////C/////v/////+/v7/x8fH/2NjY/8bGxv/Ghoa/2BgYP/Dw8P//v7+////
+ ///////+////vv///0v///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Wf///+P//////v7+/6ysrP8vLy//VVVV/+zs
+ 7P/////////////////////////////////+/v7/+/v7/9/f3/+zs7P/jY2N/3R0dP9jY2P/WFhY/05O
+ Tv9GRkb/Pj4+/zw8PP83Nzf/MzMz/zIyMv80NDT/OTk5/0BAQP9QUFD/dXV1/6Ghof/Q0ND/+vr6////
+ /////////////v///8f///97////NP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////JP///4j////p///////////19fX/pKSk/0JC
+ Qv8XFxf/LCws/4aGhv/j4+P////////////////4////ov///zL///8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PP//
+ /8f//////////9fX1/9SUlL/GRkZ/1JSUv/a2tr///////////v///9f////WP///4z///++////5v//
+ /////////////////////////////////////////////////////////v7+//39/f/8/Pz//Pz8//z8
+ /P/8/Pz//v7+///////////////////////////9////zP///4H///8p////AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8I////WP//
+ /7z////+///////////b29v/fn5+/ykpKf8aGhr/VFRU/7CwsP/5+fn////////////////i////ff//
+ /xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////K////7D//////////+3t7f96enr/HBwc/y8vL/+rq6v//v7+////
+ ///////d////QQAAAAAAAAAAAAAAAAAAAAD///8A////Ev///zP///9O////bP///4f///+j////vv//
+ /+v/////////////////////+/v7/9LS0v/V1dX/5OTk//39/f////////////////7///+X////R///
+ /xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wD///8w////kv///+z///////////n5+f+zs7P/WVlZ/yAgIP8zMzP/hoaG/97e
+ 3v////////////////3///+4////Uf///wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////KP///6X////8//////f3
+ 9/+Wlpb/Jycn/x8fH/+Dg4P/8vLy///////////5////h////woAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8q////Zv///4T////G/////f//////////7Ozs/6CgoP9NTU3/PT09/4mJ
+ if/k5OT////////////////Q////RwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xz///9y////z////////////////9zc
+ 3P+Kior/OTk5/ywsLP9ra2v/vb29//v7+////////////////+b///+G////IgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Kv///6X////8//////v7+/+mpqb/NDQ0/xoaGv9qamr/4eHh////////////////uv//
+ /ykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Sf////r/////////////
+ ///7+/v/zs7O/4WFhf9ISEj/ZmZm/66urv/09PT////////////////d////Xv///wIAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////Gv//
+ /2n///++/////f//////////9PT0/7W1tf9mZmb/Nzc3/19fX/+oqKj/8PDw////////////////+///
+ /7P///9Q////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////NP///6z////9//////z8/P+tra3/PDw8/xoa
+ Gv9dXV3/09PT////////////////2f///0////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///+x//////v7+//o6Oj/xMTE/42Njf+CgoL/p6en/+Hh4f//////////////
+ ///////G////WP///wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wL///8z////fP///8j////9///////////7+/v/09PT/5aWlv9aWlr/aGho/6Oj
+ o//l5eX/////////////////////1P///3X///8ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Rv//
+ /7v///////////r6+v+qqqr/Pj4+/xwcHP9dXV3/zs7O////////////////6P///2v///8FAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///9f/////+fn5/+jo
+ 6P/i4uL/8fHx/////////////////////+z///+T////MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////KP///2b///+o////6P////////////////z8
+ /P/i4uL/ubm5/4iIiP+Hh4f/r6+v/+Hh4f/////////////////////m////jv///zL///8BAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8F////W////87///////////b29v+hoaH/PDw8/yEhIf9nZ2f/0tLS////
+ ////////////7P///3n///8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////j///////////////////////////////6v///6L///9N////BwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Ff//
+ /9L/////////////////////+/v7/+zs7P/V1dX/tra2/7e3t//Ly8v/6+vr////////////////////
+ //D///+f////Rf///wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8O////cv///+H//////////+/v
+ 7/+UlJT/Nzc3/yoqKv97e3v/3t7e////////////////6////3v///8OAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////X///
+ /5X///+O////aP///y7///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9y///////////9/f3/9/f3/+3t7f/j4+P/4+Pj/+rq
+ 6v/5+fn/////////////////////8P///6P///9O////CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8Z////iv////D//////////+Pj4/+Ghob/MjIy/zw8PP+VlZX/7e3t////////////////5P//
+ /3P///8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /27//////v7+//z8/P/6+vr//Pz8///////////////////////////g////lP///0f///8GAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8n////nP////j//////////9XV1f96enr/NjY2/1tb
+ W/+zs7P/+vr6////////////////0f///1////8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////K/////z/////////////////////////8P//
+ /7T///9x////K////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///81////rP//
+ //3//////v7+/9DQ0P94eHj/RkZG/39/f//T09P////////////////9////tP///0T///8BAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////VP///7b///+i////bP///zL///8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8W////uf////7//////f39/9ra2v+UlJT/d3d3/6qqqv/t7e3/////////
+ ///////x////kv///ycAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4///////v7+//Dw
+ 8P/IyMj/ubm5/9bW1v/8/Pz////////////////Z////bv///w4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////o//////7+/v/7+/v//T09P////////////////z///+z////Rv//
+ /wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9i////////
+ //////////////////D///+P////IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wb///+l////8P///8X///9q////DQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////AAAB////////////////8AAAAA///////////////4A
+ AAAAA//////////////4AAAAAAB/////////////wAAAAAAAP////////////wAAAAAAAA//////////
+ //4AAAAAAAAA///////////8AAAAAAAAAB//////////8AAAAAAAAAAH/////////+AAAAAAAAAAAP//
+ ///////AAAAAAAAAAAA/////////gAAAAAAAAAAAD////////4AAAAAAAAAAAAP///////8AAAAAAAAA
+ AAAA///////+AAAAAAAAAAAAAH///////AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAB//////4AAAA
+ AAAAAAAAAAH/////+AAAAAAAAAAAAAAAf/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAAf////
+ 8AAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAAP////gAAAAAAAAAAAAAAAB////4AAAAAAAAAAAAAAA
+ AP///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAA
+ AAAAAAAf///AAAAAAAAAAAAAAAAAH///wAAAAAAAAAAAAAAAAA///8AAAAAAAAAAAAAAAAAH///AAAAA
+ AAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///
+ wAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf4AAAAAAAAAAAAAAAAA
+ AAH8AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAA
+ AAAAAAAA/AAIAAAAAAAAAAAAAAAAAP/H+AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAA///8AAAA
+ AAAAAAAAAAAAAf///gAAAAAAAAAAAAAAAAH///8AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAf//
+ /4AAAAAAAAAAAAAAAAH////AAAAAAAAAAAAAAAAB////4AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAA
+ AAP////4AAAAAAAAAAAAAAAD////8AAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAAf///wAAAAAAAAA
+ AAAAAAAH///wAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAA//+AAAYAAAAAAAAAAAAAAP/8AAA/AA
+ AAAAAAAAAAAAH/4AAA/8AAAAAAAAAAAAAD/gAAB//gAAAAAAAAAAAAB/AAAD//+AAAAAAAAAAAAAfwAA
+ H///wAAAAAAAAAAAAP8AAP////AAAAAAAAAAAAP/AA/////gAAAAAAAAAAAH/wB/////gAAAAAAAAAAA
+ D/+H/////gAAAAAAAAAAAB////////gAAAAAAAAAAAA////////AABwAAAAAAAAAf///////AAB/AAAA
+ AAAAAf///////AAB/8AAAAAAAAP//////+AAB//wAAAAAAAP//////+AAB//8AAAAAAAf//////8AAB/
+ /8AAAAAAA///////8AAD//+AA8AAAD///////4AAD//+AAf8AAH///////4AAH//+AAf+AAD///////g
+ AAH//8AAP/gAD///////AAAP//8AAP/4AH//////8AAAP//8AAP/+AH//////+AAAf//8AAP//gP////
+ ///gAA///8AAP///////////4AB///8AAP///////////+AD///8AAP////////////wP///8AAf////
+ //////////////AAf//////////////////wAf//////////////////8A////////////////////A/
+ ///////////////////9////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////KAAAAEAAAACAAAAAAQAgAAAA
+ AAAAQAAAww4AAMMOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wz///9F////ef///6D///+6////yv///9H////R////0P///8X///+3////ov//
+ /4j///9m////Pf///w0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8H////Wf///7f7+/v5zc3N/52dnf95eXn/YGBg/1BQUP9ISEj/RkZG/0lJ
+ Sf9SUlL/YGBg/3Jycv+Li4v/q6ur/9HR0f/5+fn8////zf///4b///8v////AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xL///+H/v7+7MbGxv9ra2v/IiIi/xEREf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8RERH/Ghoa/09PT/+ZmZn/6urq////
+ /7n///8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///0/9/f3qp6en/zY2Nv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xsbG/+AgID/8PDw/P///8X///+S////RP///wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af///5Dk5OT/TExM/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/29vb/+FhYX/hISE/9XV1f/////h////eP//
+ /xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af//
+ /539/f3/JSUl/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+jo6P/IyMj/xAQ
+ EP8QEBD/RUVF/66urv/8/Pzx////g////xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///3TU1NT/oqKi/yUlJf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8SEhL/tbW1/xAQEP8QEBD/EBAQ/xAQEP8QEBD/NDQ0/6mpqf/8/Pzw////fP///w0AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///zLx8fH6MTEx/35+fv8+Pj7/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/R0dH/4GBgf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ODg4/7Ky
+ sv/+/v7p////cf///wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL////Lb29v/xAQEP9dXV3/YGBg/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/5iYmP8xMTH/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/QUFB/729vf/////h////YP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9S09PT/xIS
+ Ev8QEBD/MzMz/4uLi/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xcXF/+zs7P/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/TU1N/87Ozv/////N////NAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////vmVlZf8QEBD/EBAQ/xEREf+urq7/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP9oaGj/ZGRk/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8SEhL/bm5u//Hx8fr///93////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////EvX19fwZGRn/EBAQ/xAQEP8QEBD/p6en/xoaGv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8RERH/t7e3/xUVFf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8wMDD/09PT/////53///8DAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///0u/v7//EBAQ/xAQEP8QEBD/EBAQ/2dn
+ Z/9dXV3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/XFxc/3R0dP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/x4eHv/IyMj/////mP//
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///91l5eX/xAQ
+ EP8QEBD/EBAQ/xAQEP8eHh7/qKio/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/FRUV/7e3t/8WFhb/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/Hx8f/9nZ2f////9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////hoaGhv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/5ycnP8sLCz/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/319
+ ff9ZWVn/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP83Nzf/9vb29v///ycAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4eGhob/EBAQ/xAQEP8QEBD/EBAQ/xAQEP83Nzf/lZWV/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/zY2Nv+lpaX/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4KCgv////+2////AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///+Sfn5+/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/6CgoP8zMzP/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xkZGf+0tLT/IiIi/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8YGBj/5eXl/////zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////i4KC
+ gv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9SUlL/vb29/6Wlpf9GRkb/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xISEv+ioqL/Q0ND/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/39/f/////+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///2uhoaH/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/YGBg/z4+Pv8RERH/f39//0ZG
+ Rv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf+QkJD/XFxc/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8oKCj//f398v///wYAAAAAAAAAAAAA
+ AAD///8G////Hv///xv///8m////Qf///2z///+73d3d/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/ygo
+ KP9SUlL/EBAQ/xYWFv+rq6v/ExMT/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xMT
+ E/+Tk5P/YmJi/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/9HR
+ 0f////85AAAAAAAAAAD///8B////2/n5+f/x8fH/5ubm/8/Pz/+qqqr/fHx8/729vf9CQkL/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/dnZ2/xAQEP8QEBD/U1NT/3p6ev8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/yEhIf+np6f/VFRU/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP+jo6P/////aAAAAAAAAAAA////Av////Hm5ub/v7+//6+vr/+1tbX/0NDQ//b2
+ 9vz////jqamp/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/19fX/88PDz/EBAQ/xAQEP+VlZX/Xl5e/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1RUVP+vr6//MzMz/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/i4uL/////4EAAAAAAAAAAAAAAAD///81////av//
+ /3b///90////Yf///z7///8O////Ffr6+vM6Ojr/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8RERH/jIyM/xUV
+ Ff8QEBD/FRUV/5WVlf+IiIj/HR0d/xAQEP8QEBD/PT09/6ampv95eXn/FBQU/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4eHh/////+FAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///99w8PD/xUVFf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/ykpKf+FhYX/EBAQ/xAQEP8QEBD/TExM/6Wlpf+ioqL/nZ2d/7Ozs/8hISH/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP+VlZX/////dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP//
+ /9iSkpL/EBAQ/xEREf8QEBD/EBAQ/xAQEP8QEBD/RkZG/3p6ev8QEBD/EBAQ/xAQEP8QEBD/ERER/xIS
+ Ev+AgID/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/r6+v/////1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8z/f39+H5+fv8RERH/EBAQ/xAQEP8cHBz/W1tb/5mZmf+zs7P/dHR0/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/dHR0/xEREf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/9LS0v////82AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1r8/Pz9rKys/6Ghof+wsLD/nJyc/1lZ
+ Wf8dHR3/EBAQ/0hISP+QkJD/JiYm/xAQEP8nJyf/a2tr/yEhIf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xgYGP/5+fn6////CgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Wv7+
+ /vmcnJz/ExMT/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ISEh/29vb/+CgoL/Z2dn/xUVFf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP9QUFD/////yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8C////Q////6X6+vr48/Pz/6qqqv8aGhr/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/o6Oj/////3kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///yr///+F////4d/f3/+fn5//lZWV/9vb2//+/v7/zc3N/zExMf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/KSkp//b29vn///8bAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wD///8m////ev///9Du7u7/srKy/5SUlP+ysrL/8fHx/v///8H///9e////Tf//
+ /+rs7Oz/YWFh/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ERER/7Gxsf////+OAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8E////PP///4b////V8PDw/76+vv+goKD/rKys/+Tk5P/////e////gv//
+ /yQAAAAAAAAAAAAAAAD///8Y////r/z8/P+mpqb/ISEh/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4iI
+ iP/////S////CwAAAAAAAAAA////KP///3L///+w////7/Dw8P/Pz8//t7e3/7q6uv/l5eX/////5f//
+ /5L///86////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wH///9s////9eXl5f9fX1//EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/ERER/46Ojv/////c////HAAAAAAAAAAAAAAAAP////L7+/v/8vLy/+bm5v/m5ub/+Pj4/v//
+ /9L///+H////Of///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /yD///+k/v7+/729vf8/Pz//EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/FBQU/6Ojo//////P////GQAAAAAAAAAAAAAAAAAAAAD////S/////v//
+ /9z///+f////X////xsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wT///9h////3MfHx/+rq6v//Pz8/7S0tP9BQUH/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/HR0d/7m5uf////+/////DwAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////B////xH///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Cf///2r////eysrK/1hYWP9jY2P/2tra/////7f///9+/v7+9szM
+ zP9zc3P/JSUl/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/QkJC/9ra2v////+f////BwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8X////gP7+/uq+vr7/VVVV/2ZmZv/V1dX/////0f//
+ /1D///8AAAAAAP///yH///+a////+Pj4+P++vr7/dnZ2/zQ0NP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf9ERET/qamp//z8
+ /O7///9h////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///zL///+e+Pj496enp/9LS0v/eHh4/9/f
+ 3//////L////Uv///wEAAAAAAAAAAAAAAAAAAAAAAAAAAP///xf///96////6P7+/v/7+/v/4ODg/6Wl
+ pf9tbW3/Ojo6/xQUFP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8UFBT/TExM/56e
+ nv/i4uL/////3f///37///8TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8J////Xv///8bm5ub/iIiI/0xM
+ TP+Xl5f/8PDw/f///7T///9C////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8P////iPX1
+ 9fiFhYX/bGxs//r6+v7///+t////0v////n29vb/0NDQ/7W1tf+pqan/oKCg/5ycnP+Xl5f/mZmZ/6Oj
+ o//FxcX/8vLy/v///9P///98////LP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///zH///+T/f397sPD
+ w/9ra2v/ampq/8DAwP/+/v7t////jv///yUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wr///9z/f3966qqqv9OTk7/s7Oz/////9////9KAAAAAAAAAAD///8E////IP///2H///+r////+fr6
+ +v+6urr/m5ub//Hx8f/////z////d////xYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8h////dv//
+ /9Dq6ur/np6e/3Nzc/+hoaH/7u7u/v///8D///9c////CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Df///3X+/v7oubm5/1RUVP+Wlpb/9/f39f///4L///8KAAAAAAAAAAAAAAAAAAAAAP//
+ /z7+/v7+6+vr/7a2tv+VlZX/xcXF//z8/PH///+O////GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8K////Q///
+ /4f////Q9/f3/8/Pz/+oqKj/qamp/+Li4v/////d////gf///yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8Y////hf39/e62trb/XFxc/5OTk//z8/P6////m////xwAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///9Z/f39//Ly8v/7+/v6////u////2H///8MAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8i////9Pz8/P/y8vL/5OTk/9nZ2f/t7e3/////5P///5H///85////AQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yn///+c+Pj496qqqv9nZ2f/pKSk//f39/j///+a////IgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af///z3///8+////DAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////Jv////79/f3//v7++////8n///+D////N////wIAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////OP///7Dz8/P9pKSk/4CAgP/Dw8P//v7+7P//
+ /4X///8ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9C////RP///w4AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////l/v7+//W1tb/t7e3/+Xl
+ 5f/////R////ZP///woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /8H6+vr//Pz8+////6v///8+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8r////bf///x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////
+ //////////////////////////////////////////////////////gAB///////wAAAf/////8AAAA/
+ /////gAAAAP////4AAAAAP////AAAAAAP///8AAAAAAP///gAAAAAAP//8AAAAAAAP//wAAAAAAAf//A
+ AAAAAAAf/4AAAAAAAA//gAAAAAAAB/+AAAAAAAAH/4AAAAAAAAP/gAAAAAAAAf+AAAAAAAAB/4AAAAAA
+ AAH/gAAAAAAAAOAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAOAAAAAAAAAA/+AAAAAAAAD/4AAAAAAAAP/w
+ AAAAAAAA//gAAAAAAAD//AAAAAAAAf/wAAAAAAAB/8AAAAAAAAH8AAAAAAAAA+ABwAAAAAADAAfgAAAA
+ AAcAP/gAAAAADwP/8AAAAAAfH//AAAAAAD///wAgAAAAf//4APgAAAH//+AD+AAAB///AB/gGAB///gA
+ f4A8Af//wAP+APwH//+AD/gD/D///4B/4A//////x//AP////////8D/////////x///////////////
+ /////////////////////////////////////////////////////////////////////////////ygA
+ AAAwAAAAYAAAAAEAIAAAAAAAACQAAMMOAADDDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wH///8J////E////x3///8d////Gf///w////8I////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /wv///9U////nOvr69POzs7yvLy8/rKysv+wsLD/tbW1/8DAwPzQ0NDu5ubm2Pv7+7L///9/////QP//
+ /wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8d////j9zc3OqGhob/Pj4+/xkZGf8SEhL/ERER/xEREf8RERH/ERER/xEREf8RERH/FhYW/ycn
+ J/9WVlb/lpaW/+Li4ub///94////CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Av///2TR0dHzVVVV/xISEv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xYWFv91dXX/7Ozs6vj4+LX///9n////EgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8D////k5+fn/4YGBj/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8TExP/ioqK/ygoKP90dHT/0NDQ8P//
+ /5D///8cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///99s7Oz/1hYWP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP81NTX/aGho/xAQ
+ EP8QEBD/ExMT/1ZWVv/Ly8v0////j////xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///zq5ubn8KSkp/25ubv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP94eHj/JiYm/xAQEP8QEBD/EBAQ/xAQEP8RERH/W1tb/9HR0fP///+D////EgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////A/Pz88osLCz/ExMT/4OD
+ g/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP+Pj4//EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xQUFP9nZ2f/2tra6f//
+ /2////8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////QpmZ
+ mf4QEBD/EBAQ/4iIiP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0VFRf9cXFz/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/GRkZ/4CAgP/19fXH////IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////k0JCQv8QEBD/EBAQ/3p6ev8gICD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/4+Pj/8TExP/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP89PT3/3t7e6P///zEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8A7u7uyRkZGf8QEBD/EBAQ/zQ0NP9oaGj/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/QUFB/2RkZP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Ly8v/+Dg4Ob///8dAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8B3d3d4REREf8QEBD/EBAQ/xAQEP+NjY3/ERER/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8TExP/kZGR/xQU
+ FP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0ND
+ Q//4+Pi9////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8D2tra5RAQEP8QEBD/EBAQ/xAQ
+ EP9VVVX/TExM/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP9ubm7/Pj4+/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP+Pj4//////WgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E19fX5xAQ
+ EP8QEBD/EBAQ/xAQEP8SEhL/oKCg/2pqav8YGBj/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/0NDQ/9vb2//EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8iIiL/7e3t0P///wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8B5ubm1BUVFf8QEBD/EBAQ/xAQEP8QEBD/c3Nz/yYmJv98fHz/FxcX/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/NDQ0/4SEhP8RERH/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/o6Oj/v///zAAAAAAAAAAAP//
+ /yT///9V////V////2z+/v6Y8fHx7T09Pf8QEBD/EBAQ/xAQEP8QEBD/VFRU/xEREf8vLy//bW1t/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP89PT3/hISE/xMTE/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Xl5e////
+ /3EAAAAAAAAAAP///7rh4eH/ubm5/6ampv+cnJz/srKy/5aWlv8QEBD/EBAQ/xAQEP8QEBD/Nzc3/z09
+ Pf8QEBD/b29v/z4+Pv8QEBD/EBAQ/xAQEP8QEBD/EhIS/2RkZP9ycnL/EhIS/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/ODg4/////5kAAAAAAAAAAP///0f///+R////mf///4z///9o////M/Dw8NIoKCj/EBAQ/xAQ
+ EP8QEBD/EBAQ/25ubv8TExP/FBQU/4WFhf9ZWVn/ERER/xAQEP9AQED/jIyM/0JCQv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/Li4u//7+/qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /0uvr6//EhIS/xAQEP8QEBD/EBAQ/x4eHv9ubm7/ERER/xAQEP9NTU3/gICA/3t7e/+MjIz/EhIS/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Ozs7/////5UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wD+/v6mhoaG/xEREf8QEBD/EBAQ/xcXF/9tbW3/e3t7/xEREf8QEBD/EBAQ/xAQ
+ EP9dXV3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/WFhY/////3cAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8P/Pz8zpqamv9/f3//h4eH/3h4eP9HR0f/Ojo6/3R0
+ dP8cHBz/FBQU/0xMTP8sLCz/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/goKC////
+ /0sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP7+/tuXl5f/FBQU/xAQ
+ EP8QEBD/EBAQ/xkZGf9ZWVn/YmJi/x0dHf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/wMDA+P///xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///x7///937+/v1Ly8
+ vP/k5OT/r6+v/x8fH/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8yMjL/+Pj4tv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xX///9m+/v7vczM
+ zPmvr6//urq6/+zs7Nz///97////udbW1v89PT3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+wsLD9////QAAAAAAAAAAA////Bf///y////92+fn5wtfX
+ 1/y7u7v/ubm5/+Hh4ez///+b////Pv///wIAAAAA////Av///2729vb2gICA/xYWFv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ERER/4iIiP////+J////AAAAAAD///+g+/v75+/v
+ 7//f39//1NTU/+fn5+j+/v6g////Tv///woAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8x/v7+wc/P
+ z/5ISEj/ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8TExP/k5OT//7+/pT///8CAAAAAAAA
+ AAD////m/Pz89f39/b////9+////Of///wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8N////e9/f3/nNzc3/tra2/0RERP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xcXF/+pqan+////fv//
+ /wIAAAAAAAAAAAAAAAD///8J////BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8A////GP///4Db29vtfHx8/4CAgP/n5+ff////Yf///7zNzc3+dnZ2/ywsLP8RERH/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Pz8//83N
+ zfT///9e////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////AP///yz+/v6ZzMzM83h4eP+IiIj/4+Pj4v///27///8KAAAAAP///wH///9E////s/j4
+ +PvJycn/iIiI/0xMTP8dHR3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/Jycn/2pq
+ av+5ubn6+vr6sf///ykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wX///9U+fn5vLGxsfxzc3P/np6e/+7u7tT///9i////CQAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////M/j4+NKWlpb/zs7O/////9D09PTj0dHR/qWlpf+Kior/f39//3l5ef91dXX/enp6/5OT
+ k//Dw8P79vb2vv///2r///8f////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wH///8q////ieHh4eeZmZn/hISE/8LCwvf+/v6r////Q////wEAAAAAAAAAAAAA
+ AAAAAAAA////AP///yr7+/untbW1/XV1df/R0dHx////dP///wT///8A////Df///3L////N7u7u/66u
+ rv+/v7///f396v///23///8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wT///8w////evb29svKysr9p6en/7Kysv7s7OzS////df///xoAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wD///81+/v7qbu7u/p9fX3/urq6+v39/Z////8dAAAAAAAAAAAAAAAA////D/39
+ /fbg4OD/ycnJ/u/v79L///9w////EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////bv39/eb09PT+5OTk/9fX1//t7e3g////jP///zP///8CAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8B////Sfr6+ryysrL9ioqK/8HBwfv8/Pyk////K////wAAAAAAAAAAAAAA
+ AAAAAAAA////Af///13///9n////K////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////h/7+/vD+/v6+////ff///zP///8BAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////BP///1r29vbRvb29/6Ghof/a2trt////jv///yEAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av///wcAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Uvr6+v/g4OD/8/Pz0////2v///8PAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////F////4////9F////AwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
+ AAD//4A///8AAP/8AAP//wAA//AAAP//AAD/wAAAH/8AAP+AAAAH/wAA/4AAAAH/AAD/AAAAAH8AAP4A
+ AAAAHwAA/gAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAABAAD8AAAAAAEAAPwAAAAAAAAA/AAAAAAA
+ AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAD/AAAAAAAAAP8AAAAAAAAA/4AAAAAAAAD/wAAAAAAAAP4A
+ AAAAAAAA+AAAAAABAACACAAAAAEAAAB8AAAAAwAAA/4AAAAHAAA/8AAAAA8AAP/AEAAAPwAA/wB4AAB/
+ AAD4AeAAB/8AAMAPgHAf/wAAgD4A8H//AACB+Af///8AAJ/4H////wAA//h/////AAD///////8AAP//
+ /////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQ
+ AADDDgAAww4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////A////y////9W////Z////2j///9f////Sv//
+ /yn///8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Jubm5pOamprrY2Nj/z4+Pv8uLi7/LCws/zU1
+ Nf9HR0f/Z2dn/5KSkvLS0tKt////OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////APDw8Hd9fX36Ghoa/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xMTE/97e3v+tra21evr64r///8iAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq6uqEenp6/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/15eXv8VFRX/HR0d/3p6evvc3Nyh////IgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////QGhoaP5eXl7/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ZGRk/xAQEP8QEBD/EBAQ/xoa
+ Gv99fX364+Pjlv///xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+vr7EEBAQ/19f
+ X/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/ygoKP9OTk7/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8fHx//jo6O8/b29mn///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////F3d3
+ d/4QEBD/S0tL/yYmJv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ZmZm/xER
+ Ef8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/TExM/+bm5o7///8AAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///8/T09P/xAQEP8TExP/YGBg/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/y0t
+ Lf9OTk7/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/UFBQ//n5+WIAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///0ZJSUn/EBAQ/xAQEP9fX1//GRkZ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8SEhL/bGxs/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/mJiY7f//
+ /w4AAAAAAAAAAAAAAAAAAAAA////PlFRUf8QEBD/EBAQ/zU1Nf9sbGz/R0dH/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/2hoaP8dHR3/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8yMjL//v7+ZwAAAAD///849vb2juHh4Zm7u7vJe3t7/xAQEP8QEBD/FhYW/zo6Ov9JSUn/Kysr/xAQ
+ EP8QEBD/EBAQ/xQUFP9oaGj/JCQk/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP/Ly8uoAAAAAP///0rg4OC3ycnJtebm5pLg4OC7Gxsb/xAQEP8QEBD/Tk5O/xER
+ Ef9nZ2f/MTEx/xAQEP9BQUH/ZGRk/xkZGf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/7GxscEAAAAAAAAAAAAAAAAAAAAAAAAAAP///yGWlpb1EBAQ/xAQ
+ EP8WFhb/VVVV/xAQEP9ERET/WFhY/1lZWf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/vb29tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+
+ /mGOjo7/XFxc/1tbW/9eXl7/V1dX/xUVFf8sLCz/LS0t/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xISEv/o6OiOAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Ef39/byTk5P/ExMT/xAQEP8UFBT/RERE/ycnJ/8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/RUVF/////1AAAAAAAAAAAAAA
+ AAD///8K////Utzc3KvHx8f3xcXF7/Hx8aq5ubn6JCQk/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP+qqqrh////B///
+ /yb///9p6OjosNbW1vTPz8/42NjYsv///1j///8JAAAAAP///zLk5OTYXV1d/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/hYWF9v//
+ /z4AAAAA/v7+8PT09N7y8vKe////Vv///w8AAAAAAAAAAAAAAAAAAAAAAAAAAP///yHv7+/fqamp/0VF
+ Rf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ExMT/5WV
+ le////8+AAAAAAAAAAD///8G////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///ybj4+OXnp6e96Cg
+ oPPt7e2C////ZcrKyuR7e3v/MjIy/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/0ND
+ Q/+6urrT////KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av///0nMzMyzoKCg/aam
+ puzv7++D////FQAAAAAAAAAA////Cvz8/Li6urr/3d3d6qWlpfJ6enr/YGBg/1dXV/9UVFT/YmJi/4+P
+ j/TQ0NCp////V////wUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////JvT09IC7u7vgr6+v/7u7
+ u8f+/v5h////CQAAAAAAAAAA////A/7+/lq3t7fXoKCg/d/f35v///8T////Af7+/m/l5eXpw8PD/97e
+ 3t////9h////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8I/v7+kPPz89Xj4+P/zc3N3fHx
+ 8YX///8pAAAAAAAAAAAAAAAA////Cvv7+2u6urrcq6ur/dPT067///8uAAAAAAAAAAAAAAAA/v7+Zvj4
+ +JH///9H////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wr+/v6h////dP//
+ /y7///8AAAAAAAAAAAAAAAAAAAAAAP39/XTd3d3rv7+/9OXl5Zb///8oAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39lv39/XH///8QAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////wB///wAH//wA
+ AP/8AAA/+AAAD/gAAAPwAAAB8AAAAfAAAADwAAAAgAAAAIAAAAD4AAAA/AAAAPwAAADgAAAAAIAAAQfA
+ AAM/AAAH+AwAD8AwAH8BwOH/B4P///+P////////////////////////KAAAABgAAAAwAAAAAQAgAAAA
+ AAAACQAAww4AAMMOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Y8/PzXMjIyIO5ubmOv7+/idvb
+ 23T9/f1M////EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////Ga6urqheXl76Hh4e/xEREf8QEBD/EBAQ/xISEv8nJyf/ZWVl+b+/v5r6+vpH////BQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8goKCg5BISEv8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/05OTv8vLy//f39/4ODg4Gj///8GAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wGenp7AS0tL/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/09P
+ T/8QEBD/EBAQ/yMjI/+Dg4Pd5+fnW////wEAAAAAAAAAAAAAAAAAAAAAAAAAAP///zU/Pz//SEhI/xQU
+ FP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/PT09/yQkJP8QEBD/EBAQ/xAQEP8QEBD/Li4u/62t
+ rbT///8MAAAAAAAAAAAAAAAAAAAAAOXl5WsSEhL/GRkZ/0VFRf8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8RERH/U1NT/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xgYGP+vr6+w////AQAAAAAAAAAAAAAAANnZ
+ 2XUQEBD/EBAQ/1VVVf8pKSn/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9MTEz/Gxsb/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP80NDT/8/PzSwAAAAD///8e////MfHx8ZYcHBz/EBAQ/zo6Ov85OTn/KSkp/xAQ
+ EP8QEBD/EBAQ/0FBQf8uLi7/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/n5+fqAAA
+ AADz8/Okzc3Nybu7u6Zqamr0EBAQ/xoaGv8zMzP/UlJS/yMjI/8cHBz/UVFR/ykpKf8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/gYGBzwAAAAAAAAAAAAAAAAAAAADV1dV8Li4u/xAQ
+ EP9ERET/Kysr/zs7O/9dXV3/ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/iIiIwgAAAAAAAAAAAAAAAAAAAAD///8E2dnZsGxsbP84ODj/NjY2/zs7O/8pKSn/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/sLCwlQAAAAAAAAAA////Bfz8
+ /EnMzMyj0tLS693d3cxRUVH/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+ EP8QEBD/EBAQ/xAQEP9AQED++vr6Pf39/WPt7e2p4eHh6dDQ0Lvt7e1k////EP///wH5+fllkpKS7x4e
+ Hv8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/zIyMv/Hx8eI////AP39
+ /Xr+/v5P////EAAAAAAAAAAAAAAAAP///wbo6Oheq6ur3NPT09CAgIDuMDAw/xAQEP8QEBD/EBAQ/xAQ
+ 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
+ AAD//wAA//8AAA==
+</value>
+ </data>
</root> \ No newline at end of file
diff --git a/grapher/Icon/mouse.ico b/grapher/Icon/mouse.ico
new file mode 100644
index 0000000..493036a
--- /dev/null
+++ b/grapher/Icon/mouse.ico
Binary files differ
diff --git a/grapher/Layouts/LinearLayout.cs b/grapher/Layouts/LinearLayout.cs
index fded8c7..8afdc79 100644
--- a/grapher/Layouts/LinearLayout.cs
+++ b/grapher/Layouts/LinearLayout.cs
@@ -12,7 +12,7 @@ namespace grapher.Layouts
AccelLayout = new OptionLayout(true, Acceleration);
CapLayout = new OptionLayout(true, Cap);
- WeightLayout = new OptionLayout(false, string.Empty);
+ WeightLayout = new OptionLayout(true, Weight);
OffsetLayout = new OptionLayout(true, Offset);
LimExpLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
diff --git a/grapher/Layouts/LogarithmLayout.cs b/grapher/Layouts/LogarithmLayout.cs
new file mode 100644
index 0000000..5b25d60
--- /dev/null
+++ b/grapher/Layouts/LogarithmLayout.cs
@@ -0,0 +1,21 @@
+using grapher.Models.Serialized;
+
+namespace grapher.Layouts
+{
+ public class LogarithmLayout : LayoutBase
+ {
+ public LogarithmLayout ()
+ : base()
+ {
+ Name = "Logarithm";
+ Index = (int)AccelMode.logarithm;
+
+ AccelLayout = new OptionLayout(true, Scale);
+ CapLayout = new OptionLayout(true, Cap);
+ WeightLayout = new OptionLayout(true, Weight);
+ OffsetLayout = new OptionLayout(true, Offset);
+ LimExpLayout = new OptionLayout(false, string.Empty);
+ MidpointLayout = new OptionLayout(false, string.Empty);
+ }
+ }
+}
diff --git a/grapher/Layouts/NaturalGainLayout.cs b/grapher/Layouts/NaturalGainLayout.cs
index b982b91..dd2cc05 100644
--- a/grapher/Layouts/NaturalGainLayout.cs
+++ b/grapher/Layouts/NaturalGainLayout.cs
@@ -12,7 +12,7 @@ namespace grapher.Layouts
AccelLayout = new OptionLayout(true, Acceleration);
CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
+ WeightLayout = new OptionLayout(true, Weight);
OffsetLayout = new OptionLayout(true, Offset);
LimExpLayout = new OptionLayout(true, Limit);
MidpointLayout = new OptionLayout(false, string.Empty);
diff --git a/grapher/Layouts/NaturalLayout.cs b/grapher/Layouts/NaturalLayout.cs
index aa5c22c..faa4730 100644
--- a/grapher/Layouts/NaturalLayout.cs
+++ b/grapher/Layouts/NaturalLayout.cs
@@ -12,7 +12,7 @@ namespace grapher.Layouts
AccelLayout = new OptionLayout(true, Acceleration);
CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
+ WeightLayout = new OptionLayout(true, Weight);
OffsetLayout = new OptionLayout(true, Offset);
LimExpLayout = new OptionLayout(true, Limit);
MidpointLayout = new OptionLayout(false, string.Empty);
diff --git a/grapher/Layouts/PowerLayout.cs b/grapher/Layouts/PowerLayout.cs
index e0dcaf8..2004f23 100644
--- a/grapher/Layouts/PowerLayout.cs
+++ b/grapher/Layouts/PowerLayout.cs
@@ -14,7 +14,7 @@ namespace grapher.Layouts
CapLayout = new OptionLayout(true, Cap);
WeightLayout = new OptionLayout(true, Weight);
OffsetLayout = new OptionLayout(true, Offset);
- LimExpLayout = new OptionLayout(true, Limit);
+ LimExpLayout = new OptionLayout(true, Exponent);
MidpointLayout = new OptionLayout(false, string.Empty);
}
}
diff --git a/grapher/Layouts/SigmoidGainLayout.cs b/grapher/Layouts/SigmoidGainLayout.cs
index 183e31f..c807439 100644
--- a/grapher/Layouts/SigmoidGainLayout.cs
+++ b/grapher/Layouts/SigmoidGainLayout.cs
@@ -12,8 +12,8 @@ namespace grapher.Layouts
AccelLayout = new OptionLayout(true, Acceleration);
CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(true, Offset);
+ WeightLayout = new OptionLayout(true, Weight);
+ OffsetLayout = new OptionLayout(false, string.Empty);
LimExpLayout = new OptionLayout(true, Limit);
MidpointLayout = new OptionLayout(true, Midpoint);
}
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index 3acb943..95d0c25 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -96,14 +96,13 @@ namespace grapher
public void RefreshOnRead()
{
- UpdateGraph();
UpdateShownActiveValues();
+ UpdateGraph();
}
public void UpdateGraph()
{
- AccelCalculator.Calculate(
- AccelCharts.AccelData,
+ AccelCharts.Calculate(
Settings.ActiveAccel,
Settings.RawAccelSettings.AccelerationSettings);
AccelCharts.Bind();
@@ -128,7 +127,7 @@ namespace grapher
private void SetupWriteButton()
{
- WriteButton.Top = AccelCharts.SensitivityChart.Top + AccelCharts.SensitivityChart.Height - Constants.WriteButtonVerticalOffset;
+ WriteButton.Top = AccelCharts.Top + AccelCharts.TopChartHeight - Constants.WriteButtonVerticalOffset;
SetWriteButtonDefault();
}
diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs
index 42a7b83..eb30864 100644
--- a/grapher/Models/AccelGUIFactory.cs
+++ b/grapher/Models/AccelGUIFactory.cs
@@ -89,14 +89,19 @@ namespace grapher.Models
Label optionSetYTitle,
Label mouseLabel)
{
+ var accelCalculator = new AccelCalculator(
+ new Field(dpiTextBox.TextBox, form, Constants.DefaultDPI),
+ new Field(pollRateTextBox.TextBox, form, Constants.DefaultPollRate));
+
var accelCharts = new AccelCharts(
form,
- new ChartXY(accelerationChart, accelerationChartY),
- new ChartXY(velocityChart, velocityChartY),
- new ChartXY(gainChart, gainChartY),
+ new ChartXY(accelerationChart, accelerationChartY, Constants.SensitivityChartTitle),
+ new ChartXY(velocityChart, velocityChartY, Constants.VelocityChartTitle),
+ new ChartXY(gainChart, gainChartY, Constants.GainChartTitle),
showVelocityGainToolStripMenuItem,
showLastMouseMoveMenuItem,
- writeButton);
+ writeButton,
+ accelCalculator);
var sensitivity = new OptionXY(
sensitivityBoxX,
@@ -212,7 +217,7 @@ namespace grapher.Models
var midpointX = new Option(
new Field(midpointBoxX, form, 0),
constantThreeLabelX,
- new ActiveValueLabel(midpointActiveLabelX, activeValueTitleY),
+ new ActiveValueLabel(midpointActiveLabelX, activeValueTitleX),
0);
var midpointY = new Option(
@@ -276,10 +281,6 @@ namespace grapher.Models
lockXYLabel,
accelCharts);
- var accelCalculator = new AccelCalculator(
- new Field(dpiTextBox.TextBox, form, Constants.DefaultDPI),
- new Field(pollRateTextBox.TextBox, form, Constants.DefaultPollRate));
-
var settings = new SettingsManager(
activeAccel,
accelCalculator.DPI,
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs
index 092a7aa..a140c90 100644
--- a/grapher/Models/Calculations/AccelCalculator.cs
+++ b/grapher/Models/Calculations/AccelCalculator.cs
@@ -46,31 +46,25 @@ namespace grapher.Models.Calculations
private double XYMaxVelocity { get; set; }
private int Increment { get; set; }
+
+ private double MeasurementTime { get; set; }
- #endregion Fields
-
- #region Methods
+ private (double, double) RotationVector { get; set; }
- public void Calculate(AccelData data, ManagedAccel accel, DriverSettings settings)
- {
- ScaleByMouseSettings();
+ private (double, double) Sensitivity { get; set; }
- data.Clear();
+ #endregion Fields
- Calculate(data.Combined, accel, settings.sensitivity.x, MagnitudesCombined);
- Calculate(data.X, accel, settings.sensitivity.x, MagnitudesX);
- Calculate(data.Y, accel, settings.sensitivity.y, MagnitudesY);
- }
+ #region Methods
- public static void Calculate(AccelChartData data, ManagedAccel accel, double starter, ICollection<MagnitudeData> magnitudeData)
+ public void Calculate(AccelChartData data, ManagedAccel accel, double starter, ICollection<MagnitudeData> magnitudeData)
{
double lastInputMagnitude = 0;
double lastOutputMagnitude = 0;
foreach (var magnitudeDatum in magnitudeData)
{
- var output = accel.Accelerate(magnitudeDatum.x, magnitudeDatum.y, 1);
-
+ var output = accel.Accelerate(magnitudeDatum.x, magnitudeDatum.y, MeasurementTime);
var outMagnitude = Magnitude(output.Item1, output.Item2);
var ratio = magnitudeDatum.magnitude > 0 ? outMagnitude / magnitudeDatum.magnitude : starter;
@@ -100,6 +94,77 @@ namespace grapher.Models.Calculations
data.OrderedVelocityPointsList.AddRange(data.VelocityPoints.Values.ToList());
}
+ public void CalculateCombinedDiffSens(AccelData data, ManagedAccel accel, DriverSettings settings, ICollection<MagnitudeData> magnitudeData)
+ {
+ double lastInputMagnitude = 0;
+ double lastOutputMagnitudeX = 0;
+ double lastOutputMagnitudeY = 0;
+
+ Sensitivity = GetSens(ref settings);
+
+ foreach (var magnitudeDatum in magnitudeData)
+ {
+ var output = accel.Accelerate(magnitudeDatum.x, magnitudeDatum.y, MeasurementTime);
+ var outputWithoutSens = StripThisSens(output.Item1, output.Item2);
+ var magnitudeWithoutSens = Magnitude(outputWithoutSens.Item1, outputWithoutSens.Item2);
+
+ var ratio = magnitudeDatum.magnitude > 0 ? magnitudeWithoutSens / magnitudeDatum.magnitude : 1;
+
+ if (!data.Combined.VelocityPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.Combined.VelocityPoints.Add(magnitudeDatum.magnitude, magnitudeWithoutSens);
+ }
+
+ var xRatio = settings.sensitivity.x * ratio;
+ var yRatio = settings.sensitivity.y * ratio;
+
+ if (!data.X.AccelPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.X.AccelPoints.Add(magnitudeDatum.magnitude, xRatio);
+ }
+
+ if (!data.Y.AccelPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.Y.AccelPoints.Add(magnitudeDatum.magnitude, yRatio);
+ }
+
+ var xOut = xRatio * magnitudeDatum.magnitude;
+ var yOut = yRatio * magnitudeDatum.magnitude;
+
+ var inDiff = magnitudeDatum.magnitude - lastInputMagnitude;
+ var xOutDiff = xOut - lastOutputMagnitudeX;
+ var yOutDiff = yOut - lastOutputMagnitudeY;
+ var xSlope = inDiff > 0 ? xOutDiff / inDiff : settings.sensitivity.x;
+ var ySlope = inDiff > 0 ? yOutDiff / inDiff : settings.sensitivity.y;
+
+ if (!data.X.VelocityPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.X.VelocityPoints.Add(magnitudeDatum.magnitude, xOut);
+ }
+
+ if (!data.Y.VelocityPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.Y.VelocityPoints.Add(magnitudeDatum.magnitude, yOut);
+ }
+
+ if (!data.X.GainPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.X.GainPoints.Add(magnitudeDatum.magnitude, xSlope);
+ }
+
+ if (!data.Y.GainPoints.ContainsKey(magnitudeDatum.magnitude))
+ {
+ data.Y.GainPoints.Add(magnitudeDatum.magnitude, ySlope);
+ }
+
+ lastInputMagnitude = magnitudeDatum.magnitude;
+ lastOutputMagnitudeX = xOut;
+ lastOutputMagnitudeY = yOut;
+ }
+
+ data.Combined.OrderedVelocityPointsList.AddRange(data.Combined.VelocityPoints.Values.ToList());
+ }
+
public ReadOnlyCollection<MagnitudeData> GetMagnitudes()
{
var magnitudes = new List<MagnitudeData>();
@@ -172,11 +237,37 @@ namespace grapher.Models.Calculations
return Magnitude(x, y) / time;
}
+ public static bool ShouldStripSens(ref DriverSettings settings) =>
+ settings.sensitivity.x != settings.sensitivity.y;
+
+ public static bool ShouldStripRot(ref DriverSettings settings) =>
+ settings.rotation > 0;
+
+ public static (double, double) GetSens(ref DriverSettings settings) =>
+ (settings.sensitivity.x, settings.sensitivity.y);
+
+ public static (double, double) GetRotVector(ref DriverSettings settings) =>
+ (Math.Cos(settings.rotation), Math.Sin(settings.rotation));
+
+ public static (double, double) StripSens(double outputX, double outputY, double sensitivityX, double sensitivityY) =>
+ (outputX / sensitivityX, outputY / sensitivityY);
+
+ public (double, double) StripRot(double outputX, double outputY, double rotX, double rotY) =>
+ (outputX * rotX + outputY * rotY, outputX * rotY - outputY * rotX);
+
+ public (double, double) StripThisSens(double outputX, double outputY) =>
+ StripSens(outputX, outputY, Sensitivity.Item1, Sensitivity.Item2);
+
+ public (double, double) StripThisRot(double outputX, double outputY) =>
+ StripRot(outputX, outputY, RotationVector.Item1, RotationVector.Item2);
+
public void ScaleByMouseSettings()
{
var dpiPollFactor = DPI.Data / PollRate.Data;
CombinedMaxVelocity = dpiPollFactor * Constants.MaxMultiplier;
- Increment = (int)Math.Floor(CombinedMaxVelocity / Constants.Resolution);
+ var ratio = CombinedMaxVelocity / Constants.Resolution;
+ Increment = ratio > 1 ? (int) Math.Floor(ratio) : 1;
+ MeasurementTime = Increment == 1 ? 1 / ratio : 1;
XYMaxVelocity = CombinedMaxVelocity * Constants.XYToCombinedRatio;
MagnitudesCombined = GetMagnitudes();
MagnitudesX = GetMagnitudesX();
diff --git a/grapher/Models/Calculations/AccelChartData.cs b/grapher/Models/Calculations/AccelChartData.cs
index 8c0c8ea..fbf1944 100644
--- a/grapher/Models/Calculations/AccelChartData.cs
+++ b/grapher/Models/Calculations/AccelChartData.cs
@@ -52,12 +52,7 @@ namespace grapher.Models.Calculations
}
else
{
- var velIdx = OrderedVelocityPointsList.BinarySearch(outVelocityValue);
-
- if (velIdx < 0)
- {
- velIdx = ~velIdx;
- }
+ var velIdx = GetVelocityIndex(outVelocityValue);
velIdx = Math.Min(velIdx, VelocityPoints.Count - 1);
values = (VelocityPoints.ElementAt(velIdx).Key, AccelPoints.ElementAt(velIdx).Value, GainPoints.ElementAt(velIdx).Value);
@@ -66,6 +61,30 @@ namespace grapher.Models.Calculations
}
}
+ public (double, double, double) ValuesAtIndex(int index)
+ {
+ return (AccelPoints.ElementAt(index).Value, VelocityPoints.ElementAt(index).Value, GainPoints.ElementAt(index).Value);
+ }
+
+ public (double, double, double) ValuesAtInVelocity(double inVelocity)
+ {
+ return (AccelPoints[inVelocity], VelocityPoints[inVelocity], GainPoints[inVelocity]);
+ }
+
+ public int GetVelocityIndex(double outVelocityValue)
+ {
+ var velIdx = OrderedVelocityPointsList.BinarySearch(outVelocityValue);
+
+ if (velIdx < 0)
+ {
+ velIdx = ~velIdx;
+ }
+
+ velIdx = Math.Min(velIdx, VelocityPoints.Count - 1);
+
+ return velIdx;
+ }
+
#endregion Methods
}
}
diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs
index eef4d01..67d4f3f 100644
--- a/grapher/Models/Calculations/AccelData.cs
+++ b/grapher/Models/Calculations/AccelData.cs
@@ -1,5 +1,8 @@
using grapher.Models.Charts;
+using grapher.Models.Serialized;
using System;
+using System.Collections.Generic;
+using System.Linq;
namespace grapher.Models.Calculations
{
@@ -19,6 +22,8 @@ namespace grapher.Models.Calculations
Estimated = combined;
EstimatedX = x;
EstimatedY = y;
+
+ OutVelocityToPoints = new Dictionary<double, (double, double, double, double, double, double, double)>();
}
#endregion Constructors
@@ -37,6 +42,8 @@ namespace grapher.Models.Calculations
private EstimatedPoints EstimatedY { get; }
+ private Dictionary<double, (double, double, double, double, double, double, double)> OutVelocityToPoints { get; }
+
#endregion Properties
#region Methods
@@ -46,22 +53,23 @@ namespace grapher.Models.Calculations
Combined.Clear();
X.Clear();
Y.Clear();
+ OutVelocityToPoints.Clear();
}
public void CalculateDots(int x, int y, double timeInMs)
{
- var magnitude = AccelCalculator.Velocity(x, y, timeInMs);
+ var outVelocity = AccelCalculator.Velocity(x, y, timeInMs);
- (var inCombVel, var combSens, var combGain) = Combined.FindPointValuesFromOut(magnitude);
- Estimated.Velocity.Set(inCombVel, magnitude);
+ (var inCombVel, var combSens, var combGain) = Combined.FindPointValuesFromOut(outVelocity);
+ Estimated.Velocity.Set(inCombVel, outVelocity);
Estimated.Sensitivity.Set(inCombVel, combSens);
Estimated.Gain.Set(inCombVel, combGain);
}
public void CalculateDotsXY(int x, int y, double timeInMs)
{
- var outX = Math.Abs(x);
- var outY = Math.Abs(y);
+ var outX = Math.Abs(x) / timeInMs;
+ var outY = Math.Abs(y) / timeInMs;
(var inXVelocity, var xSensitivity, var xGain) = X.FindPointValuesFromOut(outX);
EstimatedX.Velocity.Set(inXVelocity, outX);
@@ -74,6 +82,36 @@ namespace grapher.Models.Calculations
EstimatedY.Gain.Set(inYVelocity, yGain);
}
+ public void CalculateDotsCombinedDiffSens(int x, int y, double timeInMs, DriverSettings settings)
+ {
+ (var xStripped, var yStripped) = AccelCalculator.StripSens(x, y, settings.sensitivity.x, settings.sensitivity.y);
+ var outVelocity = AccelCalculator.Velocity(xStripped, yStripped, timeInMs);
+
+ if (OutVelocityToPoints.TryGetValue(outVelocity, out var points))
+ {
+ EstimatedX.Sensitivity.Set(points.Item1, points.Item2);
+ EstimatedX.Velocity.Set(points.Item1, points.Item3);
+ EstimatedX.Gain.Set(points.Item1, points.Item4);
+ EstimatedY.Sensitivity.Set(points.Item1, points.Item5);
+ EstimatedY.Velocity.Set(points.Item1, points.Item6);
+ EstimatedY.Gain.Set(points.Item1, points.Item7);
+ }
+ else
+ {
+ var index = Combined.GetVelocityIndex(outVelocity);
+ var inVelocity = Combined.VelocityPoints.ElementAt(index).Key;
+ var xPoints = X.ValuesAtIndex(index);
+ var yPoints = Y.ValuesAtIndex(index);
+ OutVelocityToPoints.Add(outVelocity, (inVelocity, xPoints.Item1, xPoints.Item2, xPoints.Item3, yPoints.Item1, yPoints.Item2, yPoints.Item3));
+ EstimatedX.Sensitivity.Set(inVelocity, xPoints.Item1);
+ EstimatedX.Velocity.Set(inVelocity, xPoints.Item2);
+ EstimatedX.Gain.Set(inVelocity, xPoints.Item3);
+ EstimatedY.Sensitivity.Set(inVelocity, yPoints.Item1);
+ EstimatedY.Velocity.Set(inVelocity, yPoints.Item2);
+ EstimatedY.Gain.Set(inVelocity, yPoints.Item3);
+ }
+ }
+
#endregion Methods
}
}
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index 3f228c3..d22ab78 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -1,5 +1,6 @@
using grapher.Models.Calculations;
using grapher.Models.Charts;
+using grapher.Models.Charts.ChartState;
using grapher.Models.Serialized;
using System;
using System.Drawing;
@@ -18,56 +19,40 @@ namespace grapher
ChartXY gainChart,
ToolStripMenuItem enableVelocityAndGain,
ToolStripMenuItem enableLastMouseMove,
- Button writeButton)
+ Button writeButton,
+ AccelCalculator accelCalculator)
{
- Estimated = new EstimatedPoints();
- EstimatedX = new EstimatedPoints();
- EstimatedY = new EstimatedPoints();
- AccelData = new AccelData(Estimated, EstimatedX, EstimatedY);
+ var estimated = new EstimatedPoints();
+ var estimatedX = new EstimatedPoints();
+ var estimatedY = new EstimatedPoints();
+ SetupCharts(sensitivityChart, velocityChart, gainChart, estimated, estimatedX, estimatedY);
+ var accelData = new AccelData(estimated, estimatedX, estimatedY);
+ ChartStateManager = new ChartStateManager(sensitivityChart, velocityChart, gainChart, accelData, accelCalculator);
- ContaingForm = form;
- SensitivityChart = sensitivityChart;
- VelocityChart = velocityChart;
- GainChart = gainChart;
+ ContainingForm = form;
EnableVelocityAndGain = enableVelocityAndGain;
EnableLastValue = enableLastMouseMove;
WriteButton = writeButton;
- SensitivityChart.SetPointBinds(Estimated.Sensitivity, EstimatedX.Sensitivity, EstimatedY.Sensitivity);
- VelocityChart.SetPointBinds(Estimated.Velocity, EstimatedX.Velocity, EstimatedY.Velocity);
- GainChart.SetPointBinds(Estimated.Gain, EstimatedX.Gain, EstimatedY.Gain);
- SensitivityChart.SetTop(0);
- VelocityChart.SetHeight(SensitivityChart.Height);
- VelocityChart.SetTop(SensitivityChart.Height + Constants.ChartSeparationVertical);
- GainChart.SetHeight(SensitivityChart.Height);
- GainChart.SetTop(VelocityChart.Top + VelocityChart.Height + Constants.ChartSeparationVertical);
-
- Rectangle screenRectangle = ContaingForm.RectangleToScreen(ContaingForm.ClientRectangle);
- FormBorderHeight = screenRectangle.Top - ContaingForm.Top;
+ Rectangle screenRectangle = ContainingForm.RectangleToScreen(ContainingForm.ClientRectangle);
+ FormBorderHeight = screenRectangle.Top - ContainingForm.Top;
EnableVelocityAndGain.Click += new System.EventHandler(OnEnableClick);
EnableVelocityAndGain.CheckedChanged += new System.EventHandler(OnEnableVelocityGainCheckStateChange);
EnableLastValue.CheckedChanged += new System.EventHandler(OnEnableLastMouseMoveCheckStateChange);
+ ChartState = ChartStateManager.InitialState();
+ ChartState.Activate();
HideVelocityAndGain();
- SensitivityChart.Show();
- Combined = false;
- ShowCombined();
}
#endregion Constructors
#region Properties
- public Form ContaingForm { get; }
-
- public ChartXY SensitivityChart { get; }
-
- public ChartXY VelocityChart { get; }
-
- public ChartXY GainChart { get; }
+ public Form ContainingForm { get; }
public ToolStripMenuItem EnableVelocityAndGain { get; }
@@ -75,90 +60,116 @@ namespace grapher
private Button WriteButton { get; }
- public AccelData AccelData { get; }
-
- private EstimatedPoints Estimated { get; }
+ public AccelData AccelData
+ {
+ get
+ {
+ return ChartState.Data;
+ }
+ }
- private EstimatedPoints EstimatedX { get; }
+ public int Left
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Left;
+ }
+ }
- private EstimatedPoints EstimatedY { get; }
+ public int Top
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Top;
+ }
+ }
- private bool Combined { get; set; }
+ public int TopChartHeight
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Height;
+ }
+ }
private int FormBorderHeight { get; }
+ private ChartState ChartState { get; set; }
+
+ private ChartStateManager ChartStateManager { get; }
+
+
#endregion Properties
#region Methods
public void MakeDots(int x, int y, double timeInMs)
{
- if (Combined)
- {
- AccelData.CalculateDots(x, y, timeInMs);
- }
- else
- {
- AccelData.CalculateDotsXY(x, y, timeInMs);
- }
+ ChartState.MakeDots(x, y, timeInMs);
}
public void DrawLastMovement()
{
if (EnableLastValue.Checked)
{
- SensitivityChart.DrawLastMovementValue();
- VelocityChart.DrawLastMovementValue();
- GainChart.DrawLastMovementValue();
+ ChartState.DrawLastMovement();
}
}
public void Bind()
{
- if (Combined)
- {
- SensitivityChart.Bind(AccelData.Combined.AccelPoints);
- VelocityChart.Bind(AccelData.Combined.VelocityPoints);
- GainChart.Bind(AccelData.Combined.GainPoints);
- }
- else
- {
- SensitivityChart.BindXY(AccelData.X.AccelPoints, AccelData.Y.AccelPoints);
- VelocityChart.BindXY(AccelData.X.VelocityPoints, AccelData.Y.VelocityPoints);
- GainChart.BindXY(AccelData.X.GainPoints, AccelData.Y.GainPoints);
- }
+ ChartState.Bind();
}
public void ShowActive(DriverSettings driverSettings)
{
- if (driverSettings.combineMagnitudes)
- {
- ShowCombined();
- }
- else
- {
- ShowXandYSeparate();
- }
+ ChartState = ChartStateManager.DetermineState(driverSettings);
+ ChartState.Activate();
+ UpdateFormWidth();
+ Bind();
}
public void SetWidened()
{
- SensitivityChart.SetWidened();
- VelocityChart.SetWidened();
- GainChart.SetWidened();
+ ChartState.SetWidened();
UpdateFormWidth();
AlignWriteButton();
}
public void SetNarrowed()
{
- SensitivityChart.SetNarrowed();
- VelocityChart.SetNarrowed();
- GainChart.SetNarrowed();
+ ChartState.SetNarrowed();
UpdateFormWidth();
AlignWriteButton();
}
+ public void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ ChartState.SetUpCalculate(settings);
+ ChartState.Calculate(accel, settings);
+ }
+
+ private static void SetupCharts(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ EstimatedPoints estimated,
+ EstimatedPoints estimatedX,
+ EstimatedPoints estimatedY)
+ {
+ sensitivityChart.SetPointBinds(estimated.Sensitivity, estimatedX.Sensitivity, estimatedY.Sensitivity);
+ velocityChart.SetPointBinds(estimated.Velocity, estimatedX.Velocity, estimatedY.Velocity);
+ gainChart.SetPointBinds(estimated.Gain, estimatedX.Gain, estimatedY.Gain);
+
+ sensitivityChart.SetTop(0);
+ velocityChart.SetHeight(sensitivityChart.Height);
+ velocityChart.SetTop(sensitivityChart.Height + Constants.ChartSeparationVertical);
+ gainChart.SetHeight(sensitivityChart.Height);
+ gainChart.SetTop(velocityChart.Top + velocityChart.Height + Constants.ChartSeparationVertical);
+
+ sensitivityChart.Show();
+ }
+
private void OnEnableClick(object sender, EventArgs e)
{
EnableVelocityAndGain.Checked = !EnableVelocityAndGain.Checked;
@@ -180,67 +191,28 @@ namespace grapher
{
if (!EnableLastValue.Checked)
{
- SensitivityChart.ClearLastValue();
- VelocityChart.ClearLastValue();
- GainChart.ClearLastValue();
+ ChartState.ClearLastValue();
}
}
private void ShowVelocityAndGain()
{
- VelocityChart.Show();
- GainChart.Show();
- ContaingForm.Height = SensitivityChart.Height +
- Constants.ChartSeparationVertical +
- VelocityChart.Height +
- Constants.ChartSeparationVertical +
- GainChart.Height +
- FormBorderHeight;
+ ChartState.ShowVelocityAndGain(ContainingForm, FormBorderHeight);
}
private void HideVelocityAndGain()
{
- VelocityChart.Hide();
- GainChart.Hide();
- ContaingForm.Height = SensitivityChart.Height + FormBorderHeight;
- }
-
- private void ShowXandYSeparate()
- {
- if (Combined)
- {
- Combined = false;
-
- SensitivityChart.SetSeparate();
- VelocityChart.SetSeparate();
- GainChart.SetSeparate();
- UpdateFormWidth();
- Bind();
- }
- }
-
- private void ShowCombined()
- {
- if (!Combined)
- {
- Combined = true;
-
- SensitivityChart.SetCombined();
- VelocityChart.SetCombined();
- GainChart.SetCombined();
- UpdateFormWidth();
- Bind();
- }
+ ChartState.HideVelocityAndGain(ContainingForm, FormBorderHeight);
}
private void UpdateFormWidth()
{
- ContaingForm.Width = SensitivityChart.Left + SensitivityChart.Width;
+ ContainingForm.Width = ChartState.SensitivityChart.Left + ChartState.SensitivityChart.Width;
}
private void AlignWriteButton()
{
- WriteButton.Left = SensitivityChart.Left / 2 - WriteButton.Width / 2;
+ WriteButton.Left = ChartState.SensitivityChart.Left / 2 - WriteButton.Width / 2;
}
#endregion Methods
diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs
new file mode 100644
index 0000000..ea67e83
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/ChartState.cs
@@ -0,0 +1,104 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public abstract class ChartState
+ {
+ public ChartState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData,
+ AccelCalculator calculator)
+ {
+ SensitivityChart = sensitivityChart;
+ VelocityChart = velocityChart;
+ GainChart = gainChart;
+ Data = accelData;
+ Calculator = calculator;
+ TwoDotsPerGraph = false;
+ }
+
+ public ChartXY SensitivityChart { get; }
+
+ public ChartXY VelocityChart { get; }
+
+ public ChartXY GainChart { get; }
+
+ public AccelData Data { get; }
+
+ public AccelCalculator Calculator { get; }
+
+ public virtual DriverSettings Settings { get; set; }
+
+ internal bool TwoDotsPerGraph { get; set; }
+
+ public abstract void MakeDots(int x, int y, double timeInMs);
+
+ public abstract void Bind();
+
+ public abstract void Activate();
+
+ public abstract void Calculate(ManagedAccel accel, DriverSettings settings);
+
+ public virtual void SetUpCalculate(DriverSettings settings)
+ {
+ Data.Clear();
+ Calculator.ScaleByMouseSettings();
+ }
+
+ public void DrawLastMovement()
+ {
+ SensitivityChart.DrawLastMovementValue(TwoDotsPerGraph);
+ VelocityChart.DrawLastMovementValue(TwoDotsPerGraph);
+ GainChart.DrawLastMovementValue(TwoDotsPerGraph);
+ }
+
+ public void SetWidened()
+ {
+ SensitivityChart.SetWidened();
+ VelocityChart.SetWidened();
+ GainChart.SetWidened();
+ }
+
+ public void SetNarrowed()
+ {
+ SensitivityChart.SetNarrowed();
+ VelocityChart.SetNarrowed();
+ GainChart.SetNarrowed();
+ }
+
+ public void ClearLastValue()
+ {
+ SensitivityChart.ClearLastValue();
+ VelocityChart.ClearLastValue();
+ GainChart.ClearLastValue();
+ }
+
+ public void ShowVelocityAndGain(Form form, int borderHeight)
+ {
+ VelocityChart.Show();
+ GainChart.Show();
+ form.Height = SensitivityChart.Height +
+ Constants.ChartSeparationVertical +
+ VelocityChart.Height +
+ Constants.ChartSeparationVertical +
+ GainChart.Height +
+ borderHeight;
+ }
+
+ public void HideVelocityAndGain(Form form, int borderHeight)
+ {
+ VelocityChart.Hide();
+ GainChart.Hide();
+ form.Height = SensitivityChart.Height + borderHeight;
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/ChartStateManager.cs b/grapher/Models/Charts/ChartState/ChartStateManager.cs
new file mode 100644
index 0000000..54d2e81
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/ChartStateManager.cs
@@ -0,0 +1,78 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class ChartStateManager
+ {
+ public ChartStateManager(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChat,
+ AccelData accelData,
+ AccelCalculator accelCalculator)
+ {
+ CombinedState = new CombinedState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData,
+ accelCalculator);
+
+ XYOneGraphState = new XYOneGraphState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData,
+ accelCalculator);
+
+ XYTwoGraphState = new XYTwoGraphState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData,
+ accelCalculator);
+ }
+
+ private CombinedState CombinedState { get; }
+
+ private XYOneGraphState XYOneGraphState { get; }
+
+ private XYTwoGraphState XYTwoGraphState { get; }
+
+
+ public ChartState DetermineState(DriverSettings settings)
+ {
+ ChartState chartState;
+
+ if (settings.combineMagnitudes)
+ {
+ if (settings.sensitivity.x != settings.sensitivity.y)
+ {
+ chartState = XYOneGraphState;
+ }
+ else
+ {
+ chartState = CombinedState;
+ }
+ }
+ else
+ {
+ chartState = XYTwoGraphState;
+ }
+
+ chartState.Settings = settings;
+ return chartState;
+ }
+
+ public ChartState InitialState()
+ {
+ return CombinedState;
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/CombinedState.cs b/grapher/Models/Charts/ChartState/CombinedState.cs
new file mode 100644
index 0000000..17cd68a
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/CombinedState.cs
@@ -0,0 +1,46 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class CombinedState : ChartState
+ {
+ public CombinedState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData,
+ AccelCalculator accelCalculator)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData,
+ accelCalculator)
+ { }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetCombined();
+ VelocityChart.SetCombined();
+ GainChart.SetCombined();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ Data.CalculateDots(x, y, timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.Bind(Data.Combined.AccelPoints);
+ VelocityChart.Bind(Data.Combined.VelocityPoints);
+ GainChart.Bind(Data.Combined.GainPoints);
+ }
+
+ public override void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ Calculator.Calculate(Data.Combined, accel, settings.sensitivity.x, Calculator.MagnitudesCombined);
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/XYOneGraphState.cs b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
new file mode 100644
index 0000000..bbc0c28
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
@@ -0,0 +1,48 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class XYOneGraphState : ChartState
+ {
+ public XYOneGraphState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData,
+ AccelCalculator accelCalculator)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData,
+ accelCalculator)
+ {
+ TwoDotsPerGraph = true;
+ }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetCombined();
+ VelocityChart.SetCombined();
+ GainChart.SetCombined();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ Data.CalculateDotsCombinedDiffSens(x, y, timeInMs, Settings);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.BindXYCombined(Data.X.AccelPoints, Data.Y.AccelPoints);
+ VelocityChart.BindXYCombined(Data.X.VelocityPoints, Data.Y.VelocityPoints);
+ GainChart.BindXYCombined(Data.X.GainPoints, Data.Y.GainPoints);
+ }
+
+ public override void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ Calculator.CalculateCombinedDiffSens(Data, accel, settings, Calculator.MagnitudesCombined);
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
new file mode 100644
index 0000000..69dc335
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -0,0 +1,76 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class XYTwoGraphState : ChartState
+ {
+ private DriverSettings _settings;
+
+ public XYTwoGraphState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData,
+ AccelCalculator accelCalculator)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData,
+ accelCalculator)
+ { }
+
+ public override DriverSettings Settings
+ {
+ get { return _settings; }
+ set
+ {
+ _settings = value;
+ ShouldStripSens = AccelCalculator.ShouldStripSens(ref value);
+ if (ShouldStripSens)
+ {
+ Sensitivity = AccelCalculator.GetSens(ref value);
+ }
+ }
+ }
+
+ private bool ShouldStripSens { get; set; }
+
+ private (double, double) Sensitivity { get; set; }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetSeparate();
+ VelocityChart.SetSeparate();
+ GainChart.SetSeparate();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ double xCalc = x;
+ double yCalc = y;
+
+ if (ShouldStripSens)
+ {
+ (xCalc, yCalc) = AccelCalculator.StripSens(xCalc, yCalc, Sensitivity.Item1, Sensitivity.Item2);
+ }
+
+ Data.CalculateDotsXY((int)Math.Round(xCalc), (int)Math.Round(yCalc), timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.BindXY(Data.X.AccelPoints, Data.Y.AccelPoints);
+ VelocityChart.BindXY(Data.X.VelocityPoints, Data.Y.VelocityPoints);
+ GainChart.BindXY(Data.X.GainPoints, Data.Y.GainPoints);
+ }
+
+ public override void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ Calculator.Calculate(Data.X, accel, settings.sensitivity.x, Calculator.MagnitudesX);
+ Calculator.Calculate(Data.Y, accel, settings.sensitivity.y, Calculator.MagnitudesY);
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartXY.cs b/grapher/Models/Charts/ChartXY.cs
index 30be229..fdd0258 100644
--- a/grapher/Models/Charts/ChartXY.cs
+++ b/grapher/Models/Charts/ChartXY.cs
@@ -8,10 +8,11 @@ namespace grapher
{
#region Constructors
- public ChartXY(Chart chartX, Chart chartY)
+ public ChartXY(Chart chartX, Chart chartY, string title)
{
ChartX = chartX;
ChartY = chartY;
+ Title = title;
ChartY.Top = ChartX.Top;
ChartY.Height = ChartX.Height;
@@ -77,6 +78,8 @@ namespace grapher
public bool Visible { get; private set; }
+ public string Title { get; }
+
private PointData CombinedPointData { get; set; }
private PointData XPointData { get; set; }
@@ -110,14 +113,21 @@ namespace grapher
chart.Series[1].Points.Clear();
chart.Series[1].Points.AddXY(0, 0);
+
+ chart.Titles[0].Font = new System.Drawing.Font(chart.Titles[0].Font.Name, 9.0f, System.Drawing.FontStyle.Italic);
}
- public static void DrawPoint(Chart chart, PointData point)
+ public static void DrawPoint(Chart chart, PointData pointOne, PointData pointTwo = null)
{
if (chart.Visible)
{
- point.Get(out var x, out var y);
+ pointOne.Get(out var x, out var y);
chart.Series[1].Points.DataBindXY(x, y);
+ if (pointTwo != null)
+ {
+ pointTwo.Get(out x, out y);
+ chart.Series[3].Points.DataBindXY(x, y);
+ }
chart.Update();
}
}
@@ -129,11 +139,18 @@ namespace grapher
YPointData = y;
}
- public void DrawLastMovementValue()
+ public void DrawLastMovementValue(bool twoDotsPerGraph = false)
{
if(Combined)
{
- DrawPoint(ChartX, CombinedPointData);
+ if (twoDotsPerGraph)
+ {
+ DrawPoint(ChartX, XPointData, YPointData);
+ }
+ else
+ {
+ DrawPoint(ChartX, CombinedPointData);
+ }
}
else
{
@@ -159,12 +176,19 @@ namespace grapher
ChartY.Series[0].Points.DataBindXY(dataY.Keys, dataY.Values);
}
+ public void BindXYCombined(IDictionary dataX, IDictionary dataY)
+ {
+ ChartX.Series[0].Points.DataBindXY(dataX.Keys, dataX.Values);
+ ChartX.Series[2].Points.DataBindXY(dataY.Keys, dataY.Values);
+ }
+
public void SetCombined()
{
if (!Combined)
{
ChartY.Hide();
Combined = true;
+ ChartX.Titles[0].Text = Title;
}
}
@@ -177,6 +201,9 @@ namespace grapher
ChartY.Show();
}
+ ChartX.Titles[0].Text = SetComponentTitle(Constants.XComponent);
+ ChartY.Titles[0].Text = SetComponentTitle(Constants.YComponent);
+
Combined = false;
}
}
@@ -246,6 +273,10 @@ namespace grapher
ChartY.Height = height;
}
+ private string SetComponentTitle(string component)
+ {
+ return $"{Title} : {component}";
+ }
#endregion Methods
}
}
diff --git a/grapher/Models/Fields/Field.cs b/grapher/Models/Fields/Field.cs
index 0d1813e..df73dd7 100644
--- a/grapher/Models/Fields/Field.cs
+++ b/grapher/Models/Fields/Field.cs
@@ -61,7 +61,7 @@ namespace grapher
public double Data {
get
{
- if (Box.Visible)
+ if (Box.Enabled)
{
return _data;
}
@@ -126,6 +126,18 @@ namespace grapher
#region Methods
+ public void Hide()
+ {
+ Box.Hide();
+ Box.Enabled = false;
+ }
+
+ public void Show()
+ {
+ Box.Show();
+ Box.Enabled = true;
+ }
+
public void SetToDefault()
{
if (State != FieldState.Default)
diff --git a/grapher/Models/Fields/FieldXY.cs b/grapher/Models/Fields/FieldXY.cs
index 15e6800..1c01668 100644
--- a/grapher/Models/Fields/FieldXY.cs
+++ b/grapher/Models/Fields/FieldXY.cs
@@ -106,7 +106,7 @@ namespace grapher
{
get
{
- return XField.Box.Visible;
+ return XField.Box.Enabled;
}
}
@@ -137,7 +137,7 @@ namespace grapher
{
Combined = true;
YField.SetToUnavailable();
- YField.Box.Hide();
+ YField.Hide();
XField.Box.Width = CombinedWidth;
XField.FormatString = Constants.DefaultFieldFormatString;
}
@@ -160,26 +160,26 @@ namespace grapher
YField.SetToEntered(XField.Data);
}
- if (XField.Box.Visible)
+ if (XField.Box.Enabled)
{
- YField.Box.Show();
+ YField.Show();
}
}
public void Show()
{
- XField.Box.Show();
+ XField.Show();
if (!Combined)
{
- YField.Box.Show();
+ YField.Show();
}
}
public void Hide()
{
- XField.Box.Hide();
- YField.Box.Hide();
+ XField.Hide();
+ YField.Hide();
}
#endregion Methods
diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs
index 14c2019..917ac5c 100644
--- a/grapher/Models/Options/AccelTypeOptions.cs
+++ b/grapher/Models/Options/AccelTypeOptions.cs
@@ -18,6 +18,7 @@ namespace grapher
new ClassicLayout(),
new NaturalLayout(),
new PowerLayout(),
+ new LogarithmLayout(),
new NaturalGainLayout(),
new SigmoidGainLayout(),
new OffLayout()
diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs
index 241fe50..6ec9d31 100644
--- a/grapher/Models/Options/ApplyOptions.cs
+++ b/grapher/Models/Options/ApplyOptions.cs
@@ -227,7 +227,7 @@ namespace grapher.Models.Options
private void SetActiveTitlesWhole()
{
OptionSetX.ActiveValuesTitle.Left = OptionSetX.Options.Left + OptionSetX.Options.Width;
- LockXYLabel.Width = (AccelCharts.SensitivityChart.Left - OptionSetX.ActiveValuesTitle.Left) / 2;
+ LockXYLabel.Width = (AccelCharts.Left - OptionSetX.ActiveValuesTitle.Left) / 2;
OptionSetX.ActiveValuesTitle.Width = LockXYLabel.Width;
LockXYLabel.Left = OptionSetX.ActiveValuesTitle.Left + OptionSetX.ActiveValuesTitle.Width;
Sensitivity.Fields.LockCheckBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - Sensitivity.Fields.LockCheckBox.Width / 2;
diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs
index 5e47d7b..c459c50 100644
--- a/grapher/Models/Options/CapOptions.cs
+++ b/grapher/Models/Options/CapOptions.cs
@@ -156,16 +156,16 @@ namespace grapher
CapOption.ActiveValueLabel.FormatString = Constants.GainCapFormatString;
CapOption.ActiveValueLabel.Prefix = "Gain";
CapOption.SetActiveValue(gainCap);
- LegacyCapCheck.Checked = true;
- VelocityGainCapCheck.Checked = false;
+ LegacyCapCheck.Checked = false;
+ VelocityGainCapCheck.Checked = true;
}
else
{
CapOption.ActiveValueLabel.FormatString = Constants.DefaultActiveValueFormatString;
CapOption.ActiveValueLabel.Prefix = string.Empty;
CapOption.SetActiveValue(sensCap);
- LegacyCapCheck.Checked = false;
- VelocityGainCapCheck.Checked = true;
+ LegacyCapCheck.Checked = true;
+ VelocityGainCapCheck.Checked = false;
}
}
@@ -194,7 +194,7 @@ namespace grapher
void OnSensitivityCapCheckedChange(object sender, EventArgs e)
{
- if (LegacyCapCheck.Checked == true)
+ if (LegacyCapCheck.Checked)
{
EnableSensitivityCap();
}
@@ -202,7 +202,7 @@ namespace grapher
void OnVelocityGainCapCheckedChange(object sender, EventArgs e)
{
- if (LegacyCapCheck.Checked == true)
+ if (VelocityGainCapCheck.Checked)
{
EnableVelocityGainCap();
}
diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs
index 5dc022b..c0d339e 100644
--- a/grapher/Models/Options/Option.cs
+++ b/grapher/Models/Options/Option.cs
@@ -119,7 +119,7 @@ namespace grapher
{
get
{
- return Field.Box.Visible;
+ return Field.Box.Enabled;
}
}
@@ -140,14 +140,14 @@ namespace grapher
public override void Hide()
{
- Field.Box.Hide();
+ Field.Hide();
Label.Hide();
ActiveValueLabel.Hide();
}
public void Show()
{
- Field.Box.Show();
+ Field.Show();
Label.Show();
ActiveValueLabel.Show();
}
diff --git a/grapher/Models/Serialized/DriverSettings.cs b/grapher/Models/Serialized/DriverSettings.cs
index d7c9444..d42187c 100644
--- a/grapher/Models/Serialized/DriverSettings.cs
+++ b/grapher/Models/Serialized/DriverSettings.cs
@@ -8,7 +8,7 @@ namespace grapher.Models.Serialized
public enum AccelMode
{
- linear, classic, natural, naturalgain, sigmoidgain, power, noaccel
+ linear, classic, natural, naturalgain, sigmoidgain, power, logarithm, noaccel
}
#endregion Enumerations
diff --git a/grapher/ReadMe/Guide.md b/grapher/ReadMe/Guide.md
new file mode 100644
index 0000000..3680c0a
--- /dev/null
+++ b/grapher/ReadMe/Guide.md
@@ -0,0 +1,82 @@
+# Raw Accel Guide
+
+## Philosophy
+The Raw Accel driver and GUI's workings and exposed parameters are based on our understanding of mouse acceleration. Our understanding includes the concepts of "gain", "whole vs by component", and "anisotropy." For clarity, we will outline this understanding here.
+
+### Measurements from Input Speed
+Raw Accel, like any mouse modification program, works by acting on a passed in (x,y) input and passing back out an (x,y) output. The GUI program creates charts by feeding a set of (x,y) inputs to the driver code to receive a set of (x,y) outputs. The following measurements, available as charts in Raw Accel, are then found from the outputs:
+
+- **Sensitivity**: The ratio of the output speed to the input speed. The "sensitivity" parameter in the program is a multiplier used on the post-calculation output vector.
+- **(Output) Velocity**: The speed of the final output vector. The output vs input velocity curve is perhaps the most important relationship in a particular setup because it directly describes the output for any given input. (We use "speed" and "velocity" interchangeably, and are aware of the difference elsewhere.)
+- **Gain**: The slope of the output vs input velocity curve. It answers the question: "if I move my hand a little faster, how much faster will my cursor move?" One author of this document says: "If I could have users to understand one thing, it's that they should focus on their gain rather than their sensitivity."
+- For the mathematically inclined: for input speed "v" and Output Velocity f(v), Sensitivity is f(v)/v and Gain is f'(v) = d/dv(f(v)).
+
+Acceleration, then, is a characteristic of the velocity curve, defined as true when the velocity curve is non-linear for any input speed.
+
+### Example
+The above is much more clear with an example. Let's say I have
+- linear acceleration with acceleration parameter of 0.01
+- a sensitivity parameter of 0.5
+
+and I move my mouse to create an input of (30,40) at a poll rate of 1000 hz.
+
+Then our input speed is sqrt(30^2 + 40^2) = 50 counts/ms. Our accelerated sensitivity is calculated to be (1 + 0.1 \* 50) * 0.5 = 1.5 \* 0.5 = 0.75. So our output velocity is 0.75 \* 50 = 37.5. If I run the previous calculations with input speed 49.9 I get output velocity 37.40005, so our gain is about (37.5-37.40005)/(50-49.9) = 0.9995. Here is a picture of the charts in Raw Accel showing the same thing:
+
+![SensVelocityGainExample](\images\accel_readme_example.png)
+
+### Horizontal and Vertical
+If you wish, horizontal and vertical components of a mouse movement can be treated completely separately in Raw Accel. In the above example, they are not treated separately; rather they are "combined" by using the magnitude if the input vector: *sqrt(30^2 + 40^2) = 50 counts/ms*. This is called "Whole" application because the whole speed of the input is used. Application styles include:
+
+- Whole: magnitude of vector is input to sensitivity calculation, and applied to whole vector, as in example above.
+ - (out_x, out_y) = (in_x\*sens_x, in_y\*sens_y) \* f(sqrt(in_x^2 + in_y^2)), where f(v) is our sensitvity function
+ - Separate horizontal and vertical sensitivites still feel great in this mode.
+- By Component: The horizontal components are separated and each is given as input to the sensitivity calculation to multiplied by itself before being recombined at output.
+ - (out_x, out_y) = (in_x \* f(in_x) \* sens_x, in_y \* f(in_y) \* sens_y))
+- Anisotropy: This is a sub-mode of By Component in which the x and y can have separate sensitivity curves.
+ - (out_x, out_y) = (in_x \* f(in_x) \* sens_x, in_y \* g(in_y) \* sens_y)) where g(v) is some other sensitivity function.
+
+The authors of this program feel that Whole is the best style for most users, but that users who play games which have very separate horizontal and vertical actions to manage (such as tracking an enemy and controlling recoil) might benefit from trying By Component or Anisotropy.
+
+
+## Features
+
+### Offsets
+An offset, sometimes called a threshold, is a speed in counts before acceleration "kicks in". The legacy way of applying an offset is having a multiplier of 1 below and at the offset, and applying the sensitivity of (speed-offset) above. This legacy "sensitivity offset" is still available but causes a large discontuinity in gain at the point of offset, leading to non-smooth feeling at offset cross. The new default "gain offset" does a little extra math to simply shift the gain graph by the offset amount without any discontinuity. This feels smoother and has almost no effect on sensitivity. The theory behind "gain offsets" is developed in [this document](https://docs.google.com/document/d/1P6LygpeEazyHfjVmaEygCsyBjwwW2A-eMBl81ZfxXZk).
+
+### Caps
+A cap is a point after which acceleration is not applied. The legacy way of applying an offset is simply applying the minimum of the cap sensitivity and the calculated sensitivity for any acceleration calculation. Thus, for the legacy "sensitivity cap" the value given is a sensitivity. This cap style is still available but causes a large discontinuity at the point of offset, leading to a non-smooth feeling at cap cross. The new default "gain cap" effectively caps the gain, but for internal calculation reasons, does so for a given speed rather than a given gain value. This feels much smoother but might have a large effect on sensitivity as gain generally raises faster than sensitivity. We recommend that users use a gain cap and simply adjust it to hit at the gain equivalent to the sensitivity they'd like to cap at. The theory behind "gain caps" is developed in [this document](https://docs.google.com/document/d/1FCpkqRxUaCP7J258SupbxNxvdPfljb16AKMs56yDucA).
+
+### Weight
+Our acceleration functions generally have sensitivity functions that start at 1 and then increase. A weight is a multiplier of that increase before it is added to 1. For instance, if we would have had accelerated sensitivity 1.5, weight of 0.5 will result in accelerated sensitivity 1.25 (1 + 0.5\*0.5), and a weight of 3 would have resulted in a sensitivity of 2.5 (1 + 0.5\*3).
+
+Weight is primarily a quick and dirty way to test a new curve. It also can be given a negative value to allow negative acceleration. Most acceleration styles could just change the parameters to have the same affect as setting a weight. Some curves, like the logarithm style, can achieve a greater range of shapes by changing weight.
+
+### By Component & Anisotropy
+See "Horizontal and Vertical" in the philosophy section to understand what these do.
+
+### Last Mouse Move
+The Raw Accel GUI reads the output of the raw input stream, and thus the output of the Raw Accel Driver, and displays on the graphs red points corresponding to the last mouse movements. These calculations are slightly slow but build up a cache, so shaking your mouse around on GUI start should make the points display fast and smoothly. This feature can be turned off in the "Charts" menu.
+
+## Acceleration Styles
+[To be added: pictures of the styles, typical settings]
+
+### Linear
+This is simplest style used by most; it is simply a line rising at a given rate. This is a good choice for new users.
+
+### Classic
+This is the style found in Quake 3, Quake Live, and countless inspired followers, including the InterAccel program. It mulplies the speed by a given rate and then raises the product to a given exponent. Any particular linear style curve can be replicated in classic style with an exponent of 2.
+
+### Power
+This is the style found in CS:GO and Source Engine games. The user can set a rate by which the speed is multplied, and then an exponent to which the product is raised, which is then the final multiplier (no adding to 1.). In the aforementioned games the default m_customaccel_exponent value of 1.05 would be a value of 0.05 in Raw Accel, leading to a concave slowly rising curve. CS:GO and Source Engine games apply acceleration in an fps-dependent manner, so Raw Accel can only simulate acceleration from these games at a given fps. To do so, set rate to 1000/(fps).
+
+### Natural & NaturalGain
+Natural is a style found in the game Diabotical. It features a concave curve which starts at 1 and approaches some maximum sensitivity. This style is unique and useful but causes an ugly dip in the gain graph. For this reason we have created the NaturalGain style, which recreates the Natural style shape in the gain graph without any dips. We recommend users use the NaturalGain style instead of the Natural style; on switch some small tweaks may be needed since for any particular settings the NaturalGain is slightly slower to ramp up than the Natural style. NaturalGain is another excellent choice for new users.
+
+### SigmoidGain
+A sigmoid curve is an s-shaped curve. SigmoidGain creates an s-shaped curve from 1 to some maximum gain in the gain graph, allowing a user to set the maximum gain, the midpoint of the s, and how fast the s ramps up (similarly to the Natural styles.) At one point there was a Sigmoid style but we removed it because it caused an awful dip in the gain graph.
+
+### Logarithm
+[Sidiouth needs to write this]
+
+## Further Help
+Further help and frequently asked questions can be found in the FAQ. \ No newline at end of file
diff --git a/grapher/ReadMe/ReadMe.md b/grapher/ReadMe/ReadMe.md
new file mode 100644
index 0000000..1d0c282
--- /dev/null
+++ b/grapher/ReadMe/ReadMe.md
@@ -0,0 +1,14 @@
+# Raw Accel
+
+Raw Accel is a Windows 10 64-bit kernel driver which allows for the acceleration, or other modification, of mouse input in the raw input stream. It started as a replacement for the InterAccel program and Intercept driver, and has been extended with more acceleration types, charts, and other features.
+
+## Anti-Cheat Friendly
+
+Raw Accel will be signed to run as a fully trusted driver. It modifies mouse input only by a constant set of formulas and parameters, and has a one-second delay on writing settings to the driver, so it cannot be used to cheat.
+
+## Development
+
+Development of Raw Accel is ongoing at https://github.com/a1xd/rawaccel. Being a signed driver, the guts of the Raw Accel driver will be updated infrequently. The GUI can be updated as often was we like, however, so please let us know if you find any bugs.
+
+## Further Help
+For an overview of everything Raw Accel has to offer, please see the guide (guide.md). For a list of frequently asked questions, please see the FAQ (FAQ.md). \ No newline at end of file
diff --git a/grapher/ReadMe/images/accel_readme_example.png b/grapher/ReadMe/images/accel_readme_example.png
new file mode 100644
index 0000000..1622011
--- /dev/null
+++ b/grapher/ReadMe/images/accel_readme_example.png
Binary files differ
diff --git a/grapher/grapher.csproj b/grapher/grapher.csproj
index 74e2959..d451a91 100644
--- a/grapher/grapher.csproj
+++ b/grapher/grapher.csproj
@@ -54,6 +54,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Constants\Constants.cs" />
+ <Compile Include="Layouts\LogarithmLayout.cs" />
<Compile Include="Layouts\NaturalGainLayout.cs" />
<Compile Include="Layouts\SigmoidGainLayout.cs" />
<Compile Include="Models\AccelGUIFactory.cs" />
@@ -62,7 +63,12 @@
<Compile Include="Models\Calculations\AccelData.cs" />
<Compile Include="Models\Charts\AccelCharts.cs" />
<Compile Include="Models\AccelGUI.cs" />
+ <Compile Include="Models\Charts\ChartState\ChartState.cs" />
+ <Compile Include="Models\Charts\ChartState\ChartStateManager.cs" />
+ <Compile Include="Models\Charts\ChartState\CombinedState.cs" />
<Compile Include="Models\Charts\EstimatedPoints.cs" />
+ <Compile Include="Models\Charts\ChartState\XYOneGraphState.cs" />
+ <Compile Include="Models\Charts\ChartState\XYTwoGraphState.cs" />
<Compile Include="Models\Mouse\MouseWatcher.cs" />
<Compile Include="Models\Mouse\PointData.cs" />
<Compile Include="Models\Options\AccelTypeOptions.cs" />
@@ -131,5 +137,9 @@
<Name>wrapper</Name>
</ProjectReference>
</ItemGroup>
+ <ItemGroup>
+ <Folder Include="Icon\" />
+ <Folder Include="ReadMe\" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> \ No newline at end of file