From a04b6d6993e1dd2f449a84a1bb670523c9470960 Mon Sep 17 00:00:00 2001 From: Michael Oborne <mich146@hotmail.com> Date: Mon, 7 May 2012 22:25:56 +0800 Subject: [PATCH] APM Planner 1.1.81 mavlink 1.0 fixs simulation hil fix for lorenz modify default att rate to 10 hz --- .../3DRRadio/3DRRadio.csproj | 216 +++ Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico | Bin 0 -> 67646 bytes Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs | 77 + .../3DRRadio/Config.Designer.cs | 146 ++ Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs | 50 + .../ArdupilotMegaPlanner/3DRRadio/Config.resx | 1533 +++++++++++++++++ Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs | 17 + .../ArdupilotMegaPlanner/3DRRadio/Program.cs | 24 + .../3DRRadio/Properties/AssemblyInfo.cs | 36 + .../3DRRadio/Properties/Resources.Designer.cs | 84 + .../3DRRadio/Properties/Resources.resx | 131 ++ .../3DRRadio/Properties/Settings.Designer.cs | 26 + .../3DRRadio/Properties/Settings.settings | 7 + .../3DRRadio/Resources/3dr.ico | Bin 0 -> 67646 bytes .../3DRRadio/ThemeManager.cs | 235 +++ .../ArdupilotMegaPlanner/3DRRadio/app.config | 29 + .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 4 +- Tools/ArdupilotMegaPlanner/ArdupilotMega.sln | 14 + Tools/ArdupilotMegaPlanner/Common.cs | 4 +- .../Comms/CommsSerialPort.cs | 2 +- .../BackStageViewContentPanel.cs | 8 +- .../Controls/BackstageView/BackstageView.cs | 12 +- .../Controls/ConfigPanel.cs | 2 + Tools/ArdupilotMegaPlanner/CurrentState.cs | 18 +- .../ConfigAccelerometerCalibrationPlane.cs | 2 +- .../ConfigurationView/ConfigFriendlyParams.cs | 63 +- .../GCSViews/FlightData.cs | 4 +- .../GCSViews/Simulation.cs | 22 +- .../Properties/AssemblyInfo.cs | 2 +- Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs | 24 +- .../Utilities/ParameterMetaDataRepository.cs | 39 +- 31 files changed, 2731 insertions(+), 100 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/app.config diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj b/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj new file mode 100644 index 000000000..7f514ee20 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj @@ -0,0 +1,216 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{B8943726-04B0-4477-BFDA-E156A0CD98A4}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>_3DRRadio</RootNamespace> + <AssemblyName>3DRRadio</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + <FileAlignment>512</FileAlignment> + <IsWebBootstrapper>false</IsWebBootstrapper> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <PlatformTarget>x86</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <PlatformTarget>x86</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <StartupObject /> + </PropertyGroup> + <PropertyGroup> + <ApplicationIcon>3dr.ico</ApplicationIcon> + </PropertyGroup> + <ItemGroup> + <Reference Include="log4net"> + <HintPath>..\Lib\log4net.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\Arduino\ArduinoComms.cs"> + <Link>Linked\ArduinoComms.cs</Link> + </Compile> + <Compile Include="..\Arduino\ArduinoSTK.cs"> + <Link>Linked\ArduinoSTK.cs</Link> + <SubType>Component</SubType> + </Compile> + <Compile Include="..\Attributes\DisplayTextAttribute.cs"> + <Link>Linked\DisplayTextAttribute.cs</Link> + </Compile> + <Compile Include="..\Attributes\PrivateAttribute.cs"> + <Link>Linked\PrivateAttribute.cs</Link> + </Compile> + <Compile Include="..\Comms\CommsSerialInterface.cs"> + <Link>Linked\CommsSerialInterface.cs</Link> + </Compile> + <Compile Include="..\Comms\CommsSerialPort.cs"> + <Link>Linked\CommsSerialPort.cs</Link> + <SubType>Component</SubType> + </Compile> + <Compile Include="..\Controls\BackstageView\BackstageView.cs"> + <Link>Linked\BackstageView.cs</Link> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="..\Controls\BackstageView\BackstageView.designer.cs"> + <Link>Linked\BackstageView.designer.cs</Link> + <DependentUpon>BackstageView.cs</DependentUpon> + </Compile> + <Compile Include="..\Controls\BackstageView\BackstageViewButton.cs"> + <Link>Linked\BackstageViewButton.cs</Link> + <SubType>Component</SubType> + </Compile> + <Compile Include="..\Controls\BackstageView\BackStageViewContentPanel.cs"> + <Link>Linked\BackStageViewContentPanel.cs</Link> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="..\Controls\BackstageView\BackStageViewMenuPanel.cs"> + <Link>Linked\BackStageViewMenuPanel.cs</Link> + <SubType>Component</SubType> + </Compile> + <Compile Include="..\Controls\CustomMessageBox.cs"> + <Link>Linked\CustomMessageBox.cs</Link> + </Compile> + <Compile Include="..\Controls\MyButton.cs"> + <Link>Linked\MyButton.cs</Link> + <SubType>Component</SubType> + </Compile> + <Compile Include="..\Radio\3DRradio.cs"> + <Link>Linked\3DRradio.cs</Link> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="..\Radio\3DRradio.designer.cs"> + <Link>Linked\3DRradio.designer.cs</Link> + <DependentUpon>3DRradio.cs</DependentUpon> + </Compile> + <Compile Include="..\Radio\IHex.cs"> + <Link>Linked\IHex.cs</Link> + </Compile> + <Compile Include="..\Radio\Uploader.cs"> + <Link>Linked\Uploader.cs</Link> + </Compile> + <Compile Include="Common.cs" /> + <Compile Include="Config.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Config.Designer.cs"> + <DependentUpon>Config.cs</DependentUpon> + </Compile> + <Compile Include="MainV2.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="ThemeManager.cs" /> + <EmbeddedResource Include="..\Controls\BackstageView\BackstageView.resx"> + <Link>Linked\BackstageView.resx</Link> + <DependentUpon>BackstageView.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="..\Radio\3DRradio.resx"> + <Link>Linked\3DRradio.resx</Link> + <DependentUpon>3DRradio.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="..\Radio\3DRradio.zh-Hans.resx"> + <Link>Linked\3DRradio.zh-Hans.resx</Link> + <DependentUpon>3DRradio.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Config.resx"> + <DependentUpon>Config.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <None Include="app.config" /> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup> + <None Include="Resources\3dr.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\3dr2.png" /> + </ItemGroup> + <ItemGroup> + <Content Include="3dr.ico" /> + <None Include="Resources\3dr3.png" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico b/Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico new file mode 100644 index 0000000000000000000000000000000000000000..9837bfa41691857f8f57ed0b4a2efe944300826a GIT binary patch literal 67646 zcmeI5378bswa0q|89){lL=%-kHrZF%X6fodlW5#`<ANqJ5g1eu6jYXx9c2^Z(<ovh z2r6#41h82K1VN3)ZIlEPiRg396UAj(N9z4f^}RhcHPt;;vygoG?j(QiJ@=e@&bj|{ ztGc_Yx{XA#_+N2xgn!#bx-`y;w24F_T>wKe=!{EO{#qT9L{c*U8U_plh5^HXVZbn8 z7%&VN1`Gp+0mFb{z%XDKFbo(53<HJ%!+>GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXj zh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53<HJ%!+>GHFkl!k3>XFs1BL;^fMLKe zU>GnA7zPXj|7i?Z&(FOPtWt=2^J6><%m5FA2NlHrDzB}U(X|181S`P`@PG><F9!?3 z7|`1_uQBohApU2AhAv%q<jG(?cuwIV+DkzbZC723Z4MAW8-Vund-_$@F1{Eq0Q12X zpzW8?KiM4%c^r5Y%yy3}ABQn6bA-dWU?h;-g^M0udo81z2!x9}!C|iPM#$#@;aKNX zLjQJfGH9f2t81~{3T%a6d+iy&(xumS(tZG%dF@4J{Hio_-1Bw64BNZF!JrBF2#9VM zI9U0+f&SNOT+eg2FQ7}yqs|eVv%tq`{Oo6Zrps1xk(#;Vc>9l_Z>@4%uWWZ|AG&2+ zYOd$LM_+2H<)3LgZ;Q<iWw(#^SkcpV2HVuQ_Tg>+jQ(`5KR+3}xXah&ZX0Xc-1g}H z<<iT(b#rp2+g|sv(R(UEe<KiXCC9gb@FaK<d<T-bZ{xV%Hn#!tJ8JAT@yFPRlugoB z)+XnUW#BWHZV$FU);V}vbotnR<FXeH<y^DIHD+UXrHZ?>(s(jwspD!O>(ZRBqc6wf z6Kc%KTgS)WK*rtnJCP-KJ^v(a>us^wr0nFFXpOI<X#cLpWWJ2cIY5qk&AIkl&RBP^ zPp@oky)6!Gg;f2m=Wfliw%+=TOZS}2MgECv>}~o>!Tkz<pnU|C1M#^Xj8}cQz3mbm zpWGTC4@CFA(tk&5fj5-=67f6G|Cf@*-*`BvcukP~x%IXk75ZE6)c)NqYiU&3?zV~e z;n%W~f9OVn{mRd~v=^zq#QYMRr){ORw$9CEY)^&Ft(Vh(K*_246SpC2*j8cZaIzD5 znQJV4{kPt>N!fjbpF_c&u6Y|-!!bH9Yuh~P<?tspk-TL+1GGL}Yi*ew2e!h++75ZN zYy3;r(o1yKb90(7{+3Ip=lZq7vAfb`o2tK#6WcO-j7z_m{wqq}W^JB*oz`KuO3!h( zjCaH4Yi0MLwRzSNZoTxal34@L?^iZ2dG(IXmf2f~_boOX!Sl-2#{YOfd&V!pM*9>F zpHy=y>c4r`HQJA>-AR9$OOE;ZS2=A`cJHyS!Sp{-@~6c2J=dYXL)nzm_D|<qk6Rn3 z$ARr&{nQE8v&CJl^;1V6m#Og&Xiw4h(#AH;xKZh3-X5?`;T78bK*qnst~Ko_CCk{Q zZa>mzY%tJsHqze-#CAJasrn*UItJZ-(5-jb4R-6C7#pTt>C(^f>P05k9#+ZBUe=}= z4Xh2*WE~Ro8z4WgSLKiK!@>JN>^=t1tA6rzYyH$5{Cwupzp47NzGbR!!}a-a-Ub}0 z@FUv8B_KANl-(|TNlhe{;68Uk_?QJA$L4W#|5P^RwAI!>wsuk+*b3j#CR{S(li!G~ znRr2L_4UqsF^L;nH>D#sUpaPbCdG9w$ftq*&iLBND;(Rklden3PK+w`N7osAp={o! zeOL8&&<Z5C??FEu$J>(Q-OA1;*Hf$NCrwT1*G?Mg)w|``y2;J3{Z!figSMqxultNQ z052=MFKJ&?{a3{%wr0{wCENJChW=6|@1$Lp(yg8J8U6Rc|0;Y)yBahE>w&C)7nrX4 zQj;k<4=2{zNq?)*rD`ej2D<J1`mrajj|00h#vu#b<KrHVJy_IO`-rW+;W4Ezi#;~B zr<2DM<5s8UJT=~VT|*w58hhgUs`X!eeJAvLmCf6<@2dU|_S_4=2HycEhK}!U(fv-@ z*|8_bS9wp0ZfZ)u`ug9v=X(3Bt2wrxD*IjJ;`<o~eHQq$vilOdmsH+cV~>wLRrMwJ zm&vIi@<VEDC+)J7z7oeNzTZGEbJi=nUHF-<Vo7Z#yYnXJiQtdK`D5&<2^#kyw{zS1 z^<yhX#)0kNp;6Ofk6b$d<bpxqY-;{`O21-6>h(MJ(5SOr<2S_~7~TeXpBj5T_VCrt z`2u-t%5LSzs`Y<h_(1eOD4R{RJ5_%>u~z{*_7GSx;^%((%NRCKI(A9hAznLlzfS2_ zj+pAzdu422SN40!rJYwVa_qs8hhXzJW%ns|+g0AXY2Q};AK<}q>{pI_RE^2{mZ`oS zdvMg9v4^i24aO*pqrH&vgRt44>~_KTSQSfZHP0`nnvBJkTowm*Y{{i|Z0WFHczwj~ zz3hynUTiK~qV=&q{IUtUchuY$V)tA+F=e;(^6OG|OD-Fm8ozf~)%xFa$#9qcE_}YC z<gKx#m){(_cbM&9$z_YQPj?%;=aR$Gf2!<0qpkA3h+GFMy{sYidR58KlFP1&-F?Xz z>-WFtiS3h){nE?r*xeUb$yw&H-a>53mESG+eLA%chfnxgI_z#81Kp!azms-Z%J$x2 zRrafE&L(B|E?k^UtgltPH?6xbNxdFxdue08|Ha7IT^C(o-FaaL>#mCqa_jv1*6nA+ zfo<J>rfn@e?E<fjwcxaytVQS?n=?}N7dyshsPP2tH>&@IwfO8~v>(RCs&Vmgt{!*h z&po*}WACQ)i_ScQ{%cBp0Y5#hMQ7~;HuyTW;M7XjG^{x%9gOY$)}pgTZ(EDcTIu$$ z`_}Ky$wvPdWm9e~JU#U}*U4kvDgDrWOFVp>{gJi!oEse5WZd_x`KMHR?XhnA*-@;0 zN6KdL*`tvkNUbBu)rZ#qT#(v}=pI%2owUnRwhK?s)p>ebd~Q;9ACgxa@N_aJdES2d zT-INyzOjX;{Z_3(*72(KyK{Z_h&xVnMt&UF4yFxR7o9d}estR4g<x@XdhVYXPbBqu zc64U!;!1O87j{Eemeh+6v5DSa$!13W*pz;H?pplMi%uJIZ*+RzGmP&|>X<hp`cQOM zEE^xYoU!S7$@kH7h8A11EIWx<0{;(SBR+4jW?C;*=&aAIxj*gdj_vMSbB3O7&59~N z)(`kuiJ#HY83haQ@kz?h?AU$Qtv_jC&5Avd8bgoW9ZCEAxs3lkrJEgl*}C<lrsy6| zu0`=MD|V$jKDtMhekbj+l<o8(kHN_T#kugF<bK-V5%}Eb*iFy-C_2kJ+?xBd-mKxv zRP347HuS~VT_@`y=O2<f);W7<>KyFO!`siFaO_rKC()MHgYoDD6LKCdnAo+-b!Eoa zR?I)vF1Wc<p*se;32uEQ{}sMBM2q{k%D<^Yqx=cSeCXJZKXw<s8%C!OI*7Q73vTLQ z7u?iQ{8vC^!Hpe1h!*!rdmTmRQ!ugHDExet^yBj7_!0k|wnV27ajqXwhr^JcO&`~> ze<?a`U<dJ^KmM5YDsQ-Ix4vLf_e#emx@Qy*@6kT2`c?U^;Qu9To>zAJ@b8>cqqp?? zdBKexK5^FI%LjSg+~q!NW`4EDzT}--lsy~7!8#9~MP8dbD*OK2s~caLcYPaQf4QR? zpPF0LNNfd5az{0-v_}{_PwCwLlfH|xm*riZeQEynM>)Q8M>cAL?H_>Tb64(&h7Bc0 z`O6#A;;h_jny$*dy2)GMBk+Fi)lIkMjXq>@{<zjZN?KL_Z{FBeee<qqx|I2Excrpl zUEAzhIBx3pkblF`*?FUzT}9kA*uDck2D_2hF<ylIA=*B7WcE}i?~#qx<X+o6bx$j$ zFUp>*)^#uK4L~?>bK>rcZYG!mgo}rAM;z?jXApmRV_Ub)yY`Totp5e_`2YwXe?xvI zZ*=pE3nsKrUE9?0|6AH2BN`k6T7$!LiyGE=oy>2d{RH7=$nb_Oz!BikAod5shCR`c zd|H9lp!tD_X<`@#3<Li?3|QOe7k~@Ec^;f^y}HP`=Ug~2Kc_Gj8|aTh#@+DRIl2?D zISyopWsaCX1?PkFk|?BgLytS{IoLSYYiT84*E~lr@@XpH-n2&-T7@-!4bf}C&ymWf ziwj>Kl6q@sj-FdzZJ`xAn6*~=-0Bz0dVU_ywanw5u@C;T$hr1WI4JKfeA%_cUgp06 z9*9}ixv{9#!Y?2181{b;8P|F5#hix&%=;Ldm%$QnJ~>sncj(Q>PiF45APhfu`1z@; zG1k$T`mY4HRp*m?o^fFN;>CH+^}yJG+{O5`>lnN6ca2pLP2E%Q%N3i_5OEXOI(wdW zd5C#>ZSON@F*#NHERj1`<`jjDwa`7kF8k!(gj^n1`An_OckJ<TabWvm?F6U(7WK!k zT~F8+%`fPaE>B{XhKQTM)~P@3@(}a9Yx{<|bI9wkba}bQu`LQ2t6u6~ke}a_oFBLH z3v7j3+<E%-ty>Fs0NWP}3Z3hu1q1UJ<J+!36nvJSmw$#|eg*jjrGVIhkigEVKkf2> zbE^1;Lp}C-L0*1=UtaDp;uM99Rp<53%gt*Fhfe_8g=*`ccWtAefMLG4uHkXA&b)!q z#rU`D8D;oC+0Co;^K<h{fgKPD?40`3E)O`TI^W-r*D!BhZkaemA!F5P{c{KBHq9H7 zw;I?UR9k=R%w9)>PX6fKT-KR8D0dMt>;r($h;h7|TjbIZaTC}&^@oS$9xlAxgptef zJIbAxyN|9YM2^B^oz;KvputV?_hg#*)z-f-dg5ka`(bGGMCX1#F_r-PKw!wAA?rZ{ z%`g2@U<X73JE#6b1`k;d>^j5`tiRHILsyPP0rS)AsFV5+8aSvaIX#`BF4foHipBYy zV5h-FvPR-O0_+2Z0fR2o+!C`iMBD_nPW|Czc?Mo;x|hGjf0g$Gj1`5*QFyF%{Rf^f zu-TvigZ>2U45+sLd`^gG`0V1;pIEDaeE{(yv7CE90|yK&1$ICruyg7UC(ASNl8LkG zbngu4KcJP~pVAVuC}4hi9kr_e3H=8&Cx<lw>QQa|`P>rE@Y%(wKk=Rh_5nmWu?7gY ztg{r@0g=GYsXy%_0p|qu?Y67*91L-aLdL3b{rmOn-=crN6V?Jd0IID&pLOE$dB+z8 zQK$aIxf-kh%RE?)yb#O)vwR@qcY^mokbK=XH%a}OR~lk&0$Zp4v?G8!=lhXYf#<>d zz#S`8|AhW0e9!!R$xr_17lrg!qx$#l)2~IpzWvt%J0NORf6fce^`GP_YyK~}w&~ZW z|6{-o3fB6RL}YGhz_kh|3E+HBB~!N4swH-(fu})GF1>btBF8M1V^K&yq3hqfSKk(W zd-r=5*db7D{kc{UcU>=VUptU~oz!1A>f5`2cAs8-w*xyM-oUOAYkfV$dK1`ITYvZ7 zpoW(+=kpLTH2>fC>D|})PC}pF{fdAc0-@^Pt7q>Py?gbE13M&A-)D8N+1=;bMm)oH zojR+(#3c7~diCtHAJ_r#Pi$JT?_UM1I}j4sg{r^g#XcLtypIFMaOW~#t*a<xT>{s? zXZKz$ssBa*XQ6S0<d^9$Z!q;A%ylDw)M@>D_UP3fd<E<P_!yg`S@T~)tUG~i==uvk z%*zAcgoq{ec$*xvXorWK7pVT-yY)P*NB5qa*aLPL^hnxI%2ao)<GN8i&9x)BPF1J% z@6oMiZ;$|X0DR8c+x6_;^A*7Q10jK3jp{FaP|FDc_N9C8e$P6Nr8d6`Qy*-rt$)|9 zJr3{IwMR+!u03qpQ0U&Z=gqpl)wNtBiD$S@Qm6H29n(UrWe>JTu>MztgMdh2SL6Cq z%WRIhw}2f2XA|@CfcfclWUPPJF5O#!5@6Q=^Qx=4TYsSH-{tsjC$g4(A=dLYwvEAS zA?75ot#SQ@7xvr@A@-;omlKJ3X^0%9rfKVceCMvM;A%6lL*fVQ=euhgq|dd;c!q12 z8IS+Yow~LJ&A}mQ(3tUKS<~p_J9pa`ay{!Mf98~in3uq|R`sVg{lNDj>Uj?_FAI^Q z)YZ5CojP`D1z%f$T?0HDq~2Z|t|7)VTt}>~{=>*~H+To^^1)vj`xMk<J<j_V_D(6V z10sQ4t?JJ{Z3g}q5Hk=~vA*FU*I1?g9XoVx)v4q0TY()E9XlLvC(+sN(7yA&4(&Sy z`p%Dg57egqojP`HNUpPqOMF3R@^K^hT0CnmM;;`3a!iy0I0=LVcD1TMbvzin9-^MB zh&eo9etI31>fipjPDjAs_R8F8PAl5>$91$dgm1AI-sD^*?_0T+A<wOZ+5=o?k7u~9 zpYizD`-s?6xEA8PXOi=v<RrOCj>om@=s@SqTGd|hw$2`Q_7L-SFyFcV!~QO<*ynn` zr)?A1)~f#GelU1l)({Y@$aT1^Hw04kZ<o`d10206JPAkAGUgyTmaMbvM|n>w*G>BO z>+jr)mFqTEG-~ratv$4`&^~eKP<aOR2T<wvT6CTKTCRo0GhDk4RDbb%(uqUI$TP5# zOO$5?B{%t8A$zMY*L{2T=<R%lk@L7dXUSgB>&<D~-p*;8T6gMurf^bPv3EMMKLp;r zladqYYE^%7YK)I}GsN)5e}p+B+&Rjcsv@~IRa>Y2tob11(clTN0(k{{Xa!uY7;wUX z2jFirJbtcgEc~80G+Ae<w}y;+AkR!6>Q`^?7}u@i8LnLiuD|#t=9OT-&P(q}$vHWe z%v1J=JTI3!B-hy^a_?03pq#(>%>NvFB=x;N`p)@ZA6t6Q9M`S``$hIlB_xn*Re$Dp zq!!<T)Nz=pPo3`rmrGvB*FQOLbaCGA$X=Jv5^_C8t`Exk<aii3Ao%@%c*_}D7+d72 zueaWQ@&s?K{bcUP#53HJ2~~f!2YyYi<<;d|b&m{{y}gg|zV1BnQ)=<-d9*;D$;@}o zE3$9oxgLGpf@4MBn@+%Qt?JLY^;i0}RO+Q6$B2HN9Kf>>IyQMsC7(;=d?)$Ixli(y z^}E+7eSPe5o=%<r-D}O%$KR~#IQ8iNid^aYtbYEv?-9>%?;~{mB?fVS1*+Wxo_ytX z>oRYSjFpO=m&*!1HLp&afa4n1pSf9Ja~j{OewE@$UKfC2GDpL+F27^5CiQQI-#r0* zyW<sl`Si-%^WeTx+IuTCs=ve_&tHP?1LiBW|BW{{<;SUiKtBoWYFvNjo)IvP=2-IP zdu`5s*JDB2(DhebtO}W*^9+R_uX?N(_Z5Mi1~sm~%J&NLt?oSV5jK^67e?o%d>oMa zlS3P@3k0d3ws{--gTPfG=hd|Sw}*`Lu$xQ2KKHHS8SY)xs{X2e!^qih56H2z9JKe# zOOK(i_xcl~Ifw&Y*P!hJwZ@{5b8A}vAm3?p=e|+%n6Bl$PF&vaq(QCgulTtXe!P1? z<QvoFrN^<U*ZSlC$6!5h^A@BpuWiorAGGyee_|X8J^(>-(>BgEbj_t-%jc~)kk4IJ z(XD5l)L-I~_vzsOeDcruj1u-?&dKun?>ztKw^sKUc5>dn80-d`uQ2Tz<~h%Q(T4s0 z?|gSILHfkFqXv0ysLnUnl;Uacb#|$!Ke6+{1R!gz3FI@uM&QS>?{6$i?$|$_W{#g9 zsejt<?xH&!^arEC3&77ukTE&-hiGo;pBd7Ze4oB0Xq5qnp=%3H0Z)P;d3kNt=^WFw zT%U-iyWiQhOOMp?KeRB`i5%XnVIJPR{Ny6P9Eo=X*c>qKe(e4M<b9bJI~kMn=Xby_ zeweXE-dyo1$3##cUtues<s_eUcpu%rKv184c9ot}_vS1z_YUG2?scZ>FSg_&?~%9F zGAF-0_1M)C$NNV-IZlG^0qv{4S~&)s-x%@9b8J0wQ<L?K@#g52xnC2{aPPWO{bere zYYn#6<2tYP=BVPzxx1tu;|AgPbK*Pi`TTNJc~1K`=cv~q@2{PEsOfT*@v!w*Yn0=$ zKKH<AznqCF?}0Y~y~YFC%6p4I_tmhw<=>Q}n~yihq0(<L`f<vA#dwB$-Bpf%?E~NP z{-i$7$-d_<VzvMqfP1a=-Iv$v)Nh|_4l=da7a!mpy&PPhDL<{_UR6B9vkPhKFY{TS zoRc@z<2rqxWgwpHf%<$O;^y)bV*OO}6{cn06yWxCp!$C$uJ3ykZ~nEZzxX1K?13%y zxXy9joK@Uoh$+9_RiB)`i2p#>6Z~>ic}}k99KGw8&o|ZH_tE)sUp=nxt^2eYkALlh zct?ZR>T#XE=Q0(yKK6jTcbWs5={44-#m_|Gty6u-QhVRus7RMT&$+}iJnIsu{^Fas zay-`O9`JphftWu6e+G5M=TrC^l8&#Mj^p#DI?T~;t#X~T%I_ytmoLvPZFN7p<mnHq zZoXSj{2zl?>T#X&zB=`6kdDpRkwDJXe!K)3lj|&UFUrzB>!Zd0jkU-z-8$qm=^}7c zO>*YhrE9=$;C*Io7h`GvdkX1dk%#Pob>J-^_ipM6;!m#O`TqA(8J9h<1Ek~0J-!b+ z$?HMzOVBRedg^+dSmS{^mzwnDJ?V2muE#t7{ejx#NuAs9jN5qdEZ6{UVeH7-_$05! zAiIvy1b?aD-1p{(?kI2_5RPwfL3sKtI2YuBP9Wp&j(UC9rA+J#ft(B6IcDlh{&Ic! z955IhQ<wROFKV6x&H?9xPIc}7K=~7HK#m9Pkmb7Nzpdu(^^-?SAUS#SOec%2oL58t zezrTV=^F+N1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(5 z3<HJ%!+>GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{ zz%XDKFbo(53<HJ%!@z$A1Gf1y3}j%SygX-j%LTLSf0pM&k5BBKQdZt_ch>wYyLfb? z{Om7Ea>~jUltku6?8p@dAs4qS+gsAGY<Ah?XovR(XMfRhLD?52&B_~>PmX5qMb24J zwr6*<@~ra7*7m)9vcEW{Wm$tgbCD-b*}k`Z<k0+<WsyC{RLIemWfS&^EcT5We34_9 zm5<36e<I@#d33&t*TRVxDa(({Zf7@cH??i#u&Fs^k+O+dbDezKMzYAaLHWe&1=;rI z^0rpHtld*GEIp8_j9&w@$|6@}+500ow*8^VEaHlY<;dGbZXj|?N1i2emdM$ToNbqL z9uT>K$orG>1mrA{%d^EkG8j1`a+yn>jJ!7~A0_%I@@|*h7P%z5tOfIrityX1A{S?u zwItETktus4Es!H3+ai~Xygw-yBkzwiisY2D6!aq7BA4-hEf*v2W$9|ZE%I)cT!LH@ znS$PlXO|ol$tjN5WspNYQye)`S#BE<`~4|BKWHNUW&Mslat?B_mdQ`#lE?(*Z@-i8 zZup$y<YPPXUify)Wz-|Np5*!=S*<rI?<d71ABrEbFLUuD@^0a?T==4%Qo~4&{DWL9 zrQ*+`Bk@aE6}`xmV*WwityJXg$a|SeH_JvL>wzD!X<*Y48Ryy9BzK18@IwL-;nm>_ kek1{lIy!v9Ph>JZ>W0&D;fDmWkxQ6lvq{aLVL&tR|C)G!>i_@% literal 0 HcmV?d00001 diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs new file mode 100644 index 000000000..f3d229dc0 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Security.Cryptography.X509Certificates; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Xml; // config file +using System.Runtime.InteropServices; // dll imports +using System.Drawing.Drawing2D; +using log4net; +using System.Reflection; +using System.Windows.Forms; + +namespace ArdupilotMega +{ + public class Common + { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + public static bool getFilefromNet(string url, string saveto) + { + try + { + // this is for mono to a ssl server + //ServicePointManager.CertificatePolicy = new NoCheckCertificatePolicy(); + + ServicePointManager.ServerCertificateValidationCallback = + new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; }); + + // Create a request using a URL that can receive a post. + WebRequest request = WebRequest.Create(url); + request.Timeout = 10000; + // Set the Method property of the request to POST. + request.Method = "GET"; + // Get the response. + WebResponse response = request.GetResponse(); + // Display the status. + log.Info(((HttpWebResponse)response).StatusDescription); + if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) + return false; + // Get the stream containing content returned by the server. + Stream dataStream = response.GetResponseStream(); + + long bytes = response.ContentLength; + long contlen = bytes; + + byte[] buf1 = new byte[1024]; + + FileStream fs = new FileStream(saveto + ".new", FileMode.Create); + + DateTime dt = DateTime.Now; + + while (dataStream.CanRead && bytes > 0) + { + Application.DoEvents(); + log.Debug(saveto + " " + bytes); + int len = dataStream.Read(buf1, 0, buf1.Length); + bytes -= len; + fs.Write(buf1, 0, len); + } + + fs.Close(); + dataStream.Close(); + response.Close(); + + File.Delete(saveto); + File.Move(saveto + ".new", saveto); + + return true; + } + catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; } + } + + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs new file mode 100644 index 000000000..5bc3522d9 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs @@ -0,0 +1,146 @@ +namespace _3DRRadio +{ + partial class Config + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Config)); + this.CMB_SerialPort = new System.Windows.Forms.ComboBox(); + this.CMB_Baudrate = new System.Windows.Forms.ComboBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // CMB_SerialPort + // + this.CMB_SerialPort.FormattingEnabled = true; + resources.ApplyResources(this.CMB_SerialPort, "CMB_SerialPort"); + this.CMB_SerialPort.Name = "CMB_SerialPort"; + this.CMB_SerialPort.SelectedIndexChanged += new System.EventHandler(this.CMB_SerialPort_SelectedIndexChanged); + this.CMB_SerialPort.Click += new System.EventHandler(this.CMB_SerialPort_Click); + // + // CMB_Baudrate + // + this.CMB_Baudrate.FormattingEnabled = true; + this.CMB_Baudrate.Items.AddRange(new object[] { + resources.GetString("CMB_Baudrate.Items"), + resources.GetString("CMB_Baudrate.Items1"), + resources.GetString("CMB_Baudrate.Items2"), + resources.GetString("CMB_Baudrate.Items3"), + resources.GetString("CMB_Baudrate.Items4"), + resources.GetString("CMB_Baudrate.Items5"), + resources.GetString("CMB_Baudrate.Items6"), + resources.GetString("CMB_Baudrate.Items7")}); + resources.ApplyResources(this.CMB_Baudrate, "CMB_Baudrate"); + this.CMB_Baudrate.Name = "CMB_Baudrate"; + this.CMB_Baudrate.SelectedIndexChanged += new System.EventHandler(this.CMB_Baudrate_SelectedIndexChanged); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.MinimumSize = new System.Drawing.Size(781, 433); + this.panel1.Name = "panel1"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.CMB_SerialPort); + this.groupBox1.Controls.Add(this.CMB_Baudrate); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.label2); + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.panel1); + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // pictureBox1 + // + this.pictureBox1.BackgroundImage = global::_3DRRadio.Properties.Resources._3dr3; + resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.TabStop = false; + // + // Config + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.pictureBox1); + this.Name = "Config"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ComboBox CMB_SerialPort; + private System.Windows.Forms.ComboBox CMB_Baudrate; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + } +} + diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs new file mode 100644 index 000000000..02e1d7437 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace _3DRRadio +{ + public partial class Config : Form + { + public Config() + { + InitializeComponent(); + + ArdupilotMega._3DRradio form = new ArdupilotMega._3DRradio(); + + panel1.Controls.Add(form); + + ArdupilotMega.Utilities.ThemeManager.SetTheme(ArdupilotMega.Utilities.ThemeManager.Themes.None); + + ArdupilotMega.Utilities.ThemeManager.ApplyThemeTo(this); + + CMB_SerialPort.Items.AddRange(ArdupilotMega.Comms.SerialPort.GetPortNames()); + if (CMB_SerialPort.Items.Count > 0) + CMB_SerialPort.SelectedIndex = 0; + + // default + CMB_Baudrate.SelectedIndex = CMB_Baudrate.Items.IndexOf("57600"); + } + + private void CMB_SerialPort_SelectedIndexChanged(object sender, EventArgs e) + { + ArdupilotMega.MainV2.comPort.BaseStream.PortName = CMB_SerialPort.Text; + } + + private void CMB_Baudrate_SelectedIndexChanged(object sender, EventArgs e) + { + ArdupilotMega.MainV2.comPort.BaseStream.BaudRate = int.Parse(CMB_Baudrate.Text); + } + + private void CMB_SerialPort_Click(object sender, EventArgs e) + { + CMB_SerialPort.Items.Clear(); + CMB_SerialPort.Items.AddRange(ArdupilotMega.Comms.SerialPort.GetPortNames()); + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx new file mode 100644 index 000000000..c2d6487d8 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx @@ -0,0 +1,1533 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="CMB_SerialPort.Location" type="System.Drawing.Point, System.Drawing"> + <value>47, 14</value> + </data> + <data name="CMB_SerialPort.Size" type="System.Drawing.Size, System.Drawing"> + <value>109, 21</value> + </data> + <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="CMB_SerialPort.TabIndex" type="System.Int32, mscorlib"> + <value>0</value> + </data> + <data name=">>CMB_SerialPort.Name" xml:space="preserve"> + <value>CMB_SerialPort</value> + </data> + <data name=">>CMB_SerialPort.Type" xml:space="preserve"> + <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>CMB_SerialPort.Parent" xml:space="preserve"> + <value>groupBox1</value> + </data> + <data name=">>CMB_SerialPort.ZOrder" xml:space="preserve"> + <value>0</value> + </data> + <data name="CMB_Baudrate.Items" xml:space="preserve"> + <value>4800</value> + </data> + <data name="CMB_Baudrate.Items1" xml:space="preserve"> + <value>9600</value> + </data> + <data name="CMB_Baudrate.Items2" xml:space="preserve"> + <value>14400</value> + </data> + <data name="CMB_Baudrate.Items3" xml:space="preserve"> + <value>19200</value> + </data> + <data name="CMB_Baudrate.Items4" xml:space="preserve"> + <value>28800</value> + </data> + <data name="CMB_Baudrate.Items5" xml:space="preserve"> + <value>38400</value> + </data> + <data name="CMB_Baudrate.Items6" xml:space="preserve"> + <value>57600</value> + </data> + <data name="CMB_Baudrate.Items7" xml:space="preserve"> + <value>115200</value> + </data> + <data name="CMB_Baudrate.Location" type="System.Drawing.Point, System.Drawing"> + <value>47, 41</value> + </data> + <data name="CMB_Baudrate.Size" type="System.Drawing.Size, System.Drawing"> + <value>109, 21</value> + </data> + <data name="CMB_Baudrate.TabIndex" type="System.Int32, mscorlib"> + <value>1</value> + </data> + <data name=">>CMB_Baudrate.Name" xml:space="preserve"> + <value>CMB_Baudrate</value> + </data> + <data name=">>CMB_Baudrate.Type" xml:space="preserve"> + <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>CMB_Baudrate.Parent" xml:space="preserve"> + <value>groupBox1</value> + </data> + <data name=">>CMB_Baudrate.ZOrder" xml:space="preserve"> + <value>1</value> + </data> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> + <value>Top, Bottom, Left, Right</value> + </data> + <data name="panel1.Location" type="System.Drawing.Point, System.Drawing"> + <value>1, 19</value> + </data> + <data name="panel1.Size" type="System.Drawing.Size, System.Drawing"> + <value>781, 452</value> + </data> + <data name="panel1.TabIndex" type="System.Int32, mscorlib"> + <value>2</value> + </data> + <data name=">>panel1.Name" xml:space="preserve"> + <value>panel1</value> + </data> + <data name=">>panel1.Type" xml:space="preserve"> + <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>panel1.Parent" xml:space="preserve"> + <value>groupBox2</value> + </data> + <data name=">>panel1.ZOrder" xml:space="preserve"> + <value>0</value> + </data> + <data name="label1.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> + <data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> + </data> + <data name="label1.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 49</value> + </data> + <data name="label1.Size" type="System.Drawing.Size, System.Drawing"> + <value>32, 13</value> + </data> + <data name="label1.TabIndex" type="System.Int32, mscorlib"> + <value>3</value> + </data> + <data name="label1.Text" xml:space="preserve"> + <value>Baud</value> + </data> + <data name=">>label1.Name" xml:space="preserve"> + <value>label1</value> + </data> + <data name=">>label1.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>label1.Parent" xml:space="preserve"> + <value>groupBox1</value> + </data> + <data name=">>label1.ZOrder" xml:space="preserve"> + <value>2</value> + </data> + <data name="label2.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> + <data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> + </data> + <data name="label2.Location" type="System.Drawing.Point, System.Drawing"> + <value>6, 22</value> + </data> + <data name="label2.Size" type="System.Drawing.Size, System.Drawing"> + <value>26, 13</value> + </data> + <data name="label2.TabIndex" type="System.Int32, mscorlib"> + <value>4</value> + </data> + <data name="label2.Text" xml:space="preserve"> + <value>Port</value> + </data> + <data name=">>label2.Name" xml:space="preserve"> + <value>label2</value> + </data> + <data name=">>label2.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>label2.Parent" xml:space="preserve"> + <value>groupBox1</value> + </data> + <data name=">>label2.ZOrder" xml:space="preserve"> + <value>3</value> + </data> + <data name="label3.AutoSize" type="System.Boolean, mscorlib"> + <value>True</value> + </data> + <data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> + </data> + <data name="label3.Location" type="System.Drawing.Point, System.Drawing"> + <value>184, 25</value> + </data> + <data name="label3.Size" type="System.Drawing.Size, System.Drawing"> + <value>176, 39</value> + </data> + <data name="label3.TabIndex" type="System.Int32, mscorlib"> + <value>6</value> + </data> + <data name="label3.Text" xml:space="preserve"> + <value>1. Please Select the comport + and baudrate for your 3DRRadio. +2. Then click load settings.</value> + </data> + <data name=">>label3.Name" xml:space="preserve"> + <value>label3</value> + </data> + <data name=">>label3.Type" xml:space="preserve"> + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>label3.Parent" xml:space="preserve"> + <value>$this</value> + </data> + <data name=">>label3.ZOrder" xml:space="preserve"> + <value>2</value> + </data> + <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing"> + <value>12, 9</value> + </data> + <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing"> + <value>166, 67</value> + </data> + <data name="groupBox1.TabIndex" type="System.Int32, mscorlib"> + <value>7</value> + </data> + <data name="groupBox1.Text" xml:space="preserve"> + <value>ComPort</value> + </data> + <data name=">>groupBox1.Name" xml:space="preserve"> + <value>groupBox1</value> + </data> + <data name=">>groupBox1.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>groupBox1.Parent" xml:space="preserve"> + <value>$this</value> + </data> + <data name=">>groupBox1.ZOrder" xml:space="preserve"> + <value>1</value> + </data> + <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing"> + <value>12, 82</value> + </data> + <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing"> + <value>786, 477</value> + </data> + <data name="groupBox2.TabIndex" type="System.Int32, mscorlib"> + <value>8</value> + </data> + <data name="groupBox2.Text" xml:space="preserve"> + <value>Settings</value> + </data> + <data name=">>groupBox2.Name" xml:space="preserve"> + <value>groupBox2</value> + </data> + <data name=">>groupBox2.Type" xml:space="preserve"> + <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>groupBox2.Parent" xml:space="preserve"> + <value>$this</value> + </data> + <data name=">>groupBox2.ZOrder" xml:space="preserve"> + <value>0</value> + </data> + <data name="pictureBox1.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms"> + <value>Zoom</value> + </data> + <data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> + </data> + <data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing"> + <value>445, 5</value> + </data> + <data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing"> + <value>353, 81</value> + </data> + <data name="pictureBox1.TabIndex" type="System.Int32, mscorlib"> + <value>5</value> + </data> + <data name=">>pictureBox1.Name" xml:space="preserve"> + <value>pictureBox1</value> + </data> + <data name=">>pictureBox1.Type" xml:space="preserve"> + <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> + <data name=">>pictureBox1.Parent" xml:space="preserve"> + <value>$this</value> + </data> + <data name=">>pictureBox1.ZOrder" xml:space="preserve"> + <value>3</value> + </data> + <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> + <value>6, 13</value> + </data> + <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> + <value>810, 566</value> + </data> + <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + RQM/h0CwP4c//z+HP/8/hz/qPoU9lT6FO3A+hTyMP4c/3T+HP/8/hz//P4hAzT+KRAo+hTuvPoU8/z6F + PP8+hTv/PodAZAAAAAAAAAAAAAAAAD6FPK0+hTz/PoU82D6FPKM+hTz/PoU8/z6EOa4+gzePPoM4kD6D + OJA+gziQPoM4kz6DOGk+hTu+PoU8/z6EO+g+hz8SP4xHLz+HPvI/hz//P4c//z+GP8U+hTyAPoU7cj6G + Pqc/h0D9P4c//z+HPv8/iEJyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHgdxDx4 + Hf88eB3/PHge/zx4Hv88eB7/PHge/zx4Hv88dx3/PHcd/zx4H6o9fCkGAAAAAAAAAAAAAAAAAAAAADx4 + H7g8eB3/PHgd/zx4Hf89eyVBAAAAAAAAAAAAAAAAPHgdeDx4Hf88eB3/PHgd/zx4Hv88eB7/PHge/zx3 + Hf88dx3/PHgfvT6AMxM8eiMGPHgc5zx4Hf88dx3bPHgfBD6ENwI9fCmTPXoj/z16JP89eyX/PXsl/z17 + Jf89eiT/PXok/z15JOU+gDBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9fCpsPXoj9D16 + JP89eyT/PXsl/z17Jf89eiT/PXoj/z16JcI+hDkVAAAAAD6DOBE9eiW6PXoj/z16JP89eyX/PXsl/z17 + Jf89eiT/PXoj/z16Jcs+gzYjAAAAADx3HLw8eB3/PHcd/zx4ILw9fSsCAAAAAAAAAAAAAAAAPHgdtTx4 + Hf88eB3iPHgdqjx4Hf88eB3/PHge/zx4Hv88eB7/PHge/zx4Hv88eB7/PHgeyzx4HcY8eB3/PHgd8zx3 + HBwAAAAAPoEySj15I+o9eiT/PXok/z17Jf89eyX/PXsl/z16JP89eiP/PXsonz+GPAUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6aweIOmsHuzprB7k6awe5OmsHuTprB7k6awe6OmsHuDps + B6I6bQhkO3UWBQAAAAAAAAAAAAAAAAAAAAAAAAAAOmwISzprBro6awe6OmsHnDpsCgYAAAAAAAAAAAAA + AAA6awdUOmsHujprB7k6awe5OmsHuTprB7o6awe4OmsHozttB1w8dRgFAAAAADpqBgk6awegOmsHuzpr + B5g6aQQEAAAAAAAAAAA7cQ5QOm4KqzptCdY6bQnoOm0J5DptCsU7cAt+PHQUGQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7cxMxO24KnjptCdM6bQnoOm0J5DptCsA7bwxvPHccCgAA + AAAAAAAAAAAAADx2Gwc7cAxnOm4KtzptCdw6bQnpOm0J4DpuCrk7cAxrPHccCwAAAAAAAAAAOmoHgjpr + B7s6aga3Om8NLwAAAAAAAAAAAAAAAAAAAAA6awd+OmsHuzprB506awd2OmsHujprB7k6awe5OmsHuTpr + B7k6awe5OmsHuTprB7o6aweGOmsHiTprB7s6awepOmkFFAAAAAAAAAAAO3MUHjtvC4Y6bQrJOm0J5Tpt + Ceg6bQnaOm0KtTtwDVo9eCIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWkDCzlp + AxQ5aQMSOmsEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAOWkDCTlpAxQ5aQMSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWgEDjlo + BBU5aAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADppBQQ5aAQTOWgEFDloBA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pvk/PT4tAAAAAD89PqQ/PT7/Pz0+/z89 + Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PvY/PT6JPjw9EQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD89Pms/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89 + Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PDwKPjw9rz88 + Pf8/PD3/Pzw9gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4pByD+KQf8/ikH/P4pB/z+K + Qf8/ikH/P4pB/z+PQV8AAAAAPTY8kz08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08 + PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw97Dw7 + PE4AAAAAAAAAAAAAAAAAAAAAAAAAAD08PdU9PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08 + Pf89PD3/PTw9+T08PS0AAAAAPTw9pD08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08 + Pf89PD3/PTw9/z08Pf89PD3/Pjw9/z08Pf89PD3SPTs8PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAPTw9az08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9kAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAOzo7Cjw7PLA8Ozz/PDs8/zw7PP88OzyBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA7bwZFO28GXjtvBl47bwZeO28GXjtvBl47bwZeO3IEIQAAAAA7Nj6TOzo7/zs6 + O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6 + O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7+Ds6O0gAAAAAAAAAAAAAAAAAAAAAPDo81Tw6 + PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz5PDo8LQAAAAA8OjykPDo8/zw6 + PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6 + PP88Ojz2Ozo7XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8OjxrPDo8/zw6PP88Ojz/PDo8/zw6 + PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88OjyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo4Ogo7OTuxOzk7/zs5 + O/87OTv/Ozk7/zs5O4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9PLhs/Ty4lP08uJT9P + LiU/Ty4lP08uJT9PLiU/Ty8NAAAAADo3OpI6ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4 + Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4 + Ov86ODr/Ojg67Do4OicAAAAAAAAAAAAAAAA6ODrVOjg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4 + Ov86ODr/Ojg6/zo4Ovk6ODotAAAAADs5O6Q7OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5 + O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv8Ojg6bAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADo4Oms6ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4 + OpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA4NzgKOjg6sjo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6gQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAQT5DwUE+Q/9BPkP/QT5D/0E+Q/9BPkP/QT5D/0I+Q1sAAAAAODc4nDg3 + OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3 + OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/OTc5vDk3OQMAAAAAAAAAADk3 + OdU5Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5+Tk3OS0AAAAAOTg5pDk4 + Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4 + Of85ODn/OTg5/zk4Of85ODn9ODc4XwAAAAAAAAAAAAAAAAAAAAAAAAAAOTc5azk3Of85Nzn/OTc5/zk3 + Of85Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzY3Cjg3OLQ4Nzj/ODc4/zg3 + OP84Nzj/ODc4/zg3OP84NziBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBP0C7QT9A/0E/ + QP9BP0D/QT9A/0E/QP9BP0D/QT9AWAAAAAA3NjesNzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2 + N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2 + N/83Njf/NzY3/zc2N/83Njf/NzU3VwAAAAAAAAAANzY31Tc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2 + N/83Njf/NzY3/zc2N/83Njf5NzY3LQAAAAA4NzikODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3 + OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj3NzY3PQAA + AAAAAAAAAAAAAAAAAAA3NjdrNzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2 + N/83NjeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADY0Ngw3NTe2NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N4EAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA+P7tAPj//QD4//0A+P/9APj//QD4//0A+P/9APj9YAAAAADY0 + Nqs2NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0 + Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDbKNjQ2BAAA + AAA2NTbVNjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nvk2NTYtAAAAADc1 + N6Q3NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1 + N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTfcNTM1EwAAAAAAAAAAAAAAADY1Nms2NTb/NjU2/zY1 + Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1NpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0MzUNNTM1tzY0Nv82NDb/NjQ2/zY0 + Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz0+uz89 + Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PlgAAAAANDM1tDQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQz + Nf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQz + Nf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNfw0MzU1AAAAADUzNdU1MzX/NTM1/zUzNf81MzX/NTM1/zUz + Nf81MzX/NTM1/zUzNf81MzX/NTM1+TUzNS0AAAAANTM1rDUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz + Nf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz + Nf81MzWcAAAAAAAAAAAAAAAANTM1azUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz + Nf81MzX/NTM1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAMjIzDjMyNLgzMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjSBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+PD27Pjw9/z48Pf8+PD3/Pjw9/z48Pf8+PD3/Pj0+WAAA + AAAzMjRtMzI0pjMyNKMzMjSjMzI0ozMyNKMzMjSkMzI0kDMyNIUzMjSHMzI0hzMyNIczMjSHMzI0hzMy + NIUzMjSXMzI04jMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMy + NHoAAAAAMzI01TMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT5MzI0LQAA + AAAzMjRpMzI0pjMyNKMzMjSjMzI0ojMyNKszMjTGMzI05DMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMy + NP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zQzNPszMjQ8AAAAAAAAAAAzMjRrMzI0/zMy + NP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjSQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMg4yMTO4MjEz/zIxM/8yMTP/MjEz/zIx + M/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD48 + Pbs+PD3/Pjw9/z48Pf8+PD3/Pjw9/z48Pf8/PT5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMTMWMjAzrjIwM/8yMDP/MjAz/zIw + M/8yMDP/MjAz/zIwM/8yMDP/MjAz/zIwM/8yMDP/MTAyswAAAAAyMTPVMjEz/zIxM/8yMTP/MjEz/zIx + M/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/kyMTMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAzMjQPMjEzTDIxM7QyMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIx + M/8yMTP/MjEz/zIxM7YxMDIBAAAAADIxM2syMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIx + M/8yMTP/MjEz/zIxM5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAvLjEOMS8yujEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8ygQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDs8uzw7PP88Ozz/PDs8/zw7PP88Ozz/PDs8/zw7 + PFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAxLzMHMC4xxzAuMf8wLjH/MC4x/zAuMf8wLjH/MC4x/zAuMf8wLjH/MC4x/zAu + Mf8wLjHTMC4xBjEvMtIxLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y+TEv + Mi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMlwxLzLvMS8y/zEv + Mv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y+zAvMTIAAAAAMC8yazAv + Mv8wLzL/MC8y/zAvMv8wLzL/MC8y/zAvMv8wLzL/MC8y/zAvMv8wLzL/MC8ykAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi0vDi8uMLsvLjD/Ly4w/y8uMP8vLjD/Ly4w/y8u + MP8vLjD/Ly4w/y8uMP8vLjD/Ly4w/y8uMP8vLjCGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA7Oju7Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLjBSLi0w/i4t + MP8uLTD/Li0w/y4tMP8uLTD/Li0w/y4tMP8uLTD/Li0w/y4tMOEuLTATLy4x0C8uMf8vLjH/Ly4x/y8u + Mf8vLjH/Ly4x/y8uMf8vLjH/Ly4x/y8uMf8vLjH5Ly4xLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAuMTkvLjHpLy4x/y8uMf8vLjH/Ly4x/y8uMf8vLjH/Ly4x/y8u + Mf8vLjH/Ly4x/y8uMf8vLjH/Ly4xjgAAAAAvLjBrLy4w/y8uMP8vLjD/Ly4w/y8uMP8vLjD/Ly4w/y8u + MP8vLjD/Ly4w/y8uMP8vLjCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0r + Lg8uLS++Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4t + L2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs4O7s7ODv/Ozg7/zs4O/87ODv/Ozg7/zs4 + O/87ODtZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0sLiItLC70LSwu/y0sLv8tLC7/LSwu/y0sLv8tLC7/LSwu/y0s + Lv8tLC7/LSwu6S0sLhsuLS/PLi0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4t + L/kuLS8uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4t + LzsuLS/2Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS/XLSwuAS4t + L2guLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL5AAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKi0RLCstvy0rLv8tKy7/LSsu/y0rLv8tKy7/LSsu/y0r + Lv8tKy7/LSsu/y0rLv8tKy7/LSsu/ywrLv8tKy59AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAOjg6uzo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4OlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCotLywq + LfksKi3/LCot/ywqLf8sKi3/LCot/ywqLf8sKi3/LCot/ywqLf8sKi3vLCstIC0rLc4tKy3/LSst/y0r + Lf8tKy3/LSst/y0rLf8tKy3/LSst/y0rLf8tKy3/LSst+S0rLS4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0sLngtLC7/LSwu/y0sLv8tLC7/LSwu/y0s + Lv8tLC7/LSwu/y0sLv8tLC7/LSwu/y0sLvssKi0dLSsuYi0rLv8tKy7/LSsu/y0rLv8tKy7/LSsu/y0r + Lv8tKy7/LSsu/y0rLv8tKy7/LSsukAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSksEiop + LMArKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/KyktewAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Nzi7ODc4/zg3OP84Nzj/ODc4/zg3 + OP84Nzj/ODc4WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKSyDKiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yop + LP8qKSz/Kiks/yopLOMqKSwVKyks0CspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/ysp + LP8rKSz5KyksLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAALCotBysqLdYrKi3/Kyot/ysqLf8rKi3/Kyot/ysqLf8rKi3/Kyot/ysqLf8rKi3/Kyot/ysq + LVErKSxfKyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSyQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACkoKxMpKCvAKSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/yko + K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADg3OLs4Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84NzhZAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCcqQyko + K/MpKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr1ykoKwgpKCvRKSgr/yko + K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/kpKCsuAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKiksdiopLP8qKSz/Kiks/yop + LP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/KiksfCkoK1wpKCv/KSgr/ykoK/8pKCv/KSgr/yko + K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJikTKCcqwSgn + Kv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv0oJyqOAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzY3uzc2N/83Njf/NzY3/zc2 + N/83Njf/NzY3/zc2N1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiUpDyYlKQ0mJSkLJiUpCyYl + KQsmJSkLJiUpCyYlKQsmJSkIJiUpHScmKXAnJirzKCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygn + Kv8oJyr/KCcq/ygnKv8oJyq8AAAAACgnKtUoJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygn + Kv8oJyr/KCcq+SgnKi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAApKCsyKSgr+ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/yko + K/8pKCubKCcqXSgnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcqkAAA + AAAAAAAAAAAAAAAAAAAAAAAAJSQoEyYlKcImJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYl + Kf8mJSn/JiUp/yYlKf8mJSn/JiUpugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA2NDa7NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2WQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAmJSleJiUp4CYlKdwmJSnbJiUp2yYlKdsmJSnbJiUp2yYlKdkmJSnrJiUp/yYl + Kf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKX0AAAAAJyYp1Scm + Kf8nJin/JyYp/ycmKf8nJin/JyYp/ycmKf8nJin/JyYp/ycmKf8nJin5JyYpLgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmKgwnJirmJyYq/ycm + Kv8nJir/JyYq/ycmKv8nJir/JyYq/ycmKv8nJir/JyYq/ycmKqsmJSloJiUp/yYlKf8mJSn/JiUp/yYl + Kf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSmQAAAAAAAAAAAAAAAAAAAAACQjJhMlJCfEJSQn/yUk + J/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8kIyf/JCMn/yQjJv8jIibzIyIlcgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY0Nrs2NDb/NjQ2/zY0 + Nv82NDb/NjQ2/zY0Nv82NDZZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkKQQlJCeIIyIl/yMi + Jf8jIib/JCMm/yQjJv8kIyb/JCMn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUk + J/8lJCf/JSQn/yUkJ/8lJCf8JSQnNwAAAAAlJCjVJSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUk + KP8lJCj/JSQo/yUkKPklJCguAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAJiUpBSYlKdImJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYl + Kf8mJSn/JiUpqyUkKGglJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUk + KJAAAAAAAAAAAAAAAAAiISUVIyIlxyQjJv8kIyb/JCMm/yQjJf8jIiX/IyIl/yMiJf8jIiX/IiEk/yIh + JP8iIST/IyIl/yQjJv8lJCf/KSgr/y0sLv8xMDL/PTw9cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAANDM1uzQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNVkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLC5/MC8x/ysqLf8oJyr/JSQn/yQjJv8jIiX/ISAk/yEg + JP8iIST/IiEk/yIhJf8jIiX/IyIl/yMiJf8jIiX/IyIl/yMiJv8jIib/IyIm/yMiJcgkIyYEAAAAACQj + J9UkIyf/JCMn/yQjJ/8kIyf/JCMn/yQjJ/8kIyf/JCMn/yQjJ/8kIyf/JCMn+SQjJy4AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCcFJSQn0iUk + J/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCerJCMmaCQjJv8kIyb/JCMm/yQj + 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 + AAAAAAAAAAAAAAAAAABBQEACQUBAWkFAQOBBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBAt0FAQAEAAAAAQUBAb0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBAjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEFAQJVBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQEC9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKi27Kyot/ysqLf8rKi3/Kyot/ysq + Lf8rKi3/KygtWQAAAAAAAAAAQUBAPEFAQHhBQEBvQUBAb0FAQG9BQEBvQUBAb0FAQG9BQEBvQUBAb0FA + QG9BQEBvQUBAb0FAQG9BQEBvQUBAb0FAQGJBQEC+QUBA/0FAQP9BQED/QUBA/0FAQP9BQEB3AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAQUBAtEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED5QUBALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQBJBQEAzQUBAcEFAQMlBQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPtBQEA5AAAAAAAA + AABBQEBPQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQECYQUBAD0FA + QBNBQEATQUBAE0FAQBNBQEATQUBAE0FAQBNBQEARQUBAHkFAQElBQECyQUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACopLLsqKSz/Kiks/yopLP8qKSz/Kiks/yopLP8pKCxZAAAAAAAAAABCQUAlQUBA1EFA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBrAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAVQUBAwUFA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP5BQEDeQUBA10FAQNdBQEDXQUBA10FA + QNdBQEDYQUBA5UFAQPpBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBAkgAAAAAAAAAAAAAAAAAAAABBQEBvQUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPRBQEDjQUBA5UFAQOVBQEDlQUBA5UFAQOVBQEDlQUBA5UFA + QORBQEDtQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSgruykoK/8pKCv/KSgr/yko + K/8pKCv/KSgr/ykoK1kAAAAAAAAAAAAAAABBQEAWQUBAxUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQEBtAAAAAAAAAAAAAAAAAAAAAAAAAABBQEATQUBAwUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQNRBQEAPAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEBzQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAoJyq7KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcqWQAAAAAAAAAAAAAAAAAA + AABBQEAUQUBAxEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBvAAAAAAAAAAAAAAAAAAAAAAAA + AABBQEASQUBAwEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQEDvQUBAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQECDQUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/EFAQDcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgnKrsoJyr/KCcq/ygn + Kv8oJyr/KCcq/ygnKv8oJypZAAAAAAAAAAAAAAAAAAAAAAAAAABBQEATQUBAxEFAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQEBwAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAQQUBAv0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA+UFAQEkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQECBQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDTQUBABgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAJiUpuyYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKVkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEARQUBAwUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBxAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEAOQUBAvUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQPRBQEBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABBQECAQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCi7JSQo/yUk + KP8lJCj/JSQo/yUkKP8lJCj/JSQoWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEASQUBAv0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEByAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAOQUBAxUFA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDqQUBARgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDZQUBADwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkKLslJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJChZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEASQUBAwkFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQEB0AAAAAAAAAAAAAAAAAAAAAAAAAABBQEAcQUBAzUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBAykFAQC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEB+QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA+kFAQEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCMmuyQj + Jv8kIyb/JCMm/yQjJv8kIyb/JCMm/yQjJlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABBQEAbQUBA0UFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEB1AAAAAAAAAAAAAAAAAAAAAAAA + AABBQEAbQUBAzUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/EFAQIlBQEAMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB8QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPpBQEBfAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIiW7IyIl/yMiJf8jIiX/IyIl/yMiJf8jIiX/IyIlWQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAcQUBA0UFAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQEB4AAAAAAAAAAAAAAAAAAAAAAAAAABBQEAZQUBAzEFAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QLNBQEA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB6QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQEDbQUBASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIh + JMQiIST/IiEk/yIhJP8iIST/IiEk/yIhJP8iISReAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEAaQUBAzkFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQECBQUBABAAA + AAAAAAAAAAAAAAAAAABBQEAXQUBAykFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA7UFAQKRBQEA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABBQEB5QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDvQUBAkkFAQBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISAkbiEgJOAhICT/ISAk/yEgJP8hICT/ISAk2yEg + JCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAaQUBAuUFA + QNZBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFA + QNVBQEDVQUBA1UFAQNVBQEDVQUBA1kFAQNhBQEBHAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAXQUBAyEFA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPNBQEDVQUBAqEFAQGFBQEAgAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB3QUBA/0FAQP9BQED/QUBA/0FA + QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQOpBQEDDQUBAeEFA + QCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAISAkFiAfI3cgHyO6IB8jvSAfI4EhICQXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUBACEFAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FA + QAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBACUFA + QAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAYQUBAckFAQHdBQEB2QUBAdkFAQHZBQEB4QUBAZkFA + QFNBQEA7QUBAJUFAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABBQEBXQUBAeUFAQHZBQEB2QUBAdkFAQHZBQEB2QUBAdkFAQHZBQEB2QUBAdkFA + QHZBQEB4QUBAb0FAQFJBQEA4QUBAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8jHyAfI1IgHyNVIB8jJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABBQEAcQUBAH0FAQB9BQEAfQUBAH0FAQCBBQEAUQUBACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQA9BQEAgQUBAH0FA + QB9BQEAfQUBAH0FAQB9BQEAfQUBAH0FAQB9BQEAfQUBAH0FAQCBBQEAaQUBABwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////z8H+APj4f/4fwfPif58H/4/A/gAY4B/4BwBjwH8cAf+PiPwACM + AP8AYAI8B/GAD/jwwAT4iPh+PiPiOAfxD4/48cAM/Aj8fj4H8DgH8R+P+OPgDPwB/H4/x/AwB/EcD/gD + 44z8Afx8f8fwIgAQPA/4AOMc/AH8fH/H8CIAED4P+HjzHPwB/H4/x/AGA/Ef//j8cTz8CPx+P8fwBgfx + H//4/HA8+Ij4fj4j4g4H8Q+P+AD4PACIIP8IIIIeABGCH/gA+HwBjAH/gHAGHgABwB/4A/x8B48H/8H8 + Hj8gAeB///////////////////////////////////////////////////////////////////////// + //////////////gMAAA/+ABgAf/+AB///+f4DAAAD/gAYAA//gAf///H+AwAAAP4AGAAD/4AH///h/gM + AAAB+ABgAAf+AB///wf//AAAAPgAYAAD/gAf//4H//wAAAB4AGAAAf4AH//8B/gMAAAAOABgAAD+AB// + +Af4DAAAADgAYAAAfgAf//AH+AwAAAAYAGAAAD4AH//gB/gMAAAAGABgAAAeAB//wAf4DgAAABgAcAAA + HgAf/4AH+A///gAIAH/wAA4AH/8AB/gP//8ACAB//AAOAB/+AAf4D///gAgAf/4ABgAf/AAP+A///4AI + AH//AAYAH/gAH/gP//+ACAB//4AGAB/wAD/4D///AAgAf/+ABgAf4AA/+A///wAIAH//wAYAH8AAf/gP + //4ACAB//8ACAB+AAP/4D/gAABgAf//AAgAfAAD/+A/4AAAYAH//wAIAHgAAf/gP/gAAGAB//8ACABwA + AD/4D/8AADgAf//AAgAcAAAf+A//gAA4AH//wAIAH/wAH/gP/8AAeAB//8ACAB/+AA/4D//gAPgAf/+A + BgAf/wAP+A//8AH4AH//gAYAH/8AD/gP//gD+AB//wAGAB//AAf4D//8B/gAf/4ABgAf/wAH+A///g/4 + AH/8AA4AH/8AB/gP//8D+AB/+AAOAB/+AAf4D///A/gAf+AAHgAf/AAH+A8AAAH8AAAAAB8AAAAAB/gP + gAAA/gAAAAA/gAAAAA/4D8AAAH8AAAAAf4AAAAAP+A/gAAA/gAAAAP/AAAAAD/gP8AAAH8AAAAH/4AAA + AB/4D/gAAA/gAAAD//gAAAAf+A/8AAAH8AAAB//8AAAAP/gP/gAAA/gAAA///gAAAH/4D/8AAAH8AAA/ + //8AAAD/+A//gAAAfgAA////gAAB//wP/8AAAH8AB////8AAD///H/////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= +</value> + </data> + <data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> + <value>NoControl</value> + </data> + <data name="$this.Text" xml:space="preserve"> + <value>3DRRadio Config</value> + </data> + <data name=">>$this.Name" xml:space="preserve"> + <value>Config</value> + </data> + <data name=">>$this.Type" xml:space="preserve"> + <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </data> +</root> \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs new file mode 100644 index 000000000..22232ee1c --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ArdupilotMega +{ + class MainV2 + { + public static portproxy comPort = new portproxy(); + } + + class portproxy + { + public ArdupilotMega.Comms.SerialPort BaseStream = new ArdupilotMega.Comms.SerialPort(); + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs new file mode 100644 index 000000000..e4f207fc1 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using log4net.Config; + +namespace _3DRRadio +{ + static class Program + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main() + { + XmlConfigurator.Configure(); + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Config()); + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..ae9d3a356 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("3DRRadio")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("3DRRadio")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5f5b5ed0-0b27-4a90-8c24-248309f363f8")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.1.*")] +[assembly: AssemblyFileVersion("0.1.0.0")] diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs new file mode 100644 index 000000000..f107d01f7 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.261 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace _3DRRadio.Properties { + using System; + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_3DRRadio.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + internal static System.Drawing.Bitmap _3dr { + get { + object obj = ResourceManager.GetObject("3dr", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _3dr2 { + get { + object obj = ResourceManager.GetObject("3dr2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _3dr3 { + get { + object obj = ResourceManager.GetObject("3dr3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx new file mode 100644 index 000000000..40514226a --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="3dr2" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\3dr2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="3dr" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\3dr.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="3dr3" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\3dr3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> +</root> \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs new file mode 100644 index 000000000..11d738043 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.261 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace _3DRRadio.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings new file mode 100644 index 000000000..39645652a --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico b/Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico new file mode 100644 index 0000000000000000000000000000000000000000..9837bfa41691857f8f57ed0b4a2efe944300826a GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs new file mode 100644 index 000000000..4468a3f3d --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs @@ -0,0 +1,235 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using ArdupilotMega.Controls.BackstageView; +using log4net; +using ArdupilotMega.Controls; + +namespace ArdupilotMega.Utilities +{ + /// <summary> + /// Helper class for the stylng 'theming' of forms and controls, and provides MessageBox + /// replacements which are also styled + /// </summary> + public class ThemeManager + { + private static readonly ILog log = + LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + private static Themes _currentTheme = Themes.BurntKermit; + + public enum Themes + { + /// <summary> + /// no theme - standard Winforms appearance + /// </summary> + None, + + /// <summary> + /// Standard Planner Charcoal & Green colours + /// </summary> + BurntKermit, + } + + /// <summary> + /// Change the current theme. Existing controls are not affected + /// </summary> + /// <param name="theme"></param> + public static void SetTheme(Themes theme) + { + log.Debug("Theme set to " + Enum.GetName(typeof(Themes), theme)); + _currentTheme = theme; + } + + /// <summary> + /// Will recursively apply the current theme to 'control' + /// </summary> + /// <param name="control"></param> + public static void ApplyThemeTo(Control control) + { + switch (_currentTheme) + { + case Themes.BurntKermit: ApplyBurntKermitTheme(control, 0); + break; + + case Themes.None: ApplyNone(control, 0); + break; + + // More themes go here + + + default: + break; + } + + + } + + private static void ApplyNone(Control temp, int level) + { + foreach (Control ctl in temp.Controls) + { + if (ctl.GetType() == typeof(MyButton)) + { + ArdupilotMega.Controls.MyButton but = (MyButton)ctl; + but.BGGradTop = Color.FromArgb(242,242,242); + but.BGGradBot = Color.FromArgb(207,207,207); + but.ForeColor = Color.Black; + but.TextColor = Color.Black; + but.Outline = Color.FromArgb(112,112,112); + } + + if (ctl.Controls.Count > 0) + ApplyNone(ctl, 1); + } + } + + private static void ApplyBurntKermitTheme(Control temp, int level) + { + Color BGColor = Color.FromArgb(0x26, 0x27, 0x28); // background + Color ControlBGColor = Color.FromArgb(0x43, 0x44, 0x45); // editable bg color + Color TextColor = Color.White; + + if (level == 0) + { + temp.BackColor = BGColor; + temp.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea); + } + + //temp.Font = new Font("Lucida Console", 8.25f); + + foreach (Control ctl in temp.Controls) + { + if (ctl.GetType() == typeof(Button)) + { + ctl.ForeColor = Color.Black; + } + else if (ctl.GetType() == typeof(MyButton)) + { + Color PrimeColor = Color.FromArgb(0x94, 0xc1, 0x1f); + + ArdupilotMega.Controls.MyButton but = (MyButton)ctl; + //but.BGGradTop = Color.FromArgb(PrimeColor.R, PrimeColor.G, PrimeColor.B); + //but.BGGradBot = Color.FromArgb(255 - (int)(PrimeColor.R * 0.27), 255 - (int)(PrimeColor.G * 0.14), 255 - (int)(PrimeColor.B * 0.79)); + //but.ForeColor = Color.FromArgb(0x40, 0x57, 0x04); //Color.FromArgb(255 - (int)(PrimeColor.R * 0.7), 255 - (int)(PrimeColor.G * 0.8), 255 - (int)(PrimeColor.B * 0.1)); + //but.Outline = ControlBGColor; + } + else if (ctl.GetType() == typeof(TextBox)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea); + TextBox txt = (TextBox)ctl; + txt.BorderStyle = BorderStyle.None; + } + else if (ctl.GetType() == typeof(DomainUpDown)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea); + DomainUpDown txt = (DomainUpDown)ctl; + txt.BorderStyle = BorderStyle.None; + } + else if (ctl.GetType() == typeof(GroupBox)) + { + ctl.BackColor = BGColor; + ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea); + } + + else if (ctl.GetType() == typeof(Form)) + { + ctl.BackColor = BGColor; + ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea); + } + else if (ctl.GetType() == typeof(RichTextBox)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor; + RichTextBox txtr = (RichTextBox)ctl; + txtr.BorderStyle = BorderStyle.None; + } + else if (ctl.GetType() == typeof(CheckedListBox)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor; + CheckedListBox txtr = (CheckedListBox)ctl; + txtr.BorderStyle = BorderStyle.None; + } + else if (ctl.GetType() == typeof(TabPage)) + { + ctl.BackColor = BGColor; //ControlBGColor + ctl.ForeColor = TextColor; + TabPage txtr = (TabPage)ctl; + txtr.BorderStyle = BorderStyle.None; + } + else if (ctl.GetType() == typeof(TabControl)) + { + ctl.BackColor = BGColor; //ControlBGColor + ctl.ForeColor = TextColor; + TabControl txtr = (TabControl)ctl; + + } + else if (ctl.GetType() == typeof(DataGridView)) + { + ctl.ForeColor = TextColor; + DataGridView dgv = (DataGridView)ctl; + dgv.EnableHeadersVisualStyles = false; + dgv.BorderStyle = BorderStyle.None; + dgv.BackgroundColor = BGColor; + DataGridViewCellStyle rs = new DataGridViewCellStyle(); + rs.BackColor = ControlBGColor; + rs.ForeColor = TextColor; + dgv.RowsDefaultCellStyle = rs; + + DataGridViewCellStyle hs = new DataGridViewCellStyle(dgv.ColumnHeadersDefaultCellStyle); + hs.BackColor = BGColor; + hs.ForeColor = TextColor; + + dgv.ColumnHeadersDefaultCellStyle = hs; + dgv.RowHeadersDefaultCellStyle = hs; + } + else if (ctl.GetType() == typeof(ComboBox)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor; + ComboBox CMB = (ComboBox)ctl; + CMB.FlatStyle = FlatStyle.Flat; + } + else if (ctl.GetType() == typeof(NumericUpDown)) + { + ctl.BackColor = ControlBGColor; + ctl.ForeColor = TextColor; + } + else if (ctl.GetType() == typeof(TrackBar)) + { + ctl.BackColor = BGColor; + ctl.ForeColor = TextColor; + } + else if (ctl.GetType() == typeof(LinkLabel)) + { + ctl.BackColor = BGColor; + ctl.ForeColor = TextColor; + LinkLabel LNK = (LinkLabel)ctl; + LNK.ActiveLinkColor = TextColor; + LNK.LinkColor = TextColor; + LNK.VisitedLinkColor = TextColor; + + } + else if (ctl.GetType() == typeof(BackstageView)) + { + var bsv = ctl as BackstageView; + + bsv.BackColor = BGColor; + bsv.ButtonsAreaBgColor = ControlBGColor; + bsv.HighlightColor2 = Color.FromArgb(0x94, 0xc1, 0x1f); + bsv.HighlightColor1 = Color.FromArgb(0x40, 0x57, 0x04); + bsv.SelectedTextColor = Color.White; + bsv.UnSelectedTextColor = Color.Gray; + bsv.ButtonsAreaPencilColor = Color.DarkGray; + } + + if (ctl.Controls.Count > 0) + ApplyBurntKermitTheme(ctl, 1); + } + } + + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/app.config b/Tools/ArdupilotMegaPlanner/3DRRadio/app.config new file mode 100644 index 000000000..8e6552666 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/3DRRadio/app.config @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<configuration> + <configSections> + <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> + </configSections> + <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v2.0.50727"/></startup> + <log4net> + <appender name="Console" type="log4net.Appender.ConsoleAppender"> + <layout type="log4net.Layout.PatternLayout"> + <conversionPattern value="%level %logger - %message%newline" /> + </layout> + <threshold value="INFO"/> + </appender> + <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> + <file value="3DRRadio.log" /> + <appendToFile value="true" /> + <maximumFileSize value="500KB" /> + <maxSizeRollBackups value="2" /> + <layout type="log4net.Layout.PatternLayout"> + <conversionPattern value="%date %5level %logger - %message (%file:%line) [%thread]%newline" /> + </layout> + </appender> + <root> + <level value="DEBUG" /> + <appender-ref ref="RollingFile" /> + <appender-ref ref="Console" /> + </root> + </log4net> +</configuration> diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 660aa3d65..d8d3db4b9 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -45,7 +45,7 @@ <DefineConstants>TRACE;DEBUG;MAVLINK10cra</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> <DocumentationFile> </DocumentationFile> <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> @@ -61,7 +61,7 @@ <DefineConstants>TRACE;DEBUG;MAVLINK10cra</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> <DocumentationFile> </DocumentationFile> <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln index 6fe51a332..256d4bb24 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln @@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "Updater\Updater. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wix", "wix\wix.csproj", "{76374F95-C343-4ACC-B86F-7ECFDD668F46}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3DRRadio", "3DRRadio\3DRRadio.csproj", "{B8943726-04B0-4477-BFDA-E156A0CD98A4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +57,18 @@ Global {76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|Win32.ActiveCfg = Release|x86 {76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|x86.ActiveCfg = Release|x86 {76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|x86.Build.0 = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Any CPU.ActiveCfg = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Win32.ActiveCfg = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|x86.ActiveCfg = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|x86.Build.0 = Debug|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Any CPU.ActiveCfg = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Mixed Platforms.Build.0 = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Win32.ActiveCfg = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|x86.ActiveCfg = Release|x86 + {B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index 57fd516b8..ffb89d72b 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -524,7 +524,7 @@ namespace ArdupilotMega case (int)Common.apmmodes.FLY_BY_WIRE_A: case (int)Common.apmmodes.FLY_BY_WIRE_B: mode.base_mode = (byte)MAVLink.MAV_MODE_FLAG.CUSTOM_MODE_ENABLED; - mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein); + mode.custom_mode = (uint)EnumTranslator.GetValue<Common.apmmodes>(modein); break; default: MessageBox.Show("No Mode Changed " + modein); @@ -544,7 +544,7 @@ namespace ArdupilotMega case (int)Common.ac2modes.CIRCLE: case (int)Common.ac2modes.POSITION: mode.base_mode = (byte)MAVLink.MAV_MODE_FLAG.CUSTOM_MODE_ENABLED; - mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein); + mode.custom_mode = (uint)EnumTranslator.GetValue<Common.ac2modes>(modein); break; default: MessageBox.Show("No Mode Changed " + modein); diff --git a/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs b/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs index ac07fc4a3..568559342 100644 --- a/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs +++ b/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs @@ -7,7 +7,7 @@ using System.Linq; namespace ArdupilotMega.Comms { - class SerialPort : System.IO.Ports.SerialPort,ICommsSerial + public class SerialPort : System.IO.Ports.SerialPort,ICommsSerial { public new void Open() { diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs index d936dcec1..c74b8a3dd 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs @@ -15,9 +15,15 @@ namespace ArdupilotMega.Controls.BackstageView FormClosing(this, new FormClosingEventArgs(CloseReason.UserClosing, false)); } - public new void OnLoad(EventArgs e) + public void DoLoad(EventArgs e) { base.OnLoad(e); } + + public new void OnLoad(EventArgs e) + { + // this is now done on page load via parent control + // base.OnLoad(e); + } } } diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs index bb9c99ac2..effe9d5f5 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs @@ -165,9 +165,11 @@ namespace ArdupilotMega.Controls.BackstageView this.pnlPages.Controls.Add(page.Page); if (_activePage == null) + { _activePage = page; - ActivatePage(page); + ActivatePage(page); + } } private void CreateLinkButton(BackstageViewPage page) @@ -202,6 +204,12 @@ namespace ArdupilotMega.Controls.BackstageView public void ActivatePage(BackstageViewPage associatedPage) { // deactivate the old page + _activePage.Page.Close(); + Pages.ForEach(x => + { + x.Page.Visible = false; + }); + _activePage.Page.Visible = false; var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage); oldButton.IsSelected = false; @@ -212,7 +220,7 @@ namespace ArdupilotMega.Controls.BackstageView _activePage = associatedPage; - _activePage.Page.OnLoad(new EventArgs()); + _activePage.Page.DoLoad(new EventArgs()); } public void Close() diff --git a/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs index 539183f9b..10bdba60b 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs @@ -35,6 +35,8 @@ namespace ArdupilotMega.Controls // process hashdefines and update display foreach (string value in MainV2.comPort.param.Keys) { + if (value == null) // older ap vesion have a null param + continue; Control[] text = this.Controls.Find(value, true); foreach (Control ctl in text) { diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs index 95c47e388..b15dccf96 100644 --- a/Tools/ArdupilotMegaPlanner/CurrentState.cs +++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs @@ -312,7 +312,7 @@ namespace ArdupilotMega { mode = ""; messages = new List<string>(); - rateattitude = 3; + rateattitude = 10; rateposition = 3; ratestatus = 3; ratesensors = 3; @@ -373,7 +373,7 @@ namespace ArdupilotMega byte[] bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED]; - if (bytearray != null) // hil + if (bytearray != null) // hil mavlink 0.9 { var hil = bytearray.ByteArrayToStructure<MAVLink.mavlink_rc_channels_scaled_t>(6); @@ -389,6 +389,20 @@ namespace ArdupilotMega //MAVLink.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED] = null; } + bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_HIL_CONTROLS]; + + if (bytearray != null) // hil mavlink 0.9 and 1.0 + { + var hil = bytearray.ByteArrayToStructure<MAVLink.mavlink_hil_controls_t>(6); + + hilch1 = (int)(hil.roll_ailerons * 10000); + hilch2 = (int)(hil.pitch_elevator * 10000); + hilch3 = (int)(hil.throttle * 10000); + hilch4 = (int)(hil.yaw_rudder * 10000); + + //MAVLink.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED] = null; + } + bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT]; if (bytearray != null) diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs index 5c08a8ab7..106cef017 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs @@ -68,7 +68,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView { #if MAVLINK10 int fixme; // needs to be accel only - MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,1,1,1,1,1,1); + MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,1,1,0,0,0,0); #else MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_CALIBRATE_ACC); #endif diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs index d44d880a7..1b1529a14 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs @@ -149,64 +149,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView #region Methods - /// <summary> - /// Loads the param file. - /// </summary> - /// <param name="Filename">The filename.</param> - /// <returns></returns> - private Hashtable loadParamFile(string Filename) - { - Hashtable param = new Hashtable(); - - StreamReader sr = new StreamReader(Filename); - while (!sr.EndOfStream) - { - string line = sr.ReadLine(); - - if (line.Contains("NOTE:")) - CustomMessageBox.Show(line, "Saved Note"); - - if (line.StartsWith("#")) - continue; - - string[] items = line.Split(new char[] { ' ', ',', '\t' }, StringSplitOptions.RemoveEmptyEntries); - - if (items.Length != 2) - continue; - - string name = items[0]; - float value = float.Parse(items[1], new System.Globalization.CultureInfo("en-US")); - - MAVLink.modifyParamForDisplay(true, name, ref value); - - if (name == "SYSID_SW_MREV") - continue; - if (name == "WP_TOTAL") - continue; - if (name == "CMD_TOTAL") - continue; - if (name == "FENCE_TOTAL") - continue; - if (name == "SYS_NUM_RESETS") - continue; - if (name == "ARSPD_OFFSET") - continue; - if (name == "GND_ABS_PRESS") - continue; - if (name == "GND_TEMP") - continue; - if (name == "CMD_INDEX") - continue; - if (name == "LOG_LASTFILE") - continue; - - param[name] = value; - } - sr.Close(); - - return param; - } - /// <summary> /// Sorts the param list. /// </summary> @@ -241,6 +183,11 @@ namespace ArdupilotMega.GCSViews.ConfigurationView { tableLayoutPanel1.Controls.Clear(); if (_params == null || _params.Count == 0) SortParamList(); + + // get the params if nothing exists already + if (_params != null && _params.Count == 0) + Utilities.ParameterMetaDataParser.GetParameterInformation(); + _params.ForEach(x => { if(!String.IsNullOrEmpty(x.Key)) diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs index 36e947d99..c03769dde 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs @@ -1180,7 +1180,7 @@ namespace ArdupilotMega.GCSViews { ((Button)sender).Enabled = false; #if MAVLINK10 - MainV2.comPort.setMode("AUTO"); + MainV2.comPort.setMode("Auto"); #else comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_AUTO); #endif @@ -1210,7 +1210,7 @@ namespace ArdupilotMega.GCSViews { ((Button)sender).Enabled = false; #if MAVLINK10 - MainV2.comPort.setMode("MANUAL"); + MainV2.comPort.setMode("Manual"); #else comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_MANUAL); #endif diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs index 307090fb1..07871632a 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs @@ -1210,11 +1210,22 @@ namespace ArdupilotMega.GCSViews TimeSpan gpsspan = DateTime.Now - lastgpsupdate; + // add gps delay if (gpsspan.TotalMilliseconds >= GPS_rate) { lastgpsupdate = DateTime.Now; - oldgps = gps; - //comPort.sendPacket(gps); + + // save current fix = 3 + gpsbuffer[gpsbufferindex % gpsbuffer.Length] = gps; + + // Console.WriteLine((gpsbufferindex % gpsbuffer.Length) + " " + ((gpsbufferindex + (gpsbuffer.Length - 1)) % gpsbuffer.Length)); + + // return buffer index + 5 = (3 + 5) = 8 % 6 = 2 + oldgps = gpsbuffer[(gpsbufferindex + (gpsbuffer.Length - 1)) % gpsbuffer.Length]; + + //comPort.sendPacket(oldgps); + + gpsbufferindex++; } @@ -1226,8 +1237,8 @@ namespace ArdupilotMega.GCSViews hilstate.roll = att.roll; hilstate.rollspeed = att.rollspeed; hilstate.time_usec = gps.time_usec; - hilstate.vx = (short)(gps.vel * Math.Sin(oldgps.cog / 100.0 * deg2rad)); - hilstate.vy = (short)(gps.vel * Math.Cos(oldgps.cog / 100.0 * deg2rad)); + hilstate.vx = (short)(gps.vel * Math.Sin(gps.cog / 100.0 * deg2rad)); + hilstate.vy = (short)(gps.vel * Math.Cos(gps.cog / 100.0 * deg2rad)); hilstate.vz = 0; hilstate.xacc = imu.xacc; hilstate.yacc = imu.yacc; @@ -1237,6 +1248,8 @@ namespace ArdupilotMega.GCSViews comPort.sendPacket(hilstate); +// comPort.sendPacket(oldgps); + comPort.sendPacket(asp); #else @@ -1266,6 +1279,7 @@ namespace ArdupilotMega.GCSViews TimeSpan gpsspan = DateTime.Now - lastgpsupdate; + // add gps delay if (gpsspan.TotalMilliseconds >= GPS_rate) { lastgpsupdate = DateTime.Now; diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index c7eff29d4..f87006bf3 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.1.*")] -[assembly: AssemblyFileVersion("1.1.80")] +[assembly: AssemblyFileVersion("1.1.81")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs index 48a557bae..3d55bb84b 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs @@ -11,6 +11,8 @@ using System.IO; using ArdupilotMega.Controls.BackstageView; using ArdupilotMega.Arduino; using ArdupilotMega.Comms; +using log4net; +using System.Reflection; namespace ArdupilotMega { @@ -22,6 +24,8 @@ namespace ArdupilotMega string firmwarefile = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "radio.hm_trp.hex"; + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public _3DRradio() { InitializeComponent(); @@ -34,7 +38,7 @@ namespace ArdupilotMega { // was https://raw.github.com/tridge/SiK/master/Firmware/dst/radio.hm_trp.hex // now http://www.samba.org/tridge/UAV/3DR/radio.hm_trp.hex - + return Common.getFilefromNet("http://www.samba.org/tridge/UAV/3DR/radio.hm_trp.hex", firmwarefile); } @@ -118,7 +122,7 @@ namespace ArdupilotMega { comPort.Write("AT&UPDATE\r\n"); string left = comPort.ReadExisting(); - Console.WriteLine(left); + log.Info(left); Sleep(700); comPort.BaudRate = 115200; } @@ -165,6 +169,7 @@ namespace ArdupilotMega { Console.Write(message); lbl_status.Text = message; + log.Info(message); Application.DoEvents(); } } @@ -179,6 +184,7 @@ namespace ArdupilotMega { lbl_status.Text = message; Console.WriteLine(message); + log.Info(message); Application.DoEvents(); } } @@ -477,7 +483,7 @@ namespace ArdupilotMega } else { - Console.WriteLine("Odd config line :" + item); + log.Info("Odd config line :" + item); } } } @@ -534,7 +540,7 @@ namespace ArdupilotMega // ignore all existing data comPort.DiscardInBuffer(); lbl_status.Text = "Doing Command " + cmd; - Console.WriteLine("Doing Command " + cmd); + log.Info("Doing Command " + cmd); // write command comPort.Write(cmd + "\r\n"); // read echoed line or existing data @@ -544,7 +550,7 @@ namespace ArdupilotMega temp = Serial_ReadLine(comPort); } catch { temp = comPort.ReadExisting(); } - Console.WriteLine("cmd " + cmd + " echo " + temp); + log.Info("cmd " + cmd + " echo " + temp); // delay for command Sleep(500); // get responce @@ -564,7 +570,7 @@ namespace ArdupilotMega } } - Console.WriteLine("responce " + level + " " + ans.Replace('\0', ' ')); + log.Info("responce " + level + " " + ans.Replace('\0', ' ')); // try again if (ans == "" && level == 0) @@ -586,9 +592,9 @@ namespace ArdupilotMega // wait Sleep(1100); // check for config responce "OK" - Console.WriteLine("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); + log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); string conn = comPort.ReadExisting(); - Console.WriteLine("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length); + log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length); if (conn.Contains("OK")) { //return true; @@ -601,7 +607,7 @@ namespace ArdupilotMega string version = doCommand(comPort, "ATI"); - Console.Write("Connect Version: " + version.Trim() + "\n"); + log.Info("Connect Version: " + version.Trim() + "\n"); if (version.Contains("SiK") && version.Contains("on")) // should use a regex.... { diff --git a/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs b/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs index 2f118a36f..898b69a37 100644 --- a/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs +++ b/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs @@ -17,8 +17,13 @@ namespace ArdupilotMega.Utilities public ParameterMetaDataRepository() { string paramMetaDataXMLFileName = String.Format("{0}\\{1}", Application.StartupPath, ConfigurationManager.AppSettings["ParameterMetaDataXMLFileName"]); - if (File.Exists(paramMetaDataXMLFileName)) - _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName); + try + { + if (File.Exists(paramMetaDataXMLFileName)) + _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName); + + } + catch { } // Exception System.Xml.XmlException: Root element is missing. } /// <summary> @@ -33,19 +38,23 @@ namespace ArdupilotMega.Utilities { // Use this to find the endpoint node we are looking for // Either it will be pulled from a file in the ArduPlane hierarchy or the ArduCopter hierarchy - var element = _parameterMetaDataXML.Element("Params").Element(MainV2.cs.firmware.ToString()); - if(element != null && element.HasElements) - { - var node = element.Element(nodeKey); - if(node != null && node.HasElements) - { - var metaValue = node.Element(metaKey); - if(metaValue != null) - { - return metaValue.Value; - } - } - } + try + { + var element = _parameterMetaDataXML.Element("Params").Element(MainV2.cs.firmware.ToString()); + if (element != null && element.HasElements) + { + var node = element.Element(nodeKey); + if (node != null && node.HasElements) + { + var metaValue = node.Element(metaKey); + if (metaValue != null) + { + return metaValue.Value; + } + } + } + } + catch { } // Exception System.ArgumentException: '' is an invalid expanded name. } return string.Empty; } -- GitLab