From da0cb6b3c5216dfb3febc6df06809d95e511996b Mon Sep 17 00:00:00 2001 From: deeplow Date: Tue, 3 Jan 2023 14:06:27 +0000 Subject: [PATCH] Add dummy isolation provider to CLI When enabled, the conversion part does nothing but print some simulated output. This can be useful for testing non-conversion code (e.g. GUI). Activated with the hidden flag --unsafe-dummy-conversion. --- dangerzone/cli.py | 10 +++++++++- dangerzone/gui/logic.py | 4 ++-- dangerzone/logic.py | 8 ++++---- share/dummy_document.pdf | Bin 0 -> 44220 bytes tests/test_cli.py | 15 +++++++++++++++ 5 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 share/dummy_document.pdf diff --git a/dangerzone/cli.py b/dangerzone/cli.py index 190be6a..d96c7a8 100644 --- a/dangerzone/cli.py +++ b/dangerzone/cli.py @@ -33,6 +33,9 @@ def print_header(s: str) -> None: flag_value=True, help=f"Archives the unsafe version in a subdirectory named '{ARCHIVE_SUBDIR}'", ) +@click.option( + "--unsafe-dummy-conversion", "dummy_conversion", flag_value=True, hidden=True +) @click.argument( "filenames", required=True, @@ -47,9 +50,14 @@ def cli_main( ocr_lang: Optional[str], filenames: List[str], archive: bool, + dummy_conversion: bool, ) -> None: setup_logging() - dangerzone = DangerzoneCore() + + if getattr(sys, "dangerzone_dev", False) and dummy_conversion: + dangerzone = DangerzoneCore(Dummy()) + else: + dangerzone = DangerzoneCore(Container()) display_banner() if len(filenames) == 1 and output_filename: diff --git a/dangerzone/gui/logic.py b/dangerzone/gui/logic.py index 0ca19f8..82ec89e 100644 --- a/dangerzone/gui/logic.py +++ b/dangerzone/gui/logic.py @@ -13,7 +13,7 @@ from PySide2 import QtCore, QtGui, QtWidgets if platform.system() == "Linux": from xdg.DesktopEntry import DesktopEntry -from ..isolation_provider.base import IsolationProvider +from ..isolation_provider.container import Container from ..logic import DangerzoneCore from ..settings import Settings from ..util import get_resource_path @@ -27,7 +27,7 @@ class DangerzoneGui(DangerzoneCore): """ def __init__(self, app: QtWidgets.QApplication) -> None: - super().__init__() + super().__init__(isolation_provider=Container()) # Qt app self.app = app diff --git a/dangerzone/logic.py b/dangerzone/logic.py index d7e8187..db6b1e1 100644 --- a/dangerzone/logic.py +++ b/dangerzone/logic.py @@ -12,9 +12,9 @@ from typing import Callable, List, Optional import appdirs import colorama -from . import errors, isolation_provider +from . import errors from .document import Document -from .isolation_provider.container import Container +from .isolation_provider.base import IsolationProvider from .settings import Settings from .util import get_resource_path @@ -26,7 +26,7 @@ class DangerzoneCore(object): Singleton of shared state / functionality throughout the app """ - def __init__(self) -> None: + def __init__(self, isolation_provider: IsolationProvider) -> None: # Initialize terminal colors colorama.init(autoreset=True) @@ -42,7 +42,7 @@ class DangerzoneCore(object): self.documents: List[Document] = [] - self.isolation_provider = Container() + self.isolation_provider = isolation_provider def add_document_from_filename( self, diff --git a/share/dummy_document.pdf b/share/dummy_document.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8a046cdcd153cf81cfdf1a70f96c7e8b6e5984ca GIT binary patch literal 44220 zcmcG$1yo(T)-bwpcX#*V?(S0D-CZ}u9g4eavEuGl+?}GuiWa9(C=`F2_MUsr{qFbP zcyEmVE!)YIWF~WFCMzr1RLT-kjI2yt@KgiE16>0x10UeoNLfgoOl{!>1eg^p9Ib%X zr0gJwDzlW0JZdBVNMJ-pU$WL4%LKZq#8-x%lR$=Ym#SND?`MBR&DfRHf_q_ zeF6buSpAj=xU}>c3RNTuzH8hH5?0gxf^(j6ha*-^Zqssp+f)Gsp4L#rw+C?LUu*9o zx)o=BPW+e?VE#5b7!k!d2KR~c9oecXEV&xI!qLf?fIkn^%FFxR09}1*`8`tXlX`iV zS^e#oPRv$0vQ+f!jFlbV>Aik(vFxbu-Zr@C9dGJk>{R*nj$Pg=ViyD=_U~9@^`2ak zCpT}pEgmY)gP-{?k)25RRwfB_ac9xS&*zuq*!502@w-|VkZ@r)tCR`ba4w92!o*iVYX$Sglf3B~8#Wi8Zbd#* z4h!o)E~`sIeb5o}wnAGBihRf;LO@dB(<)d>b<$l>gF-c+MKKZ7qyIr%$di#3lFo5% zeU(YVbEmi3arShLy!@@z()((^VM?sv#Ou3HXaJh*9W}g#qxrv-3ktp31N^HQyaqV9 zxL&cpVH|%Oi@KMy1+(^BQ(Fr&AhVjgDeyHe>tJGK!K`It4l*N778X)w84DXLYv7-- zm<`ZP*}_%a$-&vl(ZUf(%0tR5?qu)es^)BBX2C3B@y^D~LRDJqFVm9{SN~&pe;Fn# z2PYQ?DYKfQiJKiM=c|>H{%w;lD=%9BR5>YGDF7H47(fPe0$$bt;s6M6@Yf4;K!PqP zSSTn+NGNz17-(2Tctk`5cmxC_WOP&{WHe+11XOHPGz?5EEG$G699(QnTy#t<%-2M~ zAV55jP;gLCaF|F4NSObhkC%P`8Z6i~*fj(gIRG3D3<3@8We`9J00V$T0|WehK*NB+ zf}{ioVF^IR03rX0g@OhHhk=B6Sp^`1xWG{%Pyqn2MUlVR{||-0@cQ(Qj zV3+=SNR*S6Tp;h$``^-MUpwA-76yLb;GL02`7p~?WLw?6SlNs*i1Bmwzv-c6g=QqE z)tTO-&Wiv7XY%5OvP)6pk|%|vmv{b)8Y~+brs-lnZ?@nXwHE-0w>{sUOY?44WxTHY zpR^D()ipPY^NVM0c^Skc&Hw;J!B?l6A|Nv#dy$&}ic{eKWMB_iTw~X1-cvgl0inPy zE7xQZvqG2BTzn7m{|Bv~-{q=MfJOlgZ>thY`ob#~g3-H{YebVd=b?<+xc5Kl1(C{Y z8Tk}X8E!}cgkG+E>uYv5oTF^GfKo>$5~t|5h6mwucWKb8|G@=qK3AO z27vEykyQ{k2|Wu)uAet^lCR%sUKO3ewdv}g3R!X11jHr`&@!j4M#XG(bd zxRbZWk4{#3*9kGn05FXE$Nahe4JD*&0OW_!&LZ;%UWPQ|K9U5X9zlVf=8C+;NftpN z<$olBxQ>;#D5Cu!mgo%t@Em^m=w?zAS|tMDlt8NqW34{^Xc=xTWZrOUy zz3?B*cvSd)jQrdOC)vP@ANPS^v)>nj0N(d!r)z`)i+0vtf+7Hj_{1FB zE+4bzi9$DDINX1zbb3O=2T8pRN_7!`0-lp?MdfT4j=J)}Y#004<#z)hiF-Si8$X(8|r^R&z6@chZu^tIPl zS=b{|fbSFVW-03jqrP@!s_y*osz#+a-jH#lzucU;q<;?yq<2?7ShjejasOLL%9Ym) zFxLEpyaSfo>ADjq>jVv1ekY5#nVL4UbVeeU?fxg5yF&Z%IR9?+i(Z;fcB;hIq@@GD z5nGGZRYB9Db_t){E?xl;!bV(9ALgy(l|Z$-d-IzHCb_#g#)+qO9^&Xq?iUkmyHjo9 zCo{y~IKYGfsh&Y4_q5Lv21_6a1a|14=wqYmWMWkRn*c1SzJXRpJFl%yi}*Xz3=!4s zwAP!x8j;^ffLb~UO6yQ*tw;ai;{=2Q2*^$sb2_QtRe5-@fytWin~E)D@p&ZPuIv*r zL(#$Y{`b^u5xcrS`~Wb>WyaBEJqs}aqXsGf0QWp3@v-X#P!y{0hXP!XtlX~~H{NV# zCpYlmCTgk-WZM7Y1yCe$FYlM)=84=}G4ixU8V)oeMFs@y31`sy_iSFm0HdyrXvy7o+eKkIJ)|m zPx%+~1*hTBM<*a59LONR9sG_11Ozs>$|A8W7i}xgXR_ycMC)tji!ty9FTwkSM1#AJcqXnF-$0;)7$y*VI{KBM$tccjv~--y)hS$@63UI`113YwtpP)RfK$*0R0Z^{kpld2Zfz~ zbx$hH`M@VrHTOy)G~?Yi-U!F9{EORU9pwV#0|}at?{VnL2C;=2F62#uDaT_)@0{e zG@Cz@9X-%ZPFDQ1V{lUcYhu6ympJR|hUxZ$%v13EsSwe3cOx@GjNR1mGYLT^e2Ur+ z4bI_4?8dk?TTj*ZtwD3|n0N;bn(w*r)Wao^KqbaQLr!8E#FhU*&S5TLHo=2(EpzS3 z5|DI5=<=pT%(Qg;N{ne|5UFnE*{vWyRJNWlh+#H1xIxWySc2yPj~8WWnvdpCY1*0O z+-i24>|Q$?<6{Y?mVw&&T_DC1f77mwd!rd9X}B;khU=bcHW@!29&*XsjJ{(Esx%d% z>aH$fSCW~b(02uE&=K!``P(;?BgYa4&9%DL6P3ktqoAzQoEp9WDsexoQ+ows%r$p; zYDCBBGKIOW+PrPUHI;~88Iu8CK3>iVyZ*v!^Ur$A42^Q-W^$WMl$n&u^)?|Wii!+Y z-g*l)G??X^q&}TM;;g2WxlDC`Y<+UV9rHAujdJ#aTBWK|wLDid$LhirgW6=Z3R|;6 z$0FM?mn5Is=$)^?Rl*Cv%r}QrSdqXuW=$lbd1LVcACy0-s#Ig$iL6&61tw)U$*ZlQ zzm^aTxxokwwlfNzd|+)Aq#;^DJH1<9b752C?*iUtiHLM3xLCP{rt!!=jr9__(eDX0clBo zJ0*Qi^a7bm!oZ=aDUK{Cf)VUSi)dp-g)o=aml8RAVBFF#{#g=1hbGekZFSd*thFv- zgP)K)S01tZN3q~9eBOTMp_p|p&+lxJNO-sf>^GO&I4q)c4HyIC)P62609504!C%VR zfg?0bNb6e;x?dS~O-@MzP^-FI+$Ey+Mn>Z8-3Ytdxa~hQzK=PHazUOvf|*BTk}n)4 zwIiGibaKaOjE*@AZp);cE_8D!KY)ajS!(|h*d17##|lM>=t4c##M5){H(PKj*zIos z#tz}N^#V9|Vap8Y3_+MHoh5kz;LO0h0Nmbx)PW=9J0H8Ic>xSv5%Kml!c5!8C}Exb zXf2#ldQ_{A+mnOc+PRc#J*^E`jInen_&9=je52##vL2QvYtqt_K(RSx1)-%osbMGT zUJbR>jHA0^U}utAJ*?S=r@Q4~SJ3Qx;a+JNU+pW@d=0-m%U~o@?FZd_jlVowY1CgG z0N?z`*YXN@#ToWidkZyR+%FfMfH*+G!#}}FD+(t&D+mTX#A;in=KPK&(-WPjYIFML zgo-8dio1kL)vLLiQsIO|3+&NvI6Y4RAlJ)*26DY%&=4>n?+fwUw}ZX9UMMtl3{qB1 z7Ex3zGBy!aHFA|83NZ;2N^xW7#NSRB^`Ah=H{t_m$FkV4ZzI#v}M#!xfEt;GcX#C{_n9bvSaXe+*>Gx&kcPrwq3 zYIfD8@N?O(s4h|cnqqpeMg{!c2MQDLJSp~9!C@Qf@<|haigirThCMO ze5MP0MwoLv)7mNtP1E7=s$1!EP9!Fi;q9*ttKlAZu#fjF%-ryeI~P?!%QfMINTg+- zm-JOs=HR((>nlxGL0*dreq|vI3-9x4hc^R0wO!`;icQ`#r$t;Au6b7%c|zc-bE#xK z24~maxgdf=`C=%In@Wa)Wr)oj)oI%I6N#_8t0}2DbY-W|XdVWX;7pv>lG}z91#7d~ z^}-3Y!9FycJ@MH)zf3H{#e+>2avVoG?Rwj># z3H^CeptZ3r7kWQUp%3xZcFXWV3)Bs-=0u&y4i*#=%J-;vuZ!u+inVYu@fCLH2~^?} zb6VA!w9?PL`w2Z_&y)UKc*oTwL{??9?rK(7jto7&lxg!OpDQ<<$`%$%Do4jfQo4aq zVW!$gbG=fN1o@ou?k)Lfc+#e8t3ajbI&ClCjYM>g3xh5Acd&^}Jhn{6EM3gk5-eH{ z?&MwmhyuaKQ_k%|7qo}2yjGJE5}m)TDZc;`;-@RwxRD5r+P|iOObr(W7HU-xRh{U1afDPj7Eq#~xF^W+xmI8vcv zWcRsN>^;2+EcQB{#*Rv`%Jz)%f0ZQKNorpihyl%>`}BcM30g!1dsrhKJHP5xY!@?yG6diZ7W|%Yq+>ag>O=A z29-|A-_2=#?(KXibb0~gzW_kZnDb9F22D_aCOH1ljL|VLNm{T01D!<#m`Vc0<&4C+WxehE~5{S9mf}!%q1!=JEJq``#DVD9?jikA4L-RHYc4XpT<~Yi-1w#@DvQh=ZhjR3Kcxu7OP=ulL(cahpX>C5 zY0GV$Vuwe<;u#_)D$h=D%73^qW6YPlPcTpxDW)VNqmXFFmF?gbVrVSibM~Pi#gL;p9m`AiO{BJx34__)4HF|{akUbZX<^_kEA-n20|{syR!7~x3c@D5njxY%e%gIH=`{ZZkY5WLx~;xa}u*|kh-x$(xM_SM#(e5CA8 z17n%=FMzWmjd*EL4u`QmgT*`6J%2GwR?UAKq*3jtuC9eQCVJoPv}jR*#!d}8 z9cne@`>B;~V{&p+b21_hWEB1SRl>8eC;l3l%xsH`zT$~?@=_1lBN?w&V1O%uu>OA9%2y}L7<$9ID+!M>x!yrqn}=u z%MefH_zgCFq;bg4IWnlFl%NIGB<0G|B)SoV@W>l3aeA9L`jZlito0&KZ~Al#InnF4 z_$=n}2}^QsO`aL3XzG@v-kMa!ywggTJFR6( z{bFdq(9qQaLfeDTUkp<0@5J|B*>vax-#4iGAerw43st~G68=DLM95YR6 zFW@m!+L7ZvyD<=7(_(eVCLy_L6bn;{ zsq5tRloVHSTzhi&%6)=EcUpIwmO5$NI8B{kUBV?MM6*4)X&e^`JYgNu21i9QwBX#t zi8=_oTsDbQc3fw4TatG0Xz?vboWJiBj4E|UvwMlVz~{H6B1!9xO#TvUFvfRH*fI} z@*yGmFY3-pvY0g0O6b?HEf0kzRu#L%SG+Jm!KsK?@UZ-eNckp=QpRNMd=8jpmz;u0 z$SSJ>P;$D`JD#xeijhel^yRa0<7PWk+p(CPm09&JS8dgs@sbjGSz0w(`g+wNiNI3(%$><&m7Ill(=k!PDwV3(EC~gygeJqt4rKyTTjKslJfJ!QP(xU}H4RC&+pz_Q zf@_xBB4f-q{>TBQvzo8;fZKoBmg&CJqa4KBHiu+&z1e`597*bu% ziKb^o>D;W#dds#ll~PQW8w^HSq@5Y{8A7|!bX&Pk2o_KEuQN^t7fbVEB@-v6MPEU$ zDjVK!;HuOz`ACvq_%kapJdKc94l}LUiEPUGy(WZ|*O1^6f>_GY)$ySi%6ct&Q!e_@ zJ`xtP&rjfu?MJIj5Pwe-{Q5?F`Hf}s1YWEcab4P)%}3gG@7{roT1TW*xbzm*qv{KN~R z=C_j4KYif*RAiH-^pmdb48Qeb8{3;KW(`>tb}(6%QvMc7gR)5RU4{+W^JSj?GU^nD zpfIlb;3m9?MFNuoz9mc4_1sQW#$7+TEY*~hignn}g5UV062G#3=BRn3kUQw-nD(Vm zXq&Gc7c9`PKch)PU-4*C!N{V{UREekrfY^3?#>rVunvgsp{T%fDvXmeQ@;{Zbz z@EMLr(Uvn(qH&>dxQ|+OHX$>EjBr)zgrd_zE2ruK=KOX>Y?1(5zYL!9xnB-HL%t(M z)cIAvZ5DYh$dcT(Ua-XO7Xy{piqAGWo3%^y_$Cf6#mY()U>vfd zo%y*%9U8Om9NM&!NujN$gh=^DL4v2h3iG4Bq$vR(<}Qz8U`k|QK9UN$i(SeGlq#;T zJDwso^*f#?21TY`;+T;wv4u4z_EhwE?z=qxx|MMr_HV-%(y}qi9w{0nX}W6o4s2II znk08TTBQ$(!sB9{iJQ`Jv#Le)lXa*MZI>(l?bf|dOH2wN^gJuGK$ukGCA3`B_q>%J<|?-pvgDVh^D`=S=Bs(& zmH4n(Anc-BsjB|8@0%}lF_8`PWu5Ko&#cg=A=@yiKsuIoU;(dW=4{9YL6pvOqw;z| z)t;|OySPpzv6e0Hoc-E|I$6Hhe~}(u)+KB;vEf&LatGEBzw~z30ZYqX>1UD$aSpMx z#?X&=W1ON6RRv=G$sESr;}(=2rG2a^Np0~RqA`w(JzaT;C0b;$^zDc?8lz@1-7+(7 zN$l%;F$cWl%U%?lKP2N_UjVEbcaKF?*87B@$H%`P#Nt)fMn8zm#6a%~C-^vz;o7r3 zdwjz|FMv>M;$QBu5MN<`10r7lWJ?^X@vo0KmH&r_>nrx(55bGadb^?@Qa(9}#YU7i zTBBwPHRAYgqh?B8h(4lwtYaHneR!8N9APiL-KS%2Q)>&T)hB{ zU*FUjK%)jQNLZNH51W4uFf;%et0;?ziit~5;svU5L4DucCFyqHU$dmbWG?{uX$5-f zV4o)lX2^8ZdcP!3Y+-U3u==4TE_h!iFf~&l!*w0d>23C4%OwP}>hW`hBwR~jV%rL@pi`{YOdBcVJ?=gD!R0&F)IV6p(Lm{i%u(dvGxNUiG?!$S8TZ-@X1@Wi=z{5DV z)ZgCiE}F;As+4)Y)1B?wsfL_pejj~C%hHQW3;tm-@DK_LYVyrW%7=2UTg(MHr|`aY-@pN{0|C7Jpb_%bUti9o+1;YA;N> zT!;zM;g7vYwOT7f(IoyMQ0RR?`)V zcePf36L*)BkxFkEV3{Tc?HjES^htmWMZ6wsuek)eZk417G%E$Rmqv$KapIPrXfsq0 z%V&sI{AyV=AqhdSTv~8I)GKPlv_WvZIsS$)w1IHDr&)~_8o2UkmL zg-2K`cZA1D4jUK*bdov@t;%eu{r6q!sNjXL)bn)EP^Y!=IEn7oguT^~IU&^jPYc{^ z9Ft)X+xVY^F^ze%t4tml5R90?90C+QI>&NoOuyhkF%^#;!u;ii%-X4|ollBlvhcWmBbdoz}D@t_F_#%SA zC;~A|V#v9*zr@lP^`j!Mqq%fc#I#h8n=s29iLr>%CRiOny#MkOwni-$_xXVBuH5VK5Lcy95{2WRU`ai9sm&8R@Kl%&+xy9VYXIB2GH>U`sq;X zCTKbe0qOaJCwFi>)tU$yaPLJ>!OJS@F+*A*&D=#@eCqlQ6F-;brbxLG|1ecAe-u{9 zOAOrO1z@RX!YPMC?1Jlv)%ZrlvbPR*%qPQW%S*BiE|M}H6wLSRFq`{?opJ<{(%<2O zm4*a<=AWd^Rd_H{=d;$?8}^eIB6Sf*iQ$BNo|zAB~Y-X|Fm2%h<;_D1-VA7JT$Q@dOe zbRxvM%c2q(U|naUYv5(oe|KkNP5L? zV|YA(JbP_ku&fXn(Tq#cdL0e6!3=Sc?{lH~Pz;R6Z>M)zm110$|@jl@ap%&AP$f+QL0+cTg+pTd*+BND-xZD$y@ zC*g%7si`ARU?)`*w~JT>3V=B&CQOZbU>;#%{xE)Vb2r% zNE>i%pN*_Ok=}dj6g<54B~d`?Si-B7)_VKo>kHuF0z8zB;w*xBFhKDZ={n}kFn8v^i{pYl+=ruaA`@Z*E< z3*i2rOh}*s3MiBB0=IAfEa1La@&{%C!T-u)JEn))x^7r?*J^#QM-o{nAQ$EyL5xUc8) zqVFHE4*n(w8J+JH%D)JHM_x1kE%M()XOGFhE9EZ;!|!B3UxofYZ%`=yUA#Zg$7N7T zWB*S16?kR+{5QwnArRfrZ*l(ueQ*5_wm;x*qdyh@7tsqK_Uqr_zeCR`0+(NV{*Isg zN78@8AHND*^|dYAdrug84G;<3u0KB*_)Q2t_PkcW|G(GkNEQt=f`x>Dfdc%s>J1El z1{%q#n2@rFxCHghp(Yk=UmDk6{F$PD{nUi|tl!Xo-@qP{I-SHXysm_rPNh7Zz8u@S zxJ=q5LnVTu$}3+GvVAqQNfj1#Xl#$xMEpe%7s^)tdo7k!y@5XRgQ{rnUfUc5-kxlsRtNr&wn8Zxn*l}{||N)V_EgD0M?NX{0OiP7K!!BRW7QFu|- zJ03i?cIgGTyC$Ms2$q!7)ZXjKFqDno!09NH(_upi9S5oaE0j)}wQo8Gzx0`pBWxY_ z*_^XvMhCji)E4*RzY}cZBF*aS&@!~|&@)|-zE|;XHI4AdDclTQ?|-X3f+x)m6Pz7q zSi3Z3@p1jR1x0&kG&qcOrL_G%Ks=?Wk8CZNB}i?lTR$G0|psv6^oz3e%T1R;2?~G*yq4uN$L7L8hXlvn%C(Aw*Gb zlFhyZSypQ!!@HVl1l*-uDfGRg$!goJuurVkDGe$ZO*HotipX(LlpT zQYNQej^b{FYlGEk8~7mgX{Vxyrf)73zlj@Z?8J1_g)~jqs106&rJU-=kEnLSXLjY- z+zY7iiUK2?;l~`&NB-_mZ)!q07j2nJI6Qs)P8&bRFuN*H*6yN8H zfsaSyutB67>u6j)_ccJPhkwR_0Z!)toqvSQo@r)&K!`&AYKKEui2NPN2ehKQOMITW;W!Q#W1&moQR!o1vuhOAhwzNY z@Qj8}P|p!WX_h_W$aPUpk0^h&8we=af3K1OtsF&TB_#tj92U?UU_sy9HmXSd#pORf z?V!E@^f6_d&Rs*fDWcaSvAJT-^_%9;7k7fP!_$b{E0?!A(6WF(1=Z5mvr6DeW>|r`&2iDXgE~9yZ-f4Crb^Bx ze=QBEY8Pdi-up=TllLGYCRxD_;g=}Ud`{jA_kvQQz?BeYvciE$O%+y3=Nkw4an7LBRR$ zR=L$OB7|c$aLI$W=}^aAkR60F_}Pg7$8O#E%Ji3$miR<{57S*Zy+f_qr|4AP6*hM5 zKHHAA6=zN$h3IH34(+^aC|n_BKcd@DGx+h$j1O%C+Z+nJO&ppyZUa~Fm5`Zv;T|S3 zS(>N%Pr3=3>9<7F{H#_9hQ05j-{+kelk=h?%W%X>(=NH1{fv+3E?-~C=Iq3&-(0<< z%*1V27#sW|Pl6$uPBJ{fqD4@D^6Rdr`d7QPUEc6LODm7y2R(eLpFF5DiqxkH3p$eI z;6~usJzC7pooGNqYJ~ET1B0;rgOejAAG&>d?(S|H_!q!iFEPpmXT-m88vxa`#E_qfG&QU_0bZl!*j`vLT578LuL_pgfr=IjFXbDg1_qV?AYO_dy##8PE&r z_g<$@Kv0V-(vBbwu)Mak~)<3{g0>uNK4bs#@piIBMJKxlyt}@KM66InyFo-}Iy!J-Q9O=Wh$3>JYNWwnXXX9AWY8Nz z3gMY@+Xrp6-4D8lHihbZHkXe8jdpe0qsKBbB(nWh0-FXrWq=6+HD#7Mvm5|xh=N>) zXr^gZE`4$O_h!IEl=WE%Mu;LRSPB}`u{pd#CqRJ(tg$F;pst<%(Gj4fnGJwXvy)1(h3B^s0RAyCH6ygnFP?E75@%c+ z^QUs=44gV4Y=JJm#v3=lp3*FgYlPXbMT0^xOlaAMRx$4UV73e`|K3lR9Vlzbf#YX7 zTDCuv;J7E4Cl^4@zt!q&u$oYYj-fmp18QY=88a533N{)gNfhmRH<7}CqafzjAS~%w z5@?i|xTTvPXbcPJ^#+4a8Gr~E5g&ysmN_{yd*dcaAXUZ!urSc5G_RUq^<>>+dO}4H z>u)GAK#y*NebCeBng{aUKn4Wf3j}t@UU=FMOE@;3fMdbE0GyvHV1^vmXp9+FYzgvH z5F_*?eecEk5|z(8w*wY^7B(J46b~8q1|}F+lp;G&0rY+JLu*IbK5<)2xgFOonSna*Mq2Eqm+0}j8Qn^qGG#&{Xh+uDsSe*Iz; zP4)QsYOPd=mX3+1$9ciN>;(X!Dta#Y01t7TOxFuFCHs(*8l6(|CGyF#U?7`*Se4rx z3d8;>Q-o=Ctu!A!C`1^vGAt6Fd1B(t2)NduV=f+X>YIwIxmaIE;n5cW_rNt}iWLJc z%@;&C)QBKY|FIZNZY5k6FQR$okV0iFW3Hubo@}E#n7%n#PtILyqlvz~q6B47?UKli zLi>Ypa|g?vwqSl>+ObyNMk9a!)pQZjq~<*E&USI1cKmWG4!}7#zL3<7{CRudeU655 zA04rqXEjWZ3vR4wwbj2lOM)@9HPR(jr+8!~sRn-62h0JxtBa4)2@ptCZkfa+yfx$Q z4aT`W9s?#WOMN1COY)}kP;u@QB9TFas6Wh1%DSCe6rx^e(2eX3c;^k&ceIXg&x~NH zs|_`ahu`hxq4h3$TBZ7Ls1L1reTfZ|`@=lg@5&rlsN(CsXji)Ppj#&LC=2oD;@06! zd<>bmkgqVeVOsnUw*l*g-92)L*tPO481@Y?Tyvg`oRB<~!wV&4DmtN3`S#};gV(J{ zu(^pcxBDXIJ^_FfBJglP5lXYaXXv2=n?^Y;`_@=EsNjts!2cw5ZGiw;weB0m8^8n$ zTXCq%Nh0(rYcM6Ml+sXgA)yc7e#Q5Ou~sTIXbwxJl>6w|H%gXVOILZeWEP$WU8O zot_~(^6@UVAi)kLuP4~kHvt0bvbgUt9Z2QKh$8OG$?+F5N$MDO3h@W*EnKTAo4vWe zyJ&f=G2JTh;pkgYR#nIypVM0Ve5*4xnz^36+E<3l9(z87VVDxN5U7Cah(NYAIWK@7 zfgP~vWor_Loot!aKw%cUFXTGzzhi3{22YGAbvv49Vv$f@HwsqU+CLl_m37_Tbuy_+ zR|vK6_k$Z5^DsI)E}ko{Po3!uC%(VO@ocqHko)LILHr!Z>Y2G2F~p2)ruU`@-iuxKt{~6= z5{&IS>}32sMR5_hbO`a=07*eXTtKQ{Imbr|J*Rgkorhq`2Gz3pQ$-(kr}^p)X(K}) zwA2lu51AWVT`8SoCG_UJifyf}b7}xsp7_md`C(tXBySJj~@iR-SI2F%uHf?>!5jt=UWf}5+Fhx zF*h-J&~Fg}K8{$98K=}GN%I~cR|6=pjAERf=rbE{J>t1FvoOk%xFAvdmHXM~DZbtp z+W57pNf(QerszB+89<7RmsTa+6h;4l-19;75`0dWfM(|ECJ8Q<(6BIgLj85krRm$% zAy`IfPYVt4c@G;l=D|bVoS?)G(*}s3N8K^U4Y4$~0)K-aytN9!L_KFDlys+DKeqC# z^KcN|44EX;pY7uEUc$qmMq}b=ij;M$=h5k6LR6l8o?SbcvnxF=O|NeMh(=l3nHu?L z3K?FQCGs!|Ng3a;jqsQO!3856X#gEp*L{$2=+^89Bo7Zu8XZrvXuzV=$H-4a5^Mk_ zy0Atscah%wURc1EAXUOvN#4LW66U3yo2ktgfYj<^FPi4T4de00Yh)$~OKk)M7PkE4 z8QF6Va1CeZ)t1?Ww#hDRfeHUakqR((n;o~-;dt&RIClB!76Q>109%S>LTKDu#HUIw51aXDDxKo9*c_J z1I1@zVFW>xkK{G75-_}zk{(}!MqVAd)*>s+ORxR|QMw5!NqD(PMmn;0(|=fwsAd35$}$Clso@MJWdPduha$!a5z0nhSZU zHlRpY3hkaVYoz_7j*!=JahUY;NU5^;S!Ukni@TX!R6e#|Ntk92I9`3$)0L@)D2$Zc1!mHnCp4@^1tlT zeBB25x-}EDefR&(j?8~-$YlQS{g{7kwB&l-TM7TyKFoh?0sim(n$oT&Uhts3o39&$ zN%crsL7WEgfA7ll%sJbLbkkTQg1MNtilO6UO-(6Gkz_bj9>V%4*M}!B=Z-qWrV%Py zr7JaPLa(N8Em}VwK^}srsvlL@vc*;CUR795K1-jCoZXPB2oa_(hB4_qLGhlF*{OYk z_rPbm{p*a8^Yksh>}I>yt%pE-#Q)uqQf9zvHfZy7P*o$r4Eh59$-4g|)Q+BH(O3FP z@!AN?3f{-v4aKIpbm0p}xo1z3<(BW%VUIx`a{Ebm6djf|onNTjG)Y95)5t5cgugus z2>Wr<;kFnvc+X)DrGE;!-Y_>8^xnW+Ej8#@XOj3JeweBz6TpC|)sC8bQ@E^DFewvS ztsl{~c(|zMyvY6DN#Ka?8k)AuFI}=yKf(p+P*9oF=sH5T9hHjn&_Edwz#L`Rj%sjQ za4XvVbfk@!iZJIW=uNZtc7wSexE$*hzbyj}c|G(eXkU6NH!mCsD4KEOGUV3@ooibmrsv}{bKg+*;{0IbkgM;m?NNeirX9y z(+=NsIVDoQCs_b`Uv@#?=xu;F_`GLWTX`q+Nj2c_&aBEr?-_7R;k}pZTX0p{Q6J_W z;_6o$S#wcDodkw0P3duhjgrOaoZ^qW_-E`$TZ`y%Ov${zvo;%kHVcOTJ~y*LYj7nSpM8igu!T!5D5MpIK^2cTX299O0D{*yw!&_BX( zux>Z;7A1jN8&`^sW6Q27(fCxfbDc!S_*Tc`*$Xw`9Am8L2pR%&p`GK|*Fyo*{PE?* z(tG`2WJ+l2B6+2sC_wV*wT~vK`YeP5rK>E!A%`h3s~sM}kgeeD6`qgyOky}W)3m@h zO4;Ex+@Gcn^$AOy{t!jFr8*@)#tN^0y#gf7k1S?)X?&wVR-|{0k zVRm%Y)|zwStzr2 zI-^~`3#ISOoi874%f%;p@`l^9H&8e-&AnyRrUN9Ib|3JI2iFrkkPE(;xJ6WB8Q?%pHUp zj^fgGRR^<+WsOj|)ddQl@YJ9;Yce+t4o%g)336)^TQKu|RLUdbH|E>m4We~X@~=2& zO@VY3XVNtGIjfDcxn=J-`Al~O-q%Qc(m0GkdTk*Q-UfFopHlT^!wxS9`7Da6_@Fn! zk?(S-7pwYq;8aANv(y`LW-SgIkaC+?={xf~XFsCw*_!eE_*PHi%ilitPI^<|rl<`& zw*{|86sKTb9k?o0w`1$(04?56HB8Sq#;y#PT3H(ZIx7L3n7hUjoTsG_4_e&jG3nb;bg&o@OC_=AQ2 zO-~eA*Du4Jt;vX)tsOp0U?e+*P)PKV@@$9OY##-Z%@? z|8RCVJBM9JFzdKce>gb@@*?LVt?0l#Pmd!0*;5VR7WGQ3qiCg*lJtQ?@WdRaH768N zD_&Z@&+O<8f4oKHyxHx^oJsbM3lL-VP3&dJ%@R7+ArnXW_t>~qLW(&HYc?FBCRwih zwb>mJY2Y;V5mxlb`R*)h_C6<&1ivc&3B<8;vEoO{XFjhW!Ckn1au_jnh1G#ERN<44 z!Sxod19OO249322|4=i9o-2nysNmZv3z`}1Qrz>W+1am>FTXaBq)oPji zt0qxHst%e+{QJV)rU8e;LP~FJq7u-;_w1x^TXctS99;6)<2PvXi<(CC4r?gCOv0RX zxBpo2L*G@NQZ2;Do|^hSUl{f%!ost<6@YLm24@6%`I@~(0y5X zvIK_ScwukoNK~47rfaI-X&f$*Z-?BlocfSydM50zFI&LgJfjqJZy1;&G&ZW-vRt^jeCm4Vtd8F7xETd4>y>11~R9r7QJr$wdr;|dPh z{IX(^$Eob*9PU*OW2VQb1gktxg`kO&^|13Fu1$zYn&d48%x=+vGBxc48`et9MHH?x zOu$lJLO!hA1fTl?`KfJxpa|1F>V~Z*|6RTTSR+ZNQFz>lBKzDY%lZ_Q)l?bv{OqYR zkT2q?!4In8Dr!HpUT+55aDay4D@=CLViqUqj2DO5ZCIW?D`|e#1~M_(S?!tK1|4dz zbD?cG;YZIFwACPPI1?-i&StjNKpMCZsLds|Iq`PvVp@b9N~|xB)fMDZ%moehB_F2g zZ5!zF;kx5!f&3)T&Neluz(P0vut*Vx?_pe;S%?20a+OHS`!F)$xfnwXA9ydx@W3+ zJ_PI>B3thVNID7UwLmb`9!G(?d;{>)N0h^RA;GIQ)V1bPBbrspDa40-S%q>xD~{F%bR~3 zpC3LYp+YphdzQX_M`u$$Jl?aDJt8%G_wI-DwPpDn#wxwhFwEKeSuV_`XYy;!@-bS) zT;Y&STFwVC`F$*!qFdRi=|zyi3wUQQd?vuBKgb@joV$GYBlS>G)h;lxWQI>q+G z&bZyQ$oB+QB=z;XqC+HAJ%$v`?owFL2=4!)>@9%fXqE+CTe8?_HDeLn274C%54P+&4HBhcbaU!?^=~DbwVRUL`c{k_ofF!D9mc)^`wfHf2!D> zX2Z}T zj_4MJv}h(M9*}03S#(&ha|A7IT}z-aVV4q4kiO_FSt}O@z?d{ifb`PbWgS=Co;2eq zR4HZ9-{&Y?rZ{s6KV%5?XRo|YGpv<9WXza7Lpf+0uuIwZ$^6pQxcbsvpnz6poiw?J za{V&#y?f%*L^IyhmoD=U)=%97@Q*Lu&s0HQy7ZzRil3Kff6e$bVHec-WrF(J;Y*jw z^GlbN_~A=;agXauH*E&%^X3mS)W1w%#l3x*2(9@?SFYhpH)6#7OIIQJ>(*II8TdYL zy_sV6%S2#4_m_#9+rxUZ=~06Cg8bswEvM;Hf_O<$J3d$%PRF%|hIClL%HTQIDv5nC z$SE^|`jC}Z+sr^sgyII)dVp4z5`W1XSN_e7`)!DDJ)*2mi^s%*2=tw6AXgkIXerG?;1Nu>a6i#U>`v-(8 zRo)<#5XEMXGbx?vI|uwDI#Gy#->IKLOaZi zk*(h0?DQ#~ha!{XJK5Jvvj-+HJ^yNgAKNO4Jeps%=+w@ z!@@>cfNn>c$-SH&X-}Op!{^K}xk!63@9%3km>6ZDqC`QU0&4=eMOFW964>8xzBLsN zWL9<5Tn1~$lD#ynjQ_Z@KskgivRZF$tmbqT$y0nVrJ0xA@ISAMC0~)haH+JGPV2pK zEG%9FWc;ZNol{9{u$^p0Z2v85AQLds9o*1b~G;Gi7GVwX!@=m{wA8f%z z{?InaGQE!OU+S)K;gSlPl_+W}UNpS!80)_&RGE;&Zddp*087ys?=?@An3VaZoG}o{ zIUQO+3hIGfcin4RfReQ+p@U2XJME0XJ-SRjWYj4CN@FiLxd_WyEmZYNnKuJMVG^wOO)yK_@z3Y zwd2}&KL6rJy(3QSK1h8~<}8+f z`)U4_W{vgB$?_k3EdSkk!Wmu-2}BFW|MC`63>((!Hb4X?3$D6^{e!YkQYuvL3d3u2 z&xekZy%)x68Jz1D)EByRP_gd^iFNk*lVBkX4TAi*(~hkyM=`R42%={(PXTvD%YyUN zQa!hTf9+_VW>`=U=xi;XRy7wXIawS-2BFx@&;(zvfE&m1XWfP4-_NCt5t(-?a2}|9$HFEH3Vt z`|+3KVK7>3?!yhd3?WtKm9W1Y#bMH%ca}o1CIhFJa}XdM8tyLKdf%PH|kBg zUwU4;4Hibv44>-^1=7OtKt%jN$heV3|CRyV)w5-++HooBMbSO@-7hr&K~1Q`X75Js zo9vG+>yL%)bUw9=Hfo;R>-H zQ#C$Uu;5nc5n#a2Iho1d%|js)g@BYua8SJP5jF;|l(mW6wJ$9$;W9vnFh%<0juYVv zzoWGEKL+cwe3yHm1hy7In&ryDf2*d*{KMG`A~SOgJ&?B6_6mgf`q64Xd7R;UYQM+_ zake)}Pi?}A)C=?XxDnm)Il0;Vnfrq#_xBA+g5Iw-Ft6m^M~GJh98hFWS|yCqssII8 zsBJ115Gjusg_^^zJ1lqXj6jlYZ>cE6Eie|4N^RD=CwL#Ua%9c^aimF}9E(8CN7@U1 z60AQ^htveC#BmckW*~Q)HX#>GEHI5a>{yHWeYU!71RM~XNR_A&J+(-HUp+WE61}5W zSk!$m!rgCI8kTqh@AqT%!sqYUO~95c67%bcF7i%qbG%iOov^Syxg5Z)+E}1Q@sc}Q zHn`*ZtQa;01(D;wq0@KbdwhL-vv^mPPJ2t3J+ ztx~IEpxx;wRl*$E#o;q&s-z24szd&dEnl9<(v93D5 zXL?AfJT6i4JYV9S8kb9H-=vaJChriBlF0FnGv%m$+2%p~D@*1!KH=f7cS)6M zKTc+>h9k|stNYq%O#80yuJ`b9H5K*p4o2qCB(9XbbW8TC5HWEfZpU(ktJQUBLN_?| z!)L;j`!cyuCi9zO-h8EqA3?ky<ha`@0qWRs*QvlKODHE56e>FE zDD$@+>&F;0bt9u3p41d_@@9N8D)Y@`B6*BT-p>KWVQMV8uH3C{dL&?$X4!3H0)|QH zFiL}2_uLp{guryaT56eA!9BPXOi2Df7$cu1DIej7ci|yZu1tg$yQ)LfFU>QlX`m8tHc02u5SMz|Jf5$>}qyy7h77f z{Ybgug5q}mQw@i?W#KM@ewTV2PkPTxL7S?KvVP@Br3-XLz^KwZJNf{alPjClJc)2L z8GdnPs;P8wu_ynSqj|y;8lV7vYOSHA=7EiEVSz~9X432D!+d9X%gK-1d?Vq}(F+7w z3by)+c!)Up5cM<5x}>WpYzQtHe@qq@Uy$0$OZYq5u6i&c3r-sU7Q^mOXnYnjeUpST zLT0DDzkjgEMr921e&wLo*3nAtF8-*BBWq^sFWMu0;`P?f{3FOF9v65lM+deo^rZav z9%ANXdrt%_bx7t+C73owx(0q@&TGZtLvS&&B=_fTv1@n!eB}nV+K=Nd=W*920)KamEw|980E5)2w#`sU zgkmG5o=F9Lb(Jx~xjKa$46)In9qDg!0WcYt``0Y2u)Iv>g{TDeW(SGL;|j0Wr{3gg3G8R~+h$iX z1W%En>^O%8^|lJTMU4CNBSF_gSP>0rP>m3<5lT?sX=OzjOEPMd*0=ry_gZ*S82POZ zNDdWmQxL;#evpi!EbLl}-2Kfb(gS`l$`kqW92sg^4HSnY?pZ^^e%>Q#!Ai z;3S#@(b0=#o5{T2e-E)&IPZ#TEHRKZC{M^W|; z*odl2s-*3M?i?KLL<|x)6?JJB?VkYSzqFUOI^{891b^9h&yhl~74styRgs)TD;NO| z#>@Ou3~`N+0vM5gb=Y$GyL3aU@65EKfGdjW$mN!sT!VZU4+iU7ZKU%64yLK?dAnuI_l0!3T<%OQxCIV z6P*fIss05WQr+3JC_;>4n_d3fBTz_(t9wz*-O24ReZO6)s3S>khvyt0!39$mq50nO4J3QK{0GKwquPd0AQ?6n|(&wT&`LZT?QQhi>6r^YOm{62#^l@i2 zy&4A2Wj|r#xBsBKjySii7Ri>&XRz9B*thuqC=m=!WnR!M_ccY*S_PT7@1H)`4fPV@ z+m3!39=|*2OoH{aI>EjNfp$G|8}_{&X98P^C+D&HgLEfIMx#U{I=2^t4y}E3&lemM zICygv%&`_f=$iWce9JId5Sn8mXjEJKBmEaAOMEe+9ldMzy~*~=Bp1EI({wW1hN#0> zuGJz`JY*>s?yWY(IIYu@9i^^Kq86pZlJ!);>V!jqO4qPiH0QiJ9XqoA@xquDeRA=b zO`J>~aSn&q{fSAFC6a)S=RqeOjSlvSOkjQTBK_t2UdLD>?j!AoEo3Wc!l=n*zIlfP z!@9I7B~|S-zMvWn82s(qaog%wcWb9B5&#WBiFm0>C&?+AgD!HCOpOXvs z$;HUVh*a9GHhtdkdnvUk!vJHovb$etu+UCzC??uOwHRAqFfuc@@*jOvvAzI|GTDU~ zEQ6LNc{zP3)D|x9um^G*FVH*@7*=d6x@ zCn?#v6Q-VIKrKd|`hPXE8p@23!BdRffoQz1sj~q>!9x9ks+-WdR`v^*CvfD?w5=@I zb{%$ayERQ`8ME%E>-mik{4yTs3#V?ocX3COx%Xh7J>OIxtiLNJReEKkQ5;ha53Z1S zYM($GcBG)g214#UKwmA56n>Dqt2D+*HbBJ#LT&(dP+=eljHcd_mAPBDg1H+Um`E>4 zcgjYGp+=_nZ-XbMmZ~%IGx9q#8*aDG5A|AW9<5TGu66nI%>=T}yO!Ivkp^^;5^rXU zY_lFvO9H z&lh?%u%9~7(6__m%yUAw<|EY!TlIw7Kfte1WeENL1G~N6L+7gIis*=rMg@X0fC>Zj zQa=gJcV*RtbcrbHAKs(n_xa&(be3i-15WR0Pd+xYVZ!-Nx#c~2EO)G19oeDu`@%hJ ze8B$L++A2T(X{GMj1DwPHc$=*B@gXdRyP~z-&ICsSOM!sP|Ph1mYi-u(g6XCG+^Sh zsV(&|-Ad5IZjSBgWvvNJKP85yZz%%pps88BZBYa~WPw#~eV)*QNi^A@P}*@=7?eG_ z#iG8yiV~Pis$j_TFd39#EsxbO%>T;GNHH#f&$keM+6CBGnpsy|`CJe}Px$5!m5cSWMHB+HRht~db|tc79vTB0k&mB2lp2O8ZO;?oJ!6f8opXECdZaU zpv8!N!F0vkyZFO~B{u4SuA<|X+YV5Q;DTe-rEOhNl zQf$%dLsEE1O9sl-(q z|L%|FVU0rcR`wXY*XMvQz@t&CeXqmwkC)IV=iXmNxmRk3HDnyQT31~{h*4RlwCP#(w?a9rYXg&$xd%$vWT|6Q z;*Il)P^Q=2C86k_?`oe9?-BR8lsjhAdUtTL86lM5sU&e_G82%K_j=j_$aef#QFauQ z&pl&~_GQ=AWA}fJxA!;6Z?bYYMi1i8z}~n{2!l3TETF24+V~Kv22}c;x0R5^=)2Op ziA5iFRt`3^=Oqd;k9cT~9siWF(Zt*)v(Q>jE8lq+1lMa`;)(v<2@eD2%*Cgk>Yyq< zyT;p2;#GpHG7D|&5In7wre7;Vm(E7D$@iMP$cC zTqr2@poS+0c6L+J;zW>?TcuL1u6d=qkb$n%DW=dW4ccgrV3mqbHE|>@1&?JyFLPLv zvl2X%dn{L1`mfX*$_(0pXN?WNv(yh~fnHVrS&o%tO8+{IYH-9fSy=2g%%!rxdT~ub zqrPW5)iFaeOQC|tvap-B^akwR=>Qfgu2dCb#xj?Y3+JRv0i|(8gCHjrCO3S`@^{1= z_CCAVg|-0~e*EXr1=dv=o0;{A(uDLJbJ)TUYP;_ln@t6YcrbwYa05Rn0lx+e~ zS@hKNV5xy5*CE!;rkAxs z;cW>rXfz8~$cxTEZBP)l916n7 z411xA!DIpM4HvwU*cG{40po(WEoMO!+G!hzy7N!3S+Ep^eXjRLHRr1f_^*7-NQv!T zIpgG>N1-BjKfTLyx63ZKomP@m?2OnKDM(D#LCR6w`;29>%c}u7EiCX zk?VnLz&{?T1_xu+3jEBaZI$+KI zO<}4CRIQ}L$9*Wv!7ac`hS!cuG!^;x!OTSoN$%_1!_i5=jOz!W8AKC6lt6Ci{z}`( z=aOd_ujHc76YqqO9`e$S43pINNF<3f?9c`8M|cCjKeQFy2am0GkIm}1w+FvYG$P7F z63q4c@vrrkw;n9Gz6vd8l+jHJEG!lZaUTj8R4bP1@kNfBU;8aTWQTgO^V14GHkZ(ko<|i8{$L6It5PW!(Mw2EG!c{jAJV{Y&JFpOk-6LISxMncIwr`9mzuZ z2bFvv!hY>KRYdDWnXP;1h1CqFBgw{gx#L;q+thi_V%s~f>Mg=T%n(f*tVKvlFBV|1V5#O?^C_3E=sdj->=IcmH_SZOIV_m! z5YGKn!hjvWN5tpAkl1YUYgt*Gw}|xGPqNKVwTtwp&W&i^%QKnF-!T_Yb=t&Q0bPr| z)0`~>TO5|lVY+#oY`MHUm_o?1MA8OU4&K1!4pg>I${ zoTO0p*dC*Xym$p^u7-p*DkEyghp5*tnd%&O88M0d0<>A5eB7_;#_@g+Etih(l>oL_ z_-xb?i;7Eah}8?WlOI%=JI{SaTgCJ3NNZ#-}tdua&bJ6$1+` z9u++^6CN%7Z~D)m20gt7jflODxrrW+rIEP--fu`69y`6S;wPW2uj~D*$){ueuTm*r zI*>GS_68P;cr2enU$#GM@fgtI{S#M_{eo-%s~ijMf2+sxuSg3W3(Nl{rlb))YT1hi zC-C47GHMV11W#f@G#X`@=*nn9V{%7 zDtJmI>Be0piC!YNJC9~F$)oGc(vrwRI58grka*86g6J(I@v+E)n6RM3=XHVCEd z+P?zyFagEz!Z?E<qkIuO5fy~%+kNlQq$l(Y#sxmwCDR9jyOsZ$hD<{XDaiD*X zd*IM_SQwNgtB;PE z`JaB4ufET*f5z$QKf&vNR?EMa@#iZ1in~G5$Xh8`n*4)k|FdNN_eJzy@ydT!fTCso zzlQ7RSs57qw{V@Sn>yxV^3jvwEf53)PI|;G}FQqgHIc#D<_h;SFxxSq&PrTpp1MqoAsDJhoOh>Ft zxXHAN{zspcZ%kSMZY|Zk>|8;npm|#wgV4MJM>iQ&A0@ z{zo+ZEp428l0CaMh?;aaL`+y2$iv+qwiz5iFV%-gD=u_K*9EW+u3*jRnd|yNSb|9! zC*!!UNl0TK-^*K)%}KoY8ls{(f~~r8-SG!1135yt-iUjjYWOYKy{H}(B3kWfn7G7X zcCf$KrLzxPJ%Pi%71DGhB6X8@_#mkVk1)dN9e7lDz7uq&A;oMwHB(x84!+_(3LA>g zSE`n5l(`=74otZ#GKS3Pzb7VR(#tpmK0|~p#QF(ayxa#oySlYFIf1aVJD#sqd#Jgo zWz`#)0Z@vMOU6@~EREGWEzeV0RJFnzT@Cg_LiRHZ_AOhNiO@nrZ~Z~o$_2}JSn=j{ zF?z~PI(QjC2r?9<^48U;8dd^T+vdwN{;*I9_AzwGQ*fN0|J)DG>#s`E^sW@fVM|Mh zvb&;_6gh~qO~VUH9U^A)6B6%S+kv0#-l*X6lWK70)qS=Az0|ET1u;X?$!){>m82-I zR?Udb!ojeNA&9M`s?{`K%cyu%PCV=H`r{5fU&$3=w(5pl`&(m;Lob7ny@0)PT^%EW z1X$~{sv6e*KEBmmgMD?OfAo;zf`Mu+W4VDwNUywuEpJ*yMsnL}+8-Fd(w{O?47Lth zDUn%cM4N1^EU=x<9v#3pmAU z<2u?{zAqz2*l$%xtAfLJ2Sn+*YClBSn=E#8Fet&p1rh{xdr4&6+(p>RMUXto==)gm z9A*WMjuvA|ro|3@H_sz!dERRfhGEITkEtY&JLrj{i_KSdB{Lup8x9WSL|esP_lPx7 z=x-=0MCSA)h{<62yX-&(9VR4<+IdL&AfAxaC#V&49a1#ka8#9~Sowz}TfXDl0W@+l zl5*}N=hIySFqpCqIXouk67+fD{49pzJ2p;@9vA^zOS`C~Uq(mWoX=k*8G;2ijZ?m0 zVKiW-wH}}3dlv+g+Co-TjS|IEYbRVpnZB8WauWm`>AaZ^MW)KWg<? zoy^R1OE_$!*F0}ORnl4q3d7})h2f4P?G2zh^$ctcx0eNqkf9$d=_NULHI^J6FwL0aU3C?_B=*fF^&~<&B_F}bI%3ROH9}-EGF*@vL()p%vy6fd(tPw9ACS{RX@h_Oq!R!<@V{5be@RUz+XR*T${5|NF5XHrz3 zsLYMnp|k|Y5wfmkO^Ab)U_DJpG*&xSEPJB6s3lNJo^Y_YkeD3e!jP%&vcK7S`izUbX?oF7-S6i_JN{VM=K+ zK8w>-Yo_YM-uiIwA<^ZrozCeoY29T3%^X;eNLYSpMnH}6bM!L=HWMI>Sy#BeG)3z< zxJblHjHb{JSH@`#1KxXF!-5BV$bwEX1YE8SEaJx(B3dAFrQ_4;Sa` zdR_C&-5D&>^zFYj&iK&G)fH9yNhRV^dHG_u;nL0fLbAKPqCh7V(1<4$ih>5BsBimH zW?iM|`3KeW%Moy=-qnc%r4|+S&-sPQ0DIAUdI@Nit~h2FpJz?H5c`a zF!R6%m)!$np_{WOAGYaw(CgCQX?G{i6P<~zV~p~1`^>2+$f>DGDXg2*#eDEdX!Uv( zQGTMEC&)&~l}fbonQqr%8m|A|1?`6JgAQLxvgPZ6)?xm!j@O*M0G)%m78aHlOo=Rl znxwx1T?n{(nh+sIW&Kl)U2b_J*EP8&4HRzN`l_S^Wq7WzRoSRIWqlG3I!RX!q*y@~ z__yKhGS#w)EV=pOfaHGDl@gKD7IhAA2|Zu7a+}Ofy{>g|mtgafX{$+|AC*$;X0!9- zaB~OvHPl&ARa8>cZS-51m_15v|1mjXcU1M5#sK1li!Wb%fwF`#f^+_7W zXDbc~x>uBHI;P5}s1hj31=VrPW#8rx^uQJ~O3L4MGBVq4*AI1A0A12p7tI)+@^nwq zRs5YB8UU1{O*dxxCQKZcn`?UKKRZK?b$3ch!1+lah_Zz$`6LDgKBCsmV*c7ibGi&! z{rs&AXfu$`k_RkmN+pI5PS)f0bRepD;;74`^O|TPv269UB29k6t3vgBC;6uK zbRFt=`JzPu=oy{#Xpeb`58iJEws6OmYE-n%oRbm_kuULy0ZP@-Fr^ZxEfYjeIA6~u z=r$$oGH*<4=qC1juzkHj$x#&nK1nBfI*pX&nYsy z%8%XAs~z%mr6QC*K++8Yr&>qcb9}jWgF1*FL>GBdIM*ni(m)97Ij@46jf%?Zb>5uo zQ1fYgLUV5NMyn)^iG@W?lB8jZ)b0KKx+`7n;SfCOey;*121aQLeWwDX#-?0L55fEj z)v}?}kV|oxPutK8IG~6UaqA<@&Va0q2T(L;S=Bnygg`1Af0TYN8=H*=<&%#l#;X)W zA|^+TX5Wp2YEA9D2x8T;rGVI@hY*3{~ZBqW=3f1L}Pogr;c= z9hKw4$4%WDb9bP_RUJ-yZB$))2Phtjx@F6Y_8maYa_U1;^D2UhW!-IwTGy1-4ML%= zJ$`d|%hKBPG5Tm=vCui#WVezwa!>6+pq05Vj;lIZ?K#=9#jBVtx4e-%rr7)t8s;6V z^8o2k@40-EzyPLr;(JwMl0$)?$9Tf$`TI|*M`(!!S;%m z*>!899%A>fvwG9rK_h9A2q*$Jvjkfpq<|1h6*p~Hu&7^l5G<=?>oz?YPvTUhEKu4f zr$AX{Wmg|Uk?-TS2=r8ywkt4Hf-{`-fk#%R6=*?PSha@rgYpliLU$Khmvf^(^#tUy zOIDViNE%STH_~j<&osFszrHsnt|dQYUKs>vzKODG02fzGW>xqXo!8D#6;a6`&NZ;0 z%|N8F20>-0Kim8Qr}Ho{FiP&AUpCMtxB3-TQ`$cugifB+7%(&{+RMjd(i z4%^R|Oq58Kr7YlgV?ePW&8=Ktr)f+%2W$3ZM0Z~Keig|5)`*+=Hh12L!)7~bfp`@g zMh1A<^tdYIe!cQHGTM9$1lW$bH^IGPy;a4H2{Xse$hK~1Pp#BTF3PTfP%|dz_L{;5 zK$a&UwCID|4?CwxGyu%0x7WZ<=x+5%fF-fP2zS-DZXSdXQhzm<%fV!3UcP22e>W5TTl9?+s1AGzugmuP7*NrVCep4{pf>U@m+uph zS54mve>6$_joi+Bo4jIv*MhNr7JaP;3IYNT``|dW$9-Q<8QK^jSI!y&G#0S5-h!JVWRMGg@$cT{xZ3H07WjS3le3Bn*A~&N< zbJ@iiKg!@T%&%l|(Om+4ms#<_TY#Rp9^)fHW3{6-7RFkZm{N;wU-WLeKgRfha;UKG z6JH=vLP<%zkZ{vBUO{&x6Ae_p5oAOsrxc`&YoL%n48zq>I99wrX@M()Ul5H!(mq^U z0P%{_*-yC0#ewrjsOe)MRZoKZv3py*sLx_{w#S2(S=5AEgYvJrAc2y<_U^%6MBDFfktm zO*SBAsyU zeRlHPnacLax_QDlT(O~n{cvG%^Y@~H%xJjM(!ymY0My83^v_m7>pD&3vkz4`w%CbT z!$tPT{GXNT1g%N0SQcRr^!OClk6(EE&GOB|}R0S+x zbEH&>U(uJRxh3z*WnI=K&dRZT^Fx} zvMy>zDrW*kpdxGQzC)sxvYusJ+kA}tc|2ri6dAh*R*5`!?COjb(_T46ogxIs+Fb?~k8^H-CFjbZ@>xIo z#~t3Wjv%ZFXPTh|4=g{dU0JaElX>Ww!kC79HEIWEc6-yT>Tep!ayDr1KNqbKa2&!V zM<29_(SVr>-Eu`eA|LJV648={)mLIzF@$GZlI&N1s0py_$5;%pQ^tJ=&$oUEQ4#b+ zKt-?y2H+)Gi{pEO!mDCmvM_Vo5!*|!yIr2dZ<=8&tEnm~ENU7;2aE(s=heok8jqlw zDYSLW<$TAP3Lj9vrmSW>aQrFlk2-MkOw=y%3rdJC?U11gWZ5B51^Njyh^uM;+Zjh( zGq{IuvYs1VGG=bFo{;1p>^AU7wl+<*1E)k!BfiNl4=4SN@lTitmn8?a%8 zBBqpi!_fF%Jr#B(d3`37l6o}f*ahXX#mv-?T6+qFTMoGR`awu4MP*BnZb)(p^|~IF z`(Z#FvSlrAh>RI}@9t0ZdS2L<_objRs~S*h>$KNtS?xFo3cqr=F;4`6SCD)EJNtWj zLvB7zTCq3=mA0^1#x!c__cOYS#upTe`FR{p=Nd5RPTK`(RyNPK(evcW!R;p@&wIg1 z8cjDe(7>^^p?tZK5zn+x4cEV|{^b{Qff6i69eJK%EZXI_y$Gf8PAum6{^Wv zKZYT45Py*5smN)&hqkSHlG24cBv!mmus z;RDirsP2}yTB0d&&q2t9l`K8e3jqNOe>ZWPS}NMxCvd^FaWe<%&j=P=Xx6=!?Bl6* zOBkL^KjE2^`IC3JGHOQlXFkVT(+RLzuBI(tblkCOqjFgO%rg?!2QJeOnUluq$^tVC zQwB4XiD3KP?VeN%NlEi-dH4Lwiq3V8tK!{Ej3thT6}?G|>z^B5FTkl_5!l>JRZmW} zgxnYY+m(+im+$f~?^GKpcWx0HcF&~>$(tM<9t>>;lLw}o10Ib5TFw>%tZJPj^z2Uz z7p3NTX;_IZ>VgU)!Q-076zT`n@kuuObnGF0+C@Vr_Qu#6`0=W)N>Qc1@W-aYv(+$7?q3)_Rtp!5uLHmKMER|q8x$lXt z)cdCF9Xf=eS=iOD57C)yTA9;%%rq)zn6330nJxw+ zB61$dvOTR_b1ht>PDplsr=i+ACA}9+m#%UNTMP#FA_AL(0YStP9XBXkKu=_vLUY2# z#Z8KmRTA@#(SgwnB`6U96B!Cm8z086mm9t3pzCg3jiXEFXzk2_EJk4KEPhsgTmkPJ zEpJZwOK>1ZS4y(V&f3};Zy*Y|TA$o!?0OE))b%`j@5kSv<(&%<0(2$Xrxl8P(T1!Kp$bW4J`&HE*DEcAFxn=KOKQAq4DUF^6PI$ z7Z$~ES6E`bUA|sDuznlU8Um_<00J`8TVu+2ES#XQFs%NlaAN6`Zv#g|)~4WKIN{-; z*wutP7mvpJXJU*sX9^54iw9y~oLLJNr4?0lqJPLC7dS3h}Z~$#lpz9;bktY84&=DvB~=-NI-UGVBcm) z8ZT;o^%Q}{DvKz?OaC{zxI4oGS4a$7qA$*w$mDaMIy>#F9)o?LvU@T7`l@3{I>fEi zw|GS408`r3WCuov5xAp)ZGO`>LwDyq;tY^nI-$8CBp1qs@iJl?tY`%`v5a`6ar5tmRv(2E{u)q~ zS)e#?MP+S4SBesmmC9Q()(a~=gd}v_3GyZ7?jlIu$I|wg4U2M%AmqqFe?>tvr{c_PzVla!8(@7 zD?q#awj*?PSwuG~I8AY*3>N2N?>9bz-@hZXP$|rI<>6-_kk)Te=8hhE?W45UhAw|2 zuU`YuV6hTBfbG#7(58^;UJ1c1%z1IJWbum~~`^6O_R=ws`r9D1fGQ5LP2{2i89 zSJRdS;4FB&MN}qn)T|a-_I+v=(WC3R#hyHM3p2qSUnX@+wGAgF97c((a<$i>=JKW7 z)Q=QYvD%2ddcp%ph@vx2Fof)6V%e}Z?vT0#_48#&*)kP!?KOh~tkk2$s!Bfdd7v8r z^nwhueaySU^I_|Ay%;HB0Y>A0>5NQ~(mg&5SWA?ATz-3b64|wcrs}iYhe~K>4V_{0aN^vztd&bPbLedrHbx2Wt5zLdUN>#$7jxhT~RHrdWu*)v(9X zs&t#PDk`1Tb@*cH=A^{lO4iC}Q&~wu`XOPS;%Mc4*N)M|+NA`}@IHzyd z<&TyME2~xERtTU}Z{K<{CVfTOfNK-C;>GYZee}G%x3si(){C7!vtgCna&tbsVl6&N zey~e*_AYh+4>A?16zrH_iWb_|s?E2#gRlsbx*y`2rbhq)*{8ZS!=TLWc zx3cJ4Db<$Ysqw~k)y}q$wP^ZiI1r#C8sB+PD^kw-(fw#ZeBHqZ(4i#+GQSd z*q!~v^+X7hYRTO5$%OKXNOk=Y7TJV*&Dq2KDjoik&6N1!{X(%``!KmaIUVWrfSL@n z`B!pDgee!6ec}pmQP`-gjhbT6SBPnayOHiZc-?_%#R0%;{X9L3TL8R0c)#Neaw}QLSZ21QXR>fPq`5s`0Ro$^x5%B`%SJdC8dfw88XrvG+$%u?von7-Vizf+ zgFlE}c99-J0;tUoBu9QMGR7nZkXNXbOp$IbiWzc|fcv@thB}^|E!-!W}0DX^X zt2Sf?j%WW{{zD|{vUVCQN%&hOs z{(M%eq z_zGrPaAqIz;m2RRFLnUmVwfdt!Tzuw^1Oj`>&d>4W*DC+AIZI$%Qg$jMAN)Jin#)e zUzwH~muQcke)4)EecDR`JNO7Q*m|j_BX|lrB%0yJsc!LVs)r0@O{&_g^DpZyt;Opo zJ73ooFHab+SwAXFZOq>AxRBqRp8pS6gF(Jy?Pq7K|KMQrKZ5HYooir-|8}nV?l^;h zKTgID zd;e|gfFp;8(@0NIT$)9tg$T@1Cgv9%!}fXw~bkp<(Ay{Lx*bJR@mlD1{Gw zG#1TFjW4l|f@U=Kxd|*fly_Eyvvr&UbxzPreGRy&(s z!!FnY^4Cyce_<&(=Se%{Up=mYg=~R7;fvToE!d&?1hQ#-Jn;t{+57?ro2mk8d0rX; z$MBXHvbSl2`5O`@L;0UoT~lThsyvy<6QS8A_vEIz_bU74sWs)pA@MA}#7m7Q0iV}H z`JW!picr+jx?a6ulEl-zyo04rbL_>t6Oeqqa)!0$jGJ)fuM9rO3LFyP>grrW zSk@bUGfbhyHKpAB-N~+V#L&t6M(j ztBbqVw^e+ynQ@4bcaASOaT++gkwXwWQ1H0N$%T7bHtb}EZd`f4ifop#Aj7TKYC3$V zaeeAtyUmL=@kNgXJKEcrL~{h&8ksldTcT~0!9x02J^ChKmzd*A-FEd>66cAY)=lon z4~p_#bK=>*ahtKk9e+mWURy4P;-N<#(>8$){zXVcMMyZx75252#fxogw%+=s<@xFx z+pdQUi%Fhw?+D&u%ARXU;8@>q2`D8b*l{~79UB~ZQ}Q;acXi3wYJ|Sb($eIeZf_I* z@<6WE*g^qEUw)+}>V8Ra9ivj@i`e_1M!$;(E@F?go9!@{L?idLm~|MUDoI;GOj`K6 zDLKre-E!+;qn^r2BBWN8kqQsUNhF^#ABsAF#v?B3y=P9HT~Lm)?N>-FyJ=WR5o>}g zsr0`0#uGaO@%QA5_0(aqN)viJL4p0b2GUR%lFGFp+qfjaB_?n4Ar}Hk;J0m*G${Vy~CIX^1?9kgJ@JZ z^myUZQ6hVRUSctA($6JQ)M8^;nPZ>4y<)lH3~kVyYZuH};+s+IIE4(&^hT}GEXb4Z zPOKhwP`z?pWY91bay>p=7n8!Faw2Y4^jcve=8*in zA{YOs_zn|h|4c*fj2NfAdxIm1g6o0VIg12RY$C@=DKgJL+pnesg|?fvzEz21S5#rP zwBL`;eXQ(&&5)9<^Mo#WKnOdYY6+%qDBb#YXhcIrx}d07di1vLHOgjC#qsd_ENfD% zD?|%9%?TC>D0m8=T_|NPM46_NC@}llpY>%a*D(D|+&!tpk&8{-< zUxg?$aJJ6`Wy8Fs z(vG@C_DVg$(M_us@n!;|Y+fr={iObzqOlS9?cJUA4a+XvR%T;Pt)S&>NZ3Fu{-X<- zbDw6OXm@@%>gozS-yP)J*B|)clWKTC1_g$Z0(ZGZN6HJ;8%9B>%#swAzT_eK)2B(U z+%l_L6~Wv!5b;)4s)l=kzIbx|QL-aVk zHtl+(!VQ$jhc1Z=Ei+KJWfO{ru_g}EHTyN!F&Nw0S}$SFmA`I}zh4{%3iB2YV#^7& z>*tP`MWK47n}XGnLRv4na>;hScvi00$$c+#;igpQ=k4ppb~8}1Xz3i_atRfS;TkgFgPk5D4Ef7vwdrX+Ohvtd3ytz`FB zkweol*=htKMe|NIrTzf7GrPaCvIjP( zI-5!LZZ`_E$6&fi;noRL8*vWR6V*yX6!m1#v0iF!fEfN6iuUPpBa)pk1g-= ziglxlFSKuSei^$3oD;x*U~y=)cv&;rcdcT(hx%@hMSqD|ZskYy{zQe3)6clES!2BB zWjDb>Om_lgDqJN`ZK(tV7PU%I=CWi&^(du}Y2r1`jrxi1+ z#k_8yd~IGWs9tEh8e3#))H}5+lbRsGf~P6!lK#eoSEuk6_++W*7UAmKua~^B_f{=c z_dYFi$NK1OxVh~e2f0bscMpY&%Z7ZC)p@U%UovF{x3=Ef5maZ9+}i@{gKp;}OX4|^b5Ej>; zt79;qP71<&_L}L&_NNDIa}-WvuJd}YJ;z*a&Fi%^Qj}TD^2)GYQfv}E7%-ndm8H3H z$k3s)?vgUsJh9DJR`@!(@@w+QS}v~DSlue@>a~6B-o3!}i7pP;rAd;s$%d&S{!)*x zW+iPpN6r(c!Yj(;>Ts*A`eTlV(7_teg9nTD>HR`0A8?=K3w0fY0Uo6^I(`*NX$^zx zELrZN^lozl=^gELVxN;DmUo(LRko%^UHd0pTMUaFJESTVJUMe;=?ts}uQ+E~40W!r z@HkFw965Q+D8As^?kLkhR`5^GkKeU+l;1mjZ(6Z-Xfg7BXNLUoYG2|GMsGJSRVA^J z&E8TI$G)it`8%zoi2nw6`?Jgq==y*S$_+0{%L&@Yb-M8LOl1 zCya{)`-Gh2d5mXkws^cT2u^pid9f^dWqYHYX2Ga9U27xxKsJu<&f6))TN4FDPR$SC zH z=!-$bKBCu3727V58F<~zU9e0{nT!2wO+E-IP`wr?Mm0%2me0;jsIusl-F;BdS7Tz2 zv1eCr8^q>|@3L-YPqfl*)w7^C80l3e_M#^Cc#oT2KU8U^R89_$nMo9{Vd{uDw9r~g zlQfewj`9J=(}cpoL1zi`=b))V->|0*DPMfPqirl0K#568V^YG-loJ1k*_ey9gNQ#+Mswu@nir7vUHNw!XTBJQn6^vOor43@j z5^il#y&B1I)WG5)(#KpLWz3HByOANZtGZ`QAAu*HqOTX`9llGZs0$J$=OvN?(PN<8 z-D$sA(FbcY3>H*}DqSOy^$nXU?b5cPLne#7EHb($Xf8&i4uuiPHoQ^|!fzFzzxq@U z2FeT+X<}dsBvT=lI!7ctNbh}97}NX8v{Z2|A_h=LsxAg_yMd|nyw%vl3pbhCrE^o0 zlcpM^QIPJl2J4Xp%f*lUw15{BWgY zzfR@j+BNM$aPWS4A*Vb%licn?cabD#o|N^&vT`u(m;Ih$9LNpkfvX~n&WhC^kN$g7#}SmLET zY@P^S^@6ICC|pn{)oOoBlV!O>_|R8-he~j@uACkZCW*N>YN@iz*@H27Ub4!+i@s%t zer;(=CvfA%&J-z^rQX&|l@>{VIpxQafj~Phsd`fRyac$9jcEU)tG!*y(w})T-pZ5d zm$*X|=!gAOb;2`oplmHEJ%hr=(3aOc?cpgAdP6Dgrbh_a7u_a#6)R(J)L)IS%v!~Q zZ&3Gdj9&~lua+!M^Qd_`5k-6?iWlGfI7fug5na9)F&o{JoyNCIIi9)_Yv7U^Eo`tm%V?x) z89JE;>3frqC}8n)2y4(F@J;2yHivhnfnAWX?4b6SD*qBv*@AL<^ZFxgBq_ANEYsrR z@+L~D$PS);KexqwTB3Q7*_IPoFy0mEtC}96FqjDOp_#tpR9Xs&BkTs7YknYFG)_IpET)Ks z#^~;+wS&{ZB9}ILN`r1nzH{61{`aNYDD_D%Zr&Q%TrqF#athmJIO0KNaP8h|VZxh; zo+B5>?}*Gr`S8-}BE4+}eb-+SybeAc9Jxo(~Ts?&zq zKbXUN(tVI&XT(%GxDlP}P=c zR_}IqYsc~yDTEi&|V;?41WmS{N1&&GZ^qm^EPG2e`A+%reb`3;=mxJi-anDV1eb^o2JH8qwh z|M~ZP%U3)3&4@gY{1x|SxiU5`k2BR!-SlF!Q?c|+?OO4Cv>|LwFyN8589zU|!?hdF zw|@PDXRts2<{eVc!1?DJ$H})Cs*V+&Z7Arx*&y^NiLSoV#+*fZ9URh6zUJcXMg#vC zIu)LPa%MUFpiePrR@RUEic5iRK0M#kCdhj38HM*Nhr~SXS-#aQGWGXD?*e5$^52ub z^<=(Ohx4RsOp*uAxi1c*w=UR6Sst$)mWyj=yg zN}9N_le+El@gkwo63O9p4|mxN#lfel_D;ylS_xE`iWyyt3&-=FI*zA#y&Dp@==G`9 zhf&no_9}Rh#JwRyCX`c`N^5b12^5#}?tR&};lOujfi{S8GuN}TPY zAt~c+PazyLR!2GxFA$Rznltx6i$3nLaRN~sX9*#=BYNV1BqD~DT zIu{+L8SG{j=C7M9(HWP8h`Y&qDe*FkWG9L8xv%(kJ{>jxq=!Xo8__y{1QZGXTjvk^ z--gNx|D(>I^;`Js57j@C^IMSOw{Y2?bpMMxOw zuzv`bMR5I__CMr4I$YLoFWv`L`M5?V!9Z6nn^=}QItfQU6w*oY?D)!%CNIl6-e(loD!(K=HK8u` zC&YE7*;9Ra#J;7dvT7c%y%9He*9xO$0PgYDNE|rI~*7 z#x~QY{v5N7pJvMGV|RfQruSt}J|0vz9PUYFg%@YP#L3dEe%?FDXY-mp1iA6n)=0~C z@&Jo%#v|&VfbxHgi2XNY{G;9;0LqV;SU}Z|j(bI`*3s!_)%_1O{GTfKGu-~7azB&* zuZZ|5_EikngcjW|V4GSPU>W#!2k8FM#))4G{V0sZsRYr$a)4~4~-B0$vZ{;9hB@=sd6pxsw zm>2{CpbG*Z4T9tV67T>6p5ahHhJcOJUIT5PQ2?u|sRLJFaOr^6>bp$N+M@uL0fhUV z>rah6YsPnJ{;!$BelYze-2cE-&KBkPz1u%AJwwUw5VFJl12(wezi|Wf>TlqnO<4C# z4D7z0=%qk+)(SN7`)L2f3I3DW>I@vhy1<49Rz|?s7y;<~23K6LtToC~P#?X6!nbjx zI~zz#2Xk|}vp)z>xvYb|xrrqj(%;NwKXduUzbHfi`SGj?_egaZ&1T5cR1 z-{zZvgFfo-_rkzCE+7GU&hi0rWd~%9M1D``cW@y6kT)QEm?$83I8fIaE1=CHy7s8s zBHSP6)McWH;0nmK^(IF8CID*cQ?i-CA#ts2`hW^o6 zey0KVPym&`(a@H}KWMP|Ch2*z#I;Iv45el!w?8y{C=SU`QX2o1xASd z_qMRZxHy03iyrOY^TCjC1h8oS!ULcIOZV?I1jnEGxBx5bZ}~W&e~bYf0p|cf`U?+$ zhMtPQ(GZ-!_YIEV;`*a35{CGlFFOW^!h;>kfnN82rNJP7i~&0g_D4V1 z0Tlf{e(W$L*Pr!q{2@1X80Q~j&kj`gN1NeLuAka$Z>tMzB4UgFq9~fUq5znJ6|Ag) z)#_|f!v#xP8d}l8flAO;YDp2`C_f$q48qCDF2V&75#|yWf^i^$7IJckKsk`WRD#2~ z_;CL{3wp^AvC_A;x`?Kl94u>O None: + result = self.run_cli([self.sample_doc, "--unsafe-dummy-conversion"]) + result.assert_success() + + def test_dummy_conversion_bulk(self, tmp_path: Path) -> None: + filenames = ["1.pdf", "2.pdf", "3.pdf"] + file_paths = [] + for filename in filenames: + doc_path = str(tmp_path / filename) + shutil.copyfile(self.sample_doc, doc_path) + file_paths.append(doc_path) + + result = self.run_cli(["--unsafe-dummy-conversion", *file_paths]) + result.assert_success() + class TestSecurity(TestCli): def test_suspicious_double_dash_file(self, tmp_path: Path) -> None: