From 7bd5252d2c0e5c334543a26dc294a4d27102ff63 Mon Sep 17 00:00:00 2001 From: luojects Date: Wed, 28 Sep 2022 10:23:53 +0800 Subject: [PATCH] mcs: support psci cpu_off * support powerdown secondaries, and boot it again * ATF(TF-A) has bug on cpu_off, we fix it and recompile bl31.bin covering the first 128K of RPI_EFI.fd, filled up with 0xff Signed-off-by: luojects --- mcs/latency_demo/rpmsg_main.c | 1 + mcs/latency_demo/zephyr_rpi.bin | Bin 173992 -> 174016 bytes mcs/mcs_km/mcs_km.c | 54 +++++++++++++---------------- mcs/modules/openamp_module.c | 30 +++++++++++----- mcs/modules/openamp_module.h | 1 + mcs/modules/remoteproc_module.c | 27 +++++++++++++++ mcs/modules/remoteproc_module.h | 7 ++++ mcs/modules/virtio_module.c | 6 +--- mcs/openamp_demo/rpmsg_main.c | 1 + mcs/openamp_demo/zephyr_qemu.bin | Bin 105392 -> 109608 bytes mcs/openamp_demo/zephyr_rpi.bin | Bin 136792 -> 136832 bytes mcs/rpmsg_pty_demo/rpmsg_main.c | 1 + mcs/rpmsg_pty_demo/zephyr_qemu.bin | Bin 163320 -> 167456 bytes mcs/rpmsg_pty_demo/zephyr_rpi.bin | Bin 179728 -> 179752 bytes 14 files changed, 86 insertions(+), 42 deletions(-) diff --git a/mcs/latency_demo/rpmsg_main.c b/mcs/latency_demo/rpmsg_main.c index 44c3ad81..2632ee0d 100644 --- a/mcs/latency_demo/rpmsg_main.c +++ b/mcs/latency_demo/rpmsg_main.c @@ -9,6 +9,7 @@ char *target_binaddr; static void cleanup(int sig) { openamp_deinit(); + exit(0); } int rpmsg_app_master(void) diff --git a/mcs/latency_demo/zephyr_rpi.bin b/mcs/latency_demo/zephyr_rpi.bin index d665b60013137677d86358ebb1c8abfa1babbbf4..2f3b03354f2e30aa6cb0e72b828b9866ac6d5cbd 100644 GIT binary patch delta 7649 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 #include #include "remoteproc_module.h" +#include "openamp_module.h" #define MCS_DEVICE_NAME "/dev/mcs" #define IOC_CPUON _IOW('A', 1, int) +#define IOC_AFFINITY_INFO _IOW('A', 2, int) #define STR_TO_HEX 16 #define STR_TO_DEC 10 @@ -71,6 +73,8 @@ static int rproc_start(struct remoteproc *rproc) static int rproc_stop(struct remoteproc *rproc) { /* TODO: send message to clientos, clientos shut itself down by PSCI */ + send_message("shutdown", sizeof("shutdown")); + return 0; } @@ -104,3 +108,26 @@ void destory_remoteproc(void) if (rproc_inst.priv) remoteproc_remove(&rproc_inst); } + +int acquire_cpu_state(void) +{ + int ret; + int fd; + unsigned int state_arg; + + fd = open(MCS_DEVICE_NAME, O_RDWR); + if (fd < 0) { + printf("open %s device failed\n", MCS_DEVICE_NAME); + return fd; + } + + state_arg = strtol(cpu_id, NULL, STR_TO_DEC); + ret = ioctl(fd, IOC_AFFINITY_INFO, &state_arg); + if (ret) { + printf("acquire cpu state failed\n"); + return ret; + } + + close(fd); + return state_arg; /* secondary core power state */ +} diff --git a/mcs/modules/remoteproc_module.h b/mcs/modules/remoteproc_module.h index 7b1378ba..6b0a6ae2 100644 --- a/mcs/modules/remoteproc_module.h +++ b/mcs/modules/remoteproc_module.h @@ -3,6 +3,10 @@ #include +#define CPU_STATE_ON 0 +#define CPU_STATE_OFF 1 +#define CPU_STATE_ON_PENDING 2 + /* create remoteproc */ struct remoteproc *create_remoteproc(void); @@ -24,6 +28,9 @@ struct remoteproc *create_remoteproc(void); /* destory remoteproc */ void destory_remoteproc(void); +/* acquire cpu power state */ +int acquire_cpu_state(void); + extern char *cpu_id; extern char *target_binaddr; diff --git a/mcs/modules/virtio_module.c b/mcs/modules/virtio_module.c index 892bd046..624822cf 100644 --- a/mcs/modules/virtio_module.c +++ b/mcs/modules/virtio_module.c @@ -125,11 +125,7 @@ void virtio_init(void) void virtio_deinit(void) { + rpmsg_deinit_vdev(&rvdev); if (io) free(io); - if (vq[0]) - virtqueue_free(vq[0]); - if (vq[1]) - virtqueue_free(vq[1]); - rpmsg_deinit_vdev(&rvdev); } diff --git a/mcs/openamp_demo/rpmsg_main.c b/mcs/openamp_demo/rpmsg_main.c index 2087650d..91e5e2e1 100644 --- a/mcs/openamp_demo/rpmsg_main.c +++ b/mcs/openamp_demo/rpmsg_main.c @@ -9,6 +9,7 @@ char *target_binaddr; static void cleanup(int sig) { openamp_deinit(); + exit(0); } int rpmsg_app_master(void) diff --git a/mcs/openamp_demo/zephyr_qemu.bin b/mcs/openamp_demo/zephyr_qemu.bin index 585dd2d37f30ff057677080ce98ed06fb1b0c2ae..457b597f7230ab5f7ebec7ca1e0d2d2dec25fc30 100644 GIT binary patch delta 11911 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 delta 10627 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 z zR6NV($l%XBJRz+TxEhdC)}<<1gHb%v=Y}r9$OvYtXBquX9S^VNHVaaW9N&*cdF)`Dk1mXd`LUVu`Yx z`Udij8T}0ecG@gT0A8>u9&^!@_21#oKawmvNapgA{EQ*+sj3xnh@7k&5OP&Op2bVb z*j9dENhY)K?=9IiUguAQWTekZ1KThAMBWgHv-uOtGpljvf>HEBmP&dddqdpDo~}%B zNffz=LhCaXP4t@R1Dsa0OffLp1`B_4dBL2OU;sVyy;K*`>wAOYlyZvIeMq!5ctCX4 zTi^!<@>$?VE(_0HF~4X9GG!8(;$}tUsRPTMNMBxL9~qVw<7K2u@H;E=7C@IG2!^Lakp`o>5)$=N>Z}&%TV%LfDWl0qZ{Wi+i(@!eeX}rQreaTlRz1b!jIM3 z@C5SIi1fu^8wF+S7%(|b@b22J$_dn1lFsAhaefVuIDXQ0WGxy10Z{>3%6F@^9Q30C z=@}5HPbN`gwV4LeCg6qk1HRX}d^&&x07{zEjZVOdQFIhwxDZ@)SuKkLC>NVtP^WOs z;+tHmdme$ax6Ujj+~mjVX3W|Q#YEEzVyJ5+eytzps{?5B|MB^_Kqq{n)0VIP2A?+j z;DTOB(a!q$n3Z`cIF(+B(W*gFVE-MOEfG!P^~zl<$1*?PvU1kAo7fh?r!#bdzrOOh z)m`v|PmfFPNGv7CZt@D~HisTkeS6i6-3#FxUHd-<=60f(+ne1J0J zeiiQSuPWdNztqDX;q{NsC_Y30`2((@)cXmwNuX#KK8}61dFUA}j2!i62IX6+lz*f= z{h+}`s^Jjx8L!`;6JUfxqR}~pu|+E2R~}u(7VxrF=F#807H<6nlUp~%0V5zdL%EK%@2Py-{B(TY2}E+!@uM z0e?8M2Fy^!_745myFC$fbz8Z8>!kJdQ7~5oY}?S-9|5Dtz9lkF`ya-gJLyI|+W zuhN&-Z&|BA$f-G25DrWsLgBiyCh0b5a(zA*BCBco%KdGCSNU%kR6P4h&~ SqoX*-GoB7d_M>BT|GxkL{H*{0 diff --git a/mcs/openamp_demo/zephyr_rpi.bin b/mcs/openamp_demo/zephyr_rpi.bin index 68f8fda8483ece2f6fcd8c8846740fd745679858..5dcb9d9d185945fbb78cecaac70cfb103dc3f445 100644 GIT binary patch delta 3780 zcmai1dsI}%8UJSP%2N$2yC4tUT~HB_hd~XZ$lV1=G!_jQMGSIXNTiA);w!<(6>KEh zq>Mw{l;kLR8J8v=la;31(oDd(w;* zp;S%vw8d|h=*d*iwWKUcy0G&2OvCT+lVlHJobP_<7x8$;byfv4#;2K{MVIPG+=QRn^WeRhA0=wJ9 zUf1Wk3CtNvAuNEkBArOld~LVVua3733_n5 zQ*@>}K+toq@W-ELmHhIf)Yi_7CF4@M& zE*_G9A03*^3-cF~>HO*Z>O2YH<6%kGR0FtM#}oHH6Lmk8B)LU?(f`5oT*;571MBAiGW z8RbcijI zZNIAzV0L$uYP?o%caO%%+F0|MQ{TD$MJwl*>fxOI%iq7fAj1z!@3U7-3So8aC z;QlM(*E3E?naT;sxs$^Dh9%Z(FgiNNSmh&nn6>Uy-p? z4d)>2cU^S1e8>?s?gi%+zN2Uvxx&vDHDQ}yoEl;cV=)FhUte56_VL$>H0L3MTLsXRPwZaHBxnrB+DO50oWa8>;G~fZetyyFXd~{S;2!1p6SXpt7nH2O z_d1q};`g6YjI!5afW|Pte}xYd0n|8FlT4X#i4E-#DUZAKgTe<(3Ku#<19fLWOcnJF za4|65pAv6i73wJRTcJeg)(<|^nbKh28s;g#|5-v*KJ-9ttZy2FoTCZ8M76-SOSx$k z>9AlX&sdyBe}0v(T%1puJ#6vs4fMt>URl~jwOjnV(j7*E2dFJ?CZh&*Kv;9)mS@kh zgwX0~80%!LCS{0VIn(ru1hCQ(Q=P(gECFrX2GDo{XonMIuTm-wT;%mlU`m$;s;l4h>#~@nZStS zlPvCEwUGLz^TLY32nS_mob7EjaLei{Qp%rP-A+xBJhXB$S<0tX&K!?-m;>M(=0jO2 zud19ua|-$X%IQWtun#-uz97zv)2O*kj^XcD=2Il!S1ut=Ub1FB9nRuyYo<@MW@CuJ z`;u@J^50prj+F5DM|MW69>t)E5Sw_{BRgqF8jq<;PA`jR*U^uoYb5t5BKP9Bg_^&5 z1+(cI*3n9WsgFXPhtha;)oaAT$E~e2bikxYUbD6?*!knyit!!2AB3~R2r!rs>B+4= zONhyHOX(t^cq4SwbW8jNXV>Io4sSVu+4(p9t|khRs7!~jG$xOF)nmM@CIcW;UBE^j&YiE%HUQnBthHh}6LKc9=7Att^Zki}S>QPzxDuQ6YX^(t}bn_#% z%kU2Sy0$#iWY_HV@;sXX9I-kc20DU^^4P_s8D|=cjB~NKD+hp#}{-yI~{t@7>rSaCGdRjTvac;6@9!-)*cG zn5*ia!o{D}#|ilx^~qu`ag%_l+?0*&flbFk6p@`KK6mq!&_EZLtl9i-$U2b@CO)Mh zHY+fF+~Jk+e3JsN199=jBynd$R!};RA8yE$`W;q&wxPi$ z+p!SnISQt8)c{u=zdhRJoCw+n2w+D5If<{_(m;~<*)0~5$1iWWVS71(-IQW`p6j7r zJX!mDhbFOZJVUNYG3mop_MUO@+l?9HkV}hr*4A81HRskMBJ*QgTc%kfSTde%7$m*_RlGOLzkT zQ3o{apGHM&I8U}fAPa;a3<@wq2XSBit9U^KA0p!Aa30q-Ipf*KNIPi)|MRxT@xA@f z_Sz{ov;Og78OEC$FG?eY)&T?;mFhXa{o$~d&K<#5H|Sqp!QEq}FgWf|gVZDkX`ep+ zu=wuv?K|%t58H#|5qzU1DU#jzEo&T85zpCTiG0>;uE!Wpq=<5}JQQaAS$4u3;dT$}2Qx|!8m(Dp^5e+`%;JQ5}g9h3&to}=AlfvY=IQi7ovzhsqfYnf)TLAOQ9v76r^|JE$E7;uuBU%u`qKZ;KR@=L@B{Fq z18WnSHq}7gjv82AUbGmtuiLr}n(DT1t8Li1xoyvZclI10zNcL$O|*hM=L$Dd3+Z>I qnd#4xrs`RH^xuL#qeOVFI6O}ecAm=?OJgR8INotiziVDBwfr4Q^ypdu delta 3078 zcmZuz2~d>D74GhTU|5dLJbnhmYon|ua>x(ft0ExcwY!W*A|9(W4`p?$ zlucDOqS3JVW#d>IYrw>0*D9qn8aHL)c%;fzQ$dl)uS+KHpZTeZRhg>kue;xS-+TSK z`}J=-=X3X0K7lTQgpmLF6@L|25kNbkHeezxhmL@Bx)i<-NH2^CC9Mzid4nP$7e4kO zt=&EzJEx88P|Y1e#U1reh;4z2l#*t1u~q34=o!L{?y;#D<^|sIx*JAXN6U#p#d;>i z$$Lgs3#>U#?vGAm%oH!j8qYH(#=|XhDm?_$5>6ZCQ5K1^q6B$oY@E)pH-TFS=`E>A zkk7_{D$sIya&j!CAyA&O)Bk;c5@I8yk8CScOz@ACmCP9nb5mm)9a-F2O6*P{_{{4l zqGb7#Rx`4gFD7tx?%W8{N(qKslg-`srflwuI?jB`7kQJ`et{&3jEr}x+@=tosm--h zGX7yKI_H2fqnplx2N}8445Kr1y#nyyjDqsaanZzw4+(@zy-~N5kkN!J zBN%CY=5n=F$mcR2GfJRk+%?MN<>TL@vvsJ9OcFP7t)SbnET)WQNb;1CQlOiL$rAb z{?>!^-*DU-Pp?3?bs_x|gyzqj@%39*o9e5QkVTR~wA*oPW1{^*KjFKH?IzKYK<9K~ zS7nz__D~2-dLV?Hk*tIlzVXEKE!gwZ>2dfWKbD>X|AIYi@f&Cx^+q>}W znC`*Tf*5)Ld}m~Y-V<>vb=Qc`A5O53#1?CS*XLFDVBU=R^d6j?u^HQ-!gz0oo(B(# zFuiapeGVTNivFTrTOU0W`~#!pnFhic@c*NWQGZlOc6 zP;T-gN>z)l!$ycAIr8kr2vX~d*^SkS$`w4Nc*vX02}y8v=CZ&YL#{Rn&*4J+tJ!XV z&{=C(*${j(D|{3Q=PN9Xs|zw?c#=0!kh7N%I6rIpG^Tg&(*|U~94c-p=B>Sl+TB_h z(LgZHGpa_?OKix%n5Xa1%gM73V{w5?bF#x6V>rn;73qw!O*LN$xqsBLinowebb?jBh3iEPLGE?bBypy*-Be=_dn+&bAW~01h1%i>W(tRc z#gR#pH%B* zzRe$2Ec?*l^yUoJtO2R;mu1tKV=RQ1+%Yi5Lvgliw*aq8%IVjzxU`8~Fu?uN(Xlu>gjor>rq+qy!}ziU);kd@%Ho3X{vE5D@VR>Ly44+W1VLL_4nw$AHit5ZDbHom zsZd%TH_{Q0sVDX?(2=Tkq`Z=T124+A8g2~WW)RXze4uXmR+eFbXUi=?JrVpB=4YT( z=omoeuAT@mR)n!E3rwu|1-%G=t0>WRl8Xk&mDYMXzm$soI=iZT`7tEBbIBl&sJu$4 zk9@Q01l2!sx%yU!Q(*JT6Z9~QTovwRVs_hMNLrPQVJ=xUjoyNzt1@Dk54xpEdDIp( zP|7+Q45HF~huHBrHJj1dqg9zyhS1fM@D$8j9p!%rNl>);6S0LhLBs0#IDd8ZLh1vN zYmENUd5ZcTxs3@FuF3T$zV7?ciZ-nb4zD@riy6eb&}=1OSqr|0tR7bcF0V~S#;0rd zs2Y1vV+DbRb@v$tvGl`}p+0$vkqFP6;in>_)uM_Dm_Nh%f2sLjB%ddXvFsV#tM})z4~X7xb}8juYg5N#fMl#DDs+-@kX^p)#|TS ziL*APV_UW9OK;8X$eI|vyNfE>HNTtVc7qX`vBXs}f+bT_hIaOxR+Hh@Yqr`&e4Qo_ zxWWk@9d%wUu?{>NREltybhXR|`$0}^nzx(I1l6^v0-jtrS-XjjgOPPnUZ^ViL0a7= z>IWz5jMM~|>t36!20kc+ojKaV?6>g_cU493cD(ETLU7V!teaORz@5#>UMOV~!Mi@2 zPJo>Hd}REjzHynums_yn7_kcB)6peOqKXM$y-EzsB<3ktYq?3J?p?(NxMd2af2=k4 z_I;~xTT&N*96gA5U-(MIy%!DKI7wczWdxn)h~Q6A{Q;JLLTxuy({6X6ir}<{xM|f~ z=p@2*&9tNJi7R~g=~17JTd2DkFUFq{TdPLFuN$`02avdRCCf;KBU>Z!-pOaTF82AV z=q_#irrz^)M23G;-yJ7R_l#}YR}=>9{+b$A@7(h4c#P;7cWU}m(%+TWPkU!vLgpUu zOh`>0tkEzbjJX|UR8Tj@?eoYRHT~fLKGXD5G<{LiH^Hb~TYZPao+TgOHJ!5e^X0$p zZqfO>@F!>tBJA2{q!##MUp%(oVjBl9_ARB0V0M#{O0W*w4Y0q-Sa4CxgsqjDUvn3s^RwKR6FAXzLAO#dLC8Vkk4x&bHa1>`3(UDIU^%&FS!>iVD=E6!=DH`xnuc7si5l Lh7JuY!7>TL_Bng(>UY2YAHHGjz1L%}z1G@m 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 B&e;F} delta 8557 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 q@x8Q-W!>V*i)K+Y;!Yd2->L2*6X(nO9)9+J!t z38|g1!NVLHvrb0Onm>&TrS$LSbA8$;uWCBBf-H{sKSV0OU+PABy6{zn8U z9Y9Sjl$u7Nf(?fBuHc*)ll^mdQhHTJdU3u*=3QeSThdkf$%T}1`gi&JU8O6?yMjFQ z)&}AkDD~BlQiA5*bJJU)c3D8$ee}SCiLBbMTyLF*gAZh+#yy;r=Ap$?a8fZNZN^

ylMdk;`L8#mSY$r`S=-nRY>C~|hM-Ec)y~hK zqqlMyyS<*C(udr(t3={9tF(?i=_!e~kI(Xi(Mf%oMhR~v8GK4Yr0>B(Wt108zFcoB^`a6~SOL@WmFfp~K_gs|z9@FG$(HGSQLfQ?+o=}z= z&i44jq12vCtAZP;L)kHZNJmuNXwBo1>?+pyVGVXQwNg;jf9M`kE15<^pO$7m*)nlxrhHT&qgtgsl|dGegngQ z73bMyBLiVgdJpegKBUw;n0O)I;l8&6;c&Wv#Rq|Ne*?Q12t)g8>6b9Oe*jw&1aI}9 z=Jnme6fGrntTUp=g22{4Q2Skc3TOSE2z9~sjofk~r5ZHY_#LEX^rIG-laYkK?`1?x za2;0PiVin4$4gnqG|5Cxltx$gdL#1HE@b``Co+aH(8+Dt>Buo`rwmSy3}-0+ zXyiN82J1!v^Y8@S==JRDFfflUVMaGd8nb}g`N0?!hZAEabBKER?@Z$k`(FMhod=U% ziSRIDlQFvLt%UflsQ~E}H5;OZJ+Hjy^<@AS8xCl$QR@_)-iihL`q)C&u7s;&*U_sm ze_S-X7G|y-cbqbP512V2Fe5o!`j#gb28fp~?!Vbk7a_I$H&5PEI@!s?Ot8z%iZUOb zFp|=JX5UvwQ~EBX$36Jol76W_1rjDlUl+k zZP1!D5Nb^I(rBe(Lfckh;@H`^=efpSUM7v5o%aX!2gXVCASk9p(PDGLlwwK;z}~5+ zX*YNyuRO@8m57htdI@u&L6&vEHWDQ=Vx&E zEkBFSHuryRjEqMIrvEc!H>NV?{6;ONt|gR8A0chx4sURiZo$hl#`z75wy(AHna#hE zL?+tJHfrJUj0tRdG^k&nLUYY4U&n*=E?8%#GaO2qrQ+(xA|O>bYrb2Ff|S0DM($O0 zgL|_U^U;~JXDgQ>yH)02b4BJ?!^83hT%Ub_B}c>ibJo#NNSM2tOYWcB#4yQ==eUyaoNK4{To$#S|`ZYQbo>I~qa@vV5;%Gxkm=Uaz3s`POJG zTfdqgU}-@xYYv05g2b@Tqot=Zg5^i7ycwTEdCcN?`}U4-dGDHLxKnV1?bgD+g^BD* zG~8a8$}(agYSA38g)!0qAAL3V8s^6a!?76nU{PS;az9B|Zou}35zmj2a!K)B`|!;e zxV$KltMXs0;*hjB_0M#yTHM#Z-r_8`95l$TCo%(Mh5cE&KNt$X<)cAMbS$p7Idh4E z(b@p32o<(Jt8jVGT*yU1||Ak(L?aRHpw{#KJbD@hg!fGqCR}wz|4Nfkv^i|;~ zzj|n#NnKHfeq)L=kzR$BfAv@X9Y>_5Aag4s@T+DvP>k{<-Kbj1rh6hY!dd}tj@H%HmEC} zpWI8PG|8^O7$9v#84I57Ie16Gko3|s?9vpKH}sXl1+NMlO)I9UT~}?Ur00uY$drCV zZ}B-*gd|w-W&k&f`?z#uN@i?w-$M`60N;Fn$8Jq{F=f$s!^6=10)I6H`HuUOk&Ez= zDImnuN1}MjT~iIPW<`>vdQXClsJul_KE9hD2d$>TzEzo$$&Xm~VBw8sCa+q=MXr#s za=3qpyTc+A9xP~8J5Lq*Y69$B8H1H_W@Qxp8J?~TW3MiP(2_>hUjaXrq_U~*pj(yN zWfR`EcfgcY@xhiDdzu=XgU-!Fjr`PdW2CeV8`KW-r>m|pJh0z=^8{@*PkpN!#jd&F z?TPq%>g`xM-~8ry@vv@frL*0Kbp-mYdm~;($T!!p zft%!{y2PDUul8ZpZwAY%d3Ry|$C$ZpT`*%Rg}G&Y38e?kFG~j)tp%^rf64Vqsi*l; zsYLt9rKd$-R`W{J43t}WwZ&kl_~B{9X6KFJD`*L_r^F=DbDPZD-wmS0-#@mMJuPb7 zZNVLX`8 zg;0Y^8}J;j^27re599~l{O~@!o4ZN#$Av69=_kwu+bVj-85g;>ibzg~Pm5^v(*Z>4 z!g(@c#fw8r(o??CtZEDDLV1bnvaKrq|0l-%$wbVwW@^$&q$;}}4Na)Rq~r=Ya&PkI zr$vXVxd(VqxChWf+zWTZ5Ua;qNm(HFwY- zdffADOr%zsZ?7xJGa87L@}uL>KaPAJP^di?48u0LvrnurVUv#SwZe)`D!L1{Zpx$C zKsQHtuEbLN6>UIqFDoL{ZuaT@A+D#lq@CN2o7I$evC^F-ErifD`l~_bG*{Ek5u)Ft z!Dpk)G^)x9cQ?oSmcM`vLw=kJ*lc46CAFj~LCVuH30+XDMYD}g#9D>V!~#v*`e)Xf z?I*2w&2gM>LJRr02}4zt>c;QCwFI}uYsScEwVgJi4#phMRpyM!^^{h@sj7Z{rY;hR zs|>URnfhy&7&|n4GTsIJxA$a+z6ZnhRJQ$l^NQ_9}7$DK-bzYq|`N8Jn%0m@=U9W8YZ&a|7BjfmrR&RVk8j zvUrY5lP)`v`NpY&*7Sv|AJ2-cB^@%!g6EpuE>CU&E%+=C%f4sD+dz!^RmME()Lm-np_$f&JkCMURDyR55;VUyw~4K}(4IsE0*Wv(Sm zvdcB$>`y1LLyus{o|otm*u3X0jWHnwD|pmQOomKXJn!*&IzGQfN$Ea3HNzpx9PK_Y zgx}#$VCIZk1xwA5Y(y;VG>3=8%cXaxCRSiPHzZkNB#SfO628PBtu?_<<|JwYRozh9 z3a{5?vTQkgP#5lD@y2>1^^LstOz=b9RJsJR_Qug)V8Pz8cpe?!JJ#dK3)WT{PgA+H zy{HKiUdPD696x+r(a^i5e>WZ|O#hCM33VfCZ&Quz+YNcevNI z3pay@V=!CVk44FC6KbVKjsGkHcIpUV{s+q_Oh;hr*1 zsPT95iCkRd%M)(}qMNGFHUGxLm}4tOkzyRQxJ2&PIut7TIulhjeI1LxcfU5{?|Uah zk$?PTqpVqb1paZVdsH(C7*?;xOElMyERgM?ES4yhS5m;u1H}@k{U2*WIBBDT^pSa?|q*eNRp)+m^J(Z8NrXR{N%lY zGqofc)E9kKk*D}I&~cmO*S~u>R=|>_`-r7GVAREB?4y%#>SA6j+48)6z~$%ZZ#D_~iUaj4 zpBsm{7UjS#?>@&P&uk8QL%Rd31hyY!c3U@eP&+RF*)g6<=rT#`lXYK=SBde(Vmuqi z|FA`JOz7(n@}CR&d2roQsOa43JoAhznUr;GG1s(ilot~dG1-c3_P_2Oj)iyccNmm> z*Repr0SC>*YE^9xIhTje8=w>OiN(P;j&;n_+;qst-Ebfg^E=vz%D#haA>eu4AuvzS z<#6WbLM*PFU)1zi)n%YXnB(Lg+cyI6)^pfXBb6`V11} zivl~Hw<}55B^ZAZ<8vYBx>~VXP-|d5Qkw;}12$bB9Gol+j(_OTkS4IhVZiuKrxTGT zofs$RPMjv@4HejFSy}Ee+_|PjME`SvDNh~IR0)BFGaOpq7HQ~m0G72SD*FBAVBdlIHnn2k69;t=t{}BQ zP|HAZQ=M{DNS+jUK}37ZV#geOJ+uF<5wj$L7R(0!DeXdf`YngFMc}w!9rSL2^KLun zuxAeJEwFQ&A1-n5#bRWd7@rOQb91okcwyT_8}z!RQdEkl7r@9{gZp+4Dnvnds=WVS zDm!Oo<4e`8L5dS%A7`QauY;BTPaW%r3vA%KQ=S*pC4tB6-1~yE3T%ePU;UNt!eTFh zzo2ZaG{RG{OE7An&uz8hf}k$J_}lAc&V)kS?GTwaqFZ~2OpO@T9x~8U<}k-uY^GMw zy990#m@TkWVEh)xyj>Moa#_Ixvo|~Fbb;*x*NTQ&F0iVzfr|B_JM|zROSiZ|jE4#S z5kXHAO>e2dwE`;z?h*KvzzYJ~1QOBU^#Vr-?5tFQX{0-Kq`g{Tgupm~2?8?(uDI{m zcs4bEac4O7xncXyKN~(Tvk_u;xp&IluV8i_nZ7uWj2Jy2hZIa-v@m~e;T*E+ylvlk z8y&a5Y{P!$;&V(?r%9j@s}cRH&M-o#e`RarHXgBoISt~t=tSazZ@Rcj@DqmvEMmM9g#mWp$3`b@EW2}% Gss9&1B7`*n delta 7068 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