From 9232009cea0282572971a5c2d29943307ab674c5 Mon Sep 17 00:00:00 2001
From: fhanik Apache Tribes is a group or peer-to-peer communcation framework that enables you to easily connect
+ your remote objects to communicate with each other.
+
+ Simple yeah? There is a lot more to Tribes than we have shown, hopefully the docs will be able
+ to explain more to you. Remember, that we are always interested in suggestions, improvements, bug fixes
+ and anything that you think would help this project.
+
+ Note: Tribes is currently built for JDK1.5, you can run on JDK1.4 by a small modifications to locks used from the
+ Tribes is a messaging framework with group communication abilities. Tribes allows you to send and receive
+ messages over a network, it also allows for dynamic discovery of other nodes in the network.
+ The Tribes module was started early 2006 and a small part of the code base comes from the clustering module
+ that has been existing since 2003 or 2004.
+ The current cluster implementation has several short comings and many work arounds were created due
+ to the complexity in group communication. Long story short, what should have been two modules a long time
+ ago, will be now. Tribes takes out the complexity of messaging from the replication module and becomes
+ a fully independent and highly flexible group communication module.
+ In Tomcat the old
+ Tribes allows for guaranteed messaging, and can be customized in many ways. Why is this important?
+ I am a big fan of reusing code and would never dream of developing something if someone else has already
+ done it and it was available to me and the community I try to serve.
+ So I came up with Tribes, to address these issues and other issues that came along.
+ When designing Tribes I wanted to make sure I didn't lose any of the flexibility and
+ delivery semantics that the existing frameworks already delivered. The goal was to create a framework
+ that could do everything that the others already did, but to provide more flexibility for the application
+ developer. In the next section will give you the high level overview of what features tribes offers or will offer.
+
+ To give you an idea of the feature set I will list it out here.
+ Some of the features are not yet completed, if that is the case they are marked accordingly.
+
+ Pluggable modules
+ Guaranteed Messaging
+ Different Guarantee Levels
+
+ org.apache.catalina.tribes.Channelorg.apache.catalina.tribes.Memberorg.apache.catalina.tribes.MembershipListenerorg.apache.catalina.tribes.ChannelListenerorg.apache.catalina.tribes.group.GroupChannelorg.apache.catalina.tribes.ChannelListenerorg.apache.catalina.tribes.MembershipListenerjava.util.concurrent package.
+
+ And that is the short story, it really is as simple as that. What makes Tribes useful and unique will be
+ described in the section below.
+
+ modules/cluster has now become modules/groupcom(Tribes) and
+ modules/ha (replication). This will allow development to proceed and let the developers
+ focus on the issues they are actually working on rather than getting boggled down in details of a module
+ they are not interested in. The understanding is that both communication and replication are complex enough,
+ and when trying to develop them in the same module, well you know, it becomes a cluster :)
+
+ Well, you as a developer want to know that the messages you are sending are reaching their destination.
+ More than that, if a message doesn't reach its destination, the application on top of Tribes will be notified
+ that the message was never sent, and what node it failed.
+
+ When I did my research to improve the clustering module I was constantly faced with a few obstacles:
+ 1. The framework wasn't flexible enough
+ 2. The framework was licensed in a way that neither I nor the community could use it
+ 3. Several features that I needed were missing
+ 4. Messaging was guaranteed, but no feedback was reported to me
+ 5. The semantics of my message delivery had to be configured before runtime
+ And the list continues...
+
+ Tribes is built using interfaces. Any of the modules or components that are part of Tribes can be swapped out
+ to customize your own Tribes implementation.
+
+ In the default implementation of Tribes uses TCP for messaging. TCP already has guaranteed message delivery
+ and flow control built in. I believe that the performance of Java TCP, will outperform an implementation of
+ Java/UDP/flow-control/message guarantee since the logic happens further down the stack.
+ Tribes supports both non-blocking and blocking IO operations. The recommended setting is to use non blocking
+ as it promotes better parallelism when sending and receiving messages. The blocking implementation is available
+ for those platforms where NIO is still a trouble child.
+
+ There are three different levels of delivery guarantee when a message is sent.
+
+
+ You can of course write even more sophisticated guarantee levels, and some of them will be mentioned later on
+ in the documentation. One mentionable level would be a 2-Phase-Commit, where the remote applications don't receive
+ the message until all nodes have received the message. Sort of like a all-or-nothing protocol.
+
+ This means that Tribes considers the message transfer to be successful
+ if the message was sent to the socket send buffer and accepted.
+ On blocking IO, this would be socket.getOutputStream().write(msg)
+ On non blocking IO, this would be socketChannel.write(), and the buffer byte buffer gets emptied
+ followed by a socketChannel.read() to ensure the channel still open.
+ The read() has been added since write() will succeed if the connection has been "closed"
+ when using NIO.
+
+ When the message has been received on a remote node, an ACK is sent back to the sender,
+ indicating that the message was received successfully.
+
+ When the message has been received on a remote node, the node will process
+ the message and if the message was processed successfully, an ACK is sent back to the sender
+ indicating that the message was received and processed successfully.
+ If the message was received, but processing it failed, an ACK_FAIL will be sent back
+ to the sender. This is a unique feature that adds an incredible amount value to the application
+ developer. Most frameworks here will tell you that the message was delivered, and the application
+ developer has to build in logic on whether the message was actually processed properly by the application
+ on the remote node. If configured, Tribes will throw an exception when it receives an ACK_FAIL
+ and associate that exception with the member that didn't process the message.
+
+ Per Message Delivery Attributes
+ Perhaps the feature that makes Tribes stand out from the crowd of group communication frameworks.
+ Tribes enables you to send to decide what delivery semantics a message transfer should have on a per
+ message basis. Meaning, that your messages are not delivered based on some static configuration
+ that remains fixed after the message framework has been started.
+ To give you an example of how powerful this feature is, I'll try to illustrate it with a simple example.
+ Imagine you need to send 10 different messsages, you could send the the following way:
+
+ Imagine a shared transactional cache, probably >90% are reads, and the dirty reads should be completely
+ unordered and delivered as fast as possible. But transactional writes on the other hand, have to
+ be ordered so that no cache gets corrupted. With tribes you would send the write messages totally ordered,
+ while the read messages you simple fire to achieve highest throughput.
+ There are probably better examples on how this powerful feature can be used, so use your imagination and
+ your experience to think of how this could benefit you in your application.
+
+ Interceptor based message processing
+ Tribes uses a customizable interceptor stack to process messages that are sent and received.
+ So what, all frameworks have this!
+ Yes, but in Tribes interceptors can react to a message based on the per-message-attributes
+ that are sent runtime. Meaning, that if you add a encryption interceptor that encrypts message
+ you can decide if this interceptor will encrypt all messages, or only certain messages that are decided
+ by the applications running on top of Tribes.
+ This is how Tribes is able to send some messages totally ordered and others fire and forget style
+ like the example above.
+ The number of interceptors that are available will keep growing, and we would appreciate any contributions
+ that you might have.
+
+ Threadless Interceptor stack
+ The interceptor don't require any separate threads to perform their message manipulation.
+ Messages that are sent will piggy back on the thread that is sending them all the way through transmission.
+ The exception is the MessageDispatchInterceptor that will queue up the message
+ and send it on a separate thread for asynchronous message delivery.
+ Messages received are controlled by a thread pool in the receiver component.
+ The channel object can send a heartbeat() through the interceptor stack to allow
+ for timeouts, cleanup and other events.
+ The MessageDispatchInterceptor is the only interceptor that is configured by default.
+
+ Parallel Delivery
+ Tribes support parallel delivery of messages. Meaning that node_A could send three messages to node_B in
+ parallel. This feature becomes useful when sending messages with different delivery semantics.
+ Otherwise if Message_1 was sent totally ordered, Message_2 would have to wait for that message to complete.
+ Through NIO, Tribes is also able to send a message to several receivers at the same time on the same thread.
+
+ Silent Member Messaging
+ With Tribes you are able to send messages to members that are not in your group.
+ So by default, you can already send messages over a wide area network, even though the dynamic discover
+ module today is limited to local area networks by using multicast for dynamic node discovery.
+ Of course, the membership component will be expanded to support WAN memberships in the future.
+ But this is very useful, when you want to hide members from the rest of the group and only communicate with them
+
+ I hope you have enjoyed this short introduction to Tribes. You can download Tribes here + or you can download Tribes including javadoc and this doc +
+ + +-?~RwuvsrnCNy?n|*MUIG*T&3L}YdYUjCN*c`Ynsl*e^ z^F}q>PgERo5WJt}FLs&_NvX%5X(dsPFv~f%V;T|1ONmwv1q^X)RuZWq!pLRVFC}`P m;LKR`Yl+=Fg6e$|-beYHSJfN+V`_E2dG&vx$SH^in*ac>WkY`e literal 0 HcmV?d00001 diff --git a/webapps/docs/tribes/leader-election-initiate-election.jpg b/webapps/docs/tribes/leader-election-initiate-election.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e8c11cd6462ed73f0853dfe508e8e69c029afc8 GIT binary patch literal 33664 zcmeFZbzEG_mNvX`hv4oI2o~I(U?Btv!7aGEG!SScXpjI21cF0|V8N|%hu{Pfym1NA z5J=&-H7>%NM*3V?zF04U%O za5D!e0oa(BSeO{tSXfv%IM}%OWCZwlc=*&Lq(o%&G>i=NG<0-KY&k zDJJJvcHpoI=^m0>d5z;zunEK25x+$HO|rixSonWRvVRfm|Hw59;G>~{%0nXt & zoCTq{V3W>rNYCLzzFp;(fIV7~k(|-Ip!^1(^hLuZ62z|`RG>GIw*F9-gnXQPB8%L- z0k9aaA{j_-fRq*l (J @^s`Gpf><+_4T_Yx*K45^#=G< zcuj79rPV5N19bG=08h-rl!1U7;F4?fJol;h4G@uZ-TB911!DXUj-;)t-(7f=9yz1* z#`ue`h6&N9tLzi*LaB-j(q=CRHOD7ih=y z QYcv>ckuyD^A}obUp2mR_7MXi22`=WD;2WSy8wH$q4fy62-qM*AxWxN@EqV6C z xc7D#Go8p{VAxO{Gc0v!%Ysk{`- 007VA zFAk|9P1?xXy%;iN`l&i;sJ3>Bk2z9|w3b2zS1>>v@U3XvT_K_eWl}=iy^3^e`{AsO zHTOeD86X4OzqX@)eFd=Dy=JOCJZY(^7tmmC%rfb&tl~2*5##y(QT)+Vd=^TIvzQ)Y zBe`(txl|?B;0LnQO9T; hjqtD`&YW3 tFmf%&Y*?TcV zNnN$J3d=)McX*c`wzO37&nY`~3elcbcJsf1b-T&4*;r;>-~(2UIjqyZ^g+s1_SsJ| zU3E57$et6{{WRBQUg*~@vUxwi?h$e->D)# ;hYzmZ~nirR?^2dxuxjl q 4xW8hZ9h?Xv;;%Y~l0S)5I^;}@eo1$icJ4yDhD+A2N>hNtoQ1`LL zGdOWuplqi#1 %ve+#AIDxyQO@FH-1|5e!; +eM*kr hI)^5pVqP1799` zuf{#KpS@N`LzwKRL}@mb{+1Cl;+U}9TRdO#n$*nABsZj 84TTDP zI?nR=#^lOtzSQUEUoh-av!J-){C?leI$rrGfCPIDf9~{ZgNo@z5JQI1Q;cGnPxWy- zr`VC%WqH_J^Cqpx*ZYss(33|86(q3Y4JV#5+7?;x&inhP_Lq3&Js3#(5lf;jyOXr~ zAW8GHq%}bKRIH@61zsj(kn*L>`1Bjckx_)}JPKW6VOC-^x((V35w67NZ+i+H>H 9svrX@7DKKUTSh2XkFoSLt7q;gfX-SLR0G1^d zS7bGigKPE8Sm<|h-y5JHGYJ(sAbmJ<6{-<9VPd>FJ$WrG-b<8B}1>Fe(AGF`1q^h#XW5kHS=@N!O`=>{M+wcPLJ+Ng!U z;q~1J`rvkJ=$+~I@H#(ZbFSTyAkk;(%81Ewh4=fH?C%!eOs8l>rtGM(FP5Uj!qKcb z=pmaDSd( al=j3)xCx5Zd^UmdvQ-sLzJSub zyG#wWQ!aUF)CIan%EFcL@6oT;tV2E8Pk=AG6_~S2U4rI2lru!Uks~=1jCY7$$qsj; z#}jl7QHk$+=S(aj?~nZ4b3H9-uxZShUWU13sMg!sa5t*$6iQ&pPN8IYBDhs+_0{+G zSDIr6Ick#g)tQe@_Xh+qq$OXFzs@?8oE}M9F){NyJ;LJ-DkS*u*tz&Iv4q2fGTyP9 z98c(vRV Vw#o$d{a7;ctWG~#11 z^kOfGAKSbzRagHNsTLC2fLZ4U0TUGQT |?vbN>kiN$^9eJQ_2$NyvP5mC~f=IGZ+l`m^; zIs$3qtT8ZigET{dW6`T`$x&3{gp$j27fDgO?zZ^G`X!L6LL(I#Z^{9Jmd?Sqo{W5j zA$a!etu7}NMTf$L=21sW`mjib#cg-K$A!n6Df$uApKTTQq8T}LMa!ke(5G{WYw)gA zW~XNjlKE^BIXCgcG@7t %gJ_)`Vn5=g=6mp%L1YE8-M4XRBXSO$Zo$-3S0Go6TVe#i$tX=Zy*-;kA^ z9d1|oRDXvYqc|%)R=O$*)A!V~T{GoQW|Uq0TQig935w@O0j~MAygpkV$&_5cW7FW{ zT=Nz$HT01GtleWNm_rY%uk9@^Xb##=@BhI4bA*MJr=v`Ul2GAnAgOn5R+}AeZt6tI z>lSx>cE3oOErY|^^8)5`u#~^K7s7Hd!9H~$oEE-x!6ow$L%lnRMWA<@R{l|zb!x{z z$4WEa8$6TdH&U@HOT1adhP0lvbcM{)3?T+jMk~s+qdRALC_Xr)VOwf2zl&MOnEAe1 za7%r3>i9sON_{m!(WtD9bqojA(0m~rVguS)$cnl@7UWf;bXAe-ss#0xcg3Z5& p2kk=V%{9f+=4fQa z8dse^^*s!hf8Pct9=idm6QaLD$2Fr*-9|z0xw>?bv5?zW(E>a%gIurl>AK$DRX#cq zVsVMJ4`4m|M&BjG=F*-Jj~nUcIY2j^7`f8i;;m2NT-Z|TXixs7YySS@RYBp8x0oN~ zSnYVe@a_W^+;O%>X}RY >l~ghOo&HH-u6^Ma~kB;)g}ew(aGf+LUkQAdr4WC7ZKFMKK?mGV-*K$EsfRw znd 5*X$IdT2{l-b($Wj#)a jbBZkX9zd(&bAzFr)sezk36y)B?e6%4FIoV8hBqYFyv{*==zV1>Kf1 z$TN7e0CDfjv`@TLDu*~}5sH*ooVpYjO{QCL@n+w$v`O0!@+o0Nfa&3m3K&N>0Y7lL z!8C2<;0BmV0CNW)XwMRugwx&tx3|#7I4i&e?Rnb`peuH*Ier6BLa&S5FW=-5$rr%D z{E+VkxKdj>6H~o3y8+IV+m75qWl-aef~C51$xh^mca7-;kRon1NvwN>yFSFQDZXYk z330TnFywUKAHMM`k!-#JPFSI93;)k!L+i9SGH7MF0p^8n0QK1x)CMRz#JxMyKIT%r z9FnGar@R(g1s9%vQE;X 0yqxw^=JX^COryo38aUFQd)*6znDV5_2(wJ<* zvWRq4Qa?O3n)Y#~*Ijr@_Q`y%&y%K~F9O3CAEkp;T( Lym!u33KQTfSukgcYfyvIFqlx0chmlB* zXZ0>uXZ@k=}?q8!@!>8TPz z>~!hURI3_l=TyDjc7#z66&sp6KJE4Q*`(TWK>PZewf(U-#y|G+yWtVvje-7nbORiP zxnB!I{~+2g3;eax{vaS|x_^`nG<)PPb!lIM>Uv^QaYge5%v=5_nsap9Ro1?UjLOFK zaj&`Um#GTj(W^AfO)CvL91lVDZFvU7-<{AeNA!>FUpb{eIjKL~{EuJ!{ckL}e~P!L zCf)!bo|S&xVPJ87=lvlEXt)H>uUs>rws--bUtqvLYrpjKr==u^G`azVDy|azmoC^r z75?(Wf1xoz;djrtmx!VJ)HguUo_U!0pD+Bo-H@HQiqhMwv`*~PD2JaeY6Q>-qG9-Q zsr7?48r1-iB~fyACvRy>xOB!RW>Q;C(#L(DX9=KM0^&V^?EiyU=D&-ouG|2Gmy7`` z2dIus>mZyYZA<@U=1mLJml%aQ1BFn%oH(hOKLd@0%juUX^mx~caz6^d= %md%lh)5?%@#4lo0f+KT_GY>WHuQejM!}QBn2Qh6w z@o#_$KhRhG`NCiB>R @@`k*rPV2iN{}fyjYDp*1m1 z6l#%O@;>BhHv_I2k={5=qs*|2E;+z}VnsOx^3&RxM_$N{S|7`?7tMzZWjUAdQWex1 zNj7Oa&Ep@Le(8A43#Q*N)h}~}K6}}Akujxwl-Je>{WctIU?KYyZ%UdHUNp6M19TfZ z?NSmBGMJ6C%oSR?2IvI%NyTllq4#5`G28&?hYKb>p6)!}3S3wqY%SQ7{6c~5ma0S^ z4rf6e@Ska*JHvqvm?NLx03M@P98SN5`G30d*E%l0tBb5yZjpq$k{Tsx!;(>=<}_6r z9bc!AljU*4l0$LmRXhltaxZT)2+Xwk!z(aGt!bYYUvz7o+Q#;=QBev?CWlfn!h*@b zC&ptL4gE Mf<>?hf6Tsy?=%v! duRE9fMIDd=q!bUnyC}hqlKrC+B*bnvHfG z5D+L={BS(6ATpChaBuxgAbL#|Q4>zZ6)yg`{dC#-S7AUZR}=Z6U~Y&ncZHs|+fBRj zxz48x?mIf2ee3-ACgM{4XlOZ_>YyKI)tR`qAcHWPP6}M~HPk$At&3tfQs;rp#S3tU z%LB)mzX}m=#-yQeEi%cT!ripgkr5qBE2~%iW_>PhXvB$Ln4qI=y1#kSh6XX|4heFa zB}nL=+&kuz&Px@YxBgiYO$Ug}h;N&M9*|ojf${p@5`|L}8PwNhy=Sk;A;2 d+_lvd=$=ikdr$5xF2dP`>7UH!W8<3mDk< ze*8C6iX91Ch1Sn?T^IM6*ODBJE*|rdlF*TS=9l97k%#s@m&~{A 3)BUTgb3->Ta@iO;cqe3+^!adUAt0O0PKK>ps~Q2h@s7w#vDk zX=BZ+((xtJSq-0%ktAugTklyRI=L``_V0u^+S ERqB z&GwgTo+B!faYIS%RdYt)I&4d2YF-#F8d2-gkyGMVyguw2`r6;DDz1~Hr1EOnvF6H{ zc3XssPW9>Cc^Zl-RbE^p8qWQ7M O*h4D zNDIIRehdpKUOb6eFq|Eti%7FP60Gb(#iCV{yEAG9i QZbK|60StbSgD_?BI1N1c#B89B5 zxY4AJR V-5LMwD|B{#3g&_?tsvWRB!yOv0A>mRkipIm1`GD z3L(*hP!h;c?=>UD8i5tIHpR451&01apY8GQr yX>D{pQMNv&Q+HHjZBy G zAT&9n5lwfriX^7%x~2buv-7~MTt$mVeeHbu?LUq1|8hC-pQQ=EJ|oxCo$y((TW~$m zl$|)o@YtoF;^vC#phgL!?qHSODA$pvqXTm*7+*cf!d9Q|;niCCgLFyd-OkTNYsENR zq~hX$wL>q^V-TT;%*{9H!OUIBrZv+H!
KaTQ34QyeM^EIw>8ifBXABDIY?dq+n#sLCH7 >N)CYb+$OoxpPkL7uecd5_!lE@E-)uL4}Zy7`_1%D@2uM z{5)tXZ?s+lbo*{zT3Em>qI 0Qr{P84bU zLeGr&iVa`Z;k5I}kD!R3iu8>l{5$tNd5hyk?%p!Lx2En|WF-ChBO%^e=v$$%7Z3gM zZRp0Z0+a*3A+WkzoZy5Ba2YYxYR(Cs^YsD0SL(DViL6Z=9c(4`^n%zMT1bOymMQ3( z9D>#~cL-#gT)m 8cJBSSDJq?f88 zcD-6+w5`*{n^YqL8) X`_F04%r!O1ilO=WN>ls`uUOge6B~bkjwg3qngH%j z7(h_8B`SKX&^**|6!E#aI(M $Ld=!L;iR3(%;kH|AG|v_pbis-TQnAj3Za% zWNKY8dsiG!&(ayR)!(=YTzu(D1n3z47Dpo5BCmnNq8SFRoK>ZorXU%={Z14g{J|H@ ziXX`bs2LY~_q9a6|C=%G@-+qY^X?5`ZT9nezznl-<-O0{TMp;0J=Ihq7%yAKTzDJx z6DU3UR2(0B=io5FK-j>5KZhr0Yi`ca@q=i-r)Lm}GJ9|Tw3Op#O;&MTm4}~!cj P<|=}` zDv*_OAt?uU1hL#mkXc1~1DyK)P9d2DQC&QcTEziUtF}O%$vY6#r39%}AO!Yp=I_)h zJgw`ZyP!W?24Sn}!fT4$D>ZWokXi*IVD`T=NO nCJFn#d{B3^4tI!GuOS%2UjUAsG$-BVjTv?4|9v3n>n<;v-+vJmrilfz3qAD z)$~1loK466Cxe^$EOkFL>9%ziU^8-#u$BffN+Fl8)TbXqOHykU3ql10eQ($PHSptK z5R1PEmi%AuZ-B;{3rtJny))d^H@2aPdR &;iX-)QvJ-{4_Au)8$fSbWbXNp z_!_`f+K!HXhi9|_<&(7pykx7Hs19mx0(CfJbURAjW3(Sl->`K1mgBc6J}O?3BTING z468>zf4|`D_cf{O=yj@(y-hvVe$~EKhT`S&p~}{q{EEUYpdgO(zqzfQw8ggK9iH@k zJ7K(K%yY3oBkuojyef;|lgjEDX}qW;qmn$mE%~N(Uk>+lIm1#{8_@}8s?~?)89JlV zhuxvQvJYY!(7#LUg>|qkQX!*P$neS_os+7eO{Hl~7}aPjm;?=4%!G*nbT*cRglc(& ztGZum7HAgSL^KsAdNDnovri3?q;-g6#89_$F!VN@UGpK$%Gqniqu#FI^=HNM);#CP zc%{(s^aWY5hak=fJU${br4N4hnd<>-TU&Lm@l?9hfrxW-V*rH7UDr>P5_k%;^rtSL zz-F$kk6T>igom@?(0RUptc(T#;sBul$oj-=M#!1f#|6uE&Wb*JgO*&nC_T*iB)QfK z$fsHpAN?$8IhA`@c0&JX1EHEIGOQ)n92BHtLhG1+K$onV{cQ;K8+tev)$g=Mvc3q{ z8z87?&ccy$=(_y8^V&A^uG!m+XjU#SBJ?RQh(X^uZRb;oRq+#AwI$S{?pp`!_p{O) z6gDLAy)eO-2Y)ch-{_B;Ftb9$3L~(jfg7^BXUw)8u&E{&`vg8Ah<3|x?P=bT(?%@9 zx`SrD?F~^3FRz&njatRLNfia7|7N=tzrw5`k-19H{n4o(yo@GCZM8Kev>>TZ)?#*V z!YrfLvw_YY?Ok3T!EYtHU-7j6Fg)1X^zd|Pk-g>Zu1w`?pA@yCg|>q5Mj#TkFi|cp zhcO_dcpPS6m(=(;`m5U-hWu;;gKnftj+Yu%)(ZfuK*!vlqbJ74Ac~O+;%qcVpKFuO zd#j;FpUX(`bMDhu^yCl;tbCDahehtg8z9DyfYrFNCAok!fPbV|St-#-s4+0q3lpbf zBUJQ1gXI0|?-b@hTwT{28q&lqWAO&q;>mU72iS4|w5&1omj*<^2 AE^p=(a}U z@!0!P5iE&RowSiSw9?fdpJeM!^x#V6Wonl(>7;#aF^x|oBkeyamqrrx1b*o>g*;!u zd`seDN0CW`CldQLTu*% (K+G!Llps@P$~Ei_NiT^PZENXZ$LIqiai$ zwX}U+9)4phudx$0)-z!O`|ia3%F@%*3WAUQhNwy0NiQOqtLv#)*}U%MB7A(8&QXw7 z6Yf7N+<6gaiWf1L 8EP@d#nncK8LfVk+Foy%xBoT2DFvo z9$0`M&A*o%fq;&oEdO-zm@rYjf=Cg;X$i#Gx%M_^ih45jS4?v<0Xc|IX*Nf10y8YA z #%Xp4HV&`f@i%i#@T9 z5 ;E(!neZ%bg2><8AZR_(2>AaCql)x${CF%TY1eS>dUq~&7Ala9YK6?_Xu~!t8_q|32VHDmeL19~*Xq5$x zLwBi-oXVV<%(C~6wNU5fQdm*Z?QAfH#2EwVp7=Aqoc7CJoocXuqg|8wur7{3F#tWT z%9hvOa0t^te8;Q#;X@A(6idR1xOE%Emr?`mZyH5AvF|mx?xls8+G*uTu&KZYBUw18 zN722*QXlWbG(RkCkL}RhslO|vP9|wKTtXYm9y_R3teoxybYXnb^YHTGM5`*dFhY7S z??D5mo=RCANf+B^Qe9@yk9Zla&JJg#cm+tGl!Ji!af2-FZYDiU|C$OJQTna@J#pdG zlenwLdQZ@wgvYc~qZ7gcwWSphca $F#39`{%ItAJf4_ROCzdA(0Z5Vx! z0{N9WL{}m!;2+#stG=`@z<0L=t?Q@vGQU;<53l+-$zHVEM%_ UOvSizp5jzPLD3Qs?tsJeh|h8d4W(e0w&%Nc(uTgmCP^971fY!(Z6D5?rJC zWXfmD?FYSrDSy-WJJIi$oso)1aoEy(+FBJHO!Vu&6;G3%Dvt+DNLyH!bhb6c&6rfr zt@nM)bZ8A=0|0eE)G)_Wrvs!clR2g#?#5m-?B0>e!#x+!SocHQ zZ*QjBdL;wuLD@L23g4i9k;cRCNzH8N612@8EKjNpYERiHlr?f^wx=nKi#*w zMFD2@UtJ0P81`44zFhjAt=|i>Jo++DHJ+v0dB^W@P N)cwdNAgXL_fMxKx?a}P3*}X8S!XWM5+2+SDazE2!=tg ) zIWo(vmu2|6lxQ9pP$szXxw`pFeQ=%L#myU;w~Qf`_II(4_Z8O05?~DT>Hp!}!lM}nnOx -rX~2BBvhKj7|a?|d2+j_q!nMe(XiP5&`* z5=@P@QAVDsd^!$jhvN4)73T-rS2+1;Lb-;8wac1suP3mgyT`_y=>(k=n?fXe12!5> zN*dhOS}vUCnH9$e)=JqpZMpOc@T0I&w2CFUIMMK~iC@%@Eh&{a-C8K+MxW?qW^`1x zvn4E+Da3e#p_u#n`0-@>xpq*Js76M94tM_p62b3!P02Q|RLB@%jnr%jeRK4@WGEwZ z5XlL8{W-nN^Yi`l#m6r+rEVMY=-zv;m`5w0snm|e!Is%rj0~L7NTCQfG8uG!hbsRp z)$?xV4IsMEj=2oT_nCF0io6Fan|;$y4d5WS=uXpGYi-NYZFgjseJ?&j`lG$K50fQb za@epJ$dITL-cwyaY>h65MEmbgtV|4~e0>n8%2wt2?Tfn0Ei|;>_!jeCPxTOJpUXfP zM?)<5 (YOKa8-AC2>MT+D6Y9+% zx{3>NGxA;{L#ZsiR5|nugE`59&p47tcwP88J~68j_{saWz1R|T43g7wmploodS_4X zE(d!*8a*Ic+0*ZxbqG?YtFrg=D&j+7O6}z?8k44nkK(bEKQEj$7FW#iD&98IaAPiV zX~tg-*HYNx_6n8${`INe3?GS6Z5eHs=o{*3ZYgNpLp _+)!T|2Y)`t?|)YcFKL-?M!a4gHWG<9E8k8%VS2YPT#( zYZ}?r%xsPN#PP@rC`ngWkqstOW&fGN+H_O~;!*o-+nZB&Qp3J=Yya7=bM_Lw(qqj{ zek0 yJjrtI0@APmZEh4+(Enb42khO#CKs;7cQBOk33n&Rjc4d1KXtMY}?eG7W4q@mB& zOdi7vi4ZcBEi!}jZF3pKXk5sgYav9ichFg*k*65e_67Y@hcJY%G$wy8BGe%MlSI2n zK8OUrOZ068IZCuw;fwAk(~<=5pWDeEq 8ud2`mYIyUsKBoZmgw4;sTMdzp3m;@>Lv0>{TIM6qD3OHbPw=$2%sQ)F~9 zl(NT_B8o<*>Z28|u0JAaL;N}Su;Nnr{SD9$T@h`ROTT`1!6p9V(*D5xD=k#HH_&_c z*8=ql ^q{) cc<>rbX#CuM|EV?YHq($JGQa#>oIp;eU-IV@*euuq7 z8~2vU{Oka(lm;0?`~A$*=OwfWP=!j3eh@d?kFQJjR%*~#m)7kQQf;tg&@P9cbZpC0 zA43)gbT^zK#yc3*)s1zKEIW9)Z3^cY+StDGTJFl0!0;S_6QVY`Xs79^e!8wn?PpB9 zRADccs*?DZid2*j1>*TTc8!$aS5;=aDaye-9y= UZ6Pnb|namgkc%O!@7(0^wh~=o~(mZeq-*v6E)4;_^%WooV_XfPw!7yZw)T#~NAE zHGR!}*jkvsAlkpb!pVq!=0>P zU&j(PIrl5dM)c8P3|EgFOQE^&?WPN%@BC zB7CyqF^{s;@fZ$t{N%Wy6!%yLZiww<&%0;BRTmKpDtzwQqA8_TtX61^3W`d19t~{C zOM5TRgzk$F#Xf3%huMEA#dq;+k&y3kOoCw9w^wgina&{6BEeebZZ`mdNHzm^Nd+F{ z!1Vc}T%OIx$$aqFdw`p6F89;qBq4moa(*YJ)e2IG6PyW=6lo(GMqM;5tT{umgMwb& ztAZSVoTx#fu2e%jhBnSw+Cti$c{gV7@`_fkrd2*>pZTSb3YD#Yg&qf16mS^Kt^1c@ z;J*qN|M9+ZcMHU3w6yr1d%*iXzI>QUrf -Jy{QzjE2;g&fWD#upfLWeTn9+$Mx_^4k>c!V@vGs(soxlTbzC z+9 #;0XR!6f*<-VvHAR7NS>qL`i=hv)9FH2BN1QK{uqY|03HCHRZ$*3ln7#=c=$G> zcI-z#PoaCOHp!7?ikQTZs2H71mOWbB*S`nsAYv9ROE>K%J4auWssEmS!I$^W^{@x^ z=!gbq7X>x?Cut#T>ftAE+qw^Ml${A+b+SU0rrc-UMvEvlp<-#AdgQuB^%6WGg%g~4 zgpBIQO1P`yQ4sCf=9v5P`kqKbPf29w3$KTZ{`mO&;v7^P&2gjCJ~DT^CB45oo!&B^ zt$R3-Dy5F@_UMZVIy?${6tkiFa22c-f@lL{_e`J-F{|suT@5oMG3L6^KA$JANj{5- zjd&(L1D95XRP+jFExel>fz~zQc*tFK12}Kz%^TmM3LPm)kD=?O^wXe_=EJ5hPAGQ_ zVV+F60o2;UPrrN;>pYuP!*VA4_?4B*LnVL=CI3$x&3_CNu&`DM9$B;?5|iL^_)g>7 z^(1pc!SBszA7|u;g{bu#FdGV`6cN3)WWe-h{3A!yNiG`I{g$&VGoq(Ec^I?M!&SKW zYlw-s(M$4q4NkxHRJ`Nc-@OF3UjDZI`wyJh!s~xzv5Nd&r}!r{-QUX;f26YhnWp=D zq2iy@bbl|M{I?8g<5Cl3CSi5WzKj0R-^#2W6i{mZ+$UC;N+FT?y2?!uTVC&lX9tHk zW=jeT qyQ;%5=3NNWGKkp)C`u6bG; zCZ%c1Exrw`FBoqh5994&IhVTVEgyQw@0z}B6`lHS>`?v+q^#ec5W%S^dn|8c_iXO< z8hxi=f4B8TH{Gjcv~h=WO^z=$!6u4{yN0g!WpoX~^&r*?wAkj_i0|5d*Wcp>++h-{ zIaPmiTiiqzh@@y~p7`16N=FAc+8NKqTU*{5@&vE%LOJp>MET{KmpZFU Ti1_9Qk#QMN#mZW*kelB5rxm^pwgIs79hHCt*s;GGHI zMCMyVJ$a)eYIfU5cZeI+DW(GS5x1c0Mf;*ayX=G*CU@fUl*c7k^^^#0uvRZk&(GM3 z`~ky#Px1m$0}Q5zl+Uyk*iBLtM(KMJB6BkA>9Zq?DAFo7ZTMAKl?T}1s%UJfAk91X zUF2oZ%KI`qgj}55r+g}~gf5Nm_HZ(MGL4O&H@wh`zL4%nGKm1m*kw+9Oc-6H;K-Ii zAZo0REk1bQW#T?aIKRp&KJ4?i$QuJM+x=n9G*8W&=S3P9>wfjmA~I0%>&4qwXUYjB zY1+(vE0FfxvuP#oozp7pQs+z+&x1=p?WZY6uwlGZBbV+xig+c>KR}-b#ncF1v7d6Q zDe`$^di>Ur9>-bh6ZT+oj@}@^y#&0F9|ru>e@>s #s>{`aYO 6oL|*^sXFS1hiGJyLyHH8;2GypNc^v8f zakJQjaCj9aEfvSQ1hD3rWn+gmRkk{9IWgxyYhRxN7hkm! }K$mhW$DcpWClET=@r)G!^kt01`18ZUS5X>?4uVne!k3%2N zuYEcvNT6M@kE#t;7H)Lon5gw@m-H(^GkH+-f;`0iWwo0wnE)GcpQ#^tdKuDP8A0Ec zT)OR--cLM^KaT0pg)iE>^K99xhym*@-~^)gL|s?TooXiSt;{LnV%1O^XY^6W@a{+z ziyWrrEJR8--|AF~R%|uI7G8^3jPx&RmP@~S>r}kbYkH>((;{1g%tb}-6BS1zz!3YF z8HT?(@8%Hjc!4f(PmBTMrCVX{s#uqENr3CVNW(_B-W@hC!-s=AD%ebY;n=I>936Mh z*d!^hV9@P*uNJig=S+sAVsTX>zpBzo-NJ-CMz1^tQfEVD9jcLEK0uVZDfKA=vvRl( zcVu0Q+X%>eC-AI4vwAYWL9fbscBU9%c3q2rsv#J|`SK3mt|cSm&Q>dHsu~`Vt*BdA za<%WF^KIbM;`*(H%S(7aWt|COh7_!Jhln*@4@Q}?N!n(0I )w&cU+)_h5xYFd5##p~%ArKOdzY}>oVmd3`pzh1fjz5kzp`1Vtok9~n{L^U zH)1jtHf0LhoX~xu6$;E{`T$Wgs|PN$xY=1x8|R0Y(&X+(^>t9_2R`#J3l8?=GJRfp z-wJmkIJ@llnR2_pr)5i96@d|XPA7BjDK}Y~?emjYuX^4t7Pxd4P-Pd8s?(&I^*O?? zO@DGXpkx^~BKEV3jYdU=Tk}p&cRj*)Z6FOP7}i{z__9wb&m(p9mZx8aP}FGQ8#!RE zZ11_u&Ub$w+OVRgP@8(uz~u6HI|a-1Snuv7O0koGnaQYs@Tt-D#DH6Q7*jwO4!x}D zzSPnI3FdK_JmraNpa~Hn!F?$liWNtza6IRfTW2YQmBm*@%eG-M?Rz 5J-{ z78bIn7}-2~tnCnL6V1=`Xy00Xvjc(`VF=^E@(kzF?P^1FZefzJ?9#_C!*Q#U` V#bdA|LQ2($o8?G+GY6 _AI zDC9($sT9{+gB!XllcOXS1#e7-T2!QeO`^LOmI?$!-nCgxRO4r99RfB3cga69?{$ zh<|?9AsQBs*fEYb*q^AW?;k&_ibcgDICAY}iO1*c?TGhIkwbIzJ5`w-aW2uW_cWJB z2&UCT;A(oe*I8+Aq5dMAe?l2mUR}_~yP|h1%ct-+n0+P|rQDr{=<%sLTrP2izm@Mx zp4x0NkM7&x)#y$!pL;)1b5M Kr4gw`NP@UFgbqqGAqB_)z&xL{^X?aKT8D3Z~|Bb_^Rr#*Fp-|E|F z aUQ85`c_ZVpSCK6RmA2vR z@uc&dXy@7(cS)Q*kltO!Y1MLRx+4qg*hkpi@mPazk`#v{=@`_OXTlxYsC^EwkUR>u z?pGx%W-3PRCpaTp%O JRo8$^spZ!jDa7TAX^kF~n6nti zY}(x %=H}6j+%(V4_7#t}j)j*17U?dO#9^=w;14ISp zWP3jeC_hW9*AW)t_{OKQW~qe#tiPY*twHKaQfG#5YRSOI-kFUrrL&K0y^j?Q1r$Xs z ^`Tc^#FrThEfOuS42m>s1CNP$ z0u~9lldi>nkDd9Jz++ hQ9R2QcU_RTOVU<&8OG MpfhezzAjFt+@~@zfEe1UI( 9uEKbhQ~g_UgI~o%(mU-v7^q!b%aB;29ozb zo{F6YW@q`QQF@ro4rHe)FeTHXM?}$q8(84_zcV{FuE8TC1|$$1R}p-2KaBDSQwr)E zG+xIi$D&5tT&=l8bM elPFRuFIwsu8uyJTj+3FiTUh56zu3;~mDEEx;!#B}pLmNIL4rpWL ze5`fK0qDQE5k(m3q{^0WWUrmpsBq& z&GxY3Y;`TIg00xjjp*|0*`rhRJi=R;--w@+kfYtD8zmIje~=nRH=q;m?$k zP|r}&b#*FXlr8eEoh1rs-gk=%)=#9*PcARt7RORGc{Nx)RG90XOwR6NTBZ8}MH-0Z zFkOMRc&Qxx;VgGoxcLr2ZKwr|)ar7yc7S;R->*E-`>Vq&Lppp a7UVR7noNR!&`tOJu1N2biTAeWR25@IQ*I^ID z0LudZ7(anWr #Q%0|BUt30-XlRQRrCd5p0M%lt;;VIQ zo?bt1=pkxYo3+AZ>7Bxxr coLy3Wj&*wW_#f^J^FBI!rGE?v4)e@`6Tidmsc% zhWU<08jBSC*&ulTUwh{r*HpIc@nC2wgx- dp%0%UYoE*zGwq=z-dOTImW=Hkf%?T{5~H&@{9d$iSR_yXbsU%HSo2|@ zv0hRGw9X-Yv4{DDh1he`xhETA%|9CTPZmYiPC9G02jC0`^1T~9 0y!d%!IAbnaX9ZEwp z@aP%p2bM%v_)*``FXX!Rz)wYzg+|OYoF13N$tpE{;=Y?&jK`2@sDW8zC6VPN-J2TO zym|p+By2AdNbWP8u28A1Em=)QzVGBrk2#s}7B`3%@jyrgEM0APP`D)spb+LzP&y z;Ro+K=@CS8!_s=!Ir;rWl>E;4;ok`|N`=UyCy0Fcr#@))>HPw_Wuq;a{5klUaubHd zykVORkaa!Bk;I*i7&QBHCfMPg4YzI<@!oU`XihpgfQCrH9_E3adkP |$P%AA1){@ghK;=r>o1=5`3~U7~OfpiqpA 7~b@icy-xnWwW@nn_zh8hGP5 z<}fj17sJvwV$}&JeGD-gDiMTR7=)kVhR~}siDuDMOVr}j-mpY>cWQ)zL2DACfi{wc zBPNKE2&p{-B%GXeXo{v}y<@0TvYMM9E% N4oSyu*31qp+cSC6#P|H5Wq-YM?+03OQ?CF8A<^!#I4nZBLUhE|y%agiT(S(4x(<7&D(Ym|@= z35n+mr8VOxRj)ru3R;-fk|Ne-5fZFu0rx~pq8awE*M$W@v}LBapyV*xvJ_0%bgPmh zk!R8p38$X{c$DQzgMth?1=gFguJ)GwC9T48^Tf!>8{(SC)?ir)9EDTOR11!a 1$}u?=vcZ`}(6t{>O$5kiDuZvpPJ|>Ey)c z*g#GLAUAo_{E_N1AOav=oL6cg`0co1_ MW(EXf3|KLNAqF+bV>vSm82tjX5b?A*_5&-R-`_1&g>S`_{m zoI%$H5t@J!-H4^c;rjQSi0XapUq7+ed5*pOYp3);SZhLaEkk*gk3Lp0UD+|>^0d#p zfdT&pTndCs3-rp#P=PcN!!E|&V9PNEe1=D11#QcOEKyBl3gn0Rzq*2e`uLU!YYlyP zt6a*9%+UeSA+47kvv~57dlNh(8(=>*+AcRrzhF=Rp)6r41iYu)Dn~k_UjVp^@-Hy2 z@24xV*Jy8JHcHoDQQnr}jkQ^nkp D|`xU6qMA#$yV=)+{TnX4%fL^#GzE#xEjI zV?70g6vbr1ORk`ud>jc~Hq4YP?s0~8t13=uGkLnSxKC}`sYr1juhLYPQ=ge~c_@Q8 ziBkb{sps-LtMN05G^bPkcrQwU$GBShisA~ax?`f2{+XZJ^0Hdkz4aTn_+YX%ii7ZtO-XWxHM zCq)O&lzU`_9*)YUPPew6hGH(B(r| W|qckKd;dV_{QWOvK#kJJDM{v=UxUaI?le4`GW=VQ!>0SIJL>yli{0+NnFSt$H*m zWYYt_`cp4_i)v#;ni& |8>Q9-hcKCWRgVe*q0y6KotiX;fo(y&?1Ur{2n#D{mN^_Tt1f{r!dnG?{2O zNAWD$r=uBnDBxI5Z(S_MSy7*aJyZ1vzTT`21`%{UBVId$j_R6lD#<0lZ2QqL^OM?3 z@EVz>e&WoE7|D3#!Jt8jxo&M2dd2&gQX%-=XI(0|-L(E@dxv_SDxdh-(OyCm9e$B9 zunk0RyK|eSYE`6?YO&-JLDC}iI9o}{+Z%-mS3QFU5))>vVTdNB-2;7Gi98*`R#rzx zUh?>7?q%U_UU_5Ian;hf{CQJJoO1d>dgL$|xU0cjSK8&ZZaU!XH@$Jd6TjSZae#dw zvMD}H-Gk3u`QCZgt{mL(^`MPyMlc%W$zheZda8J6hd{A378-Xmpo3>FYF5(q!8HQf zyN )P-7e)^8UYmSP z;AFx*)1}$K#PjybAo{b;c=dF%D^j}anBqyLbIKt;h!Z!6Q-vWExG)m2el0+?Z?I;A zzcv_Zi6mZ}7^0UFGPohcX`Ha|P`qDeGMm3-lf9(3L{< a z`}0gVjcyP}vKrxxFkW543a7stS9T*eswr4#-&3A_lcP^7O*I-M$zh4pz*cs+EBZaS z=gZ#t$fEVlW%E<-;D6fy&%Xq;?S})r0#1(Qe_h(yGH{#z4v8_t6ES|_SK5_ 0Q~@-p$Xp5UgIKwdiA!qiwkXfpZqIU>2)%XYc4{Qw&4 } zcT!VtqllKBENvF)hyvDm>@9Ezuntk^t*Nfa_~h XNia|rr;imk=?Oo)0)(nT; z4JU+c#dj>J!tb-5{%qM8$w%Df)Zd|LI_nl&n%P|i!=7)=QkvRoW5mB6y<(>WGe>hQ z;Al&N@{dg9yTC1gQ;WVNH+Jv5P@JOM|0$n*w9Cvsq+M0rKuoE7W^SxoQr=^JBysTd z_jnqA`5n&8f%K|;a4B=x0VH@v%}@3De$51-rt-qW=vUY6?)i?yA;+|x6{tRbXLDdA z9}Wjd@&IAHBIO_^7a++WX}^wUu0~(Sa`*7OgMeYHaQ%ryX*~XNcOf7>gQ6S4`)DxC zHC&XKV?$EnX8U>SqE{w2(mS%0ISZ(YR1|m>rEo9dH&aC&aJ^wG(yY{)Rp%H#@6>K~ zwv!z*78IJXHA#UWocv5*X9mYlw_6yw-)IlLKk2DQwwMPd>G0$0Ju+W-)wMu@NdCpu zq@dZmu-w7>x2K*+kX6#E(ONo-90%B955BP0zQ-#+)I=Oo+rEoXfB4Oh^j(DdH)z}U z5bA&&*$CdWLI{il>q*-&an7+jG@rE|OYX0OgZAou>x(QCiH9)yfUx=dXEEE8_Eg2h zH&28u>u!rnm6a^yysDFSoM?=UAXVHDkuvx!2Z%zBqS+6*Sx2bsU(t+5Xz>r>jYk^! z747&3T0Ha7%ln3lJ3@i&aL36Pn-jEb+QO4M(V%5V6-Z>Y-X-(ZYi@BTlanDYO?VdC_8 zqBRqASCi9it?7K$z?!hq0FhCiF)|{x1_({!zGn`cY{#uTW~y3~SZ>|tj@*u>=ylz@ z=Nn}1$2cO|LZru>JuGKG&1VAvor!N?&EH)ue#B?*o>Vm0)58SLw&1HNkP+#|U?*Rr zeqnYS8ZZ-}B0PAtacyzUdLu9AP0UvCo>1kjVOYpXf7a+Z{%Q}FWMSk*TR?*U&q6u@ zrq*xm|5@Z_R$q ???&d9F(i60!xS@=X$xsd;3rUN?c+loq zXph;TTk~4@hYg#u2b?dbmH6%FBRMJqJ59%V3Ad$@>Kz3}k<}{1E*m?wD>_kdXcLW) z{%$;M)_KJr79d`ITBNogM=7tdW29^rpM#tS{4OgG-1zyRJj*k>y|(}MWAaf|xg?JF zToF(*I<+RV&meWa`rx)!N@Hfg*w)X@kEm^^eignay{GN)XbXP&%$&oF$CG*cR#|Bv z>FzVMXJL(amLBLvz7-|Hm0bRu&8PI{)4hEn8_p8g>Swd01djrsr+f|bwe2! -mdL#@k`*yiXWx@FhnbFA`+ebFYei-k^Bi z <{7xdV!?Tv{B#5u1ib;;!F;I=cBn=`)UwmfFmFgrf(4z^P}Nhfy0V+kODqZkFQ zxeFQmM67KTHNN IX12F;5NbCjaxtgTFiEPqWHCjoc^2|zrg^6D=j z`;UO*;TO>S6ny#GFQAbs0227;B+^4S@IUvOU6Nzmaqej T)(cdacn%W6|H{>!baLIvP~} zHrpTVJ|H9LNY8=bU5x+_7?^|0-QH8p9x$w3jGSJHDl&cVkz!jKjaH$CpPoU7Bh=7- z-a^=qZ+~jH@ORVv0n!V=E@XXOhXGUp8XSjg$Q@4L?u94;mlwUya|moWD)0VzipbwR z4j4g4Nu0p)5Ma8l<|?@72>>kb1G&k6x4D1!xc~2_pXu`atvz`R^U_Lb!`2G4XHOzd zrbkfP1M{(5#wr8YT>Wui)l5v`?I%B3)m8a52S8rl_e~qSa#xcdEE>$=zccvkhwiE0 z>&AcnZ>q=B#u~rYU$QU!T7Bu*wIbFV0Hvet6D3ZzvRCr=an*++lyCOaSL^q`!sdAm zZ99 YLcryzm<3DSs>dvhzsJHeTO(BqhD&9t;=s#=H(uO=7d9CB-`p& zCR`QFjUAWNlO+lOS 3&)ShB_^sZAt!>zqst z2g7&R>rKh9;7p^T58Mq!`x&O<>UmmdHAm3NN}aox+d-Rr z1wgGo-HDYw4Y1#frZxu<>|R+t1Kk%vCg?hY<)0bXfBl<0_z}wZz-!$417Nn^k@@$ziz=!M`f{n&`i53+&$(6OT|;s~vO=6-!-_Ii6{(QM zu(_BP&$|BGbA9&Mkvr$Dw>l|QT0Xpj3b*LtH6mM`z#x~ztjN2pANT}}Mojs{W9w|H zo}exj5cjdF>=xJg@>PH~A}lTaAZ20AuYI*Grpes-AN3ik=){V9jz*$c0vSXSH(oCU zUR&~YFoUC%U#Qx;mc zS!_AJT0)235Dl#^YjMq;zPsx)^5U-{MPYM%Sa`-Fjl6kDX;sRlQPm+fPvf#6B2!01 zYdJ!0%h@R`5S=U$wSpEuvv~ZB4Y4(hBP uYfo>p25vbH+nkHg$!*EIeB<0a!l_C*P7W<{WxP>4X z3_7~ZcmlL|D^L2uTF*#+p50+49>=43MJrqK=dUcp3tqKobyJewY&Ds5d0QsKo;7OA z1nDh>mR+x`DhjjKh&cAjFA*{t4;uPP@B#N=fmNB)XIgL{Ex(!c0x(1W@Q=S9qdx-y z`Ztc_#(^3Uv6K?D+lxiE#`kvd%|s?w1whakI!A~U8j_iA->bm5-+C{X>t$t4)cX3k zS6<&ICbpEyC+6##Tyyf?@(+VYWkF(8<^Cn%K3Yoe_S5w8G1rGD)mb{t=A3syq;nb0 z+Id3w(DW~40THdUbnJIj7B}35-sC9c$;y-%9Z2Q4uZlek_wHMy>GAO3tci3By{>$V zV}qTA&+IsHe-YA~33N!Sm=uc!^=z?PqcH9d1Y$L-U+l6Yj?aonvWc?kjJgC|TN{i) zc%GOlt-fSY9<32D#T`R~tgL{AcjBT;*a~r+N20+Q>S7az4N3{BZOAN*EGy2+t%y)2 zf8-y*Ls*a7r0FQUu{<*o|6Gn4kZ_xqmxvhCng`5}J$8;3<91wzP}=Pd=-nO(05Lil z>rmo!l?T36w_AuY9H5_{aBh`cCu@|%c{3M!3_`iU;D1SxQh$eCqbNlwUZV15uU%~y z{sQd-CCpV8@I17gw&f&~ED)Rm$1|NQx`*aW$6#`sv>h8gv1K>)=R~SV-*>3Yw9?Uj z927Fe%JzN|#9VdZpSp8FaiOa1`L!kxo>0Y=1_cKrcOXX=v>+fuXCd%HJd=11lRH{W zcL8yhI2Fx!A&}QG-Td4lVH;a%iJbs3g>qqEZnA1XH*SD9BB1#i=r{{bvMev=H@D)y zM*IEkG=FmC9|ju_Uphb?hY s|oc)}b#>@A51 z@N{pgafH48!v@+ddOH7p3K3R!>W=EUsx|5_Y1~V?+?|fj(SCu_dZ$~wT1bFe6wD+C zY@V?T7l61BdW8s$7m3znQ_q&vPrB3wv$}ShXE whV)fOK!nI{P6t1Ng9HW~Lc-#Nydp&-wq4Z- FX! zhp4M3 !2k;+heHxult^xTV)T= ;xrRCEk zIN2JxgHjIB?pqn(RW8fsyEG)JB4^vV4FXwOP0+4{fd rZKc_^GH$n ?b(y&&y#~s?mAS7Uru^j!QqQ0 zlA@z)TO B)%C4%_H zWcoGyT>M8|#iyFr(@R#nh?sARv~;lux1EoRhR1^V?vW0SG>GZytO~qvdG_&)zTw%A z&Wr9y0MRExXAx;prW)fYd39aAnz2kevUCwJ2&g78)E~76^93f9=(TF%?b0iZ*MyOJ z!{$rw6g}NF$*5E7cuA~oaFWvbl>HFdr7IKKF2u7Gjg&b>B`GzK#rnK;Nn!*+UsVSW zxJv+gI Z$(3C?zqdqUraqn5lVmB|MYE;xO%AJcZq$s`6S zKb*7`n57p@QCg#(sXsO{Ds4kEPleFvI|hms7cgh3n*gPbM8(ng62(>})^a8fw=|wQ z`(ZkWyf;>jnas=&hGUp7*@lS;TX~;K!WGgGUt+>kR7_86_^cPRgn6dV3f8Vxfs4!p zABbGu=F(egI95&Ug9a*^
8mgtKHQoHA_lJ5E!<23pm^A zN}yW;SK(vBqPnW;`}`AK{un(_0h^3K_qiF?h7%fz3)y0#cTWslRZ8v#e3H?ZT&oMJ z{OHIUM_PG{4FuNZ2lC@^B#D^wIY_Ri`AM3d@-+BplB`-@VCc^j0>`U0*0p;RcR{k9 zR!W6s6Bmqdy7q~g&^SFK*UmbfrX=Oko4o6UFlCX@@iWrL^n9C6w{wttwdbn $$hQf<52kWzP9#qKVjZ>Y0%!^H3wHTDO`Aak@_w%Fd%77#9YfG}i+# zL1RfDO3CZq)i%9N&v{^<;d;VSO5rk!-K<;g3O*>`5ZKTFj?&+k^!}o CfB3yU|L)tfKTgX05Aff#&gU6?VzI=l*XLKO)%71 g-cKdwu@RNB`&i)%rHCHtw_M-q-oGxTuT#@9npy@W;7R zZhc+U+qa!xSIZKXtnRKKEor$A{{M?L>s3oww3vST%^Uem^Oe>=_ M_ZSs+tw~ zqM^E~Z;I3DEHCpJY_WZ81#t1PT&=1D-~VGiTXtcf`SHVPJND#G>vFRH;BKsFxyx-i zSzUejEz;v^?tT~P?w`tKc`++?efx5;>h1P-{oH>0?Re?^`Qw4Rp}AYDdYITk73z5P zFuf@!#qz*5+g#Ifr>pg{SBIYZ_PVYQruos9vi2lq`CU=3Z~v#yYC2oL;I+j0;we-Y z|5IG9*6jT-t8Oo^@_Lp1KKn6W+`z_tx46Dpoqxt3fIiB}>+_%K=7ZX14Q>lE@X?dH zt{%1%7le-(k=xuqmK|;Pzqr`GeGRPSi|MR*Ai)&S5W;aa7L=HgBJ4DR#jKcrxUA~M zV|>sXQ=W#GBaa!omm!8o>Aw6U0%% h@n8Z zdGw~XQ6#0Ok@#57W*tauV&LOQEU&8D4?BSNVH9!nvs$k1X2mvvVsSHHznDjIY^O#$ zhU}{NZFPP?XKbx$drTf=Z>-zG<8P~~p8U9+W^d}c{8TJk(D@#f*0u?%#cCH}{CV~< zpO>>c_ }6;3(SIvupNds^nSc3ckN*abj_=N6Ww(x%3?sTJ)prU(O+em` zBnV#>Mr%{kcRa|a5CR-MUCfK!FZA &LK)Z<5rm|1!K;i{_3|Ap<8&-R}GEfjt< z8Bp%H8N-P*KWrdH7mV@eGM`r-o@~Pl77Q;KQO4*I=b$j7f(#(U8$!a#vEYPhV@BK& z(9Jq3*yw@9E|7y!q9mop7-!%}TWumj4!}3gX=%9;S_?_7d(QgvI-g87_0J>mE0j (|+=0vVCbFY4@{^7-}H|1W9N0ko-= zc*+$D6q^+4A%)sS3H=HZe3I7_&_RDIr+>?*e*qx8Lk;m@HH275xDj*27%pP!Ax#AC z6Qsns7<1EHqjqqoD!_Vm^}%y<5|8amL3M$W*&HBq-rA1rE{x zn5)O!5{1;1dj8nvzrX)AVV3Ba;4=3222rJz8lI7&2I3P{QCeYeJcdDKi=}ib$r$ zaN#V{6#6R=96$Y> I|OOq^Oh5iLG;(0WhN3NJ?T;xN0E0s)H4dCJf%0C5CbvQ{CLtVL)dL zS5A+lBUGJAH9^)FCO&p=#DrPnJLgTX5V;rqhFEK4TrmQO#1jITItIdcsWj0io7 fLRknazo?%H_xya_l`~uG7Re7CY@(@`!2o4Ouh?I3REL0Xf6ty+=R*pC+bljpg z$*^7w3@Rry7Pa|n!HCr=a#7oE9^01+N|@t^D%G6-{zohYR$0Q&2|o{wpF?8jGDh88 z$IcPqwJ@A$5q9o6$u>@uMKVUKG5p1)flEV_a5ie&h+y_o7JJHKe*~(Ve04<68648Z zwD>Ne=pi~Sd5nO$>s%%rJxumGQ$5sYOEnVq^wP(!CE7^FcooAjaELSwOLf{wezb4H zl%F+#5guFt0|1UWM2r%SHIJFRj+Eq@(insZ*Qjz_K&f~q3%r%V155WV)F28Qh1qeT zB`!s;lJz~f^}S_5%VW%MPGg(jEx{|(gX!(;NP;mO+w^t<$uRBvLR+9I@FKF^9mw0W z3tpv!uHk|41l|lRU*1fo#d1|lK9$AoyGg>zL)h9_^u}KvSboNqc5pS6@F@d;_k^HP zL2^S!5Ce3^o}NdU_Ef5=Q2b@dkCu&?jO_u8ZP!N|SMO*w@DiPk9Py^!XD5ZTKH!a7 z2T)`5c=v7&_bhcpD0yflGShWo5b#gdcCxm6vbK*4cAMC#qV2(M9$X?NxK~RdZmv%7 zh-11al3{8L$DE?OP9i>v8|)5eF9o|(u>0|ZgojkovlQ$e3P7)2@*q7lO~LMg2O+SY zT)X^qH*42%JWX>@EK3lC3g4k5DstY**q(L!(>@t79Tx?3W=L2$VdYb?@)q1R$6#gE z8r6#0Q;7#xRSAG8#<%(4lE$2>a8C$O9uUI3P}R^??o_%dZRe#Sp_a{ u2MM`BJ)_rJtNZ47wJZDvWBOB?UMiI@GB$Uyp;nWuX z+81(SdR-^ruOJqajh$@lQ*3M<(y)@-r)gNpZBGC>=-3^Bkbw?JuzQHC{M7&$IfT6g zk`qY&=FQu;-~aOd1H$BlkcUFZim(mwkRWpGQRLk9(Y{TNa2$s-vHQ0 Bo?%c~FGwG$H>8UPK2kCeeWHypR333DQ5Q49(V zgCk{tk`xwamuZgETLkuyjSG$1nB2RRb8QdISrluAx-LatrAZ(ufuyG$Ds$W%a-n0i zwe2k9WDk=WDV#k;oRu!3gu~KdPew>LW_Z-G0~eQZgg#%8{?%+(5dTW_hFC~$)FG167Bo{oDN<(b`1;WtxJGa zr3{^y)tS4luCsZuT;|gvnftNLeXsQ;CE~@!KAv}ij?g{f;2;~c<<>?HTrxRQ$ z<%sltkjNHFLq>v~0$PUAwev+ulLAvofVA(!6qgzxE)`sy^dS6gKw5X#xRhg>`2nqf zPsc#nUt=#=&2?1QZ5xyAOVRLRTpd^{Jp)H91zuSYugQs x0Q|E 1C_FU}){RDU-_0Er97uvIkYMkl}Cke0a&uAg~$eTHZg)iU?_R7eJF P@1`vJ*1g46=;fd%rkGA#JVQY z+%Vtm*2T{>4`r`YsyWDNx6vLl<(|K+7V0ZJhVV4*9f%1k50ZcmB7&s^^udw>Wq8?= z^vx3uF*>F;xu?SP*vGv`%o4`F1{?c*_9lD(^S^)pQ}*Mp|C*#o^sW`V_G2=*qX)i& zt60zyl-l5{)5^uH=ayJbvZh3x8!JI1Q+C7!aYmb%@U#~uy8u*131^NfZUj|=YQZ7` zR86?nmU3kcPSuvyq{#P^M85Oeye_ipW0q%USMbh?I-3{si=s~9@92t0TEdm)*k2TO zjYtT#X9W98HM?u`^@a}tVuWKcBPNZDsLe!x5>pK&kd`=WS1H4=GrnZ>M8enbXgUl6 zYU6R|uw6yrTQT2Mvdc Y y2o%R>PlS+8g!{g@nviO_zKL31rb zd)RgvWw4XS_LVqX^5E11{PLX_28}UG`9{g=J~ap11x=%MPg4`Eg3C(KEowP7(^fR9 zT)QWvhyy}n>4 @AqQrgQPkQxyK02aY{@;VNe^`c}SfEwSOChXL-$IftCYV8Rztv#NW zrkSEcHH(?_(!%2Ih0^#T6^gk80iO&4Zlk#4AfS1gW(6v^jzT(wMA+7rQx-M*c}+-S zw=XyTOjn(}?}t?MNux*C=q)=jImu#HVkzB&HrJ@Z4B;xS1X&Z(M5{)E*oLmAUxNfm zp7vqPf}NW&36YrDZ7MhsUdl%Jhrr-&LPVnT$rC~tqBxOoiL>ZV79t&eP(5(it@Wtb zJaZ QO^I>q)7*${?f8#EJHr!=X{ zNXY9Hfw|Ko#r$RDxJEFCU33cGKWUK{rA2-%7Lx}ZlC7$20XNR(7j;%HvRS!ElTU}z zD~iJQPkLq05Qgg`gwfayG_r2Njw0H6N|YHN!_X-6706^4JA|=|#oa4$ssel^s#6T( z31b*0B-vMs*fZ>Z$?JSJD`wTS&gVPMr4BA |zSlGr5XQ;I~FFf=bYd9r->YE}~ z#RYwRu-FCkX=0hfxT#W3Dxr1ET$X1&vt)Ty EM@cGFYT zFu|#i0yLGDB5FZ56>#PNh%;lH ;#z22e1ZnziHGq#VnEGBR{< z!II*{T8^Pct#ni)=z$OgLSwXv;1V0 9km`ipi(4xP3QCx@3rm83r1# zxq?m}j{zfQx|gCKe0P|xtK9%qKhpchR=bO<|&GlGWA~{u_vOSq{r{)%| zOzv6A31eLEU22H)3>>jEC@PuSTO=XZQ*EO>DlLFUmT_&;P4^UJk(96v|78q6n2<_& zCkJH~9buevhLklukuW~h53qj@i? *MCAJ!?utN z52;|b!y=jB0wN4-N(^kqKkR_n1$s2qI`xM(*GO5Js7R)j$@ZlJte->cJU3m}sf1yY zczXuoEeOLrj@!oqG2!z=4En=$;KA!8*fcQ|+oO2F1}2(;Ym1UW%Ts$xbw@F6Y_`Xx zgEC7Jj(N5RodzW_v#04;tb ofmCXU+FSFHEzRJ#S zJ$vN@>+9DOWSZYx<)4bPNx96guZz4cCZh~K>3;(snN*8^h7Z@p@AJtdyR7r&RWW(^ zd mKX4ZS5 p3J(-g|jGeWon3Jld iG5qo7WOF^s?~3}{v*rT+!vffE&;B1YmyW0ucmV+U%Uh)Y literal 0 HcmV?d00001 diff --git a/webapps/docs/tribes/leader-election-message-arrives.jpg b/webapps/docs/tribes/leader-election-message-arrives.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4733d2d1b3ca93cb702fb0d7aa7537582397655e GIT binary patch literal 111284 zcmeFZ1yo$!nk~9 oCs0FV$r zzw01u)UkG0@R4F)%Q&urRT4N$_xSaBwM!hzUq&sp#owsc2{zn0eS39&$0!(69?X z;(Ed>ARs``CMqGqC(gq!!1wziNLW}{xHz~Jcz6_ij5LgV|I4rYR)7!_wH-AZ1?eGx zOo)U+h;-ix&?EYZhV;h^`0EP^83h#$9Rm{!8wYVh)dK(-2?Yfi6$K3q6%}!|FXA|W zN{B|p$omYPSltxkp%V#TK-_0cCYiD}QjL)VW_~m0KrC!BatcZ+7FIU)M;rozLc$`V zPi3FW$tx&=lwQ5o)Y8_`)ibxSw6cC _*(<|tGa7bv_hj3{8$ArYBPsu4? zvU763=6%aAD6gojs;;T6t8eezyA{0-^4|Thzl7N6$KUJcU(xw?udp$h>FI@i%#@R9mCX#_#s~a zCW%bk=dv~|CVq_rQZwffY%*qnMV7 5`ifx)CxKPjnAUf#mmD#0=Vne45^HDKpOHFUF zFn5VG7d;AsY|m4!)8YYcB-)wxK>M$nmU|%1yZw%7B0Fidsxh#$$A 8*% I5_YmXW3Mb!N2zADO(=DhQRMCs6Q|< zK%Jdk(k4~`&wJo(y>nOfT<9JCXr(Usx-eD7R~~cIF%up6g&u~LLx1l$g&QXN2UW&% zw#}kJFQXk2mwFV(CT-bd9%jg{aS{$KNot8ZqIsc_Ag#Wm9a%d#@9xO0t}EL5?$<7I zjtR@1PS3WglQU@qkO)ide{ChK-vh^vE$1A5yR%+s0ExQXKY7!A$27U)!@YPt2-dJc z%Pm0n<96pKk|_w-(g_&C5RVnj!c*cLz6Tb~wx5RXRZ4}vV@lcZ`B9(3^4|0*5wr6% zySSs}xOiBM*iuRHaSwQL5PiZgHs=WB>Tdg#9L dFY^I%@lB(X3LAtZATL?VZI=v#H$6)cZ_KDHA+l?>QS2Y?-v@_6= z1gC6L$YQ>DwoE_Oj0#PU;onKzB)hSugrPgdPmWIn|MA$ybQ!9iPk0f83g}F(2wkPG zB=PZXHwrMlc@_J_vsWT4`|g1%sV#l|q$IO#g i$FX^;%9QWuLc cMheXfrG%0Lu(C-q_=RKkJF#19$f1cdM$m4W-h*r-Rhsd!X*sJz&56lO6aH{?FY? zr7qz20CT9}Jy7F!%O2f?+;|TxJKR8N-S1}afs-#!5l`x$){(DrTrQo^u7`cp{{0)y z6m;+DPJn;3+Wi0H{_j0o|KV|8ZFE$Jyv_D(xu)OUzRj%>^U35s+wVE>%rM%U+U^GD zfAJR)OIMa2D~6~BmkJC@sn#~@RN>r;njS3}^T=zw#5GBL{UX+>WmD(qqQig;Paq{G zPTcLCeL6if=vq%z@-+&Y%ke`Q$4^qt!!NW8)TQYl4olqXDmf{MO)SL;t7qASwK}GB zYJt{@UkpB@eM0s`P4~xlRu%j_EE#=8@PT_FV@2lz{337(lcYkNpE|CURx$3Olr$Lr zEsKD8Ec4aDT1<(#R&{0l-8_*|V?_^Pa>fvOoSCO)EbTf2;rTO4THCvdrCk;7!A^3$ zsE-cTmJ;DrDa4|2EuL%8_m9*oA7C#_E;aF$m->i)wG}>`o9z-WXJWz}9REVp@0`;~ zZOX8)lD{cU)6@C7b|Sbm1Y);u|9<0KTc&SWA&SI|DVY}IYP5KgZ9x2$KqjFrY<53% zY}dh}N2NYVy+&u`LtUVbxdn4jrM)$cE5?R`pB&)n8+;ySzf;Ni?G(wSaL&WZ`y_7H z4CBXOHfA?@uqeY-e8#|sk{jbfBb!98uJqoDQ9 RJ;AVp{vus9d1G<@KOtqG->oE}9|*kI%z!B`(+E7`xowqZb}eY1m+}5S BHynRwF|4IN2d zv^ViRVAl%o)>aYN)-r0~({H=d)PF&gMfX7dd5_eE$UU&bj=*cW_rR z%!Ov=spJLXZeh^h1_NGbq=-Kc3Z=Gu4~OsYrLM817Pb7wua`4#X#CDdkT(9lC!9$K z#zFhy3ikjO0bJZ^nfY#TV(;yRPr6RjNKcK8UH*Wxvphx>;4SyReChv}f~5Z!xaf38 zec@@nIQ*cm#1FEal6wrJmbglv%CxiWSfI^{Rwxk_cQFhGNKv&XlE~f3zRx~m8LXa{ zB#9-DaO~ehN$6d%{+7S}qx8hrjevZ+J~0mb1oCpn=2$tZ;UQSxHwi_`Lw RIMVziT)8M-^>##PV-UbbIgLF-_zyFVwsbhM-`1v=8X-MBGTiP#_VjI zTAVH6w(0XcAe88;s9gPRVWJ>sSXE=J4XmkrUZQA_*|dc54ffuE=+VJzi!zuz2m_$Y zmGhi!tgqP6iW`O$Dp-@{mmld+?F>6%Ko#F=v%WPJ$l?%fFGCGVsblt9nL`;{vL1&X zp0bmalab@tI*_CFuF$hlSL|n;AkC;7x##GD&yvoD;%$ezAun-_lsUW0aw54S(3i7N zMK3?m<(TDfYJjV~xI52dii`{dD|u(8Q@uMaKK6cI)fE >8!7w%g^(?T=J>zPlwl =zfQ8?9MJ=_xLup1YfbNs%#Vh99evzH!$! z;%QE#aOIl02h1;Bo~`k*M;|1szC|O+b{3%yTXuatNp4(GIdL*T;kt=E> ^gFlZcs?=sNKN4~>M!y7flDC1h~#)xpU2bbFTZY-U6_SOs#bTjc~gTEG?&31 zbx0SePaLIJOppO=&f+ZOaQ1($)`&=otZ#-|&IITEb`myz&sR87Yp(Y|S;_T1V39>2 z{g3g`F}Im9`P4R5LRX|-LRWLbTdSHdd&_41V6_K+9?!dmo+8C40Vl9x-@Iwt#A5I_ zUHB}#4DCzp2MgKgWK==}^knlTYE@zd2j7A% b`+XD$x5V=-YfUe6HgXSyu@^C zVlm8RSlq+NG>+(WFYM@}4*AJnyZgmlf~3_+;2v?CC*dkt3qk3{RRO1MbX9B3%)a(_ zst;uGGmE%{pW5fzLL%LXvilo+5)D?-Px0kjF&IHy(!~*Zzs5RizU*;Zo>-0NE{zT0 z`i($tvT~oaOWe6L1kaA2X5nwYtgCDsgOu3O(hcb(EWGI^`ApA)@s(E#36~F(3D%g% zHgR$f;9Y1<&`RmlWOVnugvy7A1yXp1vqfdACUH_hWdmO>kXTqHlO-2Vb#g5y>6DjW zzsznLX>4wr(uiLxZ7Aj0m%XV{xLb()^hVw@1dicI%KiPi*Q{1(;Jnv@~1B8 ds()eC00)m+oH~}haXLUj@hZOpky&y zRepcRh2H%{u>ifJlkb8_Eqv8AqA+3~+dhRehPSVQqqQLax-=*-3)vA1^;nv&O3o9q zBFUh 4mSPnlec!1|0Mrpn;l zz_)Z@>ewMh@y76GV+`h-ypmBsf~c^^7b3V*?ewGA3D<@z>}i3hN#5bqe1gjy>9yf} zr~|}-dvA%8sS`TD-D)%b nVZF!92|RxR>QK zguH9-M(Uh?omB%bwedw5iUIFOjL(?;F*Ix`_aVD^)qyseEcLNH*qO^FMJogs*kw1I z{WnS}bEP~@VA7EC*jbyasG8|}U{p^i0s9jL@e$ruiS!GCR2$|rZQW9vsQkf2ie0}- ztzVBRR}%Cz6GaAdS{>Xje?n!Tigq<>Z%|6VG-l{$K7c>7CYY|;7wSLun(@n3vZ^89 zD=I2Hs%Fp>_5INn@>5kXm)VF1Y-rp6t2EJ&18ccFed-?gT3KArhb7_`&0E73HMk`L zoY*3eikTs^`&Vyx-;%X_G-sjyr$_~R3iMi*Pc$fP4D`jWe?ZsY@b&-rrk#1ibq^#@ z-gP(Z-$MULng3<#`-s4K|A0m#HCnrZ4Jp5^O*RK7i+_{#qu#adxjl;X!!9!di|eIN zh8Iz-O=>~6<_&87`0ZM(qTxHoTylP^8825TY4(_j_>h2;H*6tWbDR;L<|$Ze;?DAI z3FDE0m *b{W}TkSO4C)ydA_XkTzd4_wdQ-(B=?V$ciG4a6m?GPpN$zunwJtaotuq-UJYdv zt&lSFVz@`>&Y`Vd4jBlSb!gGFu6|(Oob?{yE{pHEYSp$uate~By`F>j_~OO)e_4Ao zr?|Y=A1q7XT7Ty%;TaO=;%Qwp1*YoyTCuKcqrICyDDX-E%$AG;38PP M+~IWguYL8&!30!J)05f_jkr;N69TXubF_kemqZ#=Mp-Q zAMM{AQI`kZaQaVJPOg7ojh@u0s`F)?t%Q5fY3r2Y2!E<5KWKfoLCl6~zn>z>yh$!x z<2>wO M36PTx|q^)f2+HH#=Q zvYEuOxr<*nXh~qaR`|5g>2AIfMj}&ylP^MY4 tZwvb^`cjKHK^dy$a}+c=JIHI0B7fPQ7G!JuGkM(t|W%Y z;n(BRM9aiQs~T_pkdWtGKIP?PPrd;>LjK-#F4DAJUAs+1)g!|k*)szx?F5I-6F!J( ziuZ=Y>o_z*qwers%A{6(QIgix&YlJ5<7xBiYw-a>`lI34UOv%2hPYUK=bk0c;>wFJ z@tuS(x8Kw^My*BFpl>}`qn+nz&3NbLlj^qSFCo4~R`@MS;w$n-*E(jel#8RmdY%TF zZYlpS0j&9#zqG) ~WYkiK|y>zoc9V9aa6I|LCat$#D?<~xcD^Tk1;A*o$s zLIb4{*{@w}Nk5YK(B>J@Ue#b^Ccgy4{4pBU)mvHhJrb7`SJD`W#NVjvmi1wS7_6&b zN~nPT0V$!KVLOq*AaxKo3meQ2x-CR?%JNi-km5mM3?>PD2f1W-cWhH+UP1Y}#hLo% zF*ib|2ocRnPy&&JQyQwGKJZ|e6kPl!m{S?mQuY1}ED)UCI95XBoEKX#+Dn0yQA90S z)uV6h5vU?9o|wT dpJYfk_W;{~59H|1?=-{6?KtxK zCx(igV}DKDR!Z|{2w9zzrA@ZXgb-9k{GCtUE_LW|Upx}VAe1jBa<@ovsDd@=o4mbi ztp>M}=x)MpDSRlnxZ8YA%BOG*Lv$DwH}VN8%IMvgjf=Ze9yy3Ln%VO+lZXNrNyd~I z^--bV>ebiGqB(_ f%3Whu_ElmZLfE0t4N&QVAcc_L&fwzm?q8-pxCcC zJo21{4%8B+EtAGs=XpT6A3jQ1?^JP4kxX`}2CXsACYe5AIAxRxk?j#>ViQ2x(mJm` z*O=)+E!c-Vj( sNkL=68M9 z^vSEfh2Hze)jkbQtA0h7P7O3`{$d53LlzNTgWzIay{e;u+-Kr$uNvr2CK77opRwVO zbPKH<)-@>*PV3rEYS$YuX-v$u8!EirVr;B_V@_6K!QbE2pM*7!6xNMJg0%TsoAi(j z^6FYd-$o1eq0U?X14CVfO*1G#A@Til1ujsVUo1ovL!^k?ik?{Y>$X>O0&CUn7eQs? z9k?4`&bwC%4vn9pkqjzRYmi9_eMhPMCAb|Rb9c(52`c02%)|7KkvflVl!RAbP2wy} zSxB 1wPk2}4g{>ZbT7s}5$&a5NZT${B{DWraez1#!nYtUURDVy znpHaT$B^&$K;afcukoj-#fG04xg$nk_s1VxY59h=pb|>`IPeMYRO$F+$Y-5?d7 b)q0;N=L}^KoLybuyh^nWoka>}ZfsMlv$=f U$yf;@ucd1Ly>0T5qy{ _2&vAF~X zfp^ERF7&gFjAw`4UD-05ZC3ci%shbsx|aaTLCKOocInx+YK?E`u9|PDb@Ga5&<}Xe zU`>fA&GoPFm8wTjsj#c(h1Onuv{B<4!?cmb6rNNwS$t^lUio!#^E5RKeKnXN+!)s5 zYVAbY)fn`Mi-(rNo3O3uG4ag&yoW@*LUrbDN(wU}7U7pSsF|KQm!KHiL^h^CpxdKF zzJJp2C->Tj@r&BZG2&O@>r}4>M3h0YNzuZuwR;nuF-kKUkEH-7{6#j)D)r+kqrTBU z``MDx6jq6thp%(>rIhM(_(CukBEt{8Qzf+T2z~9l4TX)bxx2o8wc}m_4OH&C@Y30j zCH7PF&MBJcQ-4?=@loeGd~^1s2kgy|VHvK=joX%G80j8|g)c8{fQ+s~Bu#>p?^L{5 zour|!`Ziy{3g~^d@MBG+!H@V6eW>7PBV}`&;yF0nz*uJs&&~AUYDRowkD?E6CB)2G z6n_3;Gm!c-dObZYe4Ct{Pbii3TLgZnpMY84irS=->64(Eec`$G^A%@4c9gm=jr(fV zhore*E6^fgshvDUEAvdsTp s-?JIJ zHR@oHCyLADx4((>T|^L!X0fqZP-&EW!Syda+Nmmsq+LV#MRKC`fnqjV)PY}l@fvs) z)k2Wwy`YUH`lz(O9Mo%CCYm20II+ChE^qFrPA7O}c_WmtmT} zURgbx~n3;UYusr7O z*UKr{m}wbk clOIHQ5Ui1E>7_wqELurui}1Yj(#^7}T*o zby) n(K>aN>O0UCe}r_9 8d*&Zr%Phf*=HRx3EK4>Us;4am}OYg6>~*ngGiaVxx(f)R0#J2-|c z`pk4ae)Jx-c{ny?2MLAf9#EQ~?x?S-iliD-d3@GeUk!cqo}0R{n~*B5DmghW;02Vj zt{VW(yk11c#l^vDNn;EpMUzWPOS7UJ5{gH-?O8(fA^wn=;?>7u<+|?3{Ap&%rBk*K zE(-OV$|E%JoGkNV_@;9izbJ>2V}H7Q9w>ySFn9UE2$V%2^QBhH(DDXtDWUx7r`U*? zofwf`o@!57hsW1HE>q9e(;#OB!pB>%NWCT)s95jWZ80^h{jA1(=)Imiwiy?QihO38 zmcldygb=RcXP()GpA#z(RTSBdK2g&R(^St`i3Ro)NseR!5kr+T$(!GoKjWb)pGd7g zpkLE4mg4Q|=J`-nl8K`NUlFI4S3+8J-#{VkMD>Bug@$2NiGksqq3!np`!VIpXVn|+ z4gCJOiL^Pc5z{ve zu*rGbNj`Y+l=Ct1R0JFhPM29Us~jWK4_Fh8CmK8pi9scrf+@;S+XHu0c`PyEtPgZ_ zY*Q-Q@^gNsR);L1n3qk+Nj0(DnOI1#tlVTHmVyFx1BB|BH@^Q?YuxpXJ$FedtBp$0 zB{~|wphh4qW8YIqJXenmuzv~vZ`%-%B{=i=DMFE*^hKm!+F5@~wEfl6Si-*~kW!$# z5hP!iLEW-T%%GT7nz;&BMX*l4bh?o+!hxNQ(nm?%ld2^%7a9G!B?5js%6S!)JX)f- z8v1Kmv`Dke;i{IZUNgpo9)-JJt{(4?UKjd%!01N JQf8REP;yd-QC!@cza+<@r! zE-Bql=bHS!PLVc*_6udu)rHRnttbn2Q}ZQSG3>N)*TyP1Dg)kVq@jz0FYhi-!I0;0 ziSA6_Gh@Cvp(qP<_7w~;{{uhI=)A9B=l@~;6i3L}NeDX+&fT2U$rq&)Y{Vc38XqaX zeSGbKpqD>zB1}*PHib6jw%mEFpWjUO@=XlzB};EZ>xP|RCE9f79|}BR6!u(II3AVx zv%4{8K5!luUcQRU&qAo!J6ZMv!aprg3Tx{Ehvt+clCuLbyVs#w*aZ?GaqJ+~UzM|Z z!tpBO+>gy=t5RT=v5!tzKwZ}0eCxuC*AnAT!=F8le;UR;HS@eJ;pe3{Xr>5> E2VC@ (OyhpwzU-%*Luc=j%DnGoo$3#OGU<4`L)*jhD#eP;g_MN z?UCQ365voBpD6|eAN$(n- nbJULGCd-rC&=H+ zwMgH5DWZu_be~u~d~M<$Q2oyP^>Cfb9cz8Y#8m 5iDm@fGHNhYdNVv;Hi2&SMkF3rNaghP~vAw B?8_IXKDo>BGQ;EmjDZ!f+lMcl@3(euJ)Da=a{CGLxseR)7o(p8XGg+>h z$lXz_^{)CJiW7KWwgw+2XV>AJxqbIR9$gLp5U?17R}+wc$fPT^KX&AS4>n-J$@w0E zkL)W2p;x+SgKhf3(5d(Aq0U5KHN}Lgg^56@lL}5k#Zv82atoEsRlm>@`rD{L{6hu~ znEl4*$#&?#O$UQ33DWe4kvCm>k?uvHcKEt}BBo%i`FmyYk|_JLUQ1>=N}u+bv|uKj znmFB*{TpV)ApMf;x~;n{ya$Ns#RiTWGnp(ht&W_I9ERhfGKJi&{3W!)kJHV1^s5gE zrkBR66uF=jD(USVF0M&)-70tb=4>&i{w1Tx%jhK+d-FQAb#ax`g3oo{id|-tsXh#; ze}(m)w#BpgjJ$;@E>4 @^XMz@a%3=B#33a zkVrfqJ07uYv)}0Y-`IK`8=AiypXhmAX*I!CZK(PpLzI_!l>OMuCPNbI(orA#Nv#M< zu6o9NXS27$S(6nWVNM;HbEUS+%gn7aO5`UWBQI0kSIqbEKO$|Dybnf&0<@q~39_e+ zFo&=b9#<8!M}y;paHa1vq`YB}>2R6%Pw=nD6IPw481@RiqMGii4uW1+K_vG$r|s;S zqGxjxR$`;t@Qu$y-H>22i`9sMh-%txnyKM!L(J*QD?cy}B!BtPU*P2b?z+g^!V4Zj z+Ls;I5Ml5cD`xVVG2cvXfzn>oz)eF3`Os|WXY_nosjz*cx6$11x*pT3#4?g|O$?qj z8nAovj|#n5#*}78MiM~U7SLwN!&6Wiy?LD>pX*g!!$*zzHA6np;#xqZirHBwh|v-M zCBF1#__{!CRpG1>tXo%bY6rh;ja zStizC{e9o{?a$&}c6UB2C;{6G8PtUyCETmgZ&;)c`>4^iH4tiZAm+ND5w}*mckQle zLx^sUt|6JwY#jCb__&__A0*K|;R|;7H4X@3@Z)im-k#goj#+(qoPGAu%pvoigeRL} z%Wnhj))H6S8-3{I5iDO+*X+SvPaauNYO-gQC~A=S5ul=s6_-LvR_nvDWSfebU$mke zA#Q`;{BI_&4<#R^MsSrE=J6HBCS}!r@z_;oUfqK+Ir$#=$za&e$gz`Q8>>W@{gY~D z;_Y@rODN1jo7k582tKbn$Wl)pNcd4Jj8_w`aK< zKMp>fhx^P6@3dH4-b5we&h4K{xvyPcH;h@-P9$|pSsb03+q=$-4Ze TO-vdq|NMe$*wdNG9J8%BG z*^N<#@5uaqY$L2QhUa&EMgc~C2NieL#@AH)EoTTQ@dwc45M>ClVe~YMnj@bl<_lD> zPUyd)E$Uz@V`>7)0oqi)v2UGh>?xVvd<^T>qzLR6Ss==a`?=ty>8*kx|J?%2&DuVd zeHm_A{Tv2Y+M}RByjSvl^l8sUjecWo#!>g9;@#pMS3@2$Ee*@`oD6a?eMjskPLV=x zHA>2*G+S{tdL43TpIb)k_STxU >2h+H3ZdhGQW}np$1I4dur{2MvV(5?aoV zF5hZ67@dcm&GsFoO8H;p`roco)RvXl4db)JdmxwS5BQBpVWG00{op-!A3=Y0pArr` zp_OyasL&`4l@%(sJ+orel=nt37j+DpU|OwV4d^B}vkhL+S4#Z>OSOds|4v|vA*eEq zFlbQiP_5}HByUQtE$Lcmz%MR+&KSmY%pbEj-5^nxcBqrW6YNb8c-kPQ``B(jx1|LN z16jp8I#eo}*_92ABF9e$Ft0l?qttw9?Amv|b$C8jwUKg#L#wniC_spn Z5S5Z5*l^z67$Ut`8JxwQ!HaVf`t> z#+BnmxP|AupR@J7q%{A{x=!?BRRfbXP3hCZ_7PZiW7teB{I4Vm!W{Fal&zxXkSoQ2 z1D04_ b`Ca)X%1qUR^orWc;`;N*y55ih(fq)mvrzN+cAI zHg)1|Y-lF2U~0o-g@esV5_(bn9l`RAk(()d$%xb@Pp+tY*rue>)X0j}{B4FT59qRg zC7&j(jIvL#w0KkRhh8ykY7RW7Qf~vc?{nfrf9%RoYd+3Pn3lG}-qwobh_q2otK7b|_-F;I?+%b`4uK3H&9(Ee%!1J&M{K0~c0(9xbMBC}?I6d4# zx}IVmPyoL$y7JaJh3msradlZ5-;8w+yVJvjd7d^;v|{xy_Mnnx5m+*_Gsgm3Dojta z2A-hIHKumv7jGSHPn79^AK^`8euMjF-m+xdsO1L)NHNS6tf01DRzpEuu5?Ue6I;fZ zGi~^}ELBa5T$*{ugnBT|R}2X7+N?%2%O~ro=l>KgR{MA-tFh{%vV#-V07=BiNXRpK zH8~X{3A%(O2&eSH4?UM{j`BAnv`Rw!!XGtvL%O8pyD=@PUx8zbe}#bMbp>~yQj=DX zm+rMxS*E^-847=+H=T(OMf;Q_srMmz87e;l^OukbUl)IUtiP${_EUfU2XyFrpJ2t1 z5$RNqx2M7ndugNWMAS4CgLj$a5s%-38%p`LRWt|)V9dNfETZ)G&$oGDQ(E!CD~J7= zdnv%_(^5}gh$)e>D|-~3&Z5RMQG`)a >967+DunP5 zq!KKvA*5~pcU3(yS995p&+Ffn(GbtrXv@qki6x^Fv25^19a-;{v@0ztq6YY@0A5Ap z4-B7M)TD@J HN8Tl{(Uc_@sjG};odM(&Pub0?O8YOhg(Ni5|-S^w$O*g9nZKPpM^ZB z4E2hmh}k=Ojr8-T5^0O<-_R!ugqzt8?o!<*l3;tuVCULd+;gYw$jHb*m$8(ElUaV9 zXwGzXeQo``iOMBHBWdXK5k2Oievw%7A84rzb|P)4ljf!HVc{@wZZ5Un!?tfqN9Fks z1%=|jae3o@r }pJ<(z{{%8#g4LdM!gb ztd0S wZbsO>@@Cnf%o=+60#9WknaS zK;B~M?-qHuPBtG~*XbHW#8l}&fiiN$%4B^^RD128ThYfr_Zi`8cL=%rVehxdFxu$9 zBqh9CwmbKX(Iw3qNb{!pS>94HUYxkry@&ISI)IA^ T z#*%#XHv6Rua*cR)aj+R>-0C|WYIi12<)NKK!`8@k3Iw0}je8%mms=N&r8x&PW;Kxt zI4fMZ2U-nPmyPuQ=Q_2Z^V)z;Oy^Z+z1pvb<17 as!zp;t<~FLnyuE)Zx*2l)q`F#A&z()R2QDUVUO>OV`f4@xA^m zQ}?`0%#drsbP~1lio%h3n#t>{v*aZ#*FM*4Jhq{T=ZPfc{04nzN#P7Ww_)b2s!zmt zlmp=;$1^A+=D#X0?Q^R2Ya1`tuX&?VZTK$D4E^cyO!2xshCdf3tPfb`D=+DGI&G1i zC3)RMam8W8JW1zbca|3+0+4nV+)34AB6)5koSfL31D7V0y|L6a&sAs~uCL!~GDhDV zyxxQ5+4QZTjIkHdW3l}3;^!V*?V8-5>7FDzme~l6t^Jf_BHG4$m(cVN{3HK+7P`>= z83X?vXQ_rHM}laiT^ KsM*2EECKD5dd5Of?`)+l$9*z`300oAK1ZLZiG={2E zwvBsIguCn4>0##vnL#e>A))Hk4#EryWC;R6yygINl9Y-;su_f%V4!)^TF%mSs_Z=z z1qZ29(3USaDXE)kTuon(yQvZOzCPy+{Y{pnE@9!5he8SO%z)(|JE|gG+O>x<;f!&K z%6O76Wsj44KyuFHN7tUc5i$yAY!*c8j>}mT(GdrCL`U|9J-<%RRM^c}1sJ3!KT3;P zoS8bAahgaa3(aYxjHc!37hu79T_cU(!^Z~r;gp$ffSBS9G$#s+ZH2vX!Q3gf55SW` zR_erI1}q5Ohd1V(mrISi`nX%f%ftDwQyZT`?uV3?)lpQ7gz~IE%9;516&uJ2q4@No zJ@(QPfX$imL&a*h#Zj$vo#%DB6r|P|^d5oFBotYbZE|d?$@yodH_sB!$uanqaXF$G zw~rt2`BANmbsDi{K9AR^sjf)yt1RKJ?ywsbSCiu^OJcV)=Kb(|QL!7ez8BfBPh_iR z3~pu^<>4yfW;nP_xTgFPZ#R&d*v_+9;YbS-X -ahfu77!QQ$k18r^)OyWIyYc~WLiQuE8N>D%z93|2z zJbFy)d$XlJxHiX)FIZ*Dd{rum5!;i|c$Mv|;wfo|N2o@F=i52~F~b*nvb5=)uXKw$ zdYI)+SYj;vShW~H_*i28>TxN71Im**F*|PEcb$z?W8L?F_?wE YqiHOw ;Nk_na?jK)9^R0w)XaIryuez*AD-j)85 6Idr`f+bUGYU9&b>+M La z4B;RPKZZQ>0SOh`kIik7Ii-qe)j+A0KYUc;v&1iZP{#&bhRYLBv=t!Mv$eS+gNuL{ zKezF>YKYl!lbCisJH9i>XOZq+;O&o8!^q9uZA==|WiGHcjbesMZk7DShx8IUft45H z$*7Qs{Nm*R^nE0amxYs&Wr5x{5u(b#k*9(zpC>LaLOxJbi>+4s)Ax_x;K4I|B~BsY z))b|#^x^kF#c2 (wGGq$HO&sA&wax!pXv&(&ebEqX zx5&p8-vD`jG*!5g@rk1~({`nb(|h-E7nSie%P&_ jsvcGsSM$U2)oK}1xyH+0 z (`^M*915qr>}nY+&kwf?UfHIYZa#q8=uQJ;?{mhIIK;i5J8aprK1)Wk&)5A z*6G|nyDZbHbMu^j;MqNezf~L`I8)s9`9x(he>9xH izoD3my&uiqKlMufQ>Er|Us z%LKpxkYG7~UzPvon)3hsk0YS)zgYYc)lI8@1U|}H8 P8cIOQMa~fB )75@G_ zQa!_`{hoB7qTLlw@ur=_N8GE`8%K)kV4{wnY2m#Hab+K&E}aN&_+9XZ-UH#;cf>6i z2r6_Efw>pD>F+rF1=&Ug;Dt7j5`k@yNusKdVotEG;nf~PB=NpVjNIs#n1PrV< x<_erApa3;*qvVlH0Z(BA{HMu^V|qVT&Y07hy@1X6o%8q#_C-yXlX zwycq-GesqDLoC&v+k-6KLD{pnnY&L_BIm8tzI!Ha%&DCi#C&vos^#~$anc{8Ur61B zG$957{mDIW_!=qO>5Gl9Tj1!ra(T*>;%JyfjlA>@$O AOAmCtX z+b7QH!13wzhliByPkK0ng^-rlB&!nsBZCWaU!*0vepS^}H@2HgR`w$f-iSGZp73k- zEbjcA&G;-;bkH6ES~m?4)xLjo1OL9mKYy$8|BszEeDi0%4Z*km8AbfDJBz} $ka!O;i8Z!VDy&)4 zcT~7}n~N^hUDHzC!51e#?CdNzMBgp>s= Vf_I4KR#
AI#|Up)eXeQ# z=2fHmprsRO`=`;jOeH;(T5ap7))-S)RL8zgmvs$QvYH|~`QEhHc#`)=?^=juMGUC@ z@R@Bk$rNQksS$fdTDVXM{={-niH958XT4ZPdgJ^^OTnDrBO)7)ig)yK+5V%nd#%`J z2?g=^(9RaYK1sp8D^Ov4{8n+az(=93$hI~Q4RyyQ34H0iUvwkOnkhA1MeF7osx+Qg z!z<@%Kj-n}6BFamIm14@7TWP!S)(hJbL59_C%So^kR5H6cdbv?H;6TUWqov($)4d- zgP1w#>ycWEj>J_^q0Q;HC1=9tM4M+VZ}^hA%}ptlLkN!9wXPMo`_M3Q0Wa6*JjH{Z ziAx@lhXobgH1=wp!OX5ef{BEqFK1B5yn!l}Vh#D#dtL>vOlx%q7Xb~pr>#(u)=>bP zn{M}lyi25pM|=C-wdT02Y`(H7&c^W