From 81071f972c628140a1a5bf50e71ee0abd429acdf Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 14 Aug 2025 09:42:03 +0200 Subject: [PATCH] added readme --- README.md | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ui.png | Bin 0 -> 44837 bytes 2 files changed, 149 insertions(+) create mode 100644 README.md create mode 100644 ui.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..29ec19a --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +# SRT Translator — NLLB / SeamlessM4T / Ollama + +Translate `.srt` subtitle files through three backends with a minimal GUI and a practical CLI. + +![Interface](ui.png) + +- **NLLB (Transformers):** lowest resource footprint, **medium quality**. +- **SeamlessM4T (Transformers):** medium resource footprint, **higher quality**. +- **Ollama (local LLMs):** **experimental** mode; possibly highest resource footprint, **potentially best quality** depending on the model (recommended: **phi4**, if available). You must have **Ollama installed and running**. + +> Advanced users can customize the LLM behavior by editing the prompt (see the `_ollama_system_prompt()` function). + +--- + +## Requirements + +- **Python** ≥ 3.9 +- **Core packages** + ```bash + pip install transformers huggingface_hub langdetect tqdm +``` + +- **PyTorch** (for NLLB/SeamlessM4T): install CPU/CUDA/MPS build per your platform. + +- **Ollama** (only for the Ollama engine): install Ollama and ensure the server is running (`ollama serve` / desktop app); pull a model you want to use (e.g., `ollama pull phi4` when available). + + +> The first run of NLLB/SeamlessM4T will download several GB of model weights (NLLB-200: around 2.5GB, SeamlessM4T-v2-large: around 10GB). + +--- + +## Quickstart + +### GUI + +```bash +python srt_translator.py +``` + +1. Select the `.srt` file. + +2. Choose target language (name like `German` or code like `deu_Latn`). + +3. Select engine (NLLB / SeamlessM4T / Ollama). + +4. Click **Translate**. + + +### CLI + +#### NLLB + +```bash +python srt_translator.py input.srt German --engine nllb +``` + +#### SeamlessM4T + +```bash +python srt_translator.py input.srt German --engine seamless --device auto +``` + +#### Ollama + +```bash +# Make sure ollama is running and a model is available (recommended: phi4) +python srt_translator.py input.srt German --engine ollama \ + --ollama-model phi4 --ollama-host localhost --ollama-port 11434 +``` + +Output defaults to `input..srt` (e.g., `input.deu_latn.srt`). + +--- + +## Advanced (CLI) + +**Language handling** + +- `target_language`: name (`German`) or NLLB code (`deu_Latn`). + +- `--src`: optional source language (name or code). If omitted, the tool auto-detects from the first lines. + + +**Engine & device** + +- `--engine {nllb|seamless|ollama}` + +- `--device {auto|cpu|gpu}` (for NLLB/SeamlessM4T) + + +**Parallelism & batching** + +- `--workers `: number of parallel workers when choosing CPU-device. + +- `--batch `: batch size per worker. + + +**Context granularity** + +- `--context {line|cue|smart}` + + - **line** — translates each **line** independently (fastest, but least context). + + - **cue** — translates per **cue** (the whole block of text shown between one timecode pair; may contain 1–2 lines). This keeps the lines in a cue together, which usually reads better than per-line. + + - **smart** — sentence-aware: the tool temporarily **groups adjacent cues** until it detects a likely sentence boundary (based on punctuation and simple heuristics), translates that group as one sentence, then **re-splits the result back** to the original cues/lines. This helps avoid mid-sentence breaks and improves phrasing where a sentence spills across multiple cues. Basically, it prefer breaking at natural linguistic boundaries when possible. This generates the best results but might introduce artifacts. This mode is always used with the GUI and is highly recommended. + +- `--max-span-cues ` + Sets an **upper bound** on how many consecutive cues `smart` is allowed to bundle into one sentence group (e.g., `--max-span-cues 4`). If a sentence boundary isn’t found before the cap, the group is cut at the cap to keep batches small and responsive; the output is still mapped back to the same number of cues/lines you started with. A “cue” here means the numbered SRT block with timestamps plus 1–2 text lines. I yet to encounter a sentence being longer than 4 lines of subtitles. + +**I/O** + +- `--out `: custom output path. + +- `--no-progress`: disable CLI progress bar. + + +**Ollama** + +- `--ollama-model `: e.g., `phi4` (recommended if available). + +- `--ollama-host ` / `--ollama-port ` + + +**Prompt customization (LLM)** + +- Edit `_ollama_system_prompt()` in `srt_translator.py` to adjust style/constraints. + + +--- + +## Notes & Tips + +- **Choosing an engine:** Start with **SeamlessM4T** for a strong baseline. Use **NLLB** on smaller machines. Switch to **Ollama** when you can spare resources and want the best possible output from a strong local LLM (try **phi4** if available). + +- **Target codes:** Using NLLB codes (e.g., `deu_Latn`, `eng_Latn`) is precise and avoids ambiguity. + + +--- + +## Troubleshooting + +- **Transformers models fail to load:** Verify your PyTorch install matches your hardware (CPU/CUDA/MPS). + +- **Ollama engine errors:** Confirm `ollama serve` or the desktop app is running and the model tag exists locally (`ollama list` / `ollama pull `). + +- **Large downloads:** The first run will download large AI models (NLLB can be a bit slower; subsequent runs are cached. + + diff --git a/ui.png b/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..a254155d975c696164743a604bf931abaed5aee7 GIT binary patch literal 44837 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
;Je*j2XFgB|c? zlvygIk+xMhQ4p}*KB$jmVcHJ+6*CW$NUEro30B!n)(OO39eYkpAPtc;9O7M z4dQ2br+AmiKVSFNj?eb3+fECQrsAAA;djA-ZKY*tvvaAnmBR1a`V6%LX0dn#`))_` zZjarZz1o^|PP63G-1!AH?_{1-Iqt+#7lbTzXle#q?%YzxDR;S!?*aGy+5-zJoUPQD zHZvF&40X1q2lHOzT6@>=+YVHEz1C5kRzy7ma|v3!bDvr2XT1;CaUCZgwE_{ky{BiW zEBh=3oVES%uk%VJO)M{_IHz3JcpWEi^F`A$le~o2<0PV*xw4CLJ*;$GxH7%#c>klL zIpDM+>*c(jsB*S*NX}W)!&ZB|j_Y{iy2>&PXTHMeVXQaz_2yj~*5zur?D%&?Xuqs( zn`bUGj^a^Ng$Nox&5_mZNzH|VDZ#_RT*nXf75`J2#gb(OR$6+!TJL9OF5uuT4_8^` zI^NTjFPFd#N*02rfqSvkaqi}L+2Ivxp6}5!xn6LrP6m{r(OP7oLL6zWHcLGT0V_Ym z%lxk6+^D%G;0(6O&a%7KXQzkn$n~z{I)02LmIpcq{}wg%%M7EP$@NgNH(;;5W!9th z*K&BXMfnSZk6byUs}zU`$@jI5@9RPZacFk5B^Go=uqxBLikv@bwf^!?%g^;%PxL{t zWm}142~8DMma2`zvWif-zl@y({D(X2Rde|b&4r9BYq=s>>mkjSO&Y@YzyFsnypA&$ z7HUi{XgAjCjzf$=ZN>Awm<#xgo9s&ejrUuQ|Dg?bv$9A`4#|R6M1`|iQQ^cJe$@CS zJL{?Dw-u#;|HC@94iL@zx{#@Pwo06{tr5W8sktyQgm9!A+}}R%ZVm*ey-E1FfyHs* zR=K&LV#+qF!4jIX8mHvzW!DjQSwJ{#NiG(I*;?tDhZxket&n$H>z*QZ-JgE7wRZLM z^_16Zq*_wgz+A{kB%x6FtpAWu;ec?8v&4=7oFih-R4m7^7DMX zpr$zo<@H)SbX^X+3_As!ShAe3qmM(;Gb6V_tXf9pXM%07A6wVWDi4Um*Z6{X9w%Gb z%vJ07dR!GLB(JAO@2y~|_eZ?koWeAAii1`d>iSoPD)Yl0FJal@T~k)w3a*9N^$Lw$ zd0E(9v+A12136GAG|eYba{*_VZ`E<;LdcNWe+Y&XJMWGs6hLYp276o#=R1=#OCTtP z)!))mx2^TSE1cOrUc0=nhi`l9>$bv08*?R2XQlaKo1x>F&10j;Fpk{JcHi!>=85*@ zGD~pujvOm9(@+XNZ;2vVU0j8?**On!W;4MZz9TZgQ4zp@)o34IY$4YRW^Q_Hr0ajz z<$AUL0r~75t2(p&8n5VQU&T`Gkq!U7##H!kFy`aflAl99=|o-Kq(9M-?Ru19TV1s* zlJI)LnR_W+&gw&{Y710 zuN4gR)(ttE8sDdYWal7As!$b&q0sg~731JN2glh27I>87nlg0ss=}f)@AXP=)Rg3> zgM~>)2$>?wwk0Iz)AXtr=c)<@`8;l)$7h~z1lo3nHEUl}@ z*%)kDg#<3`^J=iM6So4ohVO98J3^YX9hwTS z7ZzbS7sCC{Z-wGWv%8M#_}VINHKIttVF@v|g75LF`FhxEgRH=Z^$Tvr_l8W(wLE{8 zDP??TZpjq;dR!kVG*&SpNRZ3EL%udvh^ddSz`ny>fa*z$|&-1OOTLSU5p7$1H2_!U3LYB*M6_eg8Z z?MIH8xq?b?BfFbJw0tVZsq*|QuBFBJ?i_mZq13e-@L0cNMz*`)R}&|$DtR_etOD3`J03fZr_+QYVewVjndYoYM<@Dkama>Z6&MFg$y@&@b-IGJP;7?~}<*zp8cWj(ORm)Bmudz~V`VcP7)545|VQ|E(S8 zOjlcx9RkR3i}pn@{B)lxAq;k`_Fbh!f`(K>d$z`&oK&4wL!>j5fiJCIs*)Xf3(}ri zi7jCJGRNb=>Tfb7(vwg6`N}LP%YUB62)n6rXOo5=-72Y_!7%iKfY+cm{dKkF`(?lJ zAr7Yt*6jr&wu+i+UlC*fhmjurA3HLajnVcjDnv4_Dy=oZ5lRT)X=cty13^%bGB|y} zNd^&8HJlmT*Pz2oK#z*6&qxX*V`s})6Uc&{7)KFzbzov5uxA7~Fj_TwjdX=9T1LG5 zzvz>lzCOx&Hyb~2A-vH)-mm@=D&E1k-c%tm@pEPuK zzmE=meSb1gaTa5L1=rMM5GF>e4KP}1#UWUc z4l#(TqO#I=B@QC*Io6GVz;LWePEmP4vE>;si-sclhL*s{@nhq@5qNiG{8zR?8pf@8 z@fqXA^}z?$=~t}R-gw2bo)=@rtG?cJii>|LicJ4Rp~0)YjYNboxB{ALX{r@uy?!V~ zY=!&6JJ!W9t`RtK5C~L#hm0r3O1lb=8Vs>Erj!9JL(??gNMwz{dMOYt0GWp1%(JPe zaw5;pcDb}pWt%&>Sqwn>Bo9N7^>&NxldFsQJN1i-ny`x{MB=P-M zbVgeC?f**V?9JAy?8Do(twi3w!T`CkwxpY*=7<)PQ6tF)=Rn_648dp*h9|WUu2FKH z88t(y#LOlI#hHq&4rHiDEB#V^vi%Ve%c%?4;`zOW~@<{9+9 zA7r!4m*RRub4RkVy%peaehc_3zTR{{UVHk)pY2nA;8E`~UQXfz zGRA@0W=E9dWcn^ zX$&>B5($lD3}rOYG?yrbB<3j##tu@K)QG!O?Pufp*&w^tO~%V~1J%q;G!%k2=mN@l zzD^|0*SpABBAJ_*H}r1HIk?QT_hv5Wdx@{e1!-aJ_T($PbkyM3bon5-rr*IBkryvB z{j~{Dpo3uVpRrrHG)kNRCIMnYht zKDq11MX}|U`@t3wx5nbgAJ3DIN`90_Mn!d6O`CyxY(_j*I5Ie zMb^zW@EP=8HHD_9iDW}>=InTDpQ<<7Nkgy1^`>XggJSEttzxXw8it9tEpLws#Yi0F zsJx!N*w~j>y#<;=FO~{v8MIn zM9KJX-xKn3`edTLgoW*3!7Uq13(iTPMs)7Il}={|8~TXX-9jmta94((*4 z&0a^fj#_Jmk(zrDESnjVApHyplSOG|90PW8>C;B~aEX|HJLauo(A}qcmY_Y?6e2Rl zXH8PGN-F$1Wxba@kPE?uCWJS3Ca_<)Im88D52sWB>rLVi?P>qfUDtbNv^8&EkNs(v zl-tDIyx)=d3XcZavC0urNtSacSFvoVmbGk_1=^$`0~X#_IVDTYa;u$XrDsm|@sEzD z-b$xA>fU3QSWElj=BP8JD(ljHnU_)^cAN6uaISCJrA>#8--Uy`&2Ing#&~(Y*^p0E+ zUIt@w4xQU1ohFh^rv_)$OA3q<_R5-e_4tZ=wklZkpf}_i^`I3hJ6^$@D&f>aPaBdz zWebmF_wG+k=47vJ#mG!n&zgvA)%H;WTy7lbF=g8xi|=(S6K&d{-KE2rK$v#xVD*^U z#|T}FtgDXr%u}nG)La;cb{FzPO~|^PzFECkgQauGqMIA>$E2o{3#*!}9mD$tV*8GO z+n)v(=#7~RgJZCvdk>bO{~+hjWV3*;$65VL{Zu;qzA>e)zOVDT2=o$%%#l4Jswf62 zXd=&gOX{WZphYTM=G5QoYCe@=y<@|gQR^B4g(KDuvRQ={>Hb7fy(NV+!f8j}C>n7Q zONY%X=t;;rRw*qlTMk9+Te|2igYDRw);L3NS!Jj1-DZM;<(W3Z1*{Q#KIDUn!J>5* zqvIoDoAYV;#?(c#NjEhCxx&frMs5^c%xwO+p1+9QA6BmAtFCUPnYp>tW<9xoJ zb?6G=4Ue9&@LXzPzN*6m>+#{s2+3^u&yo&V?_g(6$r9ZJCyQ979hv3uqoy3?i-uvT zj50s&U^=#}7i>fBP2tp>Ns+le3#lLPcy_Y0HaF2-vMm|`w`Wl9nb;Dw#`PsbZ`l`F zTk^r16yB`;WQE9X*RwR>#Cug&(}CsJC!yt|@KhF1?k7DR=s6 zUCIJln^U8iE(Ln49+LoA_Bvm0^$nrw^X0;s8An}sO7UsTjtEKr`eG)gXv3C>FfAmW z&7Cx(ie>wp!B$eSBIuU%`<^<_mN2dA0%k6&P`LV?8=QOtAQSa#b>^V&eGT80F4Ut!67P>68JiQs<(7i2S_4S5p zM&^4n7c%QjAUj3@L5#w@c`1U%kf0ZFvn^5X6Z&}+T!^x03Z#*(Yy!NmU0?5DxGh_E z%h(i-SlE_a^>UiwO#-7Ob)f>iWMS?lu(>3Ft+{tZbt(3Q2t83{GGlHM7Th@lFr~;K zotB%ulxYGwN8H?f0rQN5OSw`ALw1%=lO&yD!7!25c6=~jt(Dmrns#~}`hI~LdaL<$ z!8W#RXb8UHwKg-`TwygbEAJWPeZ3w6rt3F|=!%&35nsdEjc}X$a6U|AMvhvInz2NM z#fHq6xU^yp4ELcIzX#PT9P|>8Zq>hReZ3JHlD3(`CI#ngXt}Y#Xi5Lw!))BsV1UX| zG&NO+S!5|ePtm2y%97z&;)RPz5vFDeoAboxHuhi?NNRd4sUPU$XzYwnJUv+^HsSo< z^a}>oH219OCT+H!8*#^@#r=V73pxs|2`&ialGFWj8eE`<8HP`$$~vuOG@-kO^{zzq z-c&eqhfgE>GuBJ`Mx=|>q5Ih^xooM81aXG-hJv-0^)@|LSPu&?dDoJD&YkQz<7Tgs z>oqxXMa0~*{usvZWYA5{ zF)Sm&lgAwruwDt_ZAAyjI9x<1k*ITKz4$)9h1Am%>&?P?5t=c`&ehk;25jEhdP^pb zrT0(r+5-K@-jyvj3d2BbA<}J}Jaqs6U$+5+t;5&`lVn@UZkvOU%VKnlM#2RYj7$bC zPV?eO4w9xgxmy>cSAgdsp-(aafCX=Z^g&6{aDKn+yu!+TB2&Xl>T^M7t)vcF9fTg% z31o@_b+EwN(n5W#H?HJ4k$GdNclB0;A4{6WHy#0chZHHN^D-mUbZ=yOI2rWpE8do* zxG0vzjQYNzoFZ`36Z$R$NJtl7Aqr86?XjXdTf^2`{e$_llYR6D6{+^8s)_JEV9( zql2R2*7I1;OuUoJTvGR?x)B6D za`mE8=CCzH+rf>H;6Hlf} z`gMe_hiQ%3&k5E1*Z(yc>Ev+E;oRU0c%$|E#O7?5f+{7*jSA(8_M^v{$zFtVG(Kb0 zEUg5;EcmD&&H*i#^ZFhrMR*e7IiNVoyUvm8B(sX{ zyJb=l>Uc|A+qqyeb-hclFmHOexR4(aX$68QUc%!@zuvTyuR%+PGa|$+!1m#HzKR#Z zcfN!}`%v?e<8T7)TzK4gnL^g_DMyUE!rbGqpk6S&DZspZgbXM6Ao2o(gbE(x5H=VK zg#dT~T{hhGf{DU8%2DW~FrNpZ`T)Ewf$SH1mX7YakZ*{ONjcW6MVFdAdx;A+vJB@` zS*N6yJnG#`I~Qbu&dRB>R`xB_&(}*%6zwUSg|2X18qXI}BgP!DF*Nk~$mMB5s7N!M z)1khCGdYrCChsxIn%-g#ntyF{=a4(SdN=s8ih3~x)2ApOH-%@M3Vwd+%&sYQIBy?3 z!x_>n44Qy(CV4pV!>mNmtVLB4vl`ZVl~^|YBMJk}#~7s@9MZ5c7I z1c`9F1vbl!q5%0~rcc8t+k-7h7%AU7WBkG0!(6-tXpOfu~o(e^(bbGCE91zXa@>UlXT@d z;K8TVnE=+X8^l9F3F-(L4Vd_*$`q5LQA*E#c+tC?hU$t7ChdT-&b{KMq2jt;SvWWX z9DFtFKc7p2x25%Gedotcc;l(m{5I03se%FV_(IorT&5DkLx9qxVh=0QnIsOMix*lP z-mz8BAp(H2iU$#wEv*s}PYtx5B+!T~M7&7t5E`JAm(mk8V4$rUgnQJ%+CqDtzH^~ZFCxL9 z_d;s&Ak~}(7&v(VhNiJzsWwXj`HZGOw!Nf&*SU_X&=~R>%`AG!tK3@bjOmH7tY!rO zG~5ZM1j}0Hi#;(~ARJ2MH-R_W4GZ%T0{@aXvcbSu*T8Hoo=-x{?JVvZWb3OIe?gR6 z3_fi5u$-229XQXLHYGT%IUnR;77&Tx@y#@FIE#x5luTyXm<2cC`Y;l9jY)j*m47ZQH%X zl|*AUu>j^>f=H4|Jzd3JWh5~ec#)hmG-=B|A*vR-=$QT*&Dl7T)8(}hGSMX(PUKjl ztvA}7>DfY86W2}8tl*vz;+!_!W>hj?54YJ$)$qOd*}QhWZDH8!C(OgF@ z&j-LdRi&*7!m=)G#JEuu0fk~3pCRbG*=+e9mw@YY3+i& z6^NC;mwZy&Gz*q=E?BBLZ6Zaojx#rT^Q<{K)_c`-y-kxjL7A@?i%a&4fOCXBBAy~d zeHfI|9VwVoTC`B&5`8^F%iYOYuu?jVYpej*2#k=+fz%y>o@i@Iwkb{Ra#9+QF+uaV zl*H@>4T0GpCm~zrhkUL5xGo8HP%8##l0xvE!lW+k*&_}ozTAdhxdl9kQLm5ln}Z}- z%BnO(V~&YNR}iy=USUBy=q1O6;wbQb9+JwBxFBl6L{iK|J6_zA$HPbsFGbxRI4_N) zQlV#EeABMeXdzC| z#v9180Sr?13zXFeEb9QGpr&(=2RT1Pgh)(UP&{510+e~Tn%s+`C#~Y>Ab4ydi4(tK z2SU+4>Z=g7cc#YcA6f)@b?4ra?50B1q`eDPCtGiuxsW$CY>JGy?HsUg>kI%F;9>pZ zL!S-JgfRk>T>!P8Ei7u8%VhZmfj)G6my>a&Vt7vWEh&Ug-c#!|XSUbXmROa6+Ba|C zkkS&-ha`Pdul`#e>D`Og5#&c(QqdLJrEa^fT#;;8ALWYeW32dQJSWs$|9edeCq%dNNOnyD+Tj zcxhZ?v={)8O2~wktf@qU1Q%(sQhgR8VG~MWT&5d18Yd32rH}U;h!_!6;x!v~pweYj zne2g2VqO#}h*q^CfTRs<0p2sga-#!Pe4_pKkT5;AVM~<@1{@V(>;J~DV7ycr=Lv2Ik#GPtIlwC zdX6O_5Yd%6oWPbNwz3ecAi&@bE3K?^oZD~Qa4oLKOolTG-k2g;L{_o1o5*vmWF3L&8m7tgA8XQXAP6b%pl}mWW=f$b#A|JD=aSXkta6p z*rTNBRj0G>j{qwyuq`~m1kNz-+_rCPO+&U*Lp;+dDr8xslk@d()r#;P7Jjo@{#noa zrQ3aj>2YQYRROdN4sBQFeu`KRGexh4WG#G#QJ%i!naY7S=03@09u-Yk?q!`wdQGHPdh_}i>* zdz!`4j-bWuG*M9@1cs(t)u293nIrXa2UtfvE9X{*ST8m~t5B#*W-hF|k62YLdrRN$%>-u7 z?HOiRmTJk&QfD2o%VnFuzMS#3mcYf=oxRTR?esDC>_ELeiZ1x3Aa>gPkFl;wH6UC|vq&a2O|>X9 z_VP&nu)CtuGOrbNL(6{=A@&B>IW446pQByOtkY{NpktzgeS~;B9cvs0|!6xQha};>i z2?e*^frpJ;v4=4E?KdUhH^Dv zDcL7^FD73PHa<;a1`CTRwYkURwgdyVJEvl4hEprn8NHFuluaC>4ktErB~bnF+m_(* zSa`&`Na*R^hPY~w%In8N0TuT>9$)CyV1dJ_MtwFUS(KKBRgs7a)Wer}hPcQ1*b#RA zc7D}fLuqelxNqnDLhtiKzPe6U61x3*hcq{Whnx&?!*^ci^yN;K*c{A4ZV4*iSALedWwGBfb3sX} za3 z2XNEF!u@X9$<4Q4r~BsTi}qb^aBjI2uKMd6kSb?NEB9xL*|^gqz>Fp08+fPK%2?=Uw?ab`R7pSJ>eNVFQzb`sKCL>JzBPcw>ebli`F;p^)1i_0W{X zu5|}J4KB7lJTm_Q``j5UI;B=Tz9DVuI1Z=LLC{FemRdGTV}Psvs7}zUhrJf~m4`&w zZ^qbQrEC@uf;~hsHbBTykP}pCp4qJKTmbTlw^ib5xkpp-Bb9Q+ve$vni8zj})w5_1 z>Z}VkTHRK!^M9)>fO@`JMLn}JRW`VwGQ(NfxzIYFQe0~D<$%BYup)hrOYZ9qc}gd* zx^PGOIscmJZ{>FbPjW$jD37j4eOjF=%j3Ty0yV%2Yw|f+&gem5?R}ex>-&NKgYWGh zb630IpsE9_L2WDUkM{lF^$H{*2_V|`oO|rP>|uRN5W_KnwabG3sr z_-YltKO93kalPSIp|r8JKBtwS-^cZ)uaMTu3q|0CVnDzMRjeQS815y^h^~((5REnq zM2JE_AcOn}=MBfJ%|7EVcMJRs{#S@zps%0h2kC;`^WE6ipf)q>{mT!iyZ-pH;{~N( zzh9>h&w#)7CtNO;!w*Eb03UWfoeyTu1s#Ypn-NnS58pUHT6OsNNE95!^~TDag|V?F z%TT|&>~B1rQ$J~WYMN(%ZB2lbHx9Slr889thJuVcgb!rQ5d;AwOVS$>(N0s8!e0FR z%xGdL(-+SKUOE_QK z$a=Ri_gcYX8F)-ms1QMoj$Bk6gxvc@w*bqg>X9|4CNtne@@>ds*6^_$MDR4v2(uD- zvEw|M_5Krf6L61@oJC4O)V3I9baTxJ*+6(y3X~8}1;F7`*k!d3;8SDzc-S`RlZGz) z2zB`QV8Cj!-dIcyQUP^4YvC|+^Ph<8O+T=SpVZ^__VGU0d(Zsj@#(35M3HwX61k#|2#cI??2$FMaskOACW*dnO9>M zqXRU_Lm?nM$?%y*C&;y($&kjz^l?wRH@=)3bx6m4b-R<{R=s_mWWS*`nW&a^*0c5C zKxCc?ZB8F1{1Eh}P}5&;3Up{k2#&PwFK0 z_mM{N#Cq%FpY}__Nx3--IY`=^ zqE4BF(vfNU84FXbcGJJnv{LZdE5Z4ToK5&R4uPHza0(JikOP46Fl)F8jViPN$mWnj zT^@z(y;61nxW~iL-dpdE*I94wS$U%{>P8dt8|(s|crPXw}ZoHLfRYsLW-9%fJ`I)5Zd2{T^3CFOe;_z5-9#Hf$eV0{WU$Ombg9A5)YQR<&PDdZASC)O>@cPOCptty+<3YjcOe#X+fe zlP^hV0*<4aDqBghKAb9h5@#Q+etYHS3}oxYe*5kAlx`9ag~vq44T|WY2bZN5?@4m> zD#YQTaFQy}XDp)Nd_U^U7Y&sv^iHOeL4PLx;aT?L26I+NE=d{sP zqytqVq+r~fPI^~ZUy3{gG3-$ddH_9WItmij^+G;4Tvq694`+47qrol@F$iOD=-*BK zTsF(=PLKPm>qpt{_j^aAw(h5pZN1>(+|RQTj9%&Wen?Mp&zV6sh)^~4_<0t#q~l~5*JHigCCNSYW~mRAB_aye zJAIcSV!c+nNq*eL)><@RQtka&h75(&LsdT`lqAZYHRwGn(A&Fabh9u4dCGp0`4l*o z&oT?92n2XK>IEA@e#?UmIFM}unjg?dnBMMn8-$*pj#}c?7c6^IyuL)fX7UTdT zr8IK-hOz&;&}*enQ%j_abln==7I(>3sJh%~P>J8FlGF2mv%_*JqH;n(IFYTAvs-nx zgU(hEio=OCK@Jp^f?dMz{kUCr40q=14dzyQ%z8t6qQm(0orbJ#`R;}^Q#X+;vP6Q? z_9R$US?{Hx7t>glM3+xDXH=2E@zU=hjW*;k)I?s#gTcfTE^N^SX9IfKq(%t>srmyVL#^Yn&ZFBp{!zj3)GG6??w=65?VS>q|g<=Ai&CnC@&1zjH9)*{uJ)Et_-<6pQ ztw`UfqItvZ!gemMr%k+l_}dm70^=bB$-2aG*u^eU6mlNj)j57LVaa#`OnSA1EKe5#P>vaP#i_s_p6Ywn+aC+PM)?_VxL^6g z@2&$7IL3$mWF(mY3`- zuXn}PGpkg}mIwn3y0wxvPxT7)=ETt3RON%(Tlpic4vCi>484fBa4B1GcDkfAHvv88 z7CyVo%X5_~m0|Rf?NsV)5zz46I{ev+WEF4AP_9NM@3hy;W09;kb zR#=x3db!XP2HL$4B5}I&@LZXt9$7DXIM)|aSr~GC-_{EY$i{ypup#J7XE64YEa6E!+LmT>{7X-D~ZZ!g3KVNfdD|j~JJe&Z4zK%_`U}68F}=dp8|^aH=dxL*16$8P zk8Hdxw)vU}o1rHQZMx8gn1kAsq6c|6gSRnJ+&fWNw)IZM^&FI?rzAaw+mcr~YxBw_i0ZqOw=c?P3G0}DnUvo2}W;r)c* zgb&u?9BM1NkBx}?(97TK&s?a)^&I(8lJZP#57H6JtS1Wvlx#tWEL9^<#r4p`nQ%5I z$%$y{*?O;iL+r&IPLT~UiztJnBgpf|Vk|&}@W3P@77k6F&S+zR%y%4NpcAuW{7(Hw zA&+gnsn2?V0&hdjk?^#pT24&?S={5tme>}?-iBIW??xWZC0TM&@szB`ZWn@P1m~iB zy=F#-UG$@pe65W=gI|v7HR|woX<@|ayoYmWvEIZ37CJO}@Ek!D$L< zx69Gu)3+$g1l;aT52vy9w!iS=om8sH8g#Q*{i7O)n>pu2jJKR$1~$*Wx!f5PF$SGG z49YkO-9?SpH4i7$ZM|*WWX&f1xWtwSYCko_Mom#z5ACMVlZG&;hojn-AeM5<4C^ff z$pk{_J@H_HrSq+|r7f~(i;$pVy;dFm%ELLzg;tu2Yz~GRPw-xVUOz)uj@Zg z|bCot|rH*ei{#Ug#bZrIX1hLkG{mb!u|w~|5K5S*8?S>_z9TN3fDz)^-kbAt8eH6fEE zsrI4RXpiuofYp>mAi^w01+_Xnl|EfrtGsXPjg1w_>`e9AlDN13v3ITOt*Ss&7$@mg zJ;#@#L(I(v|`I(=IhGa9rZ+!=5NL8<^*?)U3Utk*um znT2NYcrrk6H|xGEbl`WH2YrIzuD1dpY49{o^d^Cutn&Nh!_C_5HibOBulMqtUpuxg z)cJs$f{?X0$pN5?_CQN0!S=buGBt)xy}X_c{f=oplO(WC)$75g=uxeQb1LV))HMjL z*RzBKx>$I7zr#jK9a>s6)GrBxE}hpK-TvP`rLIBqt>pNW@$CTuS`2u7yLyqlB&s%h z6>pBa_!jGRPF@c@hVvx~Xi1XbzB+O9DmbO?)*2$3_IcgD$M<7f>$#!@7bKeh>}TaS zoyKF?`ntexr}pknSS5!yNRAaA%p}+Zu~Kr^P~u?q7}oAI6d@cFT~KtLy2;XdTge4d zxgcyw0}(U})q2LITEE;1?4xTKs9dl>e7!}BExz9O*IYVypS0c-)O@||U4-+?M>vO; zvRKIy*H&PYn5zaMMywED7R(Hjgr1T*F1H}%B=_}RF}m+>0fO4h>%DHme3AW<(s3)_ zeYq1|L|lo&607S}(U9iOl}uS}XbNy835xo5_1p%KVRKFtxXRxu zlLJWyr!bs@K^Xw2*XRVsLkaFH?9Uk~Kyv9MqRDQ>BT;?yI`!UF3r*KJ#dB!fWlG;U zAQ}1K?#ImsO<;i4ac(sa1ZM@1i5*~x_}!(l;TBdlqraZfK0S6glzrfQerJUd-o8JDTLxrAaE_DEOuaFF$PROD0=(ydL|fT zq4c-*P=vG8JDuuJW>vOb6ODjbrLq&6r5k!mwBo!z^5h#j^2S9yTP9H;K$fjyMPig? zt&gWD4X8@6dApSX6vY_}xj?#TXlTk9$({q7D&0e1VNKYGb_rS}-(dk-M&Hoh`W`?Q z6ilB#o}aM53NXC|yx4DD9w`sbnrjHajxxru*(?w$DV4RlN{`a8NUjJgD)x#>WwXF# zt3~3LQ`iKm6!cseXJ0SKGB!O475v~gcux4`lTLGHK_Gr6sBbwH0Z9sK|Ac=9B;|ns z=hRM}oH;5piAP6c`Aygl3VWns1X}z6diY9`1 zZ0x{Uxiz^Iadl}Q7->)l#pYM50K*_(y+AZ9bc{FqL~jex8T0jGO)AaiUjf`%L4-3~ zhqW(CfJc8=itB1U5K!HPER)0|p=B~9+U5}QF&^g(SVK__3#^VdFFMyX^$gB~I4peY7A|~Ds^4~YXiRC%0F#(GLoIyQXzvt z-bFa;^jzp5q>~_wPig}QFxe`lZ9!1r3KI!LEGN)~uSo0t*(E|)w=<%)Aw9>pn z0Z*|(S>6Exs0BL0pvHc+N9TRTku;leDaoJgQoajm^ zCADdWg^>*$;>CM#fb!i0@ttf`wMI52!i=Zx$>Nb<0~}bBFDxH*%>4+nltCLH z=4)Hd^&}lWzh#gdN1-epH|=GRSn&jA#90dMO-x}pt!${Stx%~NO}@d2dHDrAPd1nS zdJQWl*Y}B1*{(f-T1rjJ!GJ4*g4DDQpzg7vZ3S*#>JoQa+rSAo$&69GQZ|?DaU7$i zvNcQ%EVVdAk33O#B^rk6?m@z-^BKGrR7E8O>py@OU%7jlFxe{^oMt1^>3uz;7y?Z& zNOPgDhuL=>8T)i&M5K(eh6S3I5QPXKMq|-UY9_JOU2& zN#Jh*6IB$tE9wx@>T*yy2e^gWv`6*c*gS^;6QYL)m%yzZAP{wz+(kSHH9&y!6l8PH zw!P`qOVYW429`mnx8Gbxv@wQxv#y}$g5~HI3SqITIxnZOb5iRawOerGKp3e~|JzNN z6q=ycsOL~&If!yQQ0&JbtAAJ>7>E)C5n15#D0M5O(!=+9^Jh2OMu-k_d2-0r?={Jx1H=x zzcq*h(Osh(#}3^4ksioh%kwelllPBNrC9NpZ;kowFFxbh%pt}l)VTcY^NZSCS|pE? zUd&G;si|!S4Q{cohp|(~3i5~RwDZz;=wY8f(3w}0TmTpZRjr;o8Z`i+|w>d23dp-3g7Qn7G!H3@&M{hXv=GGYukgjHz#r-3gDL z{StrbeS0qc{njzpPy5&>L%;bCBaiWanYr?b313f!T6lz$cT?90&J*%_Sl|4?Q-rU& z7@zzY@vu$xzk;m9NET~jVp1K{w|fl*eLdKFBTq^3Vg{8W8eCZwm$P7|Y{Z>;eGx4N zE)PSYT%@0^hvwgZeu`vIJmylB2Q^chG0*<^=bm|$3o62CSz;lYWT>U}@HZ^36*41u z%5qXKd57ubYN?y?k7+%t>HQ)-6>L-XNJTiY)-1%BQo(Cy?kBDec$zJV|G?-a5+_&^ z;iLt5-s3Z@dVzgt&#%|RqjG|KcKF{?I!U_V7mhC^D~RHZWRV_1!8D%S}R)n_ZdjlknSZv~vDz+WSHgS=KJ0YRibUT&Rwsn)yHImgd)G4YIf@m8pZ zUuBJA4u;c4)gU1QjQD$|w!w)BX-vEIcx|8BNzB zbf76gvz&5ku!8Y}hgJaGrzfk7%3c5h7A@ZUmmJuqEk4_N#vHBJBvH{;V601fspD=@ z!+rA(KkiPQa{l;Xm;F{suG-)wBAl{_!G^o2n=onFfhzTEsm!r}@ML2ycVc1rgv_uL z&-Y{TGEu`1mB-RV1DegA3o1(>u+c2Snbl_~qvyi4t1reR2xGq78%!cB5X&Ozz~Gi5 z>B2qB4H)~|o^VL($^4yR(q~j8hC!(9<@I`ac0K~%SXpeuD|3hAIF9I7=L@j@-AOvv@1$GKq{pd_5wwaMHb5* z%j@CEYuoPQxF6(Oq_euHl?jCF?>!xt0GPZ zgq(pb{;1k}e47O|?_ZvD7I|cVmi5@Pjqa{z8i8urMzdh1XHlGV+H~d0t5C7jc*Fhn zUll&>!ZSKdMq8s`5I$(x*gTCfdw)!6y$DZ)?5<~;?8i2m1+s2%StJ`T8vlLeZ+NB( z!8#fmuQnF&?JS`KKr$%RdL|@oM5zVD&O{6Qj-gqS`7->$yL}`zUhcr`zg#RG*$QEX zE9h>8a_k^mtDwrATtI0>|67d(Ty}`;-UHsko{Wpi|6^TYPAKf$jm(vOlHYuv+Rs?{uYHZ`*<|ji(0wf zRSg5)F!kXcGCUYr$I5fVu;jIV0oGU8jO)d+NnDrCV8?vDu7$!Wr+FM_^O*I&nLMxk zjQ;;|Hk*#o!~e!hb1(U4<2Aq}=<3eujN7_g8K8yBzY3y}ndT-Dq5P5Phm5 zvfTu-s`k#pC5`WG!HG+^ENBpsGnaS`veGXIVS`_!7#a=C~1uY2~@w>gO|oOQ9X z$(xR)Fgu#VnGp;ui@@P0z<_cV$EAU$U)SIZ9)mGhJdPX^{eR$87TyOmhr@fw`*Ug8 z*LTf|tjy+WG9c2TZne@UY4W))>)j;Qv9;>f-3paahPw?pS+~bjF z=+FbmA%!v*g%n{?2R=?-0Ovu2RZo@#eEu}tsZ6N57FElYZ!HK>x0!M6yf~bLU|qKf z9LwSCa(y9a7H7AEPahn)(q6olYtc+2qOd11I8Mw`i;jb5V?t< z6vrsh(kVAxJrvE_<+DrFM{Ob1A_?b%aY7Vh5~nE+tJ~MO)~bN@L;^KI9X!GNl68-= zTJ?Q}6P}a&MeSLM*mfKf1Q7u;#8%a`IW4plY)tD<1~dj=j`AX17E3kM_0!CVa~JGI z$!MyT*`!XL0gjnvIGky6gmv<>{cxw*S=Iu#%akODTtK0#H8{i9&>JO%08YbYTHZ~8 z)R@Ggulvcu1HlT_=$a%z^peT*s`Pd$eGyx#;5fGD2MYPH>Zig;UHu@-Yfh@Z3)xv| z5f>q)>36!`n}wT=g5Xb3x39|#w(K_NF6>vSyDQx~c;3@OPyMT4P8v8#FLL_F!f+E1 zl$78cT2r;3U&9FLcSA)M%AT<@h3Cq_ddG69*MGK`LRT|M?jVl!(_O%{r z7Euz{<0TATX58N1_}N3OCz)tJS#Qp2D;6TtANv^sG+}s7145&gp~?$0`s3m6Z=@W@ z0~l6eL5w(V4cl9R-Q$%R9{;nX%deI$_aFNx+-nAyx^+b1>>g_=Wv6^S1Ow08iX@P* zd@{z+lZJ)hB^Vi0QArdS;wNHSpvPdjJkNiBGnY$c6qB%6^j2{QF34)Xt<6-xBYlt5 zu4aHEKB~IYwEQ@9Rf9iKQClSO*krxD0D7noCpS2`W@0aNd8eX#_QP{Xbtg?9TvxhM`wU;^R!#|qZe$@_>x|qI> zG`CVehq_|wJje3DI^~Is)ES|$%XefEtBGWp%7texxB#kkIBPFTVp+Iv2r=}aH#+Sy zBZIQg!2&%SH=I08YUr`!Ixy>>NpmYdJ7e4~p5^uST-)Jw>M%>;!v-S0#GpLlKoEE&T(V^tMXr4!m!=U+ZoZl}-BYo)4XR|=BY8Ng$ zT?|hC+4Abmr1NatMf15nzKKsboK2oxNk}m9^$G`msndVh!uhnSDH6XkgK`ho_zL!2 zQ#dnykUBa+HdQ~xqg7n*K_Ym>y`zbg(kq?|L0LR5FJDG*k%MsnUkjBjpPTouQSbBR zg&8T0uZOUKMx$L0|7KwJYmj?*j;H?ceIIIc?^H$nmv~v~U`Txzyr|%*W4<5i*F?ek zXn$N)?wq4S;S_srNd6|M8|V$r<-<8Z=Hw&Y>k>2{RXmMp5N#5b?0!U#2&3^VVIpb_;T)iwiE)cWnmNqBaP@?Q);Mms@zBdZ-i7>o)yA zipX50dRaD0(q8W2vsol742Y~w8<=wnr$v^pX`hEdYb&qtxki)=#SgRDn`XTQG;V|U z-g*l?V{Z<2!RTTeEbE14y!0D6oCii@R1JLH=?TBvYIA47IozTXzx=oc`>Q#eT{^It zPIVT!xqABpzREh11rcK+ku{LQo*;f2){}72IO6uXBo}8s+85HxF@*KP1}_-$vm_XP zX7Dn>o)sBMA4;rjt<+#RUq*GiYaU76Rf|S@#$|ReO7^JsP6cbL@6A$QC9{si^peK! zqF&+jT^_i85i0LUk~E3y%|?{$rPC!}M&g_;%A|RLessE}Wj%(m!O>%Yo{>LC-p(aS z3v~+U-DxNH9`45p>^r{1QeRKRYD$;PTo6fywK$PJ{otJ%Xd4IcB0bA`b`39%Xgy_w zl}nrm>RmW^LYrN1;blBVC)zmH8#M{~ACfuU^PDo;QR4q|1zyxc4F53x)Incwt>CxNw$UU*hsA6Yc09b!~9NX231MGaTuYGz07 z{7|05nT@LpCUugjvXRnR7}r~=*Ngfz$fWB^P!tX8(GZ`}BWD{+AA0ZWS=M{$5QKSl zaXrI;(r#ci(f4j&`h^imS(%@7A}aV9^*h5{_H$LrvP@1Urm5IH{JOd&e49y(rpBk* z@b%)To=B@0MAC&tMAZz124`GaOd279M6bab8QJT9<_f35#bA`lzu@bU6^0Nd_i?>f z*kJI%`O&>FQYq=cqJc+ib3^!J!`D+M~Ih-c1gjCthHg*?$y`CtXgNqjQ`n45g+y**MF<9t1>9oz@W`vqwwaoGigYy=BtR!A<%mU=V~5)(v5)v2NVYs zb_7qPs!p;&39j-d*H4~=5u+NsK52Mu+YZKQoh+oT&KQbod$_u5OPebdUrcj2?&jg- zS*;6Hy9Osk6fI03X=S1;rdP&#pwTnm4{%EC&$vadORFZ+8o+x(koFOz*1(&re4a@L z$l$)Gr0F%XkK=lU-nsHOQB`<%RV#aYR>4$N-p~v4o^i3Qcqw&a|47dhw?N=v^0df7 ziV_B0_@txJj z)OiNHcAEK3bcV(Vx|oWehi(xYalI}VN6%HMceLfZ*yp^Wsj|!*q~;!Brr1Q3aaVX+ z+6vGKDiLELxOnK3Cb*db3Qz`&Y~Lf<)6a`NiAIJe($_f6JuUL8uj5nPbpP1!^m zZYDaTN_D_8s`;SU3CIjdK-7?vr^X=6PT_|{A63fB z2+ThIp-=d`YEr86xGy()FUceOF^F!(^^&f)9i8G#0ol=ty-c%+WApXI;x7TbDnO8{SU} zhkSK$sISY!{klVy3%{B?ag}ZOyb>ZRPJOyjlf;+etMuG({5U1+?p3LGN#&lVv@WV% z$PRO^^7Wj@x3~0>U-#nlT_cMfVRJX1z?uBSA#XjtMQij^W&Vy?-2Q2Rn|f zl%}gf$fzbz!<9jAvkyQ;fwO$N1U zIz}%x}dbt;vHA$jkYY4ZBLC{aGRh)cw zI^nH$H|vp6HXufqrQfb>Akk1m%J_^r#x%rEH>5O?jQn!hQG@exDy!#|YaK=iL-oPJ ziXydxo@k+_6BZ5lnhSFEKJgipX`yWI|UC`^mP5_54itR!&tr-xv-M79Yui7b(U4f zkqXh{=~}(SfV8o7)~4rl|LGoqy)V;ZTC2a?9ugvJ#?vZdc7Dod!;0N8NexBO<8kfh z>B77XZmD6Q{2|9KH2IUQb1zm|j$hCnLKdB!?5$L#cKVacNIYF9M|ZmIAM1)e>PEtW zYMtfhtjk#!l+UozddP&eO?cUCxF6X5l)2{+Dq{8slpTIigj=Yq`hA2&#=fj+v&k83m+xkTg1yNmlCF7U*_fLd z%?VB9l9dNg_yvu(moXh$Dot5Y5$)q@RCAnfb2c&^)62L|GN###`FULY#5XymcCbvn z^`p6=a@=XZb}e_o9v9WB*D2&`mLXYUrpf}PN1e;KkS3F5TQRQ7gmhsUbtd$(<7PXPLX`EN~zA+QoJ3@*CB>)x&e8*E)=!IEd3^H z2*I4lw(KyJk6WX2nDbCk-J8%TldNSLBCqXx(LtO@C%fytTkxLUOv=WlmTPD`MtApU zZ)2BuTTP$H`kG2kA<*tHxHEN3r?L2|j}+HX(h|^L;VcMXxJ<0Jgn9Zc%n5NfSE*sv za9qKxkwq&-Sk&ECuip4U-#8gWPZb?yHF{YUI_JwV;}O0mwU)HF((tQ+h1=w)+;7=J z4lw#l@AST}=Znv--v^5y4SoFSZNo($uVCf^?C2{jtut`xWD-Sg&st+czg7xy_;eG>oQzsm65yL%TO zETBWY^r7$5gAB&!Lxumb+6MN7&P8YOh6zZ&dlSLV%Qnqzf;cWMeama_qE@7cG zuPm=@`krCd^H|Y)dknM5r6_xEu32?Tk=)(ksue}cXLxKQ>uoQJ=+AQHiaJcf&iVXK zLUSwG5!7Xgp~cNNv3Eey9VE9*(#sO_6hu>JJA07)oWv4zi>3v(f1{3*lb5EP_m{Z4 z4{dPvn|_R<`4{6sMUNWs$&8)b{-gwdt}E8En@qLkq|Rh_@>IbP0032LPpz87(mZlK3Oly`9f0H9Lj9JS_1607++nE&0Oo>=zq4LfQT=AQM~{Fvvr?#->9>Mdh9fU9}_x=AOKXDoTSan)SXK{Wz`KnD#pT63jhEW zV#j%ZcO_fe(9{-c9$)|fpvu={Yd2;IWu5*bqY%CBod5ug>%CN3sB;1ftcv$Kn?h}j zPY4|Vl%YGa*mVqBc$e02nts6BE6et*uc%)D zfN{M?en5^*sDVFP˟BFJT#1^~d72&eHa*@}j=cT!T~;L9>Z4gki)kCh#nIc=2K zkg8c{-W#4gwF&_Q08huUH87nL^u&4NteD*_gOc&~;PC-~=jnBwWfsyxmsadi*8Ip6 zHe@?w2p<59>bxv7EEPb?wO;4M-n-7UcJUla0D#WxqAaNt6s`4iYKkh2&1_UME~FMx z6T%U20001LNklAGFr%Ep#=ay8JFn_r|C7#Sy-Jj!6UEV zG+Pmc*$Ds@o}UTR*-U5?Uie69xnWXP1PB0sUhnx4Jta@Z