From c2d1feb17a9c51061b52cae5897136528f3b80cc Mon Sep 17 00:00:00 2001 From: Henry Ruhs Date: Thu, 3 Aug 2023 09:13:17 +0200 Subject: [PATCH] Next (#810) * Fix dependency conflict (#790) * Remove (direct) torch and torchvision dependencies * Change version to next * Multi OS in CI (#808) * Run CI on multi OS * Run CI on multi OS * Run CI on multi OS * Run CI on multi OS * Run CI on multi OS * Bump version --------- Co-authored-by: Wu Tingfeng --- .github/workflows/ci.yml | 14 +++++++++++--- gui-demo.png | Bin 26718 -> 26919 bytes requirements-ci.txt | 6 ++---- requirements.txt | 8 ++------ roop/core.py | 4 ---- roop/metadata.py | 2 +- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 420a32db0..04c04a0e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,10 @@ jobs: - run: flake8 run.py roop - run: mypy run.py roop test: - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 @@ -28,6 +31,11 @@ jobs: with: python-version: 3.9 - run: pip install -r requirements-ci.txt - - run: python run.py -s=.github/examples/source.jpg -t=.github/examples/target.mp4 -o=.github/examples/output.mp4 + - run: python run.py -s .github/examples/source.jpg -t .github/examples/target.mp4 -o .github/examples/output.mp4 + if: matrix.os != 'windows-latest' + - run: python run.py -s .github\examples\source.jpg -t .github\examples\target.mp4 -o .github\examples\output.mp4 + if: matrix.os == 'windows-latest' - run: ffmpeg -i .github/examples/snapshot.mp4 -i .github/examples/output.mp4 -filter_complex psnr -f null - - + if: matrix.os != 'windows-latest' + - run: ffmpeg -i .github\examples\snapshot.mp4 -i .github\examples\output.mp4 -filter_complex psnr -f null - + if: matrix.os == 'windows-latest' diff --git a/gui-demo.png b/gui-demo.png index 59b24c592fc13feef1439f61e739b14206a9c57b..ede8fb74522d8e1c9c03b7f65cc4490a28c4f492 100644 GIT binary patch literal 26919 zcmeFaXIPV4wjn^+xy$+o*(zeJ3)r8jNQz zpQWRtW7N`AGoqvW!-Mv>b>=kfNoj#~H65MHnwHuflR&`ABqSu+v~3sSG_OCHMeTfmbC}#?`oD=8-=k z1RaRb(cQi~?%CsUnbTM1YwnDg)C8@c2+qW@biCTl@SW3OegVIj)PSVJ%Aq$^tV81R z#^E1ybX?c#bkLHV*C(aZ3{yG0(>9z2Tcp`M)12`hHPRgJF%ecK`33Z1Qhk#2D`x~H z?m_vFC~oy;HKC@@UyG#c^c5IsRU4i%IGI2rH+fe%wxJC(ORr z^nWR5xlijSR%**Hi5HlZN_(2h)Y$h#r;FB&@T#s4u8GNlvAP=?Jax)8)p=nxKVH+P ziF#e#cLn2hHyDl;>iKelj_!)Rq_x1L#A0^O`4->q0)BC+Dapa6f)24Q59@N;5JRw? zTP{vV^CiBvQW!=%qb2!|P`GK9jviW^OP0=+qEYEwwQ?eC4d&bBf^k&0RhYxoj&ph~ zN_ojlpq(dH#_MwG$2md7#i7z_cf%?e#7vAb?5r?cb1hD5FSK_hncYYx--N^3=RHl( zG;iR=(md8(=v~iI*_~hl*nh>mbKf)IfC$my#>|7 zy?MKX8Fnw<73@ZHxotDmc`#d<(9Iurk|wdHLEGQ?aCd<~;4}q~q~JMK$>W1Ea4T1{ zUaj)1ns;btJladwMZX6485ic06VKruv@gC@YSo;qNZrdhY(z9P>|RuE5Vvj8bagHA z{r=?+uHK88j_%7+e$)H%2ovFn{9w}B{)R+tn$ha5c4?FO@w#o}{IsD$F{iw;Z+`AF zqv#6D>Z-!Q*#T;5*j_4VvdNEJ5zDRU#4So=;F90cuvW(^(rDELQ%Lp5s7sEKA*a{* z))d$cjz0F+llX#pydN9kTe?`()MtTV$MlaHhgii}B@o}zddKVK#E9Ow5tyeJTC=FA zE0rfkNtXfr1FG7tIMB=iy2~}g_L^$@WdF{0(3@U;ynv)GBRxkfsu^g!e=@P{k)fh9 zUPxUu1eN&K0NYsF+p_hn%f78x4KI&w-}hd$SSD5HP)ZR#3j>G1buJpfeoTQ*>LJ)m zU2a?&RtJ+Ycc^g2nEixf;3i66 z*LM9~>@u(LJDwM9u3I_O#TL3zzeCqraQ zG(*O6Uo@i*r?P&&mNt>G!0*%DL5=Uaf(UhsGtfN*>-AN@(fO>Cv{^qm4HJ{lPl-10Sn;|ZkZ>Y(O7NTrvD-O}3}`!CcHZoagcIuQ zHMG4){hrPZ*@@Zn&))t_VPz-!qp7p1RDQu=$~|wc%Z{w9tl%-*0HAFlF9vlvx~?$x z-p@&;)}_i=4AW?b3>I5j{4yXkY3#PbO?P{fRc9Zt@flqq>{J&;GpZEa;V=)Y)}^lY~(f^6N}lk_7W?yk8*!tj!ixpYi^ z@cinEk1mCps`74w?%$y;zWUtv;Lw2H&UK?9;_M5_g_h2N-V;6Vkh>$NJD)C%S38eVZV8Ne z&%Hv}q;jv!K1h2ynrY!a;O*kjIQlBc>eiN@2e}0*MoDFq%wbYSFt(q5E0iUkc*+j` zhyXX?qLAU68_r=VUiAlt`vKp@^LX$AVTW3SYLt7_{T4hgZKfOe#w#r^r(L)^}c`Z+i z2SV2Mt$aC9a^AuADju=h`E;l2%k#vx+2v=e@bwZP`blCb>S_LvovJIyqdfT*v|VhW;v>IB^i zKevf$i&$KCUd8wgSS+_r!CZqiaI$`XgV}K?r3?PCSa*NgO5AQKtwe&ohoFp;T~@HH zx0^5?$TH-gF34T&GFU))DQIvRN5(qLOG{x-qjKC1hkoq8$${=_*9~y-Ye@UE4GOJ! zmrvO3`3YYQizj8bHuNmhYkkSQJ#MFWN;}!6D?y|eZ0lbc$G`g5NxaOM70w0+Ao_VQ zw!`)!=_#{$#2t5yT0Sh@t?cw*Tpk{eUayMYhaba32mTx&|M|=Okil?k7uGU~| zLde;-zl|wgZQnPG@il#cfyjR)>AM*v0o?FU5kXWqV6LM=X7AjqESP@$7U^0)9Ga*C z$2I>H6qY*$3Navs&UBxw_jm~^K@Ty%Ui6S`-#ig!HG8LkD1psPyaS$g52{;TM=V9= zU7g;uL@zu_BXtIBVhj%B1MHd%^@UJ0R7`A}e0$EmuGzMn@5C;{rFX89Z|HHqpjh}E z@tB3x#gMl;U4iLHg&t80_izyz^cFPwmj{u3ekld*CHFmT6ZLbQs+~*`mS1Dr@^ywc z!4;9(pD_k@tvAevl?8Cye#9wiuw-yDRkGJ;F&Oiz39c8mALLE(Te%5*dA5#8(B_(P zj=>qffZplVrTz4v|?tIp;^%KZBAy%a4||} zxcW3-u>@3y0q;&^qI<|2bJChT!?RhUisYMamc10RH6pu)M5cg@2NMzV0Kri5;YQLy z{`zgo51&0^SI$y7(wPWB_w&RhaC>mi^)XDx^ZH^AyUg}xpD=;@`j_X{RVg>7LwBk| zc8AP2v!>dpR&lEspha3MG%7hW@P)@H+|jt5xTE2P!h6A26Z(xKWj58%T#;wm_Hwf7 z-@9LB7$O(j`HZG1`{nM4s_xu}LaVsE0+Ak|IAd0FtHQlPALM8_95w~O=`%9;Lo;WEnrg3|GMmubu zFWO(>+zXs_*dFR5rG*~=-JfrSiD3M)DvxQ|lay3;p?!Y$VVe04b&}aSBi12MiHF6DY zRdIPXKKtv#3D+W3|EXk}nLSeZ==DprVHCftwCw|bipXM^UEaW{P>bE|nyj;hmc4X^mVoK)r*e9!Q z_byJi`|EN(W2Adx_O7(FbclV*8NK{{xpifMSG0`q6U~A!_6(Ufb#G)W%_@P^6#Acy zbqB@$zJGbQMoL`71n+OZMIVl;#!n4b6w6syb^KhLZlYLp*y_WahdPHp`_O&;3q!N| zz;L~c*AMCG=;S7jXdtbKy-ZfjJ;_N&_kr(i48cldZ2F=AmgWyKu^-`C6|Q%9MyQ?U zzdwF?WE9Zz+J`3sX(-TL5jyJ6{h)Hk^Ij#*6XLpXY#o`Du+WWYyE8{a@Ei@nAc&2X zn>j;k@}WJC1|j+gy5`lRS4UuPUvQ<3d-Vupq9)DwvmF78S34T)j10|}y@sY?eg6o; zwFDWMyVy_IQAe;@XhAHUR{rlHf79~+oDh9BG%-1OvSUE@Ur{f-#__lL{B zGfV#mQfgvtA@aE^9zuVI)YmAJpdXk!u4{htrWdIAFd+4@6MBld%8tc@LELUL$mV*) zg4+4NzlLL=0+0y*a+d2vk-&1+b@QJoz&ZZaGdY(|nt7Cpt+VPz%^FrKV!GtstQADsQ$?!kYi8KXOx z{`xBQ`||w`S+4^tug)sNboW}lYDz7qU6Oa$n<3xtT(4ui=ZwK#t0$&9 zRSJ772ScuvEGP>USf=v5%JO>txxAkD4}2;Uadow#BlM6V;omcgbJhOrqKTGXP~k0S z6|vSZX+3R;K$FuGZEE68Q<#{IiAC@?galz+NGd}GI$ZS=LE@dqWc1Uish34Yj;eL4 zOxx6pp9TWH{}OZTiA_s#$ym=4$ql$tfsoJ)uxQ8lAn6tv(zzA+yxNgCQiJM2;{ zIUVxGFevd*z?#*D=MtjAvCEnlg+R942#r*|lE)Szs;IKBUWeSM@|fCqcd$40qFQ$D zn-pPU98XB$&OybJkcsK(tKcqBoSKbSDz+rX+r+_st#!X;7n(y?MTc489Dhs6i1oEJQzAAQ)DeLFPff$qGZGd9f(?0B8L8(=Xws;faPkG`W zTNkn2jbL|z^Co)2Ie+YZkx|h2mZaaZpd@)M4K42D&}*3B@EE`Y<+`F-LgP z%SJ?^ZEGDN!|frD9DPY9CI1(hXhx&hd-cxMq0qQNAgRl)r%;*`*auvLW0qxmBPXpL zcOk(QVROT_h*iRU^i2ncKEGCRSfgL6F&Eb7v4OqmQ<;i z>+&Y-2Pxq2+nL9hN<71*ruzh^ zW;sa1VB$Jn1XZy9a)sHin%WrD z7sG8{UIBN0Xb_FtQ@2Gf9VB-FIZDArwW%2jf1k(o35 zLjO)J@pV&}!T7%m$2+0MJS#xhtf{=iXO*Tl6mxna`)k4EGUoN>oAXV8CBzJ^ zgr(WMO=4ty1j*^XxV0GIpr7J!-Lyxf8L1mOu&}wE{4&5YCeWl)Y0JsYC)k{=0xw{o z(ro7BNx2r}P-74!v(XsCYra+?NQP2?3!L^<%d6o(hy^e4sGU8-b{KlEiFGq@X93aC zs^dFxj#qmxQ}FVX0B(2eviG57*LMcR>32t)qxUO6+cTV@`Q%4>SoZGCd*U|42+?%v z`}z&m7ymBO|FN~xmM+}t6{xS@`q)bNOJPq!y+=IIYc(OG{LN+W$;baix}FTK(7X)) z)^8<6;E%~;jys%onyYv_ZM{{`G)dPw-|i*=_P>b4k>7D7Jx3k?O;Ub8{%=VWjdl)W zMC6$tXiIj-V>kC<&By<6a{9MY;+wHXVFOusq!g15xCI&T&i~c(!0L&DprN2Za(v@x^5+o5QTF*Cb{Xo`n4|UU8NI zl`pL`H{W)OC6zH=(X2H7PYS5i{YyEI+xi5s_s4+Hl)5oDF<#&?z^yBpzxWhsP!^U1lTD7r96wOs)bj%Xk2z85{JJ+iErU+0!rYO(v?Mz-M| zh1sC-nOH@1rliyB^D7gXQqR<@i7)QG|GYkZ68|)0{c-oNoRi!)7#+L!@OhVpr8bPT~xxK2_kgb`jC06sc zMxANWCqJiBge!cLl}s%8d@4AuDZe^b@V*AV%^ehF^G{{X;zPy1`fyXKP}3}CCU5Q^q$P>Yp#B^Sw$>#gir z&Ufl!Dk`@STpmq9^-cSxw6sXdFVD+wqH*R0^R<_YY*frWm7A?QJ6miDrvhInwYfx< z+DIBkUYgg^LQeN|=*a5$ja;`>3C^@p^czvh(BIyW0UxGyy)hTg>&>+8?^S~x4nMxE;FW6$p^1)uiz&=2L%`uxwM0p^ zK_x+J@dKwLHGMc+=GIQ&K!}w@4MmHfkX^@5cvtL9c*V0Q*kaVi?O;zRMub~$BV0EJChG+_3c6{XZpZPh=?sJ;I$Vg`VfHVwUymj9 zd}jq4XwdJ>gdn!pT%dGrXX@@QhIF2^tnq(3q12EU+>-tfwSnz#nto5=b0r&>&$BOkEQpFcNRA9`E=+0 zc-M2bcgLQ919feM5rk~5()Hv`Yi*Q9z0J!YDU>ul#Pi|Z-17Gu-3ceRE;@btpjZ$x zdr7{;cHaSl-a)|UMqX$XK!ZRB2x60c8UC8_fLk-EE>ah^Q}H?#YAA8bb0E^>i$SM^ zoj^dA(Rb+GsVhk@RwgUYF&HG)x>Ik2a{?|JU(Mq!a>M$9L&a7zd=6<&{j9s_cUgd$ z#~YC`CV4A`wXtR2Con=kG{tB*_>E2QG#BLEfoajCCBJ)io3T0%fp{Wd-eakO4D3mV zfOmQXg71AfZ5`WH-fEyqgmZOa)G9}~@lC;m?WP8k0!gRQ(e8&O&1;c8v=Gp{E`^U& zp1MQI%nm*8!g8!c<>q;k8UNWaM(wd=So@q;F;i%Oi}`4)3hd+Gfw#7-9XnQZ2yY@8 zW?0aka~+#jpn_7{MkBMrvdL>1Mym2W^2HmdreTl;YHl=%==sm7(5{}ueq*4ENsAgt z6CwcK6i5P2p-O-qkvjOSShoZx6nL9bn5NByiu{Y-F3REpg=Z(`vQIVn!u5aJ+u8#V9jdKs{`o3^>Jb!D_VqN z^xDt50D(|9JJ|3Q>Tl8G^l0R1Cbs1gU*xYEG{(ZC9=fOEP(Iw&^CbNW>+0Pg`ND5a zd*E$93C;ezyz00=#qJ&(qORw!cGnxUX@`TVCM1;}`M5`7P7`6o{&6~~Dc|_9#akSQ zk5Wp5eM=9}Agc(te)0(6BJjbd>#$|SeoVCy57$)NH;4NRx=F8CV-8OSr;f*;)z<{Q z&2T~yx>82HE}s(YDMQKj=3E~CE92l#nS~9f>9D$&58da-EG+zU5B!PO#~-i9zr>$n zlJFvyoB_QUj4xv)^`z}L_>(`DIWwmQr-I_0E7m0h7V)+1qkUbTlm(}CW-WXUn8yHb zzxiQ40z6{4_|RSC9^9;Zvro!HWIg@_Bgys}zf(*4)_Ht~JTy^>a^Sb6+{r@V0x zTLI6?-hK2QmQS)Kr>*?z7_f-Zo#I~<ou&R97ocs$e6KZ3VAgZL_WT+~PoYLEIgy_M zRcm0PxznPPud#nV1JAzM92YNC;Smq7kk@*(vjwUo1g_x7JN99{5G9C4kLfuXRAzM0 zaI1A~<(Ng9X;mH{cFE4pT%43+jI3uRwwcU(j`NA|KU;m7dq>jSw4e`Jo|8PkpyP^M zc7y^OCzRieRdS2}T25zUk=CQFX{|-l)6IyWPFAq`==|vUd#5$yi2Wf;V#}n;g50v@ z%3%YzHE^V6D<9s*R?_u=gM@uF{-9RRtr@E}JfZC0pSU{`H)|1(HtgmaE$dNYQe%!20ZW@y^Im?5vgCp= zh<iH3)6r>o)nc;73MZ++N{=@ zqbeHgC&9~)lO~1y5A$NBz{hkm>!&V^{vZPcw4c(f)(drrgk9s=C$IC2VhCfmkQe$ zBG5ap73V&Sg(bL?=QM0cSL8(P_#eNlDWoh_D*0OnhTSbWHYI5j!n>B>B=#QEI>Pz4)?W;2YRN=2OU`PY*w$C0Dz+xK10mCnf2s z%j=rz*BU-oNkjY{#*J9gv55tJqx@MG`71hQB_+9MZoKqnSM zIs4J;ZF{Xm;|{FF{gFMkU?nGwn^()}xs+DSy*DgA ze=9upO!zDCpCy|Mqu{JyEb(KR1} z8v=@L_>2b?jn1y@FsFPpc6_vVHth@Y3K?Mre{kBsN(8n3_l^6OsV5k6?8qZbED61jt4o@VA_oyL`ySZq3IP$mtsC~wJW<8xl2 zD&vwmmvMgRGcmiS97Ri*nRrU@;OZzsLYOFo-P|Ir2UjDSQ7oVJ%y?$;H+ zMI6ijxY_G1>HN6_QRWmb+TieJ`@6K!b(LnTVn9hk?UrZqor1L;>3+FvVpmKGnXNRX z7=+JvTfLhmNepz&p-xDnfJ-p}-LuiK?p}e5Ku!FA#wOSO>{3t*y=Be;C5LT5+pt6% zXvdb(9`^6W?`>ZD(#+IZHz8zjWljG9U@oQiJ40^)!asGmt?ABaS+<~g)<4%eDeGON z>tiJOistj&suI%d)&)WCDJIFPBCP|7udTbJnruxOf+R}EhhaHbB z!Ci7`jX+3fB|&;;_kEZW1@bK#;k#pHx%s64Y}34t-zP{j{IF22)0rh@7-5%f8bQPh z<0h>%3sjoKzRt_vnvTPwcq8&^D<8>I)|wiWb~qXsFT_BU6? zjR1|Bo~n}v`4(7nPn#CYY$WKVuX~2z{nkj-9FTMF+fdOmp+&S-sC-%|!`b$R#*#75 zDP_V~TzM+6ekYphs<3q4I;q}Hgw-cZLNJw06Ay48ROzuIg4#_uf_0Q(j2vyu1N zY=eC%2H*6!4Tg%qW4-2taZUzp__IG2<-VSV6oON9xlHC%0{#`OR1rof;g6TTvw$Cs zUF{hZfvK>oTyqz3>h5M*B;!c?5amPFG`qb98|?UfqoFkLbQ7zj3V2owb~CITCMeR9K?UEf1~@Y1?AF?ibo1vK#JjVJrz)N< zi?JFO8Qw+dOS#4+K4hy3w|a~ZzlIcUuatH z{y;H#(U_n$hRRMf=j9P7kQaBa$e3x;lO&YZ1$()7J6az02GUOP-JPX*R({id^+^BL z3B_xzQLucO0T9A>;?Fg|00?+4Wl(G69{*C9u;)zR*`xS{^E!%yku+i!InfLlo%U(E zG&(tUI&I>y9m`pxLl@DbkSF)>iJFaSMak=|X3OlBd@6i(#;35SQ$SW{`u%zYMdQj6 zv9y%zMLm+|#(T&O#G?+IM*r?1w09W5{bU7=kOj{`CJEd7lTrvU+7)g8Ma^ zs4+Oa9|{czzCqc&5#J^&kuVa*Wpmhpf2w3w_L?lF7q1K#`Py`JDzEO;_ta<#(psw_#* z4q5g(v(Yqr55!#Wy%b5RF;P`$qVhhw9t*c!axbzBY30KFSU$Z;_`VE?zf3tOC2RMH zBqT|siEaS^Vw^IiG$?yG z!qV>K<%L{RC6TT#(3HY0KUJEpn_)DvZ3VFPx7>;JCBVsFXq0rVtW9ZIOYKb}NX?Zm z5;lhkMdO|sEFR>Y-R@KeFB?(L>p9;BsJtH>q`N3fJjShqJk{)Rceu_R8#Jzq!ZXNO zVbEClXE5r=%l zIvc2sE5)+pS<>7nfsonI0XAp@hZ_ldW6Gztv(Dur1x>%L1yuuC>y9T70dm^d;7r}MsS1>pCFSP=pWg39- zG|3Huu;td5zZXqOG!bx|m^lksgGm)Q8@ge7B@zd^m=fMmw*4F%#dSchmg{v!d}bXV zc7^natV+m=W3QsRNO4d`Yibp^V@4Y?XU@?zIlQ{Akvt4S(?V01cwHM)p{8VC<(9N5PwSk|tvj!Pbb z7l*#9J~$?g@pMKfaxkJRQ!LM5Q9$7G_`iiqUFUOXG-`aPLs`$|C-*E;f=7_@H~6u{ z^$ivlkDI(DjYrxD*i(XV`S_)&%Mw7dW1e5V*Q7m^PP63vT2Ier*I|BMPF`;Pr1H{i z?}*HV+D7S)_!H>7PzP0(%h$0cfH8aUI-(5WhJ&D`YPBwH|1CVrqXTj=#pgRMI|}41StIuU`#|=?jHqc?^xonSl}us=InPl(;W) zA&Die?R9Z|a5d8M1`F#?%B;!yLF_A7B%y2IaU0`9@gerYmC)29CH-r62_BwF{xpD9 ztz9d&y*fL{3!~+g2(K}O2G9HQGH=)tYlV26{*=#dnKDOx?6s6EyvQk@n4hw4&JtMq zk^R`jVqZn}hMV35a3Y*jMYBWppj7?5YQpe|&;sW!{~qkYg$tUD7rd1Oz`a>0AZ6Iz zDAAAO@tfLtitxEO)7|6f#{bG@Q*6q(>AI5_IA*-s8aCw<>+88KeUW1mujTD3xHw#t zlzfTxy8En-+7+N&Ussa3f;tbRRvlm~qu06JyPKqN`&kW+B1}&kQvEoh`0$F{BW(am z8Ozx1=xqkrNyOPm-`38k-aGN(-BAkv|7PG39mpp}S0hKu-XG8R_o3MT#;1Yz1npvP zC|aLAJuLKWk6k{6pMi3IQ4KD$zTm@peg5o=kKeLO z%#NjbKB;9^&`~w;uP0GPU-%^4TdmLfunPZdlT|YMuQmsmLN%qpzn()|t4Es){xLt{ zQ2zJ^S7)Oe=r~AH5t0*`c^dvt=1s}t5&k(E!9MdpM<``reD-Lpxd1zRn^wzHe<_&j zs05Si^3SC%lY?bAPdjM)|CZNfz1@(_F3>t^a!e1^Ci<6utGCN>To&?(_aEpRVP#J% zp*YhJ(OTXR{^n__$*5&75iY4hNzJvD%3omFH^R(j|p z{mlb=`A~E;7#G2?=YR22xhxaoPtPR7V1>SuVO8AXTJ_X{$^2l5RnVbZdNSb0`|}N< zQ8vDmJ7?=yj0?Ws_TuOJh0OyJ^Rl_*`ViO#=Hc0p?;pyv z97;p*ZoRQxhdqkpXX&#^u_b0swC;%%LG9ns?!b^Om6yY=1kHXq_80a(sXPq%LS6Dh z?6+ERkV{rjxNP#1*H%BOR(8L0j#E3kX!Tt$HWz|yk+}2V&bTB$Q{5wa6u%OZ=Y*;kZK1W{8f%*cmm^RGy2CkOp zH49yYPWzA7%?K^EY)9hdei78yYJoTxx>DRLq+HN40FxBsmeu}ch4x-f`=+5{RV^8*QTko z^2CmsP`eJ;tPJkZpSF?NtgW7zssPggBp^L#)NgIG9MF$=lmMu6k3O#|G4qoVa<_iz zohs(P?UDg)4?L|ZZDFHO@n%)3woKXh4F_?b!-o45dbgNBqwAyjvLA;Fn~v%medbjg z`WqOTu{+d5eDl`&jb7iUvlP?>a7{&OVM^ZD`R3Exe+k$-V=pn>IT?2@dL@J9{v8=} zqS(`G*WxQ1Y~q4U9=9l5wefp6@%WD69q$g%T=54EpX6um7wlH&>bw=_>QciJRaFn(CyPSvF+oQ+d22SC3<%v*yQ*!` zOuZ#JJW0)Kp_)M_D08zj6g)=u9C^D1Yr^xquy zo1jPh*uiY>7OqCkzI7Z|1b^?o!%@^_eFcjyzvny@3l&*r8_^-{Xv}?;lIRX)KqeCE z$8-iit>CjioX@tKpv1(!iviNE{6Jk_J_iB5F-^OZ=<>iXXtw#vbver6)Y}Vkx8P4&EqLYU1F`q9OfdN(4Qwb zC%uf-l0TT)GLk7bEH4eU&JJ8)kSFdiBfQpglGtG{xJCH7Oj387R7Ww6dMsvw;r`Gx zIa|{UhhzcH*xqmEcFAqCoIu$!UQHPqB1V%@=JQl~QOs}uY3k*tA>uu`E&y|d7ZPk^D z?Blkiw-dW7TI1ELcf2IlACqJiXz6HIv1ei#4PI|NMj$)n&7p<$?wzQ^s3pJ4f>sCg zR<{mW_b|@9JqLKsB-MjXRblrj1743c1w=wKQtGE<{8^U^VQ^fp7jz6Cu$kB^Y}xph zAvu3OAcoB#%!IAQ*N92ER_9emY)ZUCv1??1_T_T}m5bBxgSeH0l?GAU77ZSGs10ml zWqtC=8g<}O02jc8(4c)rk!j%ZYu14&!Di%vnr8;PDv!#c6>Lzp>(1lI)$_|YN+@cv zYpOR!UZ@ywX$XigquN6mfLjT3-fJq;>}yo@t}mUEw15zJk;It9D4tH%u-y2{!=dN} z_sy}8C}1_{wPn!nsY)dYtZ!pDlJ3C?-*)inR6)y@ZAJ*CV^dayO{#x0*yfq;bj!Ye!CY!~!?SI^xu1!Dji#l>$4|M`w3&iGpTHL^FeiZ2`5bmTG}J2l%ks0%X$j*1?l=va9ayL}AXH6O z^b$!>7iH|nQ5H$I=|-}m@q~BayUz=i6g`#0`DCsT@*59N?8uA{_SO8s9kZ4nwJlpC zaT}o(gL@CmMDcuC?CYt5QxrffbSsaGyp+!sxX8L?Y0cNA{rzUGWmEsOAfs1^*V+Zj z-OKL037${86sLD!Eqj!>O~;t&0D924))RqCj}@q&u%|&Mh@MqsnVrg-823vwBt&B z!_Ps#u3Q?JoZb|_V{kmHqvxF5w7{%}tsSN}A$uMi{c`~@45)|OPXKvneGNxKPCLsdQT^2 z*1UYrgG4b_C#_|?r~l~|JLdPl|NgsBhtoP7smr5||N8xZaDX089GIE%vCGj*j# zl8QSq;am?y_QLlIXlQ=NVnblOMn zlq9+GFDy{v?9#{FV_mJVM=!8mtXJf9)e*jIt_2uG4^uK-xy&0QXfWGTXP5r?)leG( zyuexWV6);J^25$n#Ve2;OvaY_AaRmhgNKM|nqto@+f^+Z#aw0ovLX#AWXE$XG?b^Xa? z+J7PWzZ?E0&rvn)Z=v|T6#h49if)zrXs>Ox#*Or+Xn`dae;Hhp(tu8BP9L`NP9Z6# zKxNb(*HnRTQhHK%?Ejn?FSs2P(`>%vX4d;EW(NV*4r{zYkYCK4-5iokt8sdv^y33P z_>iIq48E7;VN+`&T+S;xxp_BxI{Og?XlBa!2fPebU+==cs0z;CUcR6gy5fha<7r4@`cEmiqJ&BJLFqaa#bWdnv?qll0cWSU5iaei~F^=XnW1pvgSH|ekpy(;%j@jf)2;t89xNXJ@3|V zSyIHs)7s7f6Rt2Xzfy5-a^a4oS1*?(cp7Y3`_9O0fRi71>S>88Xx29TH2IR5C7!q;i^%^lTP|=eq+;HfQaP ztIE~cUVqP2AXXAEG15Q?H(9^P+Se4kQf0*9r%_v)fz#Mb=b7fqV2_1GuP%P`U1mOQ z-L%@hES5Ajj4Dn`)glFQsc$vYidPVheG#CGPcjRRZDYK;d;4fn^y^mljM5CW&L+b^ zf}S+1WP|IdsKMz;6R{ClivFW0%iLMzpj$r^I&7m1|}RoU>M$v@nK^T`5UvytkR&mMZ)HZt<8wl1kJQ z45%dG)t&x0xNR6MP6TNTJ+VaGq+%Z^CXGGPEyAC?5^!Y471kd%-zpDy{*WGQ?cUDT zTH_j7_Vv{%bfw!f8=SAQwTUp^gV0_n|J!p7QjePCa)4((a12bt%7G;V|fr_~s*D)z!x} zn0D3V-I@y?RXSa$SDo5v@2c-RnQ2u_YpbmFRTlhNXR&w9(zw~8Tu4NF;PK}m)UaQz zUb_q?iw`pnFSeBY>aq5K@fW=~>Vg_qH=h-*v)cHVcuf8E#@@XO}9(T7@syDiDW5FB%MQeg>SWpL7Y^ zAf`n7(7WaKKRG%{xY%B2TQ?!Awa=;{U^PrDN-&dHhVOvdBK!ZWt663Sbih0nH}|`f zrD^(Y|AEkm3u;*uNa>UIu%~g>`6p+WA4aD!>}VA@@zIo(A74&~SuHqf!gum58|_~U zXl1rz-iqw|r~>1k`7biQuaM}h}Z zQd&MK%xJv~?0Hij<@c$HF-7Z~xlTWw zuC;E4E?$>Y&suDQfb5e6Rr*PvOSzvYB0tkc^Q7o-v^4%tFtp3p|H0M_(V`=G!$CuC zLt;ZTe?Kz&)zQtZF3!iZscEfgulZclQ`4XRY;|m2!n5*}s#5BIwpe*FA9*UH&T0k~ zrfw95zw<-i@W`Ein{^~2h=7+(NWyJSF%}P`WZ0k3!17k(;ic!`V!X0Ayhq z+uoQa3X^MJ?eX(wTSW{F%m{8JT_&AIhiLuUS{YQ~f-&>IA@TFA)m1E2ATiUeIv~2K z+9Rm`V{^jX+1fvLY)a70m$y5nlBqLj=9suYV&zq6Oz&p#TsXtvVy9sJ&3VGA2q@01AxK8oQt{jIZF~kBX$LEk(Iu; zC)Q_9cQM9rvIRgUel&>8KzU_9Hb{ErJ6xiX2tMIC1go;mi^(g?>(5)wW6T%J*UJax z$K;pg_vf$XGZu)Ah$VW6fJ#4VZe_jm_wS$bcpGy>0=VX`sP&Iw7yE0{xNY+r-x*qW zUR?`wbwz4|AJEU9zMn|XeZiHf0d=*9v5Jp9pOf~Hl&}2t)*gd4Y_3eVKs+E`&=n9L z=qiXGbPXf`x(_@i?LcJCCmv8B(6xa)KZU^Dda^+3ncVVrrC?zqp@gd1IcsYAxNa z754igGvm=c{)VV?Bs?(OiZucr1r&I4h z?zm=kwJT0dW_YDEo%WrZkKAriwrgzX*g(?;vXN$I)NH5~Mv@JsEoE;o z2#Ym)DpcD{8%^ethE+vzl=Ui@Zf z+w2{r`eJs*O{evO@un52gR~K6L(bBT0RRBVM!}}BonyPl&ZOB$(?+s0YT8cPP})*< zR!tkLwOF&WYuaj&Uzk6HMVq~*P485&;ie^M!_A&5weeuL_|~sqy)AgMOt(#B3+8K06`%jB!JRuq9RxjkQ(V00#ZXu zAfZG==|yQF2@nwiLIOxjfFy8&?ESv`9p87yxc}Vo-E)qAFfvB6*7MByduCsAO`hH` z(c|BDd>zY}XnkDI; zg2n&7XYV!DPXSaU(Q8JRy%@ZqPV7q_5_(pcWtp&hPj~nvtC@8|^JacX0=pm`oK;|; z;XmCsMetn@okZMSZ(SA7%+BGMb^-G^-7*{BILM@pPpe>yb+t)E;CkGFjl6lpHa@JCC_$_+bA2^a?2;(OC{KHC>f#h{!4%6)In z0F*z&UT~pN8xmNS;v#!ienV6B?DRI<~Qsk5Bz744DH_HNr!c-YO`6QyS~c3Wh2SDRpB>ccAA7()MHCT{qlq z=lT+|Yw(tdV-&~r2oK>(Wr~D*>P*6HYRCKb1GtX+(a);h-G$1K%Wne~Wj?>NiQb3l z*t}1pLuq@_=c$a>hRV-)_mORpt}a+ZyqnT?MKPb$ZOB;OZS6vysiyI{ngF?hH(9@R zY89pkU^*(?Q{z)a+)^*+QXiF=lvyOa7Uko+^uYydfCu+zCyE43y)e|XcddnF`5Qh4 zO^~qmyd~ZO=px^p1cHc4?Uk6OBUHvH+mDaWNAS2iQL*G z^Hg(ZSm*1be0--~!>U}$>)!I`0G8NEg%-Q~JzyxmYE-r?#*G52BvrtQpJA3n_w~5- z_n3xfy}gxZ1P@8OG^J(Lw`&y+NYY{v>ywBQ1qFq5 zOTiLrw4=G5o$N5)Ke5E2<~Ke*KlOYCk2|N6_o+=$s?czboM*13rtv-gAuLxz$+V0-Z1Mix4$kOM#>~2fVet!=w zN-hBMwzEDLAm%wmtWe2x=-t0`A*0^;v=}s`KtXw6>64%D@{w$-w^ljY=XmGu((5L% zf8V~5>Aqv0YXZF;cMJ)+#-c_bd9EC=$BmTMRRXE^0xa_HnzHE))Erv%-e7uzR0bHA zdH0@D)28Hhn+JG=g;-K##XM8Jua=_Sdaa-uHAk26D&c1K8Usg*q)lPdc+_t6nbgAb?GCtjvLBTLerDmdW7ntEUH_F?C} zd-uK9B!;kdMbr>vnBHEW1>p9*!`h9Lc#`mXjcLK9c{fj!RJ3E<=6>hnd!$FD4d$6< zM}cpicY1$+*BW*0Jh%9F=GtzlD%0r_|Lr|_-^VK_@Y zjaVLgoQwT7rqu&I6Kz`UxyC6v?YYI+Zp|w*Bo(g8$u+fdM}VyCnm03+cgPzT{#ZH? z9}_pwleZfrDueTTKepnX-xTs`lY>56>{9O=V{g?`v;%MJvXv#ljQT9R^N83!zDxJN zW$2eLsWN7;H}y0HJmoy)iFRggq{_}7Z=J!(sn1KAS9;M7z2ADNO*Q=^d-?c&WY^EO zHC?l3FHU@n4LT8W)I_xXCr%jHRN!-09l-HbzjyVZ)8PTd)&|9Ohxz!v61c(B-941@ zDyp46F!pVnjt1Qs;4qLj_PNQYIGM*6|Iy{jI~AsnQ*xHBPYpkH+Wr+|eldg-VZQuH zaDgQ_(S}1Y7p_SHH9=nRrJJOMuE~W-!urj1&L?q5dppgibsoU&93L3gd2wN_P!i_C zKvxsKeHbwz1J~!{G8oH(P517+xOwwtt3%*$vVSVvND-<)w$l*UWR`4Cb|gEQnMSK} zXEE>cu7u_;8Ru67^6|A=%h#E5P(#ZfR96?~fU2-r+`|Hw??*^0dE(>VRJfFQ*pK`$ z%8!e{HWr4}(ke+JdedjN>%T>K^z3R{@1YvH&gDtsVkNATXn4jY@#f6H5g8!oM}$$j zDqym?C?)pF7IJ;PZ>FfN*ls%UO_sn6k;ne$goM*RGzmpR8k0q92X5S4Uq^b6kKuPi zV1ae87a5_%#q#+~MOqDkW2=LJW@`DjpSxJAzPJdgHmN$ObZ=B6Ka?%8D(lZiu-8Rb zohUxROJoa__rwgt*XRmu7Jx_=xA?M5oU2C?HU`aaB)1)GJ_)E3{Z?eN=CJ-IY`qaU z{#fy7i{di9l<2)Uv%U2VVWpqP)HIcV7~oc(CEgo9`b$iXw^3jB+1Mj!_QG=V5DC%ViC53BycM2_UvWv7g5#M+ys(95@npKxD0@-8avS;(_Kk16%aGJ7aQ2avYj zzB?7|4Be;7UQ-Eg{xdsin+$~^#`j*Q=khWO*yij;hpIk9g|f_LF1jWZZI}SpU(44| z4_ewJw|>?aT1d{qt$CE$e?dbFOA`IrpSZLPTmOY{Su%VD_JC9F_VGOAyAB*q=SkHg zPRY8rF*k2er|sKO-qv8^Yh%x(ayb6?O|h=ElN?;yRQiDRej+JI(ZtUKTrSQ zWmJgKor_I&zM1bRitD7#a;9Rw6Pq1?+vtn<-BPlVRmM>9? zWCj_E9sP1VB0d9YZa=|zx<~e=Pe<{@RM$y<(?EFUvvhF++_nT3WKcN2i=QCqu&gD^lQ->1b+C12d{_JKvz5a>D?oI-A2`dAEXxMfcTn*FY>P&nzq`qlz#@ zed;<8o+Q33_D($fG?n|qxpA4*p>4W0ICj1~q98qE{xfJHaCm70dlMdNu6A)cWqAQ9 zj(9OgSih>XwgO#s^adk}o0+>IeyMfq^`;H3RGk-LY_^(m@c`$|;5nTWdcK!=nlNzU zv1$qw;Hlt=o*0oK|3EOn>Mdc9zsLWC(p_QDvg$2_Qx^?s52dz%*O{4Nt6kTEz1oh6 zybMk$K+!MM87_4%G|Xx*tOg>I=jwwD2f9`<8J0)yXWCDnIsp@uhBQ(&s0Ji20&A?!Yw9 zL&wnU$t-)-0W%aFnjEU5K;`)PL*p{vkB;`i6q)L;m}__o#k-)pPx+ zuWPbEYbQS!no=Ok-c@FhPFVAuIPdhYVxJw8eJ?G| z-F=-D$v^9UfY@5+JQu;kUo-Q~KLZq@^#_kK20)PasP??;i`eGT95|Lfj|$`ZTw{`fLARz4wm>lWe9KQz9=QCsC33Fs5PIMV7h z8%D@>or*;EXMI@F zWpul5j^RiDQe>w0qfaG)KMvs)N8gwJQ$jda3S2Ko$vErqGt1&|xtfiY)S^%>f9guQ zE#Pt2gTZ6X+7hgRxk*okb8g1!P;ci?8AIAPQLW))-N82$?ADXDfX)H! z&2hT|c-l}iqO->fOr}yqK?=G|XU{SMEBn+xtCTOg@s1Ua1GQkq!|<$dTf2Ew^muIY zoMC4TwI#NSiVTheyns8;c9V~#*JU{dkfMEvZ7g$SI6!k`^=it-C`9DK#I}opqtfML zW8M%pD7z(BOuTh&F8plhm6OV#uGAU_N6LI8W92I}zmTF3IK;g3aoM$15xjPNT4yDZ z0iU!WElrrCsh@l3#ePJ@~ z*|ujRx=guCVI#1M^G(ty@5Tx8vuuvJD5a$aoRlb~bxzm$WI{tP-DM1f@o89jLeE-! zVPE@AE_gj~_5i4)yEEASVtrN-dnx^=@Kg!^NkP8xQY217OJ_J%9w`J_y=;03V*NK9 zdR;k~`9K;4Gr}#^xo6gLW)aE$Q%>!xm}^6Xy#EjiYO-V5buY(ihm?NA=^EgwooY$A zLlbxwu2DDYpFdQm+munoT6>I~OYlT1q|AzlI+xIw@$PSHOOTn_;na9hTf-(DfCXJA zDb(xv+KIz3tES1LljWd`W>UbQI* z43|w02$SOJl$7Am@#Txm1E9t1!sel&d$hHXwcX6hcU!2&)l#=mRnwAO%Q9Mxt0Q_3 zq6@5A&l@*uT3pj%oAp|};SsuS#+sASq`uyK5T;xD>DKOZ7bFAw+S0u}Qz|TgttuIj z1=MqSYFta?=|ySM2_m!_Myv;}&eX-Yjc2V1`g)ypKs(CG1rlVe!77FGeH(*$<6UG| z)oX`gI2|?OCRKkrPm10uqtD2pS*RzJ_SMyc4FlgquqVLKJ}$ehEAac)W3YRJ+ZJrU z2r0JC_@=aoSnJ4YcW25#kboEI)(8a(Q9k(rKbjU~;6>%6)-HWqTu=_5c4BPrnIm?$ zR?`_!T_1-z_f+%6Ncr%P*Bp7w#ej=}*o>fv(BhUs>G70l#qp;#;<503%BYnlBIHUq z=DAnUHXqzlx+Q=PT-OS5zR-}e=<6$HU4oXT>u_DSXpZ>G{1?ruoJp6a^ceIl`oY!X zo8*7|FXSV^I?`%@5t%}sc6lS-5azx++pbO9iTLU_nLb3yCsB|Dx%7<{3?qo;n?Gc! zSY;aGLXA03TsB7vf!E&*)lF~D4=2nI+q63x5kxEOW7Di8&@=0@%NM~d70PEuAS%rB zA{#@L{LUF|+j2Nki_6hSty}K>9`i*dHHc7hDL z>DFzBG2j*fmco~(is5I4Om+H~6uwLl2A;6HHLd~wLtO87Gr}a~1L_Vwv-SD1pa_|d zhzk}4-}`T`87=e?2^!n))26Fz@j%r=fPgViAynvj)t761!;hB#(=GfRI5b+*e1@K@ zxpacS23&DM0)A~+$(d|FmEvDlO8TeT{7uI;Uc~VaZTj^!?`;0>!zA`$ubT`1!LKM~ z#s4Ohtv$_h5j^zutwnd&e~EKbdZH_K@BPtrKt_w%!r;XigXrHM#p3=7u)oQqa1vMY zg|bBbGsgovqhJ0Elehgl#KwMji~8C(MY^(c7jQO)A@P8l;`PD4&t4rd4y5mIP(FYxg z@r2g6mWo0;ty6oheKt_%#c=+{hU?6(V6TB0pV1det#K<_e0RJV*7t#1Apu(wZ5d^+ zVr?~0V~oBS%4~_sLnk*lNO*1MBX4I5eHGhENMXTsE`8cU=2g7_mJ4QNcz6!#E-MrLTiYY)&# zY03|;6*3=3yc?dQ?x3uP&E5UHRa*F_K0C0Fbg--pL(cM4VwYD`s8$aggNKRBJXg=X z&fWp4U($BN%NIIIv9fye!oilc1W|MN`ns5R;Vhxh{*OGX39wyLs>+T}NUkh;$v(Im zZ!qDYX}=~UY+&Y&5Yd`8$KADYZ*RZ??J&Uc&kF3`2QCl!pXP3r7{;PdbFSVVo(uJT zT?EIjCxc(@RLx^$TXk};8#fF%2msOcR#uAf`EE?I^!0u0xDyEOOlqM6Yc%YF&$i$iREOo#L2w+ zJP;}X8e@4=OHqv<@O)+M!IgF-x8UoFe)(<62@!Bcxb0?ZnyJC#;dA>3a+#H8`OUr) zy&Ol67lekY{`iCT)*OvCKca!D4sRxRcF($#DeG0IcxHU=s^#|xTV6!hUldaywy z{ruta`bc_?D@8Tmw(7d8k-8P0Ja)O}%T`c7zhYAJ8Z%syCOy7T!I&7(Xxv?stq$t> z9k#qMJ%lqitF!R}c4lbHo{(1qkj^TOsG6_&btS&p=IpYzU=Tdc>09=3Od*%5GLnpa z6%rbkW#S&LFGM%1wk%Mhu5MfqTR!aKv0a14Df0=NJJZ@NmvUKHTb^Fv+FI=u5?;p@ zGgonYcz{tvH1)iyD=}Url%HLX*0M5KSU@q7K#(s3Y7j_oZX!KMVissv_Ix9}SS$P~ z`y}Rv%F!&Xo3d6W$cm6@&!g8{@4xo3FLZpxU#aNLEKD%-K|qS-)BWq71IMn43=VVn z`i{UNdlr{u%7cdg#6hkGvVv3^QpU>C{Rw95D?Q9S`{rKrQdI2B>@#Dfjp>GbXSo+y z5_v6#{;AC=^L26>y0dl|+bn|n%cXPYUd&1lpX>>FFG1Bz;_c@v!S?sV3^%vWSl>a;bSChehjdnb7Mp z<}Q&r5C{K8JA#>O1}S*XGbTep)G=ND${WW!Luvf^PEU*+%j{+~aG$x4>}7iOW`|4n z>lr2bLlJTkX^w|2&P)RBdMl^K*X;1viS@S+0nJ34KU~U-iZY~$F=H}y*L>~@gZ-lO=*hH$f>knTeBHcjm5pzsi( z^AM5qKwKxUC((oK_FxtA>$Hev5cu2@-rvyc#oM%!bVWVKjf6h!066pfYlqFQ&ohJH zUYZMSh*`VW1OVbe%~xSw#doJmAM{{UM4g(_1r|awWD~(9@yl_>FS2pQg+G$=%X4oR z9EcnI=;JU@eb1`>iZfm{yy!b4)f`j4n(Z{FBx>GpFQ4CU%pUjcWlxjw+pjxPE5G@# zIw*_Yjs`YNXpJz~-A50?iaE#kx5pyEox|snS+UQn9ln0%iNLeZ!5#7>JOAvA*KyD) zMI#O9^P!qr^DM%xcS$+k#9bgc@tTk{j_Fi52I#^(Jj;A%8hy-)h>tQP8+YM| zo|PXtc5$`k$}ZD|D&@@4d8JpkwrgFMQpisb_R_wxCX71CSk>)W{2s65@ua@w3=xvg z4{Z#{55D#006j}F7;@`_5Tt*@!pzE?MG z>&j3l46szGIepT~FU<&KA!)ikeM}}cEarObSWNW>>>y9Hq4HYO@)tM8x0%1$;5))h zUOZ_pP0x*a@)INop-p_nH#KNc(dFYSot|Rf*GVUI{wxVCFz}cJ%W`|%28ZfjPy>rP zf{M+v>XFGiE_T{lapkL?xr7s!pz9;}U;x$&2wHoMChE?=Kv z7#A;(B&t-DB=uIPR#_bjPFSLo+ww-r;esGpa!8yB*AIWws$0u+jSekai%EDIrx@Rs z=4oE#pJ*wcC2@FIQ$M|~=vJehR4*FmkmYDA34#`mC+}A5p3j3V(4NfG7TTJM&8Q3ulH!K>T6W_cic{;Kr%qd*A}uUdfOv$T6M`I*iRSJH&s)b_3|7Mc;j?? z`pDkov7ooJK>9I>pB6}c$u5;O9YT787Bmv;F2^0F`DGo_{cW`zOiRv`BBpdBQOO_( zyDQTiTw!t)=u?r=-#xS46@2bHBCEsxri>|A#pW5TlorHrjUE(FzyfI+C&Pum>l53C zgm_w+0BqUs>xBflp*ySR`e;|s33^~#$@cXh54C`S1xE0*Ycgha=x<{R@gmU!YW0SG z+-RQ-RD|f;V~-zgRo}9_e7Y<&oj3aMh46f%dM7{T#6Uu?X`=Jm5eV=l1vDPjKZ0-F z8Rs28iDm@etrvf~a{R&e*AX+;PlFgI$GLmOqP7;ozA;<4Vf>sJ#UM!<=7PU8QQiGg zGJJZRrl@s>N+&swU9NN_!lkn%rJ1ru;ez{6tf|13cF_7MB7a+4_3XC0*Xyr+JvDWm z-G4fmfn8jGB(VAB(otS)v=CzY0;e(u@%HH?Re(~4eX&ch&i!{6Yp&mO7o7U?_HojY zDXHJ@WnQ7ZfIV4N`re}l(Y+bd*9S|Uem3bsUb);ONe|iGa(eangNVFFhV|p|GD;Ww zu*QL(0VoA7ck&ETr{d-aY*bKgF2pxND`Z)pT`wfYM?TDpqlLDvdSG@6az(nOxB{H; z3?Jx%q#OvG3D#4!=3G9R;S-tB<2I*wZ^!*ByoXOeB7Xw%zg-ji?mus3AM|M**BdAG zFE31Fu^=o>@s`=X4Masigq9jT0C)F#>bPFmNxn)orrdk+tp{k_1Z&wVC24YU^x<4$ zhIXh+V=uAoYstZ?ZG1BicwlUG^aHT9j!M&6`|>G=%SKh4CsXoV!m?`_l(q!vow~z0 zm3pauihz`^Ri+Q$o$b8E4Yw8#+6Vc3Gup*aRFzQa;2%AnR-xDG?pE2*VnJKE9FD4f ze{y%2Wze|p!q*W53JU730A z0YFQAQKQU1(~S2ICW&y&l>l#qS&7I?0&6UI`*@r1NYbz-IFVuk>(+kMEGwY>SDMp2 zY2Dt&@m;H&i+&cq56j_T z!@bEN+(vxcPG1kmItuaySX{Nryg$Stqo*OA)BOuQ#?2SB1s39JO&skj3}mOtnuB&h zMZe8l`YR&iH>7rs^pVHI^D_~383)T6FtD5xHxt5*;?o`$*PMVm;);qK&scObFx?Xt zgNRC_v>N*Y59$lNaXX}oUm`~y9ofE_&-u%ZH-LCCgJSJDL#vX6PlEQc%|~@lG~UXD zEG;dYS2;iKvnoa|)8$;4ilJ&Ju5?kr>HFFXrP>nZ)Y`Fl1KXhHJ5y>-8Ajpon7&#w zY5D~9Y@^{Y9cp(^%ONiH6boQ4twO=-cj9%GoIjNHsBm#m>+7q=fh~ulk!=Mi3y90) zzY`M$e{jFtL~BmP+66eZyaZ@mQa!Jm4-c#L3#6)X)ATq2F_uHxe`>hF6&L=yJmmSk z4bPR4@im>vt!!lCc441aaeTqENm}mf$b-;5*{c|Ee{06ms@4Ql;`pPeJj+GeAXPpd z6=;-10$E+y1#&cui)(7`ofEE;ZyzX1LV4GLhT6;wcjf z$uSs8j#qm~@aj6x-J|M~norri`YXko&kVQ%t#ME>ZK1i5I*a|I1Qk4oO~YoT2dpQ% zlAld~@?pDANPqg!;M1F6yztFa0%ba>C3F0bYq^T(B)u+E2gON9zVW?A6ViprGZ*c% z7tVcGBm}`C|iAS)t6+tYWZCqJ-MW zZIKPOUGUnWs-p+1hzr~*T4*nah5Ip{Z(inu&*--xqAnTiI*>eOw|vHT zLme0JWgpJjW_sR2{i>8ALf=aRo}u;fAPgriu9>qix<7|7yE8IkJT0tw4iMbmj4msBE2^SxfaC5fY~bXP!1zUV@h?p`KIj zV$`y**G!Q7XycUAW{MYLc>y+S_%55S+EORcn|?>%V{AyOUFzhdV<1xcF?ji5pOzMO zKJVMn*u1+RFW6ddrVn`ZztV@C($RWZNJwwE?z!vSw`I36L;mIK+YjC2){ZFM8j%WK z>uJiyMt5h)pcU(Mcj<*IGJwCCRk=Zi5p;qYuD*LX$|xl{d2t*cuV=u*)(-4(oQDz& zc2aPvA&?!A|OBCIF1W?%r_syN}MJ6*M{>Ehw>AHL~?BJ0N7YI~{7(!fRe zV_Ie@Ub09tvviZIr8N9p6a`#k=_Qg;4|fw$3oX=Q6~ev7`uOK;^TQdOCd3{)^(=*a zG|H=$pSKBGv;`@FM(9s3Emq9RNusZs)cWB&5dJZiR$ecb^N$s6(()=6P4 zshj)ZlHA3bR-B-9tD)M7{toDuGY>mQ9MflkESA(H>mvGsKd^VaRWjKeRCD=gcfHv) z=0qO*^9ly+Uh1DxTaRq*6{;97*)2DoDra6Xd{JVMytLASeCus@Cb`!%&~1Y?R+csf z_m9gTc8eoLH=knueBbdQAXet)JoR2O7D_yX^EcvQw=YjX^qd2zZkuZT)G2gxzS1h~ zxb4Q^j@8uYf~f3$a=C3kp0u?2+m4A8dj#JxBId>kq2T7lb|j7nwuT{sP4Ob|oAva} z=X96Gz=GP!=9$ckjjj*#zgAl^JTv61PgszH1`7U8jmCj{Oj?fx|5(=b>HG|C$(WAx zSw7h5i3jWkQU2!r$}Q6TLLp8RwJ;KIi)`?Q&sfJa1lTy5uF{6=NH^6?rIrk|Q$8p{?shK6;>q{J6ROeiSh<hC{E}8k&hz7M&=T$b zwjLHkr4AmBFV8jNCk-8^Zs6QUkJ_FOzOw`!T!>2%MOwDM1$L{?ZlO`CKdF)RW>m@F zA0uB4f08sYX*l(Q4!P_fIi&reE~;~f#b|3_+w`+gh|9gP@Z`*k4puYoJSM~+Ri3%H z7)XaKFA!bYAIjx`D>g1+PQW~CHd5-}^9X=W?HcK`o71*crW;(;hWbJycV0SK1lQ@c*R@x*O{Y%kZ}dr- zefCZ=3e&>8?uRAfi_>#%&!0&BKB7-%K={+YDW$?YXBL*)WJz`)Nwii_a4Zm#sHpc` z5oxXJm5e8Q1ozaz&$4E!Bn|9zvi?hMfU2JIHNH<{ZRI_a|B?47Z=7QE2d@m52TZD_ z2HqR1ahjpU*a={bRT!oi5#GcQdcVtGq~$d95JHhIF!Gr-%Mhb+L0nknl@4OntQ82eBUkO?I zep*sDvX#7Y=-_n`f%*CI2jKz@l1uC;!6terbJos49?8{n#Ly54}}25qSQajHt$CuS{-&WnY~{&5&y~v|FBGlR)1yC?+xC({z^wW^P_#_Q{E+a-%S=oY}IB~&(00XkOWWea4IK8^an_r#5n1b4=g{V+ zt+>5e*Pej+Ej1ZiN*{J)+&lYclYJdBtx$UoE{g_$CEiLWxq$-_&x5a;q%+GiLcVOP zAKp<$kBQhSu}mCh-=DvX+%MdoQ3XugS&^Om0GKU<64sHD9E6(0f7rOBkF%iqfVLNF>${-*Sex$f}<2ii(TF|sdZ{n zfpaw=j8hCl&<~R;$0Sy{b#d2`=PPI#I0_9T25yNJtWUw?XMCDHBe zf3RzBXnB3E-7NRYM^Bew>jlzJu{hMgZCqQ@7Mxj}{|2^h=@HaPppJY#X8#GPkf3Q* zuc$Hym(U!6gD14Hm)6`nVuCH3v@sR~b=+haf@Mgu+ejG-;a>T&n4)4K3R$XVqu4jm zE!&gD4Y_QvAvd;)*1*n6nw?B)KVQMRKD>ZL1zKFtIprq5Vk0Xo|Kbqa|LlE-Ip*y+ ziG$@61-$+xj9!4Xb<5YqHEJis5q< z1&USuneZjmCLPH@PqtM+j#tI$lNLbxA&ZUrA%D+UaRq_X{|Tp}ed!I?8IFOKqAfs} zx|Vbz{52`;O;=FPL(lPH#WwxJCzIZs7i|4HoFg)&9FV(I|N77M(#b2S@Wt&tv>sad_n8?V zlI|2;M^TV*eU|h0d3D@GE@r==6T@V@Ywg)E}p56-BJ3V z!mm3e6g@r>NrBjMh0EEAXvi3u2;tCX#jD;SE)|!Vw)f$euDv8%25xpXx~xY~o>6}M zeU@qavFGDj(8MqaAyX|$lv=Gqat({Sd*;W2L-|a9AF!TyvkmV+p-q6`ign81#iJ^6 z2bFJf(q;3>wt%u`t8j(x?mJp^inC7)EZBB9% zcBr8)YNj}l@Pb@LcrhammjJ1HC4i^lM^tuSbS+}PY^IUx#{z z=(Ug?pf1YiiaXw6r!3IvGTL(^QppG#g(|CcGp`zt+$E?w8+&%_fMfaKa#O?WnB|SC zz&WZ}GV5gXBr?meyKY7!uRZnA%e(s>_xLD&!vtNvhmk#XYTxY~$5%dI3Qh$cy8h>H zPw$h*JZd~pGwy}S&LC~ffL$3m$oAs zX(eBx==EOhh_FF{F!n*{bq%XSvH23pu=PHh(F5u0^&~e)X1t!Q&P8WE95@ zW(d_3kEVE2mJ7v8uXVoYBtiF!hZEtrInclhzoN5Z7DO%HtfYo*$>>9*ROx( z95)kw@LTMiEpU0D}pj*BA7uFOsO4vt{BaX?RN#d+WnO;3aNXyzCdg1A(-{93z+ z{?L``P1Nx@C+g`YoHxQ{_eRiQ*4ljU zYz6jEZ1P8EkH;~NSSlVdpH*YH#2V!Rw_KmG- zW;Ncsc4mlr?6}9~=pT^eUg{t36t);qSM@i{W`rW0a<)|RhQoj27cqV4r&K&}{^E%Y zUo;K)8oF1!`grPH1kzAlz!LeNn)V9+h+Sj<;ohrCd}JK?3Sy2c=%=yT+;Gzt{PXjl2ly`n{w9R?>3x7-Wpl<+al#|-W1BSmP0Qb( z|J43}(eyWMyw88@j|wvINS*r)$r2lzNvpaZ2643WoNte%ROE zmv@*Mh`VclQ!-ZWKx7=ZS_8Lbu7vUe3i|Ewbt}e?+WcrCg(4K2+U)k2u>$;E9$6oK z>@%-!E%(f_*Co}x3N#~pc;v>r-)B@A39juIV&z8&;=-|ovhVLjzW#mmo`1rPpPd7; zcAe)8 z{I9W4zf1fCeDitSwVy(?IX~+8Pf|9!Kab`AJ!tB@`QJ08Zs+`3@E3-^#O9Z#{J$~| zvZi&$X%~qlxZ4FW*B{4;ML$r8JDiZ}Li8T?AR2cZ0jj#}!lQTNweCOIvT66*lsdZb zYhH91*p1~yFZbUsMakFgmZ7O5P1Q)XF`5_`aW!+vyq5EZk)0`NcOe;p+zI5!?Y?#WrTrYxj*LBa6&n3HX` z$gyXMJGMKl2cddX1PE$_vBBvkPGG_51-@MoTjtd=sxn4vPKr`F<(hszmnBYLYVnxotDtQ)Z^vh_~KdRE0$b(ZJa5lTi?!`EdgrFHH2P<*j(y9elQ*E@!d2V-bL zl|E9@958dI0*kc*1x&SYplVsr{Z?LBv6_&g8sCax9k&90!DffstMKOIJ%d%=WuT+- zWj9$xm}L+MHVi<5dP^TR4`Yk%s#@(-0a$kx$pP_qQvrERZBIrAq@ zkcS-r*dPN>9S<_ohV3bA>nv4c-zgH%pQZo`C+(@?F$Zbd88FatE5(FJN<}JE%xHR5 z>^ISt3|5sKu5UehtkU_@Cpu@aVNE~2l}Q7@9!0wCP)2C6?2~L`jN1gaZ9ZKz2`NB;6M{JcEg{0@&=>a3hcn$=NP0A;xqsXpmM)MEi z%kC|zk+Gt=c2Z%0R-@8LkR9xci>~p#3>PUt`9Lg6mD>W%ye;7t{t2G~w$U<7sSL|6 zI|@LbqL-q2p|N3TSGx*~r|q4?KHKsru5z>La{BKvQultoUw)jpr=ml z&(qyRHLb`(#>=ZBB^^OE0lv-gPM{-QFWi~={$<7&Q#36TQxsJO-q2JU2Ow2hKt>BI zDl@QRX3*}B#sN1j@aFl06D4v>gscwnK zds0fW?+}Zo$^rYOnU0M|cYs=#g&iBMJTyI|1|P;aU}y2ZMP^^Dl!wx!aL~a7?A}ZL zn?!3&IJH;rUe38z^*ir;YaVsqf;v>Sd2zl~>SQ-ssm&^Z@K^xC&4pse?xBqpnZya{ z8s9azFnmW?!8S1l8-r!e*1%{9s{xC-%&<~Ob}0Fi8YL>$VW6(C-O52nwko#cyDw~H zMzkp0&6LSL-aVu0jVC;PePdyP8>=#I608cwe4ZV|HwMg*Z;5(kLdMpHB#-X^{=2;f**g_;PADC}i9S z)bEdUIPbwnnBse{ugkl^u#*;H49JzTNYDRbu!|xh^N|0EK}d%@=u3enV0*C~Y~a|L z(Q5wNr4T8FNaI+l;Z8|2 zoI&j}Jb>-4CgfB^K~$=xv$NV1wa)*18R&qK@wR!W5QMhS=2+H0S~g?t zK6?*Em6vu##<{ARhhW(Oh`kZTKN@|1PKv#p%cGSByr3pC*yn*$+{lt$_uL&B`0VG@ z*$5*Z67AH}$JbM~tJod@BBS4MH`CT57S2Ja8TJTl(D-^@T(MFsZF{l46gYt{<%M(*BNi9d;RVpmyGHFXn9oFz6V$nHwzL1GoewHp#oGUJ3I#REa3&6RKW4B@+q%KFls^0a_6*t z;rEhV;e+Ylg^~5swN_u9zWVd>8`*;aCbzb)Dws>GI+|;)#+qB?7x&qC6yFW#q>2?> zv*1yBzF)IFH(w3dJ~4N!*pQYt#aV`}W&A!2F94etfKji&HX4$2Ut2e~%tU{$fmK^! z7l)V2t3@JRy0*f*6?lw2u^a?=h)`8LPGDlw^k&}fGT)#7wC|e7SxiEj{!C7kxnYb6 zjbadU6FFU{+}B;Qn$Eu|Q+>dk1UJ$?)0hF&v$w{CKQD_f1z5>$7#d2W79!HpQ~=51 z-wlYM+UInN^VN z1^0kWXk7~C;Npu49H^M zwdK7vI%E&?x-YrWV}5!O`^>V%-dtW0QR6p~%zscIt8z#D-hZqfHu>%^y0gtJB=VE{ zj69@OlHyb_$#E(wNTAU1t`eSj%?*oN-fceQi9cr&sC4IecQJ^kP|Oyc2}i(VRVIp1pGwUv6|1lpFaIG~f-rpD9g^(JmZ_HpB9st%k9 zHws5AC*(YEEZ4p6Ly(28#|xcrVJ*Sr|1}AqU%f(ZnCvUA`Tk?3iF{_33NU)gf}B?_ z{j+A4)av~apEqX%QFVdQ I&MBb@0Q0uX3;+NC diff --git a/requirements-ci.txt b/requirements-ci.txt index c924b6a26..ce287f52d 100644 --- a/requirements-ci.txt +++ b/requirements-ci.txt @@ -1,4 +1,4 @@ -numpy==1.23.5 +numpy==1.24.3 opencv-python==4.8.0.74 onnx==1.14.0 insightface==0.7.3 @@ -6,10 +6,8 @@ psutil==5.9.5 tk==0.1.0 customtkinter==5.2.0 tkinterdnd2==0.3.0 -torch==2.0.1 -torchvision==0.15.2 onnxruntime==1.15.0 tensorflow==2.13.0 opennsfw2==0.10.2 protobuf==4.23.4 -tqdm==4.65.0 \ No newline at end of file +tqdm==4.65.0 diff --git a/requirements.txt b/requirements.txt index ae21038f2..9f289fda3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ --extra-index-url https://download.pytorch.org/whl/cu118 -numpy==1.23.5 +numpy==1.24.3 opencv-python==4.8.0.74 onnx==1.14.0 insightface==0.7.3 @@ -10,10 +10,6 @@ customtkinter==5.2.0 tkinterdnd2==0.3.0; sys_platform != 'darwin' and platform_machine != 'arm64' tkinterdnd2-universal==1.7.3; sys_platform == 'darwin' and platform_machine == 'arm64' pillow==10.0.0 -torch==2.0.1+cu118; sys_platform != 'darwin' -torch==2.0.1; sys_platform == 'darwin' -torchvision==0.15.2+cu118; sys_platform != 'darwin' -torchvision==0.15.2; sys_platform == 'darwin' onnxruntime==1.15.1; python_version != '3.9' and sys_platform == 'darwin' and platform_machine != 'arm64' onnxruntime-coreml==1.13.1; python_version == '3.9' and sys_platform == 'darwin' and platform_machine != 'arm64' onnxruntime-silicon==1.13.1; sys_platform == 'darwin' and platform_machine == 'arm64' @@ -22,4 +18,4 @@ tensorflow==2.13.0 opennsfw2==0.10.2 protobuf==4.23.4 tqdm==4.65.0 -gfpgan==1.3.8 \ No newline at end of file +gfpgan==1.3.8 diff --git a/roop/core.py b/roop/core.py index 1843545cc..7e5a46fbd 100755 --- a/roop/core.py +++ b/roop/core.py @@ -13,12 +13,8 @@ import signal import shutil import argparse -import torch import onnxruntime -if not 'CUDAExecutionProvider' in onnxruntime.get_available_providers(): - del torch import tensorflow - import roop.globals import roop.metadata import roop.ui as ui diff --git a/roop/metadata.py b/roop/metadata.py index 03f321bc2..aea9e16d8 100644 --- a/roop/metadata.py +++ b/roop/metadata.py @@ -1,2 +1,2 @@ name = 'roop' -version = '1.3.1' +version = '1.3.2'