diff --git a/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/README.md b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/README.md new file mode 100644 index 0000000000..566016d96a --- /dev/null +++ b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/README.md @@ -0,0 +1,50 @@ +# Record: SP8192 + Triple Recurrence + Banking + Fused MLP + Muon 0.97 — val_bpb 1.0783 (3-seed mean) + +**val_bpb = 1.0783** (3-seed mean, std 0.0004) | **~15.99 MB** | 8xH100 SXM + +## 3-Seed Results + +| Seed | Pre-quant BPP | Sliding BPP | **TTT BPP** | Artifact | +|------|---------------|-------------|-------------|----------| +| 1337 | 1.0859 | 1.0798 | **1.0782** | 15,986,623 | +| 42 | 1.0856 | 1.0793 | **1.0781** | 15,983,529 | +| 2024 | 1.0862 | 1.0800 | **1.0788** | 15,986,767 | +| **Mean** | 1.0859 | 1.0797 | **1.0783** | | + +## Architecture + +``` +SP8192 tokenizer, 11 physical / 17 virtual layers +512 dim, MLP 4x (2048 hidden), GQA 8Q/4KV, head_dim=64 +Parallel residuals L7+, QK-Gain 5.0, XSA all 11 layers +LeakyReLU(0.5)², skip gates, logit softcap 30 +MuonEq-R (lr=0.022, wd=0.095, momentum=0.97) + AdamW +EMA 0.997, warmdown 66.7%, loop at 35% +SDClip GPTQ int6 (k=12.85) + int8 embed (k=20) + brotli +Score-first TTT: SGD lr=0.01, mom=0.9, 3ep, 32K chunks +Hash embedding: 16384x512, zero-init, trained in TTT +~36M params, ~15.99MB artifact +``` + +## Compliance (Track B — Score-First TTT) + +Per Issue #1017: +- **Condition 1:** Hash key uses prefix tokens only +- **Condition 2:** Full normalized softmax distribution +- **Condition 3:** Each chunk scored under no_grad() before TTT update +- **Condition 4:** Single left-to-right pass, no rescoring + +No SLOT, no pre-quant TTT, no n-gram caches, no Tap-In. + +## Reproduction + +```bash +pip install brotli sentencepiece +MATCHED_FINEWEB_REPO_ID=kevclark/parameter-golf python3 data/cached_challenge_fineweb.py --variant sp8192 +SEED=1337 TTT_ENABLED=1 HASH_EMBED_ENABLED=1 TTT_LR=0.01 MUON_MOMENTUM=0.97 \ + torchrun --standalone --nproc_per_node=8 train_gpt.py +``` + +## Credits + +PR #1420 @abaybektursun (triple loop + fused kernels), PR #1394 @clarkkev (SP8192 + SDClip), PR #1471 @X-Abhishek-X (3-layer recurrence), PR #1477 @aryanbhosale (parallel residuals + score-first TTT), PR #1460 @resouer (eval-time hash embedding), PR #399 @abaybektursun (parameter banking concept), PR #1514 @dexhunter (Muon 0.97) diff --git a/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/submission.json b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/submission.json new file mode 100644 index 0000000000..93725b9b89 --- /dev/null +++ b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/submission.json @@ -0,0 +1 @@ +{"author":"EthanYangTW","github_id":"EthanYangTW","name":"SP8192 + Triple Recurrence + Banking + Fused MLP + Muon 0.97 + Score-First TTT + Hash Embedding","date":"2026-04-12","track":"10min_16mb","val_bpb":1.07833,"val_bpb_std":0.00037,"seeds":[1337,42,2024],"seed_results":{"1337":{"val_bpb":1.07817,"artifact_bytes":15986623},"42":{"val_bpb":1.07807,"artifact_bytes":15983529},"2024":{"val_bpb":1.07876,"artifact_bytes":15986767}},"hardware":"8xH100 80GB SXM","pytorch_version":"2.9.1+cu128","technique_summary":"SP8192 + Triple Depth Recurrence (3,4,5 x3, 17 virtual) + Parameter Banking + Fused MLP Triton TMA + CUTLASS EVT + Muon 0.97 + Parallel Residuals (L7+) + QK-Gain 5.0 + Score-First TTT (3ep SGD lr=0.01) + Eval-Time Hash Embedding + SDClip GPTQ int6 + Brotli"} diff --git a/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/train_gpt.py b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/train_gpt.py new file mode 100644 index 0000000000..e20acce09d --- /dev/null +++ b/records/track_10min_16mb/2026-04-12_SP8192_LegalSOTA_Clean/train_gpt.py @@ -0,0 +1,5 @@ +import lzma as L,base64 as B,linecache as C +S=L.decompress(B.b85decode('{Wp48S^xk9=GL@E0stWa8~^|S5YJf5;P<0H#a#e2n@VT6Qap3bt~@<3h>ok~)Km^%m4{rOaiQa2(_3zS%kEP3*8F9$Y#f-ZSHsOI0J>T;4{pdFFBjnfYv-o7{^Aj5A;P`z&C6&<=lqU+_4@b=R3%dnFVxv`=Mxc$Xs5zzo9Ric6{F|ATO1RDSva^{lbrs1l?`BLg7X=K(Q;6QVBe>>XcJ1BumAA2c%17A9=Ndxtz>P;Qj8GzvXz~UFKA&VZOufyRgkT(@mOE^`mG_Q^|@KlW_VERX8baH?N3EM-_&P%L_EFTm43EHf-VQXAZ>}m{0HbiJdo*$GnEANkBhMepqyPcx3Fe`cguZa~?mFyAO7xx@pyp9u#SgbW+7#3_|0HHzND*Q91f>^;{89_J{Mn(ifsT;O=nQfn#Ij{*MK%J|f`^>lsxUub!E!Sa7u`{MQ6F9EpM`M3LtLPR@0)h4vzK5MC|1-JXholX8)ey)dQyK9Qb%sbNCH*vNp0k<6<%6l+hRO0vpF^o+^Y#^WM9+l@#vx0FlzSmKyQ#D?TgIPQ3$mo~ESH~#){o=pZ>bx|DpULrF#8zQk&^auf9^{$UlamN3-&TUdJlF%9!C7`Nwr+MCh4tYsw(vrIp6F_fi?;BNr?Yjf9NFRsW@;Uw#>_q%@dXd)o8ZOKhsZqb@w3rbC(;tlItqrqozqGJ43StQ$S=7bGQ}@c?@-$H5}FVv__HFkSqWth_C&p>@S1ZdEnw#`Ivzv>R)$n%JiuE>_KhkJSnCNR9vU7cn1dmYI&yutlAMSAB?;wui}O*PPW~e>3lp#V7QU&$y-;gUOonM89&$WEQzh&mCb@i68QFyPK^{!LRHQ+FrD!`F{DXZ=m0t~iTHET-~L9XBJ*;X)3s}?=ekXQ0hmCMvAC*DJ2e96dnU$g`wC8hd3Q>?8f%UHBIu-kvYkhSO~w#I+(8+2*XwhsSs-c68aQ7Uz&{8$(tdt(TZ@eL!K@-B7CtjeSzA&fduE#HG%Z{57?UQAKy;vtESieFl$AUj2%TK9OtPQzB=(?)7_)y?;M{Oc4wQh?Facnd2$bLeQ?+B6N@M7ZII^8KXd{L*~gUX+qhJ@&~h@Bp*MCd;qK$AMj=gIaX@IMJ%uB&HG~x1fJ#qJ8%th&V;g6du(OHDF)V6YWE1wK1!Y6(xE(rH*fw$n34{~iEqIO3;&5*AZfo*|XS4;rSly}J>Uxm|M;dSWg!Fn(jbE%pbU97gNBCEYM!Ae1ql_~Ss(rQIyulSyL9!tHPz`$i$-V;+5jAvMb_IOcRnNe#bDQ9I6*;UDLUEqvcHud1l5EJ6<<7)PL84F>(+=B5ge{T?!Rw~TG@o##;!Hx=I&_#PIl%jD>mA@vT&H(lTr($YOQZYr77wwuN)tsqwxhj%0Pe;|cgFcKsc-bO_>gjEb#8r`F$i}#E)lN-rE<#^3rkarA|jyZN<_|zJ4;|FcsW>*b_Lr6rwRR6>?9h@(PwP#p3<6_aHLz1aH>UK1p1s&?L<4~f%6h-&5h?!t6=k(zHFF9WoA{g-_~#RLeG$}x$1ehsd+yFxR(8QKb>n-?4NIoQaaJu?p7cl<}I84VNUMqPe@b_?p|*SdRtutwvfLRCc|Ogj333!MxzE19;HY}HLSyFN?4ut$$ejjbHx9>_CEe^3*cqK1qg@AuPSgDi`!`t=E>F$&JP5$iyBA6YV-+|R%Y!K5wtCNO_F2ftgL2)-~G-Xs>V3dhXNCZ$+EI5_Oe&fI2(~zD9)G9|Ap=|(a>KbtvOyN84M0k?)NxRdnWvSrrjRbbTd3EA3m}^Vk?mp>z@;}mTmeVkf=(tIr8nJT?`6_<1H`!w|(Q`a_Dr|-wfn<^$Gl-teh1#n6sLVI6)M__gl>EJMeV*9(E4TPEx;yZ;PtwnFC+y~4Ed~%LW}_J^shH5B%)bR+ww9*a#hot+gwA51q^lTWSthj=Q-d6l`&RO!XKbSa9UFyokF^ZUtx{P1))C;wFL38D)48%r!tYiR$nfsq*MWr|GvDHkOWjpgxem1M_uyjjvbvp-h((5qRRg~uFdF60OI*x=T*lObkX#1-fEfq=rqF+Gx`5&uLO!z+xoywM$q;;xFEH+{wj`#n=XF^L8$#;TO#z6{nxRom53Mus2Bk`+741_eKa>;+lX-p!QKA0F@y{xt$k33u>Y^f~qS0;|WIA!6JfpkY%g1UBqoV}5(d#q>9>w~0J67vVzN14-;Te!PjYiK##`mEkEGYf1dFNY+%s)Ha|p&3Cknhr=_a}Vg|i*T0yyS}EnvgBiB9w@^FswnRmXh>SjKWwA_8pGN4SDrfYU!O)BJ!ymfrCLFrN^Q=)RuEJ%F@}VVAQ%eIhByG`edH?DzcFfX%%9x9Ag@mZD+c)!X`09Y{N7#Rekgl^sNA@vbiS`dPZ!nGqT4F+6%^P~@0Q1c%Tlw|zOS&(&xI8k6Y3zk!$f#;r!Q8V=#=#b*^*n_qL^meig)Y=X6-7eaFj!^}P6Z8tep#64}3vMC!+>LZfewV|cu(EJ(8PcKx4-yrlmYqt;XxI-S0z-aL^7E#9gs`%F*$SBL2WX;j9e#bR!7iNi@!-S^<~et<MB$Vkmud`~;ZQSecg5c3T-op!)3-D1HYbOg9;yrD#HR7zFQJzdxD#e|MRG(H3Luy3+me_)|iUd!&8A2(M#lNW|%Ep^NpKG>;IRFcQ!)DXBHwUX_y|GER&v&i@SDw_HbltO;#an*nlqgeQX8B!k$sg{UVb9jInX|#nmP@XdDzTQoz`+KfR#40eh^iNQE|Kz|A^BOCuCu@8r??Q|66gseVtC=SDoS7s;ckM>|u9I+=O4)*3;+_pib2fF5xv78mEiCUE8gg1YrxxwzGIeZRhcWkr~tXoLO<@=vv^9)64+hSf-(+a7R>)85fN@aCe12!z3WhDQ}dw|v4AQ_tBXeN+P(L&kLkpVNrw5X6H8~PvZDF?J}?<4J5klC0mWzFb_))DjxkZ$UmE=RTBE@LZIGO*{nL_z`j2znt3n2?@kGt^W(ppnAF*@ira#*Dn!qnPd{`8w-EBGZRck&HN?Ei0h4QX)=m^z)CE@%|PzB{*wxIVm6EIWsP3dnHE}s&^=;;0;{!;aHS;9`}`VbyBW?A7nyh3`A9snN-O-z`ys*>$gNojA^GkABY(tkQMX*=eG-HZ7iI>K5tb$UwwpmUsilB(&pG)p^ht?%5F5GQCukHtE&Ee1L>q#?nyOpcYz&HeYd8JljiFQi2G(}B2%onY#VEvI|P{brF;ZqvpfC?5(C6SkOYYrh9@@WK0!-X(_8}Uggow^qm?8Ublv1J#)|>E0RS>oZT!s)5FdWt`5v8lX$y!3@agL{0}NyoB4qWRF<3H-eO#i)Z*9Si6l(OVTAy-o5cOuk95CHcKME5`SxONNK-R2o!pL@-n)5J{Tv-U@(eY(hLNE5bkkVVU$sUBK^R+)o}$w@>b?#n44RXFvLcCae<_8KuvQzLHwe5O1;iXf1)l5joSrC%j62n6Ez4IuJ5YtiQ>sSn8TE|Oj9$l<^qnfbJvgfoKeC3h4EmJZ0%Q$HZ@`?0n_`2kG5A|XX=)b(oo0kk9jq6}Og)3ClUG&Zd57Tg1c}nzxYzI@>A1743Hrr7md?%P!PaCb2^WjPvskCv^%>5mHzrgl$ti(8%T~YMfX6jTTyCt@aXU|v!aS@9B%`FJ$%9LXqa|c>8{5YG`!p%;XYEs?J{P}UgF^AhOA&kc7XL%RDfQmT6XqAhobvsA{F?WSpLL}8MruX_Ta-W4#grjbenj3^y3;$}A0gu+@qUG-@>yGlYu)vqSnHFToUB131FMN=(!fr9gn{k|zGe&m(M9~J6r&i%hQ_$u#2znP(^kQ|N+mul<8_VVXMh+}Ku*HJjMEves<1Q!8Kf;)ZKhv)#mS{`|$^`Yqe05MFD@`Ag4*zijplNw(#0S&ht510q!cPV>HOb?29hsOlc~Fr>XWC};ef?F(4s2-Es`^-lpc>%58*$|>`3OP{)vk?BZB<{8SMmrDiZgOBr+=Qp&F7&_4_GO8*&*?{g62@$ty3(X2w4V)@OR?TN`5rvm{0NZ9>qSIDR--Fw_@m?>rQwk}X=OjKTw~i8Ow}ILwG=LQHvm<%IGRLJi3NmcS$Ri1dS*KlgC%Av?{%o;E+?uEb;hxr&*5nwI&`_1UXM87#p94PlJwM0Wf3sKcNTvxEqNbns~5Ac~oCn)^Q_vSC*+Bby57wwm4xd-8tX1;_(Rcd&C0+5AdQ`P32$zz8zqn7T7H*9U{~Xwj@-R*Jm|=3XB1s03dq7xWd1`CqblaczX^hd{fOtT2O-C(#jcLFiT!bP}6|Z6%Bb2%|+znm71ula_>>T=Hv?cpu2Q(%=6*&%i9lN|5cui1F827I@QmEwlTyWNs@yRS+_b#h#$L42e&!M%6hInT`;{mNIjygKh(ir)l>K=V>+~NJSM9yB0RX8#Qrb?$NS-k`j$X+S^q-gUKU-Vbl_4m`D%Rz%{m=pk$vu%E*EuHXpvxh^n#Wq-6cf!0{m|_76zy_=nnRAP6DU%!Fe0td%l(EnNJbR^4=$``1~gs>5#Hv^&==uX+Z;FJ!pQAu0j&oIo+P)Y?fMkxGOxg@xw_CXzg^iAopem8rQi9Xn${2B$qQO9rv4d9w2#iQ?IT?-0<_+CO7M|8eBe);Dk2|8er49g-xBjCJNz^jJ2fz>NDiZ)CW&=oY2+MaZ%?fPyir7uh`{A|CcIFR(l!9h-WMuP3(X|W#GscwCyRmwYkHP3I8DUv#asI7Ygr9=QQ`}l9F`#w%hp_a$c1c-UsdVWGc}7Kf^4nOAAH3=W9hEX9SL4^okP8-u~w7z3W2)u~s~vU3s*wff>84>Zzo=)Z#efiB09q}?zjVQM(h`x)MDgqovkkcC8qd`Bx=hGMe<6Up4aX0`pk@f`INeF47z4Q-`uC}@%K2H6e0fZt?u+)Z%^kmpH24H)}j4m77#o`bceWnS1k6R`s&UG>T~(7ZEZ25-ina2tOPbFsjBaIJXbz5C+9(x*LKb;+RD)t)buocoo!=;*z6{VkSPy!VV965F&x)uN%5d+w`ShlE3F_;QB28e}d2w{qW4}m}%~^#*s+}SseO1;)U>a08kPPC8)980qs&~jb;A#3_@W4s5n|7L@0h&*vQKG_6_PzZlUkw335#*29$y*jXw3hYjE_p>!l@+U?v*K8*0&uFZWY9eu7KZ73>-|e-6opk_DE;u;MFiLrH{rfQMpP%RwR)S}HVTRo&lv{zClVxie6`=bUk6wZt@cAtdPjZ?2atNj4}v$}w%fjB1{`c}PghUHW}W#{`S;U};mwV9@Z_Z$3~DPt%4u`VWM)-G_w?a{KEercf|hm##kLkdb=G%lKOc{?7l%wE}jFh!#I-JBSt$oO36g0xSzNgJ3S&KKL?1&?ehv#I+`78J)S#VsmgGWdZ1ZYr$>E_nClY7L;pwUORczXUh<8HrOssloA@<$A@o2XdcNQ@ggY6tiwk60_{KN-NpLy<2U-Hwo)egz698+{@etGT6Us`8255_$z^&lruu&A17&{5T^S9J#=V_LIFntW+x4EY)^xAf~M6ds8L;~pn-IwutE2*c|fN!0nx{j2{!xC0$#s%7qoGXcZ689r&OX}i!dHu9-og}ZN*nd5ollvk5}_(whSG2%AoAOk4rO<)Vw>a--8&o6I^$UCxNw)a9w|q?ghlyoRCt=YF^U;3Wa@W?ZWzLDZm4%cPWXB)$n=7{ltRGyyQC}=_I#Sn`#SjVnqOS9Pnbk{8T=<`d1aXy5C(ob6y1L>dIhb^d!z#maPNYTc1*qJk%e<$gudnf)GcBCS_ehgEd@rU+YSSORQ9vK>RgWW{<$Ci(Q3=GVE_)vQwJU3Y_p_4|X4`>R7SeoENj~Czj*yzd3^<)gC%GwK=nOCT+V1(CN}zP(@Fcv~Ayk!Gdh8$Iz_mRa;?!(L4PKAw-qYwyl5kq;0gsx9-PPC}hV6b^(RG7IcWEU06sS&CP`|34g8{I4IpG~D5K+@eX9ti8X(DTfeJR2-+*?Y-y+uH2}IQzHW@wTh^)6>Gq7y&)g2i_f<5idU!J@JR*BR5X0A`W#oNsB-tqW#0JXdk59(hZD3ArgJGK2Zx-?V(DdJx*dZARqV+GNGAmKKiPkkq?OKxS1#VQEPhoDu2hro57Bu>6jx&3A}>b)W#m6c0iIIZCEEhDtKf)fH^2OjPWE(uh;+I>f}nj&*8YUN$;dKg8H^7x>g-n|nfii>tq}TxuGM??p#i_UTg2+}%WrRTZGt?#i1eXyi)G)=}z;`9;axkP9kp&?ocrY3H(|H~SNHnt3=g}(}Q%9m6xe%tfvpTS9u8sxsYI<7cdX}*AKV`HbCM%qw>ES=huXgdOB*ew^G2pu3VV66WUy40h>j$6rNUOz<&Bq+qiDTX9`RkH#{eECeO~!M|P00Bl=7b+ARM%}}U>$kQI7NK?W@~zc<%5}13mHmwiA|(%JXQ7f~4Y(qg_CLd{UM((M0)bu>{>syc{^5<|W!cR;U+Ibf2?UZvtaZyq(4`K@565hAX3r*-VBiW7$M9+4dv#Z8%F4$V1GoMh5S?$<$AF!3XdT{c8DUY_k59nBk3&3K`dM8om_mNVo>%hgPmq<%o?5(_>^KG&@v?Se|2*mTQ&N53Hxn2dJsbr5dj6A-f_+*nQI=c0Mdy&e8~j$5EPKKF+riw1CW4#hiLSUe!RCKgDXOV&H0}fw)eF@g)ROU{M}jUG2-CfQj5qLY>9E3)=9!Z(j%<}#S>J6rd~x-XF17^m@Gx;FVK2Usv{*RXl#>Ik9gYxYxye-A-tJKMVstLZ=L4ki{tz0S3AgZnG@=D}e=iM-d9Py*moF0E2mNgi)Jk|ZsL7SFcNLU)qi>RDANTddDqv(fr};cgGsxOL2@N4MK6n@k+g@YfS)AsM)EvxJ$q&Z(m@ElOVS}63QAQC0+@ZI6`J|uVTvB+Dut)RfcUrm(VXAiSM+GN~S8R{)1b;OdpG2*^sgI`dxXe-5RcSwk9eq0>otrH?Q|v$4p8Eup?6u@QYO32xW!sjr{eFA;F!l2Bl1F)>n(_((L9sxz=wNn|0oYT1K>LsZ8(q(wKmKp*hAs$90D#6>?f)TivJoN+fyEd~vNMe<83s1`IZYAKN-7;zY@inJH1I*zNxSJvvxr8WIgIn@C*U?;yEFzq(lY)K;WE<3PXkGizd4En(yXXuYmC59e?fq_*E)#4UeUlhbWmk$Jq3w$Ubv*{G90)2^TKsLX)xr#}?E;)F<}%AIKq(`xC!2Tr8o#oi-81iQ$sTdj7+?2GTw0zJy+N24bZxOb+-YD8ECF=gOhguH>=mvR=2mLpJFZt+y{T^zvMxftnyEdN5Q;i(Ffj{v5O7N4hl8%u4THlv1f4nmnmg*Kvj;i+4xdzi(H0PxrCb&?k>GbE!KGR^C|z0Qlp*Kd9)s&5yl(=EVk>Mbw|LAKrAO0X9y&h&*SZFpYHSW=xungNek3LZ?V(W_%*eNviEikOpJs3$5&~ylWt-_m)Y=J{fZEr#RSrSuvjY06~=iI1}-cPVgD1MGJDx~IYKTh`@;ZE(o%faa-IRDg8U7Ki1^c$38j9H<4e6;_tv)a2qE~dAaV$OZjnwuyQX*jCIN$|ldRoC2;sd`G2RE5UZ-~I&4Yyg$NVHRye2*;WCEHON}_p1+SkGT2gxIJgTUK$o>Ru$h3`=s-vN2S>*RTX0NgWUznT|o^fEbnYpTy|N!UqM!yW#`S^Jsy8%u&>S|_lVeAQ<26**K%2GO}RkmIiXxuMPCiYV%)C+5Od!y0Ir|ttLByQ^WjeavLzy1IP#+EH|4463p{~pw2o6`?>8BfxgatEkm&J@83fH8r!wS8$pA8`W6=wv&I>{vJ#JmJrc`g_In^_n6y4l_m(m@lOQL&r-?m3-y$StixtXe3;>9{*5g3r&E4W*=wn!Zkf)L_!9EoQP{=rT%pKZJcAp>?=W#+Wq{JvN(Jm1bG*UiZ!qNZO{o&f_g_L2d+_kH4jM@iW~91I5lbx^nXYxhA*kYVG5}msrgBmMzlU*+cwbV9E}q(OG}eKUiHo_I_(Al8>A|_+HF6@IK>$n1cqRl01uAIrW{MtNaEmv!_>O@+oG6wTHr+zCSVLIy4Yb2E>F8Fg>M0%x?tTPJkgX2rym&mr+BqZdwe?i;E;2|1SnB9T3NJ&gsTtKMFt%#yr!_s%e(*b#@wr;?v;@{vXC(;+nB7cl0%yfpc99=U1rw+wg6d@8)!2UH{9?$x1@e<7Oysdppq>iZ}$tZ906C@X*=hG0Us^#xA8|FQwyP^!oFX!k!Gcw4Vhlgh@J{8QDNr`5uD5T0vwiy6Di5-~0Wi-(y;0ga!H2B6(+cHgwO{p6oI|69}UdRpCOfs&yueH4~uLE8wW;rB_Mv2;LsA{2+Z$qpg%47o@+shJ%R^B&QHpo>`XeOhXRI8xi4)Eb*eJAM2DD>wRJH8y^p+=(*Cqlo*{gLXSSJ6p)2l@@|J!%ZA(f>tUo-;8R*mLb5>-WA#gj1eXx^kk7sBAe#}rpxo=G^et|@x!tH-`zP|Pd8|%Zhtll#Xin62Zo8T3t}t=}!;A|bKu5J$E;Urs$?cTXv1}3zJ?JO=q>kh61+Q?)bnAhc3Uz-pn=aZ@9t-L8DAaz?8Lxwmr>}pCrl(1?SQ}s$-7L$bg?{;&G2@4qnjrp~s|23sZiUt1Kyc-g*|J>O9OvsPR8gYY8}HzszmT}z9z%^+SPBl9hA`X>pD7&NrD=fiXLW)zU4&)_5IpJ(n8ThB!67O~bkg4#jG*ST`P5H*1c1c&lNp<97v79VXYu!k@HjPd6I2WWqX^_3tLFpvGr+*p{mkV9$;p!pSlH&aEn*)t8I4M$K7sx?YAenDP8ybW?qH!2kMYLW=R5p$76Qp21n@5vfIj5?V`3i3nJu2llV+H`{G-o;+nk=jN`i8mGiBDU@p_a^?{7r#yg5bc=5~XUo-nIoZ`eNI<*h6T%q~U2{1_L4#6vilLUhW#;-but&`-I%w@F*-8kNIFiuuOnAkN~@6dbYR`I2S25(@uSrmua!?;qi;wJY@^X$PgGDDnkg8`PTZdDm0U9@r<0Y4AU7Xkw2*os;R>`oqIx0O3M(rKNk)x|q80g4)P$DnCQ5sK3BLEd;*um+V+TAexLY&iXJyTwr71fm*VV9*CmHqh`%9SPg)nB9SW2csiEvA!d-3k33qXpu=KTFoB;IdMoYWMBJFDdA%!*4lTKtJG!4f<*D|&f|2%v07RFC9DS&QpjF>|5N0A=7@r>9yco+_jjx(!%Oby|>FbMci~E>ecn@mh%7NnVTOZ7hN7%s!u8Wh{CPy#|)S;IbfC?UTS4^-SbJDiTu@}@Xo^?f+d=9>%lBy+`UKJ;w)B~PNY4j&U{~WQ36e>NXB;ss@RIA~<{ZV$o*1bv$&gIdgo)k*>3;V)++b?H`fnET}1L)7xkdY&M6ZYDt2*4boTm-Qlc|@wV)*^zK2U4VissCs=Ry}n*V*to&0PaLxzc`Qaj)XM(-0ZbJK{BQ{>$?K$f%$paP2rNuAXk!RZXqOWL2WU-fKjd)i62JiUpm^Uav|4I)U=W4L?Ll?AWS`C99(wI+wc4m0AV20#2J5du@3b6=7(D#2qj^kssR-iqR)+Umv%ME=T0qC(-*v%)5E)gDis(R^Og<6pu!OpA!BwhP{%Z;TOaL}z={+wB(pKj5@noYD5DL6(HM0i*#@ben{h37vN|UWx}+GSd>M%#j5VQ6xf43?~IXb}v5VLD)G7AUZyRFONTSV_;4WG40JAz&)M>7;lP$6QR@f^TkMA!3(-(e{%E+2Ph2dIVQ5gg#ly7tS~=HBwB`Q*>E}J?%X}i4s`>vd}J&bOSpPlhhzUMUyr5Z+t9Ob10mzMwj(rSF>k&1+fL-?l~nXRP^-YPS_cX)(62OJ>mU=A0o_g=txY+6wT^ZJV|F!&P7%Gn>vFpRu~-TgXhJ(N_O2bw^G#Z>EnH};iZU5y)x0Uf7Djx09ArjP$TUiZuUT1uN~sGtJIzA3IFz(c-qs(?KnHXl}u4?F{pn;gngc6B%zZy+egP&2BWheawgwT=pI*Pr$_P#$g)^{jjV-1l*$(sYkm-vSx@4<_hV|Bq-h{ng^P&ybese?HPtYtpb$9Om480%K_$O$-{|Jq(?>Q$;p0N!cS<(`LGB%SCzheD~BirS)c021`W}GVO$37VL)D(T^6_g)k?2LMY)bB0fzz9`fPlbw=+p(^{7D>)L(C)%Rf{6GIxoU$waeI@s3(D3qgN)xHfaN{RXz?=-Re}9D&|gt7+9=>1pjsRQu|c@~su3)T%_7b{HqNCE6HmKs!zC)t6Q6d)pr8F|>@z6)a&7NEfo+(3){aX<7s|`Ym=chnkN7dko!~tjmg#dQ0dU`8>3m`1a3Iaa1~;;*lCTWGs{g=qlGBmvS9ZSbc4%;OS>0ZEmI>n^ot9uDI`sQhvXe$#cFB)$dgV{kL~Z6K2=Ti&XTe@lBIfCXi+S*;U?oESa)PlAiBcs*|${>US^ybRound3fj|BpChj!B+RMmx#UHT%Ks^nRQd1Y>TM@#>+Ey^*W=X?9x@8;6-=VbbPrlCC1;NKHgPKeBt#Uw1pb627Sh)S5IrE#Er3au!RZ2O1*im;s0H0#lRE^`o0uAEsV66X5JQjkgPy-V)tMZN{hx=){5qY_%h^yVC=);ED&9Fo)V^LnSO$3+>WcW$$`F@f*%QPCxR?hyO=7mi8pc>u{V9-f1r_K;`I5TvpDEcu6q4VUmxbFOlsDl%n@t1LB&qaey=~G6yz#u{2YKp+8rGC?$R_}@**|pRKtHqRsxL3b)B8S&hB(aB*AWDQA3bqgJEg3Yl#QS2+f)VY=d66KscO=Ac3W@ZpxhcgpJEzlEtnQ3y1eQasXZToqn&@b0+GZ=!$5vnJwT*;3{6KRV=kzfBo|;*CIeM5xK^F*|IjMEbd~^|K$>K3dM+0ydse7ic%&^u;ye0boaFtj?P4T8nA*Up0Pj_oBPki*tg)e3>hFR|lH|NEL-_M9;-Pq>%p?sXF3SAi8)<=JN8yb;HI+G8)ORxaX=xsJ(sD*ai;O}Ws2yYR1@89ArtETT~tAX}6U#Kg|l^yu39J$kJifwQ^4nR>;sBPVSXu1Hd+ux`>BLTByq+(FwD$%N_oe()K-_70~ARClHhM*H9pXxuw_=Zo1wmU1@WyLO9ew3?TE9ZQe8JpBzAakXzR(F60iPZTdQZWS?LnY<8GoBdw4ZcK}c4_ydIeO2e_%(%)#U{{=_K`3(HLWqe}lhehYI}mqprOpGOCX@WgLXQB(e$Z9D5SPAIkRiS#F1O!#}B99VxwfuBj-l2UetzVL%B)?|Ql1Z9kMVMNR_&}o@l*p!?_75uINk}YUsIxs=T>8_Qdne5sd4{CjMJl)&z>@6IzG!g5^h<7p@e$fL#B0YSY+Hqz=#ad|9@j`BhdS3~<(Ww+&3p>XD;G7hR-LQAdtF88`Y;u}ypaZ@qDB+&rJcjj(f*XVc1PAZ(6;Q_Wjk!gDL~NM4S7JRiV*GT9we+-%NA40Nvzy{=`Q3C&LBS6ttj=yjW_L&Om>|fx>KfRdh_0KEZ;DX-|(g#k+2A6N>Aw8$x(K8buICPjyib>zL(Zjk_O|GO5ttBHUhE+0*ID8=mdNd4jOU1_7D#jd}%;O>!}Th+AzAPhtY8o{xOMuvj+RtzQsB*v|!4XWup85yS&(r0_o{WCWg9${pdwd_}r3jphpuP6UY~-6n3f&9H9$ki&vFp^}7e(I`yt#QHq-nRV+jZ;-eQIQK)OL;hakIC42k=zOvLNh9UbdJqSePJp6tRn}jRPMFq|c)%OxJ=ZXBIy;WkS3#n(DUEl|ERu=OAq`n82-I{QhEJCHy_7I~#ta|rAF~LP#Nl~D@dEUdXoG}Or5Ypq8uv{zngHhx`#YXWoFABe7!H}