From 165033d49a61a1cca4b7d8c7dc449e6650e64bd7 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 8 May 2022 12:03:24 -0700 Subject: [PATCH 1/5] updating logs --- src/integration_tests/nex_prism/definition.ts | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/integration_tests/nex_prism/definition.ts b/src/integration_tests/nex_prism/definition.ts index bc56621..d51ae35 100644 --- a/src/integration_tests/nex_prism/definition.ts +++ b/src/integration_tests/nex_prism/definition.ts @@ -328,7 +328,7 @@ async function claim_all_nexprism_rewards(lcd_client: LCDClient, sender: Wallet, address: sender.key.accAddress } }); - console.log("rewards \n\t", rewards_earned_resp); + console.log("\t", "rewards: ", rewards_earned_resp); try { @@ -343,7 +343,7 @@ async function claim_all_nexprism_rewards(lcd_client: LCDClient, sender: Wallet, }); return claim_rewards_result } catch (e) { - console.log("claim_all_nexprism_rewards error ", e); + console.log("\t", "claim_all_nexprism_rewards error ", e); return null; } } @@ -388,6 +388,7 @@ export async function simple_deposit( nex_prism_addrs_and_info.prism_market_info.prism_gov_addr, prism_bal / 2 ) + const xprism_bal = await get_token_balance( lcd_client, sender.key.accAddress, @@ -404,6 +405,7 @@ export async function simple_deposit( xprism_bal / 2 ) // console.log(`EVENTS: ${JSON.stringify(getContractEvents(x!))}`); + const xprism_bal_after_dep = await get_token_balance( lcd_client, sender.key.accAddress, @@ -458,17 +460,32 @@ export async function simple_deposit( ) // assert recieve correct amount of reward + console.log("checking and claim rewards"); + const prism_bal_before_claim_reward = await get_token_balance( + lcd_client, + sender.key.accAddress, + nex_prism_addrs_and_info.prism_market_info.prism_token_addr + ) + console.log("\t", `before nexprism reward claim: user has ${prism_bal_before_claim_reward} prism balance`); + const mins = 0.5; const millisecs = mins * 60 * 1000; - console.log("waiting for ", mins, " mins to accumulate rewards. \n\t edit the mins variable to change the wait times."); + console.log("\t", "waiting for ", mins, " mins to accumulate rewards. edit the mins variable to change the wait times."); await sleep(millisecs) - const claim_reward_res = await claim_all_nexprism_rewards( + + await claim_all_nexprism_rewards( lcd_client, sender, nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, nex_prism_addrs_and_info.nex_prism_info.nexprism_staking_addr ) - // console.log("claimed nexprism rewards", claim_reward_res); + + const prism_bal_after_claim_reward = await get_token_balance( + lcd_client, + sender.key.accAddress, + nex_prism_addrs_and_info.prism_market_info.prism_token_addr + ) + console.log("\t", `after nexprism reward claim: user has ${prism_bal_after_claim_reward} prism balance`); // unstake nexprism console.log("unstaking nexprism"); @@ -477,7 +494,7 @@ export async function simple_deposit( sender.key.accAddress, nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr ) - console.log("\t", `before unstake: ${before_unstake} nexprism balance`); + console.log("\t", `before unstake: user has ${before_unstake} nexprism balance`); assert(before_unstake == 0) await unstake_nexprism( lcd_client, @@ -492,7 +509,7 @@ export async function simple_deposit( nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr ) assert(after_unstake > 0) - console.log("\t", `after unstake: ${after_unstake} nexprism balance`); + console.log("\t", `after unstake: user has ${after_unstake} nexprism balance`); console.log(`=======================`); } From eaba904aa543c6899aa482710fe4653f9f20843b Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 8 May 2022 12:08:51 -0700 Subject: [PATCH 2/5] new wasm --- .../nexprism/nexus_prism_autocompounder.wasm | Bin 333013 -> 333013 bytes .../nexus/nexprism/nexus_prism_staking.wasm | Bin 378319 -> 378370 bytes .../nexus/nexprism/nexus_prism_vault.wasm | Bin 544602 -> 545494 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/wasm_artifacts/nexus/nexprism/nexus_prism_autocompounder.wasm b/wasm_artifacts/nexus/nexprism/nexus_prism_autocompounder.wasm index 9623400cef9972634ef450ff7b5b1824d35b761d..be41a51ea928d43dfc81aca0a344f5a24e52aafc 100644 GIT binary patch delta 2575 zcmaJ?dsLLy5#O2b19m}hkL(%{71#g@Xd%?9Km>Mq$V1QoYkb5+oUSRFMOWzx5(R6aTGVHwG(Wp_C_gyr+2Hx zlYT96tTQo7d0roDR+3|rp;28Q8|eXqYV)slBHU1ur)L0*&GECqchKQ*=t6KJ>e78Z zc03WGdL-sZ*z$&&pVWfv>0#9ahZ?Y%l`$Fq%2b;_Z*9P4QWo2O>C()~iEN{y+2UQS zqzBxP5hHVabsq=gw#577@~oD;{HImq+j zOp~%DQ>5u|<~-MIQpRN+bFCZaYv6;-bT4Zh+I4`EoGo^}I@PQ!&rWg2RZnEwcySeG zMTtF3%1vZ^d9Do_)C0M{L)=oQhR*S4)6W)1^~+x?T(=a6>YXhR0rZ8Ua=C@~7|FHI zbIrj@hdql|8acPy3(wRlR~B7^Cbehrd{1nvSEGv}M3DUAEj*W(n3ewG2o6zRVp5_@ zM6mLb+jx1GTDp81fR3zJF-+}TF(AW!wRP17zrumqQx08%P8R~!kms$sNZr>0nC1ck zT)-E@fYAkfG7RWlK<_ZX0nXH_+tz*LC$_q%rU^gTqk6rv$V$4RH9rTVt3Q>a8Dxt@EOBVICdK9qHLER&z(aI~wW(qyn zC^ zHw?J5`Qb3Y+2j)IFI2cny{@m85BjtB$<^%g<-Ae2zfLV27-NL%S{Xo<2@mYjZkQoT z!kQ*6I1obpVS{F!1XVuJthG;ruRO51mJZHlKA6eZ4*qm68Ms3PV4?{rz@07hNZObJ^-K)4!YLMCT45`Tl{VnJPE9u8 zmZrNlsARA^6@qDJD)2KP^mpM~+MEXKSu|%rI7O#J^$_dhbVzaQ(OOalyoG*)LyypQ zNcZ)oC$b?-Gi8A_8u7GLMW3>LiK*b#d7W8`Bs7#nC=-q6-9)RzbIf5i0~;_8`uXf|*giep-|(Q}|x z#OEZIviL#%^t3V`eB6mMQBA(fiy23tQG2-nrV2loLw6xe9MU=Y{Nho(9Wq!r?C?Fa z|2P-=0jpov%ICpo1MJtTpM`5?mX($85AnTd0~7+wmMU1yy`_b1gg1rk+5{akUL@_+ zKf!qk-qfDk27|J=H479dkA+_C!#1e##ygGL{J+9j5#ohzt{#4~PrKFw^Cgavbslzm zKH`>YC;DK|cqTscKQJQ8-`s%;Z`}HZ_N6DjgkrHJ2CN*7d-iIVg3$-Pz7zdm?WE5v zSWI&)xEa5CUAtt#yZ-pkI_=U_ybic)ADx|!&kOJA@#x2GLi!oF&@F=LgG5{=8vS42 zOW`!@N&L%?>@Uy2q=)T3+Kn05Ye1!5bI!yUJvc7ea&f8PeEwgwvHLwcnrXcqgM1C5 z+A{y9yp0VGT6_~9qr^N+!3M|99$xOxd04|miJ6W4Ko<*f_D=+fV6yNGq*HcG;!1M# zHG=oWEgVmIx6qFo=Hg_59J!6*bods=+&8cMA+7ysoN}M`q~iCU58b+rLzHOk(|LGW z+@tyh$p0L=vH(RRvM^EXLQH18d?B8q;HPl*BTC2*%_v%skD`~kv%@t*0e%Ep>@#>? z1YfZjgDGq=rtzs+4|F}Z&tB(L^jw!bwL?p=!&97h`$Z{>P8MSs`^1#sAzuA*34Q_% z)ve2shorSGm#-8+oL2X~-0VqBPC1&YJLK`>D&t}k5?24d=(lSV5(>*oi&kZ=DlW?} zswgj8RZ&FNkL3(n(k@T%VqRuhSt)OfK#4AiCv71 z>ypRQO{W|vJV#S=J6lWJwPPvelw#j3uzl}rXI^_WExi0yL6lm7z XbR&4kJjU<{;t|3_ul?ez+?e@)XLqDS delta 2585 zcmaJ?dsLLy5#O2bV_85RfrTi<04pM|6r`yNme=wIL0LdSgQ+F*Flj)vA-1)w#HdNp zdi>N;lq3xax+X`IFXlU#)M#OWoR9)mTXQ%y9(!_5YkC4cXw;h6xw{2ydg34V&fMS3 zotZm#=H81o<3*eC#0x0t5Y$chZVDuv)FU5R5=wrl-rE`QfU| z;(Q6!!>T2@3wftYngQ6eTT3fs13WIAn6?~4Af(yFYe2h`um`ja?L_AQ=I^XDQJI~4%HcQO(~S?3?R4ui8TCvhB~L`XKHXob$xC(GRnO#^*|`c!qC^Za z1&bN4DKJC3`cA<{#I0|rq09VO^u70@dRaD!tviav#SIn<1BMcDX$2+s87U|&bIiet zy)>6Sc`qMw#jCB#m5MPqq7JVv*W>RFs?lr1g%L~D4rSt)QTeJWf(_JH8Tv%*!-s=e_jXzTt3UT|I+d21B! z9#D_J-7VqiR;AW905&E5SPzHxuVWtoAF=D*ErL9GJVKl>wacH58KlRQU7azGTDG5@1yPj|?yK%xw@487LN|4$t_&9gTq@GjX1MINUkhc_|>^zk%_+TGtrt;OP zi)cNd+TXX#ddPK&Hd4k-_3Dcw(bC$HgHvgVaAe`*X~3DubJKt`likyRGm|H$0cR#{ z(*S3ZFV}E!gX5AnkM8G#es3i?I$Zv|&=)VasU_C~eZZ#G0W=%&{vqwAKSW7*?}!#W z3qt+iZ7nSZnmypC*1Hh??t;78=y(!rolc`KeV7bxRGAF%4ls;PCqpH4&~OoiQ$`Bx zVSdB{{^VH-esn(txHkk~qqX3ea zaL92p49=IxBhAgHohl0_qc_oLA(Ved*L70Yz`C7FfxA$g)T9M0gKlA;^Y|>2|4E^N zp0j|5Gj~R6u{d_I#!2YVUMhwKVxMEfPzgj#@|=Hu?kJ%YvY1#);TzWe^>P>o{Oq7s zUj_kgTnO9Oz?eVN#zy!;tSh!a2{7$yhV|TDTG&=-7j)odu*>+j{n~F|g$okb$uqm) zmMjWqr2_SFFrj_Y11;{@a#Sn-BRnQdyfDNUi2eJuv0*5e*hcOJIHZ3_p=xJFq3v;2 zeCjUvAk&}SgAMNZ7t*fk@s}u^J?(~#0oZpyyA+Hb==%HDxzE!2>8~cNqGcxBhI>i7 zWWsO#@XBHB(gM5z_;ni%F2Z$U_o4*!;!Yt$60UNRVEV&itQ5U|?Hg$>E%`Bi@E!R} zNtpbg+(WyWgd=WvyiM!N#$ULwT{0ISe~469gz2ohZ&)(!TPg+3a1(be^AF|DcRf~w zGih-lreeF$m`iUKVhi6$>{1*D+Ej*1ACehvVPAT$97UIK&&<^-SK_BY!9`-%|M}HV z`gL{sEpxgIrF9lu&idypxY9|2Y3L5R(uvy`I|KD9 z3xkOjJ+(QdcurK`7t4{qDT-WyqJ!72z+xudEAXrq_Y__L{(QWtaWy_dVXHAitTbME zI3Cqy!6BFy#)Hcx9c6kn2`(+=xW0ymn+>u^+HraY)FS>k9 zcBjMv*_X`c^oGKkpc~%Wl+YmyL96IIuf;nO-1p4&4=c{U~ zX|zwyrY*g4fKxtbm&2T{uJy8)6uYdaq5;{DO#O1Aq3Gvp8#Wbes3vod978*M~b)f2H0KTmvYjSxhP>NUM$1ubf0V@lbyrA-780G&kV>XrCEVG{)%}Rcm(nA P=P`qato>k6K9chvzvrTk diff --git a/wasm_artifacts/nexus/nexprism/nexus_prism_staking.wasm b/wasm_artifacts/nexus/nexprism/nexus_prism_staking.wasm index 34404febccd71528e72845aa6f58fb360c98966f..0eec908213c15dfb41b54a20b7c3a1b5b4c9ea7e 100644 GIT binary patch delta 5356 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 delta 5269 zcmcf_YjhOlb?=>>-OWCd30X)?0+}oX6C@aX5G6da37{Y#A|Qwg6jEe)hYdl4?1G9E zqU12h$0LwcQ7BSDMx1!0x>3L!u?nYZX%Umq14LfZ9&Hg3d%u|pyP%$UqR>!}H z%JMGXD9?8OT75jn>Vh@uvVy@*JQZg7!-W#%nPP|1v8Vw~sZB+{0XVg)xKQcQ*OTbq z^K>+9k-?uCkXplR_y~hm{k*RiJg358!eK5t26|k|tHpWj@<_p{EH8E|{rVHHRmDT# zjCxnG+hiCnb}GaDHc<{pXTmHx%9MM~zt<30R}v>s(gmiEF^TRjolD9!lqL}`_0WKi z0Qc6Z&kqWU@S>VJw8~og_C`{)$ij6^3-~R07L5Z6b%3M;cEkV<9k3+^Ao{wE>L()> zqW1*1$_*}A@bAQcoFaRr6KdJL2H^2%fmC}bc(6i~G z7J4>J*iML96YmkQZllsLxo`H?j#eRriy&lO)R_c?E&gU&PvfX&zcQnZ@6w z%{L^u4c1*Z2~B6Y1(&HyrV00fp`InGU9O^2>&A-B!S{L-o=Q92mehbC>4GmA}Msn{tVxH1H^2y;4|mJq3#tjSD+Hj?st^qns# zG$R+t5|8xGRX)&Dq0qbp%%(du^%dm=S<+KnPAW7wQS$2s(sglbT2c8vkQ>t9O&uoc zD)8IRjcKu#6Gwy}sKAr(M+Doh63h>`N!`jB?KBxluP^3qOi;E=_l9%~k5^H)NsXp| zc`c0Ja~-b~R^n8^{ZEIaeTGMJF^s+hzxxi4Sre|JCT`O1I6~lr4&p#;Lv(8;7NZ{0 zmI|7=E3p;|Yv~e7=wLWX6wCO=QAj16PExrr&igMciBj8;q*o0AJWz}_p|^|NSeFnA z3WY}Q2HoL$Nq%ohG@TCH2uR1I4@?#&b2c^wG9PTzgCefP@=7K1D>7hu;i!)z(yI$6 z(sR@x(yJ$j>6xs=p%l1vvdb(Yya4Lzk$-tTy}EfA7$Z2^8i>x(JfrL6qqO7s zZx9FY!CHFN<;DttMWpQk~K>XiT@Az*NQjVHpP#?p7heK zWX;OyX2ix-H);6bs+**1k0`Td75_5wB36?O;%JIdlUXL82YjH9Pi>=#5inlf5aZ+S z%DuRCj1hMfx-@dp5J1}Wo;zgZwVV@vHs@;m3AUfk9qhWrXBo%`zg#R}#Q{iFvR-m2 zL(8XNv!L!O|I%r%0rAuB<`}@3c57n*ns!&$ zswu4e&%3L7s%fhifPFP*;?LF< zIsL552B$er`Cy?#EvW4Zc&=6*yYY5sXcJf1&@We?wb#UEZE9Ymz%wy`F|RL;0gQS5 za!g^vf`7#T#Nb@pjt6@QFN!sKAo1Bzm9{!*CRa1I4@a)k^jB`n$JaNhFCKZzg}ZCj zvXkj9{M$Np@jpi3uPTv{YSpn`tJh)aH zWP?5E+>vRH^ft|%0A*G-(*rdLPG0UBsYxdLf(oG>z(k5-71qd(FmmkQx^?TGlQJx+p8B zIcPS~2Yc$?vLq+5p-Iru+fGiF>h%`r=3@#kVTtUqBp4s!BEzJCQDybP<}lZ)nK~!e zf%7(}06riaEts37tA-_(k@Rul<}(myO1$;cvF6{(nQ@!QM190=YsCbn>s2~TPsUb( ztxAT@B~j|RWN?i>QIk%_m_(3p8-(U=u7#;{{MZ!bpE=0BPln=jlO!5H0O@#vO>74} zz{*y(gIo}``gSlJ(BWdqi7-UJA`n@F7do;5$&jX0%<{51$sp4K0=}U|z3`|F53JYv zWWe)QXk|@V@B%HLb%f4qWa9U-4BsKHUZ-vA4Exg9SU=3v%KJkp;IS~1d%*-PzYi24 zw6JOYpffbFr~AQiZJ!_d+O(U;!eZ3cjfCD-Xwp6&0~0_C+y(c6*vy+W>oXGW1zEdz z2W$h)Hw-F8ZS!E50=8ou?P7`s|No>V_aM88U0TVEOA2^8}2WUiLgEs8K{X~9nKgViE_JiWaEzfCl z{tS~d@Vkii$vL=?f*(h;j}SX?1J8+gJNZS+O~jdQTGyoGHZqv`eRznrDV^yr7+O=i z;Qn-4KktXbxf^M{NtHsl{93AyM!7bsUuz6tRKMmJz^HzQ zV*sjtRE4}V@KNr~m9sHhFH5`T;>`$W*@=00J)G4NgV+pIw!W;uH$=R!R@+vEK_?x^ zT8e+_K>D4n#VXoP+lUJ|pJNexGXYmbw7P9rg=BWdAF$L*(K?}l_%&%yHQ<3%yRv~a z_vf>JG~;mA_j9ysulyB{0+Cf8!EQvR9l`s--N384zq@SpM{MlIlQ@{uCbHmB4BC&@ zaa<3bg+|~Io!0)?g!zE0*K22*(NC$sdK@RIEo_XwXp4^Hi(r3&`@j%BS__@TdJpM+ z+t;{@d-n82bkWLayoQ*~W2b|nhfS>z^V!6p*oU1D5=mr%=w<$(n8m)R5R2Hc zN_yKHBp5MBVQH0Ows9BHtty~1&b*7XtbGi;w}u~@A1%b{Oa d`pNWjXsHXu$DMG!wqdC#q*JQaMa0QD{{gJ_e{KK( diff --git a/wasm_artifacts/nexus/nexprism/nexus_prism_vault.wasm b/wasm_artifacts/nexus/nexprism/nexus_prism_vault.wasm index 20a4468da2fcdb3ada986d16014240674dd86ce4..a103c797a32dec2235223a561320e6ea3ddb2fc0 100644 GIT binary patch delta 86934 zcmeFa33yaR);FH2+nuD--AM;X2!y2*wuBIN0TGmovbi9*i=f~(8uxW(95q2eA|i`d zs30hDK~c6~fS{rTL;*KITu@LzLj)8E2!ew8{m!X-Z+8dKnR%V>o&Wdz^&#E2POYcT zId!&M{l(K+pU%oEn=P?YA;qk-^4?cv)s9QJQ zFzN}B7H1en9R3&dH_q@_4UKlFW5ikK8Rv*ld5Lkm?0C$ZIO67;Z@Xs1-PgsmFN^X^J%hht5+%CVCyX8-Er17)- zQLZxHHr_E-8*7Y}#=FKb`Hg(V_{i93d~ED6zBIlzwi?@vD&s3-yYY=tCD$7pjL(hF zj7`QmW2c<#t(IRHn+uIC#xCPmquLnndCc>OXNqT&_eIZa&vTx+o_U^^JZn7*Je8jL zo)w-l&w9@W&qtn(o=-iWc{X_-@+$9C?-cLjUd#K0x5T@^yU07s`>}VL_eJk6Z-sZI z_bu;k?<()x-gms;d6OR7(|DhEoyQwrC>}KUpX?Qm%PIdd;p`S2#y?S66xTH_F6=Qw z1!i1s+{2NAL@xN%a%%wmqjgz+)07gb)E%w7W?W9(6V}7|-NkR#iu_D5*7`EPTpYC~ zx4kPkW=v60T%6zZnj$pDN^Q4HRxPyFwR=Y_QX?wFnfMr-DlZm4TkShsCmvEGmWtul zj~zOSht=utipJt+HS}H4DE)~_j1^io9d-)er!8Zky~IOu7E z;m?0G{tfH1E^mu5)>B>Ecps*I)V5vmW367@o1@yoaxbb`?{<9$H70kX?{9WntG_35 z?KuBoYeUzwt#7*D=T>?2wAGQeMLl{XIxACmZ1kl2L^#o0A6F3CWqs3QaOTf6W|k3- zH{<#T9-uTj%!#a;#f=HcNAQK;3Wx+HVrnepb(!jei?OWr^lCS%ANj zWPv$jd?hfGY{rMiS|d(xFN&?lPj4m0Td$oyL@ct>&KT6sK_upZ`X|7o`G++y)?CZ% zn_;aw<8t&W%rvX@S#_W45gG_+(6th%mv_H20)6&ny7q zGJ5|NRVVe%_kS>vW}j$E%zjPp4%ow=d*25-yXVYq;wNkVnXPJd{DK%|Z8)o)f9x#1 zYHH{2(^*Whdi5EIx)b{x#NW!k^{kS@u=2S4xTmb|`(BSOF6`GKaFkFP z5Pqy}y=9)!#G2o)bFI6GvHxEhjT%ku4Qfxj;W4-HS~5%z z=2T}ucX7};tRuQyzauLb&s+zF~F%Wag{_gn0;YOhUPSUb}BWSMSsI0M|v{3i^PIZ zv6XreRqA%p2X&cY8ioVmfVnBI0RKWimuFl&MT%-`{-qapc)T2~X>Wur=N^p|Xqp=p zDS(_iYIVM>Yn{E!MTVJE0PIwPIS*S8T-LVEKD#*V6z{R#xGX~)wm!XVO|k>T+9m4G zz1##~@8#Jk4ggFJ$RVrgkQYUjwR%WC{vP7L&92Dxtu3X+)(urz7hloLw}qeT;A!L) znIM#>uIMgySevfsf$!Ufb#CFntBZ<&9K+laS8$4q%L)Wi{dm$N?X+$kdWNp=_Fip$ zH#Af1v=WBdkQR%0q_og+J*7l?`qnD7>-PX!8(*0z_FAW2Y4>2wyE3uyajk=q)_bjw zoVvd0kJ2g|hpMgfucBUVx~hvfV6DF@E2w9!v0a0bojzw~Ro05(%Yn<0Bbq@p%oU+dv))QB^!rx_AXF}SJcu%BT!vkLHhpVU9GSO>RiUJ&5C8EGw zz>D^>Oq_Mi>5wN?*R;f6|FtbMk1|TVIkHj&LBe*crD(OtI``U^Vy$%-{%*0Jy!KMG zIB;!iQC;5nx;X;;xc2(~qN#ljU~(e#(MW7hwzp4E`orF^3>zUFdN;HZi>=FUnCG%A z)f`h^=f(y8t9PF>)lTmVf!s z%MxY9W8M;D%FlhczYyE3DP!;IIA;#f8_hG%MG7>}Opg?RXRJ9^_u>fCbR+Jd6Ya1y zs<=y@L;mfZ;ys#+^5Z&Z0VB*~IkJ7W2pul3Dt<_~j07%2nRWNLbFuj=#zh#Z*h`Q@ zO?oD z=T7r6uIOjb+3A4+QJ@vvO83z>J@Nku<}6VCB1;wNI@nd7@# z!HGd%33nDk$?21Ft!)z%t#~WdzSSi(IX#1p>4Bb6!|Y*@o_AYoC%SpZ9cJeE z)>h7>pzkv-(H)=Ro6q>j!Y~g{YT;YwJ}tsi4L>yn?CVL*d=qETu=JEXnPg1s$)`ca zTt9gLzL!lt#f4W}3m?z38a(a?zqWY%JR9otMbIvQ>~tZ{n7Z9ei`vbxoOaIq7#hg6 z*NXkzYu);UQ_0y>T`4EJQimyheBbhlTS1D@%wC?7?Bbx>S~2BR7e^Z2c51TE!J{s@ z9VHIZxukxUKkVxhY+zG`vsD@v_J@=D1nb){XJd6wT~xBW@w()1C~=5Gm%N4&hmxwT z4XTIFAvxWDrazq0Cm6K*cPLfE8v4VbJ}gU#S{<6EUfNn~O41>X2?I&fl6}XRyu6|6 z@~mkWO9<7!P9Fvl@yYZoQDYsRez#kp%DQ_-4?q^qXi;Aup1tF;8V1@&kbKbEGouk& zB|Y^3HoNlaCiwp1Q}?^y&wM)aeQVVBf6R=O*DsBHFOT|u{xgyC@1nkseKu0w?77JI zV+)vtu^39;83ZaPyz(IEB3OP24uNaS&+@HiDtt8+EhfME*Oak~ zY0LBU7J&Tfzc#pGtXeM3Fi@)v!}5n->n}1Lo!n!B5M!-0Ysc&D#6&A?Sxfxwv8-j| z3ABY_U)Yyxgu*`3d=m?D4VdlNtqE4)vI}4jHC*+eHRz3AkOY(8=!?JiuULz}eOLB| zO7Y0b@xn_-xUP1v@?_N}3GV4lwETP(^%8!YdfELp^^*Ti9|=SI#`n65#pUzYoFVYA zcP%~SzRM2`vF5MYW{rOTDgdkA?+Mi?_uZzJ`N6UljvFC^)FW-uo9R*C>(X~C`@@#D zg6A;C{o6--@m5Ykh9V5KWtvc&&f%Q&By_ag z^U-5Mj$Le78|SBd{}644$J|MBCG?#dS;w1U-SF`(;%n>Ek2{K&EZ-+L=N+;um6D~H zBPR*^`vgu!Jpzd%bO9)Mqx6%%g4!}ZJyndeF8FkKJIzxblLVKpqZ!MSA2(WLVb6(T zsJ|kS9gp_gKV5F~smCPQMP&;&0}3zAufzHnrg z$6N!57qxHQOfu`G&0_#>x22;khsezY@E+^7EoAZ)Z@J6`z)U1fb?+9_YVcLi>ha}3 zRCx5uGu;Xqy26$(Nh~z{YG}gFw}8;lKI?(68o1w|`l^rh<<>0A*xD2Vr`c8#ICpJr z?sHI8WtDCvf%MhZq1M-5Wm&&&ZErogZ3nP$$957i^YHg@`L6BV$bXRi4N=F?Zypqr ztj+vAt!hq6DH~25^&UX(tg9-70dW3~0WcG$?YR3m*8tN;Xjggj>Q|!$5D-;M03G@E z)Z-dULMR&d-}#VmJqje(YPGG}l?SmE+D*c%EB;QfuH2o8zxVCFMf^sVTqDc#U4s^n zkS!HR@WYIf`9MRc&_xsay?>&IxZHL-hckRiqvz2O*42fqiR=c=w ztylK^HLZpl`!K(s_**IjL$P)G-Yjv<8oswnx&t@NanI388qhGKt#vh>tgU;q;pme4 z`nr{*`5adYMk-C-mn}ZC7VR7CjwH-7u2h#tYFKlc+dR&Eiy^!e8l$WA&E6(fWzEGG z9wPxmUMk6)A>n7i*TjPSxVVsp!FF|FH-u$=+|4!suAUPDtni^UEb_tqH%BAuk~#;- z;2>|C*VNv&gVv-2_oaQzuDXyJXZ~z|lR#9{AM!xi+kdEUUHwCcY(0~B+I+)w8VIv0 z(m*})o~UQ--dmqroh^=)w>jt&3HI`=+Yjeie>oJhdncJtcQyPA*`NUpRP#J-3^vXj z$pbO^tVKUQkip%Cfvn4d0!SdqVF2sLtO17$Y|^MY+_KJl4r##Ez)tlIR-+^Lq&>~O z1<~&t577ug)6gqUuxZhHZC_>pvXV%BCzx%r_1lqLG2P1j$w3A4fnhp533KKIJy*ir z{XgZ2Io9l-vP8N1Fd!OR1NSCadw)tu)YwSyTfhC-q&)NIfP)_a{Ipj0bru&|bB>1P zN3U2P9Nkb$BN3#LI6S@d*h9i~z#q@k`n3KkS9%JCb;q%EPq%^)vvRsM>DO$Vl@n<< zV_4Z6!z!QsO04qJucxM$G6U6O_0j6qn~V->^ZO#nWoE;)%^+sxST-O35+O)$VJw@! z%bURbIiLEnS6OgjHTZn?R8Xm-FO0#Sn z4OfR)QT-r9mW_LlU%e?sP9tJCqAZfu2;ZmIDb`@uC=J{nXs7%rX)h|+H z;^WIy(ZC^b^-HQ~ZC!r|qKV|6mQcS(;~DDgfC#BjGf_tk35e9RCtjv0z}N1Qr5}?o z3Wz*;Y?=yqMV@$0b@Pf`jBqu5yrag`$7gDZSF{%2s_kBpmi}{55!4;9MqDtFHy8)5 zIY9;DMYfo)+R?{4bpd_UsC(#RqAH0OZR}-))QD8kO7%(<-VDQZW+cpojDrAt=f$Jd z{$$aKs>G}Q2_jb>EpkizDN7%vMP$O?8!iY%L)5PcA{bM*neAZ=i(I1@8i0$TB!?mk zfK{$UP_%56tarNBVxi4I0-f$PgM^DMI(EEGu4uyIIW)TULmw( zFdl&wb$f#7qE1T|elbDyOBUw_Y)1|%RK}^n$)b0_cKo1ZlPAUp-K(B*WcB0@pvuE~>VvV#*(F3wY>os(4Oro}*^e z5x*z$D#q3o4~Z&{;ocvv8=-Z)bQNCYX{K_Up=6P|1RuU#&k`pmgdS3lHiLLsq?R-jdA_$_pweX1P!9$~ z`qbv4zSyWTnu{{Epjvv>2hG6=i`2g6Vu*VxB$<1bQlrMO;fmFjEku5^aj#NAB36UN zY>!B+0817(*`}3=qEt&eWyHD6><8m|PyUnZ8R`*Otj zVugA)M+|oR@R%QSMQBx+XZzf!?hUhwL1b3jOQ^^d&E>Jz)R(!UzuN^AZHa(N`VnyvAVTL5J1_wJU*Si%M%S9aWv%)k!F97SNrosJyh%2=A_50S?4L5 zBx%)NTdSU>TIY)!ZaTt~@&pgLe-j$v@T4JN@H1(xPW275G^ z>`XqfaBxMGIrU3EvK5Xgv#scbtu1v9)%I#%ThX%FR@y*4LrS5@kK0EDIy*v#NxoIx z+6lz7)pPB{b?Cv@UgY{q*f$9kAv9L?Y%ltw{NeWE8hq?-FV^5Ap`&mjqY?!A4%hd9 z4R&;3+6KHEWPY!XqM2P=jp`^mC0BCAco=u}5M@=XI*M81s4D0ry4rpUR#!>oa@AG! zY9}!fD;&^S%#xMm6*bTRg(G~};Psf5j<~qIi^$H178fJ~G1?lI2UZtwi&PXp2A(iARq~u{nzSY6%GQCG^-sMc5jn z8-O)%sEE)}^=2{_a< zFNk=&db=-!Ztf>`H9D>XjUe5}9sR`=-A5zUY=Br?=*UjY!#J_*Yz!84JYRoYJM&+v zoxzC$6<3@sJ{97tijL=EHDaskcb=Fn9#u8xiBmzhtp|!Q&iixp$ISzghc#YxKVNhW zk72)**Mw)on``8NOLH72V_G;pG(k;1Uo;UDD$33m4;bRHinbRDA(D8Dc(2r{7m2@$ zrz;j-B)Wra)QZzQ4aH&A;d7B=drkQ4Lzqu(|H9KZ^d-sYfX5$(Ckmlur^O;4- zWRwiQL^Mkq$A?NHgvvGxJPa#=WM0W7BD=M1Kq5Y5RwftVFPfQ7ePO=0it77VmR4ON zI;X7W0uL&dB;jaLtu6)A9;+B|DMX@tvb^H@%f!V(d`(`!hU(MHMQ8Dn@(&S?2hbiR zN0y+A967^ddjNfO?CLqd75?lHaa*v4Cf!AD^P+g9y8RmP-#GO~spzgAzCz^NUO}H( z?6%WhL0^8{cu!U;t%M*sve=UyK%ZYh!Bb7rSob zdE8&XPGbPJ`~_yft{%|Uzlv0E;mqc^uHmKR##rG_b=z>!+aADOPPM8Tj;-9O0wcg8 z2UOn?n0^g?G*{C`h^anjCcLs{>WZsD=ZDqCtHmTp>uaw;qj74(qoR$Uo5At4`O6U+OwUyEFjL*JG#vN3wahXrP8(4<+DhwfK6b zq}|s?Q4*0m_IHy(f43MeC9TKiGBaR+Vr6 z-GHSYR-0}RGhAYT=n99>&!`)5avWBl-6--RumHghsnh~-n{Uk&h@S0 zM-TS@s{+y1h4N#jYJZbxA--3a+$0vdpc)mrSu{my`p7kk9%)}rFK~5-Ok&$>~?4S z8duc4L(CM|y7D`@Z2M!PhswQ63{QD=F0HgHjTk^|QI*^!rpD}FS!Dn2&|B9wp%i#b z3caLu-W|1p+k(7-CA@(%A{#h~Hw922zVII2z@zu@EKa#sT-DCmyJELmg!7FoBJd)D zfb$LF{ED~k6)lCkYe#Tk66+uNs~Cip5BOUY>u&-@5$oUoH?aPm2AbmV*xXzGE*km1WmPK?kB|Rd40NO8RVwu#qP1H7cM(btbf;;dd&V<0}c(A}vjnMI+yO(;d{Z8Ez7_N2*! z;v#pWkgN%53l@G*beuX)G*llvC{h!~)AsFjt zDB8I@R;^YSiY6|Ks@2{?kppzl8XG!zbcAMAQUSa?$WCpgmfsI~{6LXt)85T(u!Xi; zskuL#)hC!@Z?m&))#~#i4Cw4^_0*AgatNSWwHhh1T!N`qg9+-8Q?>dVJ-Uex6*EVQ z>jgyeuyLZLYBNf71vg(i3TUWN#iK-21_W(AqgxV}?AP8N4U>fQJ_teBV7vyY3L#UYhqiTZW|2995%c~;L3t5Yp;8?f|} z#q<8g5`S@zCipSzYJ1eMC%|-v)!&~GYg}qS!tvI_YS0wcVWv!p5@e*q7!YJ@ra+MG zj|ehS@sM&8+OIOFiVJ-b=B%+4SXj8Y~i585dgMA)-d2|O$M~4Yo=qb z4ydQ5vtopg<`p&5#RCHSbL&$g%S~j^s&q`cdBw|5!5Im%T|JZcTa=2CpxRNT`~==yYv|oyQ*Hbe;N)*jKog>^&51f<2fV4u(FppO4_VNw}%|T;eMTHw8z2iWqp%+Edv_rNTQ-TV~sGvb-y(mVBqZMmj1V6zQFJ2PMG1Q8eME&3wHX4W{ z*QgyYiAz+w1@N<)FGH!>pdNggr?c*5I43?=r_6!tZHl^j4z|rwljn$Rd@Py+^Xv(= zZ;r^!oxvs_O9w1EKIA+XClDVJM`_71O?8?p{?@<&y8v1m+=@@DRddBf;&Ihrp6K6Z z)l;;c^)<|_Vl95v(43aPObj9R_qLrw>W-U$dY1_l;Oz>m1?iF!C*MqzUTa21zt7-OC zF)Lb6`k$F)RDI>7l|Zw=v_o)W|fOmU0=hFa`9FN#{CCOe>`w`Y#gJKE5rq0rjxvMGt%+AZaZBfBDmYDe6K>mUZm!~F51^CW_bm-)950w z7FI$a6#W9}+IHg#lhuexIyaQ}%~@*0l0V`}?rco|I3 z)i>IitNQkJIAeK&%~ktlA}g(o0SN^(0O|BFdU*uTLI#~}fI6-L&01!kJrekmF z7Q&POz!{2Ja*GUDT-{fQVWLvq^p5D&Gs;JWGuxn7HFVPbVxl7C1-c%44lu;#YN(O7 z#CKK$R>CWEm~-q^(Mp`pM^w#9(LL60b3}dkjkgo3-Tama+h?-&Jd#hRLzVY>z_yO| zX1UGaOcbynI;;{M)$ASKO!XkXq0+)tB2o!?gH&l7fet8hjJIJ${@c*pMAe_Ryhf`* zLx+{Q8V>z^YQk#aWB{?hQ-rXx)uLxTZDmP9pr?0S?7)`~ZpwLMZgKWd32bcD=}TK}hEUDNfxW zhFtUkGjyuWT*P%=;yRD{6$6moMtjBY;(3YdJf@?YIRJ?k;5ww*IW5%u4WggV>A6bX z{*h>`GCvY^d`_oTs>?^BgRACom3*JmL6v&pBRDmj4rE95ti9UBHYsH$`%)X z=mp4@!>cBgA>{z8Rp*T&yJhT@p|Yh=T{{KC0dl{Y`AEi#S_&_olkq}28IQYnCR(jl zZDd2I^kb2)8h$L28t!G|4~Is#KEZgxq@=7&p!=ZWN;jbrRMvYxM)m*~b;Z*r_bFes z`-CfW{{-6b0rmG!#6i@%^;0M#JJd^`LK{4+zWG$txW-?N+VYubUFam<+vtES6al1} z2-l^c0r92*0H|A-j^U{RUef~rg66_>3{(y9m|g(91aJ&oXN-6NJQP3@W}#ytYZ!u; z45LO&70IsjP6U9Zx8o|&ErjU?pHT`z=uB$Ea7fh@3*ll5mzChb1s}9s5HA3>)1%nD73kJH0C8}$qoB0XX8mrNKxrj3c`wJWCaapQ@Sq-5 zXKiCE{#IT=K?b-2sbRZGPw>g*ljZc(C^?|}0EzB;l4*e+4&)%T;6FHrX?Lt5`+InQWX;@)?t5^~!y$oyOuBk%FPt(jsZaJ|_J`CN`$U@k zE@(Vn$U}lB{4ZGR_4~xVV52Yhu~}NbMhvyRc=7Z$o35oDdGYyiZL)kQf^rj|BXj62 zH}!Olm}(;>p4g7cdhchXjNUJt4D5K592mq<%l3=@zBhS63DD+(2jH-bJa#-Fy10+k z>W%{Om-rht-t_#bcnm?+@}CTOJZ)VTjK^#7{d9iS;QD*=}y0XJ~iD>K{cDIn^thyXp8k zADz;_4wC(2)-`=#4AU$7Cy$*;1zxD0$kN)blvnmbWO0*MwiMIVZ}>Q6A=gMnjW!P7 za0WXLHz(5_S?%U@enGAtsv*U2ySn0M(Lk(JcgM??DPM38K7dvs4|%(q16ay8To^(j z4kQ$Ah?jlAbr}h=mH4irSAuLN5v0A=Cm&Tij))Vj<;Q6>^?0+MUQ0vO>nCwmitU9& zzuUN9>n9j1+tr(1*`TZK&IAlIwq<}`3*BmeFK&lx-Ei9uuh^Y0Xio zLVk`6;^SYizeH`8GMF-IG)AFY3G`d`*0Kw_sdk3^#|h4eOVo6ayiV=&$!ji}Pj4J` ziNm1=j-&fNUZeubUJ(#MR4_AAKmJEst^6LWu1psxC2o)?c&C%_<+0#?d}Z7yHLM6AoKm>sTShsbaXZe z$~@#XogIYwHbvbWl!H~MF>{V5ld1_sHAd-^H0 zbBH%jRc1kmjZz|8cEcFAHa7?eNEo1l`1dK1M+Rez`# z*BMZG8&xpWYdUqfc^NmSG`NY)fR{+~CNWtybdLj3;Vd3)eOkT2E54HP>&D~{(&ucMBW&aXsvJB%r(U zzCa#0oeJ{}?t>j%n%LK>s~b!5YCYCiR$?Xto5*hNBx37NZz3-cYt`N+^8A+CO9fd_ zdx+S1qe**ZHI>;Z&gA3uscbVFfF3+#M#kj3!u&SQ{ zJ{qIiXUN+DeuvDNQ_eXoVX`CaS)zw3p$P`KC3Gmp?!I-#ehc9c(Qv#Xw3&{2l4p|HLFfi3INNnX|A>Bmt^ z3w{EfvaTSA4m5&SGCZ0&0 zP))`6-DOCI4@YLMmvSIdfTirNXw(x&0Wk5`(`B#79ZdVPMV{Jyx(tY2>hS6EycnTM zX{^}1yP(U?mdkDWNi-=CpGdDa zyYz#*#wt3WgEPb?i^LpU$JZwq2m~W&N;FIUfGqxm8kb>W|B+!ThMXtcO1brAHST=* zn;WQ`G)Oi{+eK;$-*3lT^CJ{LN4A5US@dkb`jC;1sQ^5-*fJ-C#S+ z$J*Fd!!N`cvq;UmP>!hc@-yg;PKHE^#X)s`r6PP0PT{D|>ZnUEmJ}aEgZAphi=k3g z($Lf@-qb49YPI!Z`Iok?kz$xdSfV$iH8(wfD1oJn`jF21%2MKRy%))?4IU; z5Y1u`T>8MyFGFO%2CmWsgOMVoWHs{3u4>p7(AXs0pO69+e=ttUy~v5PCjFgZfX-yT=jUL~7#nMFDw8E8)Zr>KB%%k`%? zPn?*J)YfofI3YAuy>XR10}hK{u99Cn_eq)cKt*HJ_rv8!g-&vm_H*JDNBBAGkUQ0W zXWDj1gYE#p-C?yo<=W30B7k!-jqXaj&{MPnHr6E`$4+!y9|nhbtV7;I4%Pr(rW2;^ zuCT`suzMZ%+z8XTMoACjVHY|A#dtO8N#Mi8c~7cCFv%nrI)WI&bZ+a>0K+5~IwH5i zTwQVjn&5Q+4M{Y~gO13CFxe5|0;EYEbdD3SGr|SL!>4Y?3E2BU0F``=%r10pAace` zMm=^@J2w|;fHYG8u-(+Qqrsj{oEc&eX5(C#q}vEH6#zR1;M}sLL0CS6!hT^ow>QPq~eF`t~?y9G+)&#L{cGDE$2i_G(_cTP5oah3xCUu*jK!=SX^pS##+W;#*9Rr_d)Be7R;0_ORSqt}Cv?|qfJkF;obO*aN3@o8rxRb3`BPM_Y_o@dbIKZBwTK%dE8%}fzPjQ!Dt)@@p78Ma- z3kP4vO`ucs1TLE7cBkH-BqP^Bx@+zjU44I~dJ9Kh9ydUT=oS+u%kGg|-_(Z5vWdIP z)#?a6Iy6wNnm&$4hgPapUwU+C3JH;TZ12$Caiiisx+Z;s88$yS=UTOT9j!V!M~+?B+6TwK^PC z*J15yb>$OW_r50_l;^2wQ)IF$5UN$#6d6`cr$|4#%$pKZ4Hw1{I1i95Q)Dmw6jnW_ zq60@&&>d9VJyo8KYvk1O61d2IR*k1g%A+=?!I$#0Dx44C{4~ik;JZM| z!%TQY&zV6uJFfWa8Ms55iYaZID?a;_>>68g*3))Vx6WtBl@!d3t%EG?=uRh<#)8|Z zX3x|vS;8f1>obr5H7fI2IWoGB*2?=Fe0B%bWzWH(eOTT1oNVvjR|jf=g6G~>r&ds% zZ!5le4$3F$c9a?Ry|&pch)*6Y2wZpt6!D}vi@)kweLxJzRH~|?-k2c z>0G%u({XQcKW6D_8nkpaQO^=}`#jm!J+vv~)i6t8>LML%p6p@gfOAaD2JD$SAB=HW zHJUG1+UaI6KF|&q@TooXWk0}9SsFSN^&%r^mfvY1@c<=u}Up? zRW?$$mcj1f?>TA-zPE6zvsMMYHNFon0OLMQ2Ue}lcnv3Wy@epqYPI<_*;W-T1XUkY zlNU;Q*KzJb**(`$2S{1LO?sM_aK%nmGP>JFx=N0`fuqJLugH7dg=tOauzKPZ@Hbw& zdZpIFC~TZkF8ljFv7-kyYIwP96!kc!Ty}2bK($1}O_O-H4%cw8GaL9Jg}|v&rFNhN zX5VlTNOOm}VUg?}wyz2#qRWwGBHQa+7D&hyz~;(Dax8?%*^6Om9#(2Gd`SmX?h-jf zHCh6nMh$)c8l46zp!I;BbU{$960ohOFO_EjG-_$B z)hA%}uP>F?`QGMjjmJcCUzHE|*6|~~h=grD#f9=?W0mw8q+p~))@w4&edNvT?t70r z@PzEWo$;FN;&#e=Oh^K@aO61JtyWgbJ}#RPyVy5hs)j3MFPF{8v1ng?scu<;9N@!h>oVC~y4>Nwzr7^~ z`kcoqwPKBIpn9x=5`63}oTW|=5kRvRPMJ1YU@a#02^yF%hBh5oHF8FwQqNx{{jHqN zb^RnVVsSMcol(@nfpUv3_Qi6bZzSVOqHl`yIQ-Y~ZQ0RXsZMd*qwabeC+uN0^KE&v z3nR0m4lva49qiU&HT)gvWR*29|2?MB zmG2Ras$bueOYpJyeZ*MytDWydavV_8K9I{X=H(yCqwZ^SQAoEphlEPSo$KT^MB|^X zXBw}w0W1PLYlHkY<=F*9MPa>@AnySm$&uNPW}~;eKAa#%AcNcht`kIk|B=i%*Cq$p z$Oa)=N)P;>~1nLpMF}Hxcjj~>$V`=GnA-F#b?S64ILI;ol z0J~ot%~1mcyc|Y=-7k*vsR7CGau@;ju{cVq1_a^cFtm&1o0&HeGD5EH?*}B}V*%MX zg9HGG_*h(kG=l)Jk0sVG;xm&0U>{4wFEa3B*|L^j1Stxr$9a~Hp09`W!pC9gJWJYGt(J_ z-q^?@fNK8qH zRh>!1pX5?q%kLSoxZf7V5Om<>kq%xCy;F zL7q?b?B^19bKA36hyM7e1WhShhbZ&(>KdR|3>Z((Opy@yjgYn|LD?zvw#X#ho262BAf4*hH`SS6$&P1@85seQ_m&PDRE)V%5G>$~ z>GY0Na=UlBuIAORWDhxJqtrA!7ooM=z*F!$v%BaT@^Hkey zvO!ugpE?Pc`$Ycc=Rp6^Z3tFxRO7eFHufMX_8^)NJyX@sQm*xxh=waR7C+8v3RtbM>uklKD9^1f{UyaHbqFzWMkDprPH7d+<#t5duW6RDuMtAz!68tmiZE?Hjk<`4qTk>fr;0So zb$?Np5!I?Kx0^F43UYd3Ow>1LNL!#&t2l^ zo+J+f5AEV!P%FNZxWZVq|6blkt-eQ+#!r=~h13H|uiEszY$t!MRK7i&rSXqFQ0sqE zWqaU*6|LWECTZBOuk9?t`jvRNcFe zvo!EdQ@x4>`(%ZXE9R>k_RGAst3DM85$OL?lO)`ju*Z}X(V9h@iQJl+cS&?+6$8{$j^Wq&T{4RDcK2K zjgp{R{{UFy(7ORH)nQ85v@!T5~{lPhSH8j|3wF ze{v-*5hBd4L6tNkqi_w?--Zg%%RI>S1tIAQR0gHq13*j}I-<<_m@-nwsdKw69{Au)R3|OeM?u+2CrUcR1;i8!Hr}u-7y+s z_4#qnq+|urk_HHb*qWkQf-Vd*tuO9g^_sI&3Wflecy$(l=TowhX{Lb&7>^!NFY#W& zo;f##_LHhnZ@?+-f3lt!8QQq>g62+x4#yJl8(jD{LUlVNn_l8fn$-S)ZKVS`6jnN7 z6ez@4mu06!dKkn=!W{DB2BRljE_?^qC93t@iJKj05^CNdIiQ)-H(kmV)kA;oA(eU< zpc?!rb1sKH90l*jaCDR(cdGfDxWmluhszaGY{NifEG2YEFDXaPP07OU!H5BZY(yD^ zX~LzN{-ew*ETd2r4q)9h5IR6johm>h&<*4e8Xd*~=IJZL7PdT_i97eX)9)SeRBp;-bcCPA7{KXO%2{Kdu! z_8m*hkL#cZZO?-S0&!4anb4TgzzPwTVP3-$vhjKZLc!U-+FTbedon%d8l@?Nc=@z} zV06mc2hov~A*4_#Se;UGsWizcRSkcYjhdC%6iiXudR<9IF$LDcjW5oVy5oop2cJ&~ z<0orCO}VryPalyPmlCOJL4{*D#P#)PF&W8$|`v;AOI;fSR*X{cf^AV{v;bV zJL0DewUI`Sr>fMWN4W z!XS!7ii83zX$JT&d_{5weXWnLmF@L+5OS_jCbJr# zj7aGC$>61QhN%@l%f^Lpl{zC=>aR3%nf^*6&(>dQf$ZA3b#YR?B`mB*zVfx%8v$E)Ojm*kM zTbqt!HWsHSZS2W$59R_r;8gRPPe>vt_ZS{8yBfuWiJeeQxB}1}Rlz7hg`FgvOA+4X z3UgyB$mda^G#(X-Z$yF#*T6nTcTq-TkWeS0h5?UP4SiNA}4lt(gU7o-9mze(zg z-(>sr-x=vrXQbogjmAN&yrD8k?-+Tbaf&jQ-CEvY*Gb+Kl%`;6nCT>%;vY;Ec}_{8 z1Gd)Y3QU$iuwfjst1Y&Y@ymq-t4I~b{o(?sP{%EV%4!QvDyzK^DuYyxSxB+ex^1yK zB8|=|MD8AQKi@x*6!uw9jco+x!f$4H)G)(nRQMxZJx4i5q{vd5(!NN6eoN%rNP*6C z+8Qa)X}6z63edqi=ZO)3`So4^6xDb&o}oFM_tfp$PAH1+dwj@w-E#Y&9r9ZjwDtTo!&<23^uwm>)NplpN&p-@#2GL`cDFPQBoS!q*n~TH;q5 zJjV6Sow18CfZa89QA`~pYnHx0qOR~7Z3@Xd5>=x}*9hqakJO9HcGiZBuAr;wHRpTe$cPOh4T$3m<=t0HD8+py_*H^Vdkck!B z-ui$!`56!jC1a_J;*EZVdZ}({mCXgEtY6Uhbax~6k#t2MgTK172)Cl8r-oa>_p*@; z2ht-0X3XG0I2%*RU#-#Vz;xWoTj+F8BiY^8p*MY_CdyuKEt@R93A|;;;xh8f&6PWO0IeCc$V$*Z}NXjRcKfSfv`}Ox`C#i{2S>s`At# zo$D>q3NIaEy7wBVckC-G;MmtzdXPd~?rCo;ot*9_w8F-d+m+{U??*Jk>?sB!bI|O; zhCpN%Y<1;=ezFsKhl^k2Ep>ZKcrh!W-bpm-J0#)k)W1d&l#HiWs;5vh%4R~sCZR&x zBJQwIm_g48L`gnPNouIi2wc1r@}HYQq?I4{cWt%&jYXNC<%{&2?KqWlaFWrn5Q`0`=t(DZ#d2{X8914!I~Zan z3tHTZ#b^udCh|bn?EA*7zsDV~#O1^iHkTp4hDxB;`UrE3E=51t%7Eh{M^^g6btyvSH%{w4 zowGyY=)BR#i$w+c0Mf_HqmcrAyo`zz;CMNzKJXho3nxJV>@93X5bMC4Nf1Zfb%T}j z3PUfIPYa|Xu`?@q8bPEx!NYoTUrQm7O;_*xq1d>(sh=@P8iaYwU!aAp zS;PufHcMRK;+S7=O8`wH+oA_2lgSuki53o|pYBsdy6=gN=3>yEo)jXo3k$#p-%#Mxx$98jMDL7FhmAKM|x&6 zRihN6ExFCu+~<4IZ2w&EVrnb8!gmD@hwfRLLgdJ%Sv}glY&rzBMr^Z{euUq^6IzV6 zObc^^StM!T0;9L6Gj1**Mkbn$A}bzW`yQFrpgg*W1Gm#wqpc|DBIgFNquS39q#e{$ z#YkNmRlww<_u8$*~$anIE2Ql!|p8X zWTdH*kWrjEgY7*cLWY${g_jP}3biFk#W028_>x4MjbdoCk>6|%LaqJs8f<7>L>m+2 zBkch%Ea6=Pr#4oAgf`j_i~w zjBS-=I?O~BSa^WTZ8sdd>C=ECkOFH;j9PrBSU^1^^Me1aId$PV5phIjR1o@<*p+e( zc(VVU*d)i#@z^W~ZQ{8j9YWh_wKtktmR9#KS~Ujflpj9TuKiR!w&Q4IfpiAX~~)o#aN>C7aeM$g~P6f z7^L6d8B;*6MnnUDNIJmIjXFtX@MpMAohdqNMdmt;a@y?T{E3e}))rXz?m$U z^ZIESQR}DrSii1c809=B0Hc8#M4^Go6CH%vXjtltQ4R?WAJ^J^eLN1LpD1O_9*>bp z3E72=lJN-|B^U{3u1f}!5^RjXAL(L*b~73ydUi1wA?GJ!gkaHLD3miss9a;@a^7fa zz$hU=6h^3=F+$~07@_jo7%4{R0-jZPO$fK8@v5+)@l5J5k8`8}ad>Id!)Iykc&}3o z7c`V3FP(H5F=wd`@TuD}jWqa9oA#%VsplAto58Ke)b}q&KRTRYWc1gkfE(#JsTN1| z9Dk?Yz0gy%z2pNR(W-8zY57%{riCL4^Kwm|KR8DVfBzhH=jN);|BQdO(uvk!cA#E+ zveCMN9W~BQP!DDr@rZcQ-0RUNCjW0M$Ar{V|4pPq=Q^(mRD~0hNb3lRAfn-rNWB;m zL53V3#Mlg8$)B~N^ZuO`k&xq1zE-Lo?XgCXW|>}x-dnYmJLZIAT%HlcWtUD>Bn51^ z*ho+M7~TW!ZH;;|Yz&c`gc@-MZmL8gUhnf}L5t6idojff-F;{6Fti;%<)9_vr<|PU zHJ=aCz?_*-s=u=HU`8-2S()G92l9?wVkE1#vW)bL9CspkJ}N5Rh9k`+ALzodsE~1( zy^LVT{J1O}qbCVU=Vu!OvYnnGexf?a;0|EL=f^dmm~`W7eVmj>t`ib4QB|QS!=nkS zFh9=cgs0>G$Kh#q3t_jh+bZ!gsS2ZLsx_V=-;$SHZ%zB|}vp zx)I_5D{%vml^r=J7|fDHf)#SlOVM*FjUv0qO8P|HrHn>e@61kT=s2_Ea-IQ|N6i|u zT!X&W^DG&!q@6^&aVTqt8*o&3+nIRGVCI8IE+QLfzjBeBla)mHs=;N%fYN?bn$B`t zi=bnkR7kadsi<4Xwk)OU(1Nx882N!R)|Yj8)X$b7AdKHnO2R7uY7|Z`f^$3)dlEYO z5SKt>^JGD~0{fmU3Ko;%6DmLwmc}aXG}BImb2SKxS9};IBRYersMSE4C#w#G_^{JJ ztCA%PQStA3|AI7#B-;eBK#uV^IgaaEsvKiE% z(rJK<4sJlY0_n_9?uDb=({mw~86TzHm!hJp-BWaqw0qVx>^Y%xN4s~nh7ea0gn~zm z0+lFQ!Lx^r(&@P~8X8y(=BSr?8-YU7qawOoFbv1Bt<>tB2*i#XLgv;kYe%i4OfZcFXT;^$`{J zgi1YWleFwY@`6ydfu0-aE=sG%bWf<&qx?j4MJWSJhZ-TyDmj&a(V_7YQ(g#sxQL_O zWUZcz8#s)LAqL3>TtsJ)Cek9Xd$bGKYksWNY~-o!B9sL=vw%0qkw>)SgjMZO(ECr_ z5<&}cAuN*x=B5V;edZAGQXhMP%o=!(Kruw-v;x=P3em;|+SzK&)y^? zChCeIR}fJ@ETz)O%T8Q0+MgY?yG~8R-6Qmg!?GpdA&1+T(3WD0 zZ11crpdBR6W3ns*gd`6*h_{viM7`#0+EoJR9Ycvmm-ghQb%poDF8c$HsD&LwF}jDa zmKdfx9_8A&rXl~e?#T|cY4Ail;FiVm6~!(cu0?7Wb1l~(G3iP=JF-M&wIfSZ=0=th zZI&-qzqL1V&Y5A00q&4iRJ%hetKA`$xgEM91fi-%32gbpt-*2%pDd^F$#RNQ%KkmH zT}93Q8F57QqI?oqyS7e=xug@3;!eWR#%NzTU|%IwXH6~qHA^O z^Wt}nE~!6+~HGd^Bs_ogguG7Zv32R$~S^uCId( zL*lE5-9^Sc*@kFbQqB|;Q ztBlI+zygPy2*B7PKoqv99N3Dn%1Yzyq;6=%OMx6RpUMbHv?^$s(8Xh|vJz*Cwp9kN zA?d|yblXCsk{at1s`9wT+qf~Hc4K-u3I>q<;}Bkx)LAYuSMf!~e!SB+iGQ33#;g6l zDllB+N9Gu$9~~lHWDTZ(R>gkY3|JRFwSzPz-BS%t&(&&hcc`dEI*o^|3qI_~wqQx` zm=@@)t2~&bBfKy|sDJ7kH+Iy(Y zJ;$KoZuHU1Mvqg@M=#XZ=SifK!9brlMD@U-XS9ldBqGjXKym{|f;guYwLlE$h&^A+ zG{6X-&Fw)x1hIR=0&xDbJB?Z~GT4ZsC;iHmN0a=bB-e&5OJWs~iwj}OB&&&{)W=y(0V>22m`HI5 zo`1H{ww7fy@N`&45qAXV9~A$uTSmB|ft3a=ZT|)LIcWqCpwIvuU$hHLeg|hJRI$TMs?%&r;*g*4EeWIL}Y4$NkA_9Gy8}MiLvx zInPh1#?jIDA6MhZp8@>*zpTcQTO9)K|5xMmyLtbt8mHZdbRcTyIt9`GX*EuJ<|Aqx zxi$Y;H4axhkA~Jj0T3MoA$5-Z8}*8tm3bQ zSphxWRT1s0GATQSrkjGGab&u1gK!l%z;Ux1SHaJ?MyhBuk`nOWp|XUC)7|=f=L6o+X16{**{x4^4^UPdC%Td;^aoa9EtBG3iiS}4Cv@uv ze%GyUzd&$O$A4Yt7kxk$&Y`8+_AxRp!;$r;?oxEvrST`ArH*KF-?FbDyT*!Rq`wpTbv~+wp5gIpqX^!Uz zP0)?dxG|mR2u*1uv|@6ErX;F>t@BAy1#FcUM-{L!PT`<;lwJAbmm%ldBN?<%}cEhIGNLheCL|Facd)^|IBWd3P| zmsNOpBr`8I3Nl^I?mtSrXT=b2guNVXoFkl^1@X`12Dh?b>w_~;$NDHp5qX&qc;1Fv z#PKri5k@>&8blxb#<2cQ$EU8PLk8M;hZK7jAk-G*r$ZgF+o3rq^{{J7=fy ze~Nn#_$rDg4m|hnZZ9G21wsNzfR|812azID4x~v}K#-1t6a~SCSm;%H8w81n2#6q^ zhZF(9MiCT{4nabd5)cTW;{Q8)<-HK(=fCTR?7JFy|rg2pj^(0u(@T2$ec3>a)C)%#ny1iP0@+Yea{`cFdVII$l7#iDNEey}KU3V$*bg{aYXuJL8drxq5dy7sV)e6v_ z{aR}5+r6VaA&PvvX0P1F;D?|abWm%D1wJQtP$z|@%T$kdGo3o1nL(ea2enk1(^2gT z=lg$mR5##_mi3*~0=cFCxMUBU!=QJe{Nqib^PSWu@TSoCMOqQ6-&vgrUxFt(tFDjJ zE^jGG)9zmqRK1H@91aHC6jn-yZTg5uaX1_S&g!D_E2YE<=ebXfyGDLaPq)}mcq;pOi`YVo2v!_6kli*`26%2tU^ zbqC1rx~c`NytO$ZoaS~{XXmp#W-2gz2i$OCpFfhOq$;KJ=6F$PcR!T3ABLA#^zrHkl$|WP{i-_efp-#MnZYGh_`Sk|Ld*NB zjq&uxpZ(SMT-WN8VN11&pQjH7sKra#4jtiRT$Wr6^=zN(vkosFxcM{b_yG0rBdXi; z8mhZT`CnHH7L`x~fSgx5Q1u-MYUjz04zH^Zd9q{V>*{I1dFc(cXAMVnw#q&1j`SmP zP{f;R&FEv&!c`nqqb=~!-R@2G!N(=6rgQSwl<}r|)%CypkZS45Tk1BvD6xE?8vLRJ zC~m(fvBG{)V({B4Kfh7oh*IJqg0?Y zz7q>y?I+&>2V_y!JL+K<7C1$K2Tr`JHbhdf_tY}B_jfprhLKD_pm%#ueJaWENH4ut zTRzz3p(~T$Dfs3+wXo~sK9jD#2Tr!!T*H`%+bB5JrkZlRLP%ti?|ro;9J~*BUoBDG zjpemwWGGKO@Pp6q$Dw++%sJZjKE(S?>Nr%bt{kVTgVm?p3T0vfeLPr=flGD}p(|RF zXNWpNxkj^wsKeZh8MI)ST9g_NRbw4cne^dMbqKx^h5_(dYBNl&7v|t3^S=UT@~Aw4 zN)K0y8n#yz>N-@d0+;fWhpT;1*0`Gt?sBh*1|+6APk zpt^UY%1=SG9;udc(|(BJv|BW3r1}z?^V0|D)5uXkE{htC!qjz*`j1lcfU`%AQdsMocbj9%m*qzJo5Mls#(c$)asYp{=oQ$s7Md|WNGX= zUbU|yL9j{+%B(4d*H246fWmTawz~?GtRuY6v)se1$ZEX0_l1RKYp-a zygJpT0Ib*YMTB}2RDK&|>IAiho5uC#M$es`pth@RvA@Bt>xG%!!MkA7h%mE1a;Ni^ zEn&J3+|gST)rz)rf9pyYj2;g{^2pJJ+2TQH3S9BXVHXVX)
gI=DbmO(Ikl3J=j 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 HkAD9Lv%#g> delta 86723 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 From fc4db03dea64d023539ade5c545a2ca092ce8cd7 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 8 May 2022 12:09:07 -0700 Subject: [PATCH 3/5] clean up logs --- src/integration_tests/nex_prism/definition.ts | 26 ++++++++++++++----- src/utils.ts | 9 +++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/integration_tests/nex_prism/definition.ts b/src/integration_tests/nex_prism/definition.ts index d51ae35..a30955c 100644 --- a/src/integration_tests/nex_prism/definition.ts +++ b/src/integration_tests/nex_prism/definition.ts @@ -2,7 +2,7 @@ import { getContractEvents, LCDClient, Wallet } from "@terra-money/terra.js"; import { assert } from "console"; import { init_governance_contract, init_psi_token } from "../../basset_vault/definition"; import { Cw20CodeId, GovernanceConfig, init_astroport_factory, init_astroport_factory_stableswap, PSiTokensOwner, TokenConfig } from "../../config"; -import { instantiate_contract_raw, execute_contract, get_token_balance, instantiate_contract, sleep, store_contract, increase_token_allowance } from "../../utils"; +import { instantiate_contract_raw, execute_contract, get_token_balance, instantiate_contract, sleep, store_contract, increase_token_allowance, get_token_balance_and_log } from "../../utils"; import { PrismMarketInfo } from "../deploy_prism/config"; import { prism_init, stake_prism_for_xprism } from "../deploy_prism/definition"; import { NexPrismAddrsAndInfo, NexPrismDeploymentInfo, StakerResponse, StakingConfig, VaultConfig } from "./config"; @@ -461,12 +461,18 @@ export async function simple_deposit( // assert recieve correct amount of reward console.log("checking and claim rewards"); - const prism_bal_before_claim_reward = await get_token_balance( + await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.prism_market_info.prism_token_addr + nex_prism_addrs_and_info.prism_market_info.prism_token_addr, + "prism" + ) + await get_token_balance_and_log( + lcd_client, + sender.key.accAddress, + nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, + "xprism" ) - console.log("\t", `before nexprism reward claim: user has ${prism_bal_before_claim_reward} prism balance`); const mins = 0.5; const millisecs = mins * 60 * 1000; @@ -480,12 +486,18 @@ export async function simple_deposit( nex_prism_addrs_and_info.nex_prism_info.nexprism_staking_addr ) - const prism_bal_after_claim_reward = await get_token_balance( + await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.prism_market_info.prism_token_addr + nex_prism_addrs_and_info.prism_market_info.prism_token_addr, + "prism" + ) + await get_token_balance_and_log( + lcd_client, + sender.key.accAddress, + nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, + "xprism" ) - console.log("\t", `after nexprism reward claim: user has ${prism_bal_after_claim_reward} prism balance`); // unstake nexprism console.log("unstaking nexprism"); diff --git a/src/utils.ts b/src/utils.ts index 65c0a8f..f433f61 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -58,6 +58,15 @@ export async function get_token_balance(lcd_client: LCDClient, token_holder_addr return +result.balance; } +export async function get_token_balance_and_log(lcd_client: LCDClient, token_holder_addr: string, token_addr: string, token_name: string) { + const result: BalanceResponse = await lcd_client.wasm.contractQuery(token_addr, { + balance: { + address: token_holder_addr + } + }); + console.log("\t", +result.balance, " ", token_name); +} + // ============================================================ // ============================================================ // ============================================================ From 51c236c377d329735ee585d68c5caaa488440950 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 8 May 2022 12:34:21 -0700 Subject: [PATCH 4/5] clean up logs more --- src/integration_tests/nex_prism/definition.ts | 76 ++++++++++++------- src/utils.ts | 5 +- 2 files changed, 52 insertions(+), 29 deletions(-) diff --git a/src/integration_tests/nex_prism/definition.ts b/src/integration_tests/nex_prism/definition.ts index a30955c..481a815 100644 --- a/src/integration_tests/nex_prism/definition.ts +++ b/src/integration_tests/nex_prism/definition.ts @@ -371,16 +371,18 @@ export async function simple_deposit( // stake some prism for xprism // deposit xprism to nex-prism-convex vault console.log("starting simple_deposit test"); - console.log("deposit xprism to vault"); - const prism_bal = await get_token_balance( + const prism_bal = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.prism_market_info.prism_token_addr + nex_prism_addrs_and_info.prism_market_info.prism_token_addr, + "prism", + "user has:" ) - assert(prism_bal > 0) - console.log("\t", `prism balance now: ${prism_bal}`); + assert(prism_bal > 0, "user should have recieved prism from the deployment minting"); + + console.log("stake prism to prism governance to recieve xprism"); await stake_prism_for_xprism( lcd_client, sender, @@ -389,14 +391,23 @@ export async function simple_deposit( prism_bal / 2 ) - const xprism_bal = await get_token_balance( + await get_token_balance_and_log( + lcd_client, + sender.key.accAddress, + nex_prism_addrs_and_info.prism_market_info.prism_token_addr, + "prism", + "user now has:" + ) + const xprism_bal = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.prism_market_info.xprism_token_addr + nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, + "xprism", + "user now has:" ) - console.log("\t", `xprism_bal balance now: ${xprism_bal}`); - assert(xprism_bal > 0) + assert(xprism_bal > 0, "user should have recieved xprism after staking to prism governance"); + console.log("depositing xprism to nex-prism-convex vault"); await deposit_xprism_to_nexprism_vault( lcd_client, sender, @@ -406,24 +417,27 @@ export async function simple_deposit( ) // console.log(`EVENTS: ${JSON.stringify(getContractEvents(x!))}`); - const xprism_bal_after_dep = await get_token_balance( + const xprism_bal_after_deposit = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.prism_market_info.xprism_token_addr + nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, + "xprism", + "user now has:" ) - assert(xprism_bal > xprism_bal_after_dep) + assert(xprism_bal > xprism_bal_after_deposit) // assert recieve correct amount of nexprism back - const nexprism_bal = await get_token_balance( + const nexprism_bal = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr + nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, + "nexprism", + "user now has:" ) assert(nexprism_bal > 0) - console.log("staking xprism into nex-prism-convex vault"); - console.log("\t new balance:", nexprism_bal, "nexprism"); // @dev - commnented out for cleaning up terminal view + // console.log("staking xprism into nex-prism-convex vault"); // await sleep(5000); // const y = await deposit_xprism_to_nexprism_vault( // lcd_client, @@ -465,15 +479,17 @@ export async function simple_deposit( lcd_client, sender.key.accAddress, nex_prism_addrs_and_info.prism_market_info.prism_token_addr, - "prism" + "prism", + "before claiming nexprism staking rewards, user has:" ) await get_token_balance_and_log( lcd_client, sender.key.accAddress, nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, - "xprism" + "xprism", + "before claiming nexprism staking rewards, user has:" ) - + const mins = 0.5; const millisecs = mins * 60 * 1000; console.log("\t", "waiting for ", mins, " mins to accumulate rewards. edit the mins variable to change the wait times."); @@ -490,24 +506,28 @@ export async function simple_deposit( lcd_client, sender.key.accAddress, nex_prism_addrs_and_info.prism_market_info.prism_token_addr, - "prism" + "prism", + "after claiming nexprism staking rewards, user has:" ) await get_token_balance_and_log( lcd_client, sender.key.accAddress, nex_prism_addrs_and_info.prism_market_info.xprism_token_addr, - "xprism" + "xprism", + "after claiming nexprism staking rewards, user has:" ) // unstake nexprism console.log("unstaking nexprism"); - const before_unstake = await get_token_balance( + const before_unstake = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr + nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, + "nexprism", + "before nexprism unstake, user has:" ) - console.log("\t", `before unstake: user has ${before_unstake} nexprism balance`); assert(before_unstake == 0) + await unstake_nexprism( lcd_client, sender, @@ -515,13 +535,15 @@ export async function simple_deposit( nex_prism_addrs_and_info.nex_prism_info.nexprism_staking_addr, nexprism_bal ) - const after_unstake = await get_token_balance( + + const after_unstake = await get_token_balance_and_log( lcd_client, sender.key.accAddress, - nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr + nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, + "nexprism", + "after nexprism unstake, user has:" ) assert(after_unstake > 0) - console.log("\t", `after unstake: user has ${after_unstake} nexprism balance`); console.log(`=======================`); } diff --git a/src/utils.ts b/src/utils.ts index f433f61..a3cc167 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -58,13 +58,14 @@ export async function get_token_balance(lcd_client: LCDClient, token_holder_addr return +result.balance; } -export async function get_token_balance_and_log(lcd_client: LCDClient, token_holder_addr: string, token_addr: string, token_name: string) { +export async function get_token_balance_and_log(lcd_client: LCDClient, token_holder_addr: string, token_addr: string, token_name: string, info_text: string = "") { const result: BalanceResponse = await lcd_client.wasm.contractQuery(token_addr, { balance: { address: token_holder_addr } }); - console.log("\t", +result.balance, " ", token_name); + console.log("\t", info_text, +result.balance, token_name); + return +result.balance; } // ============================================================ From f6d8c4b999ad3b671f1b301ae7ff27b8fffbfc03 Mon Sep 17 00:00:00 2001 From: Steven Li Date: Sun, 8 May 2022 12:51:43 -0700 Subject: [PATCH 5/5] remove claim rewards and change to just check rewards --- src/integration_tests/nex_prism/definition.ts | 21 +++++++++++++++++-- src/integration_tests/nex_prism/executor.ts | 18 +++++++++++----- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/integration_tests/nex_prism/definition.ts b/src/integration_tests/nex_prism/definition.ts index 481a815..2919eb4 100644 --- a/src/integration_tests/nex_prism/definition.ts +++ b/src/integration_tests/nex_prism/definition.ts @@ -348,6 +348,17 @@ async function claim_all_nexprism_rewards(lcd_client: LCDClient, sender: Wallet, } } +async function check_nexprism_rewards(lcd_client: LCDClient, sender: Wallet, _nexprism_token_addr: string, nexprism_staking_addr: string) { + // query amt of rewards + let rewards_earned_resp = await lcd_client.wasm.contractQuery(nexprism_staking_addr, { + rewards: { + address: sender.key.accAddress + } + }); + console.log("\t", "rewards: ", rewards_earned_resp); + return rewards_earned_resp; +} + async function stake_nyluna(lcd_client: LCDClient, sender: Wallet, nyluna_token: string, nyluna_staking: string, amount: number) { const msg = { bond: {} }; @@ -362,7 +373,7 @@ async function stake_nyluna(lcd_client: LCDClient, sender: Wallet, nyluna_token: return send_result; } -export async function simple_deposit( +export async function stake_unstake_nexprism_without_claiming_rewards( lcd_client: LCDClient, sender: Wallet, nex_prism_addrs_and_info: NexPrismAddrsAndInfo @@ -495,7 +506,13 @@ export async function simple_deposit( console.log("\t", "waiting for ", mins, " mins to accumulate rewards. edit the mins variable to change the wait times."); await sleep(millisecs) - await claim_all_nexprism_rewards( + // await claim_all_nexprism_rewards( + // lcd_client, + // sender, + // nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, + // nex_prism_addrs_and_info.nex_prism_info.nexprism_staking_addr + // ) + await check_nexprism_rewards( lcd_client, sender, nex_prism_addrs_and_info.nex_prism_info.nexprism_token_addr, diff --git a/src/integration_tests/nex_prism/executor.ts b/src/integration_tests/nex_prism/executor.ts index 8a079af..2d6f6af 100644 --- a/src/integration_tests/nex_prism/executor.ts +++ b/src/integration_tests/nex_prism/executor.ts @@ -1,15 +1,16 @@ import { Command } from 'commander'; import { get_lcd_config_with_wallet_for_integration_tests_only } from '../utils'; import { NexPrismAddrsAndInfo } from './config'; -import { prism_nexprism_full_init, simple_deposit, stake_nyluna_test } from './definition'; +import { prism_nexprism_full_init, stake_nyluna_test, stake_unstake_nexprism_without_claiming_rewards } from './definition'; async function run_program() { const program = new Command(); program .action(async () => { - const nex_prism_addrs_and_info = await deploy(); - await run_simple_deposit(nex_prism_addrs_and_info) + // TODO: put everything together here + // const nex_prism_addrs_and_info = await deploy(); + // await run_stake_unstake_nexprism_without_claiming_rewards(nex_prism_addrs_and_info) }); program @@ -24,6 +25,13 @@ async function run_program() { await run_stake_nyluna_test(await deploy()); }); + // main test: npm run nex-prism-integration-tests -- stake_unstake_nexprism_without_claiming_rewards + program + .command('stake_unstake_nexprism_without_claiming_rewards') + .action(async () => { + await run_stake_unstake_nexprism_without_claiming_rewards(await deploy()); + }) + await program.parseAsync(process.argv); } @@ -43,9 +51,9 @@ async function deploy() { return nex_prism_addrs_and_info; } -async function run_simple_deposit(nex_prism_addrs_and_info: NexPrismAddrsAndInfo) { +async function run_stake_unstake_nexprism_without_claiming_rewards(nex_prism_addrs_and_info: NexPrismAddrsAndInfo) { const [lcd_client, sender] = await get_lcd_config_with_wallet_for_integration_tests_only(); - await simple_deposit(lcd_client, sender, nex_prism_addrs_and_info); + await stake_unstake_nexprism_without_claiming_rewards(lcd_client, sender, nex_prism_addrs_and_info); } async function run_stake_nyluna_test(nex_prism_addrs_and_info: NexPrismAddrsAndInfo) {