From d10e85ffb4719fe45656e08e2132a34b3f7beff3 Mon Sep 17 00:00:00 2001 From: fuck Date: Sat, 11 Mar 2023 11:11:28 +0800 Subject: [PATCH 1/7] colab version update --- README.md | 38 ++-------- assets/dog-meme.jpg | Bin 0 -> 83067 bytes assets/football.jpg | Bin 0 -> 98901 bytes download.sh | 16 ++--- requirement.txt | 2 +- visual_chatgpt.py | 166 ++++++++++++++++++++++---------------------- 6 files changed, 99 insertions(+), 123 deletions(-) create mode 100644 assets/dog-meme.jpg create mode 100644 assets/football.jpg diff --git a/README.md b/README.md index f6b21b9b..6570f1df 100644 --- a/README.md +++ b/README.md @@ -4,39 +4,15 @@ See our paper: [Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models](https://arxiv.org/abs/2303.04671) +## Intro +I implement a google-colab version under standard GPU environment. +I just use two models `T2I` and `ImageCaption` to process images because of my insufficient GPU memory. ## Demo - + `T2I` + +`ImageCaption` + -## System Architecture - - -

Logo

- - -## Quick Start - -``` -# create a new environment -conda create -n visgpt python=3.8 - -# activate the new environment -conda activate visgpt - -# prepare the basic environments -pip install -r requirement.txt - -# download the visual foundation models -bash download.sh - -# prepare your private openAI private key -export OPENAI_API_KEY={Your_Private_Openai_Key} - -# create a folder to save images -mkdir ./image - -# Start Visual ChatGPT ! -python visual_chatgpt.py -``` ## GPU memory usage Here we list the GPU memory usage of each visual foundation model, one can modify ``self.tools`` with fewer visual foundation models to save your GPU memory: diff --git a/assets/dog-meme.jpg b/assets/dog-meme.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88c168c7ec3b711013ddc7dc162ef69ce328d710 GIT binary patch literal 83067 zcmeFa1z1(hw=lj>(A_QFrF3_rA}t^#-Q95%MH&PI6ciMYkP?v;L0Spv5S8vwK*0kX z&iQZj4c~k3ckl0u=l?w4{n)VgSu=ZTt%)^jt(n=FDa;%|s-vN;0YD%CpauQ`n0Y`+ zJ=nz&04`ku_y7RF1t2jl033wCAOJmh0|4|f^iLo7=405OFtq3NC1!zPOIuad`ig;` zhW17EpGh-(vi0_Mhmrz-ho`@%F{Gpw0`Fo$j zH$a%u7c3wM-#dk!e!(TD@bzDC^Up9w2C86~A&^Lfwzj@b06_c+^k)gQa{|*LMuG3h zJ?&jQ0e}j`99zN8+14Ha7_NX}1Ux*vPT_D6<^jWdgK!}TOI`mhO{d>rTife@rEhEN z^cVaKFEA!p2sIZ!Z+F{}pN{{N4-fYMkaj;WF7Qd{?5kw}{!)T8oO1KhJ%tHDc+2zp zWjzok2VtZOh}|z3itiktWemb#cqpTtpDIXKfEt9)+uN$?f-oZpYk0a}KCSyx|Lcw} z8rmQX(hM5x;;(H4!n7b9>)@wu_(zz>zFr1@hUVSED&PRq{$ z`WrZSYN~)Rhzl&x(O2UX_tWt49)2M76L;8SXBX|$xF8*1FZ`X2z+QDqA6TcI?a%Uq zxWI-SJeB{T2`tdT@9JsU!0^yIdj~aj5C(CFtvPrapW=I(4$|9S8iM77hq~J8oVGu(Jn*}~ML-o$ z16Y6n@V*Xs0j_|{`>pyd(Dmz$24D;L0#1MfAoz#RpD|2-zVQT~hCnE=4S0fK{Qiok z^7E|&5D5C8{N?*At{~v}^KIbI7;eA{n1ctP3%G;s01$Qn?%;j;{y+Br)A#R?${@ZM|A-s#XO1i+f5yjF$5zAE!q&j%h10_o;Ii3jTUe&Fiml|3S1sc z9ZVTc4W|bL;bLGu%5X(6XK~P1^$!eBsq$xy{EpLK7yy6Q#vkGE&f`JxXz-Nqc>Zln zVm@N=Kk@xZ>)$E)tE|`mqW7OA`1kq${l*2b2g|AZS8e=J0$41p2G#>>gS~?_!|DMR zSSzdn)(?Aq3jdM6#?RVy`YShspXG4_>&4}-Fn{8ETH~jAp0*Fa^JVAP&!c{&;_ndb z54LAO)yq4?*Tu=%pG6tu4h}5Zo_0b4EF$McL;>KG*PMm{fNusrc?g7h@NYl6XaJDh z0RX(Czx_PE0l;&x@3UO`+mF)4I0vu;JRm+I zfCL~5C;{q#4xk4Z0cL;|*j}B%cJ2!V0pY++;0}-g+yyd#Y#~$E&!ez8*cR*%jt!@Pv%m$x7OVv~hTFk?;F0h|cs9HQUI*`lkHY8S zJ8(1>5f&pBKb8!ZHr7=vC#)c>J6M@mMOd|1U0`2Y#yY^p#-_&R#+C&8q8YX;b{KXd z_9N^n>^IoM*o)ZvI5;?TIQ%&BIC?m?IQ}?ya30{4#EK-8B$K3u zWRPTw6pxgPRF%}0G?Fxjw2^d@bf1iZ>;jn{nFm=S*)y_tWNYL&ReBpq`*UqG6&@rg5N&qp74Bq4`0}K&wRSKpRh6MLSM=M8`s>PUl9KN>@+! znI2BhN3TyGM4wCFMZd*B$so&M#}Lo(f?=8w%E-rPz!=6@z}U~Y&vcGSlgXRu0aFLl z);a2PO6Oe9-85)+em*S&!Mc z*^Jqu*s9n*v*WW%u{*NgV{d2Q;b7*t#1YO>#xc!_$0^0>%$dd6!})`Yo6D3dhO3@y zjhmKRn>&=djQbN05sxB|4^KYN7%w)j6t5faBiMC?RzM8-skL^VVaq79RTbBe5rwuJ^RnmVdObi-TQ6Pj^A+wZK387pW9whh&(U8o zxL^=&&|^qpXl?k+@W4pLD8=ZbF^_S8ak~kL$u*NwlOLvPrfH^gSB0-eTXgaW18cdle|;9)4H>wbEfl_i>gbu%dV@I zYo6;5H$AsvH;lWfdzA;ShmA+0C%LDaXQ$UWuVAlXZ+`DP-g7=OJ{dkczPi3eeh@!P zzXpFwa8lnNz!MN1FdwK8m=lN$G6|{)CJXiq?hoM$i3?c`)d+nW1`o3fYY%4)zZpIs zp&aof5)yemvK_&WxQ$r8p?Ra^CjL#gn*&kjqtc?j-!i?`berk+joXXSn$cx5{WJ;OTVU8Y!OUKV~<}u|ZmYR@bvyOW^>Yno4a1E(jqOdcO|`FtUKKa9Hs`#idY#gO z-*USJ(;C{k|Hk{xR-04XV!L(w$BwHVW1ae)@4Ixn-gawrcl0Rtw7!*p+x$-EU1P6Q zZ+)LcUtPa=f9-(yK<#^p_jQAkgAGH{LrueS!!0943C#EK^ zP0mf(Ppy4$|FAn9IDP!_#wV;#@t;XQXU;IrAiWpb!VGw`{5U!FE76;eeK`5y0g6NyNlUN z{6_b!_`BHm_WdjSGY1|A$3NncbjXrJsl%Ql)1%enAQTSj{t53%6IvJj3FCpmc-#8g z{+tWIz$erZl$-a80f5L104Rn)@xkJkEci17IE{yZVL;dfA_Uol-Ud19Ap8!N1~v@4 z59dCvC*DPTUIH9~Ey59^dg5Y|BGM|d2J&`_KFT4gDe768HQG(OUHT)26DH_69AFeyRS60daxxLCL}QLrOwh!aha-kpc+o8xL-Nyv26gE4nQPJC;38 zBwi)KFwrq7G&wb;9qZOWEp~)I$4hQZ#~G(Zp;~Zxb$d059cx66TW=80=>fP zPyLIci!)0~N*kZ`mQ9y$R2){}KBuYXd7)Ti_R^;|uI^ENRYPmzyQaZcL(P4!+gqwz zbKW4@tlMQe$U9a#8@rx$KkP|(8~pBiuXdkMKXL!oK-c?+gWf|b!xY1dBQHj8j_Hqc zPQWMDC;O+WKBP_ie>C|d^_l)NYG!7(ZSLuO+=ADl@siv!2iVFER>#&}u4io^Hr==E zw(Y)ne@)n_-TnGa>HCudiXZn6`H$YC5NH_;=C}G6fvv&QuynDhus`F};3ncZ;j0nw z5t0z1h*pWGNTx_<$(G2sDZWu2P@Pa8)11(v=}zbm7``!nWm-A+iFt&ji?xxhh&_SB zo%13WA2%NN2G2X*QoeY87Xe*CK_MccufoIUUtY)(2^X~!(-&8f5Rqh+BA3EQf06kl z`%bP-K3^eGF-XZqSw}@gm0k_1wyyqO7`x?(|0s5 zG*mXaV9aVlVTxmVbam70lX<_z>uXh(kFCY5D+q!c%r^z2C#?_YV~mK~jw_pss7Q0`hD`Uzz| zZ-IQ_m8W(^0mU&T_rYw)8JxtUJO8MEb*M5-81@C;h82Tth{J=ki`$5I2j75zkzj_ffXIVb zngmMHMtYk}hn$3bh~h4#9u*1I0ChZ#1}%iPfzFejoqmcTfl+~RnQ#JpsRl)TiobdHR+%)V@aoW2}dzD&VP5l69B$xfME`HhOV zDvRonT9mq&`l?2@rXD!&c%|*5!>_ZXn|smx67{9g%V~NBS17Jb=sz&9GUPDaFse2V zHBmPuF`d3zWaekCVnJvzaV^i%*-FIf*t*Lm)%MzT-s=Z;o%ZPtwvM7saHk39XD$d= zBR2teEcaQDCeQm`LEff5GQQ{h;C@^F;{k1fRYAGIDIqsQgTmax?ISEBuOf_Y7~Is4 z(!XVJ+bG)Xj%AEPtXrI4JR%`BF)b-KxiqEjZb#~H+D!VF40tAQ*0uY0A9Q6OKNNa& zJvSq-_c1D8q`;vt`{`gYyhN@v=vh_SW(8lRYt^&oUtdVn+<4hvM_2FO(AmWN3emjK zakk6pZ zCjd2p-h@^`XJ8~S6<83g0=5E5Y1iO6@Q4To>Fn zJbJtUyb*j+{49JFfgQmBp)_F$5iL<7F_bur_yM6B4^$JZaEkErLoj*MteG7vT|TxI3uh~+-X zmn!%xDk|YB4J+5Eyi~1MYf^8~=+JzpHK;wIGo!nDare@(9_|%teJ%qj!;40C#^EOS zOw^hC#X4hc~YM$*trs!e85Vwe~u{i|l6~93k}&pC0X^WKIz1H$TUZU-eH8 z);}*G32K;3LCswxa1SU0I)NDg3F-;XLoS0FfxD0z$Ok9@o07l?LFi&Vq*h{2J z)Iuyr{2G*E-;(N+&VX_%hWs9d5XAtcCn$L~P}|ZF&@|9G(oxg((1$PxFw8S%G3lMd zJ=e~BgGGfEn{|LKliij>hy%sh&y~yV!=uj2z`MuS%U>XX5VR1I73MupdjanPO605P zqS&N(uf!|Ka;a?T7#Uw#3prJJJ_S;ReZ^^|7Ue3HYSkLGdi7Ttt(u)$z1l-Mle)7P zS1;{eKE8shPi??$C~b7f*xn?ba-6`br0G3|<>n808!%n|M2A{9*ZH=x55A7js7QsKt_H zvsIF{cN?)=x?f1YPVPSb=DIKO1Bx6x%0W4yMgORO7=R7xa8E}79#Ge$0bB)jOVOY% z=@l>y_J1~r4yX+(giJsQplV>xZ-?Q+^kI3hJ-80M7z+=}7i$*V2<+{bamI1&a1Ze^ z@ul&X2_6tC5q=^HBW59fM-oKJN4iLsM}D1xm*NLy4^=L87>xz35*EF>{x-QS+86_BRnCe`8W{zj!a;?XT z%R1U-`MRoIkps-p-l@Zd%k_@in#V=YDsL*EVBa}^wSdYX+Th5L&9JLrKb1ff-=vF5 zz73BKzq1!>9#A zFK?eqf6>7FApMa3aP-K_(S>pRiSv^NQ@$UPr%OL}d>a3}GP662nujdlEMhNVF9XX* zE8D9xYXj>I8~K~DTb|pOzVLs=`8vDPup75${*CwB-uLGHr~|bh*gravh(p=K-J_?+ z<|uqr-H9EV2>k+Mc3S^_j-n!`+yj6Rs(|Xp84TtdXqUlB1AvoM4CXi=gE=Vxg^f=D z@W%a@o#`|%HfU3L%y0?~Ki@z7`N#Fk1_gTkDaZWVUr=%ZInn8L%87pdf?Nr}yaC8? zp*`?T7=#Ugl0jf(5KJe)42Hr2m6qW3Gw5k7C=8B;jf0DaPXGp}B?X`m7z_%BVPU~R zEh;1ed=J3Mu*g|2C}UIT+v2eKP>S44eS*ubQr$*nFucPddfhh)51*QbmX4m2i<^g+ zPfT1wQc7AzRZU$(Q%hUN(8$=t6jayR**iEoIlH*}`3D3B1&4&*x*dHdCN?fUE&X0b zX4d@&+4%*9Pr>RgefFZ}Wo=!3Lt|5WM`u@e&)avsBco&E6O&UPrso$HmzGyn*VZ?7 z_r87KKlp(>JUYb-0`lNLuV0w`8@$Lsyr6J6432Y(7X%t~iZ~e@i}eCFxw1Zvtq%p8 z$W2^ImDDHIZFuaW20K*OeTVU>ImG5UcTZ9KiP^t~Sk(U#W`7~}H(nn>)jIU&1%pCi zSTGn23mXf(uyH|6EH*YSKJL#8|Bs9C=S6&ak^FUGz(gQm8gMuq2mB``z#}02pT01k z!HJC?W*Q&_C1ofXj0{i&PEh%e)8^T|1fX9u0;{ft9WW=U9+YB$)%Vu#712VEZoE=A zI5xrn-&TcJnK1y3=5#Rz$dg7$VE|;40M;~L*6$t)IAHKtlc-%ly*c+y&c)7+~;W z>q7*}k{Y^Am76spD^pQe*zMhMVaJ=~#|e@4Z`mY3eB+CMbN`!c?-?up53{|NUwZO) zG5(qDGL_zM#b9>LLx(S;7BRrW+H)G7XNce2zY|jZMx(mn?;ih#vb}tH|6|JP8=?P4 zls!Z7tQP<3FJ}$)tS|l=x6g(ftg{jI|4OEzQ}5Pj;5<#<0}DK_SES6A0P&3HDa64H zootT|KA=ozZr;<*LlRIiKQ8w$?aDN_+?EH*#Nyy&cR24`KHuLaIy-D(LUW=WsP25N4 zDDDw<#zLQSNu@E z5S+R+{ho4wt@{Bk9?TE8d>)76241CZ$F$|rk2?D7^<9@t>gxCG%z+DjLS5v#_+9jB z{Ux+Fw3nbXv`oVB&5AAytwgRZbS(=+2GbUf@?$zrgGd72Yc@Q2>dlhX)g%)f8*I)l z-kqP%m0=sDO%8wL;5_X@70BYn`KB*mnpjdO)b%i^1C4`>6EG)|O`6{k8 z-)CTcas7Tb}Q{tZ;eky5L_waGO5k6Z!hL z>E`s8h9}vY+8l<>O=7nMOr-=13Y$bi^6WO7R>d#?mGe=ec~^VilIoLBx*h=>Q)(K~ z)S4chi#8@W+)SHGDHJFfx`nj&x(SxbU$U=GzRxu#E9z(3 z<(KAm;SsfZ=Qk%GX10^p*^2*;dFtsd)$*rILs@=xzH1hpC70W;3N7=^-SBw`J?|pp z5F)X5YA%C{q7rgyTA0ysW>`KuBJK0u8dk#k7TH zxLK5`J9+Y`Fq4hldBj{`Sji(1x?r44+u!0MKvkFmyPmj`T}(64)<0PKwb^j~vxvNb zhYFfM`1{ofiwVD%O36>}RVzGZyx!=uYu9G|!OwN?QV1pK033^B)XN|!ZN09Y{YKl$ zTMkA4{JU-)LTE~4_VWIR*5}t{CdwT0KWj#Ado917csSJO=OT;!4U(&M$ILjjDRc4B ziM0~4U{U%j;m(HnrCY9{oCD>i2J3@9&K_S1)Ap_sTDd!l=?V9de|6-GG<-;AnBu+S zRCo>Lgp6=2?s=vi5PUEw`5{5Q$hz0AVWv9P!RTf-uh}D&!kcCZgs@brgrW`VquSdt zN%_5ZKM5^UbZ|D`K-5z9rtuy)U^l0CDiSTd*zs@DjFCIJj6S|LvM<|M>7XYQ7Z{JbP+};y1rg6eq8jX;H1=P0|Wfn z#sKXp+q#OT7@*Y)O%>Lsr>vQo8+C&R1Gt(UwVoU!b_#w=$ZBtNNFPk#F}~t-W@Hrx zh@3_7pvP+V5yuA@VBWO(<#);umo*+}%E8mTG7K4)% zv-{uE;J5ZNu6Ypy+>NL|@v~kwEq$(t89Dhf+PXM}0VcH(-|dVy3W^au)fk{M4Fjxo zmyJzfQR-_!<9QwvS{j-sTngSUh^zE`ij~RH9hgjTL5^>=adV3Pt;}ldx4reuhV7gl zoZYTQbiieScU5i%t%8iZD#gRpGm0$t-K0Op+ItEBxLx0*8K7k1;?uh82HA_pL4#t9th>_zb z7~pM6S_J90LrAjAFpW#~5HKRPmpwY`F5Qb|MDXBZk12s%Oza!k&@j ztd*Q~oU=jUAEWKrpl~)QoDB+RgTmRMa5kSjn=Ah%gq*R(Gq(8On=QI2l8IVsIy^Ja zk>--M3qXi)dwq#%zZ(JL8T1UU%x<3TY_ulXpb#d3lZc$#*d^M~9J*{5cH-pa`iUpfk5G=Cb}Xv)OU1e;`iVNF>5C8tCQ-EV!R-D3BE#yLj1%hCcI##~ z2H<;r=_Y3MUsOL3yCkP8$80b)3=95kRk@i;JoZ@ zG?!8$M~|95d5C5UH{4q*Qti@VSr|13_ysGzQ3aQrg&4hmldSw&^g}UbzIMqA7B8MW3Qu?*4`>Z z8w6(Tf2YN{Su&v~=}-!NI7pME@JMD*e;SWCGE~T}|8QE6@ArZo9~>(NOX}<+GP@cd@k-$@jT^y_&oVH&hCFtgYzhG z3}Bn6zyMaD`f#nTN~=n8R}qz9UVjn_zR90{&DJE6_anY_K4n#uu?IuCmME@>_M|M|mn5TkznBK%N-*LeCUO5xL$8SG$?_q(o#?c4! z$-|;hqZ%^}K9Ts0SF_)p7ZmGiNsb`a=qrfb>EGe)wQ>ybd=iDuLW3ICx7i3c3@};( zcB)xaYA3?OmH9ig74;YcEWZ5RQTuUN^ML+T=ZXQ|Ar48=lNg{_AB0;E*<;buV~T57 zh(l!z(Bu5O!>v9)WlJ0bC_cpipelKf^#rsQTrR)>>4-f|vXj~p#1KB{eG3C55C6k8 z>7~v*<%ULpCFDHS)gD`;A8BF$E)Y&;KX$u<0UlFffMpyEz*O*0CrB2>zp;xsXg!fh zL0x3l-2R6n@VoxW zoz~Uwt$WsJHN{#Cus(*^^FnL=C)HJOOa$tz5lgM8*t5C?t@SI(_W|b?w`u=Shrjd7k@M>NcL6tiJe4=rKjFZLs>i%=S<0`&+vgv{5ADBXd~~&2u9P#PYU1<9EpVM;s3zWjs%Dz_uk;0WDafNHP}u;A!0Hw5Cg8@Zl(MR$ zHO24dqp^kB>XgQ$KUYJVu5`}UC1-dX3vMcKHSSI%&~(Xa1+Y@3>v{^wA%z{1v5r~g z((#{k&xHP{s+QwixcLlaxtnzd1JqS{7LNFDQwNPMN5N}qk8K**w7B$U-i{n<_LH>F z2d>Jw@LlrMNpq?mwuT4S93<^l*3P$1lW0{B)ym`R!OUC45^#xc_TAwQ=G**`1~`T_rE0&?CY^(v>Wnee;%M z&r{jm&wDgH83}CgV_&D|Uuh*qkF`K{srFxzt(%WW->Gm52`Si+%)HJZZ^b~{KawNy zjUauQHx*ubZiyj_t;|KS*6C(I3cPLc*n`0O62DP)@1*880b|Dr&nnf7sBU4gnwOCl zA&K+sZ$4GN`(|+9yT$nSC@}s|)C##Dv|z!Ee=V3*SWYp#MPjsBv2uMnLBqw`vb;TbNxS}V%cp-}LrY}Du zdNdMViwvs>SDkn{V6C0d5n4_!QCxh@oZnTVK8ReI(e}w5ZCEJ{S;Ga{FNS+xyfX7@ zZ2MF4*Q%J2F1vZ^$gB!CG<|~lc(Zgl(%bx?)Kle!;Mmjg7gWP}z1kA|P~eFMDU% z=JI)^wsA#Q;h3h&uS%}!*_LVNyU^#a)uUOGha^&5N@~ij)M{wRiC#2yf2pP&e^1x; z#4sYJKc$eTifSTKE|_0+IFik6GS!N~>yAN)`D3lSuj)S(G@ZN=f+eMu9L9f39Zg?R zqzl*HRc$}Vzf<>m-kSELFgVL>)ZPCpzR)92lP|-)Ov=lRHa{TwG5z=Z%Tv3b7^lX) zqh!Eg-;C$Ue{8Exc?I&{{Wh*bEWSq^t<3h8kGstxzvZDD>-UOoe9n*OXIILP=K;VQ z`nyrW_&4)d(HqR<{~5*+?gSbn<`+_s_DR-r$~hMmxLWJR@{>3H^X!R2!UX#r3irZ? zpjxo&qPOmfNLShKAUYm-bzlHml+P~yL0Hge^QEFSlfdEb_fFbkZT?&$yh=|j1}&q_ z;@aL?iEdLGHzj?_pjfn~2`2;hc=+vBb<8l!sI@R7s~u$9{QUgnOihBm7IEH4TF?z4 zn|D+??zm(8cB+T!lba%zxJOubF3EV+7mx1Lf?z|Fo&BSNhDS?dCgU*GJr5qZa9V$% zgLm=62u^iH*N%Hgg887WnguT`bBo}ht2?XFUoOWKTV0(BzQgcpzC_2NHtec>m}G1R z!TnEh@x6=iZK}!OjsxdioHzw&xX=#yV6onU^_}W<1Kcm>h^@X4?&SkdJ4rZPYXl7V zFPK5S;KF_Hs1711Kf74XzpYcy-sx#;rEtzZmvTUYg)~)d#Q?YS`;1zn2)0!=#9q`T z^ojOJCsU{G%V<>QUY;TL$^MQ35}Ap`5wStDBu*nsbz0553kjC4+n%~4BGUvGC3I}~ z$@D6trI5Nx$YITmh}`%*=dV6{c|zgpC%LQ0=tT@b;aYR;!l=)B&~2PKtG zjV`y_&p)A~(%R(GC8X*R&zJ*Cl1C$+!Wc}@iJ;*eX01WG*@d{-H(gABf0Qw>{bE|a zb5rbs04^(0?7es2s{3pNBYZ#-Zrl16eA7hJ_ADen*jcn1kyBhC5)r00ca3Adf!j z6LniFd(#VR794fE*Bm6uotHfLw%TIPAqvpFXqgu~!pU;dj0#LcE4zAeFPS_i1}}z1 zSJ&2$a@M2;zZk+6k^C@ANJB0?Gh?+t^L2ywS%o`eOtK3zNkE0-VryI^_keigNbMtn zi=(V@X6T_BGra(T#EmN~Dm5hrjA_bm8Oieq(C6H&@OCvjBfN~WXRgZGRuLHtgU5br zVP(|TeNbh)aXfDqEpT2_`t7-Q>bf~hDaiqYA2z!~^V$({k?^P=dZ5*r4%u`ma$s6p z?ZWiy{fZ&&*x2V;_Jrr3^);mA(6OiPa&J|YNp|K@ZwBTv?yM%t$uGL?k8#tFf8MSb zzx{&4=M&r0W`iC-3fvzoc65XvwWmd`L-mcyv@YYK)=%7h-^P<`Ug|=!oY&S%-#lNc^>|E zijY+u5iVbPm8qMujqBLxO#IQ``V(y-S>*0RFItEe)~(QGDxrc+8e)V3KFo}obHlbue#TH~x6A>6qcN=T=UMBi!4 zGK#VLr0M${rqQO-d7?(8Md_~FAB_vvj@ClI?=|=q8+b@m<+mIMXc`}UR6P93d~(2Z z?2(81k%B&^>P56)n6Em5Pa|f*?Ii6fNDVpASgDkwcf8AtG(mi%O*#DDy2A}xNoh_V zXrdz(QCOhe()52aA^nr;)6FWNDHDo7-9R{kR@1x`3;?l4rH-G}4Wh$(FhE4S!rxTz z&D%)~c0=Ek$osLNxKn^8OCdrGagCx;nrKRd`*p=t&<6VkTo1v*{NWyA6(rmn&^*Zz zfcTquDRtmNgu!5N<5%^yVify1&~W?sQt=5g1;qn054#TQ?|3i4y?W|Xxjbmpc|9{GK&v@n8?BZ;8@#n1bY(922gFTz`pGiso zv4DEUE6;f48LvF!mDkVY$}_q0KaeYlg*8)2`cpcdA3q8E_9=V$pQ^flY6a0#;BI$t z6Udw%crFmhRxk56PzgH+Zk0%rXN&)a_=jQ?)L;Hn2bj0*u8BHILBlb?A+)syOlA;N zY2K(pYkiOBA8<6@`Q&6g>PPgtbwG{)U7F7ve0#0D;I4*@&8}63C6W+P=bKpI!XL7B z5Hwn|KD5wnbCPC|(1Z}I|N0p`cgQNP^B=o#emll!Y>F8?_Ud0dx#)jo>tIy;vX~bW zlDRW9;~;7NE9v@l(UT%X&*$2TPoe`}w^C-h6V0U2J5;8ZkQqChX4PW>mzcZEjrVi! z2F?s(eJAg7jo=FKt(!-q z6y%8m)FX_k5=N+%x86XxN?-2f}L<* zW7L=RG#o>HGf>a_Ci_mU*ZeCIvh{kI+D`-lL=R2xzV5HvdNpAbclDKq(HBB&+*PU4 zrNGzmD;7*1RDGb$kq4QBCVjF%B!|4s{oo|$prPes4MTlIUeJT2=2g!N1H$og9&>|m z^PY&sO9;Io!6J`1p(g=U&tyaSb$am*D1Bw8+xnApQvHDZw%bWe?Ds($(6v#)Lm5V>SWhy<`VtW<+WdT+iY@C>o5~1pVrZVSBQ_fa9`)k(NEbfd4kLNs9w=riESW4v<+X6NnZ{>KYJ0bfs7!o#)&D~RmjY)=zpP1Rbcf-h$EA|PVH*KS4Wle zz1Yfg!|#OJ`d>ZDpz2>cC%)qqzb#aS60ExFMqMW~d`;IWfU48`?Ja>9V(x8MiM2S$ zbmyz+gJrw#Ub76AwR}ElTbthdU`r^!>FN^mn-wmbimi|*Z3kE!{x9{_wc5dBzo7pQ z-h_%2py8*s3^56A(K`|>8{r@Lcbf_;6N^t4s*rYv{XG}ZSc+zm`ru~FmK(b|zwd80 z@*h0J`G}YlM;nLc!2ac<*8VwQ87K6ReHdg-S|MOyNx zVzb7tOQ9R+6ye}qR?FXTt|QI0La|>Ml&YEt<^N!o@OngUwzP7!GnXG}TDFd$+IQ27 zmLVOo8B?HhZE~m`cv}CVeAJNU0s)5$nTdD?O!~^@?MC*SJ((!s(Tb{Ow_|y;V8nc8 z^?X7eyr;y%t=?2dAoK3Wi$`)h8E$n-oaFB%@gNS@d#}cLldOACrFFMhh@Y5Mjn&^V zZBnq>^|~R5GCnpyx|!|b#F&~4ZOO4e(-0E!kUQ3@;(T3;pY!>m8^4PEoA(Pj)!lBZ z)_1INg;AV4i*s0C9?Y$OZzXk!6mImmtX>`bm8CjcP=`CLXo}O6}a1$`$07~n#)j91RlI$CqNs$(#EdcQu&y_tWP;5cxwlin%u=_L8eWJgq(#q9T< zhUBG9t)x0SR$In0j+^(Gg}ngNVe6L;ld+2P;yZQOO++1QlGHLca!f~?6>?d|>>3>7 zOu9MKc=PMDCj~}&qZw=rUqaos@Ok^_m&LiF8RhdA9_;FMv|^*Q@(yUvLF?;Yjmp`~ zFpl{jyM@(C{J8M$c20q!sMkou+@qjl zin*^HVa(8tP{|ZIk_D}*{gdl%bZm9hL!eF3^S-NlzU-4o2K+eo%+HxHn@YVmrjew2 zOlI}Tm04OlE4LQ6y{^1yiNHSy5%#RC{NllyylAfGMnUjSNY``enMSAkXX}dbZ~Mht zgFC$=3%GYTe4Xp+Tc^*jrMa347xo0KGTc}gYiWn~^pid8X1JT*WS5fADv<}C`6o(e zYhKSAv&;Xc8d-CYjI@2`I>U^f8h-hRyOYbTsP@~o#}`fs6{fA;x5;l5`sW@>$S{U~ zo*TRsWJQm3+8J5Z-m#w!d{vCnNn4p;d>;H|Vf1oA2uThv-Usrzhhfj2}Q3y?+(iJE%zeQIoeAWzUy=$=W_067@TT@=={V&^7>svp9sF|lT zZ}ic9SdlxYdND}I(AIC%r)pG(UvC@FQZ|r%BYr|rRzU#8vYWI$+0#lKE<9vE>VZ<7 z|4Ni2R(ES_qQ1s_!0(`e)m=bCvreA^2oo1Ost8*6k@4aAE7GN!Q*x>ZqPA&qYTa1vIfZv8K>AU#hi=xf4? zD+_Qwd@Xb-cq`?QIG21o{2|!}KOs_8k6Y2L+0MP!8QC7ME%Z!- zhWF(g9K{@{wuQ2_ozp*9G_AP|o8|4qtb-p2IYeN9o8aP&U4KM7b1^6ZEMovPHn_f| zYwSdo4pseY#R8l4q<8Cp@aZxNjYm}Akqo$z;5r7yEU?H7il^TfL9reoP-tsV_5fFl zpe&iMbRz^1KUZMHoW(q&&{<13>nmqt!r7>K#vRW1=h-~rY$kO!V+2)HXEWn7+2Kq^ zI+G&*f033iTNAF=ZMB4F`KoDQC2bEm4En`+YtHL#&<-yDvH$`{D>R4Td2grozu|lk zxUH&z-k(L|Se_n4H%~g;`Z@^I6--*A0<*@d5q-=*w+pZzO)&f!Yqc4)LjL3MzDg5o ztToZjoqnOhWF_N_D$n>AxwtHSZ^g$=t;}v!TrS@**0xmVmpEAYlI54f9RF0tJ6htq z$41)BjMsBeTeW>o|3BT-@?V|?X-D$cHhm@Y59Oe$o!QiSe+aQwTTG^v7SHpH<>wb? zsuaN0?qxg2Xi|cdc*IA2L_5E0y0##Ca&KI4$=QL!V|MRtdGYcFf2)b! zj~h04^6&nwNi(#Z5OZOiHzJRWy1}IGGcBBgVqIW{Dev-YjhP^bKAF`$&Wh$xmw5KH zKZi;61|>yQ<3X`i@VE9%1z6UC{f|vht1>3zGoCbM!smWl0g+9^kZiX^X#c%CxVX1{ z)mq(W2DY2gn$j%pv5<2~1OsT-H@}N#(jlq2CWh$X&T5P`WvmS8xguj~r+WH1CKi1D z#G&Sp$H56*E!;aM4@Vy9w(B`(wT-&M!f+cB?3`8(N#xH5m&je(Wo|!5weussSvw*; ziyBQ(pSEZmKUH4y5qFM8o&LNp(-VgP!zfkQ&`KUZ!J~1i-S+N11~9g`x)B-&#x z+3~7C_@L#LQ%Hn6)KQVEE8i?gB3SwXXe?C7_%Qk$tihk3$oXX}g>Xs5U4PPCk{lT zDl+qgC0!a}#Qen{%eI`}hNs#@as}rsGAFJ~%Bhx?w_xwg#)vzA7Zll@uWp*)y0f8a za^dbEfj0IiDJv(TcfPUriNaTcg;S}iB`q; zzs5#VZAOY9Yaa)H>@u$?pJCYXdlyvb;yo?W@3nI4ty@A_R_d+T4#j(M^uSeWj*>yY z1>rlb#Ld=aQ^;Fgku)RwkMu6~eDJIim~Y4>B=6`;Q**pVk$S6bwE{oigoa;1eMsSa za1;sc=8sk~@jRqv^kl~+ifb0K4^Xj!RSw72A35T#-6*fBrcDmM5@u>$gq-aLEd36n~Aey$Exr$&|`IMs-l@hjeWj&ID(0{Mp{yLNjhdB!LJNP_w%TbUY91k zz88IV@(FPv>a5#-xWb)kmYy5To*OzTy-PEnRG)w*+f>9u3H#j6D&{?ukOmJmtiE2%1nopWW1w<0BiMcdEO?0zX&tib8YrEeMAM{M&i zMhXs;-uO7%{WTqWjgE=X)kFb;e<6Flg%aIgHCGjPC0yh6%bnF2bXW1U_4bbTX}9$q z@H>KuFYBK!BSf7t{eSGecT|(#x-}X^L6F{iR8W*&r4tcpA|faty@N>a zJ)uaEDj*<5BE1ulUPCV;1nC5%cL*fZ03qJ|&iVG;``$C|IcI#|9(UYtkNZc)`xk@t zuC?B0J?okCnbY7G7c&8JTkX6BZl^%kr{@Zlc=`x9<<>KELZ;5&w)FFc=M+zsdDG-G z1zjyUbGCvmY3JU$DzuHyV1-tglgIq3zS?U_QLYc)lJ}sTJx_{Oh<7)qsa=~OKnGun zcpGyT2ho(DmO8ng{U>`pH|WGlpLjzQ$KlelraN-cA%AB0Joh zYv8bEBrj?>0t!WSRnKbqV)!+&GAqJB#~fC4U(`}du-(Yp6Z^WB_U6W>kJ|Fn6}|&$ zF(u`<=)Q^w6uR*hcf#Y^C8kawp~&eT1@FqrAObIgjy*jCKjd7ZZSCz+KP}9P%(0#$ z7Fn{8v%c0oPdHH^Q8_Yo->WgONQvQq#TU*~)r+&;9v`_#_owtMvH?`0A4U91<<&4>@D3+-y)y4~0!SkhT=74Mq=eqk_8gD17;u9feNgKX<#{qat&Ti+Z>t4Ad+ z?Z%25n`=aoJ(0+j0|@e76!{|!sn2+8ps|S0r1~xLO#moB6STCw&N?r}0(B@i4y%7J(Vk_*FLqqcuXBz16Aw zy}miOe~S{d5x-9+u<__eP|vqMmSp};LYFVu%yxhQ%GXz@rF1yh!4+KY;8~){qpRYX ztIRjZL*cgWub!Ql%D{)_KThmgxQ)5> zrsX<12Cf1rZx+-yCQs=noGt^B>X$yeq#5|F)5IdVVNQd8=*V>w&5IH){O#AZ()}7e zQD6Nwa^oaz=X&E9>NyFC9c6~?LI+G>JyF;3Sp3!Kv8l6Q-jvs6;PLmynEe}#AMVkb zJf6$T6j?$gKU!z;DE_G8fjsMiM=Cy?V((GBk4{J`-$`^it@QS_ynZCv8l$r!d{>;o z_TICUI67JSXN+|E7OOMo1m2fH41urZf&qrl^&!uqj=#utT-X&du&EpwZs3h$Cyr)E zT?cN8mHmK)wugoMMrwS z)B#L^21iN8_kGBH<3R9FjO_Y_LRo#N+?!1uZdGAmc>n#OXcaRbmDmlgNn?w3kU}dE z6WjX-K!xYPNnlr3e}m5m6Y0K-XPd^I8+L2h`g$}wA3a<}_|zV9DG#xx%dE7e>tTd@ z%_Bk8k>#tuRd)ja0Jv20=HDI3pJ!CMxV{y54haf(fw)?kOR>CtnTb8dXK1x(*YQi`SNLBJ_lEPI zV&YQB=f81VEi0Pb4PzGxlEOd<5)W9~)i&`JlERfX$cp!33T)ee862D&9nr#s}Ww1@hZVp4msV)8Pcr3dlvQcqdXZ!YjvRw!%peRiLA|C_x&}7!n-YNE}}0 zIjYyjybSAxQTat)_O^4O+tZ62Gt&<0%#96|DJL#RHjeJ8P|YRs@}>-KWR-Eb*m!Ny4@0e-dp2gc8Y2QFqh^E{P8+iTf#Tp;MhIz(NI~(hG zDl#E4Y~Ag#lMV(7F8?-DFw>@)-PToFG1XZ4QuWB>H*1DcYQk(b$wCv6Zad1EUM1KL zMB5h8@@}-_wA9Z^*)8o*tflAss$YBtV@!D1YdWzTjC}mRuUnx?&#TceLu{<=@?t2E z(HqXW8?axvf}j~*M!gu@*~H&FGP)_e65swargS5>RzrR~gLR0>it0L$qE!cjSfP#+ zZ1r?4n>XHJY8T1ueqGZzy^^RMt`&(vtyQzhytvP_+b$z!<9mKa<8Ges=EvKaRxfLp z;rP`7J-d}ovfsr}_ra>RN$yDECNu5eW&imo$@v`g^Cll80#30XWRe4FMCYUkf5^XG zRWcj3ir22vgoROfSLkVF zi~Hs|y!A*F4jIlq(x2<*VsnhwMb&00D>kvIl&D)I2Cup2KGlqz%h1z_2{{MQk&+}j zwUFL90_|;DW4NDVfYGRv-SY!^eoqH$cWXv`YtHS~$nBqb2Fw6bnirw0jNfxp>n-T` z*FR?&VI7uTV=p$NyRMzsqLAFBI_S8otnW1MGUbkw`W>rBvG-jNO4qZ08)9m)EBBH2; zC*>W@RSrn#(C`yaqFakQzbs!l^YxDac_K|@dG+C2uqRFf1C4EG+g{|5XI;`}-N{@? zSzaWY*=3qOGe89T7ryhQ*I+lUT%~_V*ApwEZ{5JlLdtl0} zE?!$s7MdDE*1lOcA17v0?2~>yu8Qgr^$Rm4KLnC#J35rt+87P_(<7XceZeRIF%(J9k#y%PKom@_iNE^!@5>DMru|n)v;$$J|p@*vT-ZNQ1Mq= zeb0NLmtr@rwYOt6&_zSb>ES}HQh{F03%QkM3p)Y5s~z7ePfqjiB(Ep~1WKarFp9aw z5b><#K)aw+V4xq}!XY6YVjY(Uk$j!o*X98lsM>c0w-!pg!lcmYHcnYgc4U-1v5`ZVX@ls_qQ=tF1eMpM@3BYvExJdn2VM;70v z4k+nc_B;?&J0;NcYXcj;P2%~nFZy;A*&d$E-7I*uUnz2z(5lg`j~{{_ziDMBR4%E$ z5DYwaF&#n7SbaZpa)$*tW)He-BpSqoeQf|G-(JL0K$i{nK6^gB0{;O-R$irpwyOQ4 z2r@97a)kQMuRj1v<4YmPFDtYwo5BCJh2oMxw!)!T2E{R(Fjg=_3C>4kI7W)^KV<@O|lBB3PAs z9pFLcX}^M~u&Roi;m3%+F%Y_RdI{3y546InJ?BMEf$;b9j9h5rPeCu?%jFPT#D#zv zB|#x5>IK0UzLdDL9VR)QI*Tn(GmVc28x)uPHM8tl&o1C+xMgBWN~9 zZOD&!vzM(E)pX1!+4v}~ME^F6-?0DbEdKN-XxNF7o8xJQMbqT>=bUN#*XlACiNQ2$ z{8+UYzvDhSTLZ_M@5B`=SnO*STAv92^}+--+`R6;y|CJUm|i&F8kP|q^pLxY%^pw8 zi`Bc2Wk<(y_-SeZPYKJewPIi;&BrTsT6nRqTdhoql~4NrwhsT-VKx2Zs>AQDVeg^S zS-I%PJ!Jm?@{6&0o`gN4C{EZjRoR3ZBJ{6+U~Xa>^&@c_@jr&b{I@Lv{A;wES4_hH z=V)=^u3?MhYCv?%_Ur*Z4!Zo@H5^3lLjX?8iv#TU2Js9Fg07Y&`6mRz;{Sb@5Hy?q z+R+47r{&+bbbloFA-aTun%rU0yrvlYinJ3LVYu0K;fp6OCcNl7TWe@nn=Tx17ps8on|iY^h!eGBs1~vD3MJ+z z{-{KtY!66YXkCiq%;7DKQOo@wT-a7=t-AbKYF0$?g&7IP>%fO=n3!h2l0jt84>Cd4 z(_sc3Q`LWYY0dwS$ZEPn=!EXqVf|NP%RTGgc$IG|Zw(QDgvjC?-{-Pep69?*!Tmum z`*Hl*Oq<20DukVt(gv38W-?e`vcKE>U~e$Vg+5{%;S$W}zrR#dm$tv&^Rlb(%jYG& zl0lx!fN@=gR*R#4#!Yi}lrS$=Wu! zjtEHqATO(N=>5<(@(2IN;v2d2BK9W7(i=?=6(zAFK+YK)&^0ok2SRgTIw@iJTt_ZX zbu5EU)gmrSC;IlOgz)lCv98980YyP z4(yr(u*#=-gs4T}?uLa2an(=C6N5tQ{s2fd%8_RGes&qoOMcqpc3o*1O2&SH8O0?RskwJJe@><0M{Obu6Fmw@KS@z8Zr+pn8^@evtEq(;E}~cxG>W zJ**fujQ&8=}3+VM2t0i$h)H7-v9p0SNEQlW)4(d5eHfMmx zok&jnZ1KISyc=qFopRUJINpSHnr|)-Lkba=cZ&a7~~@RsI2u=z;m0KY&hUi9l1eC8<#Sy`GdEERz=#<8lPDj=&vnfWO8e#H zAR6>$$N^C0TPp?}Ux1)&r{$^U8yFSodqhK`qMOS+n(7Gr%m(dCq}ob5dxgjzR& zk;i4fVxnugFf{p~!pF+jzEW(|cHHpEdB+?_VW0TyXiicEP~7y_G~BwEyttwrQ5agE zQi>GTUiQ~}<9&R;@g#BWc4)7UIpt#@ZID2jG+SjlKJnShlJiPS3B)wpgS@tye_4^y zzX_=RzacjI--CbM7U}!IY}juB+suSk&KD=xD{?v+8R8Xfw+yTSY+IV5Cl12>0>DB7oANNk%m8Sqr`4b)XyKqt&UEi zn%x^puT^Rnca|Dy*!$$E+v}_8im{qlgr6|Bwa|D#YjBHPAiG84ZAh);=W+P57Pj4y zKNd#W>nS+goB2++;>pU)=SiJTTVa-a+T1YhGQ1Q{0$r7K=?NzE&oCahyhYW;yEvO` zx7rYCb*U8n#K^6d3q4yqilgdkx58?!K#`eE*tcbba z2b(zA*0=Lj2DgvzHo;lmnb$QWfF=BtSF1`(us(7JH|h|lE^(!vrz{aa1#h*q2MuzD zA9~1ASlAfw7xT|=z0$VxSw!o*as~yCE{)^((O2Hg=ohd8#8tzov9e%u=mXXqOLl*2 zAWASe^imaDzLFjev1-w#4PteyUKt7osWQQ>Lgq)5&oytq>1qe-diFCO+V>p9nAe;4 z3P&N&x>06}oo?l1I+hf+3f-HS*K8ww}%4z4uM)lKWO?`fdc*p3|E>tsbbhj2eo#?lOo7SZSwlfYzmVBEktb zxNEh+YTZ)JH?Xbdj}GOUcq8T3dp@wL#y`GZLlHhGah0;CAot}AM;q*pCbVKY?TkXU zWniQ5$Ugu!0p6>Wuh=$;kgBA7Q~4g~xpVQshfu}BRoD;sY)cm*zV7AcVZ*x?DG%gD z%Vzw-mW6CmbQAUlDw6hyo<9Fd5wP*S_J9mOWhB+X>3Ql?Gtnv`52_mUIGkr}k#ZND zZ}&>-o1I~(R(PFFKdcuxGZhAxQ4Pa;P~_@>6@o@%z=+ z+TGu3c(RN_hYRP{bOXA#?W|-R&rIj8?vA4Kd8P*;EPH|!M=eDl_>qKUXPYj~y4+s%vkk@C!##M7T>wQvdZ>u-#)_Z=0;M;3mt-ix^^uxWT4 zGyLH-edq{)wdiZl62gv<6-Ai#TVCGZVzWi;@4I?Ksg3)hBE@*NxhVo7l+O)f@cq?9 zm#)~H#~!3%cdlHytGIh*wR;cZ+8>PJv@m}FJwBOVs=^;Oj(a)tku;1iH}+jeY={qX zhxpCUgHttCqgH`ki}AkZ%wYPeSnvCV`9dl3Y>kb4Wi@2J!XJl59&P6>Gh!NvNj;nB_}|X?R-+8?A^FN8PxdV89dS!T${n>W3m* zI?b5J<+)eB0J{}sovAIpPgHF*hHai{)=Pc7?q;gSp6;Mtz02*&=!Y&lOz!7R{7DLdfwx#=`?}&DhW-*BB^k zkTq{F^uxjfV^@}039Z~O4~^tZfdkH4cd0ZLjSte+;R3j$98%jA98;!(aWFb@cxw;bBKgs`PY(qZ+kLF%GU!n9sTco zgAki3T)yzj-ZF1UjJ=(x37@osc4xZG)Lt42t&=fr_&lVsVjv#uVt;WGkZb8E2iAN0b2DBGRgxw-0a1 z)2NX&i_;ABv*NuspkzU`$laL_)Poxq4OD&iG_Hj?}3C_gU z;5+~Qygw%;;^n||5v~#7b{wIEm+ZKLxV*kd&`Xe;USs@bCUbgHSxPI%KJ}GxP#ST* zZA|l>vek2{TClJi&<5D3Uj^}U227hg-~Uz0hKbn5OXj+0n91s!c&sL+B)+K2Cz2KZ_yEOYV#s zXUo+6HrVXeBf3TN#y6|F0T;SA%eUfvQeS?2W4{}-=?!CeYb0>rS@%NDyU)#d;{qT9 z`vHqJuYY_I;}sWvHtNeLk3+)ZA7j$cA&~f{e`Qx7o5a7o0Mu3 zN7~Z67v#{J(G&g79(S9}z76=mISKa%^7B;{jC};|$(Z5b-2uCiG3q;s&xyxcqgH-L z)-A{G3TmqfRI>g~T^=wi-hQLk{m@C%VE&3hr-|A<5oS~_S-sqB&}YVi{avw*)M_tu z>)R(G{z+O-DnC8ZPJtPTST(&bsHUB*4(r%c;`Ecpm@uN}%U0KdDT||1`{A5BjM1gH zF`+Y4`KmX0Fe8sk9+5a55&XR<@M2+5&RXLS2IL^LN|q@I-k=;*cQ z(TiCQAex330s<1=sp&Ryma4L`GG$j2*a8>+#X-*aJID85v~&J{JpzpVS87iGlMw)WNh?p= zuTXwUypoPf5oWf=hn)TURRHx)13;D6kTvg-$-bCk?mdWR&PZ4Vkg(cXj!cGhX?s{GGJp_iA zK&sLSq2W)DqF*3ER9O8f{M20+yU=V}-1AxaDM+--$rsfPb#M0K z_CA@`1TI*~T-d1tLNln+2^(7AHO#p!Mdpxr~CA!lItxZZN;uhuZ}e% z;vmekL5BA;N{kDTkDk=NVddu3!+h)>YXgsW(#-Cp?AXl~?6BNGUQ3$Z;a?*-#w!;r z?54~Z5Apq|p*-v%eqLRA9!89Nvz_TIoyTp5P#-%Mr0Z8_i;OB|M{!+#NdWti?Zh9S z^?HMD63EP;s)1plJ1KFbw*5;~{2gBY#lQA>q0d{AcNX?H)K_CrsZ~Zo^7TotLRL>W zOQBRJbGvZ5odD<6uphn@91PswFZAE}jyCo6?=gMx=A6vbpm(_u?1|gi($gb(vH16#pAp`(O51 z`4=UM0836k!t2?Un-Or(>_32$VR)(p35o!5v;8f0GyJbec>Fhm7o35B3z8#x39#7L z|A8GS%spVe=eG-ecJ&@hz&CjaZcL{);eP;QzOepSI}-pHp6YO&qETp)?GrM24TJLAV*+WP% z08(?K+2?e=l0PeG_PU)J51CO!7@-4|noG)pQ2ocgsjHzg)v$_$`?~MF`;}wPk5=uw zZ84CjDywhbjALtc4czZ20eiHAd>B8KIa+A(S|8Osoi3X8p7R%a*2_@v>4Rre$dVM6 ze%La|xjxgCT>WFce&4d@!yQKKDhBo_>eZANh@;=SB%ieIvuZ~I zsNl{XZzsd{t?EWBe=^zUrsDXX&^WKHWUe(>{uV;kDk30!LUUHqlw>_bf82jm;_N+S z9)+jUl9(r}yA@ZFA>RXOW^eOzjX9QEWHY=fex7u%jpsmD!$P5Hlk=)Xr@rTz^L{Wl zdVIwK6Z<(s<7IZT>}H7jt~n^k7wcHzz?=@29{uGaApE0X9(;&=tb`gBU1>(V&t$4x zx|JGhGBl*f!eA0Q$KHr5pTg-?nK(3zo0)V79doM4m(M7T5W5+V(q>;d8uno(1|NMv zyqD+ys#07%VUv;RBNxK6B5-+;*@vEa1Y~uoZ2hU?&b1;s$U}TF{namLN|0YCU2ANg z%hBP!K%A1QXkts!G0H?M6^>Mt=m~-Tp3QXv$lMy8z9C)L)a+V%deD7qmRaYi+KlsJ z`thqB__FysBmd;bRqg|%x7UD$L7Hez7jI!Yg!Ic_0Od2HDD9E<^~c;H1p31GSR+QP z=KfQ_$9&hJ{^t`sr83*ST8I0?YP<_;n^TPy`}Qt*GSuDPoRm-BaLKF|j}@H12o`zA z5xE{fH2f&$xj#3d%Zw1lT5(SZ{4!AOzol9R%p3Hb@&*p*trqM-_Z=DHS2eubn}yGr z@|>=o{}sjly+1F;yM0-8TPEhi*dHXk>&VQz-`Cqrf{kI%z z-QWz6wG3>FJmEAU;D!HITjj`eT`{qt>VjM0AFkpV6Jw9YFM%)rEr|7H`K*O_i1#`^ z_mNtc61nHgruR!yzc42Hf#xAg>A>kHG_GajUlHBWy(D@6y(tSlACh|cD}roq2$NRH`jhT=HB1f$1m}Fm|p&J`K0YCt*yd=hJLMJKU&Vi zL!o@$TbR)yhqTUEjwE4K=OanlbwQU21>&8KpQk|Vl@&b?1*>xN*R>O@|_#8ZrLjJG)xyO%E8EXfMZnkz4i z*z}oF^=*MaEhztrJhFK%y2N{1OD;$K4N85OYBFR64~m z&8K!c-DWi~3$Iov9{|&1pN;o12|kKjv6gMtWDiPEVzFWkAx#-qoYe8P_mSf-eWIV% zZvTnEGkP+=U^2+L<^VJ;qY}|>TGO`yae8Z`h>Fq-SK9CLe$WW+z(np|=pzy#Hqhun zhA;mn1=Gg&_*zBO zRbpY1g4+9cE9w7@d3t|~U;j_fe+rLp@}G1CHD`pZ zrDMDC9muG^*dHSO!T|e?yKpQq{NiwB?R_*iebD!DgW zcpB6E1W>SZ7)aC@&sD7~`~iHi+`&H@uWhvPQ_JE@V0=LZK^TqepWg4!)AmcNZtLx? zaQ`~QBn|LAh7n`>`-XxakvZ2E@O6w<`=NpP_>ihnpJo+ zorp!eYN>s1T#*&NK0>`9y_977`**TxQl}$5(SQs1=uG;UvBM9loVKySZ?d0FOvs{r zS%A=YAI!QxFoy(blx)eW=2^Ud?tSkNKuYl=AT*8(VuYC53(_n#?sfp}TSYv6^C~5D zkmq;+m>Q7S1&JaneWxMc=}F_9`(eO(ky9GxW=`^EwqL%FA>G14F8i7jirzGb$kHc{wWjoPaVE>ac%q%} z3{jEz9CMayceIPPj>9aCRo^_fh_a4HC47}ahoh!ybR8eZ)-)Z!slcMx#OG+-0%MaE z7caR^^(PzNHP+3P@PiXrDZ~;=wUu)pn^0K`}?V4OVi&S}?mi^Z_Y&HuW{DAt{MD$Q!TEJ-z)8ebz-<#DI%Bp@m zafzRfcax@(DJ6O1)yEljvPUsx`>E3l;1=A|t50582b8AB{;I{t)u^=FHI3xTF4Ej{ ziG|)q27ANHEI83Jhl`@~ytdF!qE7o()FawJ5ronCD0p6xUe?GV^J+R>?uNk(n;xf_ zSQA3Bp$d;|CMhqP-&Ukba`7g1Sz$~$d&dzcwW&g!{RqY z91^ldzj(J6XR!Rm(O|;aVk(*Sq@}#LF*ThuP~BIQ$8!WienpJ6&i~P@S3sv$d)-WQ zocO{3VO1>_RvQ2%Hto--t6tpV0=h+Old*-!?DhuS)D~o*n%6CGpUca80HE@Gsqt{# zc)jyV!7(k2tc8JWu z%bIJm*Eicl>fLivv*=V(JJ*g96v|;(zgKuB>PQ0_5Yor|LV-W(Nr$ye)zI?PBK8fK z#ggFqttk&#JkEP)N?CK_5%U0M67o0v`(O3>Pr&v6NnC0FgWkSbba7we)o*4UP-<-| zR_A_&)ygAcPK`A@3vB)%p0Z}?AYpD?X_6XrvU?9Ar;Dw6IN#~A)K?H?yDF^^UAfik zqANG_2SD4*|KZkGg&7MlG0w5)1Wp_7_oFFkE+n^IkMr~8CAn*~yuM-D)SX(9zP)5- zc`)RQKRUjOaj2mRdHawtsDEeC ze24!XC%Leo5c9fwe51nP$!S@Np#*(f2ho>7-Z;L{esKO+zTGPcC$9+=LwnPm%7}fB zeqP1aDZ9$A-9k;Lk){PDouu(0n7K;R?@b`v!;cL=HHAC^y{`BPBtXMJf8`e~H4So& zsL||kS0$$a^C+)D2?wK{j^(wuQqD+K@s!0jFPK1p*{5AMrKC@B3E{p37Efzef3Htk z{fvgMT*}10>mlDrIm~F@A>sS;GIa#cqmE)YR{vMC(Wff+fDLHj&a_2eNOSw3IxBZI zDBiC)8Ye0o;j%jA^i|wY8)sobyuBCf=&FP9A~m}jVwni4*!`^?F`4ni!`2g`KHe((;v( zubfG3ZAg}TFU|KlawM34Mv)0CZay7k zYQCr9b4lt*IDM^f9I{>?QGylWukWCiFK-as z(b?*b`29T_uh;uO7~am|m$6F5*2?bM(YaUmXe`;(VHQv8!d+^00Z)i#0vk3&dxN9C zDpSaMJ!c^09yLgIsHfp{$P0g<^E<=6YhMPyg@su+=(uDBT3EFfE56Ij@iz1lGEuK0 zS$N^!tCP_nY8@iY$o)*&dH1CampdYN_}#QJk6P!JcIBO{IGcoQpQ24)1yb{)m{`7$ zdKpFvw)-O_{xYY%GCrIwP28Z$r&RvD+{YyZ79o}2Nog`;)HgoQ>}gB%?-~qg7j{ch z^A7aVCAFtYGk_eW$i5Wx7~Qn}MSlo>CH3rcrH!mD5ktl9aG|O7}_*nTOHt1gCQ;JS8cJA@> zBh#X&QX_S}Xe3L}*M!gVm}AKXcV~*zeGFa1An(kD!BbtP{@B^s`{@tTT}~*-uG?^S zH>{fU#~csX)EuGmDU5kGvrlm4(_CW`>GUENL>&s%CIhvR+eUr1^NFKUGQ7|~fR`nX zTGt4291*_{O@3%LM|_0oipX&Uo|aE3_cVWYefVV=Bt)WdVNiwB#DX*3ob?&(KAgJ| zjVMql@E2m$?kA%^SLx_KI)4?SzPcE*5y!bVlL+;urr4dT?+c9e)gzYa^8j5;Zs9p5 z_Q!f0&TRI{8}aWUd>5^Ly4^3sIn-OT1HDlwGv5_zBBRQI=17I)UfNlfH9A@M0H;obi-AI0Nik_^$#F@ zt4(&=9zCK4q>~qDTH2`xT`2HboUnn+O7db(pFjCmH=p=NxWVx6*_9Siiwc9jYN!gs z%fFqZ}2|6W0&w$|97`_*v&1+)~jrg z^um#4cH$+4cR zpw1TYuMQ1o-wbz*yq+&887F-%{Gf4w{MUnQYC5`uD6zK{YTMB{tKKUivr&AlNhqQDLE7Zbljk>lH`5pIleOo?z0GCNYT_hVIBB zJt6*CXgq-x(fZb#wXnYZqY96;4;h|f$#YzCdoa*eXxsYs54GRCagg``;2!;@NRT4t z0Cfu!xZKbed{>wj(#4|EDwm@^X_K(LV*fG@9wg)zV4!hnH;3 zwSce3*-&|x%BoJk^E15-9Mt7))d_y!jyxHw|;Q?*K?T?=_Z` z>h5&EYEbTxC$cBWDpKa>Tz+klQ@33X;p`-lx}K0dO}K!3?|*;n8V9P?4pC&qsfTH4 zD-)!oz=!@QHbZU=p}TR;J~KZwNEhH*t`Hm8%%&kWwKRz7*D?PveXmcz>wpHRt-mL| zimN~*qu-jC*go}4DbVQ1Z9-vg-rMO*VkQ#vdjE3>sX{Q{gF60)4J^DGa-0?H=WO9i zqjLU2-Viw-bJAJ#1>>H)rKY$(dzgm}Wlfjryk~=$kj9QQ4PjF(6yl z5GXyK)-SyuUUM3U2Vg)ELf&$Yj#>IPhWlO_oCL&Xeuzi+6F2Wis^D_p$0J*qS>fCd zH9Rr-^PyUfm$s&THhR2Ok5Oihgt^|qdM;5Tp*>J~Z+P5=^z_BV0Yzs&ERA`nAO*#pd&cXFSUfcK=gBMKRbjTB8q=xUIQ^ zXv~t2WN!)ls#ROI6u=QvDpYJsD>CF3({U^SN`lE=!P+^nQm27ed9}gB%lD$u8yTg3 zFE)1G-cI_V&^5C2on~)Q1VChly5zzCgw{af{s3$^=~qF$i8rg7%3|5)uAZRQKO^|& zN(#-pY~P`s0IX5XM`x*+Q)yNDEp$yC&ka4K@39YGbKCDo(B9Or zsGFCm1z8hv<2})TS$e>OypVr;w|@ZD{--rljR*#dVGdy%U2juO-()!2QE(jQ2r(g`US)Pa#pIrC` zJNXCjV1&S#9fcD1=~g2@p}L8z!IR&(1VOqVf%dj9WrJaFV*UWMW7Um6SZ1Jel@|DOGT+55+iH%X0XICmv`W zp+~{$-=}8A{2A%fbYhNU*bc)FAZ=_sF6tBV=QbFrag4IBqfX!aGQ1Fi7jOkP7;GNk z7?DtfaE7>;<9|JA|w^sM0`rRP^c5fyg~gBwT0dPX$s62LrpZs0fO_yCkm4yC@NO6!`c%L@s!{Q0*;lx??=h~e3xkZYKRr5!S z&mG&IXg?N2t=WRkW{mKWl@f3+7>d1gH^q>4={!iz)seA3gNyReMDBa^nd@cZw2Snv zIl^Gi854Nwg{8eT#ZIq~l$V>#5YG82Jfb^g$ko%6TSc%3Z1!07BY4|54RC~zJe?(k z0w|VG8;NAB!@Q11TWswm%ZwNPzRDxA=m2*31>rPw6|`Qh06$2kzO@Tx(j;@S`PTg0y!S3;7DeEQj?(W2u9LYSk*ija z9Vhc?8MYfkt%q?4e~h_T6vgz#{Zy{#2stueuz0t})Tg@tCrO}P3W*0n7V-I8oIbS9 z9Cd@xoYxs&hmm0}5;(Vm)D6My{O58qP-Y5$05|k7%zK-_xPw}A%5A!C44CtkcGjyl zn~%McA8MQ)SglL{G$c}5-PO8E2021Pp|?QqTnT9gZIE-7rY&JJvY8GFrF#hM^Bj$% zgqHTyhhRUH&O^%n0P4>Y;g*XDQ)fAHSOahOiXfdyVW+1l622I<(>IS3p7--r5Yv`$ ziepF5uGfJ;t@j*D%&>?Kqssj!^Ns;_leekQ{gk#-%$q^z*C%2QAhPi=ss_(#0$+-& z(mY=34D)v3HafDlJgq;epur-D?_q;%`<=^R6hZnbs26PdVe~PM6SwK|tYdWCjim zssv|mMN{J#UiIh(1cB;+U;YBvjo^3N0YTd6^bQy@!8qjm zP<*)4v*8g1{$nHax%|@yWB9x8%voyNl;2F?4EziG3qM6YZ@XG=6=T(xQ2Rh5>NzA% zH6Mexac?hwOaHzw)Oss1lmd$W1**M9#bW;UJ^m3d;|O?!#eDW?g(Jib`3De-z`u9_ zDg?XZNUs{|KmhzGhz9&H==G?}9*z~m_ZE0Ywuvabij(l^do#Xa`!;KnKbtG8t-lXi zpH9G<;iU3v=(AI|#&!%O8mFU}FWD?vi|KS$tmGaP7#k9BFH!&bzAP@KL$U4`iraC% zb1W5QO~{;&wYn<<=Gex|H;A4ilj=gG`-KHo1e;Fn;eqILq4V&#_c zg@HlMkpwN7dQ-a}Yh`bL?TDKeWYt@?KMA)uZ?TTymTu4g#EG(Y#gkhtVp70NoZ?G! zIp79ubA9|^xGRocb{;ZOR|(;d!JS`yQ+(t{d>V~C%Jr*RHaU~c$tc3UTj|;`bmpzU zCH`Wh?D{~)fXn2u)L!+aIe2*C`c+D;c^HUMGVltdtI0k``Q+yDZo`9g>f09Id7d}T zTq#Lr^R(qpS9^x9sa1i;qLUznw;jw_h<8uRpA8eDNA4<~mAaD_x-xyNMCb>( z2TLaeJs@&=`K%`~)X04A@>1RbnUkOE5O3isyzg8P$~6AM=Iu({b0!Ur?+>kODX7FV zYc4(TQxKAN89X9~5$lg$I6ZrfA;~CrXsDUH3fmA&GE%<%X+Md9gNcK9*m0yKquI6k z5*iRBRq|##hkClllhcUumlCfA_$Tcg*UmHO6kLw5cwdWM`+&0sz~h(4gn*NxKe-I5 z1){Fd<1aC4od{;!y;k^S;`06ww(ZXs6dY8?=1ct>y&dI>DwMo8FJpLVufp)^|7SD)ci4>o zBr3K$kY3_ps}6dx7tGe6EoN%0(O&zs&sPF1Z}ES$_uXMlZQH&D7^ARq#vg&sOm5}JX8aF_d>eYc+bo%8N_ z=f3Z|_dfo}w=$D8*Bo=KHRl{_j^A$#i-}68P~z0-0fCca6NZ<%V|0s$wS_3Rgidwb zCFT`u!liGb^_v6*Y#OYS@k%xZZa4Rnjjf+>8|=y{@o?-F@pWDQ90_5N zx{nc-t9@be_+GzSYf!Nw$*S-`nV&RI=VjNCot(+%i)!V{#rj*L|~?)EGdm8YVH z7(nm*qFW{5tM|l=X5c}cfkLJwW}5fghX1!^eqgXQg3s*(@kP%1DPv1J2tk6U!LWpb zk@INt5c3L|7pCq`!Rh?SoCj}(mJ{1#cRPa@bFN=9nYF|Oz;4*{zBRbFw)D79+6`v3 z$Ra=JueWn$O!l>;WyUQ*^0=f=SQG`{M+38U{UX|PkM>7j!Y-kJB3JMTyHJrdF#w>EZvD} zU?&1rT!?=xcRB7E9_Hvm;?WcZmj}x)fyI6w}jFbQeUB7%$;E7ytC1dV58AN{1Tc6m~8oZ_xLT&Jzlb)@iZal#=rUpu}W z_FSc^E>7}wBq<^9lPiVWifK_)S{;{cyQIq({_HBi&XeFJ)C7QWA4mdE;Oy_OOu%;> zE3N9tus3db6WP7%l2iK;D8#I`%4q17SKSd($@uL+v<-~k^L7#}1fZ!e8 zTxbk{6>v?`yW31H;jrvymx^;l~bPB`^y z79QIDzWDyVcX+`KaqTSP!0ns%%=`f>D(15BBaL+DB1Gapn?^`J2=M1GHYfK}S0n|x z>Met4NiLa(_S;nxH~>)6n^AaJfFKKi!EO^Tu)rLF6dAK-&8DgFkxSVF%8OS*DK7O` zRNv~78t{*%2fc%}0vl9A9W(Io?gStjTcoqUlqg`@Y>7%}kou`}k>WhiGZ(>0I5%A` zfCyE6w|h*#sub#S*Zm0ehPA?Z+<3$FCf^3dLRX&I)M>DfR^L5}In#$2@iqpuMp*jw z2hdgHArb(WXZI9Gi*~Eh2bz$JuC2SBzx(YI{+4K5hSB#0sEccwq@VH}YLZSxxoJKC za`-e_)jNWmmx43qHi5q!*u7vt2W+I}?<8o7y9H5*u7k^~Lvyh-?VDus79`fy$n_Gogr`?h z!YAN&PFRS-W??~a#yaynrJR-Y6C)01qAzyk*(Msf-?1rB@nW?DZT1Gd4*)P<<@c+b zjG07>o<80rsQa^bxHCnggu5by6jgXO#hKRIJQi@wTkmS(m6zH^av3Eh%fA5x{f5!~ zxBpu`_xhzq1X{&`=mHRCh+H3}|$b%nsc_}^-v zOt_ZcFbtt3e)?z%_p&mogzz(Q-CV_-5xg<3TdJH_FT?73$WD_Wwajb~epWa`G!2u9 zpHx3VD|Zr?jD)1*c1TDq_d|=+_&DmI?eA2~X7qD(?8ZZye-Hid0&Ee5&1f)uW3GBO zs~*s8fE1x+o^G*~xHnwH=Nu`}ELY0gVtbqMHXUqs^Cg^;V2F+^A@jCxGxE$XHavai zb&LsT7amci{+1Q;dO~Kvlbz+_zCrQR`*ic{)VM>81)9E2>gEiL(e_|CuXBsa*U+zn z4?OKienZ+`RSDORfw!`Yz-Onz(Di_KzxDOhV_!xa{Z}I3Z<-cCz<6RlVF-Oe=?8mn z%ATTdQTOE^UdjL8j{l7y&jI!tb2RJ(#Sx2v3JBe5vL-GJ%f2z9k^E&Ler<{!Q&gjx zQ%PNOPD8q8N-V*R=Sxu>4IBqk#rgx0OClRMfN8%KLYGtlXXto~yE|DKKKUins-hxx z>XF)DyJOm?@QL;e*5C;*{nfK+Gf=X}n>k%sIH*RMKa=Bywzm}#!gkd!*=O$DS9;C; zfcegcDMe%MU<@P(QTAM2gJ$KMt-bGI_L<8Amsq`~9;U4GrZ|`T1UDv;ueVmYx|vdz z8FR|WZ&&Z-<1&1U486-WaXxwW^wj{~?Rm@Ib_bfF-yy}smVwIl;R&hgEreQ-tk|e$ zKFXOXsxbnf(p?PTC&*)`1MAqJCEXsG3OOqhY*S(RVhK40c2O64^GsHSlthF+V^5ze zd}yVOc$61Y3ii~%z-HC^Uf5tA`kuSnR@UY}N;X~^Tt_V|JWD{wX7km3lqlf0;mG5d zr^MliZPi4MTD*AlMja&JY_W$b>|9HZasyAjmdD3YeWQyVl`kgEI1`YWL(E5GsW;MVec|i0jvk#j7rGiH^>_|Z?0rZ18o&GU(G!2 z4$c+Tjz-)w^rvD;3p#-dWpK#3<+mcwVDqd)W3cYmi@ z^OiK7i&FJvR$zDB(+E-2_%z$S13xm?b$Eog&EPpqz8RnmRN-2 zWxRb&v1Dr~ehpy_=O^4jV~z_R3K3}RyiZn$SM}!shNcrA!KdsSSw+|cI_4I0^ZN=q zvT?q8Bch$KaG6P){EYW;#*f!4KEyt%RNjyav1Cc`;umHeS^ggCM>Eq$w%pN@PV@DN zyE$ zuOmOWdf&b{X*GJ0rVj$hzyfgiMhX5yqPHu(cN%HzP>VH8SdNBrlL0T6XjB) zEU!y)Wz?T*6W&C-?Tj>mX>8*R9)oG?)UljeSc>q?9Uu;uocPd~d;Q0t6JoZXn@?p# zg&Qc}ah0*QE^!6InD&JRkmJ1wmjVEB!0R^@Mn<1JsM>Do>;9`ebcr??`I+`K#HtK? zDTe(yc|xI(^m?Z4>&&SIgv(_n#MWLz2T7u{q%!HFSMRt*Y3Bj^Nfy)bT#5$UIJY{k zoKrA-tk6|ZS;;LIEko4VNa%yhG=24&xjy*b(AuQ<<@)_B{l z-0`BUxUxI}=GH^mr$rI`grFBD~nx zD3T<5($1|Y`1Mv7?dRfQjL??>!Cv+Nw~zIGGl`Mrv%nsXheq(ny^`5l_$eH}$^fzN zoq_QY$hyVCKkqYEAa(P4YxlJ{QbRAtvuktC*P0uO2K`RXn1WkqX3}_CK6=2zvX!EC zmK`puimS*RR8VG$Q4-TxyOI2s)^p>XIy)rYFQKhoU555 z<+q4W=Wvs;!}0HuD?>B;Vu+VJZcd4|`SxeZQymW{KaX6;tOs26CT`A(w?M$Sa^rqScXKizdNr-8?bE$#FU14P z>i0pb54Q^nZTTfFm6=o~SdtIyo51DpAQ4l06D%~UB2BQ3oqNawzwXE;x7f^+-tWjn zKgDSIN-{5$w_o;*%mV|Ex~~h6g2jk<1iJ4afSg*5xl%c?c#1Hd#5q~UXU>ww;On5r zMcr{SUOw;j3zPc39xyd9H>Pd2Xavh#s2TE8DjM~UGxgPPj8v<8h-Rwb6)+X46pvG- zDtuxUtlVrFlLunU!0wf-jbQL?Qzvj<=dgRZ`O~=Py07iupplivQMzNzgUZ9h-CP3_ zjuGU)#Uh$(`5@xtb=_$28W1WS#%!{h>`)RS3Z{`svB_DfV%~@ziCw;lD&S-GJFj|C z)^f5Y@s#U3aXL-J@@5G5Y(-yi<5_o_FlOnVk=M!8W#d_csa==4tSzF+4dO03BPeg3 zNK?tFIMp_-^EEFsV(H(L_x!JS`21Hoe*Rfzf&G{XQ}%1Vgx|8nn5fRlg{(3@)rq8) zf1HhHTOxdi5f9-+0a)o2v=5+rYyv(4^lEYV`&ZhB(c45{0G9D1dK81w=q6;T4*GrV zM{0Icvf#|bH81$~6a>Eq#eJ0N@HqlW1Kg@c8(`#TE?>KHvC#qmJ-drw=~ zvb|gi5IdFce>DZ+zn)&9Ad*k2&Yw!g^p+B3LwLU4_$~PebhZBeHO|L{Z=-Nl3KSSR z$50A@y3jtd8&ZknEFHY$o2HP+r6?C-uFnH7DbFrfrN<>mr{TJhOCTx{qq{XZEOyiBb2x<=K8pa7N92CKIZsLqXGbr zN1vnyo;Xc_Dg9D13orHO9c@T}4_g3~s*yRO75+3-k^t%4Zmb~40(Pk<{QF_!K0EA} zQa$aX11+H9K@W5ZMS%852REh>!Snx_mRXy{zI^-O5DJ}O9 z0KX8G5Wkd4ej9Cg^~C(HOgVUeuMxaW^H6XJ8n(~wwFiFz+5R#Jybx9&fjIkrEskUY zRm23d!G32KW2{D)HOkWD;vOB(!3 z=_xl*1yKEN5^z5&aYvve-{ZS=e79hK9mU6E>-Uj%JhuLQVmzJ+kJqi^b?ey5IJPqW z-b^T(VuW=}4xQ5rWMoLRw=ukXcD~@ZFxUh8EQWG*2kN%$Z)yVM^Pki#kZJW~?zD2z z!RMPwL@}@~vV}(7s+tcWBx~U!5eN+B)rBqzM>{dw?A$c`bm>jkmq_D}_FL6XI{A|Y z@O}S|!*ZQNKJnEf&^BP`#ti55a@)U}nm68s?gK__r>)|lIT6~p#SDPLRFc)ck_K3p z9DyLy`_#5ly}&=vzxD$Aa0r$F*YTyITj@J*-jZ$utpn0@+7mDOBlH1Fbea%aVKWdf z(mcBt^_OdC{qY45?2^cv%qEwB!N0a+jzO$TG!g*u=K+K}rQ@nP(m+6R-3a&z`ui_3 zLqE=3BFdX%avZaI=>dR~-46-20SQWQ+WzHwK$Crh(8gJ{UT$y1otg{>4-WyX=$v9F zl|QoS{-mBR=Dcx)Yu^iEV%cUsVABO*Z(?)2etgXDz^MMvaH0ja!sjd)Lj0LFW5p z{Es38=>KO|(baHpp}ID*m6G>$KGk7-v%=ZMxZ>r>6S*1a;I;>hpE~XuW#`19{A;A( z*P#ifS;7F1wF^^C2(D8)0zIS$G7_B|fd%w46NrpM4Yc-p{agc0=&}2HidWwx-Wi(f zJ|72~Ox^=iK|57jp?l|@4$o72cdTD}JLR3Ch11AfA?m{+k(O4pahGMxo)>h=)9Ky1 zq>Rt0{Wgv&*fT%4dz+U)Gemr{$1A0a(n~!^d?`@qFk`F7nEpkDTW;+%YV3{|`zM+e z-Acjm2G+8&!Cfl7xDA%^CTq_&UhgFT!>)zbXX^ZdPq?+|08ln#laH09RsNEy0~fk= zs_MtAIA3{0N^VKLAo@9+EcT6kraA4+Z_>NF@O-?!X@qm=ZPa8x(}jyK5bx#gM-Sfy z;v@RGWwWfh+j;ck23v&fx-vR^Q#u@;`PGQ+r+DpKtJj`fUwY^;g*@bMXJ;Fpt4&m? zu}@liRZ$qLQekl$wBB-~>2tC2&b&T+#hk`NQt+Jg!rF~VlzIRv#trIOL|W{XKtJOn zMCTS_QO*B7)V>~L7UnkFNR3+l9>tPgAst$k-# z&Dg_Q8J_Ifi-cY}AEECV&qKv{idpVX*Jv)=0rN1>_w8nL8+%0F+i-{BZ&%Ed3<>Xb z9lF_$Kzv%SsRQqD>8HZO%($8LVy%rPvoLGhDgKFG^ytOYEjGT*?=T-oEo_~A`pDs4 zm_fsj%$9rIHV+Qy9iPl@TYXfjeGL^emoSX)xfw%#YRTm~EJ49ISTf!RxOixtZLW8U z=8(uYgZXH6q1lY?j>}>9b+43lX53q9?}>j_n^90@CWzU~C=d&?cQwNJ1oJCg=HFMM zDIJrO862^_RR}<7A0G@y71^sxd^!locXrYmRusNg!s=3CMM-v5>;jADQ@@7PP}mHN zUIE=JX*Rs^u!h-hrq$x{B!v!o^v(bt~ z(3dU6!ApFX`7%Ar<4n!Rdi!WJ9Y@>bwa*smihF)zNVDR zXQ_P3_JP2z`sM`9rckPLk~SR3?=oVT`t*D^gvm5%ZJG9VzS2153&P}p%wz;5YmhQ2 zM##HF0O_uA!5e0d?FifHcc2T+mQMAe?de-=hg*fYM4d=*RZ=UP8PR`-BVW?1#)cp! zxcJeWjt@Mp8A`q2lwEWuib$WHIlwA$Jv{;$QwWQrvEPFi-=}D+4qU2^y=?W^%FwHu zSa?l=G^!EjnLmljg0kYQn1`slH|tEXc|nhwypq041ov1t^CwaYn}`IE4H>J~;mzW$ zL>Icp!?r~wS6)VvZ!uZNsy2V_eT6zJrSR^x>akti4)a{s8ZTGTK7TEB7S~w_W5&sA4|_z3n+-&CU4P{!%SGei zV##*p>X>2C)~BHQQykCxIPM!ek(e4C7F~~~>8oY2NPUVCevo%CG-vYcze!AON zTPv#4!eL@kgKdQdonI&5#TPNm4~N+A+w@Ge(vMf_UIrLF6t`G|`1<`6FqTzbMuEtL z>xHfA{9UZEf$=h(6HZz+OwlKc^`~mWrKpM$#e$Tnb22j8vP>J3(8|eIVtit$lbqGk z7)#Xfde^|zqHo-No;Yz-seXFxT-4N9TXR9l$&K}kR87WD&vdk!Z=?>D{;QmyHXNGxb9oXMmc|G)+ssr} zY`5BY*BXs3Tse51?}lbG)<_@ahFez=e;f4>n5d~bMv9dX|}AoYPnD!b2$ z;S?I44KK&i4U1ec^?Dbk zK1!M|^M)?lWp0{!<>pvhvH6wyq1N*~tLMkGEKe@FW(3=5fND-o)orR_!Xl)!-WsaE ztIW=FS*A5GEEMD{uUzA8uxyL<455_Ks!dJZDPox>#eL|=>&O*-VSa99cu&8p_(~2dQN@1 zcDmT!3>TJzTCHLhh;lBU?9P|9ahA$w7Cozxl&MJ?@CY0GA$CGvG@l@iy+4H@wfCay z4N2<_uIdx*S?!m9Y%$GPeg7uIqe8!SuGG2c%n7s8SW8-z?aj*Afoqk|^RsePWCr>x ziuj`9ttUU#>{q*jRz|hLoNJ|NO|g0*vu~pczkJ=)b1CDy(#$O`>|-~sYiXHEVt9}X zBV0n5_@@Bz=5CX^^xRQlJ(c}s?6d+04{PZyR?C+Wt=Q>MDRne|(x6(p_RixIufv^K2Pyf_fS&z}It19DZ+(c6v6KRs`2! ze^e1W_xV+595<>ze=O7)8hD{2i2PK6L|>RwB^yMpGE})`#p`wAh1Wc1-uusdpy1m3 zBHdZY25Dl>&XPFe+C}0Zc)z~kRjA{m8gVi?0^*v~Q0FaHR@!!5U57le4fitdxt8-Q zdZ=j>N>#NC%^l5T>3K5_{QYrA`@pFuc^yw9wSZmPVD|!J`|fV+{AAN!66)4`;&%#g z-9zS5-Fd&>XX*SeKVXz1W~(Dm?P!K-iBN=xXf?{ZN=18B8?zC|HRV^gfS5H%uhUQZ z_Ec($!9o1akfXz#vBSCXiH$mY-i;X9-)&j(caQm`EjLm8zAL}6Tnm>5iqjkXgO|qj;vD+iHAK%mlNfz>jf%gd8 zQvtR=j&AB4LVikUYVqaZ@Qy_3`-H@Xtl*T z@<##Ggx6t*>P!#RVJUe9-E{rF9#({ieW~@y}Nx1X-)zdfjDMOuZfK=pC z0+$#|!UZ5UjW5Gz*tkEBsHBN%ka{<2BGJ`V$cL5j+NJdl&GyDG%UZ75ENsigZhOt_ z#Suht01}#fN+S$KU!C1sh>KHKH7|=dE>AS7c{Xc6ST6YxK_3H~0!>*%B1t1qx*5I` zA$;tIXc($`rXz&Fmf?3NQ8!WZtCYOwp67SH7|FHQH&pja8@gy6Z?ky$x|f(^cwX*o zzL23Eth2~6oJG&3E9F=*mW0}@hG&%^H~QKktN_9O z4rX&L3NK4g!69~b3P?n5W{#6oEq9Qc+Ee{jFccI1W}T?}OnhAv2k{78Wk8I{qlq7x z+`286rD^vNI4^*H76d=*=ZkG@t@KNsynTvK;VJp_;HAH0}_ct%w3V-UprB!QBZ!k{k(IJ^d z?3=EnX@Q5qY5b^i#wP7Patf5X6tASS4|DV{RM#Q7g_=kj;xAAsBcEL!k5dhW+!~Y5 zrrN}XN!5a(xZJ%+9N$bM=`#F0Fs;; zgo~UJqz1+u+B!6y9ZArclQuRB9gxg(I`2?2KyIRXnj`RY_cobR;*~p>bKGY#*EVi_ zRxf~?0NIf~Kl$S^|8e|B0qXk?J29nTQ~;+L5OU%gl;$!RQ-ZjlaCgE9|T^mD!wLwYrc`+#2-ru9cVGUe=j8_;==9sNsyv7)|tNR;#`g zx)&?``cVBk6!QB%9)Ug~h!1y@_MmP6_MjxQhUVAt@wa0^CRgSgkUbRuM+{qx9rh8T z8zSca!}$0QgW(_*UqYaSECR?1o9~bS{gn9Y|VaK zE|x#;%%3yY@trw-%>HHpIUX~|v)S>~{6AowsRZ^d_%L1j9`vkX^>rKvunHBT=vPyF znafDDy(zzPdfWWmm)g-2HXn37yV&RTLf~PS-w$$>S36BLpEcR8ftegER=DV{-0CW* zs`5e|)+=kIXT}+E5vr@9a#gEp$o3XZ3U(v7e=Ag89e)-900R?=2M~g~t0^1(<=#u& zIe79+=mLN%odz6u;aPa{AE%7`ehP!^BR1q4!1gWQ1p^_*zV`!kC0j`OE_;8;;SRJp z?W@6aFFUm%*xI2I5Y76>Pw{w3z)nrKKLYuKF#tD7zwfEq5PWU@&;P~${6DuRsO^!h z(AAMW$3NTT*|YwmFbgn{3X;`_obbY0MDz~<34D;UUGRqBkEWt6>8}DVVH09E68hnH z*(f#EisbQ;zqgHeLl)s%8=*erh3EgNvd5p5`5bc=0SCF|DrCYO55#8);n`C}9JT?5 zJq)L_DElaS1D#S!mvI;i*zX?DO$71cb0sA7V`UIu`*EdWrcG(h+?g}}joaP>$M{Z@d8x%9F^6;AD4t6DW&kusU-tJ|DXDt1VV}&>+he_+0QyYd4xRH-#_`x{i?sAWBvV0`Wrsh-@l~4kz@V+ pOZxkItiOLrfBnb$`rPLTM0??v@5=kPxK1J7feEq(neMP*6G)M7pI>Py_@dq`TVz zhMD)E-~8SC{NH=u_ul7u@AG=}oLOg`U2E;V_S);SH|THZS>TeovYIjgfdGIi_zytO z0dh)#PWAwxr3G*S0DuEPqMQI2NP$TJTJQz{jF%XHa$vhJp?}gCA1*$k=jk@p6csIX z^t6@LG?ji9O*dub>FJ7b2>{&OeZBQm6qs(Am@;9n02sg}fC7AySlRe^%IoN8UX<|X z?*;w$bv*jB1;8-RMOlCI|A#12TRR^cPy}-@wY9B}jT=b62LRY}8&7Xv0KmH7GY9y3 zUeNbIn%o;~AV@#GpdEhEMHjU7FS_Yx8UsB=FwGZGNd#6_-VOjjGzIdR{B0b-a)^-N zH&S<7CwBm#042wgv2nDr1pqo7FwHeLH;)TC6r?%8^qwG{2hw8J|0vVpAGDQ~^V^hLUj}Jqch{R2eSg8X zws%ri18Goa7=cc{Y6c)p4bqS7e3bP6Nb}O$L+_8eFly|*73Kfn_gZ;_)UUdx{ag$$ z_!s5xJKCxJQ9hI?*wMfkz&1dof*lnv_&?Kl`{`Y@ zp9SRW*}1DIfHWuz)ZgA)`9k)K^f7KeAoWvr=u1Z@wTrx<9-!}h9SuOMy3h}_)5hv& z`$1WtU+moF|Ii84-_GaOMccsi7&W$bH%acEW<4t<*2ZAJ`t)6F?JC z1a1IKfFF2U10H}g;PiR3b`yO2^+g%50=xkSzz*Q~gY#z&cvl z@+tiMY6tj({PVxKzw+_`_CLS+|IFb6EQ2+;0UCfS`0fYNc3_@AYcm2CL5|a3?|;^A z1(s<8w$~NBFTVfx`G0c%PALz{tNBM>zdvhaBK|W!mJ-$tELALJEKV3LOa>+i(*&P# z;4J_XgNgqs$KUBOmoW!1=P^exXEDbuog%#dLq}S`EGW@09om8V{f91KY+#wfFa?-2 zSUOlTj1oo*@W6z?dgNiUV9mlHSMd)CFSPP!kNi`nza#+u?u|dv;aMskz(mUSkrtE+7a17ry2q4FDYI{q!La%7MRmHV*+n zbQb_{Pygn*9RR>v(Ds?M{^qe-faZq<07c6-e%}7S%7b0}V1ly*F=%Nt00Y1baDeg% z03v`SAO|P`>VP(20GI$4;COWe$GJBU0E7bJKqL?gJONUG3?LiG1&V+-z&oH8Xad@R zZlDkN0*nBY;OJQbHh^8=7&wDKAlMK>2pNP1!U$o7a6<$jVh|aK5=0ZC2Qh)%fjB_i zA%2ih$bCpGBngrMc?BtkR6yz>ZIBO;LC82{4zdQ>hn!+SF$gfoG3YVaF!(UUFyt{b zFbptmV>n=VVFY75z<7+2j*)}$8lwiI4WkcZ1Y;Is1LFt^K=GlJ&?`_Ls2Efcstq-T z+C#meVbB<8Dl`XL25kWQc^Eni-GrXNuwY~`CKwMmf>mLLFdLW`EDRP0%YYTZYG9qP zVb~mO7ly(l#Jr5jjVXbthItFq0W$zI5;GOE0J9pi3$&#r%wsGpEJ`ePEK$%FO|YD? zLa^enUSO4Dy~i5FTEIHO#>S?>=Ej!B*2cEN_Qj6Geun)TyA^u~dkGtXgO9_ABY>lf zV~XRB6M>V8Q-afiGla8(bB22fmlan6R~y$BHwZTYHxIV~cK~+@_Y98&j~!1M&j8OE zFB~r&uMDpXZwl`KA0PiJzBs-vz7zgE{B-=c_`UdZ_$LIU1Y87)1m*;O1dj;{3EmTo z6C4l{60#A>5tl#qNNStZ3LWg}H0wIzK( znoHV2xKN*B>JjQw8YUVg8W);G znp&Fgv@lvOT3y-z+AP{G+D$rgI!QVkx){25bQ6~`E^}ShyBu;k_j3Q`BYFmU6?#wl zXY?KPn+%i;atzK4PZ?Sm))>hcWf+|ppE9;Gt}{_E$uqe!r89Lh?OwTjMfHl`l~-3j zUpc$Ve%0`5#MSbv-I@3JtmXt9K{l(I~);ueo2#xi-c_z$4G&&r`}X$4kkp$s562%e&3T!e`2t$k)S%x-NX(^?Kg* zNq$m(b^Zwc2L62kE&&^XOo6Y0go4U~aKSpkJt1x(JE1J0Z^C54TEbDn?ZW3Gq9WcR zWg=^$ETVTrpNo!(k&Eew#fkNbV~Q(?!^NA#Pb5Snd?nsV>`3xRx=5Btu1c{>*-7O| zEl6LLwvv7&JuAZ`b4TW-%&hDcSu5Eb*?Bo;Ia|2`xfOX%d1v|8^4kj66}%Oy6@Dm6 zDBe|ke*=0$lvM@6;gB(AUV&nAhae^ww<9!q8IJO4gdX$$HcMX00}$t)`u<{auG$$4jSC7fV-1 zH&b_6k6$lTuScIu-%`Is|JXpmAi-eLki*c=u-%B*$lR#d=!fwQ<0RwRTYR_f-s&@< zHE}YjGsQMFGA%GYGE*{3FMcbv&1?_6=TJDD9cE_#Woz&gMz0-riBhX{eliM@WbJk13E5&QqTf@7+ z2jX+vr_PrgT-5jbariy-oAa0P&-6zG7zI=Yk_5U3_6KnVMF*_}D+lL?z(Q<7+C#5| zhKJ7GmB0Hc3=(D?)(&TeKY%aYQ@K|Zju-9{{wd;mL{h}zedGHL59lAhiL!}BNhC?ZNejtZ$u&=zp2j>qOtDP)kSdg#orag@mo}TOnO^sd<=K;G$PCAf zkxYfm^5>VIM?e4Z!uG{bmRwd@Hhp$%_UTKfm)~BgysF7z%Sp|}%Jt7(&NIsE$rsBn zE}$)lEjTZ9FPtsXE9xv3EiNv(T#`_VQR-K^_S*dQmp3=w)Rpm+y(*_Hk9`Zg^?SQs zai?PRoyNQNO0mkaD%Ps!)nwH%HISO1n%!E*+Sxjjy1{z&`t}CNhU!M%#=@p6O_|LU z%?T}dEe~4It--BF?>*mdwmGydv|F}McHHXt+Ns<5xl5y~w_CZpqes4{wO6{g>4U_F z`j28CYx_j{YWjuyt3L^Us{SnUxn@9gpze$Kmxe*9!ImM}p|;^0!`)xizV?mW92p!n z9Q`(CJ~sQ!_S@>X>-gS;|HRqky(!G8nD3Xqr%qp<&Y9tyDW4UYZJxU^*FUd6Ke=GD zu(9Z~h+KNGOt_r7!njhrDzMtLro8rL-E4hn!*k-jdvcGZsDPXF$$-K9P6 zJ@kIu0nI_-q0nLbkTtH0CU~c`P_BS?(}e(OOg3klB*jk=au^&^capy5=nE zqU>tq=Hwpgk>r`@_0l`tC($>~FWNsQ;BjDjP*HG8$mCrh>>Awi-m~z@`&S=$JZy`? zdc+(p5Tg*QA7>vQ{5Ub8=*j!UiKL^aBq=

S^}r_n&2D)MpMoUwmiYbA!1Ig3Alcx;(7WOA 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

%rlG8xI54!E}4OnXTkNj1Uu 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 literal 0 HcmV?d00001 diff --git a/download.sh b/download.sh index dffa07a9..9d6afefa 100644 --- a/download.sh +++ b/download.sh @@ -3,12 +3,12 @@ ln -s ControlNet/ldm ./ldm ln -s ControlNet/cldm ./cldm ln -s ControlNet/annotator ./annotator cd ControlNet/models -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_canny.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_depth.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_hed.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_mlsd.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_normal.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_openpose.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_scribble.pth -wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_seg.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_canny.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_depth.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_hed.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_mlsd.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_normal.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_openpose.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_scribble.pth +#wget https://huggingface.co/lllyasviel/ControlNet/resolve/main/models/control_sd15_seg.pth cd ../../ diff --git a/requirement.txt b/requirement.txt index c1bfb107..f1736d43 100644 --- a/requirement.txt +++ b/requirement.txt @@ -3,7 +3,7 @@ torchvision==0.13.1 numpy==1.23.1 transformers==4.26.1 albumentations==1.3.0 -opencv-contrib-python==4.3.0.36 +opencv-python==4.5.1.48 imageio==2.9.0 imageio-ffmpeg==0.4.2 pytorch-lightning==1.5.0 diff --git a/visual_chatgpt.py b/visual_chatgpt.py index 836c2e1e..944a87f1 100644 --- a/visual_chatgpt.py +++ b/visual_chatgpt.py @@ -801,27 +801,27 @@ class ConversationBot: def __init__(self): print("Initializing VisualChatGPT") self.llm = OpenAI(temperature=0) - self.edit = ImageEditing(device="cuda:6") - self.i2t = ImageCaptioning(device="cuda:4") - self.t2i = T2I(device="cuda:1") - self.image2canny = image2canny() - self.canny2image = canny2image(device="cuda:1") - self.image2line = image2line() - self.line2image = line2image(device="cuda:1") - self.image2hed = image2hed() - self.hed2image = hed2image(device="cuda:2") - self.image2scribble = image2scribble() - self.scribble2image = scribble2image(device="cuda:3") - self.image2pose = image2pose() - self.pose2image = pose2image(device="cuda:3") - self.BLIPVQA = BLIPVQA(device="cuda:4") - self.image2seg = image2seg() - self.seg2image = seg2image(device="cuda:7") - self.image2depth = image2depth() - self.depth2image = depth2image(device="cuda:7") - self.image2normal = image2normal() - self.normal2image = normal2image(device="cuda:5") - self.pix2pix = Pix2Pix(device="cuda:3") + # self.edit = ImageEditing(device="cuda:6") + self.i2t = ImageCaptioning(device="cuda:0") + self.t2i = T2I(device="cuda:0") + # self.image2canny = image2canny() + # self.canny2image = canny2image(device="cuda:1") + # self.image2line = image2line() + # self.line2image = line2image(device="cuda:1") + # self.image2hed = image2hed() + # self.hed2image = hed2image(device="cuda:2") + # self.image2scribble = image2scribble() + # self.scribble2image = scribble2image(device="cuda:3") + # self.image2pose = image2pose() + # self.pose2image = pose2image(device="cuda:3") + # self.BLIPVQA = BLIPVQA(device="cuda:4") + # self.image2seg = image2seg() + # self.seg2image = seg2image(device="cuda:7") + # self.image2depth = image2depth() + # self.depth2image = depth2image(device="cuda:7") + # self.image2normal = image2normal() + # self.normal2image = normal2image(device="cuda:5") + # self.pix2pix = Pix2Pix(device="cuda:3") self.memory = ConversationBufferMemory(memory_key="chat_history", output_key='output') self.tools = [ Tool(name="Get Photo Description", func=self.i2t.inference, @@ -829,68 +829,68 @@ def __init__(self): "The input to this tool should be a string, representing the image_path. "), Tool(name="Generate Image From User Input Text", func=self.t2i.inference, description="useful when you want to generate an image from a user input text and save it to a file. like: generate an image of an object or something, or generate an image that includes some objects. " - "The input to this tool should be a string, representing the text used to generate image. "), - Tool(name="Remove Something From The Photo", func=self.edit.remove_part_of_image, - description="useful when you want to remove and object or something from the photo from its description or location. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the object need to be removed. "), - Tool(name="Replace Something From The Photo", func=self.edit.replace_part_of_image, - description="useful when you want to replace an object from the object description or location with another object from its description. " - "The input to this tool should be a comma seperated string of three, representing the image_path, the object to be replaced, the object to be replaced with "), - - Tool(name="Instruct Image Using Text", func=self.pix2pix.inference, - description="useful when you want to the style of the image to be like the text. like: make it look like a painting. or make it like a robot. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the text. "), - Tool(name="Answer Question About The Image", func=self.BLIPVQA.get_answer_from_question_and_image, - description="useful when you need an answer for a question based on an image. like: what is the background color of the last image, how many cats in this figure, what is in this figure. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the question"), - Tool(name="Edge Detection On Image", func=self.image2canny.inference, - description="useful when you want to detect the edge of the image. like: detect the edges of this image, or canny detection on image, or peform edge detection on this image, or detect the canny image of this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Canny Image", func=self.canny2image.inference, - description="useful when you want to generate a new real image from both the user desciption and a canny image. like: generate a real image of a object or something from this canny image, or generate a new real image of a object or something from this edge image. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description. "), - Tool(name="Line Detection On Image", func=self.image2line.inference, - description="useful when you want to detect the straight line of the image. like: detect the straight lines of this image, or straight line detection on image, or peform straight line detection on this image, or detect the straight line image of this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Line Image", func=self.line2image.inference, - description="useful when you want to generate a new real image from both the user desciption and a straight line image. like: generate a real image of a object or something from this straight line image, or generate a new real image of a object or something from this straight lines. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description. "), - Tool(name="Hed Detection On Image", func=self.image2hed.inference, - description="useful when you want to detect the soft hed boundary of the image. like: detect the soft hed boundary of this image, or hed boundary detection on image, or peform hed boundary detection on this image, or detect soft hed boundary image of this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Soft Hed Boundary Image", func=self.hed2image.inference, - description="useful when you want to generate a new real image from both the user desciption and a soft hed boundary image. like: generate a real image of a object or something from this soft hed boundary image, or generate a new real image of a object or something from this hed boundary. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), - Tool(name="Segmentation On Image", func=self.image2seg.inference, - description="useful when you want to detect segmentations of the image. like: segment this image, or generate segmentations on this image, or peform segmentation on this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Segmentations", func=self.seg2image.inference, - description="useful when you want to generate a new real image from both the user desciption and segmentations. like: generate a real image of a object or something from this segmentation image, or generate a new real image of a object or something from these segmentations. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), - Tool(name="Predict Depth On Image", func=self.image2depth.inference, - description="useful when you want to detect depth of the image. like: generate the depth from this image, or detect the depth map on this image, or predict the depth for this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Depth", func=self.depth2image.inference, - description="useful when you want to generate a new real image from both the user desciption and depth image. like: generate a real image of a object or something from this depth image, or generate a new real image of a object or something from the depth map. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), - Tool(name="Predict Normal Map On Image", func=self.image2normal.inference, - description="useful when you want to detect norm map of the image. like: generate normal map from this image, or predict normal map of this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Normal Map", func=self.normal2image.inference, - description="useful when you want to generate a new real image from both the user desciption and normal map. like: generate a real image of a object or something from this normal map, or generate a new real image of a object or something from the normal map. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), - Tool(name="Sketch Detection On Image", func=self.image2scribble.inference, - description="useful when you want to generate a scribble of the image. like: generate a scribble of this image, or generate a sketch from this image, detect the sketch from this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Sketch Image", func=self.scribble2image.inference, - description="useful when you want to generate a new real image from both the user desciption and a scribble image or a sketch image. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), - Tool(name="Pose Detection On Image", func=self.image2pose.inference, - description="useful when you want to detect the human pose of the image. like: generate human poses of this image, or generate a pose image from this image. " - "The input to this tool should be a string, representing the image_path"), - Tool(name="Generate Image Condition On Pose Image", func=self.pose2image.inference, - description="useful when you want to generate a new real image from both the user desciption and a human pose image. like: generate a real image of a human from this human pose image, or generate a new real image of a human from this pose. " - "The input to this tool should be a comma seperated string of two, representing the image_path and the user description")] + "The input to this tool should be a string, representing the text used to generate image. ")] + # Tool(name="Remove Something From The Photo", func=self.edit.remove_part_of_image, + # description="useful when you want to remove and object or something from the photo from its description or location. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the object need to be removed. "), + # Tool(name="Replace Something From The Photo", func=self.edit.replace_part_of_image, + # description="useful when you want to replace an object from the object description or location with another object from its description. " + # "The input to this tool should be a comma seperated string of three, representing the image_path, the object to be replaced, the object to be replaced with "), + # + # Tool(name="Instruct Image Using Text", func=self.pix2pix.inference, + # description="useful when you want to the style of the image to be like the text. like: make it look like a painting. or make it like a robot. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the text. "), + # Tool(name="Answer Question About The Image", func=self.BLIPVQA.get_answer_from_question_and_image, + # description="useful when you need an answer for a question based on an image. like: what is the background color of the last image, how many cats in this figure, what is in this figure. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the question"), + # Tool(name="Edge Detection On Image", func=self.image2canny.inference, + # description="useful when you want to detect the edge of the image. like: detect the edges of this image, or canny detection on image, or peform edge detection on this image, or detect the canny image of this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Canny Image", func=self.canny2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and a canny image. like: generate a real image of a object or something from this canny image, or generate a new real image of a object or something from this edge image. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description. "), + # Tool(name="Line Detection On Image", func=self.image2line.inference, + # description="useful when you want to detect the straight line of the image. like: detect the straight lines of this image, or straight line detection on image, or peform straight line detection on this image, or detect the straight line image of this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Line Image", func=self.line2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and a straight line image. like: generate a real image of a object or something from this straight line image, or generate a new real image of a object or something from this straight lines. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description. "), + # Tool(name="Hed Detection On Image", func=self.image2hed.inference, + # description="useful when you want to detect the soft hed boundary of the image. like: detect the soft hed boundary of this image, or hed boundary detection on image, or peform hed boundary detection on this image, or detect soft hed boundary image of this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Soft Hed Boundary Image", func=self.hed2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and a soft hed boundary image. like: generate a real image of a object or something from this soft hed boundary image, or generate a new real image of a object or something from this hed boundary. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), + # Tool(name="Segmentation On Image", func=self.image2seg.inference, + # description="useful when you want to detect segmentations of the image. like: segment this image, or generate segmentations on this image, or peform segmentation on this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Segmentations", func=self.seg2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and segmentations. like: generate a real image of a object or something from this segmentation image, or generate a new real image of a object or something from these segmentations. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), + # Tool(name="Predict Depth On Image", func=self.image2depth.inference, + # description="useful when you want to detect depth of the image. like: generate the depth from this image, or detect the depth map on this image, or predict the depth for this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Depth", func=self.depth2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and depth image. like: generate a real image of a object or something from this depth image, or generate a new real image of a object or something from the depth map. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), + # Tool(name="Predict Normal Map On Image", func=self.image2normal.inference, + # description="useful when you want to detect norm map of the image. like: generate normal map from this image, or predict normal map of this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Normal Map", func=self.normal2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and normal map. like: generate a real image of a object or something from this normal map, or generate a new real image of a object or something from the normal map. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), + # Tool(name="Sketch Detection On Image", func=self.image2scribble.inference, + # description="useful when you want to generate a scribble of the image. like: generate a scribble of this image, or generate a sketch from this image, detect the sketch from this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Sketch Image", func=self.scribble2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and a scribble image or a sketch image. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description"), + # Tool(name="Pose Detection On Image", func=self.image2pose.inference, + # description="useful when you want to detect the human pose of the image. like: generate human poses of this image, or generate a pose image from this image. " + # "The input to this tool should be a string, representing the image_path"), + # Tool(name="Generate Image Condition On Pose Image", func=self.pose2image.inference, + # description="useful when you want to generate a new real image from both the user desciption and a human pose image. like: generate a real image of a human from this human pose image, or generate a new real image of a human from this pose. " + # "The input to this tool should be a comma seperated string of two, representing the image_path and the user description")] self.agent = initialize_agent( self.tools, self.llm, From 9218690c01bc64054548410d2c9bd716d0f86b38 Mon Sep 17 00:00:00 2001 From: fuck Date: Sat, 11 Mar 2023 11:59:00 +0800 Subject: [PATCH 2/7] update readme and py --- README.md | 2 +- visual_chatgpt.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6570f1df..f948008c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ See our paper: [Visual ChatGPT: Talking, Drawing and Editing with V I implement a google-colab version under standard GPU environment. I just use two models `T2I` and `ImageCaption` to process images because of my insufficient GPU memory. ## Demo - `T2I` +`T2I` `ImageCaption` diff --git a/visual_chatgpt.py b/visual_chatgpt.py index 944a87f1..360721b4 100644 --- a/visual_chatgpt.py +++ b/visual_chatgpt.py @@ -955,4 +955,4 @@ def run_image(self, image, state, txt): clear.click(bot.memory.clear) clear.click(lambda: [], None, chatbot) clear.click(lambda: [], None, state) - demo.launch(server_name="0.0.0.0", server_port=7860) + demo.launch(server_name="0.0.0.0", server_port=7860, share=True) From 217e57c2d8c849aecdfd208ea4ddb6ea306b5d74 Mon Sep 17 00:00:00 2001 From: fuck Date: Sat, 11 Mar 2023 13:56:53 +0800 Subject: [PATCH 3/7] update readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f948008c..75ba6cb3 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ See our paper: [Visual ChatGPT: Talking, Drawing and Editing with V ## Intro I implement a google-colab version under standard GPU environment. I just use two models `T2I` and `ImageCaption` to process images because of my insufficient GPU memory. +You can try my colab notebook here + +[![Open 2k image generation in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1qjAZqWb-EYGDo01TcEoCIJcTMi_ELjxS?usp=sharing) ## Demo `T2I` From c59e96c460f3e661e871e9ba1a9cfcd5c6facf26 Mon Sep 17 00:00:00 2001 From: Siilin- <59059785+K-tang-mkv@users.noreply.github.com> Date: Sat, 11 Mar 2023 13:58:05 +0800 Subject: [PATCH 4/7] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 75ba6cb3..dc79fb2f 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ You can try my colab notebook here [![Open 2k image generation in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1qjAZqWb-EYGDo01TcEoCIJcTMi_ELjxS?usp=sharing) ## Demo `T2I` + `ImageCaption` From 1e9e8e91bd2e49815876564b1e332c39d9878355 Mon Sep 17 00:00:00 2001 From: Siilin- <59059785+K-tang-mkv@users.noreply.github.com> Date: Sat, 11 Mar 2023 13:58:51 +0800 Subject: [PATCH 5/7] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dc79fb2f..d77a8803 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,9 @@ You can try my colab notebook here `T2I` + `ImageCaption` + From 7939b0f045828b43240e5bc65d7ae568686db04a Mon Sep 17 00:00:00 2001 From: Siilin- <59059785+K-tang-mkv@users.noreply.github.com> Date: Sat, 11 Mar 2023 22:39:25 +0800 Subject: [PATCH 6/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d77a8803..8397de28 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ I implement a google-colab version under standard GPU environment. I just use two models `T2I` and `ImageCaption` to process images because of my insufficient GPU memory. You can try my colab notebook here -[![Open 2k image generation in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1qjAZqWb-EYGDo01TcEoCIJcTMi_ELjxS?usp=sharing) +[![Open 2k image generation in Colab](https://colab.research.google.com/drive/1bl-JAgrUru9GlGsb9hrcZCqj3uI6ev_O?usp=sharing) ## Demo `T2I` From ecb852665965112363faa14e4bc8bad753764ead Mon Sep 17 00:00:00 2001 From: Siilin- <59059785+K-tang-mkv@users.noreply.github.com> Date: Sat, 11 Mar 2023 22:41:59 +0800 Subject: [PATCH 7/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8397de28..819f1fe3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ I implement a google-colab version under standard GPU environment. I just use two models `T2I` and `ImageCaption` to process images because of my insufficient GPU memory. You can try my colab notebook here -[![Open 2k image generation in Colab](https://colab.research.google.com/drive/1bl-JAgrUru9GlGsb9hrcZCqj3uI6ev_O?usp=sharing) +[![Open 2k image generation in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1bl-JAgrUru9GlGsb9hrcZCqj3uI6ev_O?usp=sharing) ## Demo `T2I`