From 3cd170d11e1571502e1485701c17eeb5fd0793ac Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 5 Dec 2019 21:45:41 +0100 Subject: [PATCH] initial optimized LOAD loop for JiffyDOS protocol --- CONFIG.md | 4 +- STATUS.md | 3 +- bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_mega65.rom | Bin 8192 -> 8192 bytes bin/basic_testing.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_mega65.rom | Bin 8192 -> 8192 bytes bin/kernal_testing.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes c64/kernal/iec/load_iec.s | 24 +++++- c64/kernal/iec_fast/load_jiffydos.s | 117 ++++++++++++++++++++++++++++ 12 files changed, 143 insertions(+), 5 deletions(-) create mode 100644 c64/kernal/iec_fast/load_jiffydos.s diff --git a/CONFIG.md b/CONFIG.md index 06cc3736..0572f73d 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -105,9 +105,9 @@ Needs over 1000 bytes in KERNAL segment. If unsure - enable. ### `CONFIG_IEC_JIFFYDOS` -Adds support for JiffyDOS pprotocol to the IEC bus (note, that it currentlyy lacks the optimized LOAD loop, so it will be slower than original JiffyDOS enabled Kernal ROMs). +Adds support for JiffyDOS fast protocol to the IEC bus. -Needs over 320 bytes in KERNAL segment. If unsure - enable. +Needs about 420 bytes in KERNAL segment. If unsure - enable. ### `CONFIG_TAPE_TURBO` diff --git a/STATUS.md b/STATUS.md index 99605adb..fdda84ef 100644 --- a/STATUS.md +++ b/STATUS.md @@ -8,11 +8,12 @@ Here are the features of the Open ROMs not found in the original ROMs from the 8 * pre-defined function keys * uses RAM under ROM and I/O: 61438 bytes free * cold/warm start silences multiple SID chips - all $D4xx and $D5xx addresses, configured addresses -* wark start due to BRK prints out the instruction address +* warm start due to BRK prints out the instruction address * extended `LOAD` command * start/end addresses are displayed, in the Final cartridge style * command with just the file name tries to use the last device if it's number seems sane; otherwise uses 8 * secondary address over 255 is considered a start address +* JiffyDOS protocol support * turbo tape load support (as device 7 or using `←L`) * DOS wedge (direct mode only) - `@`, `@`, `@$`, `@$`, `@` diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index a20878cb34d096738e804d0f4ebb2490050232c5..ebdb04d894f151bb2c91f2c443d7aee4f9e8c72f 100644 GIT binary patch delta 168 zcmZp0XmFU|p(*lirM<$X{~4B_s!lI&cJAmyqYHq4CtlasiEfxOAvxu1flc|1BG k>I{!1h+^k80a3QRZH)YzkMPbCWHg-|FJBK5dmyg>07Vu-!vFvP delta 168 zcmZp0XmFU|q51RMN_&M%|1(x8%wMZe_HL0PkX~wa^8W{(Me<jFJH#R@y6E`k%2%Vg6c$pWhZKg6Mz`3IUt1vCU;<`uS~g zDMt`c@d*xNM#g~2e>io4q!yPIkWA$=1xn23Qe)&tGiCAxZV8~&OYU1B6E+{^ohis@ OIyqjx9;oZSydnTFmo>To delta 131 zcmZp0XmHqYh=p3_y5h52h0_Iy~R2%@)tP}sit8rxh(rad1f zmvRIF6`$ZRW@Owx`46WqkksO`0+Oj*ra+0=TxyK`Xr@fQz%2okddYnYWWwg7yfXzE PO(w_7*8_FkmsbP;KW;gJ diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index 4d05189a9c10dc69bd908f7efc8718d552c24e63..fee95438de1c75f133e367dfb52797f163fc1edd 100644 GIT binary patch delta 83 zcmZp0XmHrz$HMaDjZeemAQl~_mv1&Vu$*CHdiQ3sAA2~EJ9#;~0oSc}OE)OodZz&7 hK4f~)j$nAidP;_5NxtbWgsFjoK`mg delta 182 zcmZp0XmFU|q3QO1rM<$X{~46LM9t&T0a0goEI|}IuL+2<HXur zbHC0#_nhDPomZGsnB%<78FH!UM7b2j%H$sR{MTN;B%j zF6})UR*B2y%D%l`N$)=8HMxK9H3=R3kGAN(e?OMOPZhH`f1raOgx;wu>MZU?&nN7i zwcP@;dhv3Sq)ppi6hyVMYd`A|q;S;h!xsm&4=i?chB`U4T^S1aRX>>>p`Ur`^sJM>bp$;hcK*>^FP5d}(EBJp zG-b%!A!WZ_nUy%vE||?&*Dp92%eR8~t(4P#i(e&vC#9;cCbz;@#Ma7=kfp})@w8j< zCm}%~w__97H3Q^H?7GNmxM%{k`>@|nKGQ8UrqEKR*Of|3Uzc2q>1&!^N#9V)CS;Op zx9uI3PpK&lG5z>#BV6B;zV>CslM=Q}SAE8&BJ>wB+d$aUXq8FqDg>u$8s%|&gF zIi)9AvHjLD*7@lS2UmK6ZO$nRcO9eTcM(U}EFYl}@dXf<1&V_pF3%hqB`#hiE)S-r zdK^2ZUN1om>_)W82XRop=zFdd%@3^$_4toihpo%JKt9@`CyY zfXd=Cl_pW5sO_dSgB0tHnh0`1zd*BrwCcZ1IWi!28uz4GI?;tO41;cMCuQ3^LF`w$ z%YQI@&XIjHqhlOV_-+WT@j{NELo)Q_^O-p@OayO4X&KoN)-KCEWmcNG;Nvv|Vi^r{ zL>UEqQ#OeeG%Ook7&QwGOrM@l|Gt#z100l=D_Q3#l!m7PHaLn8_-(&xsAVZ@%f(sn z8V@URj*uXh36Om%I^I>%Y;*JqBf1-U>|Qp`kE9oXVG)WB8kUAHkh17RU6YLV`0;LX zIeLC%gHcLnOO29ZoG&_V-YQ>z1-ARdDx~*8^0EWsSyjT%WRk)!Og=-wk>Fb4xT(?< zaTxu16df2vYh|=$G!0bl;Efp**9r`@=6a)mn&g)Qye(L1vR6_=2_!da4dJ8IT!)qg@WG&RJ=!>m z!Y06NJckcbu)~OJN3G0_D>SC*o0~VT7$r?M#D0|z|BWj4&xl|6%jqCSw0DY~=|PJU zMf(*R2Z#emYzvAm0G%oU?r?G7e^8+>^KQFO@bG2f9)Ysi0)(*r1z8=FtkDx8X3huT z2k=IwY>NS_7V*&?(g->fMERpARavp=9E=H^r7n({_nNE;s%R)t_nC2vA9xq#6L-u! zL;S#$0x9zIL z;f=v&2ImIsmCXjYd3{j4TD6T8zpmQJims~t?9HM|NMQw+SmOtv{LI80i(N?oe1^tG zC0)KaJ6iMRLEwIm4zy+rA+2&|UO!$R602b5JwN`9U+m=L+PnEMu%#QN4cWV0Jq*u* zL{{lOFrtoeNJ4F&W3n`?4^51tD??TupK9#6aN`P~~&DA61qd9+h+nNec<0DI?pjg94IvA=2oPwz}LcdiC@4qN% z`)zpZhXe8+ z8b%w)bM4$E`2#1JUK^{Fl-DKqLpoJb=0QnGo+>GkYDw9%x(>fdP8iEm4#~CmKv%h3 z+bQw(ZkpNN4cCbOQqvQZzLhXHaf7eUfy(ay`2sDTw+uM~mSHGp>AHIN7IHA*x0-6w zm5{dFJbD=3RThpG%kV`zl+3f~B%N48IW#&f+CQ||o#Bv?xKm}WJ$|%$%4GFCRQM%6Pt=Dg5 zXCUbXp-FkLv?=+RQdWDClU4vc(m{ce57Z!D0^o>^7`p3<)S^h|_*=FN*n+tb$St<{ z%6&^xj0TlM6eih2Hl@r-oM!!FqqdOBTsmO5G$3E#eo6{c;?oQ=PMyT`G5%}-pPaze zGXBzs*#V$md~^_(1n>hHuaxmS=CS$vB7KYwJ`$2ET4S% H6ZiDLfZ0&n delta 2762 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 delta 2022 zcmZ8ieQZ-f+>R3X2dsxZSB}!QF`%8jq^|^S5oaLFxV%4wB;dsO4YQ*MNKmdBa_Z#Ze}$cvG}Xt@hS9+ zujGFUbMmY(-`CFgt+C{{_?wmWyU>;#x?o6yX4-AJ(6VyckOmYMT{7U(60y8C6Cal; zXvxGs0b3?MMoew9@egEv`HsV|JrhrYbY18-#c?U2*rXw$Um6yU!|f%g)#8VtcPV}l zPAy6O{u-rZPY}+03;&&ucRU=5NuB;i^$T$3mUI6&XF6C-t3vak5URS)+dEP5v^1(T zUigq}kUmz{LfF6`6mHpJRtRm+@H}PXT;L0A+7s*w!h!5g7*#t9VN4}o*q4QIRkSKr zsaIuTbw-MA6{7J%h-J~U)6kQJm(%8%m(wZki|t~rkGjIyQi>j6QMZmd@Ncd4t~d2| zY9i66w_7hIPU`p36N;Tw(Vf6aYhB$1^%gM%rFnI8BnQ+@(VARP$@%0hwUnM1$*JzM zIi)sYy}W=OHn%T-TwNnK3g`Jgdct28VJ~MiwV;jD`2?*Ca|w$s%qJG{Gd909uA#_{ z#4-H3t=Z9}k#=CFrGsEnL) z(d1GzmXm>qh+FjWVs0Nb!J8Gznlg~(BSmf8A`hi${CjSrEo|(JMvfkl@E`}4S`F2t z@uLne)1=`S9hFaBQ_X6Rs-lDV)^TMiMT2RB;6U&pJEB#lf^bdEZyKRr1tadfTGW<5 z7eYe>q5nV(CmmjEz63!HPdWnYCyhPul15&BKuhdk)UxIJgqKEGl|_3^o6sFP7IN`K zppS6lii+U>xj2_y#xp-~Ifx#bF&)NCa*}-#KV{ef9hfD_;yx0U81X+=)b0vr2#daB z%o?+g31e=_w8@w$lQCD9O_${tml>lFdPH4tNFx-M`1%F`sas}+gFN0`Uh>SO5$#gBwnP(i{%wUt?-^$)v~4!pb+(Ay zd(e>H?rvhF!R{T5l<0nixwyNF1k2a(=Q+|MKX_oH5S4R6FS>oQr@Wjlo-}8}^Jc%* z;dd$mu5($qtOcd0zbuv<$t!B`=zbW*Y~?0v2cgLo7{`xQcCQQ@yN|!oA3H@0!>1@= zsQCdF?!>}#m1|eEXd%@Z6qyJEB~u|X5A@IotysiIp#?u!B{78H6IGsyox3A%91+Cr zJbCSB!np80+G^lw&g&V?qTi&Y!4XDbR>E)BiXvZY5rZL zeML)>ZN2iQs<0_#&TItu#vpi_01xAPocGZk_&Mh`>mlv>e&o<`%(=#UTPHOqDDdV` zvF!x%bke@0iC@q9$Xxi^dC%Ri>Y-z>aTZM)`|JDtssqB_n>XyPM|B&Ys8 z!PPsz2b93&?m*$k?H!Cfg@58+cNgjRCdSUgnHd87Ui=sLy?Dan!~O0Tn7sxrTG?SQ zO&=XsS@UNku57@oSFNWn;-^>nEd*D%hIg%cup+<`UYd`PX`wgNUa1i3VW_^ygf)D# zdISCW$!gCA+FWh(KK6aaf$RBLN3qMr@Whp~S5E_xdDT6Qx|G5S{F%A808tq*~8`H?H zBW9YE5xq8p+GbHe!-F-eYcunxD&6d3o9o!-b!04L(2$CXrXmv}#Z#1LadJUh{2w{B B=-L1P diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index 2ad0274c7fb17b286f8f0fb65ec2b87f8b52a925..316e81590c0694e574be99f131187b052096511c 100644 GIT binary patch delta 2346 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 delta 2293 zcmZuzeNYtV8QjEg9vp^VlF2%X(qIJi4(<@)SFI{BkF zJJ0*u_kExD<9U9+XU|jVsjOS&+Ni6qz^$0O8BU#pH+AJ1Y}t!}n3<{+#^Kp=NcF-- zz5Z7}LGVf$$aoVEwzc=PP}U-93zeNQNj{i7tKmszI92&_h-`y`^M@7k{4zz zu-=R#_-YVbCiyrdk&PzJPD)Ncd^9WnWM;kKInppY?H6x%T|asBhcExz{O7&B_iqco z{#wVMVT3{h_|t>I(Fi@2SUzVm%z9Q17s)+j$1v-0?nDG7PpFZ&yl|wLEAX zw4QN0YzcyI2GI9s0ly_kkIee*vJ1Kzlh3Gc$v!v`^b2G(C`nwU$8-6z$3xb{h$GBe zVbCDeF}DS1EZezvz3K193;1tgk7oG)rb^S^S79{hZ-a|N@_EZ#U@ck_yCR=wSLF*Z zJO$ml{}gzp{3qb^DR$mfsHGmP0woA~*nh;`%<5c~W*<0W(;L1Nv*z2aUd<-C-Q?LJ zM&pPE>}ACjhRS*89p`S>ice}owFzDi>pIa$En6%KQ zP=8W|gB^z~!!H0o#7@K!nb0M;Px<7x=1zv8%Y;^gjE+jM&B|C|IQfB*km+y)RtVi*c|{f(y_k-Po#M{^GkG4 z68h6jGqqEULgy&Dkv|T%EijwgvP>FDuCRSUm#3_-X_wq7AMn(h@-DrfnzRA0nnrHL zR6ygMs}xDFc7VJy3>gD%ojc2$yi!dn4AzQ#5!9H(>Li$9#VgjWkEK=oz&j~MTzhf< zBz7iXGZTu)(P$AVpY-*%+~Y(+tu9udm+wditBzH{9vxbBv}ARVrlh~Hw~94r_Q3|H zTmD3H!a8HHft)i~mzK$HYH4`D8}d!~B7!lxVeO0Ah-)OdQubNQBnN`cn5KiMBK1L> zX0XEm%$BuRQVkr4!j34^=um|RS{)4J)nx=K>(T?;{K8I;6!7>dOV6IOIOuMI zj2kw%o7~Nq#a8-t`s(b;C?q_^z=;C+Q4rU1lH>H*jGyNGKB~m9dy#1G)FMSVW-U(- zXOzxcXOP7v66Sy8FuxVg4uke(lq1J-#FYZnhvXrUvICyZ8R7V=pJ-JY5A9NrIa`NoKn89!169tl>4VRsbX zvqluV%2h!P{WKH!-BJ42%zV2=Z(=j(!^{;KE-R!P##(mpW(LNWF3eiK_B(x!X$7ce zKrjWe+L|YyAZ241CNe+#-JAgFH^621i*Smy(5G21N>~gAtYYv0WxH?8e^1>$9SseY z@3Zoa>W{Z@Y0Aqf*Wh!0=KZTF%|xdOJ?^RgzdCg&p&urOpk~}F!pq}y zS*~NDJdUXT+PX%$5%3IS_}2WWQ4>huG3j}XL~H{xPT$KdDkbC3wXrtT#e}59yaMbR zuhpJ(Y7+>QWONJg=A@T<)TSBu(y4_d`q}J)l+h5RThT8Yy3{_q#Kxx^G@7${cDFur zNV4pS>N$Rovx@cGbAE>(i@rGp^vB||#HuG)%4v&O`NjeL>|IPoqkgtW6MemAX?rg+ zgWZW2dqlpT>vzoD+K!9ewe{T{7elr6p^oc!v>*;OsZihD-h;G4kyW@NF8uj;a9;OuxW|PJ64(ei{oY6VH$B1ZP^yBLAKS+f)A&#g-sUE z6uV|;XG{UU3^Lya+2@~y{3Gpg{h{V@&K|u}?AsidjhNJ_MN2G6p=xU4b>Sn!qUdMY zi@z`XMn;Oc{=-~1gJCoHDEd*}$SnlzgKrZrq$AoCc8-U2AAFccSt1dF2GOko!=PV78E zbJapuEOb)5p_JehBE%41!T%oUT3lF`cR_D?pASgdEbFs*dMt6eYT?HQtHU1(i$!J- zehAA4**8WsgJ8Z3=P#%Yk)!&qB4O7eVOOz0YE80LCn*Eozbl-?aVw@C{zn-3FBddo A2><{9 diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 29bd3da43d16888aaeaef217240caf63fd36a7a1..97670f04b4222293176aeeef0c36b98a38994ea3 100644 GIT binary patch delta 2669 zcmZ8j4^R}>8QB~7NO%rw)rY2%sEPBWQy zm^K;Ex)dFcfR9cAOM4!-l%+*3%{1mT*PsUC(b%q@5QyApZH_ZGvJVh$`FGcE5A1Y$ zbMy9l-}}Dz=eOVQ_qMX6vc&&)&N4wIKboNE)(9Ek?w4)ZxM$bK%?u+5_=e1!@MhkA zL|N1(-AEsxX$|;!wIT9qR51r@qR!wOQK!($-||``pWan6YN}Z5nd#-np!FM%g{%6J zRr7^g`vv5Q;`?!ulfJ&JOGB@zfx~P_P%=;>#b?ISZ;L*ZH|pn5w%!%+U*cq`$^507 zQ%hDiXV!6*Z`Chb{IAbzs!sjt>ra&*7GB)C|HVCqJtHHkIu5^k@KfV)jr=aXz$l(O z_I}j`fr$1^6?J15a?QB0uuqj4&#Fe|Mm0aZu&;n*aPZ2QY!JJk2JpQYx)t;8 zMSUtMFulY=Rh%&887#za`fde4wpQOeK=y@f&>@TJklmhl4a)oH_oe_oK0C5dz$o=Z z?<%Qm2IM4=E-i3+X9Qq9i^9ZaNX zMsN8U!JDjMhJ?jQ4*uj9)-{EUiMONtqGFj5Z-@hs14dZv$5yS}=V?77dG`tSgO#=H z!4L2O(q&y%NK~g(Pt%Ig%_)~YshM|t;$|X(%(&}xBFL4>LTM{8LMb^p;+*y2f50~yTc0Ct4s*4HWvzL@KV9RZq206L(}r{&8d8R zW$c8r!HG;NdP9X4M<_YTKb2*n!}WMSl^UTQfJqWRa6JlMQDT5*FY`Rfif0dPU4TKs||g59Cv5{Ks~JAZWmyshaK1x*=F04b$kk? z&FN5bI7VSQJH9i8zeh?kb6Hq*f97&0%nz%~j(9U6Yy)rYRpRK+8VXDyIszkJqs%yA z6RE*z*Q-uXcFMF=r{Y}r;wVT9gpWx}Slfe+ltG=X^>AA9?BZTh0rb2MefN6`hmUJr3@#n_HFQ~EX;G8jYb;}>^NlaFQlRlLd*xUI zP(**d_^r5I=&&me)@@f{A~4OYGTz~4-8HPdf^oZ94;T2o>Sl%lE$ZWjA;k=1*?&;U zg{6;Gu<94!*)2`d9iF7u7+kN%1#RkL!%!$mv%8YYI*)O1y{ecS>~C&T+i>=SYF;g} z_VPEnlGKD!`E;#ZB6bTMh9QU5!wv4GG_9J~guu6{I1%^`6(;L zm3pooXZ>4b&P{}6&n@i$Q4Sg5%v)yBhx&6|*CtgDrv-HXFsTE-3Q?W9kV@ zVTUH_js+HVPkEE6iZw!I=K~9LF8R*U<)DtWdf`X`5Xh7T8i}jM|0`?sp@L^qA;i~a zgapbK3wB}HqnI;>&nW4`UTh)XvS%4~lONd;i#{b6?CTy~tx4C!ap`*T{c6^Ja6o(@ zpr^+|rHZBP?Q0=KIqV^~((_r*3>mdotSV7k2f+8d+8S1PUq9X4(+}ZNpMC^#GJE|J zP^gGFAwLi&p)?%E_FyjQ&i(=W$rN#{SYPIwDu-&W%|MeQ@I=izYrRIrD78=y?Tkyl zXGEVr1L%pZ(>l*Vjv&UQ_VPFPrEuX*y^2<(s{_DNo{}tJ3|wXMiY+@4_~NsCJgTl##!^cJ{HL6omSjfJ?-~A^&W( zG7X{)hSv;fA(l>gn9qXB2y}XtNuhken`}b&RdR3DW_Ix?S-rZi2&8-AI{zBnalrr7 z2gH+Oy2RLGwJ8xRW6c6mMp7N}XifnOQX*x4&g!i|3kPsR zrxvwHoj@4rEQaQiZe7%^X8x+T2tqKI1pA_QjegG;=Gq@gT{rrrBWa{G*XdA3a9#q_ zySQl_pPa+5sJM(`HijR};Ui<%7Q=~2d~g(pqNFP~cg*qrvLo^;Q?9!>AsN^;j5t0`+EP416g z%tZqx3`dPiX&*`XQG4sSV;FPl8n2aYi$$%}rL{M@mcj|CZ3-x@H;+Y_T@d!ZvtV<% z$>z=Xec$_j-+aH{&-e4TuDq^1_!Va_)8!y4(@}*+2Dm#_kFTxRvUVNA2m-#YFbAcK zn@iNCo$___08MGdXSLSh*G5!ZchiWcd*6sh=;ObY(ueDQIGph|SNB#+R$Ao?lRv)mx6M!Ptr1@A_~y&6{#>EKGYQW)JesbLkoV2SE2Kmd zGbEs=qTx!_-g)|J7*P&)k(V54Lyo%cN z;5AUWCW2om!h*vK=(Zm0MyJQblg4mL4yji8ym(T+Af7_E=TT)$3;rD)o)5O8Q}gmk zw^Lnu(1Yr9bZ0vFmiM^a>@KG_P)=gu>`e&-`z?l6H3?oXUNt6@1!+sd>)nng$W_bQ zH5F80{P}In^+tYX(N{<|xp_4TIqU(9;qfu_?U?i%R6$9x^^Yu|?x3~ER7Zl=muexh z2aWR}vY!-_5!r|l+06yjpt55jG8MuII8Y6RP?B%-;k=(YeQ|LD^_v8XyK_l1<-4R2 zpew0!2m&gNHFMY&x7`G+HN4yEkyVN=T~?Qp2HRla2eWd-vD+m^&~NWynDma#3NaQ(Qj|$=Y$i?aLKGO^0Pu(f`gwRo~{3+ z;bXEaedR8N5wD8_uo;Ai*pEZ8y#fERBeJwzaO|#YW_N#zYiH#)DD>tD{PKj{OjDFJ zhk#?6M{c1h8_+W|Uc3-m(ga7;wrd2|;ca z$k}w~)^oGG?ykkx5`osn63bu}tHvC{2Ep6uMeaB@$3ehzF{|N*rnvAkGcJ5NdeGDA zL9c7*I}Jwc)QOvaazzatZNZ;WxeYx*p?BFaxg8|3pLds4>yT_nzhD?z_oB@+D1Qd+ z(~t?=Idvca*a;Od$8F_ez~}*7t>g2gJj2O?iyax+9@q>fUQNn?Kp)}L`&1pRiX-<7 z`h&3|Sroi}u|sTAF}bU)ij_ZV+sVqI zwi@%IFu}++O zw~^OM();-9Jqc<>NqhRBQZ8N+PMC(=>3(kTAC#sv@-ZRwPbyA@x~MoE3ewKcE>UOw zC1r*05G(gyd6NyUS2!OLvYuOB0K^!!K+LvLwBCrQbnMK^a4?H57N~`0kv)$XH#{sK(@@{1SzsWOwCzP8~`BkR~bAl??KV8?`4|lWtweiIyKX-K| zkk+s`rQ8*#0by+3}NQrh7pC;q^>)1-26cl`20;IWk&;JT;8^B7Epnn-P_`o#*l>o-6Vr>E{(~=Xi zs<4;^7nOw@)9)`;k1Q;;7j9zV+8it_C