From 5abfa9143c388f63e2982cb69dea68df0b8ecf4d Mon Sep 17 00:00:00 2001 From: Heath Volmer Date: Mon, 5 Dec 2016 20:33:14 -0700 Subject: [PATCH] Working through elusive disconnect bugs on SSH, with Amazon on CP3N --- .../GenericSocketStatusChangeEventArgs.cs | 17 ++++ .../Pepperdash Core/Comm/GenericSshClient.cs | 95 +++++++++--------- .../Comm/GenericTcpIpClient.cs | 13 ++- .../Pepperdash Core/CommunicationExtras.cs | 2 +- .../Pepperdash Core/Debug/Debug.cs | 27 ++++- .../PepperDash_Core.projectinfo | Bin 1016 -> 1011 bytes .../Pepperdash Core/bin/PepperDash_Core.clz | Bin 879568 -> 879792 bytes .../bin/PepperDash_Core.config | 4 +- .../Pepperdash Core/bin/PepperDash_Core.dll | Bin 32440 -> 32952 bytes .../Pepperdash Core/bin/manifest.info | 2 +- .../Pepperdash Core/bin/manifest.ser | Bin 767 -> 770 bytes 11 files changed, 99 insertions(+), 61 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs index 3a388ee..1f8dd09 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs @@ -9,4 +9,21 @@ using Crestron.SimplSharp.CrestronSockets; namespace PepperDash.Core { public delegate void GenericSocketStatusChangeEventDelegate(ISocketStatus client); + + + /// + /// + /// + public class GenericSocketStatusChageEventArgs : EventArgs + { + public ISocketStatus Client { get; private set; } + + public GenericSocketStatusChageEventArgs() { } + + public GenericSocketStatusChageEventArgs(ISocketStatus client) + { + Client = client; + } + } + } \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs index e788a7e..5b8bfd7 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs @@ -26,13 +26,12 @@ namespace PepperDash.Core /// /// Event when the connection status changes. /// - //[Obsolete("Use SocketStatusChange instead")] - //public event EventHandler ConnectionChange; + public event EventHandler ConnectionChange; /// /// /// - public event GenericSocketStatusChangeEventDelegate SocketStatusChange; + //public event GenericSocketStatusChangeEventDelegate SocketStatusChange; /// /// Address of server @@ -63,6 +62,14 @@ namespace PepperDash.Core get { return ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED; } } + /// + /// S+ helper for IsConnected + /// + public ushort UIsConnected + { + get { return (ushort)(ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED ? 1 : 0); } + } + /// /// /// @@ -93,6 +100,11 @@ namespace PepperDash.Core /// public bool AutoReconnect { get; set; } + /// + /// Will be set and unset by connect and disconnect only + /// + public bool ConnectEnabled { get; private set; } + /// /// S+ helper for AutoReconnect /// @@ -109,7 +121,9 @@ namespace PepperDash.Core public int AutoReconnectIntervalMs { get; set; } SshClient Client; + ShellStream TheStream; + CTimer ReconnectTimer; string PreviousHostname; @@ -171,6 +185,7 @@ namespace PepperDash.Core /// public void Connect() { + ConnectEnabled = true; Debug.Console(1, this, "attempting connect, IsConnected={0}", Client != null ? Client.IsConnected : false); // Cancel reconnect if running. @@ -197,14 +212,6 @@ namespace PepperDash.Core kauth.AuthenticationPrompt += new EventHandler(kauth_AuthenticationPrompt); PasswordAuthenticationMethod pauth = new PasswordAuthenticationMethod(Username, Password); - // always spin up new client in case parameters have changed - // **** MAY WANT TO CHANGE THIS BECAUSE OF SOCKET LEAKS **** - //if (Client != null) - //{ - // Client.Disconnect(); - // Client = null; - //} - // Make a new client if we need it or things have changed if (Client == null || PropertiesHaveChanged()) { @@ -269,7 +276,6 @@ namespace PepperDash.Core } // Sucess will not make it this far - Client.Disconnect(); ClientStatus = SocketStatus.SOCKET_STATUS_CONNECT_FAILED; HandleConnectionFailure(); } @@ -279,44 +285,32 @@ namespace PepperDash.Core /// public void Disconnect() { + ConnectEnabled = false; // Stop trying reconnects, if we are if (ReconnectTimer != null) { ReconnectTimer.Stop(); ReconnectTimer = null; } - if(TheStream != null) - TheStream.DataReceived -= Stream_DataReceived; + KillStream(); Client.Disconnect(); ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY; Debug.Console(1, this, "Disconnected"); } - /// - /// - /// - //void DiscoAndCleanup() - //{ - // if (Client != null) - // { - // Client.ErrorOccurred -= Client_ErrorOccurred; - // TheStream.DataReceived -= Stream_DataReceived; - // Debug.Console(2, this, "Cleaning up disconnected client"); - // Client.Disconnect(); - // Client.Dispose(); - // Client = null; - // } - //} - /// /// Anything to do with reestablishing connection on failures /// void HandleConnectionFailure() { - Debug.Console(2, this, "Checking autoreconnect: {0}, {1}ms", - AutoReconnect, AutoReconnectIntervalMs); - if (AutoReconnect) + if (Client != null) + Client.Disconnect(); + KillStream(); + + if (AutoReconnect && ConnectEnabled) { + Debug.Console(2, this, "Checking autoreconnect: {0}, {1}ms", + AutoReconnect, AutoReconnectIntervalMs); if (ReconnectTimer == null)// || !ReconnectTimerRunning) { ReconnectTimer = new CTimer(o => @@ -335,6 +329,17 @@ namespace PepperDash.Core } } + void KillStream() + { + if (TheStream != null) + { + TheStream.DataReceived -= Stream_DataReceived; + TheStream.Close(); + TheStream.Dispose(); + TheStream = null; + } + } + bool PropertiesHaveChanged() { return Hostname != PreviousHostname || Port != PreviousPort @@ -377,17 +382,11 @@ namespace PepperDash.Core /// void Client_ErrorOccurred(object sender, Crestron.SimplSharp.Ssh.Common.ExceptionEventArgs e) { - Debug.Console(1, this, "SSH client error: {0}", e.Exception); - if (!(e.Exception is SshConnectionException)) - { + if (e.Exception is SshConnectionException) Debug.Console(1, this, "Disconnected by remote"); - } - if (Client != null) - { - Client.Disconnect(); - //Client.Dispose(); - //Client = null; - } + else + Debug.Console(1, this, "Unhandled SSH client error: {0}", e.Exception); + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY; HandleConnectionFailure(); } @@ -397,12 +396,12 @@ namespace PepperDash.Core /// void OnConnectionChange() { - //if(ConnectionChange != null) - // ConnectionChange(this, new SshConnectionChangeEventArgs(IsConnected, this)); + if (ConnectionChange != null) + ConnectionChange(this, new GenericSocketStatusChageEventArgs(this)); - var handler = SocketStatusChange; - if (handler != null) - SocketStatusChange(this); + //var handler = SocketStatusChange; + //if (handler != null) + // SocketStatusChange(this); } #region IBasicCommunication Members diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index 85fc901..8b30fe6 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -26,7 +26,8 @@ namespace PepperDash.Core /// /// /// - public event GenericSocketStatusChangeEventDelegate SocketStatusChange; + //public event GenericSocketStatusChangeEventDelegate SocketStatusChange; + public event EventHandler ConnectionChange; /// /// @@ -207,10 +208,14 @@ namespace PepperDash.Core break; } - // Relay the event - var handler = SocketStatusChange; + var handler = ConnectionChange; if (handler != null) - SocketStatusChange(this); + ConnectionChange(this, new GenericSocketStatusChageEventArgs(this)); + + // Relay the event + //var handler = SocketStatusChange; + //if (handler != null) + // SocketStatusChange(this); } } diff --git a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs index 73917b1..e369fa7 100644 --- a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs +++ b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs @@ -31,7 +31,7 @@ namespace PepperDash.Core /// public interface ISocketStatus : IBasicCommunication { - event GenericSocketStatusChangeEventDelegate SocketStatusChange; + event EventHandler ConnectionChange; SocketStatus ClientStatus { get; } } diff --git a/Pepperdash Core/Pepperdash Core/Debug/Debug.cs b/Pepperdash Core/Pepperdash Core/Debug/Debug.cs index fe59717..2c52a2b 100644 --- a/Pepperdash Core/Pepperdash Core/Debug/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Debug/Debug.cs @@ -32,11 +32,7 @@ namespace PepperDash.Core static CTimer SaveTimer; - /// - /// This should called from the ControlSystem Initiailize method. Will attempt to call - /// CrestronDataStoreStatic.InitCrestronDataStore which may have been called elsewhere. - /// - public static void Initialize() + static Debug() { CrestronDataStoreStatic.InitCrestronDataStore(); if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) @@ -53,6 +49,27 @@ namespace PepperDash.Core Level = Contexts.GetOrCreateItem("DEFAULT").Level; } + /// + /// This should called from the ControlSystem Initiailize method. Will attempt to call + /// CrestronDataStoreStatic.InitCrestronDataStore which may have been called elsewhere. + /// + public static void Initialize() + { + //CrestronDataStoreStatic.InitCrestronDataStore(); + //if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) + //{ + // // Add command to console + // CrestronConsole.AddNewConsoleCommand(SetDebugFromConsole, "appdebug", + // "appdebug:P [0-2]: Sets the application's console debug message level", + // ConsoleAccessLevelEnum.AccessOperator); + //} + + //CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler; + + //LoadMemory(); + //Level = Contexts.GetOrCreateItem("DEFAULT").Level; + } + /// /// Used to save memory when shutting down /// diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index aa26281089db7a40166ee550dea6da82be790fe1..5c2442a439a02b391f9bb8ad2de14973aca55e89 100644 GIT binary patch delta 891 zcmV->1BCqe2lEGzg@0myo6>hL^VKS^pJvVc_dluXoLbJJpXT%_{WzB&7xZIqXZO?X z-M#Id`)~Gk9_=1H+SwiN?LOSuz5nU<&VxrgJJfDY?M@#3zQ6BROU*1vl0WB&rYhviYPGqa(T;HG%x&6 z>9%1~PZyJX_J6us*VFvCp3aNQ+|uu)T3x@Xo>k?HaQob7(cxUGU{eSlX0snH{uGa0#to>o|F7@|Cwk*!`rgg~Pqfg@;pyU4{ zE0)JilP@OawR>%!zVT+L`|7MLsX;Jk`tRPS_jfVH9e>(%iSlg%L!V6_-uv{y{psxd z;9&A_XF9t--PzqenC%@L?A_bX?gImvmO<2&uJJFQSJSNgAyIyS!Guar^Hsi_<;!W2 z6BB*UQ22gG;n(Q%HTpbRH*K{zZri$;tlPXfTef+9o=purCEvs8{$zi)KfS;EaPsN> z``P(JB7g6v`D~i)%|88f^3W&W?SacHx9?(j3Lf3Q(;xa&^=IY#qmN$Y4G*6G{3RnZ zPoECW)3@`I01wPgmd_sS<&&L!_u>8f53_sc_dk8Gb1=yte7e7Xe>R=PXD1Fan3G!o zzSW$>yZV3iOgtExi5K}*TP>UFyzPp}&co^b*?+yA8BuLUiss?{>Ag?0=>#L*nca_1 zLJwL;CT@gzEBg0(`F}O(4~9tpDnBpbfK|4#rU~m6#oRZE5HdfjhnxUszn~i5#>*nMh zG4I}|*@TSjr_)(J+kbFA*_l2dk81DJPqPQPKPMmP4n@%TCEx!gzl0sS;=GtO zUsmPf_x*jJ=FQu-TK&Gi?^RX5EtVI*@9(?f{$|wQc2g`?Wq&iz>ecp?y8eBC-RuS`cL*9pjyy2lW5l2L$}fb-P-(FSGWC!MfDn7um8n&zsgEdyhVi zbAXQji>z24H%-2nl-KUHefq|mq3)}*vZMyVpy|K8`+vI+?|;;zO_wO&CNT8b!`*{} zz5HPJ;k^gvpH3#9PVe1+xOeZC>Tk`gUFt;DOo6^4WvEe6o|1MBIOv-8;Yk>4TkvN&eu|{r&s1=`21wagf2B z+yd~e<|N+L|Ep)>!O%>+$gkRJ*;MCkS44ImPJi#u?(NKoYO~q-!NdF0d!J_02}Zm# zyC0u~9<+{3+z9hl^zZfZ|7y}743Yj-eqO@=sFnkQkl#B$Kgeg3Np`S5oz5QY-oHP2 z`0!vq|MbEB!NFuNJ_o~KgUPrB@LNsBaCiT&o|T6~v-0{Uo^RAn=R4E;JNIX^d^$VG z9(f$xo9#~?+~3=MaDQiaI+;8en3O@N!JOOz_O0e*u($s=PD$qj8!7D!&Ct`V&Bn8= zb#ro$n0N2fY(hr%(<%8t`wz}1JJSdEcX#$a{WN=!`*ZSv?ob4cU-JE5@=MsEE6$5) W21%gttjku0_x}KlI3Wi54FCY;0SR>g diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index 89cf368c1f44e3176937b91e5b3a60c9246d502a..a8703d1c3fba43e374bcf4b4c3cf0418ccdeda05 100644 GIT binary patch delta 16576 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 delta 16359 zcmZ{L19T=$w{C13lVoDsw(VqM+vXb^6WbHpwr$%^-gq+6o$vq8x%k&TtJkilYghH| z>V9hN?$upS-8%c+Dm%K8EI0%P2nYxah_{2U^jzh5WK;q=8Q@sKMz2G90rbYe`d|3n zC5(k=bRM)iX*z0?2}k@TuuJBr?FUo?4n;B+j~P#({p1U!vE!8?EyALvO+mDPl0gB( z6p6j6aX3R0`pcF}g1`UACy2Vs>Wg#VAF~Il(IQu!vzNTvO$80z)ypzbDzY=JKSwA8 zDI8eE@N@t=Fd7EzQ&eR2hms4V*|~Ab^FI}K9NxvrL~+lDm5K|krE#W>l}MxBt>HIq zp$N2LT@205q2O}L+;~zWlxj!S8lf(GX6?W4?Aq5Rl<`u-^xXjz+j)Ps2ydKkX!y*| zciFW&ARaHopb+sJcnTY_pkfvj((?^ZnQ|osMRovR>;@wi1$q3`11`!(z`hJgL#&OyS2^f}}1sGDm z?COgEqh49Ie{t6$i6rs` z1_JVrA%Kvjfm$KrV#oCUo5%m=@4qmK2CNI<^Ws6Y13hM}O}7$lA>Q3KaiQC@>m~HH z>nCIY$m*N3K=wdJdcF_d4u2uc2JmF~@^pKA?eBCeBAdU`%{JzQFWtK}*OU&H^-gWP z?xoFET4`8ECrS3+-oB}eu6_3O-o7``VE!B69B6J2@$<;+yEh<8>EVA9!QZaU-

=8POM;9x)RXEn!0zSo*Yd9~ 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 - 11/28/2016 1:59:52 PM - 1.0.0.25195 + 12/5/2016 8:18:01 PM + 1.0.0.36510 Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll index f038257d4c0a9d9fc25d62e710696d6c93b0e6e4..88526c54b4ac03db4fe1fcf5fb1ada47b78c8e2f 100644 GIT binary patch delta 13900 zcmb7r2YggjzW?u>Tc#zG%uF(w6v!mB2`L0ZFA|DUf*K$oSXLrL2m}U_s9;Pc*;NF= z0v8n#Szr;x@|2D4T5!Q#MA?T=v8;{f0}HFGzQwlc`WD~!ckWFA^3mn#ug_ z_|v)Ie6AyUg7E>OBs`+f%dzrgku_KJ^Y(6F7XBKon?#|w+WMX7C$6>L75SNDfsM~( z{7EwC`td|tFC-FHb^S1_Qa&T<+x=RB%r}U#n|-LXKQyn9vWd%D%uD2Lv}M)~Bi&kN zY#2HOu}4k|Zy}leDO4&c4JK$!fMiU`O0;mH$T+GLLZw1Q?6T6$VS#C^h#Hui%vRQA z<|u2c^jfc&;q#dr>hd)l^5Sl;Xedc7O<4%ojwxSi%~{q7GgnNo zglnuAYmIY7GA6*P0qWiuGUz24U4yz}W3A<`DWcwb%GEdZ9Ap@sgLY)ZMsaW-xduU$ z?H(?kv#Q)Pvg^6x;dL5v85_Xvg7D-ut=-Bvnu>&G+chG-VLB}j ztN3CnAl2h8lBmW5M`=)2=}9{+e6Hf8GrTyCW8C{iJ{cQ{XZSRRb%xJ1@{b&6MAlDF zpoWO5A;}$iDxkt54(r6vsh_2-x+7GoIn$C;+vK++ z^qR#Z9E1R;a)1#86wg#CR$B3X=o?NUo5W*Ekk-tA`dbH*vqXXQPI5G@0D|I>j17bj z*@UsK#|o?ze~$~%8{T*!h_A576)!@;YsQQ5sPAXc^2~S%is`3ClDjw=Nn!Ii2D_JB z@lrg%{`0%3E+i8rmn%NdYVya#AZwSuAhDKp%UD-7c~N1K8)_jvpcnU{=p%7VHw;0q z88&aJjbo+oCcCAl;bu0%$cF(&X{gksxhP?d2GF`;;9tc9H0`v8&O>(6(JiA8XZP_{ z*b~fJBhk@WK3CW_-RW`$K-L+v0U1C=8s+0@k8HKvAy`xpve!N-8-B@=VH|pS_V_Rp zFy@_)oqR2hrKqzfMxtNPhTcrX^2F3bN{!)2*G#YF4o)E?Fs zsaZ)F7(BIk-JNN@oSKusJj6nngUoj=gpBO=3TSp2aNCew)7C`lWo)zx1C3qWQI=Y4 zI-5v6R;5hs1s_v}Fx~>x(gWT*=T*Kh+;9ohTA3T0)6F@r>}sX9?g?gF_Xm;^SX9)i z6e=}n5ZqzH1t>Q&92zRPRlPFI9B_mY!}MkY{}tj3zKP93J(Qt&IBf+Ik0!IQ05{h`2Q$?D`2DdpYV~ zkEthO<4|hFa;!&7uOezi>UD~Z2eWT%0x0%FdtT&H+G!J0%xstlc6|-J)L#P!pj9$6o`EzYY>x!V(_#oCRxpC@XVXqp@B} zYvnS9>w|FM%t_T%v1>Y9WTTy(Q<`M_JlMqoAa>xrsQw(-+MSJ=8(R!Rd--*wswyH^bQ8 zKDffpWbbrk{J3^PM;U}|$X=6_!eY7Xw2s>P*MI7w#Lu|W^w?AcjWtNM0?FjX4Rh`% z9QBj+y1QFUS{#GbL_E6D;Y4MXhonvz6Fip#q=HGPXt1vhB;~}mHT-t@he^GL3Kg(R}G-ul>SuhT=Jtw2v(A8qoEMGV$aX$B9VbF|S zpb8!{cA+Zp@IviUop{y!RpZKDPLSMzE!f-i;t&SzwTM=2)UC`aBqeF#xnS?tY7iC% zl)cT4S8^TwDZ6y6BrI%vutdIAv7_k_dF^o@n}M>=bj4?~x*5kR=fx79Y9b2W-%RXp zABJ;hrgd7!WoUaOFI+IHwa?+uEoQI{1kEMZbrwJLymVgsX3o5X^TAf~*1+V<*?$!ERBsVb! znU`vrQA=!BHImYuQ0sq2hhL9|!lxF)Y1Z3_P_vsEb1J%IX!=>Qj`U-{3ZM_Mq;$*W zNNa;kPvBJ0jmL6-_5C(dh>9wHJlcAaKkT$G>#nc?Eb&l z;qapDc6Qn&9K%0j72N{v8BP&4s_Wo)87aQKFdas)nW~djg1kJ9LPo$C*$x2?h1>u= zz7CG!^AKlWn-i}_+2_i*d2$G2M7`3;CT`R{0W*GuwLh!p;H@yhq+?&j8E(%OTfQEf zf{4wBbx1EXzz*rA4Cv00(h6ipa~D9U^477~>GV5SJA0#5)iW=#??-GlFC60BF+9dd>e!JRYLTPZg9@w0V1gY0YFG?@ z9Oo9)YcH3%P79nypP^UBdKq@BE`~yabCDKb3U*%^ZXT<;Z#Hf*RME*A&VJs${p}4G z>%VyV#s7qHB#c&K$H<*$qK7D0cLJ$>{=9(f-=^Gr+R4%S^vr_4mrwK<7QtRK8|!PA zEyP$OiXxzcI92qTHIqKTYeOn{y(Z0?f-yy30pD-^t5?|wUOC~F5FFi$KR^Cf;|~p| z8}Nq~@ueuQCTjJ>>>>1NIWRsKj(!^8YEPoc-8sUEhf0>`9fs{AYP{q&Tg?DH7l|6)8GR(G{R3-5Frl zr$GG_4zkXiV8j=unjkxELmBx{beE!!f|`^QVynv(U90FFpkDeajrp6?InatQH+yNg zArbat%&yjhl$6nc@|7t2>92}@tLXB`YTcwG5jM!mYzPObP|=BsP6ajT+APk>(X5ZM zO!}vyp=>S}DLN_plI$g78OBK#HD_BqUT6~&Y`E4_eWxW}(02iNC=ZNOnrrL=^-v#$ zMkeo~z1W>A6*>WAP!F0zZP={mr!dN;E0ipra$O3e`AT+5$?^&71vLFQ%XvfrHIV=s z8rnt4qJ$A@`a=S6FO^V236BGL!~pu0LRo37I*1We&js3x8=@N(+N@9+tyAbEkU@j# zR%JIUo$ZFAoorVNWZ)Zv%?iC3<_3hBb<{P6yPZ*`J{=z6n`3F@_HJOvA=qQu<(^Ywi zqBoeMA>F0uK_#tDW=>1;!!kgpl3zp$zfUetz-+ri?1H8(g`pWRvzV%lGo2cpcCEzvu4w6qpT zlR*V7Oxq0lWLhaD*wJo1KtG7xU^S<6CT>a(8G?4FM?fD<=io+}*(e`K=N1I@vvYPl z%=~Y{oTrxLo1kg8p4%Oum&C2${3+A+b5@>m=vXGRx(oz0X1!>te6+t)@UWOtsh?6` zK=I%{l)Om)XXnxSQ1TmkRX6mpKBpV{UiS$;2l3}na)yy&9W9)mU~f4zj}Hg5+HJUU zF!EPADCnvHy52##E}!U0TOAa0r2yUUpn4)|?Ya!IMo05TXy(&xjwUxdpYC@MH#?sm zb2Kei6^=ef6l!ztcFh5L(~&*tN>qv7^sNJrxaI@7`*1KPJ)EyT6m<~t1yrQa>c|$c zO!TGoov4foX`hX#!d(IMf%K-5QM9k}DZbRosF=3%=13>S_gYy3&|S!|jlT1; zFj8crF+N6h4w{YKpqO58PU|dZF0~f3O(T<9?qlbH3$8{&*+qcjwqB!8faJe zj)MH<57CCm2<>U87CExRm?5KSqCyBpRsdBxvi&JOF@_d7vcoAUK#h*<)s%VKIm8!T z=wA1+ltng5&4?3b6h0fM9B4TgI}^OZL7d+TYUo7GA-B=! zpu{1;?Y)M2!%Y+u@4fU_XeE_9=u4ngbg8OhwL90<+qjk*6>4+GTm?X_j?9JAUK4G0 zP)>Lb&@LOHy#tKv=vXHjYP3)q?vXIj6IAOdqgI-%U>nU2UtzRTbR-MgXd}=s=>vrh zQhT_JuBXT-4)mmFvGxKGf2+u79ncL_>7eb}D|kJqbI@L(8)=P$Mq$HSL%STL_P@1s z0FalR-N{>wo9Io2czA6G`amJ!{8_ z3?j5ls<0UOuKMR zfX$q~mQ@%5FDrCXZ896^BL`uVfsFXQ4;k$n*=}s0-VQ2{;C_1}UGKmxk-r-oDLR%_ z?ag8nRVuWa_C+e_cG~2~c?pLUdUX5g!chaL5N~Y@;FvrDplWuW6!#a-a*_IJ7}|w)Izh9 z4xWLI*@$k;`o!ExN#j*$^k|mfwTtH12#dT=+)K+H#CyfPDRi9;mDAm1Z66Z0CJs4d zJvzjkdb{LXt3o$V>A|2njQ}-hJg6X+3VKA9hbFP+7*Ih!Rko^z=BGWM%u26<3Mx^? z6a1>a?L(6iwx6d1EPTC_N_rnkL*43cGiIbz1v)9y~+RZ2|H4h8AUDdMh?G%(D@-OF}IEK>ZAvi0(i^60%8+#I_{A4VB)6qgqkpe_tM^P5vag3Y-eO=r2uOryZu7Qg78Z zh?i1t*V;$~?$-9I(4Q2S26jNYCXhoWG2# zecJE!fh5yk*AL@IOegiZBAWiKo){syHNBP62stWzf#IR?VNP9Tc$UGcml~{t1j@?r zO2tV)hxgd&k~g>MkltrhgKk6lmW+QhrpqT3eI?@=lmn4NpjDBjc-vSKIcltOG}lH> z8q;UW2P5AYa}{ffd@Mrd3RPY!qnUlp4RTawk-0<8z;19@T$)*Cj*}c5C%lXnAZVs{ zXMJZbp!>3Z03DU-a#_*QITy}woq(eXjPv_x0)9a75Pn|ZrblTq%8$|cpa&HHAowMe zt>?N*D5MVt^{H~1eg(>f`drXn`bcZt=)}}E%?Is0+V|p=d{&hYqfFWfRsI;|R88ot zpe`<%*6|v|7L&_u>t6hbkXe^aCZubuY)S=sZOic-gAe=KEM$uIRiZF1ISWJ)s^4 z6g{peB`Z}$=h@{H<{Vd)QdL<|3UGOzqOFRS2Ng%r@{lSk+N$VwMa$C_U(smTRt+nb zqOD;of9&8yG?Q87iq2ECRnhH=9#HhSqLjs&+Z8>a=pa62R-h)GeZI!0V zwrx%_OA8gp_S0Q|rSSr+-d588_J4x%w|@4oB~sXIu%dRwV^gBwOi{E-(N~B$AEvOu zCn+ni>wTCqN+(=Dt^(bdwgdD;8ta@&y1^jY7iOO;jdFYsUod6lTU5Es z7{jV|yjmKUOR`w$$E_cl#npGu69Tf^(e#Dn#3-h2RZ~!aNq-#7_EGnJpzM3;+2r;NDKsARVq3L74gr43c(qR zif~2(#T6|ok{H=cXAm|Lnu!}CK~7MiY~^tI)auc+DaFKpHTEh1SasB z#&kVGl6Xm)nZRQUViI^~n1%9ITp1F-*^qzi#-ZSvTc>nFWWA*$A@ny?u<~P>HmrYny zy=-9()z>VIUtM!~7vHLxGTYk)+n=BEfk<}nxy!1rsH?G7RYa|lsb1@k6>C!#)-+x| zYf6KoP-9J*)+_G}?FG~Tl`~oG3#ZN1tWneZrcS7fH`Gu?ZCxF{)~l&r+P?q7>+s(e z)6dQC^0|O!&1|f0ysClD^kO|Uz112sqqP0n8P`dxX!c<9ymc;l3tA+_{-t4sY zrrGa{yh%07YU*p}&y3GsQqyQVLfaSCoO^Z6vc_@s3me)moAX<(&*f(+aB`{_EU2$( zXrL>uy7J1J`kA%YT9s3B+H)^`Uu!q!jWnz!H6{3WiBt2_tn!*d>#mv>%e!c7d*sS5 zMEm4Lbs}}<;lKT6-=6y?wN1aIWy0%~{j7tvM=zh|!Pf%m!9F5bX`s}@Fcp|)KPo$= z%r&4Zd9)Mdl+uFZMDL1Nkn9WrPf7t$0sk+O$3Lv z+pQBf6yJ&=P`^J1131unRMFRc_|`qx`j#K{pD>^nn1b)Mg}+A*Y}|e}^jnFgOT{AV z%cZ0G;YZ6Z0TLyU7>H&DCaNr?1tunA`)msYQL@G_+bb%qua@O|EBzfwwW9GmJ;^Rz zwW-|N7e6TKthVK$f;s~Y^SfP0UtO?HBE?eW1bGSxGb%zTfElc_o>_iZQOAEZVMn2x z@HcuR{&0&nW9Gz}@iF&q{Y~wslQtY&_4+N|VfS0tuUHv81%-}}-$E(6Auq$=0=4(8 zj|j`(*y7!G3uA#<-+o79P~a+TD3;uTRNB7xs+rxOm3+;xE+PJv=`qi3>Q}WCEo%>~ z{JYpt>e_g1ZQ7IhkACxN%Q>IU-z;~XHza%8XTL4^yuJC_TeUa@r?^Bv=dit-Py!xADA%sDCTkGcfymOzos+Q0F^{8tee`dzmEqQxtiVLQ^ z`u6OK%u8uk#H9Ow=a_!NP4=;M!5BJGVGxnU zi@Rb_9Koj!7)McDU_?g{85tRUI>>-JE~E35(Q%wN$h`m5y$QkPz3+SdeL461XRA}E z>Q>dg-PzM9_k1rltu1)%o{xteBhgrv zH{nlb#`#=Fw1@FNq7+;v!Y;?km))$XqO*76Qix*stG3pOB2jBSEjo)8)(KINRk8_U zd`99=l0o+kL7+>Bgw-Q4C^;$#OmgXiZW}MYjDXRRiv);w5(1LE#+iTGS%7 zOER_=O~eOTPq{{k#nxF@C-+bk3v~`!rS6^(&2#q?N3ACJ_;!mqM!yvr;>0iDFd;V%stOK55Vua=O4i&wvOT4QfKkUu% z*dEb%Z|k(Tj~HdeeIsDI)He4#xLdz zS8)g`&7WLJ^d7GNz||{=A{f86a)HivfFKj{aEVSl9bk%j*J0@Nbc~f*oZ+BEn)P~$ zKUo)O)kLKN=;&}RNED4EvQ$cK(`#p^mnp0JqJ_w<$UwwZPr8OnT=Wjw^q|djFGXeb zIG9A0iO&_WM}0kpLpp7MdYkVaSzzcJ!?%|$%-eCG>cP_UsUkG$ADQ4A5e z65Vlu_|SYN%EC01o>7qgLVdsxZToMca!nh|qDRiYO-zgv20RK^T+$3X_wSS%XzA#pVfRWj6WRa!J+NYIWrK6 z!D4j4f%b$XnSI`jM5mE}q&!?PV|jM*8sRlfd7dF?nq+!?s3hxR<#Q;l$qdJFBOt#ImgFH8!n~K3~ zlTx0wJ1@f;5Y7`pYihWibyqkm*{Rin@?--e-0wQgM|NtBiC>5YJH;;o#X63@W36dV z>1WLaNUdftXA?#?)g3`1@iI1MZ53vVtVy1SSAhwC*Hs!ZpP=as;jjq zJv)h7JIh&^RxwDRLS9O5V4fn?`?wK%X;PJmW203AMeUIDROF219s@5Em@3{lIIo>? z2de%8zV^+8B_lo;jxB4{P;TQyOvWQvn!WLbD&~o_PE;Lnq0Z%2yNr%W6<9{kO7wp` zR&kZ}4>}|hN7y%xd)TDv;c#wUB;&&ndOao`uaQ4)oltaxFt&CFl)(bIl2)_>rxwYszKs3e@z zIU6p<(sR|+oTh!QVb~ma$`WQBn^I9bGd>D=QBlZ@k5-Jwj8`ZI_qM&-O~6&nb2Z(t z)Y>I5sJy&hIX=y_~;#L=cJ2w!@tDyjjSP4qj!1b|@k31fk$XwQ82DDj?81XQS z#+kuhjj=*DAS+&Zd4;yVibj$>&hufUeA>9&)W!vwBO z!7A)+U=hZWFLBJAqPWfkOGr!CRgB@dZFz$UQtVd=oIzpkm5IyQ%3Rf}CF(7$QCWnj zd}$liI+WEuS&n*1wdS;~Fq)A(K~$>MKV!oO_EN;u;y8nOYmsWZdd6Ieb2@bW2Rhy! zx%^q^0qT#9w@v-~@h+M~<=e;@anKX8<_bisM-BBh`n%+i;PZBpyv0vVNyaUHwodu|NQX7C#SbSdnXG3)i=(Ynj;w6e zwan!l6jIjV;L&Ev z^%HmA9-tZ=Y`h5^|In_zj<$D_b_#Z$9gcZk%Cu{8ISi7Ve|lm8#GPcM9%o04%Vd(7 zighZ!khNXy(TcPL*IEb4EOyB_ZeQn3gF)kAliQ}y%0F8DZEIKYbmW9C;?Y)>$AgkO z%t++>EcXk$v{yYr+PilBMb@fVha_ygdfec(A5|{$$~vC#K7N)9>p{IZ;F4xdBm5KC zdiZgN=XHv^McuK@zVN?1+S%D5lczY7C5V*3Zh|5td86up{$UwxyT@qu9%K8N{K&Xe z*{kIQtA{;7wd#HzTDoc|Qc}Cya~ypc3>#R4eTXl-b@SOQ{%dH}k~G>GNln|3Y!ld| zO$dx9h9E!UFGb|m)2nWml%MV&L6r5CNB~oAF-LR;uDe^-@o?kS4t>5s+(#{h>qArH7%_ z?S};Ql!d1%imANoMk4_&QOB9Oi*uxnYkmg@%x>GoOk58&DrMW&TbC9_ts6Q-tm_NA zUHBE^bXY}nbv^=N3F|PSwz_J`JXDHkK5DrOCx;G`CQx*^dhDbQBPNYPr-@Jgo2)+< z_UfMvRDnOVNw|$EfWI5@hyG9!e=+>wM&X44l_tVjLA{FdS>rlRO4jS^^Z>0kHW~ri zt>|InEyJX@%!!D!!Sxp8I}|nCY%|==l7!;#RP-rDUv|IeHtC;k_R>5X5h2&Zd{57N z?f_LOx*61@LrUJ?%dLz{dM9E*?(d!KHK__bLVMX^olfJUbU(tbZ0@PR0az!ga zO?p1WUf(O)CCq#uP%l-dGatz~h|~{eaJN6tIGxN0P(x&$9-?)T)8Ib>AE44qro$9{ z0o0_dC_BuHp3Vr-3Pm?7dMBt!zs=&>T3N6l(Nu$6U&xiPR{Fv{XiU zG+pUZQ*%-o&44bAHYr^`%_RxTC$K4cM4YZA0rYlgJNZSigQh3L+o3F`I;Fe|$S+D5 zq4}4AcHyaHe_WyoMq5xI;5aKn^6V5VWoEIo%AE!n4ST;SI-4qYUG2iGCG1jVsrt0!6*j( z#3+IHcSaBJhRJ+H(awqvFAU%<~R14BG&<5$1)M8M!4ASpXYc z_iu=4fWIh%a}Vi1tkd)e%a=#EHsr5`<+&cC0kIO2v@AQ$4{OsUizUiF%_-6TtY%YH zqWS%`^{>=%k*Dyh{zdw?t%u}S{qO4&+n_J?DQ%E2NbtdhKd<_84c&UH+qfi0 z%b}UPo6{Qi=VlHLEh`-K9bRqc(oGIBTqN@7J_iL{I?xUWWx8^(mF;s-p{oMuu!DL) z7o(3HbP;qh`bwdXJ+CCSiIh(%h1~qd9_~y&6)M!|u5b+(`7}|XHSTGyN>M;d9ZT+L z0j+fqceH@EIF|Ea*@2#NP@QWc&;iGii%>|%9h7S%b-+(;)95{7hUiEmappoTfO=s| zTwx>nZ{*#TZc?a`qVD;kh>k1tvG`i+Mcrs74u|N3_?JS*6>6j%Ue@g^VqGI0!IIvM za=O{b@|7oLH`?OB&wVRpcSD3M_gI+rCH`)zr80e~v=!}Y|k znCJuPF@+l4rLqDjxyMn?NF_0d-gJ~zsXEYcM^}@2nRX$46fVg$iwUSEbeib+dJtL3^o;nrt0r&^=lieZy~xi0+`2;FH=ATGZ17(FYnnc?j z)Gfs5Oer6cpuASWMSMmFx*>FdK8dzCXiKOU&~_WCl1^qb($qb&6%R@_dR4f!vA7Xi zP;PjVKD8BH5}u_`a}eKKTj@$hNrYj?Mf!|Z)7)^aKC2b6;~YAsnqT8S6P_;T(iaLf zy3O?C*kZr4bqIQ#=21!?cC~Nc`4qL0`;zn=d^=F0P@{WtdIiuRAoQP2E2xSp+c++u zX$svz8`Iy`7f@3x`cz*?-?Xt@L}wJ*Opm1hRbNCgyy@T?z6gXT4SZVaw8TN&-3oOE zg)WKS=Z62LFKbnDe`~26VPd%PW@h}JmeWiJEd#oSu2)U0aT~6HaV>38sL>s8g@KwJ z-D(`MR?r>?-IFl|=zxvT-7I4zolz*sy^k4n#NThB78LdLqI#OIP$M177-Q5^86TRl zdZk6i7)jCxFgidzBE2B%2Nc87y+C^nXrhB|0lI;fI;cteJq|7F9kd(hCfZ@6q-P*D zpw)E1QSx@QhE4(@8FzpGO~x97NNBUwxT=^)-LZlFURtszgef^MUy93Aff7QLoWBgLZM8(Zk=!R*&amqhQCcTj^u zn`u|Hy?G}+rO+Dpu&iVb-9?8TI4-LK=sz9A`~BVYm4kS{znjiDi1+(@D7}oESmWmX z{vL`si1+(@sh@**zrUBt9du|MDByM)`7g{KS*0_ zq=G(VJ<#X<(YH%}{q-JRnrZYQs7{}P8gv>|5NicZcQbv$$Ckea{b}Ah+_xb8az7i* z1;t@fIe+N4n)*bnXup)C9VZrK<&st^=|=Dxt!pFMt|Tnie?q=P$ysZhr)9aOqP2Lj z1ib?llsQx5OKO-!5m4de$=OOOheT6a9Osp`t>rVy>v<(V$7{+VrdUed2J*tsolSN&rpZ{guEpwb?=l+1Gjmku6>YenroeX00! zEeraq%EHzTh_ZdAlDry4(C&fvvp5TTY~IhZRt)Iw&%}2vnK+VX;>SIiR`Y<~$>V0J zSVkX#t|Z>-8tHl0R4g8RG`yM8+)R1>s#44CK`Qjzh?|SIp>E3lZmRTb6x+bBpi(8d znXdOV;Yh;KX3=)fZm|>mUNIH)6-3?x?ajmo(a-3uq~~>jKY5OV{vGT2RMNcfh*^~3 z-7TJ_PTmiMhemln5m|!6RUyRR#X;KV{azd;moFsCDeNnhV<_L(S9TG_z8pG8{e6SL zkM~v35U~oc9!3f7#wmKnH(lnCTf0h*6Myh606pbPE|Y~y^e+9|_W>I2ol-$l#Vnj* zr;6SwmYju#dr_4z0`JL#R2ukRtc0WjkItoOH)xGCH*Kx9O(nNe>`&XE9i+de<9tZUsM3zsndW$1B=C^AYgVGk1Y*%bYHI(4Ne_#!AQX?aVhJ|1R^CF;z)MNfG^v zu`H>;&2n)x#oR2{MnmQ{`9L&>o)tTzS>_PQ$#KDZ(KKYu^wX?AnbYW-tUrUUjsDf# zjR+O=tfKoBJ*enW(0;B{ig(j?D%0Jx17F;`=`k7xeiw}fE#9LP&qL9jG~IA@$IQJ0wqNlF!Dncv6#p6cLQUvw zaQReGfH*=Qas}z4y@wf%pSJ8Y$ zySP3S|834xe1oE=6cui^%vW@XqO+`91_zVd-2?GNv|mY1DJne5Qqe*WYlnC~6fc-F zm1LHp4T?4?dO+EnR6O4PqLp$ldo?M3pQ0yyETiaXDZsDXjxE66fFxWUeN|cn-nceS8_#T8O)a{I#baGMPr#=l_FD_D%zlElcM_+ zJ*g-~t;fnrlTBG{x=+y&REY zLtmpG*F8pOV}h~Dc-r{dFwJ*N924-GQNx79FK_Tg7q7|qRSDiF5?*EDJse(T@wu#x zB*zi`E1lJC6fC!P4r$*p1Me@h@cXuW{KTvfFCsfqm^vYRXN2#9#lI)s5caoD4=GMQ zq5lgp`Wr8SjxaoeXmv^q{Du_fEydrbsHwA!ZU1me6Al8l*W-$}eQle?e%7usUIM*N z@f!jkfWIriF&_$WoMVcvPO8v<3UHI3Df*3~zbBTgPGyH%Qs-koTb-| zvvxyD!XO$D;c%;rPI!ObHpSPXZ1ZlEQ~5;kZ9CZ*X0N)eA~yPQUvJFfhTA$I6>I9n zjmb@Tx15II#*h3^;ZzLPeZXlr_@zM-!|S*-9PL7oZv_>2$rFY=AJk1v*mBco8>qyW zQ5nz{D%uUBBB@BxVnoF;OVJX1M=I$8MSI}A7G9|(aglg;(jK%FVFlifhNuUqYWuU)A zW|AI3N)n6vm7qJ3242{LO8O5ZBe2}h0{=LY!AXwhfZq!$=tVq%OL_rR&^{b3B)tSG z=r^AUH${zp1&;A%8~HGHsc-7r0DR?k_SxMq&k zI6d8(QZd%5sz_g>gIzJ>t%D}WqpJ-{Ib&Q33F=8=geL{Z_J!)<}9K` ziVjayFP>G~d}zu?qWR6scWZ&_Irs)}_VT%N=TuLqx~_TO^gnBYnje}y$Ph(V!TciY zPxHE4m&{+)?5X-%Sg+3?-2DB5g(B^>Z;Go!Q}$NeR@`q=k8j+^trd%oR*v+{nJH{gJ>~w>#%ccadNvHTjx4PGed){9gAaO-6euuI2;^Y z*n4C6rTiZkZ%yXrNLNgXP{XZWgQN@u0xm7oaC=6m;cf_Tm!249gmRg6Iaeit7Po1O z6_N=P!ngy$hWkx~%L!G5Tt=>8CvNv8AYq2iusV!&95Hvg3tTZRkZZWzw%0PlC6SR0 z76XI^Nh>{Za^%&zi4?K6xphKU4Se6%a8S`VeE3o})NnL_w%;|N432^yqL}!4CXky0 zdv}1H0`T@&gO)CKU5%aw0y);BO9!S0%T)Jq^6^R1;d*PQ z>)P@^8CYTQW&z()Zp7a*qVW^TCk#E(b^M85?+sly_5QbOfAyCIR%PvqP~j$?{`Ti0 z=3|@lBeG;u^S8B8Va2X{(+XU(%DZqjTL|1H&39ZA5}uw|fqGy)>)pKj+6ir-4cb=&n->BGBTGk47$;`1usfzx$Yz3h7HwzNLY_1ACI zl3zbL>tM}oAJJ#e?wtPRjMMJx{`McWC4SS>bvb^qWyXgKtJ;&DXd-$C}wc{&y{C!I0FOPj*c#?h>$sV?(qW@(_^WM0< z;MebrxTdP$tNO@x-^>3vW*qza;9dE<{=I4Wt+GqU{Y8;~7th|adizAx=}=}G*9NwGAacB%9!z(1$8B2| zlXaUnXUjIP&$Fq4r{sG$-Jk5w_NVuEA5K2Ke?L2aNaX!ApG~v9*{7dQ9{S|FJ#cyD z_FW85!K2%E`hP>8s{X8efArC-yy3y~pTA^e=4pRup1z%z1bAR}vV8VnFQ4q>yASW* zf0*4nzyIljor6jK;M4v6`?KjRK09%c!JOOz@U7+~-qruBXX5_QOuWdi+G^QU=WSO+ zb{_u_Lf3^tgITL8b+WDIxr z|LR$JFf=Q#f8zN@?R35~y}xsRHp{28gY3bFf>6=vo;&gver$>J>uQHPqPWx*iWake767Ke6llrKn~U3 gr=MmIa(_xb&>M=N@k_q{OMc1!0}iM+)-nnJ0DrAm9smFU delta 591 zcmV-V0y!;Kwp2Gz|dz8cMlHs z@`K%n_a2;oI+=Vry?6iN-n~x`X8A17vz>?3@^!VYr^Bef%-Z?jm(QzdR%(lrN5Ajy z`&C2O{=UEO{IV(+zwht+G;iLv)#~^CeXpweZLz%geShB-Lw}hOl`RLL242AE76n>39U!%{Hb<7f z$-2#(vt^st=h@W2Gvu4@Pxfc~Q=<9g)BE?c^M^#|NJE*Gf(?N^Yrb!B)|i+ljXAqd--H1CyBWKFuQkt z|I-IM2b284r~CW&XVY1HcH$s|Ik^SkTg^$ltN&Ne#QmX}c#&VV)v~G1+pdW0Je=O2 z-P@TF)n>EvgNOI0_dd<06O4Fgc0WD|J!l=7xDn>9=zrhq<^R>B|8$7-uk!OUpSENL z1_U9$cYc15&nA=XV1GKDJ=nc}fAa9*!G8YfgZ+bp$zFU8hQS7taSPzLnvCJ@{$D*S z4~Ayt^-nzCsGZJtruTR5&t~~_c91$T%i32=aZf3gZsNXd!K%q dJ;?nj`9N