From 267ce0ba8600d0ea3881cfdedcc4e8608f45b1ef Mon Sep 17 00:00:00 2001 From: Florian BRUNIAUX Date: Wed, 18 Feb 2026 18:48:19 +0100 Subject: [PATCH] chore: update guide content and add new examples - Update ultimate guide and cheatsheet - Update llms.txt and reference YAML - Add velocity-governor hook and cc-sessions script Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 5 + README.md | 18 + cheatsheet.pdf | Bin 268858 -> 268598 bytes examples/hooks/bash/velocity-governor.sh | 76 ++++ examples/scripts/README.md | 33 ++ examples/scripts/cc-sessions.py | 498 +++++++++++++++++++++++ guide/cheatsheet.md | 1 + guide/ultimate-guide.md | 25 +- machine-readable/llms.txt | 1 + machine-readable/reference.yaml | 7 +- 10 files changed, 661 insertions(+), 3 deletions(-) create mode 100755 examples/hooks/bash/velocity-governor.sh create mode 100755 examples/scripts/cc-sessions.py diff --git a/CLAUDE.md b/CLAUDE.md index dceeef1..91aa6fa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,6 +29,11 @@ machine-readable/ # For LLM consumption ├── reference.yaml # Condensed index (~2K tokens) └── llms.txt # AI indexation file +whitepapers/ # Focused whitepapers (FR + EN) +├── fr/ # 10 source files in French (.qmd) +└── en/ # 10 translated files in English (.qmd) +# Published at: https://www.florian.bruniaux.com/guides + tools/ # Interactive utilities ├── audit-prompt.md # Setup audit prompt └── onboarding-prompt.md # Personalized learning prompt diff --git a/README.md b/README.md index 01fdcb4..283fee9 100644 --- a/README.md +++ b/README.md @@ -463,6 +463,24 @@ TDD/SDD/BDD are not optional with Claude Code. AI accelerates bad code as much a --- +## 📄 Whitepapers (FR + EN) + +A series of 9 focused whitepapers covering Claude Code in depth. Each covers a specific topic and is available in both **French and English**. + +- **00** — *De Zéro à Productif / From Zero to Productive* — Foundations, first steps +- **01** — *Prompts qui Marchent / Prompts That Work* — Prompting method, context, hooks +- **02** — *Personnaliser Claude / Customizing Claude* — CLAUDE.md, custom agents, skills +- **03** — *Sécurité en Production / Security in Production* — 17 security hooks, threat DB, permissions +- **04** — *L'Architecture Démystifiée / Architecture Demystified* — Agent loop, context, token pricing +- **05** — *Déployer en Équipe / Team Deployment* — CI/CD, observability, 50+ devs adoption +- **06** — *Privacy & Compliance* — Anthropic data, ZDR, retention policies +- **07** — *Guide de Référence / Reference Guide* — Complete synthesis + advanced workflows +- **08** — *Agent Teams* — Multi-agent orchestration and coordination + +→ **[Download all whitepapers](https://www.florian.bruniaux.com/guides)** + +--- + ## 🌍 Ecosystem ### Claude Cowork (Non-Developers) diff --git a/cheatsheet.pdf b/cheatsheet.pdf index 3cfac646932530d5f8b69e55c2143fd5a3e62ff4..78fda7b4e356f4fd45eadc433f52b892450b36f1 100644 GIT binary patch delta 65964 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 delta 66247 zcmaI619W8J*XA3iW81cEc5K_|I32rU+fK)}ZQJVDwsq70?^}0f?#$e^e)ZO~pS@qy zTdPi;I;WcI5Zf9MYX*T+XkI|!5~e_YfG~3=lmas)z=A*}>;Y3I@PR-lpn*_*I|3jq z(9DF4gmy-j(Au1FekchsAZYc=Ae_JuqM|A);t~mh1eghQU^)LI#I3&s;{-`TKmx`| z=-whtFok3WUw+Eo6Hmy5Bn9Mskepd-KX@1n`qXngY%4t#wM9zFb8Qt?JhZawLv=yY z4Eg-R!FaC-iNMh@@CBE(uGYEpXkqp_Qu47_U#@gF>FZr8$+PKb@j+KaK<{iXf?U2= z!7(jG;d$+1L1Ix=2UUEo!akal=ht}?;_!5|)byuib4eWii{jnV{Q)qjwnhrvU@DXk z?a(Z=v6-@F3j3gN!)(9I>y#MkFJY&C7u$TdTK$C{x3f;!YO-r}e79ynjrieXu?Pl& zOv5qfYFcPxG3D_%uu*R$&+}B_HT<<}5o|H6{7~FL#OHdFIqY>njYwh3ZfY|dJfNMCO(e2LRw5q39(_oK5>Jj35s--fSIi9M|f|JuVq*|$Oq|5fUD$Z z6QKjx6>>C~iZmzk4DpVH!6Ydzl-qP|28d^30&|6^+}Iy(3R5YK>C8kSX?RnRv-tk@ z9^1nito{q^cH{(YsDsO2b6EEw3tNNhl_g?U8e|Dj7) zT86Opea5WMhu%Et(O<{uk7>XZfRAq|`r-Qi{$3NUk%g9t%hFY9F1Ti($JO@+r6Bi{Pb`6yd%Kp z9^2r@5`&)d2Ef)+_HNtF;}(ntBY5ZnRvRC?iHD1t%jUO^mzI%=sL5@?ta_KD-b2;_ z&+yZOBo0YGc~mf)g^iJplZM1?K@fmyH12npWIZ46kei!FN2akc272O3k8<)5NP7^Z zVDEL?UNbCa-){pGmuK3KYAMS)W8mTOT6NwtL0t^=@s78b{jN_S|D z>yCoY>nHY4t<+OKaEMx=JOboWt38K76dU@Sgg>e7_q$>(GYv`p=rL&o4ZJcRF7`O> zfrWQ76^8i^tF4mCtiX1YtIIM!+_I*1ELL5Lpa#1relpj-BiFP= z!NH;zFWa*qB;I$b@d9{6%D^7#U0L@yIW){*)Q#;bi9+D*fj117F`rd-^@GcLe5y&O zd4@Z9j_<#FRlU|mfTT4T4@`N&rjN8{4BZqC3BEKD7H5ARoq;gqfp7)NnQ13%f!sEr zf_gMa34h2*4TkGK&T^`A8z)KQqM%Xhr1NKm7&a3|%EV}?F97f-|D7x32S||uF_dMU z|D@plf!^K^JbxvRD&{r7NVJesv^a=srj`CwuK3|MYA`7&7{F$ao(j&PB+XtX686}; zC(MpzWlehy%%tBpXwUu^f?x}lVmdbQf&`p93Wl{gQ?61997p@1bhBG;5YiXrU7Hiq ztB1#chDSJiFAG2et*Irnx}a7$*fTs$wZ?o^a`&Q@t{C@hqw0a5CEDYqcfQsgnPl-9 z_#4pxqxucmU&HWfbNUWJDvE2(8qHs0f9>hV$Pu_XnzJI|4!MhJN{6gC*1-XGew_UB zjI*2~-kwRBgqNT#s@1;3r&tp8o2)QU3{;Pk1&U|+Xg%NszWp8k=+pYT5izjm$Pb7< zfIx_T?M~dD#SLFh@aND=(VG#$sz=4{1RByigcG#iw4FVy)L0!yksv;*Agr5z6yf`D zxqyUEN(c{7qhhXqMwX%0?|&{11L)-bLu^r0+NrDT$HBF00;8?YvjvOo?mme(wYMe5aDsVYI( z{{*}DhM556H(=TZX6S*OUwcP{)V3&JvQz+EsW+Hq?r8JF+6CeYU&lAtm~-$f?QA%? zAAnyE{p^5qa)B|9Tzb~aD=clP$m}y-U@z1(+8;MPnX@+HxHv87iNH){u6CK#5%_wL zY|0#ajlTs!u~9mc)Dp+3%nSZlLN{0E-XBwuLX+(xI^4BkNl5l-kYRoL)rS%F=ye1D zuB!+w2QLqrfgDdBzuhn3B%k&jB6PXaWPd}+T-iW1@2p#mZOAn00&aKjoMq;<|~;+Mh9(I=8HParGp{A8(q*+K#D5J{E1QO8xqT8179mdkhtvVL~m z?1rGq6}$z)vwhZ=*XGZi@qv7O^?ZPcsom6FQ!>tpdox|?#Egf5(?0-+UO@J- z%CXGhB{AZbxr;O1FS{M{5-O2j^Z9u)8zONOGEd|rs=}MVZM{%NIZ~+!+EOzzoZ04D z&Pq?gO+n8RoI^c2COe^YN;+^kv10vOQ_RNQ>T{G_icxY6R9MHLqrd(I`bWo*VNMqr zEX-C`ZFJ}ldI3z4LT(4{m=~r~ro!>nk9^@wT}kuMJ8^7; zMkVTqzp?$-J9;&8KUxa)Q_Dk>;cv8CrGmf?*5ywXB34syDfhfpPxSpqk8X}_1)(3b zorHRcD+l{9e{}SkER@J5Ry3)t%HVz!J`T@oYo(|vyIq7N5qZ9e+Q=pWro#8!?a*Vz z+_3^yu$xcQ8zv(IVwSOuKwvnKU<7{Xw2mM-8e%wem8o=yG>|Fa%I(7CQh}>cB`HyH z5mq1W%{uJiW6!n`Li*Y766uybW!+uD`Qm{-Yt}%&ONTa(nmROUiY}MwLcErWq+;5IT9x6@X+Y< zDtLKT#Wa-~Z)%C3>()of!Ak|@U=e-er{S{Oz7+xWU zdOuHwTOD7@TR4<@>p`GrTs(I-_MM-iM>V5zye+Yo>7DVoHFgUGG#3z6)z>%g`bMZ| z?~76O%gcsNN)zrLJjzoUyi=G_iAEK|&X+epBYU*Ei2!kwIYE#O(;sK z*5PJBIVhMbt=vHWL zOek1AnshI>h=Uz%_&5`bP(`E>XYAwuYORFxSVS?OM$Tm z2<|lY-)*ZLcM_8yzff*_?|8gK*(s8%Cx-WC5vT#e32#sU{$P4Q$%MQm+9%i?@DqSw z&~Ds=Q*jU%Wu+q$;BLE-SzUBs=>Bpm>!c>+x)H6D8YHuNt$6vJ;R14P7bZnj&8Qwd z{d6?~+y+O_U(8_`BV^%Tpq7d8h9y1%KA(5f(zy{roz`Qr*NHZFCYH_AD zeLY zTTnw3@81o@ZDK8IrPvE(Fzdl0ffe>SXOboyf|XYz4(4t*I)jJos0@iDsVaqx7n|1H zH+G~m_MhP3%5E{jL@BfET?S;>ClubGlp(H6*TI_r19~r%iC?dE$Q^Lz{>!;Pc*B_&T$9KcFrYjrMH*C%C?2|+g{+?KE^~v;Y7v8Y-!9?G?c~XsZHF(NhZl; zCoxDQyNp_{{x03zg7x(U?f@N-3aYBATf!gv!(oMmrJs^YP>6I;4jZXBKK!JT$a=|V zC|rL2v%G?JKlw4VM{J@>pq$9Lq)ie$OVa!j5N?nsrgou-woi+(gEvF4ook|2W?ralQV8{?2Fv zuo66PLVO}*P`CWmus=Cxztfd2=gIfG&W>q+YJ(3hS~h|ewNSB?Ov*Un$3?Ag1M6!0r+D4!0x7pBFUaUkop%%b&{Umv&wg#VppRK@(Cn+vI91YJJ za!?dm2Xu{k{xr&peE=RfXhO@bXh8hjaqrvsT4LCOuXIAnO~f58iQAiOKt+5Q0Z@sN z-R`({-G%FxRiA&5i%TdqwEUz5Y?+Z{xeu6e3A$Wgsv?}ol&gibJUuZx3MN(kLD^t- zTz>6NOpB6Xn4g`!qnt!I!LC6=;Y3o!`wbE`|F)@$c=uGI&G{y1@x~%^tWR}8BIBqW z^%}mc@~)2P_FQb`%75(HnLcO4xvstO`#AL2uD!aS&7`24+y7Tc4$PZ7;Mj8-FXQVp zuZ8XU;Hln9PT@ShHiRwtjC2a04~OSsva!}@K{&gI$VMSTs2JsgTB-9Z4CD>o4)W~p zh9|yDAuCI3>?<7oF2rIpBtZC_ZV8(E+!fZ0ZpVTG5uXx$}Bmq&wVWew|n$ z22Q6^8x55x6cy6Sn)piV;pSbo(Xquv#c0G`W$_dZkN_t5~jaYDV zY7?a&55j08K@88`arIck;&IJ)Zn#7nm{P-s9VU~eIoFX9=(=JWi>c;vLG4+<u$AuyJk-1N#0qCCdTJ~lqF=jP)2zV7h|5LBg> z4-ZD!Hp<~0Fp?4m6fR_-qT+(SyEIc*ii@{NaMr;>MfoV$!Pfn)rdDmJ1Xtd6$$7^$ z&Q>8+KODQ0;KZ}t+2zP;b}T6gw@Rh1)UQGeSfiOM6n_fXA_ z69#dS)D6|E+liBA8JM6S4zTdY=brsE&}}1o=G3ndJ5>n-XrA^k2I=7fDJ~-hb@j&! zH=tE&f~grkcZpLnpL{9q8<3+*6_?f_VjN<@O5qr?YE8VDMNF2|9^O8wtQ|xR=rVqy zyTSd?<9m9IuDNf)9783ksHn|23q$FI(f9ADwClhnsVb2x^o5V>DD07f_F^m6P|knK z9fz5wYk@}xcn9Qg_liLe7Frw(KE{W8H7eQ=-_%sR=N<-L2QQMPH79bd2+-|y*^At#6B|4Vywa&K5CerV&xb#;Zc$Gs4R(@bg$le+&*Ef(`^y3YP(O3rR(%`>i=+ZAwf5AluK2$i?|O80~#A!uaryS_7T| z5k?OSKpe>DVr>cLdNpvSqe6q3Ls(`K+rD)OQK#?v(m zT$%yGE8q*(rPe&~q7sURqdG%?FM|1e*D^wy6&%dxY(*XGINmzX&dWs5)>IN+m2$GF z5ZUM^J2IB$Cdc>YiJox8eagAAQK2C@;_JN;P+oUYGeTc3RYp#uL>$3^bUnD8HmjMu zP$t%ye{a%V2_bv2T=>Krv$2P3g>hLWRaRYHR#q)vw${l*Wx>I1Sl*&F(Uf`1Kf)h8 z9Po0^Poy!F0V&{tVXFn9Kb7*bJz4BL-1E+V&5j9UNp7~%5`K^BjtT5~o7aHuja`@r zV51I)PxMM{9xbbzQ45Y4)-SV9eMAD$7rjkr*C1X*QOP>0i4e@3L2$bEV57I;FI{qQ zy)l7q6_%__M|iQnq`7wYDVoBxqv(lNchl}?#3n=af@^>>#QE!s_x>u)*!1NI=pwYz2$H0ez?=|(Y=YZvUIltm#cM0UJ~#?-QAj$vX69dAbN0NZRu0cZ^LNP z9yCEPfbWA6eIo2|#ZuhAnTQkx=F#-iQu!9GfmEHf1^aGX)mklz8j)wu(v`oCUi1AC z!aG@eruX|7otv8v6ffttBru)~OlaTd$(H!3eT!c)F-!p$N?Hi8o*TBj2 z4|YvfPC`!RfBYMfljR@m{|Z_E@n3z|2*3CCKPEdN=l8a=eWyA8!@t7s{@>g4y=J#3k0A#ZoAHi*zrcQBI3Irn~qE%X&f`FthqFyx}3B8cCw>tJq%vA-De^l;(0>eZ_Kpd5~{%weqFvi@#5FIQD{ zD9ePe!`H#B-gb+6K_I%$_VWrNuKKXN4cqIqjQ-L1M2_oAI;~Y#RUcUxE)Ed$F@x)M zU61|fbAt^-?0{T8hfy7zAIrgikaG4~R!Shc+nYy!cZfLhkU(V>deY9&_V}||RoA70 zv`ctHGCsVH8Y1txozpGJ@a}a5;j*TzIZ9!KdN?_)4=|7LWhdYy{u?iBBXrIN$^A@f zS@l6qCuhV5rfRrpqg_yGqy=z#%KVuHaZ{ZUfT9e|U#(OqK`)&%ymaGxa+OlV>j#Dk z(>>Rm(dV4uaYP<72awi~%YlE2djzua;0d#2M-vtA=!DX|EQY zUk`V08g@kjIN}>n%C}jvXh7!@|1?7-x(d|W95lJep$0jV+_vj?aUx(iyCu(qVOMS z9>4>mV}30$T`Tp)mM)q*J}qpZ`Zf%|A8Fp298RL5oZmG*!%2s}-+x=!70r8tUE5{XJ*5-|gi1zg_hhPzVUu{=JJ4Fr512htwYtGuBv>=23V zxPHG@?S;u-e*9RgMq++1O^6Ujm&!uXCowtSb0c>|#w$BYRKNKkxaoY^PdniGdc6o1 zATtTcMD%#PpQ|Mi$&vO>iOm{s>2^3A$ubXerO|@IirH&FS|Tw=|N79rYT5?8ff0qj zP19%Tt9@-`YyViS4}Po8=4*C)^y8KfkL}#*d&)8so-m1=$g}xNiCFoEkb4Kqs6$x7 zcZ7s((DhG)p2RTpahTt~~; z;khQT*Sg=z+Gan>a?a&$vQr1(?Wu05b+aHpY?XPG$>}@Vw75FhObeEB{B2g``+MIS zmy6(N4pyw?C-x3HKL~`zut@kw>QNmnCleo+_e*wf@OWnc3!GlH`SC3Z%6v)=ruFsI z#5R?wX<^If5>Y<@1f_-X(XcO)%I!!3DGA!~U4ZlyS!-N4Ko~{I@-Z7$r`W5(i4|)SbrvFj!zVCcr}v@b8ckSoeJG-j zBJe5}h^t;W{ZFc?hGIf)wIAipBJ}r-cVELE{+{1G7rrpQkU$8a_>jEdC0S?6v0p($ zPr!Y+nndtM+albsG?=r~>r$XYoD{Y~apO)%9^I-b&`x9XW5E6sMml$lJ}v=ZS@_fMjhLtI@_9e4 z>hI|2Gdv-%Cr;l{$e$e3fhK>1K8h49OmeQVJ*WgGQ`~gqY|ZIyreLnQjvM7%F~)e# zlVV6L?@#~z>vb(7ahi!>VHjZ`Eh;sv+qcLSb@KJ z?5I4P2(^~_MSmIj9OA&Aq^a#XIupkriW3Dld1%iB&|p}A=-ct_O@aIA@aa(~rFvG= z?)5OX}- z9#%FjGfx%{R$L+ePbOOv2pCl0ZC0HgkH-a5*qKvHB{}&g3)_B=)jiInhu@BWqo|>T z=JA~}pvZtfaYPoYKcMt|6GBKKap^q^$&+3VA&DOiUy8k9*wyZ~0w30z80i*6U4o~m z#+PUn6@6k0{@M_Zf9T#yrw+;%<(kHevWL-tV4HK>r3btR)Heh;1~eN)B3_noHSn$m zEq}>iAw6{k-Ic1T|5r$DIQuRMdNkw`jwU!ffcCfw^r>cW5jZHyKy}F$jJ{6iS;#Fq zw&V|x*t_bmaHh*ESABEil3C=;tu?F zX4*CGoM(3?!P#ipRGlV{84EV~;`OWf>m{K-5GDEa1>Xbh}nY zPrSxQW~Zit;*u>a1mw<#!EnDO(dIzH0SzEpEBH0Gcd`e5YLRPT9}4xsIMW~@0w99z ztUVzmey7z$mAcsm_8bVEG&R6?W3v!?cc(Xyx8bED+fzR%7s0hVU- zU*2nH?cMHEDbJqW@ay(X>Mj#GeUVfdR>eB~yhBW?!sq;*=x?9MBbowf5iTg42>!`LHk^y<|Lxzf8VK{JIWw&nM|!H>WY4h3ge!K%X*Q$HuUpy2yz`+ zQ!}^|J-Nk9WwS>?ScVJ3Jjw=Zp-?=`2AfF+dLr%NgR++g`J3=x67WCie=-2kKsIrP zu?pQ6{bCopg_=at90CPWP;JRQauY&-It`-pT;iw6+9Ty zPBTC%p>qD>d5N;+gr0Z>g@XD0k??5d`mY=J3)_IYA#{+nM^IOoz63;sFKCKRiL-Eo zdXNa(+jOZ0^6Pv-*0z~qXfw!+>L2n=POKJ?(hl!#xJqyE*GsptoRHVZ) z18Ib{ejcj3R!IZv&=cyQ6rp@N#)w>NFxP-RN3ZNnE&+WH4D$_}!t$AxYYwcFsMM#o znjB|R*|EKz!lb`?Hjy`kI}i!0Lk`jmjWsk0`s5#JO3x@B0_>f%nb|y4e_f7u0w{u% zYob_Y{`fwqpM*$9q$Z>d$#<7tHGBHZKhcbLAvv(Ad}LJCG3@OUVKWyAnraZY#_a>P z6gE{q@6jy;a)J$q^QuuEMA}z99u1xu;>l7v5g!`Sk&Ef1Gr!xQ0SltvS`z;knJk@Iz55W#BC%!?O6}5OZ|V6DCj!6pbNxh zzm4x9s*1dhEw(Xlfr*grBQzp`eqLDR1s42tmp0yXa^GY8!*3(DV+q|qbw-DinRIa zmvA8SR@KMD(9SW4uZf|HLCpmQnAv+OJ+|-H7JSEQZ+MIz(JZF&Ao1gQylJyEwV z-Zh+vz_pU51!rBE5oa+Beivx+)Mv!`dMD*+qsd05QT-(eXi<{Ngi3O}0g!oJ<--vP zfaR~HNw!6VcpjE2&D<5o;3zyn+Y3wwEB9OcCL34N^-3k*kv$5LLHrCq8%L~lv+e1L zoC#1dU>09x-*zAjU<43+U>$HBP)2Kt+brfioP?ynD(#z17o~ z*NAgKVxh_(|G8}Ov&PZ9;LJchq5VwosP^vl z3qG4y=lrPvGD9SvOJD3BN#{AXmwmLyA|bC|8>$T`UA49{sVbO_*s=xtlA(kQ;8*(# zPSKukN)(_mIgcb!#5BBeT#U|;*{hO%>AvG`XjF3#o}R_|eswQ+VtkKNxNsRlfKOt& zaT*dm6S@N$*B26QYx)^mwu?YT7LiB$_Lj%NDlaajetePFJgr0I7xShUdFJ=@BA)kj zk|Opb-4^2hC(6pmWMiZm3E5o$Y!e~ryIq3w13Zare;~U3bNv2yIp6?kIvrTKsjt~7 zuhkiI^vh&GJ#4_;V42jo7EhRO_7EJ&sDR9hga3=+vqqUh{fB?qVR9RHBjHFxQ*3+n z-TO^baW(-ZdjrPHB?>xV;$&jLf9+L6eCQ-HL`N$3^Vb&OGidGzz@G|5hHWLvzr2&L z`po_Ods!_Twubj!io z(y;eviMx@z+1AZTK$i+`KB*QdN0)qyKIQ4*9M|~lR^)RjsQk}bKJj9O264t1wc@0f zDHA4mrxh)rbnv7Ibi>KC?L?3R@A#kmlL7BE?`O+BBMbT8Cdq`Bo^h+nN;jj~T^(ik z#j@(^RZ+^syG+u)dEKxo=}4)>yk1&mhOH#bOS4w2Lb6Z&{p_crxPD73i*0=eBt}J}< zwQ5|n{hKNKb!+zd7B+r zFQL@VC(o~ey~T~QnBQ(@AA5bQhpQ`ycd5)m*EbW{k+_5iH;qH=+!l1!3V3P8fCNjj z%6{i^+`weeW`|=nE~j$bHdXiy>JZx`k>;^n?Sq-h|FSzO{-cYu2Pc3ciipHw392~K zpg%0PnyPjsww~#&tae84wmjGEKKEKt7&bQnM_lNW%zVEQuGK+xadQ*nw6uvDMTi?k z?iW?J8C27{Ro-oB2muI~;1fV{z?UF8V7x!v!0gfN;d-7U_^!6wic}|98;vHGZc{7& z78?TGdngSc?4j*3wu!fedPscBeXW4Z%+Hon6Msqa5u`|AJ$mTmPu#v1yr;*ofLAj9 zY&5H5KA=?Mp{uJw<}Ytv14j^MdNECEkNI?UWw+j9*Yt>vh)g(_gg+*mcERT63871hAW)s_q^Pk+=!8>otBIuDd{H&lpdtIFFN;K8Zl zc`W5tpZ+q!lU2o2Ttccmba}ZnyMMYSd2d_$`_vYKxwv={~a5d{R=`{HNbT62Pq0UG~@HpmJ(hy zbD?|^e(}@Azj$r9!er;U$$=NjTz%dye17EjGgdHG+is?%CW8XI|RTGnNBjd5+*{C9%yx|psy*jBHy(Rgs zeu=Zkem<^gonU)f?j1zQ-NM;|Ml<3lXg2}Nz*`Z8G@5c%m@?ta+sF26jTqAH*PuIS zz;IQ74_W!${J+Myb8cLv1j#BeKvil2uLrRok&>Q*XT zU6>B0ErUjg!}WF$Gr)ETQ&kR{22M*=6+0pb?>?96Ve|wK=4VLl-gT89094ac*@am( z)dIPMeg=3Wqe5MFBJT(G;2@ zQ!`W2IG=a~2Gp@ib7WP@oD-L;iKh%#b!ap`@>H~()8?0W4j^;G@nz=;rRu12d)^g9 z-nrlh*T)VtCgWrX_Rw5s{M9ZRmosK2H>?~UL^1qbx3}+}?>aCB5CRZB1TVZBG~w@4 zMo#Bc?J+|U@S|>*;Oqnb#=q_8!!`k9R>m(c{K-@Ub#JhXnt#!b$3RX{I<3^c#w2=U zN0UKP%sw(T#{n*hH?^`13BqP+HY_GZ$9kl3+-M6TebJLl|tq5vSSn7dy$Zp zQ8)N@B`cPtjjg9%x)*THHz#pZg#us7M^k|;NDXP;7x#D0vbHfqsJ~p-L1Z822qxZZ z`4Fw2OdJ6!7@=l-ldFQAoopK`Gw9G-r`pP$hE@PqQh;QFd~n{w<@aed?TQLN4w8u6 z%8zjcQhkHnvhvWg2lrQ8`-Hu!RzZiPd7NZbxn;^@Z1AGIKUS!L;r>;MGi=apVl(U+6&0a*Rk@-RD$x)}9=>*^;EF{k zfX+~!TqTLhxcQfb|C$R01pMK7RFHSjexxcR1dO3H>w;i$U~*OMVS9@Hk0UP+<3BTN z@pm|p5(Tq%c6L_M7u?9Q({?b;!`?O|rD9R5#xNM^aCUE?0G|~C%yWCsxsR^HxQ?7r zJZk5A$dP>Jrw(q8cFpDTg=?9H2N;$s0MaJM7nr3>!hLt|>ueN(U5CVxVUCHxq5~dZ z_RI`w;nG~Q_^*iTEa!-8I~{aw!U%_zNbYAH@B1G-`lRH2d)k<3^N}0j`7H41gF^M3 zztABkcmHVOvPJ}${hp!ykLi~7Pfl5w8Hm`YV~N^5lP@Abw?GU!bzmldqcWQ1@+Mr# zU?zOXKmz=%)TgoQGt~4{&EacR%c>C=;m?3$m=^9aS88!*)ou4?CEJj*QfHQ=1kklj z_0vy`XA_#%27sz{s8=dbtsmL~2-rRIqoe&k6Io7Krp?wOI{ms%RE+fH|Fk#r*~nke zH$fFd=7=Q+LVB|MFe!pt(Gg zZoQcGoBOylsUMxo{ADc#L7Q)+Q?>J|@5dKZFw!7araf+Kt?`n%k%JL8uu%!eOf`}WYEqhVNLJ(?@>!Sp)kgMx6}lZT`3vMlZ@&pWtp2^ zQ6?bfMoTXfVE7@qQ+b9F*eq9Llv{HXo=9Tcflp{8^>YHwda@1bT!KR17*saRgf;15 zP3eA3w+}Ce_TzX2EGjyO`hx~;Hmgve7*Ln}^45Ly)0(LnLs+}l`j4(Y1YYsI&% zh0yZ9%fKw3jv=XJM;*C-gGI)DR#+}L5xM@@`TvtN{ZH<%S=m5KXck3+^wH>wVyDJI ziJqVmiXSzA_UtGq8DQx+)Ii;A+?6I35~#lvKTJ7%=b{@dw}#Sv8-Vl<`{;rlgIF%7Bc0ym(0WdpYgv+D98OO zV7Cgp_%VueQPp-*iVLF(21xgP)mr{8*Kr{gu25bh>#qmg_}{lUto(eJNXg&!lT#7maZ(JMgyPdi2MjklS!jR1U|}bdzLHwst3|Rhz7n>WNNI0kj|AA7ozD ztT8L7oEU;JlQI;KVX-c)VTCt44ocXr-uO9hDcIPwA4qBhR1HYmqpQd|Gx@6nJNpElC`|Q3{%nU~D z4zw$UL0pJ)P+Z8r@GU@YK-Y}hzk8H{!oCu>0Rn{@!;2C~yw!d6 zuApwVJ;k^%TzI{I=CKMi&1(iPVIh9L-`+X?LE%YB^6q!kTr4)wcjX^95_P$V7%Aba zX;67>a+;!#hSEBwS+Saqn%=H!YP0TEt;NZyKhP59HK#$h9fr*DcDdF({hV@zxFLYp zjK=+FU*QQ3BygOS0&qp0ausq}wlHWlYaW)mh)o>Z9O zGRv2xlG}_0gC{M`tsWqo#(Fu$5Z>w_30ZD1Dp1p?rsgdc2T)NAF7!(yC`ggoIG15) zZ!37)WTVnE*{la`g;7MYQ@x3r6OD@JQo|Ww=6Ta=A8TmU35V#Q$_9Vz_L~~&o|9fK zwHf?7ibG{%dlu-UM)0SzyM+BZr}{^Ym1iNy_2KH9ey-Sc@ah{5*;yJhl3UO7S<&%$ z{<{{{D~H@>h1beI;tUC*|81B6*!oLk8p356Pn&q4vQ5ZyP{oGf#-bRayS3} z*E^NAjCI5nRoKOk@+u~+bmK)kGS%+N`&W)c%IQ%XZ;{dG^3GfpZem`Rh6lL9Ir*P! z=ehFz(EuiaUWT?lYpz#1k5(z13|gutZWxK)g<4@dHufg=1?Xv7tPgtQxy^W6E#wPh z0q^we{XKT(?o=rib5*whC&U1}n7ky-fh(iG!cEyT3erqzT3TvZ1$l7gc`X`blU68O zv^$W;zKvq1m7lj3T{`M5xycY58S?6tUT5S@mw+8nHWy5!GwSdhm5bae4}=V2U0p@b zga>tFPSuaXZvV?T9Fk9NYy}4fcOjSe;LpR(J^|@Za!>ImYOk*!FUE>WU=}I<4J?Ot z4bqQ9Jtd@4u+nt}4ohB?YO?QPw(B+!TB2@7H7hG?6SNvra z22$pVs&yAYmSI;NswtRMAjGy%ZCV_te9vyl`ytTvg0sLIV>H)aC_md-xH^ZO5*PI) zc%j0(ZfC?_paZQmCWqS&Z55B8Nn$aSj`JK#UPZND!hl)FsDCbUO*&Ea{cajI9YC(k zem!s*x_z9Wa}?&^;!i=%M&-a53iXK5DitX#bgKZyV9n_KoO<#?=a!`$UL}5SzikL$ zzFW=gZVz>jUWRP-PB}Zp>&_4mn7A=HcCbonC1;74{zO``WvWS6Q!2CAz_syo+$21T zlSht|ufu&IHAGGLKH!CV{V&*a#eef{24*p|K$M_~QyC>1xhE2f0lo#X*#E7WUXuq2 z>Hk}C6{n>>f_gVdE|?)XLmttFEn?&{9+p^1p*n=vTmQJi@LMUUYt$RXk`z$H`l1uH z=>c99MXxg)*?ajY!DLba<20DJArue`m>0j)|LW!M71FOST*Jm$R|2SMi)X;7JDy1l zU5rNuYl*Yq+u1hUZ=VrJw0CA8%n(%b1QG}nD;f)V-NVz{vDdvo{}H~OKr;&bOXf!R z`?Wsa!_@w|Z~IRPiufo^Xk$0LH_Pz5nPQQR4Mzw=A?F+fo%G;!XnX9!I$DG?)1Tq| zjSa&FEfS2gJEDVH_>dXg`FWqOu5@0C~XaV z&QVYb_ia*y%zeKEUi)~+Z(H&|<_q&bnN3#!FAtdBJ<;Ulizqg~xu?y}9-OZiWm{H{ zurOnqq%BGtWUWs%L!X~OF63OG4NgBG-(!^Sca;dsg3n$#Nk-8?}n^G*kXi72gn+H2`aX%1~#Cl&5K z_54EKnyDt(yhvIeC$XWIravhv6VJhSl=cr}++MIUiZ|{{GuW9_?-=f4+a^j|h<8-TH_A+x)x;S_giY>^vT+ z0{38*obC4k%JvxXc4uB?PrO@F=9%r+)wcKo5@Kv?N@ZO?5udW&dWIPexOt~pn>;xt0GCdw5BA=4$Vop3Vh z3j;D~Ld^PWX2NOrJUyNW0s8I`P{=4A$O=bDvHKW-vx_j5kuU9z3H#ltnen{&^4ob6 z5`M>vDdiAEma@1}x&9+I?8usE@WpD0&8{ggYTw16gDhMVDuXuWz`|?>u7J4yZ@)I~ zXNYZG+^Q`euL;WH>LM7}x+haaLjrP;-5Ix7vNs7M^vteTHRgdu0ok1;V9|BMZ1N7Y zL(UcM^h4}YS4Y*|H+I(q@eRTVAEem6>XO;Aw*}&QJ>sJaOYs)p#CTf7MCEVy8uCup z4>`$QvMVky+YYI$Ujk3{w2_^vf8;yLt7%%$f2ew^T{TISF;}+bzQ&A{d&<1M92c=V zjL)VfS<%n86`n0_l+qnF0w*2nxFzHB8)bwGA6?ljXz-Zfy#s^clMDJx>qadm&mm7t zH+2|Bq1qJXYzw(}`ZfG_8Iu|?TcX|WbxE*2%fpNo+)MU%VCVLN} z?*u+c4ST1R?#~$`G0Z__m3y}6RiG&z+9DxsDd@ExxRXQB9@@Vfg*wujTvR7<-9HpJ z*mHGB1qN5|Z0MiX+iZ6x*G5?sM8-`r2T-gKG7h{OB5JeW!qtC z;wbg1MS9#0s(rBk;;dBfPC)ZS=_nZ`33LCz&XQ? zCl4W4SaxC1X}?e70OUKZ_Av6hb>oCs_=uTCv|3NK8~kM59jz28L3ak}(zxY@6M;P8 zAeP%@du`_K48i11T!b^OxIw3Ye}}2%dHc*noSW$QosD!lD{A*9VA?+h`&0TDJCI7w6vd?{@piYieTq z%o(MN1FmkFv+b{FxCiu>w&8V=YWAuT;Ej~`WvlsbVq`e!gUUruF#8)UuN+03<~Bap zSeZJdTM~UY%m*xuwY%QI2l=gTm-AVBOWKt^OC%`6fI0aF=VTVoV3tlIqdkOMzsu$X z*RGj?%3d2sQjd<WE);jD7-baHyS-X!zF+*n^OMm|Y91BHoUqh7h=5_PdPw8EITx(u)T^|hD zqa%m8$4Fl*a2dIy7q3cgKV5n4^@#lHk&)p&y&V?q0MXOF^q2(0zBAm2jqU zv*9Rl@dk|l%P<)+IDk?Vlam)wifb|~`k!W(O!SNr*;#0HubRRw$%fI-iK(K!9u>N<%e-sq1f8aj~3j3$}@m~ey zpUv^9U;K;Dv$1mhi+>Ksr(Y3wXMzPVe@Y;qd!O;oM)@>7KI7AL`LC<;&&T+OKjYu) zKd#C@2j;)7%0I*7Gd}H1*F#9~Gf zNoV@XzYHDw`}K;C(vaq>O*c`A*eeWLwrT zeCqzxQU%?+T{`mIlenJNFpz3p?}Oo@Y+7;F=h(WE=y9ObWa@ez(f-#vskXYPt&Q@L zz-YNi7f@~9Qs2l}--dxEu}9I~O+8o_8-h-{9%Z-HOPCbqs-_>WrRM$P%4mql^kgsV zR(Zt4Aloaqv-R>-g-j;XMRXfb<4kzJKA&-ITuL02>KkJA8JF4494>lUaUB;62djZL zJVlOq7+9iUkT-HBf04IeT)bQMj1>-2)=s_T0q83Qu^uOL$kOQApO6dHb^paH%B z09GJKLu3)cAvl$-X&UJ}RoP80j4n$*l|2k;#n$}Id2tIxOmGhj0Y`_d#oAs`A-`K} zo6q8TcnO7V8T4Fy4_1Jblk-;=4sX$%peVvvAQWt-vPB4X9+W#fxwVSqW8{|R&s3CW zlsT14S|QmKkeot@lfXDgN)%^>t=K6{U}HDEJ1OuYWPLj}kO5XlDR~HjUUH)sUWz%u zoawpX7G729P++mbH!rX^Yf@W3HW{Eh!GElNJ4qX`Evp9WJ-+gyU^uf)T2MXvf%vPl zI{MHd-_kd&5AEvI%RzEk_keANw#!NTONZCR!&}E4KdKarCCLL4`tTXI2e0!%KxEeT z$PHkj>lJm*_qO=rwnYw=dQJWE|cA~BhR1ldjWjipDXivbW`DdKOlXB z?b7($4y*~^k6C?LL>q4Y-iiq;=S&UxZ-2SPctuibj)uuAlKLgiP`o0+AunDid;ka^ zs9o@5;vk%5ZTJYSPjosMPyQ*fIRsl~_5jJ!rtHOpDr##u&nzi{J1oY=XDf2DgF~}R zpjsQD^6N5%pUGbcqA$+fjZ33oSYtVDXXNDFM+g=n#ni*eYP+1N=HO-frMR*pb@g@* zPVX_!U9OoXSR|BN3&|>IbiBs(lms9l=(``Sab0ko2I_|fGANPgf9e`osxL!g+?*3X z5X5`*T!~R418X8n45#d5D%P2~ekKGiOWms1#KSMv)R$xyK+#r(*3G$RXjpkt(z11u zCTdlVE72_27}DByuuGEyfjJFd0v5L}`A~u{{y+uWj&iPD4|3U59aMvtH2_Xud8$x@ zbuR*Y&)xbACmXm<`&0SCdpmG~q1!RP^L-BanX}hYx28YnNP!*gXs{r1dE(r&7gQaC5AFNfoi6uDyf0^#W(K>lc@6- zI?lBZ%$d1GPb9jYHya9v767fqv0_zERS#}aG<7cV@@-|-LS}^_58KTT=UbzWaIehQ zu{k5#bBc27-8gRAoBRX|kIwnn(bYbqP9hAvdyKejmXgzLrDlC)YO}!aWs(-1Rl{-c zW}dIZxh(A^93(LFlU_mU5iSh_L3Tq3GKfKkbsgvBo!ao|JBHHLZh(!~=24>~`(j-s zncX=Y+2TbnT(u#odo=>@R1B7JYCVwf%MVtg5Myx}k}k1QL|M0|r94-a_Scy}`b+Dm zKAJeg)Y4@VO#WG;svCHgD85 zNJys(7{M&DIZUV#^?+HRQjI?D?&|z;It9A1kTeMV5vCNEs+BtlHZGwQ>*0q=MNS3B z{tC3yhJmj^wZK81ncGt0P{{#qd$(E{`5|kH4zV@K?$lKKubk!vs=17ccM4_;rsfD_ zeW!X9d6y=wJFS4(?b}o~+fZOt-;=Jv;;G;=g8 zL_#9fjnFp=NqC06Mb#t$l@@997Q)Fc$w>C-T<;-xKtUkL8YCIZ$8Xok1k+?Lf}{X} z1O9}8j%d=d@Ea9OrhpwOFrqT1fTb9G!)H|81k~*9E+Q*Vev7{>^gAjO_`~IFgfFHY zA^a-%@mw;xpJSqJVX?Wi)RCj$m0n8Trh56Ar>-E@cIV#v6O;3AS4VkZ%}Dv>$UbwB zc~B`{0zqov{7J1JkzJ;E6LolKPYYOwh;#l_b)?ZvE9{Csq$`uXL% zqV^_RRMavzbx*gdu!swL@|S`J@tOtx@_BKiJ>a|J@sJdT*bESf%%CROOdL|H0l?d$ z+2XF~)yG*73VLCkQPneK`(*TjZ9Qu{`}TE1j%4G29N(fG-wI~v31tw-Op9!JX3HVY z9r<(fDHK8f;{?UC;4c4#LYa*3f2?1BgD9308e&Kegz65+%1lcvfAg8xnrvv;e}f7T z*jz}w!8OavWAX8670&~vr*(aNSn?F9A-q_8fkFB*s&mQwuR^Lu`=VwBW}GPanU$wJ#x44bR6#6yA>^~3r0W_Q z8Gsx4!ud&sOw_>Fvr!l5TJ)?=O2WN1=&z6r_xnUAXSKn}%&4K8 z{q`p!qdW4Jdf3hab2B&XR}^@PcCykJwgLddM5nq#r27}bs42LOMu3)hb*jTfY`pNfuNj7QXdUoxhq#Lk1dmy?7qDTA(eT4fRZyVtCb$DR!BrHOo5llVsIKB{kCKU(21v9-~j| zFI0cxaRgWV{l}+zDivYHIZBEuZR zt`mDOV@j@L)m)}FT&X2&j79fzGKLE$Gp+3X$6s5EnrFK0gkuIvmO(tTFj8oMO#}xH zzd5~Jw3TYK`j^968T*_k#h>7eWfJPANs1kL_m4Qlb2N%cTU1y6*U(^!Uuh7scd(vL zcMdJ6&7C#Rl9p9_4Q_jc5`Pn4^KzTU%p>yccSQ_>HXs19dpi=T!6I$XuvgWKpL6-@F5Inz^fBLmqtKrOg{mLHnv{{e3u&3 zCl32hgG~D<(Y7E>goH$7M~Y{eftDj4R0u{Om*xl8RNa%$s?(pdi&b9d)xSUQV+Lf) zq^y};z072X^`#yUA6|ZFPHQcDeLM!$wYKh_e67%7TV~>onUDh_otLy`ZGhq`7!kZI zBR+oYsuO#WT6pr|LLUz(Cmt<Lv>9q7aKEQJ z@sK~5(2g38q3gmf@xu67myU7&H1x6Vqa8awJ@XgL*W?3EXu@6NIk?Z#u6M+6#gwlU$vH-b{`A&iO2!`e!D>n)caBa_ z4JSn=?jz&RBJn{T=MZ~Zgb?851_vGfzckfZMG+CEZ?Iw%-TX^wXzl>ML$Bm>9*+T} zGE;b8F5}C*3!zP5oVVN3Jdve`vjHt|N*>31`8y{rEB4!;?_|3iFy`ivi-|H1jdq=# zUbQ54j>;~@949yCUf?;I;gd<{9tc*-K0G+mRVnm|ZdLM4lwD>099LIdk-Zc{NL^)` zdO`NO2-{!_m49h&m8OBhTqE-(su>PfnAMNk=M#xm3+1Qb;|q%~^J<&<`pr7Nr%ZOV zR93$`k$Df3ic?aoEk`N7u#jmjM_+1a{npSb>zmQ?Z33^rwPjmDTLG^?p;7PT+9n6v?THc($Q39X62=9-rJ_&VOj?PfC{aS#H(EU-Sz9 zk;aJ)Tk-CCp|Q%(dNTpa`_~%u_!e~~rd|(xb{8|iT%qtuow}xS+R}GYGy=z$%@3D5 zKCsU5X(GQ(C)|b@XEJ zaY{C+Q&vytMHiX4s}^T7F2kE;xrG#SPd4aM@C_66ce?Dhw(N#*sp@3Kv^;6M zWt0?WUdBl}Ci-8Pm};nb6U77msH}asQI2-F<0sY$_jZe5m{l3@+R? zzMyb|)twpyw$WPu(6kkX+vM|xv(8~H_V(ESmi_EKhVO%n6iYL%;{<{nZl z8d43GaE>nf+A}3o`MD4M=a@(xf3Gw^$K?|`&VRxZWtg~6Jyw6O=}lWD+C&H z|HVi(_P?k8JqFfy7nTk;C9+qq2yT(-Ir^{1Ov~C-YfLZTc$}n27W;G$< zH5B@-!I@(PrQ_=~*&yNRDoH<~5}901)yRNmVUhArG!wTuf}{Fn#Z~HVYek;3mPe2I zWqh6u?RK(5;3n;uRG!!2r*Cb`haUOFF{nH)th{nadg0vZgd<{pf)iXttnzo{1w2`` zk3_kvXinGXICB$CfDgO{;j%Hy@Gg75fJ&|3QrAF{KPdsKcII2{jNd%YkQBJ4B@qpR zNr8VkYxF-ZsP@0%qL6rl1MP(ac$|}N1Ru*RtB27mT_%XcshhJi{Bb_eM z$(bB$ht`$+haDTG6Lwis`d1E^$}}kMfe|69C`-LpHt(C8rE^V7WE&x&VM5$4^nf08 zC{OSp>@IZhW+M=F_^mKd9VR~-DEoepO056DEgebb7vlum$ay8g)`>WF&01Rw07L!w zdm7qXd=GU^7Cm}LE>oftPhwbpjokCBV>7QZ&^jeJoOZ`fH7U{S$*N}p=L6rB2 zD1pC{#&&X1;^ZhpA0FE z)gK0FmNYU=JsuWS=7@syUX=@Spn{eZUGppaCi`{t%Wn%pvK*>df(0F4cZqbZQu&H_Kn#cW@zO$%4`_nh;svNEpfg6DPj^8#r3 zwlH{mX1tX{(7`81h3c#y@ubKa?=p~s7d_iGWxq39y^3hmncozGQ9opkZ`GerUg)?fe3I^cBZ zxT3Qss-M?$sV98t#UD>%@TOZmvaaK}etxJ5T=Wn9u(`Xas!jD*;xX8CDle_x*HhDN zcKcGsJcX^seh6Ttj1^J_@n~TCqocRDWvw&%er&*n!Q-`_8e=V;3Ff8;$BJn*LSFP+ zGs=0ztCv*0TAFttcXw4h^;CSjrtIh}wK}ui#)|k=9Q&{n*QO^)^uw`=RO~ z(p|7IaqOCZ4){FLB{tm~GHo9G(IDk66F8zp*ffood3YR78Bj#I&$tB{r*cr!vw{Ody{6Q#&G!bL)t|CtoB_1 zjdnQd0snniml7CS{Hp04w7PSm0{)tmG?9fQC*a&<|FV`u*s3guP`DxtDBevG_MW~s zAIBK~dbn(!kUszXK^D^)JSK`f!CI758K>=FGEG4)szuH^s5<&Kqf84Eb)`X;E$UI! z{;PNvo6fyVAme3kB+aXBBQs5XW)=Vzw`A%YDbf*~@pwpUy6J}J{&r(EA^Hf1XGN(F zxhY&s)S6H#^0XZp9uy~OWRC3;Gceq6Pvu&e)+^TAT6j&%<@$h}8P*p~b@<)85P&)G ztXR9w|2oloVr|fsa~c84!=u8y zy>tr#9Y!ttmwT?YLM_}Z5;(zZ@@wozR!wdx!DGTF4ZfP_@zA(0{NAV2^>y>GCg<5k zvoQZrp9=^k=+rQAyI3dP)icZ=-6V1AWU9CgQ4Z)T-`>SIvoba2DXefUAfI5J>!61h zLG3iI4RQ85gnB1UOd+%t=2`&cqYu3WD6+E%Me?IHKLqTHh=mG|L>HV%=IQ5|>F1>Q zrn!YTi+z8778F!G^7gJ^9NSMNVvsu6m3#7Dqay5M+E<(y9!K#V@2b-5W?*SI^A%l> zXvDFFI|Esvs(+d054&ewNt)6VH-20k6ZG+Bh{#Ww3k77TC1JQOnb zS~wf2=fXSFOrl&h%Nng5@e2C7)@ro>xi}OOar%vtJ-DZ)F>p)2jzpJi#da?);QdBCCjO(*Ajd+zD zGC#=x2Y|1T*ZzF9An;cVi5tGrDW**t=d>CXwAB={#V)1;Z!pbngr7_FUtw0zhWf|< z59q-=8Fp6wI8c)ct#;F8MS%HlqcIL%=3&5wSpL_4p0_#`8u-_x*ZtXH`b)>mNSJK0 z0_BDSuYqbgE1&kX%`@9ok8aCTs#Zu2nTeaHVWvOvxQh0R(#9|9vUF()tqi);TVc2_ zM+GD1AGA}Y9!Vop&dMGx)vOECjkQ?ePXP(_MHK+aB8Sg=eJjt(%z2%bk1gSMD6N%T z0(l#o(<9*UKAm*gu@zVqG-5omr|?>>%R_e3!3zn)5TZ03+xQ|jA;d~{^5@A^&Z z`7{+FT?KN4-n9&tukLpX7p(_6LnG)3`TZXxYX2_``^WuHf+6R=;Nd6QoFTM)*wYX0 zNQIvB>SSaRg6fe0=u{$Aex71EdZ2f3#p;6XV8`eRp8#@>Cj0+D=c_$mloW`k@eT3t zLGH1vp=fDi=jKQxNlz0|RGYGY?ESV%^1Ay&9tEGX>xx?8CgwuP$X>W3J#m6owT*tGqnT|He`b>J-uz=9)+%>WJs22V z^o-N>UGTaTLHvF&tKLUPixESjqDI9^lhAV#%b-&=q@t{TV-OSFOyuK)I7Pll-0FU& zs9(lMA{^6D%WpS4l7QzaW>Q+_1^)dC@zt*s)$V8eq($sbVzYLbHp)d=l=giD!*6W} z<7_06wc4Z7X7T`*7W5G9p!0POq)tF>t>*+o7#e`?4>+EaNL-}nt9>)T)q1DTavt}R z3|o4Wdfk3T?A)YWH)oitwdVKs!hGN20nVD&-0oTd!mPCR3+WY3c~2_LXrRBR^;V>xBh&al=MY0t1u4zX4h zsn4;_vS-JQ{={FpqZHIG;UzCE%{MrZ*l+n)*xG6na#lYCoW2C;G@aDkRJw(wpM;?O z7V|~DTsbsA2cpWN9oQHx(r(2u${gCdth43P|HR!tAIegL_Hk#d3^B_t9H(=4ukMsG zkhJgxC6qlxovH31=t;}SSNL}GZ0PDss#w3Uzh*_YaPK?@A%>(aP~Gu7vjauuTlnp> zb-YF`*XsmAv_61ceWZ7Vt8quqiGZ@!>ko3yQ=)KCrmm87c`?2Tsf`%8UHrvom>365( z4f%IWpz5kW`Gc(XBOYYbZ{)cU@()I~>BZ}^m_gr0lyTEGu|BIt*h&nF%NE_6`d(zj)ZYT|k7rDB^oVG^coPRgD=u1ORQ%idV*y2DmvvldM1uU~0NNxP z*rq9hgaj(Gc`?TTCG>NMrCKKEnS>OdT`gcel z0hely?eFoG=JV7j=DMfz&E`Tt;HG?x**x^s_}{3w+)I?dQ*p(|d`po5 zx6_Y1X{BF8$-Uu?msa?}I&62|nE4tXy>k359(~s|Zpemn2vPY1*k1L+U1;A?SUnxa z13iNGd{Fn(#(V!7SPwi@XOn&{6P19YCXMJ zd*gMhI4nLaIQbG0SiE`}I5+6xlJbx?8-Q?|WX7QC{291{W%8z_dTw`11?174ITQ?vB1iN$hI~O2aKp=aBwHN0Z z%~8SC9zi%)pjWH?8)Idy3trc}@ufAficx;6^b5}bQ1jw-=@Y9wA(-h|i~g{T<91VH zLq7Xz**L+MJz};*SGC7@e%9mOn90Z7Z@HE-VE6TkW{}a7!D4OrVWjdj;lUj(D|`l4 z!C>;Dw_*2sO?yA%Z2$HFxSVGuINhP)q?q)@n+#^WhOuDGtWgYSa9dD}HRBp_^GLt& zub}MXa`n5|MOqj+Ki|zFW)7EcEDZ2=8$7;u!#&v3$cRVhny-pDJI6|DWe%I>BCm=d zwk{kf^CYO|t0|HjdXXMx<_uB{=7iioHhdogjSSx>bu-+H!2!qse!>GzW17`bH}_!g z2f2>tw{)+;6VArqwf@EaX5a9r)_^EpdM5)Mw*r@}y`g3TyoBh7AJ&HIva2nMPG`enY@7;ocE4_(&-Iv z+5L}<10@7yK7?@q-6%31TYJWf$NB!j=KESt6MryPm~PVP1eEuA+#fH|GX=L2=y{*x zhU4>Afm(;(joN98mD7ny5vgiM_QDt+V6KN+A4`B%eVm-VPoPbpiptWc)mU@rn%}Z^ z^oI@f!2(I`D#&?dukS$gJa=_(+7N_MyQCSCEf!R{MsX?TnIi3 zGB_=!xp_F^y8`beDQqo412_ZO9w`Iy$m>OZNVqA@6Unj=!Bj@`S=XV0oXN*xd~Nf* zFrMTy2|-8>$rdOThUQZ&LvGSe6%M^_jiJMx@zC#NreGoBawTk&0h?h{by^KYKH{Dk z1h%W%naEp7AP+gUwrorYYpGO4=>XDs=e3iH-S}jD81qsEw{fS>>h4iiuZxtVIM`vh z4;toiKCHd&V|;GR!s;?S0UatnrMme8QO9*r){cdR5KAWw5{A+En#yT#%nu+q?x4+l=LtG z$x!h_z*+9@HoKJx{B{sj>=z@Rk=3)y53@`sX8FIt`5!)McY`)h$xh?JgzvY1TeIF@ zfeS+4$0J#8Exnk5Q^ccU(v|Pq08M*^3W4wQc5m9ndl_$e@CD!v+z@Vd4j<@q%rKEU zdRctl%mUMlz~4_tFy-5oIXh> zbplS$&)a7o{N5j%Ki+S=+8;HY@C&l^9M75Zj`WpvU(%i)pHGUaIuBgx=d^i0pm_QE zJ_HEj<*U1?H^s7_rV+&{L{aC#7cJG<*NpnJfRSg zpDdKOVbVkLfIa6AWhE6Im-P?!2w%~$gbRK~^qoc82mP8l!aw0(ztX-LjJ@dJSPgcZ zoCEXL_-qfZANxtlJWAGi0jM`vB7YF@hVKqbelEtKf0d#`-ug~87}honb^uc?M+YE~GQ=@1Z+L9FG9teYC7Qf9)`kJev zCiAVG(!L?ewS1YHt0pps2dS;K4!;5&sk9ahT-wKD-nd|``&a84y>-koiAzo11_^PXT_wLqM=-8+52Tl&Yd#h1!xFR{)nkM`21aX(n z%Ue=K_Up8I%ARNl2+@U|ssfU;#g@yQZ+Hp_S}{O}&-aD=C#tT?d?{+W26dU>Msa&d zF&N?$B>gDn%sXKfv4XXf>`4l#d9&_F|FpDT_DQOKAV%}6sv8n`$sCQ}$L*aAGam{_ zR99y`CXAmsRn<&YXQq6H+E<*h43M8 z)gmCn#2~>XLV<_`apmtTj7PQFn*NjepfUOOi%8H=Kr+6leGK$VUF!$2C_(Xr9>Np? zF-0&V4hdqe1mOd)L4tTpqG(g>X$7+Sn=iSJvX4L%`(LwoXXXMJAN{3l>-WW?5ErBr z$zuw$#8QS}j^Yu_?kvB@l3hVJjW;<2F#pUr2i2f41cPvO9N!D(56Fh!W5edtGjX@nZc%_e)k(un;C8 zq6y7H!Xc*YlkX$J8)6ku1lguVD-m579?$6_dM9EzH)yEGawD>GUi)xB>;I(&bg?O+ zVK~x?LWU@zRlyjvV2g=LhVHA-HnL1O8zHvPO=gjF}z+-?oS1DgVKbQ_$ez2%6xF7STP|`^h{GNNTSK_#Kg$+*&(uc z)@UFn=*XVZq3O{Oj9-K@!(e*E0U^0?V~FgDe$a18`wS{;`Un+aNlHiKTULzC+?Csw zK7p}!EsHzI3Jce2*ax*@M4>e8ujWC?3Z`Lc>KY8V^cz{gGC4}6IoTTh#|dV1`Qff6 zfnKm_>qwAXm(8TqG)O-7cw|3HrMAp58Cw1Mpel%U;kD{KO-`f^v9toD`fWV*9+L!! zdnsc51c;*W{>eKCY-WWIhCMiDu-o^S{TF}JTYn|;7K9iUI=(-c>%UpmuFAPcvS-_77E zQ9u;wX}85qD7F(>!R~-23z#1281lf_gdwsaj5!dyfh-rlx~NH0aZu#z#E`qE7sNcOLIGlur*DyaWpLjTd~Q~>scGL zoo3Xpy}*_Jq}$I@l|6J@)TyY$ZY>PqTT)+|QDL>cr~_pXY$4s8Npz*V@xivYn0Qf9 z8bFhai$Q2GshZ2ozim~1#raXO)tH#=#{=tT0_m1846%k)-0AIZ#5H7ETpUd*OR)t= zfsiESkm+D%LJ%@28*CAyp~u^X3@{+OP2lB!Xmi&1&6yymNB{5-a)5+Hjt#YJR?cTb zbpX%t?hjn~>HJwFfDUxxFE~~&(0Ba)Z2bXTxv3Ywzp*UJ3lHu z9)rsUJ#tdK1;(4Qwo$KD2-Fz8@N*bRVs^BdJsDDlY+5QuXwlP=cw)FmH?J$mKU$!GcfleqoBh21<+o-j7zqO&Iz^J(>i*Cu zcwHA*DHW*T;lWc20|)w3kUW917O9|mtp))GtR^`DjZ|$)Oi7iQNN-(IBDH6IHL|6o zH6>;t*DjVbpGrRQm4E4c2KpiIcM)rug5I-;$2mK-Z8JgN~2AEvVfX{79camxm_q@VXXTg z-HbgP^juAmf}W8HOO#X-+ro^C{S}pz)2v*uB}c+|Jk_f3aNS_wkh_Gb4Ye32iEoa(_1bE^kK-;u|NHH`0)Rls8{7H>r_+34ZvzrYH zRA~nSUqG@Cy_^nVY5)UKH376k$LNYlfB(|fP*VBHGwRE$Fgwt zI32)dR;0_xhFL>-Q;1fEjm`!)?c$dN>f^!0EM~ltPSck#6!GrjOw|-_{_co>XNIOK z5p+Z}e3aU7>hH6c@~h4+oVMDoh`X18gi2!U{ZL5?`?Y96aKph$+$RO_;Pf)C$3D8mf6!--*z6;NJh zK%p{$I}}HD*c4FvcPNkpef`}Pi7szGwrAF2PtVNFj#hEtb+J&IkpA7fXPwf-XU)hQ zcpKl9UrS}uy@LSU-e@O*r^hsYnr4@2p1X#hX?z|iR@)7VUwU^MQHTThgYog;aJ26P z1tdXcdU@gH&v`?s6(!Spt4G&uEbJOqf{)&#dilIg!JQ}dtop=FUn*6=tWR5aI&6vN zsLJPs(?I|gHwhX@G{as)x;Q4EoGY}Hv27XYrE<-s2A`4ai#~kr7D!lsGgs@F4KicL zG*Ix%6M_uh;mh57O`=AeW&STlnbDm}OkN@J=>FHIG3q3prlSK9=~KFFA$bKtT=4mg zcDniVLIq6-RUrn82}mK3g-n0i?P0=x=w%C~HroR0aIz^7$vj3CDqbfPw4ybuyNdbU zo}RNH!+}uyu&`03?a-{ID0 VhXR-c{UWW8JCWsM7mw~{4ikEH--f%-(3yM*parw ztbQo+Wyn+?`{K|seXpeX9o}~Ass(B3ZOy@r0>8;i9TsGA7MLDdrgoYLZS=~DDC&b7 zwdxFHJ#xKJVy=)YeN_udw7j?Uop&9ECRPvw=72=7Kz9R#yzqzEfAQI54Fb`#vOtZ3*uJT9F<`w&! zh(2gS9RxrI>$VI}`dNHdMt?X+54J|`+CdOLq#Lg8^`- zL6b{zH0-OyaCZkW6u?jJX@y2xK%HYyF1P#W+;jrtBc1EWcs3URfGFU)I?p_2rDyJ{ z!wU5i>63kq1HzT)T%#7Aah8 zThH%6zu~!I?2PY&1T4z*B4rW_SY$q46YxIX1gtcHRk!IWO^%?esYbt7;KeI>%@@}H zItn~aztQL7XBRBt*JN|3z*?5W*Je_Vdx8@-QH~GEiA<){Xio;1vE-bQuGiCl%KPb> zvZ8o5>6*tT-{zdmT+DKdJb;OEXhl9=bG1;&xl9&m|HLTw4?N3>6(=)VPtU1x6sp1t zIo&-MW9UpUHANdOc?p=V>)gAr#we4?Kh<1y$q7S|PP2k0@g$K-xS9mJTrBagycX;f zCtqCX!mWf6Q&qumc+C@s=_wFX$CqI>P@ECKRvywd$pbdMCTPt?SAhlNaluxJK8~E7 zeq*y8%aHkq7vzx9kiju$h8R#DNJvu?BZ1OvqOce1`-S!p7H2|FM6MaT>!;zT}LFMG3F4`Q_ADjt1!Ug9)uJVuK6ETN>J)+!}`E)tHt+ARX4I%Vuu zW&tS7JDe6NZoJv8mxRiAT~Q0v%--xa`UEwz@-@2myufKKRQT_B(4aA$A_Bn*r;vaO z{~Z!YKhG&95N3YI1Z1MIV?rTw6+0$0LI$6L0$K*Qg94$bPf>wPt(>9)ncX-=1#-Ya zp%W{@9Tf%?46@39CuVlPdL}L?r?^1eTuyO;NDMnH5N+%f7zk5#3Jk;wZN~+&M6~R< zKm^gU;{tLr-*I80S(+UeNVn7u3q+MTg$20UZ8D#^Q&>o>ju$v24tqN+WDpR`4hzVt zVuuA{*>DOAq$TSV7KpL@DJ+oIvQt<9@9ilnfS-3zK$|0fc2JmPiP{bd35*ceQ&0fW zu%3cKBPVuH_?j}*i|})Ap(Z=me)OO7g=};@<0D_+KG>`3@#)m`_Tk&xIh?Q^t5~@G zGwT{d)@S|B&#&tr->SZU{N3+A{mqX9KJDqz%M(idr%TkEpV01e7&YyVhlkf<)CwrQ zeUTx^>5B}1t>)SnS+7K`cIFATimeARjCbNGi?kr^#FGNFqwK_^iUWvKPCVq(+j)mH zm^7&0;wqOkyv$;c1J;WTvKf7cL%`rb_zR6cbdHv1M$5#?TxTI$=&X zJk51JC2~Y5w7igfGl7-hX+AdH)E_ zKWDM{yvxV!R)qADfylG)yV+}ZJ-iNncLBJ8G~!g4Xra`qI+BbC>n-nuK+~Pnr80uN z=Osd8pxVib`Ny6-Lg?a8Zez z6)^T(&d9byc{~;piEaOrka362VacqbqJnS`c~XiBX*4oW=k-T6%?2mD{)j+->g46T z$UV_JLP`1Qh3IHIi0!(*G{pOrV4N+S>f|skl>&g=+3F)-V6_(v?;l~+3uAbn9iX$2 z60cP>OG#u?mFSg*CjXnbV-fA7Q%M~7OlZf7*OMl+aKo)Jsi5&WQ4I;mhpwIm0WXS@ zVuHbk;o`}k9x|qvR+qpSnU}+xom2fCOP3KS;;~#2gzO%YP&6?fmA)) zu~sloLuq2*fS1HILfUyrT$DsaO)ph%iA+*?Nn8qa#9QJDDaXAeuA>&(VmwS%tCgX9 zuaOg85htKPPJ|a0lStU|0b^&gLs}sxyduua)xe3a8YK`qO7?0+C&bHtkAzORYYeSR z_l`Kd#pJ}Y&jUFzZ5K1q38%k=rsupyqM#E>f2ARxj_O`EbVBJb$mTlR8n%@(vo+Ky za>6^}YC|X7aYIbCLeH)uV^QCs;rXgvU0KLho%Y0bC+>^E!Ut_(YWueZ_NFW}yq@;tn| z!T)gU!Fd??snPngz0fN9-0k?<4fBnR$L|gElTGaAA?*ciLzt_QZC9H*7?}*0><#k) z=&ikBUPl;pFh@_Q9lA^0YK%N!AK+=jJPG%E!+b7mt6d}X#NID2Oa-U_FPP6j@ZAI} zfuDQ7{3IKR_J(4Q$t%W17g9O2O!ZlF?dMo6Vwik7f^l#NUz5Yj2oGU6y;p{2(?r z-Y}1bn)ZTuWC*ku%%i1z#ruGWF0uE^Gi}xTGkr0 zt8~45C*JIPy*z1$*z4tU>4b3bdU-Oj>*eyK3ftS|XTjU$<8KJU{D3Wf1_-MifUv7R z)a&llfAJrG>k@ojuL-{dP2YY*O(or;CVL5r;!q&^-7R{11|?b2iT3b1kff@hcLb86 z527jvB(2#|Qn4R-W2?WV0TP1|gQPVw>0wujC=1wZcw?L>n}+n&zCe?t5Yqniz*2+a zUDhBo?$)%120*hHEo8ufx;3pYkl?*CZWXcw$DL_^?pi@ZqpeQ{kun)U6GB==^e0;R z&2GKr4-nO0{Dzr|@VfwkvFV4F>| zJ8|3;KyvIPlvG%?CzGk&*8Ul-`}PEOLpu#TSVh_$4UnQOvanrILCP}0N4jGf9Uy!( z+w25??znM`us_}!=j2DmMw=UT6O&iRSb#q;KvHE2nt{DFPPZT0gWxSd1cSLw%fvU^ z0I4-pStu&xF^HX0wNnpr1F9a8M%7ERgxdjaS=#PlBDhTuX|`M$MCt=A?@qf5n&2Iw zuu9w_jF844D@wgLPLP;@DuXbx+0%%{)hAJZWbK_z-doWoqKn9TtEiBJ6u9=3l~mfm ziD4^q(5z6iJq?Jhe9hj>n$aX^7MDZ1O{#bkWo1ArRz(Gd9uyQ38b*`oBfbw@w^ghO zo9wUdy7&_7^>d*8#SrQZw%?-_7~1~|;QDtrt3&eD4*1iv{Ow18e>;}iFTelSXE=a= z^N(KdM0v>rYPn(I;gz~)BifE-&$(d7^r&Q`=$1XlgdNk$)?|gOWlz!FYze$=;K41X z3uuwFYeZiX(T}Wp>fI| zoi)!!`W&r!Mgz&sny0-ykme~IOrW!WHP1STdScBpN`sQ8NJ{|Ey#+p#`e!Si6^Pz#ub!*9KFk^P-U^RRMhHYgm(qu91Xq@1$exgs$zpNVsUHebZ6_nW0@m+8Mc6FClHRs>xu!25AK_m`{@! zthiNrdi4W1A)rkR3XSE9R5$QeGD^3#<}ZM0FDG)ZQLPG5NjcoB>GuHE-rwo_Z;#(x z@7{bmah9N8g0cQu-#&%l6fU0o^^qoDoiYX2RVzV=<3AL-72?A zd6Jh9e*+tTr!q+Fj}I9mCrN<7t{al67vyv#6{UcywZ}VOZ>$QUH<^6N>J?%sPRW z2Wk;8jv(zg!o~Uk$%2`>eT6F%x?%VfFz##&RlvA^CURX_=uS0=!XKN1C)ZV&gs+2j z0t;Yd28>rnreZ?Ix(9*IW@M}YO02yV8Jqx#GgB2!NV<)eCm)Fym!WYL15ZwP@^O*L z$L#6<5d=+(%t}EZz84;f<0aa793C+w+XS;Mu}KrHu(3-RqFam2YG@lzbNhZYHcKpM z3=AKC42~XgK4a!D|8(JV~ty__| zGI%`a1l{xeRm_tK8dXTWeECl zEcOgopL(ZnCQe^55gV63^t2)9In>(Rb`lSNuXGcR1vk!$U4biSM_Qy9v{An_P_%P) zOwod5<=4@bCD;IKS)^LozT6%3XxXSg7qUUxZo=&2vr&JE2}(h`2~SCHpx0V;c1shX z)-D0#{^w+${@wuPYMXu`pZj0Kv{*bRTR9u00|9$&TnymIvibUA8)xSVvQaa+{ky_{ zg|kgi9d4Y>F$P*WJKe}m%6KzbWUkF#!pd90HqNSo02I41>*@t=oQ1(tF`)%n5Mndo zqNH7P}H))e0d+uEIhBym1aoGL1x0TAnPd|Lv5NqBdtW&p~2|&SD*yR7JhgBtge4=*^l$h&4WGt`o97Yrzo?N(To(AkAefI0y8(4;pPJ+e_KnB zB)1K|*RLoTIb@MoE0KC4KptKs2LlOU?A*LQWX2f>#_j-~9l-FvH&uF4t(xwh?E&U6 zUaY&sqDYqXks?{OYL)coYeoO_S_$uiUvEAwZ$IDvbiLkuUZl_}Sn0f3r9fx3lQv#~ z(Luuc`Q~nU`!86-dUd;ebG4`}=N62ms|`T6ni z`Hc!fOQY?40ji2$@|14H>ILmXyDeAkM~aLDDU?iG6s?p_8t-AV5}Y5YBI#@|! zoKR?c38Ng;Gizva^!|0udG1e{CPh2B2xp5;D^e zTL6;LOa}5H9Vou7Q7j098Z7x<9ARFd2An|D_&3JPAFcW6{=dJauo*U|^cgF#VTIN; z&<07STQ-E@wJsZ9#!+)ns?4Y%w}RLuJO646Vf9@f>AINhC% z!|4i&@jUcAkmW!=zd`qBY@SiIHm+_rO%1MxSL06l6+DG#f3^rDJM4pl5>nq)cz8Q#2KdeRN638x7#VR7Xd{WM#5B_$9%`oB1kqBG1~v5Ra$>d1tQX z`H!I}Nb3FFf2>P2-!Y|OwhCx=oXj3|hVQmNrzf^bO%mH+h%rz$!gAFQv#Oxja?96N zj*$!4?7M@NkCo7&Ep$Rq{xmb_A4Sis9I(Pufkk@FfA-kFBv=6J*i{_vs1|3vtrHe7JsbZ1AB7$$BRqcEnMCH zh|6bIe^I``o@KApM4*h0s-n|(S9ISCBRVMfUi`jQqZ>Umdr2BDy%GYc|KSfu)IDrusal2omT@yj)t;z&NHL>!KKWo-f*TJ#V0OiNAZmF?8yG{h!yYN z^Ddj;dTVy84YuAouJ7OdCsxSoujFvw(%+w#?|&d)`Ek+fzhkouOvUb}1p+nr6jsW| zf8~AVDM)QRh0=H``WjOubzB8(9akZBTp2+fQ>HYYikHSzNgY=KLB~}{9aq`&j;oM5 zuCkFGS0Od7yl;&s6FLqeHsi;QJoL zPcM(umc>Pj`m79DD(d)eNj>wclbGwwe{#N1!pJB+cOvdsp=EoGUHhwLOJpe~S(mGS zketkJ%SnAut*qZl4(gE-wQ;9$tbEc{t$Wh27As9g_VOhD<<&f_6$HFufG$~`SFw3x zwGocG+K1iRYgU=u^%V#((oo7sUTlxA(~ zrng)`si&(T_GT9b0dwSpd;(q$Iph~orJzDbqIHmhiuN11@n=FrPQI+j$>X}?O-@Eb z*74Gj)4FWj#d(C_U5VKdBB}G`f5=mMFjWk^q0U&}C?NCMf8IK@$~6{_vlNBGaqvwe z*&I{~a>jH)R8cmO8+DpqPg8HrY_E@TBX_7ugbh{cvY{%C8>*_Df~utB#iDBZlBM-# zYfttFnkei_1MK8NoQEcb^H{<)D;9Tn6yi32^F)}GdnbEz_9S-3U%Q-oJLR`gOy6J(fs;(Vq`cxIZ z=JgkflL-v`#j`qsyP&B&wUa7v8kbt~mA3p(0}OG7uCJIu(~tK4z~)^~!{x(FhxjlH z;BV%DqxMSbFucaXi^jqsT-E`9zjgRFRX>hN04FZBDkxXu8-DCUKwmjMj{C4cQ(ZI2X15dJ>DVn7fM zq3QRRXrh9kl4wG>ZyX=o!^4QCb_3-#PAKiF- zHas~VSX5^yv42`KIZ8(~)nYt;KfJzwLMerR46huo0ch6oWIzdzhaI^s-*5MfZ(Z%zpzQM zV(A9#K*_ZDQb4axGG?^5L+BlJ`tE&e%LzApX-Hw1CCv%4fvv(XlmvD^Rg-&oFbs94z>*u6L~# zwuh-Ru%ly3*Q{RYq-6W}u~A&UeyauRhx+0oE*nK!$}Piq`l`mhoe=NujG1=67+*d8 z6=c--H-A{?1^oMSc>M;J_3a?XUxr7NaFyo!e&CK1%|xm>A6}tMoI{q0HCZN&I18n! zLP}~_IVwx3SmmWCVKlfhKM!iCvX)P~*{>@FzvrjKU_y`lywJiynMV&+?5~P@RepDS z9fAnZL8s=0sdwp#{)MsD!7$hqVMK*v;iB}A+<(;9=x5RUQ9+X%Dm6RA$%b~p3Lkog zx^>wj6CK9}BNai{z79>ml0i!%U>`_jiaY;|j;DhFB;OdMrTeczZr%7q0a6Xd+Nk7FAULC?? z7jNtOoaSoxX?_Pqc{%@E{)gAfLKm)ko}=y`$`%hgI)tpDTnzfC4{MF??0~pdL@^$K z4IU0c4A?gC&`#9_vO~oL?Qom19m*NpNq_OWoBCV_R zisbIPaMTqXn?RAv3L6nC>lDY0%;tU5Y#VB|5t^AX#=WxgqZ^y2ib_|-Z!;J^O@#C@ z>G1eG943{+km-ETzBypY14H96k>s($V-jx@Cb68bl=UFau#antNv3NPB-dsdr++4U z28#)gP}{-FsDdl(&CO(KRhs@;>49YjivX$JXfzG9dF7AWT+B4vWg5uiW|u7651ckz zuhL!QVHLm`$I$O4nmCZZjn>nx$#<%zzEcxk}JYVTSC^NIiY zcJ?%egpMmnSxg8s%LjBKG$4qE<$r3HWs0Gh&@;(-Das)!kg_Ka(G#cT#>*ukt7m0t zRXwS6fSV{ww30N{v#K}F=k!+^&x-qXC1qx$E(##LtQXxlSafPG$5r$){%zF6BC264 zY0>F;D>bpG=k26LkL8H@>H+#T;63#I1PiAc@GTC(?Qo$zKe(W8t--lzdw+<&9XJ7N z`zyGF9%2xYI3;$#w8nC3b4gw&BDSw@ZV(Z-hZ;pf@3LVe3?FP9h~#C%NO(TfFcPX4 zjw53GVB?4g?<(A%wcDWRB!n$SZKvo^W;;cPLOUqBC{*dB=csWR8>et zn-x;As*s8%Dx_jnAr;rXkbjC*SqfAWZ3-EzDD)&=F>1LCuP6n9xCeQ~gVTvIBIH$S zAVPe2R>f)tgNFYqp$Knj4A|Q*q+&#J8Hg9fr|K+^6+R2V+mr@iIR)@p5AIOx`xBo8*e6QZAXuFTe2i;rFpGAf)l1hD#lDGz$ z-Ogv^pKc63WAKyvOMf}2%=b5+el!fJr)IYElOOA`)vt%r5mdi6m~k&rS94&kON|MN zbOv_{Bjp?1eFoee?ZBOukZDP|^|Pi8{57453Rs`O;Okz1GaY5kAsDW%?so>*9Y4v7 zs+m)e*^r{$fb;6X`Ctb&og}){celZzOb8(z-L>woS7+!E&d@Bx}4B=0vb zbuNRPuQm^^kh^V14Cj&vpq;Mnix31wa|{LmnO-HST35b_=Bnp2Xp%_s91cyKk%?3T z`*Kbk;{i^vaK1XrV}%D4-X=t0Ibk8|L7ZS8*9=oLd4CT^N)l#V5q`_cVbtMHC!BI! z2&JQF#@GhAx__H59zGu#bf*b`4^?ZUt}9ltM^gJO2$Qy4Y<|ZumX0J3b~%L|c0d|SpWigV^$Ok@ z&i7^aKcVI(;NJCj3_VE0YXs@ssF?*ub;0}gn>cAnoPYFa2FdyybwI%V8#Q(%Ab@n1^1wxFcwuE}Kmm~6zPdQ^LdA6Ah1-1Mg>pXe zk{&cK_Hj*}nVs@=Q+pO^do>6D%Q(9}L1;4)la&zvp0eAwa=WK{CJTvnyY05i<*KjBRkoLn6#l`Bx9HiknSK`VqpoH?- z|L#>#!sw(P&mlEbS<3^5+(<=TVGwE?4uOA+Ax!8VV|6=DiIQ^G_{lYV8KXwIu1i#* z68>gN>4U{)56c9^3F1strNd&oW1iSJlxRk+P|SBToLK`H^mG*{K`0qZiPNd%JNg$% z7-LcapA{WWgbvNY}#Y4YX z0ACZKl4<}SOgUx7Oir;0C~2%%z8!day&uXrv5FQ#G>tNep;{@n`63x))i{465UnIm zsA`$GLyN>7Ir(FBI}E#iW^g?>XsL+qo`+>-*Q^@4S%bPyiYl*adS$d!W*V2%vd3vt zFVPI;Y2Ld&+K$|U=bDRekJh^xD{=OR?)oaaY`*6cN$}%pyoY+4jYwFpc6m+Rmat3_gWOWogGm-lB&p%Y)0 zCW`bvDX-6$0i-l6Emm%iu%MsNghJTjMs6TXkmKWmsPT93q@TmjufuoW0~UWAVN@O?ih*Xpapm&05eNgmx`w6#$N#VbwC*g_W%f&qB=#sAe*tqS>{WCh@Ws4LOCS z1qkeGl$vgnhenkg50j-zYl3+v#2`S-4v5y_01g=rx-^o-ssd+r(YWBWhqqnPGd8w3 zknET_Uvq!OE%_&n9Qhpl+m-Kk7GC%;0D>4e9=Pi0Bm?1kWVYT!fVB_(v)TyF%-C+R z(q$`6#B-YtJ5T*D*uj8ff_kH+8C}AO3g^mvBXyha5y`sm&`IE!kG10!j_iX*JlmyL!OG=IWMmiXFt%{|NOQ(8Ir=AE2uqBusmpFVl3V^Z$Be6icW36! zX;*)HL^X@JLiV9`HR+s9XWXjP#q0*J>J>9TxO}B-{@dieo@SJS{x}D=({Ys)~le zkQDx>0qA+a9Bad^7DIGy5%(MX5&zb_{DXhS=CELoUBoo&C2zXo==1DFvtclyO4mS2 zD0_}8SAoSGF}8`IvloHo0fH(*o#fdYTuk=-Dq^EEzM(vzgQAq^(4#tRJKG4E8&0e zI+Kagjw8g$COh28fBzuDU@jR{ajy`$O$svI}c=DiY4} zio~nFvkbr5l6i%AkxUY)t>Ha9c5&G5jRbJ5#VI0g`DWs-vEuGZhogz77}eMugj_R+ zAekWGFEHTSB@=DGM5Cc6*gNC~&31pxv?h;@mwa_%$#mXkYB7n%F$Bs@0EJfzy6gt= zKF`XEI%DNgo!^{%PSXyx@QRiM(h9veq^eykq`8D!X<`K4$7GWq<1S}&utOM|#g+Xr zG7KIg`&pcbT4#Z`2C!!KG#(Um(%>o_S=i>-pv{x}SU3VBl?9?JtQH~_ZmEAd??%qt zcwnKz;Q~Q|#TWAKYHQ*vW+^1GkR~?d|6LR8-p`&dmcFRNaMjXL_O&(Wo+ z5!yce+W-2ds&B+Fx$rOF6JxU+$SjXo#Z23-1taqbp|cog=Snf}2!U{5=KucJw~?(N ziU75bLUqAZISh4ScDV%&lVHxqn(YU5XtIF{pHH^E zs@i7aZE)MDX;RA-x>vRFPc!V|pJo_m{H4+AO5{JW`@%?R7m&OZe(+Ga%Gp<69EjD&!GdS z0yj95F(M>?%~@M-+cp$_*RK$U25ZoU=KZo_*rnJ86xe_)d29MGyK{#jF)$~aWuuc^&+Z=>S>U%3wKOR(u8q${-M8q*Zp)2##_OJ;VPKSl(t&JB^7SCv1q?I zv|lktBvn!$I^ad({}0kr2>U?E;9@Dju}(5(v`>Z*0}C zXA(m~d_F}zCY=Lm5P4oq$~gzp{I((=rHG+_cBxb=h|+vc>YSOl9E5A4C7Y323Y%JT zg2BiPtv*FQnm!|c&U8?YDCNL*!wJO2anX?)sV0`3V0vVRwx1#&ZEwkcdsWsrJ5)A* zWz10FMSu17H=t4dzYs+4;PZF){sTDSV<-Dxy9-LVihA93oH}q{QuMaFLJCx4q`--P zk%BP>oknLQab~1J{YMg<@D%fv&>O1k>}jh>)=Y+QXz{KZAc`{+V%Dh)M>)RzPx?ZJ zC`iJ-%Z2of*3YXJJmH|4ugvW?2l`Ea`Qa%npa6v6tykl?8~yZcX{3 zsKE^m3k`;p7*a7Ue|0kn;5f~p*jG1`Xzgh1*Mfe@dGO=;lY;zICYMjjdT@``L~6lQ zo>&5Nit{3W9>$z9Hw_d#lUfR}sAJPok?F2*y~#Hl#;BPrvR&Tfkk}NZrvbTtvxv#D z6W0pRGUav>vo1xW_7pUF)<&ZR{#>_ls*o*Y=~@r`E;j{l8`mYcEdcGRg@<#YUl$Kp zTQ{m&y2-Y;iba_YubW6&z)1%XgybhcWvvMpVkuOP)Q%VndHooyY={zqrCnM&TUewIq-<|NR<{n)`-Y2S~1CRfgM~* z!iVDrpj$DEfg?Fm#Wjz$BC?BCwD~;~szx~gRV@PJfn#-Q>Yn9o`jk$ zCrWTc&Cd*$S>9b_*=iauCrrqXniDBnYDBPn8aAj9orl<1=(?HmqW}bd_I8Mnn$tH0 z0@$`tRt-u?>{6rrH-%Gn6~F9tQgDk1iY%?m0yY>{69JhZmC3IBGicr&s7QSv!|qEs zP8)6&@ad%;rbl|55PnIx)FDf5X7? zGMs}WUY6jItD})w%eg#NPI2yQq_t5*TBi@QQ5ONd&wUuNX#&Bj9n~7k;PZtwct?er z1}}+#i5;4y8k+4$9qxThhpQCQ;WkC$$OEG^u>ZmWItDHK{Ly`X5D-P!0VKbuqE2(L zh(h0ufhqG-$%`sfcr^}04r7gjC_7531W~Jv&bXa1Kg&NFtH+g@4c3YkNK3b3#F!&++`X;q5sp??8Z+dQw?vm+q1{z_W4$rlLz*@MLH!hIOX*siW;c=F9H-&$_3DDAVvGJ@%tstK4 z1qpv~;5B|wo8yZ$i_!Ji*VKYAjbGB)#O;R6*@nWb+wb^S;{_JYAOmQeMTb^^mh?&p zYl3f27DYP+lk(AwxNwvVhol#}YK1uje^AOYtpKTvSA)`MH*I<7DGk%ayr&GAu(8Z@ z#f;W*dl|AQowMUiPzoMb6@GbOKbX?K8Y+KL(-@zr@xp6A{4-o`bZo(NBoX#qr=DX1 zhtwz#O@vTG9McYc49A=>R=8=M_XcV11Kilh(-6fxLD>X%phaASyivT9iM9#);i}Zl z0>`cidqYDpA%xOMx+cW{Ku8l!igKWxhglkwRpT-*kwzsqLp?mku`#k^8k983#U6ho zoMs2|I2!)Lq5IqD_qTujH-$&fLwt0}ZDe#Cgx8}gT-Pm}i*5t5avK1KA=L-30hPwf zmNF#czSI%UXRj$ko-?bxMz_fXg%^|8WOjLAKgiO)8fIpBj91inVK%{0Wd*^fv=AJK zTdtjx(Sf8z&-FPls)$(=o)BWiJm`Np%A8K8SMn+{V z+Hs#MkDO(WV&_G8zKlURJdVTTc_mQ}X0pvtkNlRJ^k1Y%Z3!+rlCxAJVbjlhg=u1L zTxUocoCCY1{W34si56qTb+%&>1&r&%7Mb%w(Z#NdRm6dMUo@GclmxvKJd%HXe1k?# zLY6WoP$wJC5<&CU>pE|PSX+#WPXuxHz`l3h#}X9TZ>e;`bU-rATX&eOS)z63qPn_x z0!vxJgxz4N9mT)cOEk>0Js;@c4?7S?X;3z>+YXZVRIvl4(@eq^r$1oP9px+GX`!W1 zKD(HY*p3Kt`#4H~TG zo7lEEkDVydFDlCL;iWp|+O1U*Ebyq68ZMFsQ+e;IwI#>$j#?~^-hqFUxwdMBxlkmHwP2@WjWm>rrQ!k1SVs=y^Nu_Mao5x~%wp*` zZk+}kQ{Y1Vd8Xy3HJMTB?gz-tP%6$$(h#2s@ysOG)3??`u^=xO*yCs<)}r3IFU0ut zrVeS(==yS#5=|r{A3Q(Rog=zp@;Jid=kR!Yk@L_y;(nV+lKWwpT`-AM&kB=Y!sFNG zbZz=U(sh53wBCjaag`olO))Zw*`)iDZF2$_ITXA2h0DqttHtCxTO;VHGWNb1`);+GW`hD_m7h~T&VK{5k z$^F%X-QJpyTP`897QMRUzd1Ag%r|ub(kH0;V_zAcOy3&3=SyP_zj}^@&)G zTo&ko51sVQVvB4Dr>OF5gHC!Ly7d9CZpZl619ms9DOakp~ppVHL- z>UrsZ=TYZ!om#5IN-pSCOHx~xY7Y8XQPOChOK+QXPi%x{B`0L98!6FQPI%;WG5#VZ zWSO|1VWI_GaUCwbm!U5+AAjqo$CdH8|A`?BltTfiFQX^seRL^dhO)#9$27ChSKVtC>kh3kh8$TXu>YW zU&IweCjMu*W>~tDd4ThE?TbSeUmPhXCCq$`|9*V@hZfq?v|}EcY&)q2oZ9!hW3Z!h zhl)ROLgUb$#}qzHku=jm{?|MP-jicAi^G_8F6Rh0ZDpML^)=4hlVF4UzcZ7+o|mya z0~D8pvID7?;N}A+m!Q!D2YI+@ zI8(wKZk--E18bD!CfrG_JeTA9o4euSYdQMy>h18)t3f1omNRFJP=BNH%y0wa)w|)F z=WjUY_)pMP(iP~c=&I>z=xUpB*LzWYm_3a$?qW+omnL5C&b}S5UJYMe;o=<#uu{h* z3vHZHc+0_04M*#T<@&YoOmVHuQUNbA|DTDzQdhn~BXA~oRDO`pE!WP;Nxrm7b6>;@ zF_+Ir&#V)sh&^u<@d37%S+oOZ6_3N)y-i?7i}DvBz~0sf4*`F+$?KQZv;!f3FT>C0 z;m3uatNPjhc7RQQXW-$uXw!^OMn=>aW~_9Rot2xqE40Oq32pJVpe?ow+A^PnwkYFw zLYvwfZIaL?IXON%L!GQ$YNBc|SBntNqE}l&?aPJjC%K;-WP6F8hTG%X9yHTJPPPZj z1iEY;{0_LOyU*Es%^;w>@okQq>k0rm}P~1s|nkewy5#rod4G zm=k`KmIdY9e~*j0_|E7b?*IR5m#DP^S1r73qcJzdVByZ%DHetC^5uV#MvuRsd0yea zpN4O~MfH9+sPR9;Ifer|FZbP-EVctle_o_uI{T1@fh6NDxri$Gd|PwOZV5KR51but zxt6=cs)O#k8W-gHb|Aph&i3SwPSYO=1UuKV z+T{Sf5N?O*{fC7cQchbb^=#*|JF%n7=2q$wrUldv6bVV8&yyqhLmbI0a}&65GriMw zH)YlP7Bq3ITT~PU#+JJBPcOpHf8Q1pss{nqkL6+@t_Iq0uMPzx@=Vh;;r7!GGA9nR zO%`;6@{IacsI=`hy`?FhgQ))dbwz7~h*Afn$lkE#{jnS>eeKA%tKdB>~dwI%WrKGxjb>CS(F;ZLDR^lf7mgPW2fU% zYbNlk$F6id(dNf|B;i&_~YR5A}cj zw4M`6X6(O+-m>O(u`71qPr2}k#hz=GmT2$Qa!cNRrEafDG?ic|g88D|tNCo6d1ktP zJ|<2FmTl%z9+flkr-b>GMiS--%i~pS7N-Ji(|gwi^$JivLSFr+`(%DNP=sk9lIqCC zS0q5e256S0mX}@cb3OAOhXM-rsQzWD4?Rc7S_b{vGXEHtxwr#A0n?ZHxC1?Zp9o*c z1;*Zgwf-*-eYJ%^qcC$*>KF*DKZ}*}i>g=fRonS!RJJu3Ed**8;(576xhv#GXsKl( z3%w;&7WsQO(~+3HDzzZSuQHP7O+Ys-s9U0GVW^#3&#DL4H4)}q^$@ehz^^?BPN8ne zwq@4mC)IwG7pwI!Z7@Z!=l~9XI5QHm3Jg}o-ls&q_9j2$}A6D5MbaZv{k`1ha(x_w3AyaDub#6Jv8#6 zODa6mk_yjyO~@0E{2yAje;3 z-n=Qlr@a8O&+pfPbb{X@2Ru|y;_BIt=1YQ3*mz{+Df<$1QyY3>?fyEikj1_1Sv`6B zXs}ZADk?kX8As!S+l_G)er^F7<0vupR&iA9nBu5-TjHqLE^$<1L$MJ_II%eDlg92T z25P=^PC);(7-+1+nrC%?ZCwReRNLC7L|RfpP(V7TgKm(N4h5v8yJINn4ryr#NfAL( zLPA8kyF?HKr28Mwx##}(;^lFknR(}1^?tEF_g-u5m70EuRH?~lLW_a<`p82eL6>(< zU#Ob%G4Gww9~N*oG~;2#>G%MukMKXzk#-(w$fW<2r?Rwq$*lG*K0=P-Jdv09G1sWn z=oszMgm*&%rDUH#S#r7M9bR!`7dJkL-MGwhObT=9`y|JSG-2T>hY-@bX|G$h+Y%Fj zUE>PnC3V%@Q@l@B2njc{33X?h zUvp=IMZy(%)U=R5(K&6Vji$@Ztf5{J_9ue+W4v>o1hj5A!Atq(YqbBSU^i|lucUjO)*)h}|`nDJ+ym!Nqr93WF8uAE#QXlXvX=*GBkV6$5pVoK3xav_icGF3aRjWiC>GCsPFNo7&QVEkAY`X zgh%pT>9S_`8}aiBc)8c}SA2+{DP$CL(7wZ~t@G2({)2uhQu|vJA#YxozJ51GZdc-9 z^z7lKvC`jb{0zX0cWAFr%V!b#r?|ml`1yqU!hXLO!`;64eM4S+KqoT$D|&?=_xtQq z)IyJA^{!Pm!X1`PD35S|nt|lG{&MZJhSCtJpgy2W9F@{3s(%g?c_1mfwXV7~%df1~ znP^H>%425Sw259iwZg=~%vG2Zs%2D|ar>;#TK^sfdG~~aX64!wr^GXH zXQYg8kJN7C`@z6ZQk}jflmB(E3p9z6eA`PDnE)x*udMU&4qFOz*AW`8t-IGbN?sOA zE<~DG_8~R3T~k{bwB3svMx05woK((p(eS$5L36NXs)y&|?DI(iIHUy%XJ7 zHd&h6lT8_s4oS=*)8#tljPmFr_a(A1WB>&RYklKapk8du{L_Nhwq_ zukV0doK;5K(LSf#yt<>kK0>dc%J4ipGJ5%WuK7Il zcZY0vAGI^ZzY7+&{=&-YK!7so)v$)N>=ZCEQq(a{r3c|Tm{pB5%CjYx{Ja1QEcoX? zjM!UT_wmENmGNun=_EjZyc>V1j;GEmoW|YKCY(}>3rdXu7E94P;$RGK&uNf$a_TJ( z1}~eRQA-t;w`fboubq@m22Wv>_1}6>x^OO&5)t`6Rn4-xEZ>@6?la{!r>H2spI(GE zt}AYD=W-#cl?ztCss;Y(r0b~X`pZJm_+D?!=8M?FD2~36w)?X3>aj0%ym(r~xg&a^ z=`t;Oobr1kYzV2-dIpp*-OsnU{EVbc+J|S#m#6L5VI+grJ`LI5RvtV^;qJ;HSwR+5 zk?73F1I%QDyK3+MBo0mYp5-l3SBYAW?le<^+x`4diy!bt=;@J@bhE6%ne8DqT|-XJ z)#3}mO%P$HX{ky}&y6>Ef;mtr$h1n=YOLaan%2eA!|Fz%J3UY!(F(s4pSW-bQ8 z^)iT|y9QZ{pPnlu8|$~DMjz#n>wK=CqVI9VTg^P#8~|$0omz;*DOlzhlQ9Q7g@wj7 z-rJNV|D3y9E^8OoU&@;BB4Si@K4RDrj7e>n*G~C1Ahd0vMU$B2Ur%_di)CR2SUtZ=X~AV)kP{Bw4wBmnnAJH3=oM;U>$jHSQl3N49=xCes0 z;5uEEo02fH*vx;+CxBQMv$qfN&~s1Y+7bi#S*~WkHXZ=;Pihjai0i zRejlu!z^^hc6!Kg>`S)HS{A&jHw_?5h2|N6cdKvOlrJn>Np8GSJs`UeAb7U&oJ4b9`RvuNOm3$DiQ#FcK13B@Pyb-z#n$ zL60jAJudNl+Nt)KL_%j;k8uy~XVvJ{Hp@;DC#{p3$d491y?HJr1UgC$A2S>?9sw^z zUT-b96nZ2~plEgEG1Z6SS9~V+Bt$=xuXEuF=>iuwDolBm7QgT-OxKj*+hA4F0C!c1 zo;4cK4YE)Pu@hoz$%z-2>g+XAar-rzLtZXAD+=4cH9B%tR;ry$#mG-WB6BBSzE|m9D({;13dT94aI5U4W+3d7r$U;m-!GwAiRJ z=leZdyZ8_IKNK-sF~Ub$28Y6`xf7q_8$t&hjbD{Kz_a_}-ea0pa&qPM=~#dNE{M8K z$#0=0H&S+PM<8Tei%&x|eSg5}E8zi_aO;Lm4tOq+f?8jH>KMvdX@^t$bjp85i_Ac_ zv{GxJ-0(Xi?#GuW&4lWy95O!8kJf^UJXAoT=G3*6Mx7qeKm9!Cfum`9yTD%`-}2@ z>?C1jtSN&^%arRutZn-oY*mD_Rb_ogrEh$GE5Q*J5-WQJDf6O&gyi~Pr1}N}1agyi z$;S@NpX}#U9Jv?ki-quF&Ef+tLq2VzA2b3@k)?ikkZr%El?ohF;+Befv7YnTRqwh? z;BHq)Ql*uS*p3eDl7PD-FN!zDw~l#!ygvdVO~{fym^od7fyV>qD%&|$eYh#};zh)R zGs^dx1E!RV}eu8I-5Rtp^;BVJ)YFDFH`dRKX3nK=}pmA7%F4eb0EQboafeqnsJpt-77xepoisR7ERsh zwPq0wavwAN*x#r*+B`ey!$El^U~|p9P_c1=5)>Gc%qE}@anx%mph&rwfw`o?^1una zFjGc?;!dTgX4@TBUUH9?qf53&tV}*&t}f3|*V5m+(*Jg#nY}s5(6`Mt{d8v5Z4~l+ z_*jcOV|^mEtPk6Mh0%rVjpqKI5=Ky~Ukod@Jqh{U=F-Qu7vE<{M9*MfJ<9FxDQ#yo zh=OPZ6Gpq+^V9r{tr3k$O<>!^6=RDS!SiIl|R@AMY)D7{<@ zhSW8!{*;~9_9BhTnH||2D!Q*qgtI9QJ%G5gqJ;cJSa zlA%HSax?koM~NvsQHNTRiRhhVEoFwh6ZXO8>6Mj+ECPlQkZ7`H(5N1^%aCEWA%??C zNFG%c`8(3DGHa$U{nb{(2i!seYEY&a3F4`_R127|9$9xsY5AMAWW2+S=-Qhcky)em zRmPq|RJ&zbU>VH2hEXdj>~zlVd1m24tqM`#sp+N+fn2O*28v2kyVnn1&twUZeUTz^ zoNk;3z7j07z&yj4qFs~%RUnTsezgl=!bs5D_ZXYP)nex2Xf86r-1XWrQYgi*ggZRN zNM_vOr?gq#(PN`Ej^;L<()eOT`2x(nNoo?)1u~1`?eD(gS6M#OiSy5|A)*&#c(&h9 zR&FX|X<4fxtjRLE&58lJ`b2!01zixm*hy(B!j8?DrdE&d)ex(~r0ndU40P|+NTOGi z=EU`5lu}S__`SqD!O~zu2c^kdC=N+vrh&s<#!V$l-pOB^C)9evT?KA+3Njm%m;#CT z6nD2e@_HS*qmMypQ7+G3=l(R#GL=38hH2I0C@!?N_GjpDT|7nbFRvD`*p)_Un>$#= z(#W>?Dw)5mYbTSZi>0umx_azjeQ-oJKxSnEHG9bd!Evft@2@pdMad6H&`6!eo=_|g zygAv|wQgq1e4;4*>lbDHf>v48R!PD1^sV?ZhP_wYWWB9-J{vJKzrFWsD8dok!yX<2 zeZ*7}H*)9AzG&*37tzK@wMd$>pWBj?^RC(i;oyqTtXH)vDbt{n#D zXLvTb0{GHD^HF2@y4Iqs1T{S)Dr@@o?n9sVo_CsOKMbq8ZPwCVzBT)W@OWP$(n{}= z`r?7feWN8xHzzR7^!nVA*zo8FY`Q91Ge-wEn1V>%W7o0C#hziH9b=6sLy`QLH_?)d ziHea|agpNAhHpp3eb^euix(eII|mxOG#%(Pf?e~Dcv12LWh!HE{n})+=?enI28y`aXCi7lZ1)&R z9j`bWR4i*1Z)aH!&@T!qQma47a_-C{e4qC%AHnfigzUEFnr!uBN)*@Kh_hIeT$(o6 z9eciAs@|eVRU2dqif`Mh#be){#^hUeTWL#R>w_ZumRmt5cEkHK9wYIut-j9{u*{kS z^kLO!@O=);ixtVkI1A%i5h;)e0qPcX#1YZRPy&f12~26!3qVnvaUwGE_{Oxf6>&z2 zFTVj;u$RM%2GTgR@FkRPD|BMQDT_vuHw(QQS@tdL04_{?EOYoDRaz z(dVhey#@6~)2xva3DFaMl2T-1arR8;M?XEL)(T-_Y{?nizMmiw>4wA)x3S1x4UpGx zQetD1s&t$jIeB<7zRsjEShRFT^U6^(Ro$DWIEYLBMUC+T;eR=MT%Y}YH4Ge z^aj1_AMdHXjfg2-sBk+;e6NeKZ9@Y;VH^u)6(ei4s2$3U!08b^ZxKG}%(ZX;vvq7r zWXJft{u^&TtS#a2i8AxJbDK~SMH2k)_+8=ZkLf5%TR0uP!di@OfMi4*0Ut4RWf;)o{MZSA)Yy9Pkg1XxDsGB%1d?r_~6Q*UW0?$ojh z76I_Bk|m2Je-;entWU8jPCU@^q3#m|Hel^_We}id!A2HcRy$iZfk#WXNPj36T7nnc zYj@JL3?vB}b2+)WDdl&})oN)YpHQJN_hLe{32Kk(>JnDO@FEj<#Hcr^I}>`_Ue=AG zdMh4cGW2JB%SsZktFm0x&G9iih!8eMAGUNQt#~WUK@GbKnDMLzQ|yyruMGyX_-*VS ze^U(9hbdyl<3>ykh*|iHc3BGytO=D(&JqKeZSsgkp;U_vhGFEFBA<4Ac#DPW!tG)w zJwvXY=QHbm8eVqLtaUqWPifU-ABn4K%S^5O!3~#!u8mr=dJ<$($U-B*2QRCD2WDTL zYJL$Dp9ZpKUyz&ws_&}C-xIs<{CzTjm|>q6Mb~sE*mgd9kf6|Pk2~slNSs5BR<|i- zutC6DEO_$-E9|9CdOxK?tFCIdI#1c)$@hy`mH^wv(Z1;CJv#l1^Ut&+jRts~IXxBA z2q)g-aCwE7%TKU>e<9wCIfLXfvt9HG@{nDFAS-^{ZytK`-LFPh&wEza<>5~7v~i$) z3JO`iyD^gUu++KzkzC|<`PZ?bPoHBe=#x){Zt)BFMY+WBnOF4ds)?$8!g6Z@l}zU> zE@HmoHsx(K4DosFXZT6%X|sdhHHFhthLaYV6BdVvrC3k?+*3jm`gVog&$JyI^i4yg zm+a!=MA&jo;SPg$#LmCZ#?A}Zr8^JIeM>|M#uzKmUUq+*{(&C}axm=9PS}WJ;SE^n zsk|*)eV>NXcSNGcu(C@GwseNgCiN>DG7{`;#!=_sS4$2V3U2p$en{|%mo;hmAs})s z3P-t7MD!>l`$6O4GTcIP>)#JptG3@Je4yU!1 z$d0`?YbO@DY2Q}%2otjl3$x>E((2VPTpjMZ=1@U?){>6nxE3h;Zw*HF*s=z-$fNpZ z%Zg@p;FZ|yRc(wCmw6(0Y=$>!k?~A5-sV|=@attk@U_GFb|oeu)|-Ksw6~~254jyk zo=@ufrzGF5BYJ3o-XM8>_4)+;szKYfYIE^-{gQiB9o>fy zA9@zrX$UfRLu&`Q+4c z{}Aqfv;*@xv)WGuBdKXx<~Y_;aXNaE;29}8?2>QBdz18vFiNzz3SMi;$f~2b6VvtZ zLSB=rS!Lxd>XpQ$>*;1Il`C3VnXy7^K_w;0uEV3B3-k!3z$O_2a(GZgm}0!bAbFjS zn{wAD!H*%5sT7oKV*0T`=KPh!c)`dzXSqeTA6X zu_(PYu)ZLIz%NM-iZu5-u_I$wL%?Jj&mKu9Mja^mxhrxPS%|sB2f0PrF3udvtTFGt z#Et8GL;otHe*S_crMTnW?f83&9nAM}tSGfs#G<5G`PDC(yM`6k`XCah=&yOig(ic2 z`+Z`T7}6V~XAv1t>_!r=j5e=wN9UX%Q9_dDQRN+R>k^Hmmj-=LwP}k(S*~(RqPP`x zlfHiLcs%b`61^Qou|a-XXqO~Xr6CONn`5+`PH+PUH_RtVm8wKH1S`Z9a7>U#I1%az z*1gyNnBqYY^z8CG*SIqkN~!(Cc$JYyhM))$c6ew;k0Z;rN$8|oZaOKMS{62{$AB-c zufwz1ehliDCbGhK;<0PM%zp8knKymD^URZ3F=D$RrHSPI%#j% zMj1|$5$U$*wmCPe;%D7Dfi!|9UfPbGr^R|dISE4y1h(4ThNOQ+Y04z=-F>oQ!JZLH zW1=hf*TP(c$rEKgJ4X#svoQ3b_c`3R1??Ak}N~BCrR`%dSn#2ts>6+v3SXRs97S z^v(NyC$mTMX%c)HA;ZVsa;q~5;S?9Z{Bf=b7Z41$_BZUh#qEm(yT|xDvr8WKZqU_oj!> z$-Q%awu!zA@{*F3m|ORYMRvWStXKKKe6lEKuk0C}dMoH|-Wy71I;}Ou;IJl*vX2To zRPNHsUHVolOFJkON9nKXAEa~X+>Z)U7z&ngypRQ(?rP6D>iM>w&=8Ar7n&0&Grhd} zaG2#NaOLRguW)1vs0O1RVo{6R!Gc82nBuoMW?xrtxj;dSzohgtcK}?`GiTi2%&Q2E z)K84C8l8taqoP*z9^khXSLs9%EJOk|kVtU_TOR-5m(fIv67$aR+Qr6JWIK6Hq2a9E4DF z4(XeGIJ0Ka2-P<=3ymiBr5W1R|KVP9M?)Vs$^S@O4?p{|Kdt9isiUE9PNx4aO&{dL z?KqF~vHK?yC=$$?5f=UI+PQcZ|MEwa3=<9$jgGTs&>3v)PkUlc!u3{&aR~YW16Y%u z(|N;O3D&+WIAzAwVpI!+A4}RIWJIDVSx5ET$n!`oA2Byw;0E%NO!aUL&ei7Pmf>g!e| zacKpwgrmfI%9$|(?`au`$yt&;YKrf2Hkta&WAKjX=-Wzp;``J}Kml3nDOab7fhZTM5WQo!u^i>L9;E4Gd4LXv&OaM?S~ zvH2r@-)~DN*O0B$~KhO4Gv5qwZW@UWtyPtfOR zjNK+9@oACcqM${a*T*zL*SlUn`L3rkLV07h?b08c)SGCj)vTyhzma|~Kd?V_l}285 z!0}KetMrz4%)ZV{tQU>**6!Iz0-KrdQ`R=|XY7x}NOKr6tCcJ|!jbgy{&ol@2)oMT z0g|j(R1l+urQb77-=7Z!sUEnQyAG1JZMD_C5@?S(?|Xk9^*#Ejzy})7@J|K;>_JVr z>ciQ7BaOT(<(quakjn_RrsB32!4O_vLr9MUt_0D>O0wEy_pX4!TCfYB*M{hms5bq~ z=qjOp$FV?6P})^j8!8I;GaTp<4g8tiscsS#ilTjNy5qjH7U$Fcb;d}z&|G1zi+VKl zz|*_h6KtS`+Xor&D zp^cY#SVSUE!_(#7Eu`<{Aw(wG&L9^~OA~A7vB(x7G3mLrS3h^R-hFR=CKdbIdflwz zm=aYiBw(aS?ULa3%7%M6%t@73CI8&l)|Pko-!BN6qRd*Z=1Ub^ z`QD3qe!NFyR#*11EJ%AGyQNRL=Og*P>2>5+pX`Fm+)Em}YRd-|xZab4`pQNjvAIqo z^Q%SrCej!7Ve%P7|7=Y$vi<$ZJ|%7jy8;vZ`>rS(>WMuS{I9jkwz;HK^b7nYqlA=t zs#M_#xAod3DF}+?nGgLn4j0^g^kZY)2VObEbKOd+dG9U+zB0ENnCwFze6j;Nss6n= zg<*g%q@yllqG)AmCV;#*^L1BgJh{<3h{id&_OPl*i*O@7$%9`*(cP6H-rd-JTSTl{ z)@&%*jj-2xQQg!X`!noGY9}Tey(8)cMT#oPuLOjNH{BZ|Hud*mpX;NbYz>e-PtRTS z87UAUL`d6T`%_5LIBjc#nW^|RZ0K4i@3$H!$W1>G?faz@f8f5Ui>XcUEM}wjdK>z< z{W&CQBAKqVY)xF-t{~4&jY{vHen2#nBI}P1GIJVJHR_o-B!Q0DcUwdB(YsW_j&fPV_-|qSWHFIB z-yqMzvDwKzo_ohSx)*=XIGG-fBB>1NNYQJazu2qHw&o#weJs3bsV5MJ+p_T~Nf)&t zmJWAc&Zh)E%S~4MeLwOzFF$Va`dJNwmkH;kvUhRzB zu1gQX?X+BsoQ=IY2Ky5S>rlitjdZSxX|u9-R9=;W&d(yr_Fs}4an+e??$?|KTedpO zzP+hcW8r%nm)&CdU8s-U584(CJ5c-7{@Z=xF|9=IoJ(B$%`_}LBwgWwYp1)Acoqm( z!YC-dpjw-y#EiLjrR2Gjx-<*@67EpvU6r@qt-C90faxl654Hpj&L+X~AKAzEx~4Bf zUJ!S$sJTUF9De0{Uc>+9C$8zRkfn|<#c{fU!!9ymc%4i4C@rLNVY2ip;~gs6^u7qe zCW)rZxv~!ovAM*w+1nQRly37bHy0^|M@UW&bdL&aNqkawFN5aJr9U<&<_v$0*>SKi zd0FI@u5GY6TLQhY5`lGdZKB(fUH4I$0*OaDg7&?*oZA|uXkA_dNfockDhJVvm``dP z7eY31-zc!PpO`a0+SKREALc?G*^tqtCKwTOtQwBbGg1@BTd4O*9A%34Fno=Z{IN=$ z;<1HQ_nG_j$&Ye!WZQ+%qLQeVwfH#l$6fgWEt=5KPwt_%7yEBywuQPk@|Nh1Y7{q@ z7Id^$S991}LIWb-Fzx8U_AR#z@bv|)^XUZ3hKQQ0u}Nk=ECoAG4v4yP=KY*_ z6qed=|LnAQq31(^l@$Ls+V5#Lwn)kJzEuaTb@(ij*T3Q0lDFK zZZW89_O@b6-cd{EOvUVIM=y{FOJdR>;D0Sr_~<<50~ViDy?U;|J~guW>bw$~cxx^_`$j zkZr1Ft`Z@!;(*ZdW9_Og4{4^iqfvU8;_ueKL26`z9^C#3s9uczGFIkPeD)DS$wHI( z=vEWAK_(v4v+r$XIe4LV$pWPBu+#R*b_)=pr<@Ep>-iRa;p7R{mXatXmI5|Wr@_tZ ziz%&SH~)ITlC5%c&<~7{BxTZ?`gEQy3~k&K0ULyAq5H2MI{7?pNMgHxR!ES~<^6TE zAlyMYtr}oDD%IV)?9?&!QQ_1lHFyoC=a?_86P*7!YrNbU^lY5R1*4jUB(u0oE4%Pf z*{(q%>^41tVv)~lgX=yNt}$I{^Q(6i7cW=c@)w7lRj}G{y^ya@>JwYN0?w<9N(}4?bahysl>6X^icr!Uw23<<^$T}s zco8}_@fvf@rAx1jHmH*nJa-tpoyO^yaNwRxSw^{&3x9U21Hb{4>dyT`Id=@ zrecity(STcI+$$Vt|}~)Ut2J~tI{1i|GYy}`pYI0FwsY!H_1@>K82@!l5PL(dY`xM z)!w5<4jh;)_%V_ib##a|mL;OWDw@b(C{nKU&iA_;73oBfR8`=UMi<6*XOofVFCD13 zCrWv}gO93d{Z`cJRb=ULn%<0oYiOfJxn#;YgG$s=ee{IQz(A50HcV1^fq1vX(~~qg zTcRza*xo6dFzUT*P&RpOP}u8UK~DRXY1XYl*%T3cuBLn-6t$30QmhkA!TMg7MDUJC*R7>~sTJQy2dvonI) zDq{yf=bpWhPP5MKqXtue$?XN|=5tb($=V{5Ps;})I_On9NA!SH?c8^?Jj8~dhi99A zv5@lD$PEJRe?aN_yb85o%97uMro=NHPavU$0^=9h9q_rC@+(`s0(^2cfhu|5kQZ*f z?0aqjcD|;h6-i903j!7WY-T6>p~i5V$~(T}3o^0sKbNAOYk_I4?Pt{A$UEGx=p5j9 z_{!A)M(86Ja^O4i*?OVVa95*c%7X=)GG1Zcek&$3m>Grbs?ug%bNN~g^;AMx;hj@}0W}O1VU44^fl_6i>}fU+oFor@DM| z#ocYBn2yd_WgpDHo(iZ5ZX;n8ApO=P2j{!HI%^qBb##sChmg1X>#|tglQryMOibus zHxjq?&=K*E|{n+K5Rvs22=b`5ooF>iEC zj3?PeDoN(Qu=BsRV6XDzP6a&u#0xGgfBCqe{Y8Y*Id$J9H(PkY%4H2Cd(rH5>qt+C zV~ z|KX;zg1lf|R-^73jX;j;ycjMeKLAm`rb2Fu%46h?43SXY{+e*In$4b<*75>F*!;v3wvG3a~>nZB9`)k+6 z1F8}kPu5WGv&FXoSXZ}hO-Z{N;oYIj3)``l<_*?<<>O()W*)8$GSBHU+rDk~-BIMz zI-8KfgkD7D5}Y)6-Q4QY;D^Eoc)0PcW1Dk_JJ((;#-Ao>ew6nIF7KytF4vd5d>!F= ziFNS|f|X{0_t!Bsl1*!mEeMl<4OM1w7!N-a0eDbGWZHA;@1Ik|Tk^@=@y-I%`YulR zU+LHeNd#By znv%uzV-Sm{6|5t z<*XKJR&0O3Zpgb#zsDA}Fzg2#ZBZQ<(ChFW-8l4-0>?I8qGRFh z8qP1H6$)gvdrw4iFA*DaZdRP;kw5+z#w|K&8%YXW?zf)-wd6HhxNU9z4b5KDo!+vP zG7Mibzh+s!%MbRa`9c!nq#AlQmjdE3s|`6rRlf|Rb`gw#*8WHaQ9UObv%b`umi>X_ zp|D8M9B;iU^5kL8Jxmia=Qi=qB=*O4frFHu5}bK8a$!U(EUeR*@^my@>pw(89&B+j7lFtXI6V;}b9F$7@=WX%pat#VYQ!%)OftMwHT$q2 zQ7W}#%PL**hJGH%|EuH^0PH1!ubsA^l87Og(g3kx>@k94bHIhLC zeXvEnz9c7tIO8M{)sNLb7_&EZf_j^#Kd1OL7jetV0ylu$v#})R5A)yPtP{MGAd^4^ zvg^|qX8Avard^&fb2LkS?`Wgls+jL=DP>&tOn45cvV_1|e%xQT z+JjKS`?97`{d$@e33wg zImo-DnDg?Y(cu*?&9{JwY+}ni;=0eM{NQ)FAC6Rr+wX)+Gt70eP4LFI%hTv@u&5+_ zldIi-w93r#-Yjrbikl(5C~V_UolV_zm%2z_2m#yO7Rxz22ictxpy#3_-8^)W(BVc}FI6`LFv zF*po&*ghs%S)`OdKX01?E$9e#H%y?SbhskO-blZCAw}-Wa<%&|Z!E-Sy%+J}`z(!w^jvDY9(amp5 zS?Vt*eStvq;~LXUDprr18i_3Vyh2W6l{c1K;;(x07^kS(N0cvGMI)VXlSI-{N&D;9 zpffF8r`_%T!O`Vyu9Qf#wGd;fWUaTUkb$6@3TCq@OYutLEf-P(hWEcrA3kg5oa1>_ zg>ZU*YfxW6v6!&M?s<0f7Xs9p1MG1%6z74}p3|+y^*4AmGLg0;)l1uEcPJ)dqC7>y zLJaAy4`l12SUm6=;!oo8X;2ZEC~?A~lc4Bih2hR%ALHSo={##$c>dFQr#xe^pIUdu z_gx4@Xo-gy>21Z5Y=g&+!&PP*>8XQId>BL+R~q$XRk_VEJ-p0O5o=hFKjdO46ef$Y zs~jwna_JsG-}~c$K2T+U-J;?)t>o+s9r?V?KsjDN>>_hSHtukzTIF6}AWB|=P6ThU zbJyz@Yml0E7K|@5&ztF9<@)fbAjcr6^n)`vw&>f5o`R}F;{4}}I(zP(Dj^vqyak3# z<0kF8R3t~EMjrbWrGmnDRveh>I9+SUcm5ga`={9t^r+$rPwU)9V+oD6j&9*P=?~w2 z^LpWl+zS!=DpJm|lNu4^JP;*t-g&Ct|26%bj9RO|x#D|RxF49SJ$TknJi&csm;q}Y z10Gm(_R}4MBU1%(w{#4@O|;d{xAeHGF^j^`s3HndkcUAx;(K0muAR|C?Y!=ZCCK(v zCPpk?IvI!`xIH*eNl&d~x3e-b#D=xiGF1P3dOEB^p@}v|oC~|A7pQA`QLE3$WnA16 z$Hw$>``}Z#{^jzxSnv)#qO-lu{zyE!DLK%NrZz>Fh8%Mzj7Ws0Pwn)G(j>EUAhsdK zsF;^Y+jv?$=bfohjOwA>d~9Pc!Ra+doI_8=?^K7XZhi-w03RhJBP}BX06<^>01S$L z0RaFw1pPvPhJ*gb;9vj%{Sg3>0sy3uXbk-whAsn>{`>V?_IKHTU5U>PM}LI^VB7#8I{?5*z{tq2WN#{E z*TtUK($3k%$i{|~ z5rj;sz{jDZ1_S>7-PXi`*V)X;&CJP}lMxI|S-{6(s^cQS;lM;8(L6As=>`B8?T86} zzk{Gi2o!b$145C&n{prk5(&N`2L=FT1H)i9jRydM!$CJY2!_5T3Fa!|vABz1A0iZxQ z;)c}%AP5Nb=7=E(>K8PxxS=*aPh4ME|EKXiwVppcttf`LK6o1K9nV8EO9fety~|6=er z|1by;{$Jp43<(9_G#dDC*SaxcH~{`fr{U;8a?=*jrU3n;(+DI2b(3ls68MMLz>w&e zeWPI*68wki;6MQQ1`9w4TJ1O5074KjnXxNjN_5DG^kZmF*#Q3;?@9H3(hdO}9hO zcfdd91t5B+f};MLRn9T0uZ05b;MNNbvu_&|&@N;Lz3GFmx2ULL}l33IV{If*=q8d{gge4EjH? ze|-Djt_=bMz<;O?3_>EIjDN+y{}6;i|IjBG`X{Ym1o&nM2K|*R-5Bw2&%VhZ1f3E5 zn`zX)k_2>=|9|iw3=Y5P$G_(s@ISiyM|Dsz;HLG1pil(hhL@l*2;{%59{@r@5r0}M zT5~r84chv_|2fhB4&P`D2Dzy^C<2|@-CzNVKwIXY*zZXA7ytjn0Ca`On~@NNj@ADi zGXF}c5Pvp;{4+a2=c|7(h|WI2|362d{?5^0=!x-$WuikK?C&}H|0fPK2LD4%Fm$;6 zw?6-+Iv5c6M@)gClZczlz)(QQ&BOwo8=ynY4Z6_z?H?+Ep?&rytuS={@h1lS!?j`P zp!d6t-~9iZessR{N2UrxkNKv*!$63eVHvF^^bB*e)99SOZi5(GLM5ktwfe pa7-cp^S=V(!or;T1R^2?=!D$K#ly+WoB*BaqyG`GvP!GS{2y6#!yf/dev/null || echo "$now") + tokens_used=$(jq -r '.tokens_used // 0' "$STATE_FILE" 2>/dev/null || echo 0) +else + window_start=$now + tokens_used=0 +fi + +# ── Réinitialisation de la fenêtre glissante (60 secondes) ──────────────────── +window_age=$(( now - window_start )) +if (( window_age >= 60 )); then + window_start=$now + tokens_used=0 +fi + +# ── Estimation conservative du coût de l'outil ──────────────────────────────── +# 1 appel outil ≈ 500 tokens (lecture + écriture courte) +# Ajuster CLAUDE_VELOCITY_MAX_TPM selon votre tier API +estimated_tokens=500 +new_total=$(( tokens_used + estimated_tokens )) + +# ── Throttle si seuil dépassé ───────────────────────────────────────────────── +if (( new_total > MAX_TOKENS_PER_MINUTE )); then + remaining=$(( 60 - window_age )) + if (( remaining > 0 )); then + # Attendre la fin de la fenêtre courante + sleep "$remaining" + window_start=$(date +%s) + new_total=$estimated_tokens + fi +fi + +# ── Persistance de l'état ───────────────────────────────────────────────────── +jq -n \ + --argjson ws "$window_start" \ + --argjson tu "$new_total" \ + '{window_start: $ws, tokens_used: $tu}' > "$STATE_FILE" + +# ── Laisser passer l'outil ───────────────────────────────────────────────────── +# exit 0 = continuer normalement +# exit 1 = bloquer l'outil (non utilisé ici, préférer le throttle) +exit 0 diff --git a/examples/scripts/README.md b/examples/scripts/README.md index 7898767..26fedfb 100644 --- a/examples/scripts/README.md +++ b/examples/scripts/README.md @@ -17,6 +17,7 @@ Utility scripts for Claude Code power users. | `clean-reinstall-claude.sh/.ps1` | Clean reinstall of Claude Code | | `fresh-context-loop.sh` | Run Claude Code in fresh context loops | | `session-search.sh` | Search across Claude Code session histories | +| `cc-sessions.py` | Advanced session search with incremental indexing (Python) | | `session-stats.sh` | Statistics about Claude Code sessions | | `bridge.py` | Bridge: Claude Code → doobidoo → LM Studio | @@ -262,6 +263,38 @@ Search across all Claude Code session histories. --- +## Session Manager (Advanced) + +Advanced CLI for session search, browse & resume with incremental indexing. + +**vs session-search.sh**: Faster search (~200ms vs ~400ms), partial ID resume, branch filter, worktree support, incremental JSONL index. + +```bash +# Search in current project +cc-sessions search "notion" + +# Search all projects +cc-sessions --all search "stripe" + +# Filter by date and branch +cc-sessions search "auth" --since 7d --branch develop + +# Recent sessions +cc-sessions recent 10 + +# Resume with partial ID +cc-sessions resume 8d472d + +# JSON output for scripting +cc-sessions --json search "prisma" | jq -r '.[].id' +``` + +**Installation**: `cp cc-sessions.py ~/bin/cc-sessions && chmod +x ~/bin/cc-sessions` + +> [Gist source](https://gist.github.com/FlorianBruniaux/992d4d1107592d9e98ca9d89838871c6) + +--- + ## Session Stats Get statistics about your Claude Code usage. diff --git a/examples/scripts/cc-sessions.py b/examples/scripts/cc-sessions.py new file mode 100755 index 0000000..40348e6 --- /dev/null +++ b/examples/scripts/cc-sessions.py @@ -0,0 +1,498 @@ +#!/usr/bin/env python3 +""" +cc-sessions — Fast CLI to search, browse & resume Claude Code session history + +OVERVIEW +-------- +Claude Code stores all conversation history locally in ~/.claude/projects/ as JSONL files. +This tool indexes those sessions for fast search and provides a clean CLI interface to: + - Search by keyword across all conversations + - Filter by date, branch, or project + - View recent sessions + - Resume past sessions with partial ID matching + +FEATURES +-------- +- ⚡ Incremental indexing: ~200ms search on 1300+ sessions (vs ~5s full scan) +- 📁 Project-scoped by default: auto-detects current project from pwd +- 🔍 Powerful filters: --since 7d, --branch develop, --limit N +- 🎯 Partial ID matching: 'cc-sessions resume 8d472d' finds full session ID +- 🌳 Worktree support: includes git worktree sessions automatically +- 📊 JSON output: pipe to jq/fzf for advanced workflows +- 🐍 Zero dependencies: Python stdlib only (json, argparse, pathlib) + +USAGE +----- +# Search in current project +cc-sessions search "notion" + +# Search all projects +cc-sessions --all search "stripe" + +# Filter by date and branch +cc-sessions search "auth" --since 7d --branch develop --limit 5 + +# Recent sessions +cc-sessions recent 10 + +# Session details (partial ID match) +cc-sessions info 8d472d2c + +# Resume session (execs: claude --resume ) +cc-sessions resume 8d472d2c + +# Force rebuild index +cc-sessions reindex + +# JSON output for composition +cc-sessions --json search "prisma" | jq -r '.[].id' + +INSTALLATION +------------ +1. Save this script to ~/bin/cc-sessions +2. chmod +x ~/bin/cc-sessions +3. Run: cc-sessions recent 5 + (First run builds index ~10s for 1500 sessions, then <200ms) + +INDEX ARCHITECTURE +------------------ +- Location: ~/.claude/sessions-index.jsonl (~360KB for 1300 sessions) +- Format: One JSON object per line with session metadata +- Update strategy: Incremental (only re-parses modified files) +- Rebuild: Automatic on search/recent, manual with 'reindex' + +Session metadata extracted: + - id: Full session UUID + - project: Encoded project path + - branch: Git branch from JSONL gitBranch field + - context: First significant user message (60 chars) + - timestamp: ISO 8601 datetime + - mtime: File modification time (for incremental updates) + +FILTERING RULES +--------------- +Significant user message = all 3 conditions: + 1. entry['type'] == 'user' + 2. content is string (not array = tool_result) + 3. content doesn't start with '<' (excludes XML internal tags) + +This covers all current and future Claude Code internal messages: + - , , + - , , + - Any future XML-formatted system messages + +Subagent sessions (prefix 'agent-') are excluded by default. + +PERFORMANCE +----------- +- First run (build index): ~10s for 1500 sessions +- Subsequent searches: ~200ms (reads index) +- Incremental rebuild: <1s if no changes +- Index size: ~280 bytes per session + +OUTPUT FORMAT +------------- +2026-02-05 17:15 8d472d2c-128b-4d9b-824d-3944e3409984 develop "Migration Support Slack → Notion..." +│ │ │ │ +Date/Time Full Session ID (for --resume) Branch First user message (60 chars) + +ECOSYSTEM +--------- +Similar tools: + - claude-history (Rust): Fuzzy search with fzf + - cclog (Go): JSONL → HTML/Markdown + TUI + - claude-code-history-viewer (Tauri): Desktop GUI + - fast-resume (Rust): Tantivy index + TUI + +cc-sessions positioning: Unix-style CLI, fast search, powerful filters, no dependencies. + +AUTHOR +------ +Created for terminal power users who prefer CLI over GUI. +Gist: https://gist.github.com/FlorianBruniaux/992d4d1107592d9e98ca9d89838871c6 +""" + +import argparse +import json +import os +import sys +from datetime import datetime, timedelta +from pathlib import Path +from typing import Dict, List, Optional + +CLAUDE_DIR = Path.home() / ".claude" +INDEX_PATH = CLAUDE_DIR / "sessions-index.jsonl" + + +def parse_duration(duration_str: str) -> datetime: + """Parse duration string like '7d', '30d' or ISO date.""" + if duration_str.endswith('d'): + days = int(duration_str[:-1]) + return datetime.now() - timedelta(days=days) + return datetime.fromisoformat(duration_str) + + +def encode_project_path(path: Path) -> str: + """Encode project path to match Claude's format.""" + return str(path).replace('/', '-') # Keep leading - from root / + + +def detect_project() -> Optional[str]: + """Detect current project from pwd.""" + pwd = Path.cwd() + encoded = encode_project_path(pwd) + project_dir = CLAUDE_DIR / "projects" / encoded + + if not project_dir.exists(): + return None + return encoded + + +def get_project_dirs(all_projects: bool = False) -> List[Path]: + """Get project directories to scan.""" + if all_projects: + projects_dir = CLAUDE_DIR / "projects" + if not projects_dir.exists(): + return [] + return [d for d in projects_dir.iterdir() if d.is_dir()] + + current = detect_project() + if not current: + return [] + + dirs = [] + base = CLAUDE_DIR / "projects" / current + dirs.append(base) + + # Include worktrees (glob pattern: --worktrees*) + worktrees = list(base.parent.glob(f"{current}--worktrees*")) + dirs.extend(worktrees) + + return dirs + + +def get_first_user_message(filepath: Path) -> Optional[str]: + """Extract first significant user message from session JSONL.""" + try: + with open(filepath, 'r') as f: + for line in f: + if not line.strip(): + continue + try: + entry = json.loads(line) + + # Rule 1: Must be user message + if entry.get('type') != 'user': + continue + + content = entry.get('message', {}).get('content', '') + + # Rule 2: Must be string (not array = tool_result) + if not isinstance(content, str): + continue + + # Rule 3: Not internal XML message + if content.startswith('<'): + continue + + # Found significant user message + return content[:60].replace('\n', ' ') + except json.JSONDecodeError: + continue + except Exception: + pass + return None + + +def parse_session(filepath: Path) -> Optional[Dict]: + """Extract session metadata.""" + session_id = filepath.stem + + # Skip subagent sessions + if session_id.startswith('agent-'): + return None + + mtime = filepath.stat().st_mtime + context = get_first_user_message(filepath) + + if not context: + return None + + # Extract branch from gitBranch field in JSONL + branch = "unknown" + try: + with open(filepath, 'r') as f: + for line in f: + if not line.strip(): + continue + try: + entry = json.loads(line) + git_branch = entry.get('gitBranch') + if git_branch: + branch = git_branch + break + except json.JSONDecodeError: + continue + except Exception: + pass + + project = filepath.parent.name + + return { + "id": session_id, + "project": project, + "mtime": mtime, + "branch": branch, + "context": context, + "timestamp": datetime.fromtimestamp(mtime).isoformat() + } + + +def build_index(project_dirs: List[Path], existing_index: Dict[str, Dict]) -> Dict[str, Dict]: + """Build or update index incrementally.""" + index = existing_index.copy() + + for project_dir in project_dirs: + jsonl_files = list(project_dir.glob("*.jsonl")) + + for filepath in jsonl_files: + session_id = filepath.stem + file_mtime = filepath.stat().st_mtime + + # Skip if already indexed and not modified + if session_id in index and index[session_id]['mtime'] >= file_mtime: + continue + + # Parse session + session = parse_session(filepath) + if session: + index[session_id] = session + + return index + + +def load_index() -> Dict[str, Dict]: + """Load existing index.""" + if not INDEX_PATH.exists(): + return {} + + index = {} + try: + with open(INDEX_PATH, 'r') as f: + for line in f: + if not line.strip(): + continue + entry = json.loads(line) + index[entry['id']] = entry + except Exception as e: + print(f"Warning: Failed to load index: {e}", file=sys.stderr) + return {} + + return index + + +def save_index(index: Dict[str, Dict]): + """Save index to disk.""" + CLAUDE_DIR.mkdir(exist_ok=True) + + with open(INDEX_PATH, 'w') as f: + for entry in index.values(): + f.write(json.dumps(entry) + '\n') + + +def cmd_search(keyword: str, project_dirs: List[Path], limit: int = 10, + since: Optional[str] = None, branch: Optional[str] = None, + json_output: bool = False): + """Search sessions by keyword.""" + # Build/update index + existing = load_index() + index = build_index(project_dirs, existing) + save_index(index) + + # Filter + matches = [] + since_dt = parse_duration(since) if since else None + + for entry in index.values(): + # Filter by project + if not any(entry['project'] == d.name for d in project_dirs): + continue + + # Filter by keyword (case-insensitive in context) + if keyword.lower() not in entry['context'].lower(): + continue + + # Filter by date + if since_dt: + entry_dt = datetime.fromisoformat(entry['timestamp']) + if entry_dt < since_dt: + continue + + # Filter by branch + if branch and entry['branch'] != branch: + continue + + matches.append(entry) + + # Sort by timestamp desc + matches.sort(key=lambda x: x['timestamp'], reverse=True) + matches = matches[:limit] + + # Output + if json_output: + print(json.dumps(matches, indent=2)) + else: + for m in matches: + dt = datetime.fromisoformat(m['timestamp']) + print(f"{dt.strftime('%Y-%m-%d %H:%M')} {m['id']} {m['branch']:12} \"{m['context']}\"") + + +def cmd_recent(project_dirs: List[Path], limit: int = 10, json_output: bool = False): + """Show recent sessions.""" + # Build/update index + existing = load_index() + index = build_index(project_dirs, existing) + save_index(index) + + # Filter by project + sessions = [e for e in index.values() + if any(e['project'] == d.name for d in project_dirs)] + + # Sort by timestamp desc + sessions.sort(key=lambda x: x['timestamp'], reverse=True) + sessions = sessions[:limit] + + # Output + if json_output: + print(json.dumps(sessions, indent=2)) + else: + for s in sessions: + dt = datetime.fromisoformat(s['timestamp']) + print(f"{dt.strftime('%Y-%m-%d %H:%M')} {s['id']} {s['branch']:12} \"{s['context']}\"") + + +def cmd_info(session_id: str): + """Show session details.""" + # Match partial ID + index = load_index() + + matches = [s for s in index.values() if s['id'].startswith(session_id)] + + if not matches: + print(f"Error: Session not found: {session_id}", file=sys.stderr) + sys.exit(1) + + if len(matches) > 1: + print(f"Error: Ambiguous ID, multiple matches:", file=sys.stderr) + for m in matches: + print(f" {m['id']}", file=sys.stderr) + sys.exit(1) + + session = matches[0] + dt = datetime.fromisoformat(session['timestamp']) + + print(f"Session: {session['id']}") + print(f"Date: {dt.strftime('%Y-%m-%d %H:%M:%S')}") + print(f"Project: {session['project']}") + print(f"Branch: {session['branch']}") + print(f"Context: {session['context']}") + + +def cmd_resume(session_id: str): + """Resume a session.""" + # Match partial ID + index = load_index() + + matches = [s for s in index.values() if s['id'].startswith(session_id)] + + if not matches: + print(f"Error: Session not found: {session_id}", file=sys.stderr) + sys.exit(1) + + if len(matches) > 1: + print(f"Error: Ambiguous ID, multiple matches:", file=sys.stderr) + for m in matches: + print(f" {m['id']}", file=sys.stderr) + sys.exit(1) + + full_id = matches[0]['id'] + + # exec claude --resume + os.execvp('claude', ['claude', '--resume', full_id]) + + +def cmd_reindex(): + """Force rebuild of entire index.""" + print("Rebuilding index...", file=sys.stderr) + + projects_dir = CLAUDE_DIR / "projects" + if not projects_dir.exists(): + print("Error: No projects directory found", file=sys.stderr) + sys.exit(1) + + all_dirs = [d for d in projects_dir.iterdir() if d.is_dir()] + + index = build_index(all_dirs, {}) + save_index(index) + + print(f"Indexed {len(index)} sessions", file=sys.stderr) + + +def main(): + parser = argparse.ArgumentParser(description="Search Claude Code session history") + parser.add_argument('--all', action='store_true', help="Search all projects") + parser.add_argument('--json', action='store_true', help="JSON output") + + subparsers = parser.add_subparsers(dest='command', required=True) + + # search + search_parser = subparsers.add_parser('search', help="Search sessions by keyword") + search_parser.add_argument('keyword', help="Search keyword") + search_parser.add_argument('--limit', type=int, default=10, help="Max results") + search_parser.add_argument('--since', help="Filter by date (7d, 30d, or ISO date)") + search_parser.add_argument('--branch', help="Filter by git branch") + + # recent + recent_parser = subparsers.add_parser('recent', help="Show recent sessions") + recent_parser.add_argument('limit', nargs='?', type=int, default=10, help="Number of sessions") + + # info + info_parser = subparsers.add_parser('info', help="Show session details") + info_parser.add_argument('session_id', help="Session ID (partial match)") + + # resume + resume_parser = subparsers.add_parser('resume', help="Resume a session") + resume_parser.add_argument('session_id', help="Session ID (partial match)") + + # reindex + subparsers.add_parser('reindex', help="Force rebuild index") + + args = parser.parse_args() + + # Get project dirs + if args.command in ['search', 'recent']: + project_dirs = get_project_dirs(args.all) + + if not project_dirs: + if args.all: + print("Error: No projects found", file=sys.stderr) + else: + print("Error: Not in a Claude project directory", file=sys.stderr) + print("Hint: Use --all to search all projects", file=sys.stderr) + sys.exit(1) + + # Execute command + if args.command == 'search': + cmd_search(args.keyword, project_dirs, args.limit, args.since, args.branch, args.json) + elif args.command == 'recent': + cmd_recent(project_dirs, args.limit, args.json) + elif args.command == 'info': + cmd_info(args.session_id) + elif args.command == 'resume': + cmd_resume(args.session_id) + elif args.command == 'reindex': + cmd_reindex() + + +if __name__ == '__main__': + main() diff --git a/guide/cheatsheet.md b/guide/cheatsheet.md index 402f957..7d98121 100644 --- a/guide/cheatsheet.md +++ b/guide/cheatsheet.md @@ -537,6 +537,7 @@ where.exe claude; claude doctor; claude mcp list - **Official docs**: [docs.anthropic.com/claude-code](https://docs.anthropic.com/en/docs/claude-code) - **Advanced guide**: [Claudelog.com](https://claudelog.com/) - Tips & patterns - **Full guide**: `ultimate-guide.md` (this repo) +- **Whitepapers (FR + EN)**: [florian.bruniaux.com/guides](https://www.florian.bruniaux.com/guides) — 9 focused PDFs - **Project memory**: Create `CLAUDE.md` at project root - **DeepSeek (cost-effective)**: Configure via `ANTHROPIC_BASE_URL` diff --git a/guide/ultimate-guide.md b/guide/ultimate-guide.md index f3175d3..ecdacf9 100644 --- a/guide/ultimate-guide.md +++ b/guide/ultimate-guide.md @@ -696,7 +696,8 @@ claude --resume claude mcp call serena list_sessions # Recommended: Fast search with ready-to-use resume commands -# See examples/scripts/session-search.sh (zero dependencies, 15ms list, 400ms search) +# See examples/scripts/session-search.sh (bash, zero dependencies, 15ms list, 400ms search) +# See examples/scripts/cc-sessions.py (Python, incremental index, partial resume, branch filter) cs # List 10 most recent sessions cs "authentication" # Full-text search across all sessions @@ -705,7 +706,7 @@ You: /exit Session ID: abc123def (saved for resume) ``` -> **Session Search Tool**: For fast session search with copy-paste resume commands, see [Observability Guide](./observability.md#session-search--resume) and [session-search.sh](../examples/scripts/session-search.sh). +> **Session Search Tools**: For fast session search, see [session-search.sh](../examples/scripts/session-search.sh) (bash, lightweight) and [cc-sessions.py](../examples/scripts/cc-sessions.py) (Python, advanced features: incremental index, partial ID resume, branch filter). Also: [Observability Guide](./observability.md#session-search--resume). **Common use cases**: @@ -18890,6 +18891,26 @@ If you work with non-technical team members, **Cowork** brings Claude's agentic ## Further Reading +### Whitepapers (FR + EN) + +A series of 9 focused whitepapers covering Claude Code topics in depth, available in French and English: + +| # | Topic | Scope | +|---|-------|-------| +| 00 | Foundations | First steps, core concepts | +| 01 | Effective Prompts | Prompting method, context, hooks | +| 02 | Customization | CLAUDE.md, agents, skills | +| 03 | Security | 17 hooks, threat DB, permissions | +| 04 | Architecture | Agent loop, context, token pricing | +| 05 | Team Deployment | CI/CD, observability, 50+ devs | +| 06 | Privacy & Compliance | Anthropic data, ZDR, retention | +| 07 | Reference Guide | Complete synthesis + workflows | +| 08 | Agent Teams | Multi-agent orchestration | + +→ **[Download all whitepapers (FR + EN)](https://www.florian.bruniaux.com/guides)** + +--- + ### Advanced Workflows For advanced autonomous workflows, see Nick Tune's [Coding Agent Development Workflows](https://medium.com/nick-tune-tech-strategy-blog/coding-agent-development-workflows-af52e6f912aa) - a pipeline-driven approach focusing on fully autonomous PR generation with multi-tool orchestration. diff --git a/machine-readable/llms.txt b/machine-readable/llms.txt index 546424d..1f611f0 100644 --- a/machine-readable/llms.txt +++ b/machine-readable/llms.txt @@ -128,6 +128,7 @@ claude-code-ultimate-guide/ - Official: https://docs.anthropic.com/en/docs/claude-code - DeepWiki: https://deepwiki.com/FlorianBruniaux/claude-code-ultimate-guide - Inspiration: https://claudelog.com/ +- Whitepapers (FR + EN): https://www.florian.bruniaux.com/guides — 9 focused whitepapers on Claude Code (foundations, prompting, customization, security, architecture, team, privacy, reference, agent teams) ## Author diff --git a/machine-readable/reference.yaml b/machine-readable/reference.yaml index 6683cbe..f3ba7f5 100644 --- a/machine-readable/reference.yaml +++ b/machine-readable/reference.yaml @@ -44,6 +44,7 @@ deep_dive: # Session management session_search: "guide/observability.md:29" session_search_script: "examples/scripts/session-search.sh" + cc_sessions_script: "examples/scripts/cc-sessions.py" session_resume_limitations: "guide/observability.md:117" session_cross_folder_migration: "guide/observability.md:117" session_migration_manual: "guide/observability.md:135" @@ -77,7 +78,11 @@ deep_dive: # PDF Generation pdf_generation: "guide/workflows/pdf-generation.md" pdf_generator_skill: "examples/skills/pdf-generator.md" - whitepapers_example: "whitepapers/README.md" # Local example only (gitignored) + # Whitepapers (FR + EN) — 9 focused whitepapers on Claude Code + whitepapers_url: "https://www.florian.bruniaux.com/guides" + whitepapers_fr: "whitepapers/fr/" # FR sources (Quarto .qmd) + whitepapers_en: "whitepapers/en/" # EN sources (Quarto .qmd) + whitepapers_topics: "foundations, prompting, customization, security, architecture, team, privacy, reference, agent-teams" # Learning with AI (guide/learning-with-ai.md) learning_quick_check: "guide/learning-with-ai.md:31" learning_uval_protocol: "guide/learning-with-ai.md:127"