From b5054ccc25b9415f2b4b7a33d05341da88d4b2e6 Mon Sep 17 00:00:00 2001 From: zhaoli Date: Tue, 18 Aug 2026 07:20:27 +0000 Subject: [PATCH] start experiment 23 (exp/23-test-whether-the-5-day-rankic-ensemble-i) --- code/MANIFEST.txt | 10 +++++++++- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 374 bytes .../data/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 216 bytes .../data/__pycache__/handler.cpython-312.pyc | Bin 0 -> 11073 bytes .../model/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 319 bytes .../__pycache__/rank_ensemble.cpython-312.pyc | Bin 0 -> 9461 bytes .../model/__pycache__/rank_gbdt.cpython-312.pyc | Bin 0 -> 9838 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 234 bytes .../__pycache__/optimal_stop.cpython-312.pyc | Bin 0 -> 10428 bytes 9 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc diff --git a/code/MANIFEST.txt b/code/MANIFEST.txt index 6af23d8..f22f3a9 100644 --- a/code/MANIFEST.txt +++ b/code/MANIFEST.txt @@ -1,15 +1,23 @@ # TradeAC custom-qlib-code snapshot (auto-generated) -# parent repo HEAD : 1075525d6e954dca0bb31daf6675904f8b569f1a +# parent repo HEAD : 3d845306fef8a5c63c4b114608fdcca595e4a94d # tac-qlib/tac_qlib/contrib # tac-qlib/tac_qlib/data # per-file hashes (git hash-object): 1b6298c4a5652f2e863cbdc385a1014a570fcd59 tac-qlib/tac_qlib/contrib/__init__.py + 0cca460303eb00586c00fa4c50f40772d7af9e2c tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc c76a9f17f680e74eea766eff27f7624359749ed6 tac-qlib/tac_qlib/contrib/data/__init__.py + d3bb8e52f9329f356dfce45c6103ebeaabc60e30 tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc + bca85df83e0fdd57ddc8750bd94e5ee22b9459cb tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc 0dd25ef161c6e0f15eafc84886e7e1381deb38c3 tac-qlib/tac_qlib/contrib/data/handler.py b151d139a0dcde87d74b21e7c4b729176ba5c39b tac-qlib/tac_qlib/contrib/model/__init__.py + 6fdf879e404d47dc8fd617549a35db96f0f38628 tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc + c520d643e3b28c47aca92ab08395f5e3342f7185 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc + 66cf55a366e9a1c2841c7332cce772d87dcc12a1 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc d3f051f3a8650c42fedc7b367b966f7c74fb5789 tac-qlib/tac_qlib/contrib/model/rank_ensemble.py ccfe7d554989aa7f3e5a2128ae663e51b2207149 tac-qlib/tac_qlib/contrib/model/rank_gbdt.py 4afcf9058231111c412925f4c4b84e81d656db87 tac-qlib/tac_qlib/contrib/strategy/__init__.py + 085e53604ed7517b07ffaf0992e81e62dc181ae1 tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc + abac3e3e68e5d917e8ce1358fd3667759a58a7e7 tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc 79aaad9e39fcc740a773f4f63c512ce1086cfde0 tac-qlib/tac_qlib/contrib/strategy/optimal_stop.py 92e6e90eb0cd0a25142034560f27adb6b705b1a8 tac-qlib/tac_qlib/data/__init__.py b6dc9ced54f4044f5954b60ddd199acae9eef456 tac-qlib/tac_qlib/data/__pycache__/__init__.cpython-312.pyc diff --git a/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cca460303eb00586c00fa4c50f40772d7af9e2c GIT binary patch literal 374 zcmY+9y-ve06os#U@}ojKbOi=Bf&_g5gajQ5QUQrFd9h3rRRKE*t{FO_J_I`(&%zr- ziWr#K5S?J+I)Z^a9DV1WYhU}N+wB0>=xcd1ApmdQ{1yF$)fnLsQb>sgLj)n7DKZt* zFu_{SG%;N8mbs=T5JAgw_9hfrBbREx~RW6$? zFzQ?#4Np{&>dd0+U8>^tbT}RzpZQ7b^e-xx8>J_%tcGRbY^f7wL%i2UUSgEh40;gs;Yrg)4e;LUwe=(O#KdQNSPP8lXAaW)bRnn`(9^< kwueXkpXM7VAB+&vK>roC8rW=LyMdig&e!NeWY;nO0luqRMF0Q* literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3bb8e52f9329f356dfce45c6103ebeaabc60e30 GIT binary patch literal 216 zcmX@j%ge<81nxhZv#fyhV-N=hn4pZ$VnD`ph7^Vr#vF!R#wbQch7_iB#weyrW=)ot zj6g|E##>w=j?Ny5c_}%mMMca&AwNy#TkIJ~0=L-X;}dgo;^S8`d7ehzB#0^YcoIfC4FrC5ig+@tJvui+AWXvKO%f#Q=YPHNF4< literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bca85df83e0fdd57ddc8750bd94e5ee22b9459cb GIT binary patch literal 11073 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 literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c520d643e3b28c47aca92ab08395f5e3342f7185 GIT binary patch literal 9461 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 literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66cf55a366e9a1c2841c7332cce772d87dcc12a1 GIT binary patch literal 9838 zcmai4Yiu0Xb)MPxlh36{(JOgmy|@&)ltfe3!;&qFlx0hzElYXPl9$7s+2tz?%8L~XC*l$ToaXqn9&4nT+{?vR8o_@s+P^ELN+5rm8`1vs&Z6IWHVw) zcuCAmJaNSB_SIVQU}8x&qYnlNTMPMS5t{GVRY1lJvv$sP#c#8MUE@7ssf^r z0(hY-t;(UWa5}4a>h}{cJ45ET`?jb-zi zkT9m@WTjUUCp`)f7NS{2ky9d_LFl3*2+y4g^$6F;6VY)2o7W(jOJw4Ll$BK>lhuT5 zPD`W{Q?d}tDq+vi4M0t#<&4H?L)Z-L?;W~yT1bf#ve0$$#ohr)7#Qe{$)c7AMmaGf zr$T}{p1odAUE0S3bVMPV2es2CWn=O+kU5ozVUIGg_lNgC{)EtbLO|n*0pXe&W`qFV zj88dP64Jy-@Zr)pjvq~lAgUtgRh*)h7kgDf5;alCDRNF!404R+wWA)7AoL2F7*|0E zP-Jv86(0)^VyY@@VBz(IHZGJ23i`{+B&NibY(9rU735I`HH(uFt?5_-uC%Nvi6|J8 z5yoUNAf3x=Kon2}O%WwVWpVNt+c}X*Lcr82Ek;Kf834U2EdzqN_r)BckR?szr>ENH&w2Jbp>Z%S5hhov^Wu zfNpf6!f=`|bdmhgwsqPP0-L{wWg?b>giVTRlAH;dF%&Eyp*YIm6Gxa> z94!l#si2inOwOm|NKVwok3tlp5z^#vG@Ah%$HInu5q~4`F-fbenz$}1akaV!?L#Vk zl(ecci}iwY8E`!UYRgASl>5Ihp2?>pDOtQGV{QL|FAhay6>2DISp|aw`}cogG#qAf z4?2-v8|nikfbdJCwRO}k^PUU=QTZ67aCVI3FL6zVoQRXEhp3K|#}aWUu~fEEk{lEB zDUA*WTXj*^z-2}dQrP3CVV;P+;7AM>Nf-k^=>?!XxfEnkFewgo7#FW4vUx@5sv29e zwX`h}k2w6SoPnu{9%bBB*+Ik%>|C8WW(Ed!EDIaPOfTs-BowkC$v1>?5lZD59YwDU z3KD`T`5H_hlcR|knSe4S4SNIDWMo;ArLgBya!Dax_lgZHw_SA9x+oUfSyM_Ydt zEJ@n4?$TIfL7nD~<}+TwVcHt!rfr(vT)G*a=Bh#N%0F}5v|Vd7XBVsm`&PWrQ?gE> zMQ^upYPzN!1+L&=4b@ zTVlbMY^{Z9v}@o5HW_U<`;r}ItNN^Bm3*YyYqoBe8`__TQNi@j!7%A6F`Aoa&0F_D(->0Nb7hwh6S*qs?H~L9`~Hir&LmL zqA|NZKhTH$`ruc4$xKs&IoLj+P7bz@IoLkhl{wgOZc=ZK!1hKE!$x3AS=gg=1Lk4; zsmLd|8E(VJx%@NJZ(A3K-tsJof74iMY+3jEUpsO0#Nx@t{`V~JyWe#$@BXOggPxzM ztKG*|g(r)h$5*{4W(G@M|IFaJzvYeox%}%#Kk;v$<=1`9bGzoQ&hK4(e2HH=`L6xV zW2?TsvwW#BFn8hRjm0fX{F_^64`8CVVfN}@9hy7&ouhBJytCy^47{}!+i(By;75l( zICN*n?IU;jAD<}s0wtI4HSbOD8_z79oj+SfXUC6xYr=sQ;lQfU|Ff5V{*9k}Pfu;JIJ!S_!=HYuAe#UasNM2R?3B*R6p!S{B;p+ZO|`Z(H>~TD0w7 zzKGjHkb;Yr?H9E<%E6c|kD&ou&L=CDoQ93d)beQy#w)hm9EC+JH>a&yIj4iogkLCF z%`9r#Ch-NEWQkd!ht{c+=MwR84e68-ejxZEy?hDGM5@#^jzK6C9N(C%A=-q#2#Bvq z7p@_dfRhV_bqBFN5xoTe=Z?!-gvprEWMalxAF?X~aMPXe=j7#;9e7h7qb@6g1(mR6 z;--XXz-QjhqM;taZHBw=53KpOulTpG`h}U(C12~BZ`+D*+p6!;nW1&hBa1^zhn5Fc zJqKn^mAtKU7Z-OGz1xen?aDr^j^eL!l|3K-a0Xr92CZdogh$S6k@yj-UJ=x(Ov6g7ryx(&HVOnCx3=nf;8 z*4>c^3)LeLm52<6&KUeWL`Q5lus07HHo<-sgK8&kf1KggUH+TS6<5cK>#@Z{AG;na zZGCLk_T2`9iM0an!hF1giMTJo=1yB7*nAS*_185Ro#(l4fu)1o9Dn6+5ir;awm&(S zzty_AazSmZk}Yo0$^yi3$xT9}5A79Ivlr}1!n5vDyc)5bU6R9ejo;!av|&MvU9!=0 z+KIr%nIv7PyOQKb>MqI2g1jgH#EMPA9LYtyNG`Tc&?@0da+Aorb!3bXfqc|`Jk=r?grl5wlMZkOMa`|1YpsoZ4_`^{GMS#WG7O9f}aRd7pDDp=LUJU{!@8Z-EfDBDiTS!6HXeLvX)ki$M6VICF(i@8>n=sUE|c$@3VtP1o{7ZJ?1itR7%a@tWC5xr%iVo{AAQ|q=A5&x*rGo2-e>5@Fsk>A;&I)h3)2Lp_3K<36Hh4C2PPfZ+ zc-`|=N@a%>C9CKT&@NArTt-TyVT8v;Sm9<`;#3j7%2TrLM0zZ0nxdSd^D`UlNvKrX z6f+1D?JS2@C{55k=jr&*QBtkjGh!Nmoy;$fO~Qnu0;apPYy_b*;x??)`VS&JjgRTh z!Lp|&?F@Mp3f>fwD&12hl5UgKNJ_VYjk-mO>HH0ypVay51}S(+B|`@{U|!4{=>ABV z5R61q!FsJ*C^OO4I5wo>Dk#l35t-7EOt*j;pW7aP0RTX)Z%LI61zU)!>0 zWy_wA8~2pjf(w!P$kN3-NAAXp2T$L-@XFeS=*orYTx7LPnzNKz+ZGOg|L}U}uHtTS zwR5Z(7%R1JT@1}nFO4m?zdJE^V2&@f1{My_A6_^WyTJ8KwG4Pf9t=o#NyGtFx`IGBy z!Nrl~&U>)5x_v2XdA)sDXMf>W!VgT=t$hJy=qES&iMiT9FsT7KT~la7Bl z_>af`{`kE;&;2r4y!^`AWohNIw01eUg8#$GQgHh_&%gQn^2p-ztHHx-!Q(5zx={?CSq*-De&~Ksm>c?ipq--GCH{TayRJL@-5tLeD1QCQy}&Ct zYg1ssJMUe*uw-34^GVb0jeah$XXA0MDKP6boNukGqXYq*GnNG9>y?PL znim%M?^UV-moXbo%~g#}H*=r`>x>VkeG|u-;StA{_o#v40XB74!S-RrP}R)b#FbVZ zP24)|#=e`lR%N$@s42Ob3$>B8lk9(D)Ip5LGgZMy%a z>m0S~B!1dcLxC+{-e+^j1*haB&5v2&!igW7R3yL;3v(YHI1ty{_JV`r$!TxFTd0wR zLZ#-wat?R?2v~TDirj)IJd@4hbBtoxeKDor%gkhNS^p&@`CqK&8`Vy;1VBdRMfz4@ z8g=2{XWpPf-stE{;Z!zWu3@Vv9nt`bd zv1ABx*O+ns9)W^tHG*$Tu+}I@8ZINk>~&~#)Tk~HhEz;+z#k;Cl5V52z3wnd^_TSK zFIDbY(II5l8>vLiwu<1>2TBJX=AOw9tGd@{8?M35vI*Tyr=dcy8uIJ56je2?Q;D4N zG9*H8V71?f`C&qD`{KK?g{n6Y3+PyRRv*=y4HDLLm6Hehpp#Zv&Zk>**&K@?lnHDV z@)>UD6|`B0q7ni=lxfFMH)f!8UoGjBBQ(JxsS0HkN|tUJ>T;GTt&$BeSxryFB?Tf( zh$18q%qtOTrgqkQrcEYI0-hRV4r*gN=j$kXA1ytyZT8%HpyTb9rHzIkDm5cJG@VeC_Pbvx_cFD)sdnZ$)?)U(b3#xH)tmQ!)P9 z3pZa_JhLR-^X)5Ddy2unJAr$?L#05+?9lI9+7?3dq4IFahdRm4p$)sc)dQb2Fvu4l zKf5@%7To`FaDVZ_D12q9V_T`Ey|m@g2aPnTiEC_o(2Ulsb0fetwJ-YKla>d5G*N6k zP;?zITu3Ev0?8;aVENky8dSPQ(f2CL%r-526l{q~x%bZ%J^-^P9Vgt&0LV=K-%m~683eMWRa|kEuB$2Tw+aG)>rtdqZ0SfCp z{y(kr5rl7=oEugi2PPqhZbk705u7HcRoyK^>5UOZ;d(Bo%n{D5~Fg+V`vvi zFjE&87DbLF5W`I<5n5)2_96^L(1&G-OG1&-ceU~AG>>@xa%o& z{zASNIQPKH?dW@8=e9kGR!h4fh!qwC7m72$PX6Ivqfw1z;PEQa3aKz-MxN1%B71e3$ymoTYGmvvtZ98X!}tFw@E^Fq`q!8cS$XEp-e<-%qhr zP2z@1ZlK2Kl^R>u8h5NT?pWHpd~~((5aRXjQ_H*7x=*cipMq`KusZj7?g#gk9($s+ zbvOP$@S+37U>FZSS}U%-v$k8FxpPaqVNu-v*BWm&F8Y?_U%Pr3=R*7?WSA`9vB99H zLi{jjz>Z0DL@koJ*3Y-mhq#y7*SD8zLI^lkO}TOv&;=`rL1R zyn7kB&=rH;KcG=YbPCgy@8dSLvkLqf(}zomD10~D+SrHJp_ojyrreco<=a?Km3)Ok zQpWKbvJVd{Z=f+e9CB69WAKh`PmWLdA|fFVmF7r0QJV8aBIWPk5#1Mw;HM_3@`y7M zk+RW9L^(ttD)PbvMVUh%@-d@q7nM_~NF>B7N71X2_&;rw@5tP-GUY`YSitR%uX6up zd+xt&7W>Z6T-)q{jX|F44#Nc@Cn>dU-SF?XAH3hNZ^Mo!97yNh4JWl+oY1@Brk00m z@7(ZGtBLdUK5RzoGl_TD&+{8wY9Wvy8A9Sx z1fcl2CzA`)PkR(`(kM6o5WOrjRalGos8D?Y-@#)9Y(Tr4kfacYv5UC|MiawKyPh;;9Sp64G}cJsDB4D%en^FO(+6|U=dT+45`*57bj{)5}|Tdx1NT+eU0NA7zc kS$w7F>6vjpbTsh?{%en&fAq7aJkR&eefJW)xfM z2yl1ZEsZ*j(sW@Zo873`0#zELs{p%O6$lUqTeJcChhsV=GwWi#D2hd}*o9K3Xt%%i zoI4znR+K*WaV_6D_jTsnbI$$lopbpUyWK)TdhEaceEugL6!mi~XvwG&^!=+q+@M%0 zM6oohOVCMONJk^BPw10|kb%&KgfUbDb;d+((iAe0x|)PJX$e`9){vEyYZJDlJ!A*k z6r)29)*N!OmXM3JhU!>b$j#bA9@Y`^>Zr#k)_E0rarU?MsuUsLk|F4dJY=A#iHsOe zMiTvkn9gM4sTecJ02!T&2x2_iA5Eu3KAnInJ|c3lC1y6wGf_S*2>k*V731kt1RCQp zcnAX)%US5X#KZ+A!e}Ei=|nubbQEfYrQ{5-N@utfcF3fKI5J?;sl*aG!d~eV$E0T&agJkP za{YWHwZO5KR3ym>K_-%7NlPZpi?bkOnt>@Zv)m<)hx$kg_`;wCV2J{kr6sextn!CW z>7Cl+7ZV&#c8*K1$KV7Tu`&| z)MA7v@5M-Bk<4-~onX;?alw*GGl_I61{1jilba*cRvC2OJR-Twpeyii@0OF3rc6(gIb>9K%+!M5s^u7;A$vOJXI|Zc++HjS)CDxa~V`OJ)KIcE(h-cho}hB z!(ChiAHKxJV{>Bp<$cUzDiL1*>(6nPDKO>;pU$Kgp+iKN>jxdDqpA|;xJA$p_&dDx znK%!xil@XhbCF+6p$Zpf!4LvNSVdAxAjj#5z)hBx1kPFD&<~#iZ4aj+Pjk^U&rVNU zKnb()Sa5)OGS2g9ULb}Te(D^vC`4k!XcrUlnZ2mGD(NbGk3z!)&vN|q^q{3gj>MtF z%<}0ZG~)1qnMia&EX%bf78P$to1hlgGQ?b`y!}Red-g{BfyOi10Cw+evh_3?fa#V;0?A5V!NYCn6J!jyITn$&tnK(0R zfExT~e8Xm@e%C+NmZfHCw&toMWZ|r=ovpoUc)Rq5wZ+U8X~IlT^^nn_*Do2+02#7{(RcPoS}ky?}NAdOH!a1i#?A45X(bJm4Fw zaDf#2%ZU^b(U_wQEPW=mn4AH2fREs&(M6sI6fG|(KsjVq238ysPkr{y;OGDc6=>#R z9g_6}t7qb=v*S$9{(*r5!4kI;jsdd=&=EER;G*FpK^b8u<741^DhjH+9sn<77~uiV z%K+A+;#YqOzZinKB{3er8Fgau~wrDz;OsCXRlrF6X8$3<$-%3&HBK%AG1|@2()HR1hy#%Ka zRwvPtMY2jZmVUz^*}qMHou(;CCsAQs+$2eQDCx^31C(H-nj|BXN=Gb;l4_t-Q*Nt; zQf;|pf)YwZ(h?Qaj|UAr;sjrhSp#N`kiA6(&5BW21ou`X5mtVj|qx79F8U;f)EZ1_)=Vym2~B|M+PIA z%%B*F_TyH7M3@j{`-KV(ItEMUlrVbUKxT<=1!l`FpM}~1ZK4lD2Vn-X-&~0#g<^Pv7^}3^@$lOwk?#?_e(2M4$9Y*HC#6roA$uNQEX)3VK27r z%Np*On#<2pwcDFDyi|K1-a?ff1`B9p_)p*O2I2-KQS)Vo!DcnF^iAE{rFy_p{rD8@ zD0(;r;y#3DJ=}%}kOZaM8u$;Z-aM$&e8(k1C)RQf_tf&vV}|7 zff%&x-%VLn9bUlkham%fxjZ*)uhksz zx~#uIU7}&_y#-#Ux>%f5EP@!}#V~Hiu5Qzs%Q9J?-cp~DT zQWqCWj*1%%?sbZJYAM5=#p83(sJg2mnr1mz+4v4c5A69zV61?eLrayt7kFu0cK6<@ z4yadxc2}rvozXl;7d;IHPq*ypE_fc6Jr5U~+BUkjIzDLH)>Ga`?o&FiW1G_19l!as zhH^FilA=F5E#kTd>>$e2Q|ExVgeQWQqRsX()hWr66!M%x? zT?FqXo(~l}({4uB4xoS}yBoIJxk?PBGKM@4c($Tnfn9Z1C);%_f#4DjlJUkB*m>v6 zJ8wnmc|7RuNU&$u+|<8a8oyGD^Hq~nE8@9nk4gxKRXieZr@P_MQy~2B~GnaCCfZ+Mmv)Bt`X{mE||Yf?9e(uf2i4+ zB%8)nd$KhPBd{ds>jCvtb_|AG-)o>^)QVl)tBu#*v*G|*oRW1usI^p{TAvYWm3|>a zQN&MdD=v_vx6(_aB%5TuS*uxKr4Dq^r?pj{^Me&yqhKTep15Bt&kt!-<$2Sj!QqNq za(~$*C!;?JZ@h*5}ZfPWobMT%7f6gBP~2n!6zNRpFk=C+KvQ%23`(5{G`XD zJDQ;=xg@vt9(cztJQkY4l3pSK8e>O734}Vy17lC@Xo4cXUC>Eh{+oZiC#?9y0~$xr zvF{JivgPd(TCCK6j{Sx;j+LiWulXK7Alc{7R9ZBu(t~JmH@`Tm^{qUmddYIrs_7O+ zI_4j%v}#mk1<>H9*Z%}O!ztNN(NKE9KmpF2)B0APtnH>HoPR{r^<<6~ELb`SB#Y!c_5KG^wOE za#nVfyyB?Dz?@OSfD{1qg1vxuRblHc-jH%uweNzxD|@POq)LWBSqAVpY0u67C3=82 zz9#Ldl4TcJ$*!-H+EeuZC(>O18F)$)tnwd$9-F~qc0;V)cCtTU?N#k$9a6`aEfVCo zlL)pJASq8Nb1VJ>C}$;D_x&6HoRjX6s1n7OY`rQ&MJF1 zL(7A^^Db8TKd}5iO6|MiPe=orwX1Dlp6JWyJ|Fks=!Alo|8sl zm^mWAtrp(f#J=SH-edo|{LPd6QS7o`i?wM1e8quZ@oM}{5V?$ESHJ4H4Eeeu!6wB* z>PS3YvA|tG3OfLf#-@3t znFqPqQsg8&vsALdB7_5j-Rc*qL%kQ_!Vt?{Oo)o5%1l;`#;;YgS|CDa;F<|OcCp$- z=&D+be)D){SM2x^9flAjbOoc^N`d+?C^w^+N+D~3KaPE^5Oqwbx)Go!xn>NDX^3Yl zh6OGomckntd*|^;$9Li={A|x)Tmvka6cswHm@zsAAzvY?SgR&+TB;WPFH&bIY4KXgo;bnEnP};57^1fXnSfA5ZfOiUC0I!4yj<2cU>ydpu1>X_b zcO>t7Bx@-Kx(b0qa^O%Qa9R$WzI8Mo7?(}$S?lVBqQ9fyACmn;1^+48f9h6qZgMK; zKb7~Nmrbo%%j)C6@5XblJXi4b%D&#sB*>B-*@gg%H!H1)>*DKD(bWinvl~ZV zIkI+W-IMop0jq|VHL>77Aj4n7f!hu7P4@e-cVf5bcNU;nX|1o&d_-S4Hmx7p)ZeleJNn)=zGwM?kn9=SJa7jl<@Fc5-LkiP z{o);Ou;^_pc=yWQy#?=(?1dg%QqDVc$2(SZwUz><-k-X<@3jS14XabHTDH5W=6&0J zln?Y=DWVeHSenzzzbb&h^u;9Z=C$*$?O?4*x|1&uT8yq;k665 zo!uX~d_}05mz@l1&FOym(zQ#g!rGaZ zXFCkGYUn7`_saFX`TG8>wbzm zbBmQ*o{()%T>Ao8y=5=3XzAWC6nY+(;jj7OcMon|{9(tf*gy5H@|!My`w)knmu>d7j)k`mU9h!=z4s+0p@+bmGU-$uywvdU8h{vS*SZG*BvZ2wQjU* zE!~-VzA!Z{Pfdf0+=pOcxE?lrJ*m!7b0p|1fXTN{$o!>cUS93v) zaR)whb#Ax8L_TFGmw)X`8zI?$WXlV%ku#kj@$I0CY{ZHleqW*9qT!iXy-Fh#+3NoS z>&O{^P#C!5Nh>)L5Xz_3LFm2<=--+%?7$?)$6=$Y;W=@UPw`)cdN{getGbeHk1(jz zsy!6LOgfzi(&Irl-uB^-gy8rCN1n_!;epljf6*rFH9T}~&)#dTy6I16V#)rog zi#C38j9lF*HaI!J?^WQYe=g0E101=?P|r)JaK>MOOtF`)52JW82*bhC548dwZcmZj zlKlRFWO(ipz6aTFu2P@qtVYu|*w9<_))!m)ip~3qZA176gtxue768-*L<1N5q^;fP z+cr^7_qG`+3s`^KijMV0y3?4-s@Y zLx@ZGlQ!N!3K{sxS47~S#De{SpU$WU(E11J%0H(eXGL;QR=P-!(&g%acDXvB-nhdF zP5q4=j}d$Y90Y!01d@CMO8nO`dl|D;%wEClRm?Ch&co*#T*zR?K&F_EsZMu-|7$3s zwFC?{zy$(Lf1>lyhF|TY=#F1d4L_$mzo7j8LLK`VHFD4D&smr&wf8(NIm!jr$x(H% i&m!H}oTGfj#wN_|?kkp0YtlOUWUi_AR}>QD&HoK*tO}L@ literal 0 HcmV?d00001