From 8c8ca58607adcc2258166877aed294c18ac1ff0f Mon Sep 17 00:00:00 2001 From: Mitja Belak Date: Mon, 28 Oct 2024 18:31:41 +0100 Subject: [PATCH] Enables registrations with RGCVII and ETH --- .gitignore | 1 + README.md | 25 +++++-- app/contract_address.ts | 8 ++- app/public/loader/hamster.png | Bin 0 -> 35376 bytes app/public/loader/hamster_stand.png | Bin 0 -> 8679 bytes app/public/loader/hamster_wheel.png | Bin 0 -> 53859 bytes app/src/components/Header.tsx | 8 ++- app/src/components/RegistrationModal.tsx | 26 +++++++ app/src/components/WaitingForTxModal.tsx | 31 ++++++++ app/src/pages/_app.tsx | 7 +- app/src/providers/ModalProvider.tsx | 33 +++++++++ app/src/providers/PlayerProvider.tsx | 64 +++++++++++++---- app/src/styles/Modal.module.css | 67 +++++++++++++++++ app/src/styles/globals.css | 6 +- .../RaidGeld.s.sol/8453/run-1729970220.json | 68 ------------------ broadcast/RaidGeld.s.sol/8453/run-latest.json | 68 ------------------ .../RaidGeld.s.sol/84532/run-1729696549.json | 68 ------------------ .../RaidGeld.s.sol/84532/run-1729773387.json | 68 ------------------ .../RaidGeld.s.sol/84532/run-latest.json | 68 ------------------ deploy_contract.sh | 27 +++++-- 20 files changed, 272 insertions(+), 371 deletions(-) create mode 100644 app/public/loader/hamster.png create mode 100644 app/public/loader/hamster_stand.png create mode 100644 app/public/loader/hamster_wheel.png create mode 100644 app/src/components/RegistrationModal.tsx create mode 100644 app/src/components/WaitingForTxModal.tsx create mode 100644 app/src/providers/ModalProvider.tsx create mode 100644 app/src/styles/Modal.module.css delete mode 100644 broadcast/RaidGeld.s.sol/8453/run-1729970220.json delete mode 100644 broadcast/RaidGeld.s.sol/8453/run-latest.json delete mode 100644 broadcast/RaidGeld.s.sol/84532/run-1729696549.json delete mode 100644 broadcast/RaidGeld.s.sol/84532/run-1729773387.json delete mode 100644 broadcast/RaidGeld.s.sol/84532/run-latest.json diff --git a/.gitignore b/.gitignore index 482352c..53107fa 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # Compiler files cache/ out/ +broadcast/* # Ignores development broadcast logs !/broadcast diff --git a/README.md b/README.md index f044f0b..9552e4d 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,22 @@ Idle game & shitcoin advanture dedicated to cohort VII of Raid Guild. ### 1. Run `anvil` to setup local RPC as a fork of base mainnet -`anvil --block-time 5 --rpc-url ` +`anvil --fork-url --block-time 10 --chain-id 31337` -You can get a free rpc url by registering with https://alchemy.com and creating and app +You can get a free rpc url by registering with https://alchemy.com and creating an app + +Be sure to set --chain-id to 31337 if you are forking mainnet base, otherwise it will deploy with Base chain id and metamask will glitch out. ### 2. Deploy contract -Either use `./deploy_contract.sh` script (!! change contract values and set private key to $DEV_PRIVATE_KEY for it to work) or call those things by hand. +Use `./deploy_contract.sh` script + +This will deploy the contract and give you ETH and DAO Token (RGCVII) funds. + +1. Make sure to change `DEV_WALLET` var to your own. +2. Make sure you have your private key on `DEV_PRIVATE_KEY` environment variable + +Alternatively, check the script and run the steps as you see fit. ### 3. Run dev app @@ -20,8 +29,16 @@ Move to `app` dir, install deps via `npm install` and run `npm run dev` to start #### 3. 1. Point Metamask to Anvil network for local dev +Add network `http://127.0.0.1:8545` with chain id `31337` + #### 3. 2. Change `app/contract_address.ts` to match your program address if needed +#### 3. 3. Reset metamask transaction history between anvil deployments + +If u re-run `anvil` and redeploy the contract, do clear your history in Metamask under Advanced Settings, otherwise Metamask glitches because of its cache (?) + ### 4. Fork tests -forge test --rpc-url +Run `forge test --rpc-url ` + +You can get a free rpc url by registering with https://alchemy.com and creating an app diff --git a/app/contract_address.ts b/app/contract_address.ts index 5eaa84e..620cb43 100644 --- a/app/contract_address.ts +++ b/app/contract_address.ts @@ -1,4 +1,8 @@ -const contractAddress = "0xb2fc8F28aD37290245241C6cb0E411c9fff6A1d7"; +import { Address } from "viem" +const contracts: Record = { + contractAddress: "0xbd06B0878888bf4c6895704fa603a5ADf7e65c66", + daoTokenAddress: "0x11dC980faf34A1D082Ae8A6a883db3A950a3c6E8" +} -export default contractAddress +export default contracts diff --git a/app/public/loader/hamster.png b/app/public/loader/hamster.png new file mode 100644 index 0000000000000000000000000000000000000000..77667641220e7d4520b4604bb5da30e7eabb065e GIT binary patch literal 35376 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 R?^y#+Lq$g!tY{nc{{VI(UlafU literal 0 HcmV?d00001 diff --git a/app/public/loader/hamster_wheel.png b/app/public/loader/hamster_wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..67874569d3e9902419f3bde0c38ac4ff8aa99060 GIT binary patch literal 53859 zcmV)^K!CrAP)1^@s6fgSkQ00001b5ch_0olnc ze*gdg32;bRa{vGf6951U69E94oEQKA(g;aJK~#90?0pAVR9E^w*_vvU-Whrwm|=Q@ zX~1+ChUt`{_a;qH1ndfmy%+4g_X@Ve#6(RsMT43cjVUJClI$k?d;bUazj?B|Nmh3? zCWiNUzUN#n_nvdUGv__u_nmw1IZjSP7{U;SFoYotVF*JQ!Vrcqgdq%J2oDiX_w9S+ zbl=`bP959*$o_4sf;RWe6|bDvDPA$ZQ@nP`Eb-=^1>!9|3xXeXJ%=!apB>CP_4W`? zuL%PZQlz~GnYdS%DC|}8xV>UJ zy;ne`_Oimmduf3|y)gj+y}@3dy%aaM-T;?>h-2hKBbuh{O*_ zSVTW7BC0pgiS*pkXcu8Rm+xr`-@f+#TT~+z{qGAg%}< z;eycNZU`n4ME)O0t_yg|c~E?x7!E&@`ak7LQrG`~>;nIRYlgWaaJVNzoV^k1>V;r8 zPXxJoAduu6Fq~Zbv@^U(9Xy|S3Z9QY36IAghdU9sCrJ9llSriVZ@+&2P1=KQw;>GS zM}sX*$&8{A3kj0yFTmF8#WiWm&Af+N8UjsSzC?BFPHL!%)G zi-9O27E&q$DRd4rYymPvQe>uR;LxR`z+ggth6#BYW)zsLC^XqnV#`LUJ!eo#Yz~yz z9pu=7^6Xqxj zMYADiCPFXOAS>O5vYZNZwU1k0nqx{X$~1_J9VT&6u379L#~P(XTve8zKEAaf=s~yn z5QcEiz>bbo`n!0*k61oGVnuz1KMn5@Ps7XkX?P5K8ja<}_`^r<5Ao^e1M)FG|I?=={RE%?;Wj?~ z>|-Lgar^cs_~et1@bO2t@ZqhSxOMY=+`Rc7-hclJZhi1Bk%2O9;**bW;17TJ2!Hzg z5BT!SKM%@Z|MDe~zv8cd{hIv!6*>M2FPuGxDBoZZ*Bt&tg513k;^~Vp?*K&k1wz7N zqrRf3{Xw_+5QcC^*uH7$uf+m}k4}+9(JGTDnHFPcT~%3}-KdimJFH{!?B=maeC|GG zSQL0MG_WJ0zzh#VTu3ltLqkCe2}ft!SX?}J2K{fojQ+P?#?`l9`Tz0~uDo#$Z@+Q| zuf5oZvqyK~^xjQ4y>IhidUDqWoY=Jvz1vpf_|A1Wv3moK?O2Or+t-lu8*p+Dxo-bf zBHM6^$jQB1(YI?ej_%li!&}$j;HH&0w6O<=HVnuL?C6<~ciwn~)Zukf_C>sV`7*9w zxr!U_Uc(1Bu9E@a22S)IN2puSpbH-95deBXD7fL#;71XQ9T`hp?0DqpRolB8%c56I zZlWAmKcCXOW7Sg+`ga<_5WW*D7InIDXp!q^5n+9C;h}w;IO_9BBK|vZ;UVt@d3hqx z!wZ4#9#}Q28%MTnz^?Txux-r}Y+SJrn^!Ky)-}s<_V^*x7h2KXHWKqDG-2t~(O5cd z43>AbV&#lBY?$4Fna!nWFEpby&xp~v8EDQ=M)?<2G1LjQ}gT-AF(N;GSrA8atN(#``I1-B|v|{zlDOkU-8>?n_V(z#WwC0;p ztChZ1qerQM|ZCeJGpuNvBp7QMG%V?6*eera?Fkh0WHuUq3*84Z5;uMt1E)s+!5mDNzM&S zLb)T@)g3{uZi5q1{v%xA`}7F-5Z8Pl9T5MgT?Qwp0*3#6qRM|@vT6kRdq9T&UHr-M zz=YWJ>JoI-mt#^@0b24csL4u4u}On`g9_;~5%D6Tv2k7}&hGEQiw9QW#UpER;lyUV zes(V|zOWy!o!N~S53RmxMuslE*^|mkAAz0fUHz3X>eCw$I0Fr`O}n=QiW=OZ)NG zxxIMd=z6T1)`)f8qi}e`EIhkwIdZfLcnuo?k0*!2b3mRL0e6zRKlOL?v4|8$p4|jL_ySTbu4SZ?@yq_Ef?_t9bK#s$lUB3u+ zcI^*xcIgis;nGhC-yiPn(;w;Q+aKxcebM8I$NNZJ-W%-Z{od2ReiXxg^E*8K+uviv zqmRM)vBxp|u_y4|5M{y$joLV9|ISUNQwI*3ZT9jSFy^=zRXb zGIUqxKoJ#*R5}Y5J`d?^8q!#C(9z?-_YZ(x$h%c$&ybBBSwdMccQWNc|E5ED2w_WC zv9pZ&BDE~RWYw$l3$x5)?FLP|NgBZ8mM!Ece zS)SCJA(Qo{i>19P9)C}`i(9*f%WcR}CdukDP2viJmR^yeiB-}ff^-}zC0#(H*pm2^ zY-Iw)Bw+`I5o#5lXDDC?e$C*vbN)n#Tyzaha5YR28MAG?%hqavNpu`lX&{ z4s9RQSHWa1@p@wTHSec}U-5g|&CVPA1GMvS)-o;Gcg8KXWND2N~yBQk)3 zNPh~VDM7@g4aW4AQCKy1G8T5WV9TG*tV4@ z$E!{1fMdItZ8C&k2#mT!>%_4&;@YxIiCUI;GSI^h(f+}R z4GIH2G>W**u}~-S@$#9yc;}T~Tq3UVuC<+**qDn_YYJrXkqB~khTBua;QsiN#Qhyc z;?Us;^YDT+o`H(YOz0(2L^!*H?H`C4&9zuHqy3%|IM{t4)^$b@iEX2uJt2vRxg!GK z37F9l?S3QN5#i|r3L&u<(bMhmC*VQEhYT14=K`EZz;F04gp+u;GEIsxW(nFYGE8)+ zu(oRy&YjwaGspL!RIfrwiWK=05wb-**mx}1xI_{X!H>WKgt`#|5z9mwF#;54H~5b50EszKXf)u=f!$~>DIsyG zJCbR1Y+2NWb@RsGQv%aToJ?X}Vj*1-^;lYcZ{*60@2s@XY3A zIK5>tp4+_=FCN^03rDtK{`gi<1N;%=;RX)H519)2!7V*YBCovhveS&otzP#^mmxeP zxN+sxUw!!Q8?K+;d}l>jo*jXn9)q*JLM9!be0ZJ6yZGdTEBN@voA~(sH}D~m5=%Nl zi8~zT;(brJteS$&nHB3A@y@boVzy^wAgz_;G_FCgq_&8A-r$*+L*NqCzo}PDf_=& zOQ+!A+UbO#GBRLz4!)upLc#=!v&&!{?)Bv3@O7i&4({22Ih`G7s3<^7O)yTX3R$lX53;!BCFjjpDImkHzg;v=NNVE`Ihwd(i}^BO;J{> zNi8)pBPr69M24oa*jBQ6&7$xldp5cs+`fjoWBo$$`sLHbvnMx+o2# zyX~tN47;~IVhBGQ6xfvtc1$3m13gJ+@<52U2SR;4z>kkX-+}G8+5Z}@z4<(j?OBb@ zJ#(;-kXS&Yl1?}rJ|w1fE1W^^_bTwUGSJnH+(QH%J!LTWs0Y8~>@bZ9Bf$LRw* z@#67Am{4AbI!y{J946?*GNsUBkeMt&eySSzIu){%au_8-$YNt42nz+9xW=rY0SN&s zI24?aaBzaciM1!kL80K1b8Jco=sp316J)W(`m+7~!3zukKQIsi3K5d>DM5q6B{BFw z9L^@*0fSgN8X*-cFbHgtKRYlOg3xdXLc)*`8bRXda9BkwEF4>Vqj&4lgwuOh2@b8B zuYKX*+E;e>bYaEhdQ_yPfaT{87KH*ZPS& zo*tiiJ@y#99)BEuPdwD9JLQzAPW(ni?@M!!F~n z!HXdE3i8ADW%Hx&duJKKPYY{TO!KZPG#rW!@IW-h3yF+q^vv(Vo=wZKe%UPa%$tJt z#!_S%lt@h$K`rG$naBm77WLPdK;PG*{Cuw2)$%E;I$I>`=CsoHET883eP!)fw{q1p zhY!P=k^(u6Ml2H@XO8a2tIwT4Tag1zq|+D56CewZf|mR*mBkR(2@UZ8Fc8F@knDaq35uWK{|5=NsU}4NtsAz#Umv;5*%XX*xr6n$40{4;K0gf!A!0b5G_lS@wB9g#EQHl`Ls&fBU zpOyMXwKnN;TbAznxx=gfc5vMs=($uD9>{O+mKBdIoipjl`_Ns6@KeB;#v;$!a=W82N7tcO@n4X0Bfp{t`5->j z4<(s;y!*!Uc=xTdxN+%uyn1FIatsPY66-Y};eOr-_3;ED?(N}bh zy?yIS`4^vkh;nl#B+)dmL&I=j+a{bkv=hbYY8aWZu<_ziAQqxRBSS4Ica$v+EtzQ; zot28#96d<~j`bLmoj#b3wx^=SPOQ02i)OP5jTtEznU;haoeU)^G4yO25{R`;AaSIL z!$65biZZ1P6>2#V87fIyrA``@YIXA8MU#wLT{7y3)RSxKRZ=vN7`0A8>ZBm|rO4nQ z@w_4?8dMU)(n#!YlW_6MiA^}VaUn#+A|^&eLKYK+!gN*Nb4NBk@hUHi=p&4Cug(y=C z&|YLdujEjBS&@Ey5_Z(ad(&Hn@RLKbAYQ_V2tbIt3n(tb5$^sZj_p{9*Uuit+ZT?Z zEZcxIMFKKN=S^V7fDsuqXmtltA%jZJ#eI;>XY6zsRpED2?t51*%=zr2>!{BwhCG%5 z8gW%q_-x`D3y3w1g@H*&o>YWNV(F_jQq-lVV3e5<(?$rInTj!lz%7Kd1Eg*s=SOC! zP@R^HN?j7^z%mpo5|K+h1iO$)tSYh2@zD^6g%AP`n(~oDEU#V2hK3L=kyvK|iDQMqArO&xR}vZu8Hs%}#UhvlT$qUKYbDp3 zNoo-h7ncyrDCGQANsGRsj;CHz#mBrWr$+QkA|pN!5CV%xY?~Aj`b7qp@vc?K?YAXx z`-w|_*)HN-%wW;Z=o!=#dUjl|S;*?mNfz~%>D9djsjBxQz1?6NRXESg~kYYukd!%|G}R(!|j< zznRir@3~_3_=vG}1;qpBK6vNCld&OQ8$6!+UBAl{zv~b2a{tns5LC>JMly#AdayUH zTs(!(KfZ!bZ@rDOd=spC1%%WPq_AShpyDrXE7dSQy8O(q|M%WAga?9jjqtH#F)h%n zmjz3hF`v>XzNDjhBHtiK@1{ApaBLM$>|6}3hy{g!0S>XU1J7?`h}hCpJI6KEh4E++ zff9bK^SASzGP-K4TFm?;o>=lxWjWmMD?i7qPRX^V@3Ew+HY-KEcN8RE%}J8Nkt{`C ziX25sIf{vUT9hI|K~f^Ia6Dx2xgT;v!uxrFq5Yzehz})^(GUa%gX!&qo;lsk)mb)K zmDwP!HtWR`t4p;+RINoh;BO?RoTU@7{mw3DYyw*O}t}#P2ArHI-!p6NlbU zKMl{Ph9S_y9mRGlCXH=Eb9Fv?4{yUqH!tJJj@2kMD2Xc{02L$XbCW3YWVYze-as3| zPYjx54xd5wze11pyOw9wprt$q4Fx9bSv><6j;_Gv=eJ|~(kX+_CkH;P7c%Jw8Y+r< zS}IGq=~C_B3fvA~UL|ZDhXq+y9$3rZlXhE_YXJP0qngo%|IQ zj}L=H2D>T+b`pOUsEE5uT;3uQTjnN-h!u^8E-oAjGI(fXBQSGxRei2bL$OH2l%iB^ z^r*ZXd5zhmskK`zZ@qqjap|pB9=r6$D?b=l{sX+INU8 zJe7DE4ly59BrK>W1LwqI(_d#c6^g!{-|78Z9+}os6_Kl#^i<`ie&Mv zxMQW~y=sHvjI?YialPf?VT4?feQ9DohR{_Cl77?rk;FSSP(BP^eUGO6bTVw zNMqBHMZ%SQF^j~~Jd`F2P^C^lU78rp78NGe6x1x~o+xfCbBL8(s(9SU!oWKz_xPbr zzyHT^ijaF$O=58=GZvzlFbE?9k*VS1{K>s|@9h_`Yt1|qm{h2)$iwJ{QpovKg!?-q z%+F=jy=a3W+-IbS89Rc#hNHcq48@r`ka!g@oY;g@`xoN)&beTQ27oer#K1(-4Yh#f z;D!1))ciQc-IVdxYiEDmHKpzCP#;$~Qsro?$wftm3i*Vn#VKNxC?zNvnDNysQLIUV zL!Lm~=fvCAMD8m(T2x=Qg#YH`%EFTS)drKBNA}1Gp;R%^#6rgQW$98V_oEyhJt|N{ zjXWcXi|JRf>HRhdhs5+OLSPPxi**Y-F>hKU-n)7cpMUxx z#x^%1!q*oOe%@HWd;vPgx2nBdpY$!t(cf`-L--MpZC0fv@}j$itnht8R%E}JABXx% zJN9o~jMK+9!=g)ol1GDt9)TzyPl#zTpXFz$7xlmK{2jTZ|3Lp+&p)Ekhy&NGUQ|AJ zW*4}j6liJDuqLpOM>=dF>97N7wv-F2Fdlg%zIDhGVJ9)}j8QeSj&57+dbW4B)4q+% zz5BMWzi%(+PaIX-lM)k22pkCwE3PjmO+mRI<%}Ow^_x|TX80c5wuZ8O#oVx_e9OiH zMZ$CCI@y_8t8R~hNBg5PHXNGRNTd^snZ}^PKvEMSU5=1}0x=u487W`PY^@AgG@+g{ ztv1iEDKGtr|5Wb2P0O7pwN&xSv(v>D_KccnZ#TsHdxIX}jq0K-Y##W8@z@?T)>Pr} zo_(0yHWpeks3-)nS1Sq~b1RFiLj?XQVAp7a=Bae2P&P=JREyh+@XZ%@bG?W-_r z>S)v#n=!j{G~z=2K=t=Qw66!~!M>Q*Tsv#e`lTU+z`wei@(6){6&poaZqO!uU0}7s z$YUW>#D+t{MP4Esc_Iev0vgO*DomVcOs*+EU1>DU%$6nY=&UPGzxLLvcQs)Ax0u*e z+oPmLK~0T>jzjOuO;=KWjB?K(-}}g!!&_ZXAK2h*kn_aC$bf!Mpf3_a0-t#6^jmOU_YYld_-5lk)rWl7#yjvh|v~Dbu1%ltg$BM}(I%qP$(fj|>GT zE&@^^9UIpz!TFg*OK7oysI9Og zO(DR9F}1jO;S~04UJiC-5W;*t5$f%Z@;no^uUm#KD;D1FYOVj?8RYLmO@Ya)u_Ci! zad-RX60`PpsZoWZ3=K*QY8VN5^~9Q3h!w8Xr+m`gTwXD=xumAEKDT|#@-F}TrS}hE zQd4cWCXNan5u=dPSC?m_{MdD{>7*2cj6b&Ano&M~LYsJOaqc-Yj{ze)hFIfp7>GAy zWJDr^838>#9CqSj=Sev?i*&N|yDe+;ng!7dXHU}0xpAwa++7jr=>ckxHwv=SF@EA0 zY~8+*^of^HnV$`AxEJh_h}-kp3LN)A?IGL=#x&-KXp?y>x%7zM@}i6@fj+~LZBEAK zo-Sl&q+lB%YK}>Z@PV&`A}Ej%mu*5z8J<6}5AVJ8%H};Am$~0bIr*8XzUDM3#g;0~ zF)4&!l$eyLu<1~foq_6119DOoka8HeIk8dw3Ks2lVVdHPhqrBH-EaN>6DqPSdAyJy zaDymFh>7SktK^giQIC^{c6>AWWK~HwaYOvT3iJj$$OlQ(FxZLLl1nUcZW14PDSQ+t z1UH#Mo+CYnJt}5Jh9oSWG3AavR_Hsj;juZ>Mz;~Gza)hg3Blm=XRxO@_d7Ujdv~4N!>{>(;w=Fir|Ep+!uP;in^r+1>LZ3*3MZv*GS6^?v za_PDMSk~n?pZ|?rpL`*K9@Q^pQa?%+b75B}qB1iL_4!sbml zr;V*DNItTC)9@dmDZUd|-g(98oy)I25*HpKe)93h2EN)EkUk=m2UVwkz@n9>7?Km( z9R^K%ZDDqMV_8mhsZnz+Pbo&eA^}CJM3kx}P%|TuLJNgK!v6Z`t_>q^y!8tG#@pwA zFx1(*V@ZfzCA>o7{V#Z-0bqqt5bW*&Kj#q$_I3d^)E7ksHXJ^<7ybR0F}HIv(qxIy z$hau5Yd`L2E*pHjwVeyD47n%p- zUj{Yoc6>}&pOjDUk}xCpCo-tWBAvu2iO2lOwfOYIH}`z}!7JkLD`VG&#h%;NE*2j< zxRu{EwgC=x67q0_)Ao(aWItjP{2&N{A0Y((6(=@Y z_|y}Rf93QOBJjWB*`qsuV~`0?DoJcCjR{9eT-4z5wz)}clqh+qF)Q(W?>-#gyXCEu z2eu~sP+o_&E*Wl37Mzzwgh9)Wg^9%2VT8az&dvxPF$@929!Cg?kGm$d{zzmObSheL1)%mxnp+1;4t{JbscoI7| zFT&JuO~}wC!PE6AM27nH{NtWNi#9hV*b7sdir`4)LoEnL0*RN4?RuO#v^Q_yniGB7 ze|_@Aj&EiqYl^dutN0A4MI7X&t5KC{M5Wz;a*GZP#kQ~QD#;2{a^ep1zn*`u~p6;-vY2G}zeQn%# zUR2~ghaXgCELhM<$6w9VhxHNBk%X_sB^Vx83moGVSRIs9gF|sTd zmtKDnwWawuc4#NqWbhEuW3X-YoXi;=|NOSt5bgoqC6*;w$hyb~54vtpOTL>{xj! z&cmB8KZo(7YZ2(>41+rPeZ5vOUBqWN{&C;b_PT)hsDQ84LOQGp9?I-WXhpGTtu4aI z!+Tawo7@tyW9Lfq(PKOF$2OFYuP@J?-!ZD@519%vta2fYvIL|GxkwYSkU`?LrjpG5 zH4D3F>z2;)oX}Ep&tAN^51=^x3{H@2Oc?jWXJFln=#ugPy8}hnMf=s`Mrq8 zl&vIfFNnwFQ4L?upE2e9)b^$c@4bC)(4F49eW}NiS?xJndb*#>5XK>$M}>|X2O}AL zOJz*#SUThRzI_|xP9E6A?Ax;@TE?cX6w%@kl zVZx{)wAJS!cVN2_Z33!{a^l8`V3)Cx93PH`LVLrHt@k|u#p!28-~n`vYkG9zn31%F zUE|f$MptjMr3g`+k%9`N0)_+z(i8dUZg2T|Y;^$%Z<0`%m5Ovh9PB~{Mipg#U0~3@ zkuFW>oHt|gcMh@^gJqUdZbg264T=lP!HEk)U8NO$M|WZ4#4I_CyJZ>1)R)1Qu0aBqjzk{)3N13A_t5T5|IsQo zHBrEb)Pd8*}<=DBo2RE-@Lt|M!RK%*+7iMpy zMTLspFLz@nO>mC$e2mzl9>MhldQbS#-U1v(O!`n!)nZl>wWXHFhg z-)-LIndvL*^0L0P%6MqWH^3;4M>QevXqy_->Pl|cWLu`$HS&d%#?(;mgK9q(C{90f z0vlBcPiPa_lzkgla^!qE^kmRANV(AP2!WX~&=a>=#fgSJg^g*A1-I++bZvKq-hP%E&;_IJLkU?Tqbngk z29?=*B#UCPX7N;LB`l0A%tjI~9ttt%s6JJ;rlqCI`)>2T-ha-zd;O|wDpovkniN0p+?xWUFN#e{}7wUwwG>&EMS*y?#VcoPOp6{x0N2!HEv&|8Mes_v&-M{@})o zv`OPD-yT@3Zr~NjN~;FuL^fDtW3R0!W)e11B!EtqFbI~0w$@{M;x9DjaR{U*YL;y-`S`^uJ#OkW>((|W4 z%7lbi{4n1U$kd4T+-toa8Z2En@zIv1(t!Br@NRl!7z(q}&@rkQb2>*u!j1wx)C*1J zj`zzQru8Wz+WP;d43mQ0o^Oy~Y*ii#Gt_V>5@8WDzczBI{W(g}{+6nopYmg&y9LGR zAtLa%F>_+`hP*Thiqga=BHmMhMuaM(4AV=~`d-~KMR4ip>hGM${2{0%f}#a8CM_CR zfi#lh0Ub&AZe4{1vpTS4^#bDc(IH`kKWo;AD155#!_-gi4OT9j?#YY|xj+r0+-_~C zh9Z%J?upIVvT8OakFJ4?6Z;8=8vMCARmQp7yjyB=hF2FD#TD6U+siE)G?d#gwk8j` zDLgbdw9l5MB~oULu6o#Bp`$oGqy$b+;dvHWlqDs`q`uOOBxK7t$WtYtG?{@KCHGI0 za}+Z+&uYBm1@-=coBeNiPy>Cwj0^GuBRmil4kK31pM+z3*I?&{#o)z-eG%s2+#et8 zKJ$L)^|QvjITL9~35;i>gMBbzY&|BoH^Z8$fPfYVtu!9v8cWBP=Nc*eO*6+|ONo<^i zTtegw5d%}It?xX$XYqHwwe_E%lW=C5mEzSJ5xbu<;z_hrI4H~zsWN$*rzw#%Wd!*ay7|s$C`!cn$(7Uo7OF1XkF{A|$CTs>SOpvy{fE%mX4z~e?&WBHO9Sg~jtYKyZlu$PV|fsTcp&HvR} zzj@heW|2+RUt&o5JXN?XAiTIf^t=jI?O}*qEuh z+EQ%fUF-jGR>pXMpg8?P2t0sMwfO|*e0yL3lyhc5P=7v zS0$#WCh>a;(^60~u-%MZ3u#O+QfU#GTxRdvwSK`J%^sgPw#oNo-?q7V>6!&Pi3maN zE(j#TjSWRjNgmFfJ%N+G`_b9ngc64h#hDrJ%$Yjo2S0aw=#XvDwuiX8L6IOr0U6bV zj2KKG--;}~29f@ri1717xlj&v zCWjGCIjQI;zf}=ST&|ZxA0L7G z4CV9JE*!t33D6m1sv4)aR(zRn)F8;s4WVuxh;a8pgoiuCEINvFj5yV|8&k$LV^V7~ z%1rXlW{qta-@9rl^M331lYl`j>9(Y*`{_Y`Fr*}4+V~bUR26~59NdD`655;_H6b%QO^s}= z0)-hW6r{_@aRRb5qV@-6%IU+beIp@|BEJR$@MAwl2=2Y^BG0WX{a zDT|5>bpoF2+lTkBUc{1lUEoLhq9xCm_MmkBQDC#_+w*g5S2I&pUrr&T*O*cZ#uS<$ zWX2*hBMsCbFE}z(tBxPoc;MLHb?BKj9%(`v(l{|_F0i0TmjtVriAqBQQ9UlGs;)2@R!lN^NS%#D=1We^mT;P@I0D1Rg-wlot9Q zKYT}FO-?{nh8h(E-+(95k;;xihJ=gRliH47x_I8@?8yUuR)f;GWZ|q6^+kC|hzdon zj0ajdhyR&m}3mAh= zA`tU9Uva5)$axH`Te%GT5A4FyMavKs;7>>#*f*)J?BUvEJS|yl^cp_wSrLoVZ%9$0 zDl-+6YckQNcc#NkAW(FV9S|kXjrjO(j%abkAg`Mk3t0(Sz^{zGb{E?hA?*Dzvh=L zW4X?pHu=QN36lo)BF4N~ldx*tG8{dA7)N^#BHx<+Uc9eMuQJ+a!GqBEp5x}Vmz^3b zi)!P;L%@%VMxoh&(M1+at<6E0zX$9Z>G@QtOq`Y^6#u8Z^3B@6RAd@ZWYnU)st6`A z59vZCEOIVtOvz{~G@{(3Mq^2C_m803PaPDeAp#HLnd5tZm8X$+u$C-GP}7$G50aahRFB%w0LjPaG3gv9B1 z>i3U=783a4vxj!y(c;}2Ip_4qk{nEFsf9Eq0umyoBoX*gL6AlHp}pMx)`a?k6C(>9 z5BFrkoq^&sMBr~wnW@jP64$uariFmw0a>^|lA|cl5E2ih!Z2UtYh)N{%RrV&+Ww#N zyZZL)zg@X_(Xvo)Z*Zf-F>}f!tX{i(@RQe#^Cn^chIwQl5ZVcgr?FY8> zu$jKDkc9amIr{GePKpeKBq|u$DjBZ5dH%w_Ei04nB+u5m>UyfbH^gxfC?GNR()k^D z}`r;A1_QDaQg?Jz_*ar$BTYR6@yFWYF_3PrT9 z7fS3IO-cOtiu%&r|F|370A4zG>{rM4?^se|w?aOnj^(4&#eq(Z}tM0=&JVePD1 z^}^1Ehiew_zXQc-h``_AmW1 zOD}LfdjGBO+}!}a*9x$Ba&^ILCpO&i3qLomzTqko2(5bX@4{V%YcK9^3OfVSLyLlOho&og8T@?q?N+hK?h9)|%JO9>2R*$3cCn0CnjS zqzhvpV}xC8ug$;XFf1e>P81!+zO9m~E^%Y1pC!hIp`%EP%defowQK!Il_w$S$tSUS z`J(CNHl^?V)b)Qxl2|f>78HhLdMs+KdQ5JrM3ut=yGDkZT4fcb74{`ar*eNCA+q*r>=5v*{2)ljr%1ofkJWm1rzx8r?>n+`ruY%ajxx1W`_QRDnansz^)v1CAm0$XwUxn zvpcB+*X>_DFQD0`_^L5oggRpqauqyeD};ZUIlg&qxlJp*ld>X$;~pDTH-`TF$u zbT!iDV)zex0&*7haO&l3yC1Nn&UbED}DtTWSu~ zWM@{^7MK3pGvuusmRGM`HfwLbP4`uSU5nO{xi47x)b^Tm=`ZQ|FvaN?O5g!hb~Mh_ z=VZcSv!l)?L#AGc^{eK5{OT)b|7~OU@hvrm>1}P33T>u~xe5+)Qv^^mqv6mcp4>L8 z?Ts~)8dC1G+*DS4uRflRgz!+XgZO3k-50Y6~-wnX0&zK%;(sH+gD=+`WR3V3@=r zA_C|Jw)`ZPT^tpPgIm|sf8TxYy!CR}iDSEu<>h96Ra2ac{0u2dv^;b+6ffDmdYb?L zuI35X>YeU>L<{;koXXt~omWF&BV(|If;goS?24-CMlvK+ko z(FZ6k%)`#L%SqTL`&7n=IBgNc{q!cZ0^D7}j|{}Vx{G!o0%*|3IYkxTv%kNP|j{!C@eY5O`b9V*3x>+ckBp^Wnn>Rvg&16$J(f z^7VW)l$k%xQ*$nNjj8?VPv`&dpg8@)2z>thi^9c=mR>Vzl8~jBqdG&6aVc!fpHO$} z)U(HgmoA?D-g`4tGH!~Hb2}rE1BaZ4oD?Ap0tSR3e#EVo?!41F~w{g7ZEW# z&clls9uB6qm0`=e`S{|K>u_Xf5$W~>ETX9Pd!h6HjAWsh#*Cs)mT-B;B7A)jA3{N) zNsrdj0u-cc5$^2;rI2&3cjsEaJI!-qdmYVUR*T!J$}jT+0->POP@q#n$EKn#(_mXT zVT|~>L%aUtH2>s@9V6`4^p1|E@*VkR87xUmSb4E1&QPVFduAWye^UIX4~o+-jKE{s z8@EiIHW}756^c!%C^4twLf^sFYZuHAzj^V(4?c;A3JG{L%V?nIrE3MV$g+R;Uz?vY2Ln?z!$b(rBk9<{v_-^ZXKcD=_t?6Lq%@R=lOR1uDi{r zu_V`Fmhx`f6XQu=;lRL&1=Gg^C2H{<&EJ&fnIE0oHJ&@Fyl7E4>HkqKu846TfeMQf zn|r!&=Hx+aU9}W+m*J@8hoC^to%Pf@W&Lh>uhRv2>%PivE8pACFFZcA1EVQk~bsDWfXo19?qsEu$4?>Nn@6 zXIxLAv0+XS!Ybgy!eF6Hqu6tJThH$Y!s$>oUpS;cYg2kwDxpGbdZPJ)d){N@WZ1KN-S{Th!HTR zh_HYA5^P*G6ED5chr?U9gYx)ei1u;od-t7}AKVhhi)H}BKs>)q7c-+G`-8l^QJx{k zrrBdqooj`d!$JtLx@lq&##I)fA=?TAmxYAD00;-gAEH1%NGLuSY18&RcWm<`6%Mml z5*ydArg4$M8?e4Sn3(a%h>b;#Sh)Out?QW4HNy&X%?0%(`5%_*gH5e6{CJs1!~H&P?aJ2;`!|zaM`1p$7j z)=1Dq`ieLr2poT3q%f$x&-ZQ(II?*O&!$M|Q}LL$WsFz|s1XpvghLz`2|;88#IbaU zqGG`fi$I(|1;HegWKukkr4(S-`lWdF%o+Io{<^#)jzli<)K6U(P1qggU4l`>SMNKvO#qScg& zEV=M)vr^nMGC%jEip~Fvn!!P?Tn-LbLlj1d%<+iE3P)ao`E)~(6QiqB$REjo*B+X3 z_{jD(H&feLhIJDX_>)f$-}%bRt8@44d}-FA1+M=aIjjneMJZT3b@=c0zqvW%(+}V2 zl?Lk;iDYH0T>9mxqAWD0#v&<_kWwtdq)}~{=^Eda5oMJ_T=`bwI-8BKhD%YIk8 zo?!F3Ree{lT-v(nxySyL<_^pmjx9{D( z)qAR|`DB7k`DtZ#9EO)?bY&Zb+YfAiUU}xD|GrFgsd#PUvjf&Xx-6n1Kks`bAt3c0 ztL;`u0{oy1V_*~r5F-{NBT|L}tpdfyD3qDCD7Wfi5b%g=9D<0zU`UB)Dh&ukL{Knf z@fas9bJfAdM&*Poua(c@x$T8>;o%p!vt z(BF=OIH1b7WXIK%y8Q)%|HX(NX$`RQ@5 zZFoXdYKcZFPXs4dfH)EhJ9!+$ktbFLA#turkHjb?EaBm>iNuJLO3;v=@a|V94qnj; zju@3}S+Z76p61CIQJaUl+$2mHQI~rq&v_NVux=6puXtz{^U=|LvikCz{mtcBnAJW6 z3n#Q%bl-2YuMYlq3_$B&)>cGwde1yN=^W0P=BOFhG9i>34Z_iDZH?5 z4F>e-3wD72ajjB*bzEqLi1%giU~e#f0f@62krEq?XIC!AqS-SMG;k2~3i;Qauf8n* z_v5y0Su?1uFux;JEZvi9$R+$v>McBk=`~kGyCT()Bv1xU@)Li7!8Vui^6# z_j_OI>nTc0+_G%WoIgz&GYaih85mugiv?5KHjf!qu0Fiu#lctl{8tDJ>n0)a6OS)$ zYN@Y4(~wfs6(^!1&4T%pN9;O#;*j$EiT6C}r*^pz2D6tmmRG!O*Xe&?`}o1GjD%Jo zghs$YiNpBUbfvhfE=K#_f`;Pl&p$kE!S;<04L$J28o|LG8~&pRVt8)er+i;us5pKY zo$JIW=MEDWdMR( z`>|@tVmE=qd10qEtzYwBcM|M)VP&5;H?H6u+`Ycv&aDq^D6*&#%jY7O#JxEtBg_H` z9N{8-dGfu>+NAkX@zrN1gZ3YMXF)|x6AH3(P?D8R;`n@QTD$nWEvsg~`f1m3k878& zBQUHRh`^tp`RG69Ikvp;jAF~CwM#ayd;070v^Z3g`)oo>$$@FDrLJ+q%GhU*?Z4v7 zFCQIx_l|QP9qKRRhwbJ1`ytyAi!_TBO5#RaRPuM8T{1Il`^Lw--|JX^(W)iau!i}H z5H_eQU1*HN&exyAvN=<5|4bL2U9lWWCJg=q2H@<8qgOV;NE0Dh72@rUDB|kQm^2ED zh!U@?Ta71|Ek(#6Z-n~!?)lw|8~a{toKeH_42|U}Zzo6vNS2C`W2V_wCRl}1*u(;S za%|sKi$h=8w%s}9p(p+_ZSmunHhUSGD>E==L>1Jbl&G*6pPYPxlkDgZBwYxL6RM zfDE%4IuV}`SoXrDj5DgDB2mZXBizRqH4YuNJiQQ4ES`lwe0c_MtbYzVp^y-`Kfe6< z^nZA-y$YKyauu7n0#Ys)zk6{#e)q~|L`uX6^$vtd7Wwyhy?*oO9#}1nkmFKwLSQDb zaK6QYbd4IhB(9DjWKP$~FS+H;ufeqTe})1ndzv_PREp{ zx*fGyDf#I(?N#3 zCN@-SjRNlX%Ag>m8P#xVm2fo;#dlwPjK`NOgfJig!Gj0l8;HOZpPV~-_b2C%25*1s<;;?j?0<}E8iJ9PMW{}5o^LA6TKe4M3kF>ay&hRS zD#(X6T?O&+-({Mjk*?JvL7_s7T!xBx$FVJ|7OO5c&fJM3LfWcJ+lvz7@(nV{ zLB78)CJ!eB{^}eijA(+Bj4R`Xp|+&prQt)X8%`ZP+`C(}f!vM*&k zF(-5n+h-8UGZXO4@)`Kux>Y#y;Za!BT6p*Ahe_?DU;pCVncl5k7Y2tUdEe{hUOF09 zQGyArL$Uj1?Bm{0MDYW;h;+KKr z9~`)&eMIxn(Zg!L8{1TmkwqDQUO1uUp=+(zC4gbwU<58NDOlt^co5YWUj6QcQNp0L zBIB#GA0D`F_I1vUvlo~}LS&mw#Mqc&5sQ&)*8X$lv=NgoWgMGY^S97JUP!m;F@JP5 zUVH9QocZVoOo}M@^cjFL!&~Q``LLIpG0J#co9}&tzz?DX&c~?w5**pzfko3Mg5%{& z2&}y%0vD#nxok2yG$Cw^D@;S7Ee7$Ckr-N#o8GI6{|X#F`mSa3`n6xAM@7D#9x0_W z>tl(SuC-nsfMMM@1g1+t&k(^Kx8MFZum1PFo?%r>=TB(9zS_!|g;oniaTFbEYnH4yBF@lN; zR=%I4GeRB8MqQ!*+ngFHuO@HxME*!*FA*D& zYga{baWJgwpTP9@(-2uj>!sTmiy-eUV|&VoGBnUVLgfj=sAWDuEdO{RW^oEAx_E za*t41kYfuRI0zDAF`Fw3FnL5R8q(4r>hFhCoBgAfn#%Tzjj?F!y#Fx6y8a2A zOymr!TgQ_D_w`w&x4e!;&qL~xCmd|!E6B?@@NK(m=XSJgyBM(lc3h^QlQe;w_ zC*#OC48+8fO*W{|R*{Yu9$$ikJ3Ap`a}n5YAljQ6JZ_|SQ50ol3Jglc0-IL5O-@cA z4i3T0@vV63(S=CW7{Ck|3^|vV=*d{GZd%t*!VcL-7p;e6r4SNlK^+zbgHVj~$Bs&S zP3bEK+8XF_BL5`v7b4|EuA3O`Ctz6DFM(<9@?2K;Z}?XtZx9K1Y{|Tf<_=shXss)q zY!(ZVWwxR&E1y{6DCon2QJHKR>dEn2Us$7^KV?F`g2VevMvU3y#u_{_ZyNFwW6)Yt zidda?l|EAbiX~d}>$eGtHJWXL;7|n9wmAhQm{i|{RZHh#%lgL=&69vT$OppU5Sypt zi9&)qs0&e>mWbg+InWUctYY)fb?DHIlD0^1wE0B-%<3ix-OTxVo1tb{*C&Cgi%CNe zs@Hc!Xm`=;%H#3`wFQ~21_2kD(H0EJDL|@PgQ!qHG-O%d^mL5EtQ@U^FaMtF8;U%O z0j+sS*!;v2{Nd}55wAC+|6TXMtAGEszgk(FPHW=_g&^452lYAmm@u>+Q%AO7OhX+a zeS;wO@rOnvvUxJrXI)3`)<%TyjN}VZo*0MLqHGxXVyHs6cy`5#8)+X^dehaix?O2% ziC-l0iyJ~;BQUJ%i@>x_mzHWCVRh@YhX~#I;D)UF8d8|;GVr-bHAQ1cc0STIT4+K; zkZY8`|L)dR9vPzCv`l-XNC}=V8wrsz49j%53HhsOLuOlfXGMQRFSWpYFi>#Gb5LX1*=(WRfyPVT?wn@>LSO178}Xt*L2$JpHj zHVMO_X7e#)^yvTDFY7wRC?cP-x^GJQ^u1nUIEHoo5SUI@HLy6MeTx45RKfL|w3Xl4%)s)tm1kaCl-4J@b+d;Zn4VzSq ziiA`YnBtKrlcFTX^m0bDWoC*&zo{f6N&l;qy>_6prth%2$?_$U9M-j;p=Mau2Z3oG z`HmhvK4Ene`9?@Z{huh$NFo+E4Do6;D$=u%Lx`NJQo$k$!?>DMjIPSEc{0xZGiDlX zYVDygA8$Bh5=?5W!2f-69LaV<;JfcZoYi*f_>sexe=mtS!7iS!H}v9g=)=XB)KrJ> zzxoUn8Cl>A8caw$(4!5YC=%3iXgC}~+Bg(P$0A88LUVS~*7HZ+zScK;Z-Bajw2kS7 z*lrH%+TN%P>)H~SR_D+OolkmnI7TGwD(i5?@Whh2yr-5fT=ww1Ij5a!9nwh*+?bpQ zvp|T*K!4<0jV@2dvFjokDTmX^@%Dv9DnV0m20lOY9fk#AYuv#T_p`-;~y{}(W;%y8q zFU8=#_kw$Ge=MoUnRD3+hWUEC1U|m*>Wh|=96U0AI==tr3shv~Ab6k`GGZ(**X5?T z>T{D_QyMFW4$VriyIQK83nn((S1+4x>)8CbZpWKz-Mhi1MQfoVPn1Ht1tmrUQo=>3 zO|oB`u6$Pxbh3taiTIw?y-Y%9sILWy8P>HSFfB%ZrRThqy!7U~-e%}~4G+wiGJ|%W zbSh*RnVSKpQU-N!5S(hI>)*e-{nhn%u6=T;dft?_;fc|@Z*(N?6$JQ$L)>S!w>L}@ z0U>ZYP9NKav8^re>puWt_w~d4()3FzTl^V#KHe^&uOI9YGK{Jy#M*}!7!DE-q$whhp;91A9f=%`5_wuB@`)7a$$PyDIxYiMSQzpxCKMTTND>Q3 z;BL9u2uwjMv1o_ObF3d{T&-7G2ZnWZ2~54H5v(64st&NaXXS4e@9G!fH0YCbd?6vQ z6r+fT8ZVQBO$?hxBo~Xc)7ESQaUeNLB6lQOXL>-YeWRbRF`1G%H{a(>rav8j7LEK zfv|}sgp3-Ln$)PY>QP~#Vnn%Fj{=GE)-DZ`PXlptEfgN7Fd+83)-ry&+tfVz~J zn~}g2^v0!`Ml|;O8L4y$P7l_DUHljkjjk*Kytql9+8 zml78`Ic81o{hZe&s7tw<)lH-?h+M60B^lP$Auw$?xQ*3qb?JII%^ANQGt;gJlwlm3 zUdTrZxv$5TWFw7uoHlY_=jwIH)oGEfi6XCRWUG}ZG)19^7`i+i@kq5QWRhdjh{vkt za1cU>Y9QlGZY;*p_g=@G>7x-xz8mQufGPR$otLd(fhDj?zXIdyO0jmuB7F5} z*S`oH7a>83Nr%#C9m=gH6dScDc3WgEst93+CB&d1-iG>ED~39(D5e)Bi$G>XI5LUb zQJokwyw`rs>lZZrl9nP;GSS$WPIO(7R;WJ#!@BYWrky)K?>Wa=A~*A9aleQ}lhzhP zT;pU_B+6{jgphLNk^8@lc%bEk6J^m_l$kUr(nTRptw28UN@*`?r$hvYNC-2Z3k7kZ zX*sTfxYboj4m`4O9A4SD951bV2=m%n(4J~N`s&K1ftRG%!da68N;8w!W)r1yiA!9U zkpNeH8J<`=7ayNKhV1w_1o!uXA|w>1FagYr01kl!vBGd9NQiqtVu5txPNYUiksuC7 zJPGtIOc?nd15+pmR!$gkvrT(P7ZnJu&~JM^f@UIp%<8`3-y-6B1<%E>t{j2sa?pmJ zv8l^EoptSI+ph~mON6e-pb#jD+pG#@+*Vc3We_dkAx-7feT9&Z7 zD{$xxHO+HXU!ij`tllRujqBrxyu|8`>*>RYdQexrPu2AXt61z(5CWTo5?Cct$O3{v z-|NYJpGXK?WzqaFE-&Tm+`5uO_cvF+wPNzf9goi*^VXV$leRy%Z2I=K56%BWia|$+ z&me_iUtWa@6Y@&|KL#!eKL(`m?Sd))=BkNF` zo{ZYeESSY&B-ho%1 z@j3ANb9cV;+SKR)Tch`uBsn~4F*Cd( zm+y>H?1|>E-2_gPN5IbKV{B3W>`#uod&5W~t=_0r>*KXxc$7y%M_ysnj#+Zc}(vMHq4u78j|n`rdFV`9d6c1)BcBjBNg58DkdO9)oI;Nky7@tS zAW;{UuBXzt_}5PEF|5lcFrAcI&+2}lP|x5I)~$)E{|QHUxJ&9EjC73wH3_lEG3cNt zv8=A*VfBca?&#!zmq$VSGccecX?Ui|W{rLwmrXrgVn1{qL&iX9TP;yQ% zA@E?N8BLhdSdWg4Yw*N^X^{B&Qv!F5ZXC*ZI#ye0!Nx>F+Dw%kg<2I7!zHkbcxXt8 zkMUTc-v+3=O6xx_RPWF#l*>&;WLTF+U>mFZ0YZ=aKO$+Y?)>gs_%GP`+Lqf29kwaz zFfOsU8dS#G-1}RbISi5`!%x1vYN^NlopUU4Q)E8DXv#~)i>nvFRabB-kk0ov zJmJ~BP?#1g3l9$XAe6Y!>85B*Yih)vS2yC(SrZZN@3z2Q6Gt{No+?$F=keHPKI@91ir85T-05rUchTauIwH? zHxWjb7Y$D{oBo)g)1$;@Mv)~N4n7}=GI7_8rfSC1aTI}J6%pP+?iM@KN0ejIkRmJ_ zGaNH(DljzGf|^*%k&6yuS4uM^0e+vd2YMsdX2;CdVK~t7A|9ST4iXvz69P{k>zO~k z^VN;FXR9^a;)G(9Se6be-_rX0uf~Qa9`-6vO!O=3Jz=#5R!49?bR--{IrQSES`f^G~Y;38M2+~(;;{YF6_ZcnkgEh3FW zX+!x-*&B#qc}8H`33OY}IcQeZ)!8NfCPaR$-Ib_PAuTErm2nO@r6Qz9$^O`!nXK`2 zjA)V6O<)6;hx(jEjIAlaw_kjMmsURw=^$T31_WK4!1hSFOB@&gW{@|^lAM^;)`Y`* z-oTQHqapJTghs&adTi-J#uJ5BE}F??8q{4j0S}D{38)~hg^e46+C;}5PcP~>44ULZ z8|Pg}zuZN{)6`Rj^}h*BEjoQD&^2gEUfNCMq8oJG!hc6mQj9AhG751Ka?~XyAW)L+72$*Z5E&AL+N>Cism{c=Uw({rD<6S~gtVG~kc$&oFA}&!0f7h` z?1PGw1k4%Tf@AM)#{=U=A;K>ZYCiY)^Q#{V@InSTIkQ|*{omxC`q zIY9`#7-CA`K+eSpEb{Yp@qB#U1g=g`!TcTq&u$rp2p@mMsiHhC!Y@jRW9%Yvmx0@oxtUiEa0Tlg2~a>UE5ZcIO~;G8%MW8#K&>Dg?w=VhVX zW`c35STVIO59dz4hgC}-fRI>V zb%+NpbVNw-{4j4{cb}g6f^0(IkvO@37bXs=1+s7i^wWq~grG%lu10cc!IiTpIH+dBUg4C_Y%|D#7}(LL=5azpNhaJ{20H_7Ex zC}9+cFs7&gsq%2d3K&eRDPHC27*9RCyh20_C+#&?9%sVzA$d6S;eM>Rf3BN*s?gAj z6F4zi|2jhkU=OByA!TFU=;1hZU^m9rR)ZPfh0@gIr#)3D&8%be9CnwEoOpCW4oZm& zZDN8@of_Ba=@_^0i=eJEo!p`Y2K0~mKC8RI`~@(q9|=t5Z6Xm@SH<5JYO<4EF%fcT z!gv^4Tufr%aM-z_Xf4cG<>?sDJ^9!W0Uq%{`9@Y*Q&Z zIb;ypXsf9(%T3^}_x501T`k!C2Owl%|5{HKvP6g&Et}n?r35Y_1hyDpBrbGCf}_*Z zF>c|1f;Nvk#QM=yrupTxPZjN$@wcAOX@|%gVduvi8g;p8F1u6?HN(XiLf}NH1ZGY! z>NA|HJRRfZ7uGfNy$2)AYY_5GTFe|$gcFDN;o*hz!0G4Z?qYe-LG)5lC&z7peb7P( zJb!cxA@E+bRaLqP?ANz%g{KP1f_xcOaPVnuCMj*u@E~77GZ0{lNJ8ptUFq3&*zL z#<5ZEZ+@v^H zL2BZBa?;R9*dX?pJC2m5rt zzSsB6hwt6nBfq#c%88@z-hQs@aR0MihXr)m z34H3KqXAvV4-Y$Y{D`pY_`w0Ej_<#Ry!In<-$x(3bLWYp@7zxQ26uHGKX4xr`uqPZ zSNzlm`))sZbRYT7zJGo8(cyi!5&6~KU%HOHa~qMnP9J~wKW6{iN{bf6N@P$4u`#?T z4_2|ry&RYChF!!!)1}2O=iHz?4xl!y; zNW(baC?ukes0e9?Rj=FWv{`m1*eyGpcFXnzhxIL|-L^BqX4&bqnzzSW%pD0fYe#a7 zeOp?5+*>JeG22pN?HyFo;$k||<6}EAoN*m#@iA^mr>}92jwHLKBheb&;k1}Koo3^< zSd)I6L$BFp(?-2zRx95!s}yfpRLZv;+Nj+&b>wb~N5vzL{h$dU`dW4p9GDJ8% z$I(r)FA(;hte;z8YMtpiGVQEE^Q;H;$Us*2Y;=EC_nI;-XrL2hbpK;ofpm9|&J}r?EZX*ZC6>6b6-Vr;@jm(&bP{w61G*PChe%rNPD{` zBV|uTvh%GHXG}*?tgWNKZtlppMQ_WsMsLfu7(4UG-=BV#NA7`Ki*Z|?)znc)?u&f# zd7jzWk!Lax(G$^jBUP*HB;VPQ z5f!;TQ6}q%50`Y<1%eJckJphPSAJz=_|OD%i2G}RDU1t+Ul1Y)KV<$P&;$`Kgz#Wu z^NDNSEhh4P`rb%5V+;v{IxrL>pY9xt3{4~?3!O$41`?b~{jXGO2Y6wxQqYWr0 z7g0?6IB{#0nhXtMCrtUk9x&PWD)C2f)kI+4m=JAw`Zn0(lB5GPmT?_p%7&%Vj7auX*GGhzsc^aG1X@nhVk~uYDN04!?_r!hGrA`Fn~0)j zqNtU)#&+T=*oe@7Q?ZcG&7lkop=@YEIgkeiy7z)9wOJ4+61#UYXZ*b14)XI^s8hWnt*bPyNDt|zgAN!Jk{t#?Zt74qI`Hf&3=oA<^TG~_$#ZP8JR4x>Wa zp_hesXr^?-9D88O^?VxJOp7y1QCD+9R}2 z63st;yhm0Md7?+2WOY{|t?m)JWJk~SOpnl3vaJ$GAlrW;Z~a7e^vKSi z$gZEr?jG6m6WRL{dHW}_?_T8DQQB2R$$X)qXLx+VBIhxByZj=T_ z4hMAgMMv&^Z3uCpLxP|V2_zwA5Ru@Yi6STv@_+!sm0<9E0>SwBBUP<%6ZrJ8_t5#$ zi-f>~-F>537ekCr<0dfUb8(yXIBa-%{*F{&^V@e$!99_FAh*0O%@n=b_I z?Ra6p?l+$2?SB1v#h%}-|DQFl2exm#^We6PK0W{bt>*92Sef43^bh$dks4Naj`P2R zVf}m^_`9B0>fTOcbuTsb253xtAwH&)Ni<%*5IfV|C;IdVjjL&VeP55zzcr1$2lNPy z$7u=Wh4`Gt>fSv<|K`3u;zz`v)m^Vlh3;5D3u}UVBxK-#ew;h+yn}t;y?r^X?l}TZ z&+kF!4Y=fUerBTGAd~Rv+yU)BM&}lUJwoRj=)8lZN9bIHv_~TDy|=H@Yv2G?pFa1{ zv7S?v#B%8 zHvnONzG%o!!R(RsI7J9tpO@!eOrAP+l*^O9EJch?Wuxn28e*}>mgFFj`2Cc?MRB&v z-!k#Hi3`o|Xe>$ph}5G0ujY3Q>qi1p3rKH3x^K~i(nLyrnv!{|T~03{BgX79kl5G4 z6QRcDAOz+hGB^;k8cM&}bbousfvrz?lmRCr#HYqHQ6|B}(hQvY=mWgI`33O$dqL0e zFHYd}7+W`ieF=dx34z;&x?N~W;L!d9Fl9`e%hQXB*J*5865Q*<_?TExfMgN_7`Y58 zQxiHo9pg6+YT>A5q3$!C=%H>gb=Q3^ava0@N??YjQf8+T0ym)R$bQrj0tff&kIC&Lr+KPOqCsyni6k%!C74oEjC8fq zP2ggu<5n@l#X;T9p{(vWjL!7Z8-Z?F>Pe3*hV|d;fvHlAqDefgBr)%}p{18(tVARh=K1;|U8TU-;xv4E<^;B`U+X5Yff&P! z4#4yCb8-Cw!0{#o&Pm0*(Zg`+@P5?f<|2p?cx=nC@g83kA+T8-4!c;2X|P*O^W>X)ob;hV{QYa!|`o*P=UmzC)LN=wuc5@>TwABhf$! zEOg)NEs4o6iv&=H24Prn#%q@{jwmn?LO(y`=+q?a%)sa8yYSMw=R7Ac-{058_4fzk z>+N1fT0C*2o50nCz`+9sqPe=F*;8dwOa_}RJRI@i5tvR1tdYUU=b+GLUVSMS^&10C z)Sxq~7p!AD>(X6ZhUHmLEK1}oA|Ld8m#)!L59>F*+u-FO!Ju^+gd)U9WN1xJg;gSg zf*lO2T(Ig=#t{+%%ZckEwBh^ZY`4O&Jnu?LXOL;u7+v1_p+{)UZD(DD%&VIPl)y%z7_s4Uj7&{~T_T2( z6N(gLDS_3=S#T~&*x3XP~Pvn54EA(jO8a~n!gVAewy7K#Fg zxzp1zegg<)bthxcKMtK~rimf<{K_#I*5z-lLf1>zv3@K^q=^>Mzfzx@9+`HF%R~t5 zltmH(rz1`lK`byEWeK*8o{sUz1M@1v27ALU6QeOR0V9b8{{0`mBNli)Li*f?C^mC( z0>|mpos73P`2OCQ(>4qbP8)|eUwRHX4jZJzycZ?K-S28^>g$O@PK}bW2!vg+0tps0 zSD-xB3N0aUw$;$-=|$bdpcXHI^<$qZ+A$-km&RsTzix9g>dw;{Z@ON5p*UhXt2+tf z7JdP#R+CFF5+PQmL~B|KA+Q8d+)z}f$JTf{#-dqMDnh*ofu#~OaF!yhSfXUi_+?- zg+#t)buVSncrJr=t1ZueAjzb6X$3+gMn+*|W*Xw<;V_7~$S^5wo*aMT$nLwwHrG$2 z1dfqO(M$;3R*{SE|NLjXx@8jr@97IghzG?Cda3W9(1*0_1v+r z1hWw*3io(j>;B2(-2}FFF3Z5vX;g*6Td0 zn+P;9Kk*8ki(&O1fiHmOD$`<&Z+ph23H|A;Zi4^jVOB)AR9r4H^#+W{Oh&v?26MRJ zv!Ymo#FOK@j=k+)nVbGW@IY^*YqeN3x)HM`wPE}2eRy!;V))J<&2 z`!^+<^S9c}6f_s4;;Fe~uwm&G*oY;~P^&#A@P<_nv#lcWNo`Ot=Co8}2qCb65ID=G z|7Oal5!p2bxtEfha3h1pj|;6nEgdM&j2%H#c_ zZ#KO8yDfKYe&HFv?0Cl}HII)xiv>+-iAYc?V37*XWSb*B`fa+7?eoo!vmFlg@6oc{ajtDsl2!X3& z>_~}JB1IeV@yymLp(o><`e0u_i!x#_Gl=$Hx8aQqPs2ju>CnD|!0YFIEl|jr@OL3!RFlT1de0H$j>naP<jkbsM=V+kv*5@Ol&ikrY8I~NufZ2L4zWb1_gQ*+KW?XwO3_kdoo6X z(fF0nI~ckUE^=cnnAlK)qkG>(c6=Nmuoswt{$E%WnoDa995T?yP2ea#7nAA>@Zi`A zyu0Tev{bhsu%8!v@9T$kPp&FE`_cOzrQ2l?zg`>0!_brjG-aefPYCRYRD9IAX-#hx zmtPN{zXgr!Y4?f?9WyGffgTL&>Jj(?sH;d<7cMl{qa8wMGrgNS9dqW`R$Fm$JmMoF z2!Yke*GC~)F2TgQ!dOqoNV3^JVY~tefjO8qycWx*j=-sdJ29fJ7D4w8MnotdwRt5r zkCoc>+RL~3-#4(664)RSU{Y;17PS;$|GqtFZyJN3`vxP#YcRIIy0xFD1WqIur{XXe zLN2x?GYux55J_s~cXLJ!ReP-1^$qGt(5*}8?tkA_sT!1sa%4JI+L1g@%dJkXej_x9~V zd&^j2fd?a;Ver|hLms(FpMH4g4s(PU@{rIT0;j{w7ZI15k9bA6=Zamwpd_8b>YmV{ zLVG@iUPFBt*0mup1-&Pz<)wY7{@$YlO;qu_iaK01Odc`JUYHmM3%Qr`iR+xHQNqk) z9%Ea$Jtgco^E?#^>XHoO;5WG-tj|k-SOe!9qxY*zIUK2)XN`A zLg0Dr^;kZ;9mfy6g;k3eBY1#6_yHl`WyHsOZs=xD9?OVBL%W0lLCB8QVOn(_<~0=J zz^=EjVAebY+&9Qg;QG9*U11U`*oQqf3G3&ZDq0(WeKq;igTbSJ{HA^2`EcV zf!NO%)jn@AXpVSL+_`Dw2jXfNms+napJ>fXllTCa^VtZPT$3!uM2 z4(mscg#I=(9rLD{^Vrkz^1aLEOqr8rGQi9YL%uE&NwRQgh@rAeg|LSU;gE`nk&+@= zMgC8zM6x;xsYV@&lj6^hYiXD|slByb&KJGR9^{Wm|3J(hF%%Ea9*<-1zJ)apuRxer z2si`%xw7-C z;n6yzE-5S4@r{wog^dun%&bAKR*4k3lvram3iKKj8Z;=0)}zv9LX|xlH8ECH$J$UG z??6>@;y=^Ow!eu(m_KuU0$>$z(Xr_{Oc~aQ_R1<0B_tt6sotNc(LQ4o@-ICMk%tRn z0=)-96zoeZstK>W@Ep#cK8~5=M-u`Mgi|KO@I)iVX4o*jC=v6jGw?utE|#^FVCnD@ z+}~7$B_qr6*py*dGk-MJFB(T=B4#&MA}T0|5SUHeXr8V2f7&aDP3s-r$@1<;2boteH+xIwM)DAx7yu)AzDR@JN&`2-=F6NYpdF>;Ak zjLwL`$P_z9r8qDu*@4l?F=$VT!T2->CZyWQYYZl3Ctzx}6C+}xp<^>(1_wh(+~*9V z7UxbJ!^_WZgprYeH+V2)+yL8UE2vjUZ8W)B8WM~m@&wuV)Wi7r%uy_uHW6$eZ=@(A z(4G~C$vFv_mY;;lxlT+gPQ~ns9E{IP!mwm3M&vj#xhfko8j3MvNFnAlS720O1{A?T z&~n(s#SmV;g4Y1q&X~sr_v?3|T`S#4jCRbp-fl#Ob$t=|0%)67YK{NdBeYi5`tM&l zcl6+GRIajamyDXyvQ+{fe>lQ;C^Ko$oNPx^0^O~|h#I>AWzoa}>m!jzta7e~3i-Dt z3i(zkc)WY79id|(etm~7&7eH@H+BWC{k$=`{b7WPia@xq|i*??-=BOzvUBw;ji#P!fY2@Bl z1O`LwM_gg4)SWU+8#o$y3`{((TcY{oz8CUgBix9KkRXx7#)6<=H-V+W3<^mIdiKP7 z*s|tXXc!ULUIS2`k?6Q=1&7sC+Cm3;yO)0|<7}8vQ;1JbAHvr4Yak<^MTLeSS08m? zh&{Ta!EWuScUZR%aoDyuB|3N4C&YI&rlq`=tyRy@j8aV*Q(69~S*G}-o(V%@gp?eo zL!wNE!f4$`FFta=pcjAFUcJhcz>^aSXsgPf`k}MXdd$S@r^@H#%YwD z#ZK$x|F~Bc4D0$PFtx6Rof}WtZqI4DQ z-s&L4%v8#u3}F*X8iT)MXNcO-VOIE-H<;tg23pTQjAh`lH#cjbF}gZ^Wpg zbU2Bj;}HwYrkex?hoUszj8n(n#dD9XLSzURp#%D%ZAkg$Ti}JWr`b5(zR>f9?jAkk ztMdtg-$%zw8xR|%hKjh>l^MyyFMR*-u9xq4f7by2Kmfl>cf7lO(=Rp*H;Ba>>>?o& zh_%kuX~}B@Qe|Six@xKIvX#7o7(c2xY5IiGrzejZezr0z{rj4nB#dt?Kd|eKm&0~% zfBAZL@fgBPUg`+C3>m;8#Lg3JWgJ2E| zLk6*?s!%q9M50@g}tjDCf61?!#GQ7TdEvj>~ zpb88`x+ZFsr{h@^;j5B}-)|QRkV9gCgm4KGBw={@kp=OWt>hIzSJ!*Deevaa$A&de zew7_-$B=?dJhgn$4;48HZ{{bMrtI0a<$5MB1;e^A2z&uFub!r!x_6$a%&=i{xf4^X zl2fj+UcZPX^QIXdT|9qceR=u&0>AE%FjX#f7u<^pC+Z6GUH|L&z1ue2@#0fUBkQs= zw{ZOfp<+1hrPVo2RXA~E9~MoU28mAqM84kW*!=9TTR)#Oan#lXrIeU^G3pZ?SkO8I zdpcjl>`7yw^z$c*%eH-f%=1mIi&GO^>fm7H8#EYIoQcV`B`CD&QJmu$M zTAQyP*;4aq>yQdU-Ym3K7yfbPn8uUWTCYn0!@98u>_%9S-*}FnH>$E67+;x!XCIvQ zfA>#p%KPf$BiB_25PgKer4fW7#}M$d1o!uHoT z;KBQ6Lq!61JCD2biw_TaoVbt`V=ajc3_^iXhe=fhnAKPbXE-0qAm45B5dUjlSNiFh z_in2zNlUHDO+fpQLd+i5bY{M5WI}yeTHLkP?GnJSZZHDx-M;zuwJYb(o7`Oehteb~ znhN63R^&ikh8f>~bKdpcS6$aKv+ZXvtHNDTgk-taI272EkZW=vQOcksPV2gqaWX6> zSD24C3?d#DHdo=zCzm0TypJJVYb(rZTs*1C|5q#f!s9Ch!*X-Z8;PG!3A~`80^44B z7LPAq1RXK|dVl{*DhZT@gxXZWY+`{4fvXEJmna@j+-OI*aC>cL`ZXo+xYinGbaVNX z_NKB|hm~ZYttJ;kO0&9_KQNQImU>+V7}kwP;Jfy0e?h-z+olOmE}f1M#Yt!{uwl}W zOzeJj16D1Xux8_$rB}L++9PB;Z7u~T7}?es6viZ=$QFYnSs1d6;jT*=C(CNNpX1|$ zXo&!ijBCc*&p!p>fc}V;Nl_XbW9t=VpMUb9KJ(h!hCAhoZ`A(5?#6c0$28-?g)?9Y zAQz#KecV)>`=~`Bon4-nanbf6?F~bk?BTNSvvpdyYKt(psS>dw4)QF9&CfsbkVnn( zdK+t>SnBoq%WI1tduZ;F>^K8);o>o7X#O{k&YxoX_~hXmapNzBb%PQ3r`WXN(WfR1 zt9+z7)$yn0lj_l&Wx@Q>RsZ;`>u~FLpB+_PYyB$o)7$0jAY_~ED08NuBF>4lNIo+4 z5|<~(Z(aAe*T%<|WR)kzpP@^%iIFnAuw({~lF*bhpdS*|QE1N3v-O(7JGVZ6XGBo& zEY5ucA@ue~ZBYU0h-`ahD^4Bz0CJuP{qO3F(IZCIU2Lq!9+=PM+AN)^DmkXq6<~f- z8LYezSjAyWWc(n0e!A1xYl?e-FF*e<;+a)TUMtUx$N1qjSTK16>Wi~cm6?3>n{yuy zxSG23A{f>UOyCPxFn8|wvVwe6=fq=DQ$Ci>8HusA@t;1ua_-=3saL#NlNTQBj|`&` zRf)-{j!#0NMgGrGRjC*4nf}R#2XD`@TcHRJMtqbUZNv+0&U9kO`jt3)a0f#B-3zl= ze5N8XF|t>cjt-A-arzH}Bp?8dWkncTl8=2m-@@_3hY`;3aUUV@i<`DITx^`*t$!+H zbaC$15d~S_4ll|6M@g~+sTwT`;_QFWh`Hy?8pU5eKXdY`^vZhi`6mLNe*A%V7tfve zk4G0yM}1KuTB=gN-SPU1OSZ0G*Y<}`PG0Mxgv$lPx(Nt8Zpnp~ngzOHTgm;imVx{Z#s7X#Dp``<}>oZ<@ zbK}yB?xsNqd|SLq1&JSd09Xx}Gq#C%qQyA)#s++Hj^T)eY;2O;nwNEjaOy|WKq+WcbP#l~6x#FBuija6;0Jh!^R6s79& z^BRbX)C^RorNAr|qbNNUpPxSI@fN1P2D>^o=Z|hI!>EQ5%pBiBJd30=b%jY?L(4On zt8xA-2!?eN5O~kdH}2ZKZ^z)u`le~Mb>$e-kc~+VNmw+s5%<@`{bS?omWQvVKCShY ztF$66vMolWoAgK{1g=Vo>uO51bM**h%yp^bL~+8l z%YuSX9B;!@_fN$#R|`Jc{|3G~aRfrI!ALXc&|H{r>s94bt>)qKVCLH-;`di(CL=q> zg8ln;;r)Gk5W(X^!WCfgg86HT^RkE3*Hw7*^ss8R9m3Ec49&}O6F5N?fzmW5D$+BM z8Rz)pxDm~ny?PM@pMG-m?xTly>86gZKUZO^lsC8 zCjrtRAqh!d5;BvSm-@f`UwKyEnt4ekFo96_T4%{cy5D!N?mlOq``xl@>*^utNzsS$ zQWH^Cl!?abER3wl$GB0A-&B0IOM#^{bc8+qQAFW%9&P z><4jOt%TFV3!uP0D=$&2MuJ*~Sd|nJVj+qWVz=H+8Ecnz@kET!zk544pdcv$^V=q2 z$;=5juz4xMB@%GF+) z$C;~Far5T8=>N(q7&>s^EiYFWzq=``p{z0{KQ+Y`tJn32{C$z9m!KiR4560`*j}#h z)4Yb>w>;pZ53av-{^S9^QO-qKW*izT@`&SzUR+&}xoyepsrRphBT-+OwP4rQRS#shk8qW+hw1GJyL?X4Ymg8oL%d1| ztC$0uR(5*fwB}!(c{OiFD_sym{XEdk1vMr4xN`O=_HJH*gS*zEFgYGVe=icv4T~Sd z{r?MUtD1ip_-A+cd-`L+WZo^RiL{e`xc+QV~aw!pv- zCbluzp_Cq+|P*1@7*i z#XG!n;e9*x;{9tEo=b_+^)h@Z2;*`QMM!Mnv$1M!+h0C;_w1iOedp|5tp#7XXf{>M zpne?U>4wtmG+euU8WWrAk(U|=HID(Fw=2neBTMereg7hw>L>hNAu#>Gql+MB2SO~A z;MnmKc>Vl&41M)Ag!uS=IcM5r*{8SO{8b6ivu{)Oj;$+ym@&Q)g)t_WIW!m;K`?Tt zh?a1WVo<>%6(A$pGVwpX-+deAIxn3!p}n>s<%CZZ%F#EJQsGP2_6$2U&jRsYFNjiihjQ7IIK2Hs>)JW!UMjyGRFhjC2} zaO(dmf?OTGi&u;1mL-}V{6wbptG4hjo_;;Hvbg-L3(0x8GzLzcJ%e34x51_VKuDR) zAM$cCuNh?W;~!kV_KUNajvna#^U|)#JIB@*qBLHQ9Gw_RQa0j+bRj0# zm1;BVM*pYxyQXXW(h)`Rh?O%D!45)2R>Ga$y<5y5y!FPDN?toC{hn|F+i~RJ&Q}iY z+m*a=^>W0Um1ru7#ir%s7M|HLHSf(s^M3PW4{0d%wtfHdaC_tx2_c{cz^2zC&!We$ ztmwboZ8?6fPB((wUEdG!_WX`TQpJ+2G`xN7G8WI9LpbvqIjzmg7@Ej z^N%LIzQk?tV5oRX%$PL`MVX2C+h6YBLai_s%LPJ&q@;<0<-h}z#$?yYw(y%4F8U6BP4MaX0#MWcW!GzgjyDq_Vv*wiAV z8s%R^DY^fn<5Hny_#;Bj!nBsEf7zwwiw~|k(ru+zuSvy%Qa6 zli)RQ0F1nl-ifuvl;6}4_kvx!*7ZwHj5Y_R7;owtjo!;AWic-H6F`1t>BrP#U4?d##98V_JDKW>zF)a&bIbvaM)H zG9q0kCo-Df7ljiwJj`vWxUp?j$6ZzO^4WvDi6hHe#@6I)E=tfqMso$9>iT}HS^h|^ zJAQzm^m|GOY{%(idtN+wcwgqq1#>=?P$@9;{m@>UjN6y@us*!9>pwcHi5pB=8>x`O z%;WWuHbEsOkynSp2oimhBav%TLmuD@d5|xZR6l6xR3vL8-;S!tj_#Z?s&7Wt$M2kb zu60zoGds}djD4q$Sfc^^ckjTm&JOsH;1}TN_`QS{bXyVXvpO%%@cV6EU?=dD$zxqD zVd||c|G@v3M55@hoOpco^5uogfYkxlx=JKQlYta;`KZ;oAxlp+^*^VOniI zI;t`-wbX{unNes+HljXBk1RD0$uc^kc_9dA1j0n};aDjjHm#IMYC4v;mVUl>)nxjw z-P>RP>wWo~m(KjHIL(S8;s{Df`OOU_Ka3q-v2FawnqU3=69P)Vr-;CIoI1JBef^pR ztMd~hFQpr}U)Lnau&AZr%k9f2ZvNu-CH{ZCf9Rgp6iY(%K4+OrR zkobE;8Dw9$z(cN4gOW%c%A+)>h|(fkCxez9blb=cc{5VL>`4q0_bO<bkm^2}35x9YWsk z?*YEI3#5LYBm(pLwi!tfGq7Q1C3@DiS^nMq+`f7F#U+d9?A*3xBgzU=QC4I_qE&;l zrw+aU(apCW$$hsT5GehgG6J7Cbzm^D{E@YV+KPC^jS)#Q)Fvp=y>J4)xOM#W$8YVt zr+L%TP=A;?OvK40(2+Dw;Ohm3yA#-+E`20U)5_71YQ@M5D@g&PP(c)Btbk4;aR9=J z)Q(^?`Zlg(Iy*v0`g46wB*xa~Ve9(k7~fC}Iw5edljEImsW9UKHOa3-ArLDqim>x4 zLe7ln2qf#nu)BLTcJJJRw(%{{acO9>nJ~L16U!%*W5vW$jLC~34H8U@h8SKbQltzN z$LqfS=W-KcBc@T^9buJnk!g@4n>dIJ1q;h(HtjySck3^XZvX9zn=!3z<4~AoLv~6e zO0pARvzqT*zjAKEgKv#T3Y30N8G(O9MPYJEc7*uTqG$=qW8^4_;-RfTiHm#YRs7m# z*Dsw#v4#m2$EZaIRV3EQ*@&nt}`e#RKzf*NiXK?+ z=kV&oUE`b)8`UhLQITSeLTjuY$DHd^q$}9)!&xMpe8V^G2oN@VasDUp%mU=b7GRznBxB+PCRXRw47SO(`P%&c54*7ztrg zD5yS=Q$2creBYjJD=BJj=nW|?_*#g&>mh!i?=h>|u0q36l59b`MFqbh1BgT(3Z}a& z(xdcfDow|UWBX8DS_qN5JCWg(>q}>id?@SR{{=>+z$9VOu7|4>cT#l{o3UM8PKZ1`A7xer zW;d69a&-6VpA5OTjjOQ^E6c!$>U`v;Sia4S*4XUdcZR`Ew0lzvYkf$cbcY`31+ z;xlJ@uNP#+epQwgkE(PtmQKvY_Qhl7pY2`#vx7w&mrQ?YL}4m7M#{YqC*vcDNMs{X zh>7;|dJA(uF-zHt{`vhImdv5--@M-W$iba2Enm_pi`FXd~m`1+#JBbpJx4@I_? z5LnAYri_8=I34zH>{`5QO^5v`%YN&YPFHMOH#e+xRAqazNr4n|7>?}e{$OTnvvtkl z*$%%;BRqPb^m|GPY{$vtdtNzxavyhCd0zgswuyVI^HRReu}ZLXN)6sPwx;#ki8Vht zY`vy1Sy`SG@nM!lhe#<8DTI)b0tS-R5-glDv3ldWCBL{&^|Z+?PRUkdb5^{iZRWU< zp9+G!LHBS5kK#sxmIwClSc`^XMF@3s0?m0SNgt`b`Bqi^gKdR-gulCklHxQJ_M1=A z@G*1jF!b!)i3J@qF_Cy4A&r8=dp6wl^VcJX_xxdG&9Lwoh4@CgijQ112N|MJq!SWP zs>wq8@Pb7Lw=D52&yBxgkJ3dkTGSNSK2I{K&sXNza&Fyv<8j;y=YE0G?5qi{Q+fW>BMxu;|cqRYq znmpTGtqiKK%zN1uXFkaw5!gl?fl17Sp7hzbuAWBM^mZ^jToB?k5DO=dedwDv{scmL zpfJeY^-F)^WfFBFG~`;*HDe;)e&a0GE|~*5#S!BhtN!gM^8dy7#+sMPQsc*_$k@mZ zW5Xt(AydvmW2P0ECfR@2=O&$-P+$DFOtlDw5lU=Z(K%#Mu+;v)Ge{mMxf} zZb*+sRu~5<{1D`Z@lg>;8du1GKGYvcNp|7+F$1OFGXnoFPMtjP z+{xqn2d!Dzxv_nC3cBYu^qfApCg9AW)w;=}3PxKb!S5yO#9!q`s8LID=9=_KWN4%? zN%^}L&z*8t6D(%6k7gd+vneaq6!sa@&kJgjO77mW5*JP!gvX%%a34GXsWDN_54fto z4Q(Tbn?t?5KNN-rAwN1CYIXpc>+id;yLZD& zg$j4i8|zkfv$C-!b%hkf0v zAY%l>bHHneHmE*VQ2mz5X+C$g%=V$8AT2q#ZS?SFs+%hq-mVxuybK%Gb>Yy?^|*Lw zFNWo$fHLqU@I!niZeKm`uBW$69#t)m;?chj5B5boA#k#o37d?COpO3brZ-Rj`xkFL z?RoD%gVOIAfq#PT?!}tgD%+JAV+y`s(q2W#t427>9}&DjBqI9CDE0#?ki#JZ~$Fk0L$T>mKib6ZAdc`aelX_Q2W~^T{ zqkm&b=GpS}c$nBUL<<;*mGclya^bvW%bm`SN%KFx_4aEIx^9mNDE*!h_-AqG@J5IF z!h|ykN+weDJS2p%5GkZ0UdcK?rowh~`sfnLy_Bb91vg8nJ_whxuzbNRTsm_MVip4$ znFO(BBZ5i)SFwUOKdAaVP^4H)yN3SxPmub$Vp@GJt{mHr{oTuPAZ!ukGC(>-hlgBimxvmUdol|h>{81Q{ayY#FGU&dPIS;x{4-_#5b-T~d zfwwdveqYz58X*gENB7d{c=OU>OdeH-_U4A~{oM!O;sjGZtgp!a#dDR$*XC2^w>HQo z))rigm#~qplOf9}L5@L;Y>g0^YB91jB4T2U$cowD)tuBR&84^a9&Bk=#? z*pY3|l@_IB+H8iBC>@75doj`tBE-p=$gwDp9WFzxf`vFGi^yups&$K||KfN`bwQF+ z&h{Ifmm2-ojCeC_u{z9~F&68Wbs)*CftjemnUg2L(_z33i$=Wa_pIlAM@e?l(6k5> zOGXdb!tioNNt7Ioc@}i9nAI1ByH_lPpUXfP<$}*Xe&@GzDl{|h^Tb21YS zYWabPk%l10Bt~Yq7^F{;G%OUANrt`wEWY;;DCk~acC?P@TC-?M+|QL&nVZmTA;ed4 zgP^zfy@YUVSkZ~Sn^!`~p%eK$5a~(Li=)GplxeMvkN>8L?_Yc4d98pyj^^%$!dMNF zyG#sAx8j30&tcQbxkP3-W9EcL)R$yT8c~*6wQAvH+TQJpi;nef?4J^)U^Z4}C`*#V z&qs-A=p0*(RkOz;oEL&rBAn;Q$sejx;XWk&7wl2l8vK#HsZ*>ZmeB08)h|; zO+O+@WXr!WtF^DTjR{+8lPSwk&g$ zR><#(kPA^j8n!$}i&U)yNfIh1WrctL%_r|ZjX5!;-!lUD`>&7Qe6DNGv{w^M@}p@{ zdgNNdP-u~$D$RhUGnz4H+%RN>^O2%vAj81M_=+SX8-x&2-BFvDfEYO)Yq}=l^uhI; zCy%Lg5-|eb@^u}8D3Y#?A6|lOYZqcg*GyCuWP;)6K|bemqkUvGjxaF-}gEh4^7pX=-s^rcRs#}Iqef54h=+3d<04pqYj7hLVC1f<{_Oh^sfneF}m7@ zqb@rdR#6ay?6P!vb?ORiTW_uRD9&y_u3*>7^6mWaWd8~ znR)KuhJ`*4yZ*m3DE*#d0-rdt{rR%Olo?VUwb!JUoX(9i{k=Lf8Y7DnQJ)j><&2h! z`N#IHn|N&Z>eID3k;spdkcccqd4dun@?$Wor3#}8lA-Z)!?284%xfR{sY%8@FANPp zU3nfBcTUF91DnvjstXb(6*0yzQC(4A7>yP}^t1>y+M6qoWmO}GNaT@KW#64U zaV+V_a;Huhn~@r6I#*wm^?hSSJ|ZL>6k0XJ!uqCket7--`fva1{rk4r_hSG`zo(SI zM|!$nI(BqN|23=UZ3#R3wEVi=<$=L}DwcUf}w;f$8ClAjhH5NLg67d^TpakHMrdb%en4Aq@71 znC_3%*trNlsxcV;#k==Ut${#+s@rJCjJog74)wgdQXK}O+ zwItupjxr+NAn&;S&ef-7wicz|Q%c~}1nuZp9T!O!C354bFNiN;b4PuE~VNd)PC;Rtnefxp8L(A}I6p%h~A>{j$_Uxhqd6r5gt z3E^S9Yd5Z*<2Mc~c{EoT-EZV)ru#2nw5TyE-1u#jQG&AE2#l}KLeH)ZSi5L0%u*%_ zqQoRO;h@MWKy8W?P1&Y5)AWJ`w(zjhzkl-nzip@~?W4QeMmOBbG80)ta^kuSEAp)d zLjL5x?%25I=<<23;@_*T4-u4pPZ@znHI}{FG`vJSeoWhl+BaySs&Y_bXs&6s`HabzB(5jtu2T%%E9z= z2aDnelOO=C4S7F1r2lhxkL1Lw7tGY=#YKKnlt{d2S`^A`k%$noVB*nHl488;GmIZ& zQ2IS(1gKy!U1v|aqi3)5)_wl917<{T8~W>S{SpFK@4 z7lP*PhRir4YVwl6_Vd8Xg;P9M7vbcAjfj+UpI>I@D*t2oNfp@OGeoq^^=VZkg>A{pUj*mN{bqbt4b&v#<6!3XYI{x>( zv)dsE@19aKNieD;^WAtAcXCU8 z%{?95e&*1o7ve06S$^(ApyY)jj^w#h$BjgDT_prGe^3Swghj<$Yl{sRc5moX3q5x0WBD66dy?gnd9CCbuKC-khDLYCpIZGwMgiG_mmD7jN zHM0#q&VwKcrQK$EyCX7;^R#YN{O|G3^()V1rzdpy5wZsPx}&-<4pT>!;B_Kj&K=r= z;_Rev>4C1_3POGF+-upZmdujv>0Y}gPOpTK8;n>f8;NQm3|uOB(7l)AW0)cO@8VXn<=a^GsZx<*K%Ww ziejpdE3^s$8mbG?SX+kOo7W*NCK8^5UqiTpdv0=bC8en%<5}eWCFnHr5^b2~`$(e> zky<{6<;UW}iQVXIZ-Gw6hh8m1LwVjEZV<)Dq_{{L@{;blF|8Jrb5g9KzP31ROIC#X z^8_Uii7Fv1LOLQP3?iqCNC$|&x_IV3k_W*(9vU zie+Y5wTP3lkQ7GxNLmD%3X>YMW5aGw8&h%5V;U(bmY|aSl*4HWmeVv}HzY)AaO~)A z?B2B*6UWw)e#iWwp*(Acg6`k*AnNr*Vc)JjgRZ@Cr7bni`c)W@j?_pckwz&PQ=N$$ zZ(hNbbElA>oCI-b02IuiYb$3@aoM$ck>kBwqpm8mJTF%Nb*zky7-Ck^5wwf|n7A}V zOPH8cU-Es=j#Vv7X17t-F6z9e0gy)slzvYbfj6!042lfn-U{aje;H5IQ-WFmi-?It zodCJXQKhpdk5C`lv-X~j=v=$1%W2ip&Uq?69Xy&JEIKi!P8yC`Q(Lim**vI)%&+~N z2mYWI&>A09y`D%&SWIqNrmZX|*8E+fUJ6@O7_MGCPUQ4qG*=a4!?HP$a6`YQdb=K1 zvS|D7rR*?qNV7>qN2XDMrreaiZF%g6SJ{sHqG@VypeT9vnvbJKi0BCpb7Oy zoP>oKBBSji)RJHySok4G)`*ZAE=57S4&5uex+}6{X4sRmHY{RRpTpI&gAt?T!)BIYdj>Yn3YeE9kwKf871<(qF`dVY9S$>*%V0K`NX&_r_H1G_e2`uLGB6GyIN zctI5G*8DqE^~ptMY@C4~Ks~IN@V^fAazSRi8B6E2W8c=5Slu-XTh}Z{O<@jvod$pt z;Qht$(jvzHE#vsXwJ)4Hy#9}+c`4(>R6l6ARM<=^Sa<u_8#dtCMK z{N%4o5=|(HH=;0BM@iJ69U@M^ z|D#iVU{HvN39+MlCC;DPi&^bs!6bRGeNb${#D-*&!aaM|`&;qh``4e>%Y>c9DT&|P zPdJpZ0@*?!uymBSw$7_7@&czq=V#8A`B4&o3P5m-T#DaZtKw-QIr3n_4ljxse zmLokvp?+u$ahE8{%&2}G37izAVi#pZXC|6de~%^3wl>9r%0xXXk_<>S2#GTd!TO~g zX>DVMMUAM;{aDEiMx301*1BTUWhX(y2|>6>fCZDPJJxhI{0jj$Ebq{Y83Eu0`9jK| zp(s5Ci{{S2)z{Bp+vb(vh1mb@i|Xu{+GL}!J~vS}_+hof6N&aoWBj{1rtO{5GV-Qb z%7LEbM8+^N=1iZ2x868|E$fzn?(1P+vw0&e#@HcY`5z5(9(XWa#f44HLPn$vS+T^! zswJq*&W6C<6-#GK`AN={5pVG+w8h^@x0*kRQVRc)Z-3Sptw9;_^yLZR-{8?RH#YnGomoDZ|Pt~Dsi|edW@^jzVq!@pEiB>*N<(JMwN|K@Pg*6 z1dKaMF5Nz-0LKsQ#D#N5p(ZM;B+CZAzZXoRkn`3s#-nxY=aYi>-+kl74{u!a8&zGB zE~5HEMC3G+H2SQ`<1wP96zi7G$F>b?QCXY~Ua&7hy<9=_bVihfgOYSBvQjO`Oo@cI ziv!{#BbP{g{liwyp7E2lp^ddAe_k@LLpW*lNKtN5^xN5%FcevJD32w1m|2BPjS$&J zDYCcG{+!C zVYrNtSNU0?MRuz`J9g>*?&be-nte-iqi4&=rsSDzt=~xKK}a>rP#B{{nn{ER;s7EQ zV$>Dn|4@^k^|_W$|IEIsNX7_4U1<(BtXzPVOFOZ%do_e1eqgu_g_7!ieo{?FP>D@* zPmiLW;U2;9b9>1w;Tl_;%JCh=8NKdpv$fUu~)d4EP@5Br|@!QRdB;p%#`N@!>(%~7Vs8P6vf<%rZi5lvG31T72-VZKApc?G#G&=it(n~>&$jA13KI+n5A{N{ zoJORS5XXA<;JvrsL}5xI0$iNI5A*}w+Y>se&>p38s!Q_{3bRsTi7bEq*RS*s9No9Z zamBR8>toW*7?Z3;Gs&}R6ZCzf*=hz2dL{#UA?L64<%Ky(kp^vjRqm+eUDF@RzQ8s4 z*^3QCRvJTt5Gxb(*5_wX9>#tAGxR*hJ3R6oa4GI!dAfq*>q+j7)0dLuXvKuQV%UhP z$q$!f#iW{y&LQHY+HqeGseT|)mPyxISxUd9?%N8Uow2$KQ>CZw|n+)x$EOi?KrY?>8g!$#$ow{ zN=z?{6`Jn3mbEwH9 z1SaG)gajg9DefIpSxEUkuWv_Ays0NGLc2Ud!JiPXm9-go^sf{&fASp#LP{K}(2s%` zF_RFOk1UMsYVQO1|dWi%lRyX zi8wg4uNz-}b_<;|TagiK0o}(95-#m~m5|ZP^z%6XfSceM?iM5R!b@^uWPcx4knnz- zl!|0YVBa>Ol{O=8-#mlc@193lo(*d9rTPx(4}XV&P_by(yKAHCyCC z>t|wGbvm?Ef074>BHezpi&_RNhmItYliOq@M^^BWtr8+d!bVw~`Ot%^`_I8nU>z+G zhTwoc0*@P3LixR}efIRu=gywm@uDbz0=}0!1Qbt*d^}+lvtiScl*WF71|h30OaiNr zjszJCDM~K#%?d1^-coQc*J>YI8=Pj5UNZ5i#36V<80dw0)5hZZ`4hNy?iiXIN-(3n z8QIB^2=#P>5Bcu33eKH{bEhyf63h>Mtl}B|4~lbR*kYPHtb9MD$Y@BE($HL$fis8J zWA3yjTs*NETUSiO$g*@K8B{1qi=J$huvQeOMCZM8_SnCT#%GUqzi{f{#!pZ7ti$^0 z^(Zt-5XlKes#1VFgB00z8K@!o8+k1xRzQ9(vX5Ak&RJv$yJ1ssnp2hRaRp}i+?w3P zX%Dg;Y6}Q~Ne-y96IdbYZK*D%Jc#RXnN%f@8FDAU)2&x0;rAw*b-hKI@#ph1qK_I_ z!NjRaNIt7TzCli$oP-cnjAVrnNpfQ3HN&jAkQ;5-IxHjpazkDUmUc{vzMJdr-m*Aq z&7!thqpP#8bG;o^;3uN#*kRs=x#3Dz9Rf%e=nm9ZKk;`Ia5LJ@i=k%0c4$n(r*~^*JKDv3{)MhO1oOE{W zg2@Hv4=nk`=vbDUU<`B{2uY9!EFv1T3@;>`#JF;L58gU|5bGCBM^UO3B^i;3ByG>} zb-T^>{nfuy@4AVa7!Z=ey!pPAPAyDLL{?VOvnE1EAd|+ zUd6l_IA)wZzU8^|CpW)*;ne0qmrrkb?$W95=P#Yw z6m($2Y;=t(z*zf0R&LB^dser1o!GI^_l?7A|9JWEy5}mhB9(b&`M2px?g!Z#;cc6g zi7X|LL}np!`UYzRxH+8?1o+!Ba+B+s{vH(p&Q74ady;e_7*UK+#F8{3p2t9ffS8bp zL}IB@E=mZAD-(?s1!jdZ-=t8M#~6f_w#dH0qY_)>;%K!1aU@bNnN)}FISq67tex)g z<8?Gi!U+27Y@j%w%=_97yyl_yp zc2P^o>e-{vTAqU88R1wsX;|vM3{o+39U#+y$W_hxt_64K$spkzj58>EVvUNP2!-%( zQj+%z{Jg>Sp^)h21+JGTlmY%o60ndVCS)bVwb1-Y^!Fz9v>OFFVoCN9W~)Z^bJrYI zn%SF3a$_?gdXZ6z(HVx`Wm6ma?s@BynSt^kFGz`+lKQxT=j8}B(+_2-QCPRI1BZ5R z!p@CLuyk%arcZ3ds9}YO)~cZv@Db$Uj1;Ts>E1c=afh5mXG)nN^W$`3y=rDK_ z_^#TC4IEc@2t3?w#K@)H*-?=_nGxpR%!u&b>?libUW|2Dj9fO= zz~MAogrepcm7+P>WN6MwjGaZu`&FpBFW3}6aD4p0_YZ_DBoyI<6c(`n5h6Y@0nB_J zj0`%Av_Qmgf{`R*z$W8h%CP+Zw|n(Gb_**5DKUq^}3 z@WUq!E4ZQ!@J4uO&=)CsS*@Dwr_2nOZjkx76DL7|CfFAx31+-?`2^m$cpU3jEP#~B zBt&(Azndch+=;n4KoCkj^U1q!4ZeNj>MQrZM?J$sfh|(sCJ*+5kVHMcj|b#5KNKb# zKq4%*uAGkdE+53r3;RfCaDtDsGbm0j@NjT|x2sE^QN1aM*6DHn_%YnMeRKM~T>E&> zy5~z$&8y9P>g5y(i$r7&QtkP%PKYuRaVo+UC=8Pm$ti%95F=8+frZC`fyE{{9vey; z1IiFKR3TjQGZ%_rV&pZ9&WDE0fu73+AtH1P2IN6O;Cg!Xk(cA_2ELmsq$C*|AkmTzEsYS7!Ge)oQ$bP=v0nhh{sEAZ^1?zwVC1k7DG?xw zn32PPCX`Co$uifx>b^gHL#rZ?Gfdh`X59w=%* zF~j%~RY9=|u~N@rXf<3$1>4&LJU=4Mh=h$*%P_9C0LQj3Kw(l8Dl!vMUy_L+cM3u% z-e8biGKAtmB)Af5moEHv)#5puqjZvcdJJ)P|HkL6a!#g+MMb7r*(WLOgI%RMG0I3Z zE)7?sJko@!7z?W7jHrqwW;K!stw)JPOQN*~h2dHh7&XW@sF9}+BM!iBN+QeU$WX{& zBQiXm$A>x~5NzUvxK7T5s1y<%=}6!*kwPSTnuL!Gxd7QpA@aiP18y=D>Xj%qhV@yI zL4|z10=Zflvej~uzblZhQxW+ehAf=|(Gm`{qz+;9AmT&<5KGFKF=jaOtS0D)yf$+g z-&Un3PPm&knLl-mao*Ii%`;m^ju=suo0J}*uTc@_5#->E5EpkONO&lNAUVqL8hL%3_cMEjUxQI9REBui zp9?y`Yp??-gNGv7punQGVK};d3HEQAgB`19peQ8?^QN?+W70T8D&?TMyMRWB@9jJk z3SNlvUaq-k=dxGSyx?8~n}$Q%Rv|_hiZnS3nFliAvmp1PllNJUmN*Et1j#D#-%|97 zRj~?wvsuV$j#ltiCx^?wp4T=CC5cglz<$utgFdjCG{ylU5Z&*)X_IgncawlP0e%RT zv?s~^MI6XT#Lu*-(Nvg%h2zVyenveu&Z@{>K+=n<4bwq3^`TiUS&;O4) z!81I*p!<6|yASR^)3yJguUuXm4Dt$(0R!PRXaJh4a&hk98eBNE38#CvVrkb*j2Ko0 zwto;pJ$xVx3V~iI1=E+Z$#dx7=0H!kHoZc!SIT7chETkEh17uF^eAJ-kJrkN*A676 z+`eWGB`eNwbWBAKwyo|!VVrsCsDi{XyVp!*zjJZV)kG2*4FQAzL^c|N{1HwKge5o_ zkwm^)L+O1MMeFoM|AVN}q$i2KFBhp#m<_Rk4;Iu&w2qn&mE!9w!r2s({e2(eI@Ly26b1^1bOT+0wbgOU7SA3`E- zkk1Jz)i>bBy6s)x`P_uMqV=ohw4pXD85UM36oGzUi~Rl0OG5)Ylg(lOva(0Y449@B zv3nKlkOf*1Ydyoq{SIkI(w07;+Xux+zO4wRVSPs<4zHVrqZ_8+_@*g1);$dsX%+;K zx(G-<&hrcSBGk)gil4I^_jl|z&+w>0PNPwz)WCh>0RO*ulFsfja1bI%bh46Y$gvaF zHvn5VZO69FTXE{hLHzZzkNfPaPd^3I$9`%Z1yqvv1-QAv*U1fjMEdFJ3{=??+duy3 z>LB|ysxuQ!;XD?^K|V+#k*>9=95ct2~02w#nF& z6A^LJZ{T1A4;qXhV!=a(LP+uW%D@S|V&sP2FtTay>6yXr8`+_^EPU37W)A&56DRbh zg~xa=g3o%7{OyKCz`7AF=G};s@oyx^g*RfP+^afzU{7IO#Nj#PNB+wk<IiQ_Xnzk+%$hb0BkSrgt#uN*I_F@1=WMK4Fdyl$ z@uabKG#s!YN}Z z>laL;Y+E^(vS-7>zC{_=&+Pr(KP1_ATGGb~1Ak~}{vI?}$B4-03E!}%jSaqj3&Ts_~5w_iVo zOGkG@!)C*?|6q8$Ht1Wg0fP^D4H{hIIdEWriYq>g|ePH&@ul8|a>{FpAhXdtevdyLuiUT)Rw2yBiBT#-nq}NQ@{;$B5!o zj4I2rZ!`!tk=5P~P9HnJ+<&}#{~=Bu1D@@0^9=WZ|o_JH#1H1-8xi>%Ql;ja5=!d6h)oA$ToHif=BfuZ8QWd(l!E$5BMa#;7~jfr4;pz=ocng zkx3-6EnJP+t)p@2)FGTXyce@3jYgze3I!*WklYn?l8VrrUH*sa;Ivg460G_7-OG2q z-18Zp;U`eAn7TkGkJEw99$yDIyOU1p2v3qz5-Eomr3^V119BtuD2~=+c4H}a6B3`< zy%w*Z>cRVOzJZV5dk3H2dJhvDo8ae2$m`@uB9brs9X;VYl;m}TT;Mgp0S(zHIsbg! z4a;V^P90ZADa?qWL}-PS>Y@~BU1>Vy#?_<0`go*uM3vH~{{WH$69Nw$0_xzQPz6&D zeRTEwZ@pL~$(hY=odVS^RH1tNGi{ov(bMkd?0Gp@{6_o~ykb}|Xndn|V z1Glan#oHHq@y6-BxO996&i8IXQ)vNW4I1!+{1N2pOq`lCf}EWHMs;%D8|2_r5;WAw zHPq4h8F`=Kw}a+N>93$O6A}%EuHv+$Q3>I?jLO{fj(C|2*?JZ7j4I@4B^Z;Ph_=!U zjLu8MsH}Lj6sDtd;&4nEH4G++3}%5Cg>fWrw%Je+7mM1QY|_a~&@r|VdLH*YC%~tN zPVwlWdARk6Xw>V1puihE|G*m@KmQvVF8haY0q;tEc81?O=Z^l{jyx=Rtzu7#)O(OENpE?SL+CDU)D7#xIDlkqDxJ9L+f9@NS7@{$D(b$m8+>KT3?SjCc$=`OBB3J(Eg z$RPL)8H|9TgAquiB+X$c1Vm1bt*gSgnhG@JX5rM14Y+)83oae(CQ)b;E*{*B%ZI!1 z_Nkr!$Q6mSW_jABryoTAL68JcArGWNNg|puI0VW-8f1P!2n(h|$K=Au<@Y%Sk)Qu{ zzk!2#{RR!{^%*drH`LALb-w|F;7`aKIKUo-heAxH{@oZRJ1SxZ_ws@RdRYNJy&)8L z^6GuTK4+L06hv}VFVI~)KqvRXBod$D;z=Z}7edM3?2{^JME+Bqov?O62hQ~F#-$Vc zaQ)mNynW#?-o1DjSC8+)(XGp{j^woM!wQfQ8P>PvnnQA9x{oKQUPOVoJHyY}0YPrg zP%&s<Pw(3Fu)oS@cp4F-QZz_ILl&sm?CnfX&#$SDLP8D=@XW7G3RQ zv9fbAHZSeKu5}BsVDea4#R3Ri-NCd^GaTZCAd;I05(^mU1i#lD;7iQMZv7oWdCdu4 z{hjdt+dI>ksIDlECv6i`0f%)qn85)C2CxiJc4lzcCoIDvAR{vDiU{SgXb}|#5D@{T zpopcewP@W?R9dRIuq%SNpjO+^n${0ZW3;V4MeM(KX#1gU`mG5~`+mtk_q^rPyYJj{ z&b@i>iVWGXBCb+{0uBp{9`fCF(%N4@}3^ZD=~gNEG30ZOSmqP+bOD+|CP zzd*$M1rU27Nr`ZflLUMCIm+#Xj!Hj|)X%ddAq;mP#Yj&FMoF|Dy?BD0JBWiV4cJw;0lT);qOEZ&b~QC) zcXJEcn)YC4<8HJxw4r%(E9y3E!$xfrs>>U(aeX~%epgvNYPI#Kt8BoQ>aEybzYVR8 z+p%xw2RQcO0d#$Q2$#A#G1$|M!SmhdKlcd+&Yr>Gxh@Qnw*S*koH={|x#>yBToR3f zbTvwrCu4n%24y+P&?x03Rkwr6%L&P$vdP5IK&_{}UDX1CpwdHZqm7VxYZF2Oie0Ve zd)jf?b7s5$7#RM-gL}9BFi})jwzfz&!6P&_B~j1}wj^STiEPNRSSJ#lBpe=+RpHpW zjzV=_8fx>>QJ0^I`l997@@@_q*W}{;s#VzEP=U_f^Q#AV)Dz|m>3_z zNbhM3bhYDB$6j1Kxt9zY2T1LD9AmwwaC5L5x3Bcz-nBlg)TqJN*8@-A031DiaOdj( zzpelDMsMlA6Y5|kw2D2Dv%cHi>3Y^Guy4oB_c?5zkan8 z5Q*SupezFJGbhE?l5apEyo6*Va(^niML=S4PRj_LLKcPf3i~l${ZqvNbfL z#4JA`Km|BDQJImERBL59)zQ{M z^_@JNcl~0w`u^1c`!B|Z*q@IMFex$v0|NsC0|NsC0|NsC1H-KH3n#3IC>8jj4FCWD M07*qoM6N<$f<*(6>i_@% literal 0 HcmV?d00001 diff --git a/app/src/components/Header.tsx b/app/src/components/Header.tsx index cf88274..60eecdf 100644 --- a/app/src/components/Header.tsx +++ b/app/src/components/Header.tsx @@ -5,10 +5,12 @@ import { usePlayer } from "../providers/PlayerProvider"; import { useAccount } from 'wagmi'; import dynamic from "next/dynamic"; import Counter, { toReadable } from "./Counter"; +import { useModal } from "../providers/ModalProvider"; const Header = () => { const { isConnected } = useAccount(); - const { isRegistered, register, army } = usePlayer(); + const { isRegistered, army } = usePlayer(); + const { openRegistrationModal } = useModal(); const title = useMemo(() => { return isRegistered ? `SLAY THE MOLOCH` : @@ -33,8 +35,8 @@ const Header = () => { const onRegister = useCallback(() => { if (isRegistered) return - register(); - }, [isRegistered, register]) + openRegistrationModal() + }, [isRegistered, openRegistrationModal]) return

{title}

diff --git a/app/src/components/RegistrationModal.tsx b/app/src/components/RegistrationModal.tsx new file mode 100644 index 0000000..0161a9e --- /dev/null +++ b/app/src/components/RegistrationModal.tsx @@ -0,0 +1,26 @@ +import { useCallback } from "react"; +import { usePlayer } from "../providers/PlayerProvider"; +import styles from "../styles/Modal.module.css"; + +interface RegistrationModalProps { + isOpen: boolean; + setIsOpen: (val: boolean) => void +} + +const RegistrationModal = ({ isOpen, setIsOpen }: RegistrationModalProps) => { + const { register } = usePlayer() + const onRegister = useCallback((mode: "ETH" | "RGCVII") => { + register(mode); + setIsOpen(false); + }, [register, setIsOpen]) + if (!isOpen) return null; + return
+

Insert coins to continue

+
+ + +
+
+} + +export default RegistrationModal diff --git a/app/src/components/WaitingForTxModal.tsx b/app/src/components/WaitingForTxModal.tsx new file mode 100644 index 0000000..be8ccde --- /dev/null +++ b/app/src/components/WaitingForTxModal.tsx @@ -0,0 +1,31 @@ +import { useEffect } from "react"; +import { Hash } from "viem" +import { useWaitForTransactionReceipt } from "wagmi"; +import styles from "../styles/Modal.module.css" + +interface WaitingForTxModalProps { + hash: Hash, + callbackFn: () => void; +} + +const WaitingForTxModal = ({ + hash, + callbackFn +}: WaitingForTxModalProps) => { + const { isFetched } = useWaitForTransactionReceipt({ hash }) + useEffect(() => { + if (isFetched) { + callbackFn() + } + }, [isFetched, callbackFn]) + return
+
+
+
+
+
+

Writing contract ...

+
+} + +export default WaitingForTxModal diff --git a/app/src/pages/_app.tsx b/app/src/pages/_app.tsx index 1f69bf4..6340077 100644 --- a/app/src/pages/_app.tsx +++ b/app/src/pages/_app.tsx @@ -7,6 +7,7 @@ import { RainbowKitProvider, midnightTheme } from '@rainbow-me/rainbowkit'; import { config } from '../wagmi'; import { Texturina } from 'next/font/google' import PlayerProvider from '../providers/PlayerProvider'; +import ModalProvider from '../providers/ModalProvider'; const client = new QueryClient(); const font = Texturina({ weight: ['400'], subsets: ["latin"] }) @@ -17,7 +18,7 @@ function MyApp({ Component, pageProps }: AppProps) { - + + + diff --git a/app/src/providers/ModalProvider.tsx b/app/src/providers/ModalProvider.tsx new file mode 100644 index 0000000..058ae10 --- /dev/null +++ b/app/src/providers/ModalProvider.tsx @@ -0,0 +1,33 @@ +import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react' +import RegistrationModal from '../components/RegistrationModal'; + + +export interface PlayerContextType { + openRegistrationModal: () => void +} + +const ModalContext = createContext({ + openRegistrationModal: () => { } +}); + +const ModalProvider = ({ children }: { children: ReactNode }) => { + const [registrationModalOpen, setIsRegistrationModalOpen] = useState(false) + const openRegistrationModal = useCallback(() => { + setIsRegistrationModalOpen(true) + }, []) + return ( + + {children} + + + ); +} + +export const useModal = () => { + return useContext(ModalContext); +} + +export default ModalProvider + diff --git a/app/src/providers/PlayerProvider.tsx b/app/src/providers/PlayerProvider.tsx index 824cce3..f0d38f3 100644 --- a/app/src/providers/PlayerProvider.tsx +++ b/app/src/providers/PlayerProvider.tsx @@ -1,9 +1,11 @@ -import React, { createContext, ReactNode, useCallback, useContext, useEffect } from 'react' +import React, { createContext, ReactNode, useCallback, useContext, useEffect, useState } from 'react' import { useAccount, useReadContract, useWriteContract } from 'wagmi' import contractAbi from "../../../out/RaidGeld.sol/RaidGeld.json" -import { parseEther } from 'viem' -import contractAddress from '../../contract_address' +import { Hash, parseEther } from 'viem' +import contracts from '../../contract_address' +import WaitingForTxModal from '../components/WaitingForTxModal' +const { contractAddress, daoTokenAddress } = contracts const abi = contractAbi.abi export type UnitType = 0 | 1 | 2 | 3 @@ -26,7 +28,7 @@ export interface PlayerContextType { player: null | Player, army: null | Army, balance: bigint, - register: () => void, + register: (arg: "ETH" | "RGCVII") => void, raid: () => void, addUnit: (unit: UnitType) => void } @@ -44,11 +46,16 @@ const PlayerContext = createContext({ const PlayerProvider = ({ children }: { children: ReactNode }) => { const { address, isConnected } = useAccount(); const { writeContract, error } = useWriteContract(); + const [[txHash, callbackFn], setHashAndCallback] = useState<[Hash | null, () => void]>([null, () => { }]) useEffect(() => { console.warn(error) }, [error]) + const resetHashAndCallback = useCallback(() => { + setHashAndCallback([null, () => { }]) + }, []) + const { data: isRegistered } = useReadContract({ address: contractAddress, abi, @@ -56,7 +63,7 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { args: [address], query: { enabled: isConnected, - refetchInterval: 5, + refetchInterval: 15, } }); @@ -66,7 +73,7 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { functionName: 'balanceOf', args: [address], query: { - refetchInterval: 5, + refetchInterval: 15, enabled: isConnected } }); @@ -95,14 +102,42 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { console.log(balance, player, army) - const register = useCallback(() => { - writeContract({ - abi, - address: contractAddress, - functionName: 'register', - value: parseEther("0.0005"), - }) - }, [writeContract]) + const register = useCallback((arg: "RGCVII" | "ETH") => { + if (arg === 'ETH') { + writeContract({ + abi, + address: contractAddress, + functionName: 'register_eth', + value: parseEther("0.0005"), + }, { + onSuccess: (hash) => { + setHashAndCallback([hash, resetHashAndCallback]) + } + }) + } else if (arg === "RGCVII") { + writeContract({ + abi, + address: daoTokenAddress, + functionName: 'approve', + args: [contractAddress, parseEther("50")], + }, { + onSuccess: (hash) => { + setHashAndCallback([ + hash, + () => writeContract({ + abi, + address: contractAddress, + functionName: 'register_dao', + }, { + onSuccess: (hash) => { + setHashAndCallback([hash, resetHashAndCallback]) + } + }) + ]) + } + }); + } + }, [writeContract, resetHashAndCallback]) const raid = useCallback(() => { writeContract({ @@ -132,6 +167,7 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { addUnit }}> {children} + {txHash && } ); } diff --git a/app/src/styles/Modal.module.css b/app/src/styles/Modal.module.css new file mode 100644 index 0000000..a1ec842 --- /dev/null +++ b/app/src/styles/Modal.module.css @@ -0,0 +1,67 @@ +.modal { + position: fixed; + margin: 0 auto; + height: auto; + background: var(--bg-color); + border-width: 8px; + border-image: url("/background/frame.png") 22 fill / auto space; + padding: 44px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + & button { + font-size: 1.4rem; + margin: 0 11px; + } + & h2 { + margin-top: 0; + } + .loadingImage { + position: relative; + width: 240px; + height: 240px; + } + .loadingHamster { + position: absolute; + background-image: url("/loader/hamster.png"); + width: 240px; + height: 240px; + animation: jump 0.2s ease infinite; + } + .loadingHamsterWheel { + position: absolute; + background-image: url("/loader/hamster_wheel.png"); + width: 240px; + height: 240px; + animation: spin 3.5s linear infinite; + } + .loadingHamsterWheelStand { + position: absolute; + background-image: url("/loader/hamster_stand.png"); + width: 240px; + height: 240px; + } + .loadingText { + text-align: center; + font-size: 1.1rem; + margin-bottom: 0; + } +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +@keyframes jump { + 0%, + 100% { + transform: translate(0, 0); + } + 50% { + transform: translate(0, -10px); + } +} diff --git a/app/src/styles/globals.css b/app/src/styles/globals.css index 8da1309..ad4aa7a 100644 --- a/app/src/styles/globals.css +++ b/app/src/styles/globals.css @@ -1,5 +1,6 @@ :root { --bg-color: #1a1a1a; + --bg-color-button: #000; --text-color: #ffffff; --accent-color: #f00000; --border-color: #800000; @@ -40,8 +41,8 @@ a:hover { } button { - background-color: var(--accent-color); - color: var(--bg-color); + background-color: var(--bg-color-button); + color: var(--text-color); border: 2px solid var(--border-color); padding: 10px; cursor: pointer; @@ -49,6 +50,7 @@ button { button:hover { background-color: var(--hover-color); + color: var(--bg-color-button); } header, diff --git a/broadcast/RaidGeld.s.sol/8453/run-1729970220.json b/broadcast/RaidGeld.s.sol/8453/run-1729970220.json deleted file mode 100644 index da935d1..0000000 --- a/broadcast/RaidGeld.s.sol/8453/run-1729970220.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionType": "CREATE", - "contractName": "RaidGeld", - "contractAddress": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "function": null, - "arguments": [ - "0x11dC980faf34A1D082Ae8A6a883db3A950a3c6E8", - "0x27004f6d0c1bB7979367D32Ba9d6DF6d61A18926" - ], - "transaction": { - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "gas": "0x1e142b", - "value": "0x0", - "input": "0x60a060405234801561001057600080fd5b50604051611ccd380380611ccd83398101604081905261002f916101e2565b336040518060400160405280600981526020016814985a590811d95b1960ba1b8152506040518060400160405280600481526020016311d1531160e21b815250816003908161007e91906102b4565b50600461008b82826102b4565b5050506001600160a01b0381166100bc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100c581610174565b50600880546001600160a01b038085166001600160a01b0319928316811790935560098054918516919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561012f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101539190610372565b61015e90600a61049b565b6101699060326104aa565b608052506104c19050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146101dd57600080fd5b919050565b600080604083850312156101f557600080fd5b6101fe836101c6565b915061020c602084016101c6565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061023f57607f821691505b60208210810361025f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102af57806000526020600020601f840160051c8101602085101561028c5750805b601f840160051c820191505b818110156102ac5760008155600101610298565b50505b505050565b81516001600160401b038111156102cd576102cd610215565b6102e1816102db845461022b565b84610265565b6020601f82116001811461031557600083156102fd5750848201515b600019600385901b1c1916600184901b1784556102ac565b600084815260208120601f198516915b828110156103455787850151825560209485019460019092019101610325565b50848210156103635786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561038457600080fd5b815160ff8116811461039557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156103ed578085048111156103d1576103d161039c565b60018416156103df57908102905b60019390931c9280026103b6565b935093915050565b60008261040457506001610495565b8161041157506000610495565b816001811461042757600281146104315761044d565b6001915050610495565b60ff8411156104425761044261039c565b50506001821b610495565b5060208310610133831016604e8410600b8410161715610470575081810a610495565b61047d60001984846103b2565b80600019048211156104915761049161039c565b0290505b92915050565b600061039560ff8416836103f5565b80820281158282048414176104955761049561039c565b6080516117ea6104e360003960008181610677015261088901526117ea6000f3fe6080604052600436106101855760003560e01c80635c12cd4b116100d1578063a7db742f1161008a578063c861dcb111610064578063c861dcb114610650578063db4d0d2714610665578063dd62ed3e14610699578063f2fde38b146106df576101fd565b8063a7db742f146105e0578063a9059cbb146105f5578063c3c5a54714610615576101fd565b80635c12cd4b1461050057806370a0823114610542578063715018a61461057857806385ed706d1461058d5780638da5cb5b146105ad57806395d89b41146105cb576101fd565b806323b872dd1161013e5780633ccfd60b116101185780633ccfd60b1461036c57806347d1e46e146103815780634914b0301461039b57806353d7da60146103bb576101fd565b806323b872dd1461031a5780632703984c1461033a578063313ce56714610350576101fd565b806306fdde0314610245578063095ea7b31461027057806313820ba7146102a057806316f0115b146102c357806318160ddd146102fb5780631aa3a00814610310576101fd565b366101fd5760405162461bcd60e51b815260206004820152603f60248201527f4e6f20706c61696e2045746865722061636365707465642c207573652072656760448201527f697374657228292066756e6374696f6e20746f20636865636b20696e203a290060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f2066616c6c6261636b2063616c6c7320616363657074656400000000000060448201526064016101f4565b34801561025157600080fd5b5061025a6106ff565b6040516102679190611544565b60405180910390f35b34801561027c57600080fd5b5061029061028b3660046115ae565b610791565b6040519015158152602001610267565b3480156102ac57600080fd5b506102b5600f81565b604051908152602001610267565b3480156102cf57600080fd5b506009546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610267565b34801561030757600080fd5b506002546102b5565b6103186107ab565b005b34801561032657600080fd5b506102906103353660046115d8565b610a6c565b34801561034657600080fd5b506102b561271081565b34801561035c57600080fd5b5060405160048152602001610267565b34801561037857600080fd5b50610318610a90565b34801561038d57600080fd5b506102b5652d79883d200081565b3480156103a757600080fd5b506008546102e3906001600160a01b031681565b3480156103c757600080fd5b506104aa6103d6366004611615565b6040805160c081018252600060a082018181528252825160208082018552828252808401919091528351808201855282815283850152835190810190935280835260608201929092526080810191909152506001600160a01b0316600090815260076020908152604091829020825160c081018452815461ffff90811660a08301908152825284518085018652600184015482168152828501528451808501865260028401548216815282860152845193840190945260038201549093168252606083019190915260040154608082015290565b6040516102679190600060a08201905061ffff83515116825261ffff60208401515116602083015261ffff60408401515116604083015261ffff6060840151511660608301526080830151608083015292915050565b34801561050c57600080fd5b5061052061051b366004611615565b610ad4565b6040805182518152602080840151908201529181015190820152606001610267565b34801561054e57600080fd5b506102b561055d366004611615565b6001600160a01b031660009081526020819052604090205490565b34801561058457600080fd5b50610318610b3a565b34801561059957600080fd5b506103186105a8366004611637565b610b4e565b3480156105b957600080fd5b506005546001600160a01b03166102e3565b3480156105d757600080fd5b5061025a610e2d565b3480156105ec57600080fd5b50610318610e3c565b34801561060157600080fd5b506102906106103660046115ae565b610f07565b34801561062157600080fd5b50610290610630366004611615565b6001600160a01b0316600090815260066020526040902060010154151590565b34801561065c57600080fd5b506102b5610f15565b34801561067157600080fd5b506102b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a557600080fd5b506102b56106b436600461167d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106eb57600080fd5b506103186106fa366004611615565b610f25565b60606003805461070e906116b0565b80601f016020809104026020016040519081016040528092919081815260200182805461073a906116b0565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60003361079f818585610f60565b60019150505b92915050565b336000908152600660205260409020600101541561080b5760405162461bcd60e51b815260206004820181905260248201527f57686f6f70732c20706c6179657220616c726561647920657869737473203a2960448201526064016101f4565b341561086b57652d79883d200034146108665760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742062757920696e20616d6f756e7400000000000000000060448201526064016101f4565b610951565b6008546040516323b872dd60e01b81523360048201523060248201527f000000000000000000000000000000000000000000000000000000000000000060448201526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090591906116ea565b6109515760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e736665722044414f20746f6b656e7300000060448201526064016101f4565b610967336109626127106032611722565b610f72565b604051806060016040528061271060326109819190611722565b815242602080830182905260409283019190915233600081815260068352838120855181558584015160018083019190915595850151600291820155845160c08101865260a0810183815281528551808601875283815281860190815286518087018852848152828801908152875180880189528581526060840190815260808401868152968652600790975296909320905151815461ffff1990811661ffff92831617835593515197820180548516988216989098179097559451519085018054831691871691909117905591515160038401805490931694169390931790559051600490910155565b600033610a7a858285610fac565b610a8585858561102a565b506001949350505050565b610a98611089565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b50565b610af860405180606001604052806000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b610b42611089565b610b4c60006110b6565b565b336000908152600660205260408120600101549003610ba95760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101f4565b60038260ff161115610bec5760405162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb881d5b9a5d60a21b60448201526064016101f4565b3360009081526007602052604081209060ff84168103610c125750805461ffff16610c5c565b8360ff16600103610c2c5750600181015461ffff16610c5c565b8360ff16600203610c465750600281015461ffff16610c5c565b8360ff16600303610c5c5750600381015461ffff165b6000610c69858386611108565b9050610c74336111d5565b336000908152602081905260409020548110610cd25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682047454c4420746f206164642074686973206d75636860448201526064016101f4565b610cdc3382611258565b8460ff16600003610d1e57825484908490600090610cff90849061ffff16611739565b92506101000a81548161ffff021916908361ffff160217905550610dab565b8460ff16600103610d4457600183018054859190600090610cff90849061ffff16611739565b8460ff16600203610d6a57600283018054859190600090610cff90849061ffff16611739565b8460ff16600303610dab57600383018054859190600090610d9090849061ffff16611739565b92506101000a81548161ffff021916908361ffff1602179055505b6040805160c081018252845461ffff90811660a08301908152825282516020818101855260018801548316825280840191909152835180820185526002880154831681528385015283519081019093526003860154168252606081019190915260048401546080820152610e1e9061128e565b83600401819055505050505050565b60606004805461070e906116b0565b336000908152600660205260408120600101549003610e975760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101f4565b33600090815260066020526040902060020154610eb690600f90611753565b421015610efe5760405162461bcd60e51b81526020600482015260166024820152752a3934b2b21036b4b73a34b733903a37b79039b7b7b760511b60448201526064016101f4565b610b4c336111d5565b60003361079f81858561102a565b610f226127106032611722565b81565b610f2d611089565b6001600160a01b038116610f5757604051631e4fbdf760e01b8152600060048201526024016101f4565b610ad1816110b6565b610f6d8383836001611345565b505050565b6001600160a01b038216610f9c5760405163ec442f0560e01b8152600060048201526024016101f4565b610fa86000838361141a565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611024578181101561101557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016101f4565b61102484848484036000611345565b50505050565b6001600160a01b03831661105457604051634b637e8f60e11b8152600060048201526024016101f4565b6001600160a01b03821661107e5760405163ec442f0560e01b8152600060048201526024016101f4565b610f6d83838361141a565b6005546001600160a01b03163314610b4c5760405163118cdaa760e01b81523360048201526024016101f4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060038460ff1611156111575760405162461bcd60e51b8152602060048201526016602482015275139bc81b585d18da1a5b99c81d5b9a5d08199bdd5b9960521b60448201526064016101f4565b60006205cc60611168866001611766565b60ff166111759190611722565b90508060015b6111858587611739565b61ffff168110156111cb5761271061119f612cec85611722565b6111a9919061177f565b92508561ffff1681106111c3576111c08383611753565b91505b60010161117b565b5095945050505050565b6001600160a01b0381166000908152600660205260408120600201546111fb90426117a1565b6001600160a01b03831660009081526007602052604081206004015491925090611226908390611722565b90506112328382610f72565b6001600160a01b0390921660009081526006602052604090204260028201559190915550565b6001600160a01b03821661128257604051634b637e8f60e11b8152600060048201526024016101f4565b610fa88260008361141a565b80515160009081906112a7906127109061ffff16611722565b9050600061ee4884602001516000015161ffff166112c59190611722565b905060006205dc0085604001516000015161ffff166112e49190611722565b905060006127106112fb8165ede50bb9800061177f565b611305919061177f565b606087015151611319919061ffff16611722565b905080826113278587611753565b6113319190611753565b61133b9190611753565b9695505050505050565b6001600160a01b03841661136f5760405163e602df0560e01b8152600060048201526024016101f4565b6001600160a01b03831661139957604051634a1406b160e11b8152600060048201526024016101f4565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561102457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161140c91815260200190565b60405180910390a350505050565b6001600160a01b03831661144557806002600082825461143a9190611753565b909155506114b79050565b6001600160a01b038316600090815260208190526040902054818110156114985760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101f4565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166114d3576002805482900390556114f2565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161153791815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156115725760208186018101516040868401015201611555565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146115a957600080fd5b919050565b600080604083850312156115c157600080fd5b6115ca83611592565b946020939093013593505050565b6000806000606084860312156115ed57600080fd5b6115f684611592565b925061160460208501611592565b929592945050506040919091013590565b60006020828403121561162757600080fd5b61163082611592565b9392505050565b6000806040838503121561164a57600080fd5b823560ff8116811461165b57600080fd5b9150602083013561ffff8116811461167257600080fd5b809150509250929050565b6000806040838503121561169057600080fd5b61169983611592565b91506116a760208401611592565b90509250929050565b600181811c908216806116c457607f821691505b6020821081036116e457634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156116fc57600080fd5b8151801515811461163057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107a5576107a561170c565b61ffff81811683821601908111156107a5576107a561170c565b808201808211156107a5576107a561170c565b60ff81811683821601908111156107a5576107a561170c565b60008261179c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107a5576107a561170c56fea2646970667358221220e6bad70680fdee5fb985ae5e884c4471f46d5febec4efc3ccebe2e1ee82de75764736f6c634300081c003300000000000000000000000011dc980faf34a1d082ae8a6a883db3a950a3c6e800000000000000000000000027004f6d0c1bb7979367d32ba9d6df6d61a18926", - "nonce": "0x1", - "chainId": "0x2105" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x172507", - "logs": [ - { - "address": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000003295cca2d922c637d35b258fc6c9c7e471803b45" - ], - "data": "0x", - "blockHash": "0xe8f062660de56b3a4a6ee42c5abb2b43d7cee37c911822eff46c6dead0783edd", - "blockNumber": "0x1497119", - "blockTimestamp": "0x671d402a", - "transactionHash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000008000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000010000000000000001000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionIndex": "0x0", - "blockHash": "0xe8f062660de56b3a4a6ee42c5abb2b43d7cee37c911822eff46c6dead0783edd", - "blockNumber": "0x1497119", - "gasUsed": "0x172507", - "effectiveGasPrice": "0x2b", - "blobGasPrice": "0x1", - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "to": null, - "contractAddress": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1729970220, - "chain": 8453, - "commit": "5b0d24c" -} \ No newline at end of file diff --git a/broadcast/RaidGeld.s.sol/8453/run-latest.json b/broadcast/RaidGeld.s.sol/8453/run-latest.json deleted file mode 100644 index da935d1..0000000 --- a/broadcast/RaidGeld.s.sol/8453/run-latest.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionType": "CREATE", - "contractName": "RaidGeld", - "contractAddress": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "function": null, - "arguments": [ - "0x11dC980faf34A1D082Ae8A6a883db3A950a3c6E8", - "0x27004f6d0c1bB7979367D32Ba9d6DF6d61A18926" - ], - "transaction": { - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "gas": "0x1e142b", - "value": "0x0", - "input": "0x60a060405234801561001057600080fd5b50604051611ccd380380611ccd83398101604081905261002f916101e2565b336040518060400160405280600981526020016814985a590811d95b1960ba1b8152506040518060400160405280600481526020016311d1531160e21b815250816003908161007e91906102b4565b50600461008b82826102b4565b5050506001600160a01b0381166100bc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100c581610174565b50600880546001600160a01b038085166001600160a01b0319928316811790935560098054918516919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561012f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101539190610372565b61015e90600a61049b565b6101699060326104aa565b608052506104c19050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146101dd57600080fd5b919050565b600080604083850312156101f557600080fd5b6101fe836101c6565b915061020c602084016101c6565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061023f57607f821691505b60208210810361025f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102af57806000526020600020601f840160051c8101602085101561028c5750805b601f840160051c820191505b818110156102ac5760008155600101610298565b50505b505050565b81516001600160401b038111156102cd576102cd610215565b6102e1816102db845461022b565b84610265565b6020601f82116001811461031557600083156102fd5750848201515b600019600385901b1c1916600184901b1784556102ac565b600084815260208120601f198516915b828110156103455787850151825560209485019460019092019101610325565b50848210156103635786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561038457600080fd5b815160ff8116811461039557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156103ed578085048111156103d1576103d161039c565b60018416156103df57908102905b60019390931c9280026103b6565b935093915050565b60008261040457506001610495565b8161041157506000610495565b816001811461042757600281146104315761044d565b6001915050610495565b60ff8411156104425761044261039c565b50506001821b610495565b5060208310610133831016604e8410600b8410161715610470575081810a610495565b61047d60001984846103b2565b80600019048211156104915761049161039c565b0290505b92915050565b600061039560ff8416836103f5565b80820281158282048414176104955761049561039c565b6080516117ea6104e360003960008181610677015261088901526117ea6000f3fe6080604052600436106101855760003560e01c80635c12cd4b116100d1578063a7db742f1161008a578063c861dcb111610064578063c861dcb114610650578063db4d0d2714610665578063dd62ed3e14610699578063f2fde38b146106df576101fd565b8063a7db742f146105e0578063a9059cbb146105f5578063c3c5a54714610615576101fd565b80635c12cd4b1461050057806370a0823114610542578063715018a61461057857806385ed706d1461058d5780638da5cb5b146105ad57806395d89b41146105cb576101fd565b806323b872dd1161013e5780633ccfd60b116101185780633ccfd60b1461036c57806347d1e46e146103815780634914b0301461039b57806353d7da60146103bb576101fd565b806323b872dd1461031a5780632703984c1461033a578063313ce56714610350576101fd565b806306fdde0314610245578063095ea7b31461027057806313820ba7146102a057806316f0115b146102c357806318160ddd146102fb5780631aa3a00814610310576101fd565b366101fd5760405162461bcd60e51b815260206004820152603f60248201527f4e6f20706c61696e2045746865722061636365707465642c207573652072656760448201527f697374657228292066756e6374696f6e20746f20636865636b20696e203a290060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f2066616c6c6261636b2063616c6c7320616363657074656400000000000060448201526064016101f4565b34801561025157600080fd5b5061025a6106ff565b6040516102679190611544565b60405180910390f35b34801561027c57600080fd5b5061029061028b3660046115ae565b610791565b6040519015158152602001610267565b3480156102ac57600080fd5b506102b5600f81565b604051908152602001610267565b3480156102cf57600080fd5b506009546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610267565b34801561030757600080fd5b506002546102b5565b6103186107ab565b005b34801561032657600080fd5b506102906103353660046115d8565b610a6c565b34801561034657600080fd5b506102b561271081565b34801561035c57600080fd5b5060405160048152602001610267565b34801561037857600080fd5b50610318610a90565b34801561038d57600080fd5b506102b5652d79883d200081565b3480156103a757600080fd5b506008546102e3906001600160a01b031681565b3480156103c757600080fd5b506104aa6103d6366004611615565b6040805160c081018252600060a082018181528252825160208082018552828252808401919091528351808201855282815283850152835190810190935280835260608201929092526080810191909152506001600160a01b0316600090815260076020908152604091829020825160c081018452815461ffff90811660a08301908152825284518085018652600184015482168152828501528451808501865260028401548216815282860152845193840190945260038201549093168252606083019190915260040154608082015290565b6040516102679190600060a08201905061ffff83515116825261ffff60208401515116602083015261ffff60408401515116604083015261ffff6060840151511660608301526080830151608083015292915050565b34801561050c57600080fd5b5061052061051b366004611615565b610ad4565b6040805182518152602080840151908201529181015190820152606001610267565b34801561054e57600080fd5b506102b561055d366004611615565b6001600160a01b031660009081526020819052604090205490565b34801561058457600080fd5b50610318610b3a565b34801561059957600080fd5b506103186105a8366004611637565b610b4e565b3480156105b957600080fd5b506005546001600160a01b03166102e3565b3480156105d757600080fd5b5061025a610e2d565b3480156105ec57600080fd5b50610318610e3c565b34801561060157600080fd5b506102906106103660046115ae565b610f07565b34801561062157600080fd5b50610290610630366004611615565b6001600160a01b0316600090815260066020526040902060010154151590565b34801561065c57600080fd5b506102b5610f15565b34801561067157600080fd5b506102b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a557600080fd5b506102b56106b436600461167d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106eb57600080fd5b506103186106fa366004611615565b610f25565b60606003805461070e906116b0565b80601f016020809104026020016040519081016040528092919081815260200182805461073a906116b0565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60003361079f818585610f60565b60019150505b92915050565b336000908152600660205260409020600101541561080b5760405162461bcd60e51b815260206004820181905260248201527f57686f6f70732c20706c6179657220616c726561647920657869737473203a2960448201526064016101f4565b341561086b57652d79883d200034146108665760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742062757920696e20616d6f756e7400000000000000000060448201526064016101f4565b610951565b6008546040516323b872dd60e01b81523360048201523060248201527f000000000000000000000000000000000000000000000000000000000000000060448201526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090591906116ea565b6109515760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e736665722044414f20746f6b656e7300000060448201526064016101f4565b610967336109626127106032611722565b610f72565b604051806060016040528061271060326109819190611722565b815242602080830182905260409283019190915233600081815260068352838120855181558584015160018083019190915595850151600291820155845160c08101865260a0810183815281528551808601875283815281860190815286518087018852848152828801908152875180880189528581526060840190815260808401868152968652600790975296909320905151815461ffff1990811661ffff92831617835593515197820180548516988216989098179097559451519085018054831691871691909117905591515160038401805490931694169390931790559051600490910155565b600033610a7a858285610fac565b610a8585858561102a565b506001949350505050565b610a98611089565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b50565b610af860405180606001604052806000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b610b42611089565b610b4c60006110b6565b565b336000908152600660205260408120600101549003610ba95760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101f4565b60038260ff161115610bec5760405162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb881d5b9a5d60a21b60448201526064016101f4565b3360009081526007602052604081209060ff84168103610c125750805461ffff16610c5c565b8360ff16600103610c2c5750600181015461ffff16610c5c565b8360ff16600203610c465750600281015461ffff16610c5c565b8360ff16600303610c5c5750600381015461ffff165b6000610c69858386611108565b9050610c74336111d5565b336000908152602081905260409020548110610cd25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682047454c4420746f206164642074686973206d75636860448201526064016101f4565b610cdc3382611258565b8460ff16600003610d1e57825484908490600090610cff90849061ffff16611739565b92506101000a81548161ffff021916908361ffff160217905550610dab565b8460ff16600103610d4457600183018054859190600090610cff90849061ffff16611739565b8460ff16600203610d6a57600283018054859190600090610cff90849061ffff16611739565b8460ff16600303610dab57600383018054859190600090610d9090849061ffff16611739565b92506101000a81548161ffff021916908361ffff1602179055505b6040805160c081018252845461ffff90811660a08301908152825282516020818101855260018801548316825280840191909152835180820185526002880154831681528385015283519081019093526003860154168252606081019190915260048401546080820152610e1e9061128e565b83600401819055505050505050565b60606004805461070e906116b0565b336000908152600660205260408120600101549003610e975760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101f4565b33600090815260066020526040902060020154610eb690600f90611753565b421015610efe5760405162461bcd60e51b81526020600482015260166024820152752a3934b2b21036b4b73a34b733903a37b79039b7b7b760511b60448201526064016101f4565b610b4c336111d5565b60003361079f81858561102a565b610f226127106032611722565b81565b610f2d611089565b6001600160a01b038116610f5757604051631e4fbdf760e01b8152600060048201526024016101f4565b610ad1816110b6565b610f6d8383836001611345565b505050565b6001600160a01b038216610f9c5760405163ec442f0560e01b8152600060048201526024016101f4565b610fa86000838361141a565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611024578181101561101557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016101f4565b61102484848484036000611345565b50505050565b6001600160a01b03831661105457604051634b637e8f60e11b8152600060048201526024016101f4565b6001600160a01b03821661107e5760405163ec442f0560e01b8152600060048201526024016101f4565b610f6d83838361141a565b6005546001600160a01b03163314610b4c5760405163118cdaa760e01b81523360048201526024016101f4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060038460ff1611156111575760405162461bcd60e51b8152602060048201526016602482015275139bc81b585d18da1a5b99c81d5b9a5d08199bdd5b9960521b60448201526064016101f4565b60006205cc60611168866001611766565b60ff166111759190611722565b90508060015b6111858587611739565b61ffff168110156111cb5761271061119f612cec85611722565b6111a9919061177f565b92508561ffff1681106111c3576111c08383611753565b91505b60010161117b565b5095945050505050565b6001600160a01b0381166000908152600660205260408120600201546111fb90426117a1565b6001600160a01b03831660009081526007602052604081206004015491925090611226908390611722565b90506112328382610f72565b6001600160a01b0390921660009081526006602052604090204260028201559190915550565b6001600160a01b03821661128257604051634b637e8f60e11b8152600060048201526024016101f4565b610fa88260008361141a565b80515160009081906112a7906127109061ffff16611722565b9050600061ee4884602001516000015161ffff166112c59190611722565b905060006205dc0085604001516000015161ffff166112e49190611722565b905060006127106112fb8165ede50bb9800061177f565b611305919061177f565b606087015151611319919061ffff16611722565b905080826113278587611753565b6113319190611753565b61133b9190611753565b9695505050505050565b6001600160a01b03841661136f5760405163e602df0560e01b8152600060048201526024016101f4565b6001600160a01b03831661139957604051634a1406b160e11b8152600060048201526024016101f4565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561102457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161140c91815260200190565b60405180910390a350505050565b6001600160a01b03831661144557806002600082825461143a9190611753565b909155506114b79050565b6001600160a01b038316600090815260208190526040902054818110156114985760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101f4565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166114d3576002805482900390556114f2565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161153791815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156115725760208186018101516040868401015201611555565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146115a957600080fd5b919050565b600080604083850312156115c157600080fd5b6115ca83611592565b946020939093013593505050565b6000806000606084860312156115ed57600080fd5b6115f684611592565b925061160460208501611592565b929592945050506040919091013590565b60006020828403121561162757600080fd5b61163082611592565b9392505050565b6000806040838503121561164a57600080fd5b823560ff8116811461165b57600080fd5b9150602083013561ffff8116811461167257600080fd5b809150509250929050565b6000806040838503121561169057600080fd5b61169983611592565b91506116a760208401611592565b90509250929050565b600181811c908216806116c457607f821691505b6020821081036116e457634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156116fc57600080fd5b8151801515811461163057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107a5576107a561170c565b61ffff81811683821601908111156107a5576107a561170c565b808201808211156107a5576107a561170c565b60ff81811683821601908111156107a5576107a561170c565b60008261179c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107a5576107a561170c56fea2646970667358221220e6bad70680fdee5fb985ae5e884c4471f46d5febec4efc3ccebe2e1ee82de75764736f6c634300081c003300000000000000000000000011dc980faf34a1d082ae8a6a883db3a950a3c6e800000000000000000000000027004f6d0c1bb7979367d32ba9d6df6d61a18926", - "nonce": "0x1", - "chainId": "0x2105" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x172507", - "logs": [ - { - "address": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000003295cca2d922c637d35b258fc6c9c7e471803b45" - ], - "data": "0x", - "blockHash": "0xe8f062660de56b3a4a6ee42c5abb2b43d7cee37c911822eff46c6dead0783edd", - "blockNumber": "0x1497119", - "blockTimestamp": "0x671d402a", - "transactionHash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000008000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000010000000000000001000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf4278a9fce11d0c2cead03215a7b1a659835ee9c34eaef5d77414746e08df39e", - "transactionIndex": "0x0", - "blockHash": "0xe8f062660de56b3a4a6ee42c5abb2b43d7cee37c911822eff46c6dead0783edd", - "blockNumber": "0x1497119", - "gasUsed": "0x172507", - "effectiveGasPrice": "0x2b", - "blobGasPrice": "0x1", - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "to": null, - "contractAddress": "0xb2fc8f28ad37290245241c6cb0e411c9fff6a1d7", - "root": "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1729970220, - "chain": 8453, - "commit": "5b0d24c" -} \ No newline at end of file diff --git a/broadcast/RaidGeld.s.sol/84532/run-1729696549.json b/broadcast/RaidGeld.s.sol/84532/run-1729696549.json deleted file mode 100644 index 0a1ec0c..0000000 --- a/broadcast/RaidGeld.s.sol/84532/run-1729696549.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9d39df7a47137565fa4dfd579c92e4a90db9ae54490630585e878d7313ce15a7", - "transactionType": "CREATE", - "contractName": "RaidGeld", - "contractAddress": "0xbd06b0878888bf4c6895704fa603a5adf7e65c66", - "function": null, - "arguments": null, - "transaction": { - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "gas": "0x1c21ce", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50336040518060400160405280600981526020016814985a590811d95b1960ba1b8152506040518060400160405280600481526020016311d1531160e21b8152508160039081610060919061019e565b50600461006d828261019e565b5050506001600160a01b03811661009e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100a7816100ad565b5061025c565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061012957607f821691505b60208210810361014957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561019957806000526020600020601f840160051c810160208510156101765750805b601f840160051c820191505b818110156101965760008155600101610182565b50505b505050565b81516001600160401b038111156101b7576101b76100ff565b6101cb816101c58454610115565b8461014f565b6020601f8211600181146101ff57600083156101e75750848201515b600019600385901b1c1916600184901b178455610196565b600084815260208120601f198516915b8281101561022f578785015182556020948501946001909201910161020f565b508482101561024d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6117478061026b6000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a7db742f1161006f578063a7db742f14610530578063a9059cbb14610545578063c3c5a54714610565578063c861dcb1146105a0578063dd62ed3e146105b5578063f2fde38b146105fb576101b1565b806370a0823114610488578063715018a6146104be57806385ed706d146104d35780638da5cb5b146104f357806395d89b411461051b576101b1565b806323b872dd116100fd57806323b872dd14610296578063313ce567146102b65780633ccfd60b146102d257806347d1e46e146102e757806353d7da60146103015780635c12cd4b14610446576101b1565b806306fdde03146101f9578063095ea7b31461022457806313820ba71461025457806318160ddd146102775780631aa3a0081461028c576101b1565b366101b15760405162461bcd60e51b815260206004820152603f60248201527f4e6f20706c61696e2045746865722061636365707465642c207573652072656760448201527f697374657228292066756e6374696f6e20746f20636865636b20696e203a290060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f2066616c6c6261636b2063616c6c7320616363657074656400000000000060448201526064016101a8565b34801561020557600080fd5b5061020e61061b565b60405161021b9190611396565b60405180910390f35b34801561023057600080fd5b5061024461023f366004611400565b6106ad565b604051901515815260200161021b565b34801561026057600080fd5b50610269600f81565b60405190815260200161021b565b34801561028357600080fd5b50600254610269565b6102946106c7565b005b3480156102a257600080fd5b506102446102b136600461142a565b6108ab565b3480156102c257600080fd5b506040516004815260200161021b565b3480156102de57600080fd5b506102946108cf565b3480156102f357600080fd5b50610269652d79883d200081565b34801561030d57600080fd5b506103f061031c366004611467565b6040805160c081018252600060a082018181528252825160208082018552828252808401919091528351808201855282815283850152835190810190935280835260608201929092526080810191909152506001600160a01b0316600090815260076020908152604091829020825160c081018452815461ffff90811660a08301908152825284518085018652600184015482168152828501528451808501865260028401548216815282860152845193840190945260038201549093168252606083019190915260040154608082015290565b60405161021b9190600060a08201905061ffff83515116825261ffff60208401515116602083015261ffff60408401515116604083015261ffff6060840151511660608301526080830151608083015292915050565b34801561045257600080fd5b50610466610461366004611467565b610913565b604080518251815260208084015190820152918101519082015260600161021b565b34801561049457600080fd5b506102696104a3366004611467565b6001600160a01b031660009081526020819052604090205490565b3480156104ca57600080fd5b50610294610979565b3480156104df57600080fd5b506102946104ee366004611489565b61098d565b3480156104ff57600080fd5b506005546040516001600160a01b03909116815260200161021b565b34801561052757600080fd5b5061020e610c64565b34801561053c57600080fd5b50610294610c73565b34801561055157600080fd5b50610244610560366004611400565b610daf565b34801561057157600080fd5b50610244610580366004611467565b6001600160a01b0316600090815260066020526040902060010154151590565b3480156105ac57600080fd5b50610269610dbd565b3480156105c157600080fd5b506102696105d03660046114cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060757600080fd5b50610294610616366004611467565b610dd7565b60606003805461062a90611502565b80601f016020809104026020016040519081016040528092919081815260200182805461065690611502565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000336106bb818585610e12565b60019150505b92915050565b33600090815260066020526040902060010154156107275760405162461bcd60e51b815260206004820181905260248201527f57686f6f70732c20706c6179657220616c726561647920657869737473203a2960448201526064016101a8565b652d79883d2000341461077c5760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742062757920696e20616d6f756e7400000000000000000060448201526064016101a8565b61079c3361078c6004600a611639565b610797906032611648565b610e24565b60405180606001604052806004600a6107b59190611639565b6107c0906032611648565b815242602080830182905260409283019190915233600081815260068352838120855181558584015160018083019190915595850151600291820155845160c08101865260a0810183815281528551808601875283815281860190815286518087018852848152828801908152875180880189528581526060840190815260808401868152968652600790975296909320905151815461ffff1990811661ffff92831617835593515197820180548516988216989098179097559451519085018054831691871691909117905591515160038401805490931694169390931790559051600490910155565b6000336108b9858285610e5e565b6108c4858585610edc565b506001949350505050565b6108d7610f3b565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610910573d6000803e3d6000fd5b50565b61093760405180606001604052806000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b610981610f3b565b61098b6000610f68565b565b3360009081526006602052604081206001015490036109e85760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b60038260ff161115610a2b5760405162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb881d5b9a5d60a21b60448201526064016101a8565b3360009081526007602052604081209060ff84168103610a515750805461ffff16610a9b565b8360ff16600103610a6b5750600181015461ffff16610a9b565b8360ff16600203610a855750600281015461ffff16610a9b565b8360ff16600303610a9b5750600381015461ffff165b6000610aa8858386610fba565b336000908152602081905260409020549091508110610b095760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682047454c4420746f206164642074686973206d75636860448201526064016101a8565b610b13338261107c565b8460ff16600003610b5557825484908490600090610b3690849061ffff1661165f565b92506101000a81548161ffff021916908361ffff160217905550610be2565b8460ff16600103610b7b57600183018054859190600090610b3690849061ffff1661165f565b8460ff16600203610ba157600283018054859190600090610b3690849061ffff1661165f565b8460ff16600303610be257600383018054859190600090610bc790849061ffff1661165f565b92506101000a81548161ffff021916908361ffff1602179055505b6040805160c081018252845461ffff90811660a08301908152825282516020818101855260018801548316825280840191909152835180820185526002880154831681528385015283519081019093526003860154168252606081019190915260048401546080820152610c55906110b2565b83600401819055505050505050565b60606004805461062a90611502565b336000908152600660205260408120600101549003610cce5760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b33600090815260066020526040902060020154610ced90600f90611679565b421015610d355760405162461bcd60e51b81526020600482015260166024820152752a3934b2b21036b4b73a34b733903a37b79039b7b7b760511b60448201526064016101a8565b33600090815260066020526040812060020154610d52904261168c565b90506000610d626004600a611639565b33600090815260076020526040902060040154610d80908490611648565b610d8a9190611648565b9050610d963382610e24565b3360009081526006602052604090204260028201555550565b6000336106bb818585610edc565b610dc96004600a611639565b610dd4906032611648565b81565b610ddf610f3b565b6001600160a01b038116610e0957604051631e4fbdf760e01b8152600060048201526024016101a8565b61091081610f68565b610e1f8383836001611197565b505050565b6001600160a01b038216610e4e5760405163ec442f0560e01b8152600060048201526024016101a8565b610e5a6000838361126c565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ed65781811015610ec757604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016101a8565b610ed684848484036000611197565b50505050565b6001600160a01b038316610f0657604051634b637e8f60e11b8152600060048201526024016101a8565b6001600160a01b038216610f305760405163ec442f0560e01b8152600060048201526024016101a8565b610e1f83838361126c565b6005546001600160a01b0316331461098b5760405163118cdaa760e01b81523360048201526024016101a8565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060038460ff1611156110095760405162461bcd60e51b8152602060048201526016602482015275139bc81b585d18da1a5b99c81d5b9a5d08199bdd5b9960521b60448201526064016101a8565b600061101960ff86166026611648565b90506000607360015b61102c868861165f565b61ffff168110156110705760646110438386611648565b61104d91906116b5565b93508661ffff16811115611068576110658484611679565b92505b600101611022565b50909695505050505050565b6001600160a01b0382166110a657604051634b637e8f60e11b8152600060048201526024016101a8565b610e5a8260008361126c565b80515160208201515160009161ffff16908290600a906110d390603d6116c9565b6110dd91906116ed565b61ffff1690506000600a85604001516000015160066110fc91906116c9565b6111079060406116c9565b61111191906116ed565b61ffff1690506000600a80600a886060015160000151603d61113391906116c9565b61113d91906116ed565b6111489060406116c9565b61115291906116ed565b61115d9060436116c9565b61116791906116ed565b61ffff16905080826111798587611679565b6111839190611679565b61118d9190611679565b9695505050505050565b6001600160a01b0384166111c15760405163e602df0560e01b8152600060048201526024016101a8565b6001600160a01b0383166111eb57604051634a1406b160e11b8152600060048201526024016101a8565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ed657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161125e91815260200190565b60405180910390a350505050565b6001600160a01b03831661129757806002600082825461128c9190611679565b909155506113099050565b6001600160a01b038316600090815260208190526040902054818110156112ea5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661132557600280548290039055611344565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138991815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156113c457602081860181015160408684010152016113a7565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146113fb57600080fd5b919050565b6000806040838503121561141357600080fd5b61141c836113e4565b946020939093013593505050565b60008060006060848603121561143f57600080fd5b611448846113e4565b9250611456602085016113e4565b929592945050506040919091013590565b60006020828403121561147957600080fd5b611482826113e4565b9392505050565b6000806040838503121561149c57600080fd5b823560ff811681146114ad57600080fd5b9150602083013561ffff811681146114c457600080fd5b809150509250929050565b600080604083850312156114e257600080fd5b6114eb836113e4565b91506114f9602084016113e4565b90509250929050565b600181811c9082168061151657607f821691505b60208210810361153657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b600184111561158d578085048111156115715761157161153c565b600184161561157f57908102905b60019390931c928002611556565b935093915050565b6000826115a4575060016106c1565b816115b1575060006106c1565b81600181146115c757600281146115d1576115ed565b60019150506106c1565b60ff8411156115e2576115e261153c565b50506001821b6106c1565b5060208310610133831016604e8410600b8410161715611610575081810a6106c1565b61161d6000198484611552565b80600019048211156116315761163161153c565b029392505050565b600061148260ff841683611595565b80820281158282048414176106c1576106c161153c565b61ffff81811683821601908111156106c1576106c161153c565b808201808211156106c1576106c161153c565b818103818111156106c1576106c161153c565b634e487b7160e01b600052601260045260246000fd5b6000826116c4576116c461169f565b500490565b61ffff81811683821602908116908181146116e6576116e661153c565b5092915050565b600061ffff8316806117015761170161169f565b8061ffff8416049150509291505056fea2646970667358221220061f190eb2f6fddd15161a6db096edf6e4a5b06217867d89e6792c032ada56e764736f6c634300081c0033", - "nonce": "0x0", - "chainId": "0x14a34" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x3dfdcd", - "logs": [ - { - "address": "0xbd06b0878888bf4c6895704fa603a5adf7e65c66", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000003295cca2d922c637d35b258fc6c9c7e471803b45" - ], - "data": "0x", - "blockHash": "0xe82c2fd01054c42c857cd623a9f0bd0486c97c47b55d8504798371063e4a1614", - "blockNumber": "0x102da20", - "transactionHash": "0x9d39df7a47137565fa4dfd579c92e4a90db9ae54490630585e878d7313ce15a7", - "transactionIndex": "0xe", - "logIndex": "0x19", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000020000000000000000000800000000000004000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000010000000000000001000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9d39df7a47137565fa4dfd579c92e4a90db9ae54490630585e878d7313ce15a7", - "transactionIndex": "0xe", - "blockHash": "0xe82c2fd01054c42c857cd623a9f0bd0486c97c47b55d8504798371063e4a1614", - "blockNumber": "0x102da20", - "gasUsed": "0x15a576", - "effectiveGasPrice": "0xa0f5edca", - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "to": null, - "contractAddress": "0xbd06b0878888bf4c6895704fa603a5adf7e65c66", - "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x3", - "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x22c9f9127e", - "l1GasPrice": "0x84641d16", - "l1GasUsed": "0xeeab" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1729696549, - "chain": 84532, - "commit": "830beab" -} \ No newline at end of file diff --git a/broadcast/RaidGeld.s.sol/84532/run-1729773387.json b/broadcast/RaidGeld.s.sol/84532/run-1729773387.json deleted file mode 100644 index 76fb6d9..0000000 --- a/broadcast/RaidGeld.s.sol/84532/run-1729773387.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionType": "CREATE", - "contractName": "RaidGeld", - "contractAddress": "0x3572a80eb8df722c98814290f86be29141859660", - "function": null, - "arguments": null, - "transaction": { - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "gas": "0x1c9543", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50336040518060400160405280600981526020016814985a590811d95b1960ba1b8152506040518060400160405280600481526020016311d1531160e21b8152508160039081610060919061019e565b50600461006d828261019e565b5050506001600160a01b03811661009e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100a7816100ad565b5061025c565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061012957607f821691505b60208210810361014957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561019957806000526020600020601f840160051c810160208510156101765750805b601f840160051c820191505b818110156101965760008155600101610182565b50505b505050565b81516001600160401b038111156101b7576101b76100ff565b6101cb816101c58454610115565b8461014f565b6020601f8211600181146101ff57600083156101e75750848201515b600019600385901b1c1916600184901b178455610196565b600084815260208120601f198516915b8281101561022f578785015182556020948501946001909201910161020f565b508482101561024d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6117b08061026b6000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a7db742f1161006f578063a7db742f14610530578063a9059cbb14610545578063c3c5a54714610565578063c861dcb1146105a0578063dd62ed3e146105b5578063f2fde38b146105fb576101b1565b806370a0823114610488578063715018a6146104be57806385ed706d146104d35780638da5cb5b146104f357806395d89b411461051b576101b1565b806323b872dd116100fd57806323b872dd14610296578063313ce567146102b65780633ccfd60b146102d257806347d1e46e146102e757806353d7da60146103015780635c12cd4b14610446576101b1565b806306fdde03146101f9578063095ea7b31461022457806313820ba71461025457806318160ddd146102775780631aa3a0081461028c576101b1565b366101b15760405162461bcd60e51b815260206004820152603f60248201527f4e6f20706c61696e2045746865722061636365707465642c207573652072656760448201527f697374657228292066756e6374696f6e20746f20636865636b20696e203a290060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f2066616c6c6261636b2063616c6c7320616363657074656400000000000060448201526064016101a8565b34801561020557600080fd5b5061020e61061b565b60405161021b91906113e6565b60405180910390f35b34801561023057600080fd5b5061024461023f366004611450565b6106ad565b604051901515815260200161021b565b34801561026057600080fd5b50610269600f81565b60405190815260200161021b565b34801561028357600080fd5b50600254610269565b6102946106c7565b005b3480156102a257600080fd5b506102446102b136600461147a565b6108ab565b3480156102c257600080fd5b506040516004815260200161021b565b3480156102de57600080fd5b506102946108cf565b3480156102f357600080fd5b50610269652d79883d200081565b34801561030d57600080fd5b506103f061031c3660046114b7565b6040805160c081018252600060a082018181528252825160208082018552828252808401919091528351808201855282815283850152835190810190935280835260608201929092526080810191909152506001600160a01b0316600090815260076020908152604091829020825160c081018452815461ffff90811660a08301908152825284518085018652600184015482168152828501528451808501865260028401548216815282860152845193840190945260038201549093168252606083019190915260040154608082015290565b60405161021b9190600060a08201905061ffff83515116825261ffff60208401515116602083015261ffff60408401515116604083015261ffff6060840151511660608301526080830151608083015292915050565b34801561045257600080fd5b506104666104613660046114b7565b610913565b604080518251815260208084015190820152918101519082015260600161021b565b34801561049457600080fd5b506102696104a33660046114b7565b6001600160a01b031660009081526020819052604090205490565b3480156104ca57600080fd5b50610294610979565b3480156104df57600080fd5b506102946104ee3660046114d9565b61098d565b3480156104ff57600080fd5b506005546040516001600160a01b03909116815260200161021b565b34801561052757600080fd5b5061020e610c83565b34801561053c57600080fd5b50610294610c92565b34801561055157600080fd5b50610244610560366004611450565b610d5d565b34801561057157600080fd5b506102446105803660046114b7565b6001600160a01b0316600090815260066020526040902060010154151590565b3480156105ac57600080fd5b50610269610d6b565b3480156105c157600080fd5b506102696105d036600461151f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060757600080fd5b506102946106163660046114b7565b610d85565b60606003805461062a90611552565b80601f016020809104026020016040519081016040528092919081815260200182805461065690611552565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000336106bb818585610dc0565b60019150505b92915050565b33600090815260066020526040902060010154156107275760405162461bcd60e51b815260206004820181905260248201527f57686f6f70732c20706c6179657220616c726561647920657869737473203a2960448201526064016101a8565b652d79883d2000341461077c5760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742062757920696e20616d6f756e7400000000000000000060448201526064016101a8565b61079c3361078c6004600a611689565b610797906032611698565b610dd2565b60405180606001604052806004600a6107b59190611689565b6107c0906032611698565b815242602080830182905260409283019190915233600081815260068352838120855181558584015160018083019190915595850151600291820155845160c08101865260a0810183815281528551808601875283815281860190815286518087018852848152828801908152875180880189528581526060840190815260808401868152968652600790975296909320905151815461ffff1990811661ffff92831617835593515197820180548516988216989098179097559451519085018054831691871691909117905591515160038401805490931694169390931790559051600490910155565b6000336108b9858285610e0c565b6108c4858585610e8a565b506001949350505050565b6108d7610ee9565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610910573d6000803e3d6000fd5b50565b61093760405180606001604052806000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b610981610ee9565b61098b6000610f16565b565b3360009081526006602052604081206001015490036109e85760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b60038260ff161115610a2b5760405162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb881d5b9a5d60a21b60448201526064016101a8565b3360009081526007602052604081209060ff84168103610a515750805461ffff16610a9b565b8360ff16600103610a6b5750600181015461ffff16610a9b565b8360ff16600203610a855750600281015461ffff16610a9b565b8360ff16600303610a9b5750600381015461ffff165b6000610aa96004600a611689565b610ab4868487610f68565b610abe9190611698565b336000908152602081905260409020549091508110610b1f5760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682047454c4420746f206164642074686973206d75636860448201526064016101a8565b610b2833611033565b610b3233826110cc565b8460ff16600003610b7457825484908490600090610b5590849061ffff166116af565b92506101000a81548161ffff021916908361ffff160217905550610c01565b8460ff16600103610b9a57600183018054859190600090610b5590849061ffff166116af565b8460ff16600203610bc057600283018054859190600090610b5590849061ffff166116af565b8460ff16600303610c0157600383018054859190600090610be690849061ffff166116af565b92506101000a81548161ffff021916908361ffff1602179055505b6040805160c081018252845461ffff90811660a08301908152825282516020818101855260018801548316825280840191909152835180820185526002880154831681528385015283519081019093526003860154168252606081019190915260048401546080820152610c7490611102565b83600401819055505050505050565b60606004805461062a90611552565b336000908152600660205260408120600101549003610ced5760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b33600090815260066020526040902060020154610d0c90600f906116c9565b421015610d545760405162461bcd60e51b81526020600482015260166024820152752a3934b2b21036b4b73a34b733903a37b79039b7b7b760511b60448201526064016101a8565b61098b33611033565b6000336106bb818585610e8a565b610d776004600a611689565b610d82906032611698565b81565b610d8d610ee9565b6001600160a01b038116610db757604051631e4fbdf760e01b8152600060048201526024016101a8565b61091081610f16565b610dcd83838360016111e7565b505050565b6001600160a01b038216610dfc5760405163ec442f0560e01b8152600060048201526024016101a8565b610e08600083836112bc565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e845781811015610e7557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016101a8565b610e84848484840360006111e7565b50505050565b6001600160a01b038316610eb457604051634b637e8f60e11b8152600060048201526024016101a8565b6001600160a01b038216610ede5760405163ec442f0560e01b8152600060048201526024016101a8565b610dcd8383836112bc565b6005546001600160a01b0316331461098b5760405163118cdaa760e01b81523360048201526024016101a8565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060038460ff161115610fb75760405162461bcd60e51b8152602060048201526016602482015275139bc81b585d18da1a5b99c81d5b9a5d08199bdd5b9960521b60448201526064016101a8565b6000610fc48560016116dc565b610fd29060ff166026611698565b905080607360015b610fe486886116af565b61ffff16811015611027576064610ffb8386611698565b611005919061170b565b93508661ffff16811061101f5761101c84846116c9565b92505b600101610fda565b50909695505050505050565b6001600160a01b038116600090815260066020526040812060020154611059904261171f565b905060006110696004600a611689565b6001600160a01b038416600090815260076020526040902060040154611090908490611698565b61109a9190611698565b90506110a68382610dd2565b6001600160a01b0390921660009081526006602052604090204260028201559190915550565b6001600160a01b0382166110f657604051634b637e8f60e11b8152600060048201526024016101a8565b610e08826000836112bc565b80515160208201515160009161ffff16908290600a9061112390603d611732565b61112d9190611756565b61ffff1690506000600a856040015160000151600661114c9190611732565b611157906040611732565b6111619190611756565b61ffff1690506000600a80600a886060015160000151603d6111839190611732565b61118d9190611756565b611198906040611732565b6111a29190611756565b6111ad906043611732565b6111b79190611756565b61ffff16905080826111c985876116c9565b6111d391906116c9565b6111dd91906116c9565b9695505050505050565b6001600160a01b0384166112115760405163e602df0560e01b8152600060048201526024016101a8565b6001600160a01b03831661123b57604051634a1406b160e11b8152600060048201526024016101a8565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e8457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112ae91815260200190565b60405180910390a350505050565b6001600160a01b0383166112e75780600260008282546112dc91906116c9565b909155506113599050565b6001600160a01b0383166000908152602081905260409020548181101561133a5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661137557600280548290039055611394565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113d991815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561141457602081860181015160408684010152016113f7565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461144b57600080fd5b919050565b6000806040838503121561146357600080fd5b61146c83611434565b946020939093013593505050565b60008060006060848603121561148f57600080fd5b61149884611434565b92506114a660208501611434565b929592945050506040919091013590565b6000602082840312156114c957600080fd5b6114d282611434565b9392505050565b600080604083850312156114ec57600080fd5b823560ff811681146114fd57600080fd5b9150602083013561ffff8116811461151457600080fd5b809150509250929050565b6000806040838503121561153257600080fd5b61153b83611434565b915061154960208401611434565b90509250929050565b600181811c9082168061156657607f821691505b60208210810361158657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156115dd578085048111156115c1576115c161158c565b60018416156115cf57908102905b60019390931c9280026115a6565b935093915050565b6000826115f4575060016106c1565b81611601575060006106c1565b816001811461161757600281146116215761163d565b60019150506106c1565b60ff8411156116325761163261158c565b50506001821b6106c1565b5060208310610133831016604e8410600b8410161715611660575081810a6106c1565b61166d60001984846115a2565b80600019048211156116815761168161158c565b029392505050565b60006114d260ff8416836115e5565b80820281158282048414176106c1576106c161158c565b61ffff81811683821601908111156106c1576106c161158c565b808201808211156106c1576106c161158c565b60ff81811683821601908111156106c1576106c161158c565b634e487b7160e01b600052601260045260246000fd5b60008261171a5761171a6116f5565b500490565b818103818111156106c1576106c161158c565b61ffff818116838216029081169081811461174f5761174f61158c565b5092915050565b600061ffff83168061176a5761176a6116f5565b8061ffff8416049150509291505056fea2646970667358221220313cc1e5e86bbb7d3c3ded2bd7a034c1d5ffeb6733733567e3c8f6b4f041b55864736f6c634300081c0033", - "nonce": "0x7", - "chainId": "0x14a34" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1f8453", - "logs": [ - { - "address": "0x3572a80eb8df722c98814290f86be29141859660", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000003295cca2d922c637d35b258fc6c9c7e471803b45" - ], - "data": "0x", - "blockHash": "0x9708bb1125f0e43dc1ffc445a674ebbf03f5e0c95bf8f803027fe0b8a64492dd", - "blockNumber": "0x1037033", - "transactionHash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionIndex": "0x7", - "logIndex": "0x7", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000200000000000000800000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionIndex": "0x7", - "blockHash": "0x9708bb1125f0e43dc1ffc445a674ebbf03f5e0c95bf8f803027fe0b8a64492dd", - "blockNumber": "0x1037033", - "gasUsed": "0x15fe4c", - "effectiveGasPrice": "0x13b3f9", - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "to": null, - "contractAddress": "0x3572a80eb8df722c98814290f86be29141859660", - "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x1", - "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x664fcff1ad", - "l1GasPrice": "0x17fe2ef41", - "l1GasUsed": "0xf211" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1729773387, - "chain": 84532, - "commit": "cb12c77" -} \ No newline at end of file diff --git a/broadcast/RaidGeld.s.sol/84532/run-latest.json b/broadcast/RaidGeld.s.sol/84532/run-latest.json deleted file mode 100644 index 76fb6d9..0000000 --- a/broadcast/RaidGeld.s.sol/84532/run-latest.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionType": "CREATE", - "contractName": "RaidGeld", - "contractAddress": "0x3572a80eb8df722c98814290f86be29141859660", - "function": null, - "arguments": null, - "transaction": { - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "gas": "0x1c9543", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50336040518060400160405280600981526020016814985a590811d95b1960ba1b8152506040518060400160405280600481526020016311d1531160e21b8152508160039081610060919061019e565b50600461006d828261019e565b5050506001600160a01b03811661009e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100a7816100ad565b5061025c565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061012957607f821691505b60208210810361014957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561019957806000526020600020601f840160051c810160208510156101765750805b601f840160051c820191505b818110156101965760008155600101610182565b50505b505050565b81516001600160401b038111156101b7576101b76100ff565b6101cb816101c58454610115565b8461014f565b6020601f8211600181146101ff57600083156101e75750848201515b600019600385901b1c1916600184901b178455610196565b600084815260208120601f198516915b8281101561022f578785015182556020948501946001909201910161020f565b508482101561024d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6117b08061026b6000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a7db742f1161006f578063a7db742f14610530578063a9059cbb14610545578063c3c5a54714610565578063c861dcb1146105a0578063dd62ed3e146105b5578063f2fde38b146105fb576101b1565b806370a0823114610488578063715018a6146104be57806385ed706d146104d35780638da5cb5b146104f357806395d89b411461051b576101b1565b806323b872dd116100fd57806323b872dd14610296578063313ce567146102b65780633ccfd60b146102d257806347d1e46e146102e757806353d7da60146103015780635c12cd4b14610446576101b1565b806306fdde03146101f9578063095ea7b31461022457806313820ba71461025457806318160ddd146102775780631aa3a0081461028c576101b1565b366101b15760405162461bcd60e51b815260206004820152603f60248201527f4e6f20706c61696e2045746865722061636365707465642c207573652072656760448201527f697374657228292066756e6374696f6e20746f20636865636b20696e203a290060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f2066616c6c6261636b2063616c6c7320616363657074656400000000000060448201526064016101a8565b34801561020557600080fd5b5061020e61061b565b60405161021b91906113e6565b60405180910390f35b34801561023057600080fd5b5061024461023f366004611450565b6106ad565b604051901515815260200161021b565b34801561026057600080fd5b50610269600f81565b60405190815260200161021b565b34801561028357600080fd5b50600254610269565b6102946106c7565b005b3480156102a257600080fd5b506102446102b136600461147a565b6108ab565b3480156102c257600080fd5b506040516004815260200161021b565b3480156102de57600080fd5b506102946108cf565b3480156102f357600080fd5b50610269652d79883d200081565b34801561030d57600080fd5b506103f061031c3660046114b7565b6040805160c081018252600060a082018181528252825160208082018552828252808401919091528351808201855282815283850152835190810190935280835260608201929092526080810191909152506001600160a01b0316600090815260076020908152604091829020825160c081018452815461ffff90811660a08301908152825284518085018652600184015482168152828501528451808501865260028401548216815282860152845193840190945260038201549093168252606083019190915260040154608082015290565b60405161021b9190600060a08201905061ffff83515116825261ffff60208401515116602083015261ffff60408401515116604083015261ffff6060840151511660608301526080830151608083015292915050565b34801561045257600080fd5b506104666104613660046114b7565b610913565b604080518251815260208084015190820152918101519082015260600161021b565b34801561049457600080fd5b506102696104a33660046114b7565b6001600160a01b031660009081526020819052604090205490565b3480156104ca57600080fd5b50610294610979565b3480156104df57600080fd5b506102946104ee3660046114d9565b61098d565b3480156104ff57600080fd5b506005546040516001600160a01b03909116815260200161021b565b34801561052757600080fd5b5061020e610c83565b34801561053c57600080fd5b50610294610c92565b34801561055157600080fd5b50610244610560366004611450565b610d5d565b34801561057157600080fd5b506102446105803660046114b7565b6001600160a01b0316600090815260066020526040902060010154151590565b3480156105ac57600080fd5b50610269610d6b565b3480156105c157600080fd5b506102696105d036600461151f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060757600080fd5b506102946106163660046114b7565b610d85565b60606003805461062a90611552565b80601f016020809104026020016040519081016040528092919081815260200182805461065690611552565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000336106bb818585610dc0565b60019150505b92915050565b33600090815260066020526040902060010154156107275760405162461bcd60e51b815260206004820181905260248201527f57686f6f70732c20706c6179657220616c726561647920657869737473203a2960448201526064016101a8565b652d79883d2000341461077c5760405162461bcd60e51b815260206004820152601760248201527f496e636f72726563742062757920696e20616d6f756e7400000000000000000060448201526064016101a8565b61079c3361078c6004600a611689565b610797906032611698565b610dd2565b60405180606001604052806004600a6107b59190611689565b6107c0906032611698565b815242602080830182905260409283019190915233600081815260068352838120855181558584015160018083019190915595850151600291820155845160c08101865260a0810183815281528551808601875283815281860190815286518087018852848152828801908152875180880189528581526060840190815260808401868152968652600790975296909320905151815461ffff1990811661ffff92831617835593515197820180548516988216989098179097559451519085018054831691871691909117905591515160038401805490931694169390931790559051600490910155565b6000336108b9858285610e0c565b6108c4858585610e8a565b506001949350505050565b6108d7610ee9565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610910573d6000803e3d6000fd5b50565b61093760405180606001604052806000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b610981610ee9565b61098b6000610f16565b565b3360009081526006602052604081206001015490036109e85760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b60038260ff161115610a2b5760405162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb881d5b9a5d60a21b60448201526064016101a8565b3360009081526007602052604081209060ff84168103610a515750805461ffff16610a9b565b8360ff16600103610a6b5750600181015461ffff16610a9b565b8360ff16600203610a855750600281015461ffff16610a9b565b8360ff16600303610a9b5750600381015461ffff165b6000610aa96004600a611689565b610ab4868487610f68565b610abe9190611698565b336000908152602081905260409020549091508110610b1f5760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682047454c4420746f206164642074686973206d75636860448201526064016101a8565b610b2833611033565b610b3233826110cc565b8460ff16600003610b7457825484908490600090610b5590849061ffff166116af565b92506101000a81548161ffff021916908361ffff160217905550610c01565b8460ff16600103610b9a57600183018054859190600090610b5590849061ffff166116af565b8460ff16600203610bc057600283018054859190600090610b5590849061ffff166116af565b8460ff16600303610c0157600383018054859190600090610be690849061ffff166116af565b92506101000a81548161ffff021916908361ffff1602179055505b6040805160c081018252845461ffff90811660a08301908152825282516020818101855260018801548316825280840191909152835180820185526002880154831681528385015283519081019093526003860154168252606081019190915260048401546080820152610c7490611102565b83600401819055505050505050565b60606004805461062a90611552565b336000908152600660205260408120600101549003610ced5760405162461bcd60e51b81526020600482015260176024820152762737ba1030b71034b734ba34b0ba32b210383630bcb2b960491b60448201526064016101a8565b33600090815260066020526040902060020154610d0c90600f906116c9565b421015610d545760405162461bcd60e51b81526020600482015260166024820152752a3934b2b21036b4b73a34b733903a37b79039b7b7b760511b60448201526064016101a8565b61098b33611033565b6000336106bb818585610e8a565b610d776004600a611689565b610d82906032611698565b81565b610d8d610ee9565b6001600160a01b038116610db757604051631e4fbdf760e01b8152600060048201526024016101a8565b61091081610f16565b610dcd83838360016111e7565b505050565b6001600160a01b038216610dfc5760405163ec442f0560e01b8152600060048201526024016101a8565b610e08600083836112bc565b5050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e845781811015610e7557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016101a8565b610e84848484840360006111e7565b50505050565b6001600160a01b038316610eb457604051634b637e8f60e11b8152600060048201526024016101a8565b6001600160a01b038216610ede5760405163ec442f0560e01b8152600060048201526024016101a8565b610dcd8383836112bc565b6005546001600160a01b0316331461098b5760405163118cdaa760e01b81523360048201526024016101a8565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060038460ff161115610fb75760405162461bcd60e51b8152602060048201526016602482015275139bc81b585d18da1a5b99c81d5b9a5d08199bdd5b9960521b60448201526064016101a8565b6000610fc48560016116dc565b610fd29060ff166026611698565b905080607360015b610fe486886116af565b61ffff16811015611027576064610ffb8386611698565b611005919061170b565b93508661ffff16811061101f5761101c84846116c9565b92505b600101610fda565b50909695505050505050565b6001600160a01b038116600090815260066020526040812060020154611059904261171f565b905060006110696004600a611689565b6001600160a01b038416600090815260076020526040902060040154611090908490611698565b61109a9190611698565b90506110a68382610dd2565b6001600160a01b0390921660009081526006602052604090204260028201559190915550565b6001600160a01b0382166110f657604051634b637e8f60e11b8152600060048201526024016101a8565b610e08826000836112bc565b80515160208201515160009161ffff16908290600a9061112390603d611732565b61112d9190611756565b61ffff1690506000600a856040015160000151600661114c9190611732565b611157906040611732565b6111619190611756565b61ffff1690506000600a80600a886060015160000151603d6111839190611732565b61118d9190611756565b611198906040611732565b6111a29190611756565b6111ad906043611732565b6111b79190611756565b61ffff16905080826111c985876116c9565b6111d391906116c9565b6111dd91906116c9565b9695505050505050565b6001600160a01b0384166112115760405163e602df0560e01b8152600060048201526024016101a8565b6001600160a01b03831661123b57604051634a1406b160e11b8152600060048201526024016101a8565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e8457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112ae91815260200190565b60405180910390a350505050565b6001600160a01b0383166112e75780600260008282546112dc91906116c9565b909155506113599050565b6001600160a01b0383166000908152602081905260409020548181101561133a5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661137557600280548290039055611394565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113d991815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561141457602081860181015160408684010152016113f7565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461144b57600080fd5b919050565b6000806040838503121561146357600080fd5b61146c83611434565b946020939093013593505050565b60008060006060848603121561148f57600080fd5b61149884611434565b92506114a660208501611434565b929592945050506040919091013590565b6000602082840312156114c957600080fd5b6114d282611434565b9392505050565b600080604083850312156114ec57600080fd5b823560ff811681146114fd57600080fd5b9150602083013561ffff8116811461151457600080fd5b809150509250929050565b6000806040838503121561153257600080fd5b61153b83611434565b915061154960208401611434565b90509250929050565b600181811c9082168061156657607f821691505b60208210810361158657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156115dd578085048111156115c1576115c161158c565b60018416156115cf57908102905b60019390931c9280026115a6565b935093915050565b6000826115f4575060016106c1565b81611601575060006106c1565b816001811461161757600281146116215761163d565b60019150506106c1565b60ff8411156116325761163261158c565b50506001821b6106c1565b5060208310610133831016604e8410600b8410161715611660575081810a6106c1565b61166d60001984846115a2565b80600019048211156116815761168161158c565b029392505050565b60006114d260ff8416836115e5565b80820281158282048414176106c1576106c161158c565b61ffff81811683821601908111156106c1576106c161158c565b808201808211156106c1576106c161158c565b60ff81811683821601908111156106c1576106c161158c565b634e487b7160e01b600052601260045260246000fd5b60008261171a5761171a6116f5565b500490565b818103818111156106c1576106c161158c565b61ffff818116838216029081169081811461174f5761174f61158c565b5092915050565b600061ffff83168061176a5761176a6116f5565b8061ffff8416049150509291505056fea2646970667358221220313cc1e5e86bbb7d3c3ded2bd7a034c1d5ffeb6733733567e3c8f6b4f041b55864736f6c634300081c0033", - "nonce": "0x7", - "chainId": "0x14a34" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1f8453", - "logs": [ - { - "address": "0x3572a80eb8df722c98814290f86be29141859660", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000003295cca2d922c637d35b258fc6c9c7e471803b45" - ], - "data": "0x", - "blockHash": "0x9708bb1125f0e43dc1ffc445a674ebbf03f5e0c95bf8f803027fe0b8a64492dd", - "blockNumber": "0x1037033", - "transactionHash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionIndex": "0x7", - "logIndex": "0x7", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000200000000000000800000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd4fa77c04f44634b166b7ae80cabe097cf35d8d38ea569e499b73310623501d9", - "transactionIndex": "0x7", - "blockHash": "0x9708bb1125f0e43dc1ffc445a674ebbf03f5e0c95bf8f803027fe0b8a64492dd", - "blockNumber": "0x1037033", - "gasUsed": "0x15fe4c", - "effectiveGasPrice": "0x13b3f9", - "from": "0x3295cca2d922c637d35b258fc6c9c7e471803b45", - "to": null, - "contractAddress": "0x3572a80eb8df722c98814290f86be29141859660", - "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x1", - "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x664fcff1ad", - "l1GasPrice": "0x17fe2ef41", - "l1GasUsed": "0xf211" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1729773387, - "chain": 84532, - "commit": "cb12c77" -} \ No newline at end of file diff --git a/deploy_contract.sh b/deploy_contract.sh index 8dc4b9a..667fc86 100755 --- a/deploy_contract.sh +++ b/deploy_contract.sh @@ -1,4 +1,23 @@ -#!/bin/sh -cast rpc anvil_setBalance 0x3295CCA2d922c637d35b258fc6c9C7e471803b45 0xDE0B6B3A7640000 --rpc-url http://127.0.0.1:8545 -forge script script/RaidGeld.s.sol:RaidGeldScript --rpc-url 127.0.0.1:8545 --broadcast --private-key $DEV_PRIVATE_KEY -cast rpc anvil_mine +#!/bin/bash + +# YOUR WALLET, change to you account below: +DEV_WALLET="0x3295CCA2d922c637d35b258fc6c9C7e471803b45" + +DAO_OWNER="0x4d5A5B4a679b10038e1677C84Cb675d10d29fFFD" +DAO_CONTRACT="0x11dC980faf34A1D082Ae8A6a883db3A950a3c6E8" + +# Set balance for the dev wallet (1eth) +cast rpc anvil_setBalance $DEV_WALLET 0xDE0B6B3A7640000 --rpc-url http://127.0.0.1:8545 +cast rpc anvil_setBalance $DAO_OWNER 0xDE0B6B3A7640000 --rpc-url http://127.0.0.1:8545 + +# Deploy RaidGeld +forge script script/RaidGeld.s.sol:RaidGeldScript --rpc-url http://127.0.0.1:8545 --broadcast --private-key $DEV_PRIVATE_KEY + +# Impersonate the DAO owner account +cast rpc anvil_impersonateAccount $DAO_OWNER + +# Send the mint transaction as the impersonated owner +cast send $DAO_CONTRACT "mint(address,uint256)" $DEV_WALLET 0x00000000000000000000000000000000000000000000003635c9adc5dea00000 --from $DAO_OWNER --rpc-url http://127.0.0.1:8545 --unlocked --gas-limit 300000 + +# Stop impersonating the DAO owner +cast rpc anvil_stopImpersonatingAccount $DAO_OWNER