From 69096d1e501c8f776cf1e07173e205931dc16882 Mon Sep 17 00:00:00 2001 From: Masato Onodera Date: Thu, 21 May 2026 17:02:49 -1000 Subject: [PATCH 1/4] fix: ensure DB connections are fully released on close TargetDB.close() was only calling session.close(), which returns connections to SQLAlchemy's pool but does not close the underlying TCP sockets. On abnormal process termination (exceptions, SIGINT, etc.) the engine is never garbage-collected, leaving idle connections on the PostgreSQL server. Add engine.dispose() to close() so that all pooled connections are released to the server when the caller is done. Also add __enter__ and __exit__ to support usage as a context manager. Co-Authored-By: Claude Sonnet 4.6 --- src/targetdb/targetdb.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/targetdb/targetdb.py b/src/targetdb/targetdb.py index 523a4ab..58dfed7 100644 --- a/src/targetdb/targetdb.py +++ b/src/targetdb/targetdb.py @@ -39,8 +39,23 @@ def connect(self): def close(self): self.session.close() + # Dispose the engine to release all pooled connections back to the database + # server. Without this, SQLAlchemy's connection pool keeps the underlying + # TCP sockets open until the engine is garbage-collected, which may never + # happen on abnormal process termination. + self.engine.dispose() # print('connection to {0} closed'.format(self.dbinfo)) + def __enter__(self): + """Support usage as a context manager: ``with TargetDB(...) as db:``.""" + self.connect() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Ensure close() is called even if an exception occurs inside the block.""" + self.close() + return False # re-raise any exception + def reset_all(self, full=True): # # Order of the resetting tables is important From e434b2f79320514a34d02f605bad32b02a3d8951 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 22 May 2026 03:05:14 +0000 Subject: [PATCH 2/4] chore: update ER diagrams [skip ci] --- diagrams/erdiagram_targetdb_latest.pdf | Bin 47898 -> 47898 bytes docs/tbls/public.fluxstd.md | 2 +- docs/tbls/public.sky.md | 2 +- docs/tbls/public.target.md | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/diagrams/erdiagram_targetdb_latest.pdf b/diagrams/erdiagram_targetdb_latest.pdf index 7c8341fc00066e4cad7986038f4b3a4030824310..8cd97f0263970ed03f7a9d741e1f2eb210f310f0 100644 GIT binary patch delta 29444 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 GPeuv>3VKff diff --git a/docs/tbls/public.fluxstd.md b/docs/tbls/public.fluxstd.md index 79ca042..88c6677 100644 --- a/docs/tbls/public.fluxstd.md +++ b/docs/tbls/public.fluxstd.md @@ -102,9 +102,9 @@ | fluxstd_pkey | CREATE UNIQUE INDEX fluxstd_pkey ON public.fluxstd USING btree (fluxstd_id) | | uq_obj_id_input_catalog_id_version | CREATE UNIQUE INDEX uq_obj_id_input_catalog_id_version ON public.fluxstd USING btree (obj_id, input_catalog_id, version) | | ix_fluxstd_version_fluxstdid | CREATE INDEX ix_fluxstd_version_fluxstdid ON public.fluxstd USING btree (version, fluxstd_id) | -| fluxstd_q3c_ang2ipix_idx | CREATE INDEX fluxstd_q3c_ang2ipix_idx ON public.fluxstd USING btree (q3c_ang2ipix(ra, "dec")) | | ix_fluxstd_input_catalog_fluxstdid | CREATE INDEX ix_fluxstd_input_catalog_fluxstdid ON public.fluxstd USING btree (input_catalog_id, fluxstd_id) | | ix_fluxstd_version | CREATE INDEX ix_fluxstd_version ON public.fluxstd USING btree (version) | +| fluxstd_q3c_ang2ipix_idx | CREATE INDEX fluxstd_q3c_ang2ipix_idx ON public.fluxstd USING btree (q3c_ang2ipix(ra, "dec")) | ## Relations diff --git a/docs/tbls/public.sky.md b/docs/tbls/public.sky.md index f4d93bf..6b4f98d 100644 --- a/docs/tbls/public.sky.md +++ b/docs/tbls/public.sky.md @@ -34,9 +34,9 @@ | ---- | ---------- | | sky_pkey | CREATE UNIQUE INDEX sky_pkey ON public.sky USING btree (sky_id) | | sky_obj_id_input_catalog_id_version_key | CREATE UNIQUE INDEX sky_obj_id_input_catalog_id_version_key ON public.sky USING btree (obj_id, input_catalog_id, version) | +| ix_sky_input_catalog_id | CREATE INDEX ix_sky_input_catalog_id ON public.sky USING btree (input_catalog_id) | | sky_q3c_ang2ipix_idx | CREATE INDEX sky_q3c_ang2ipix_idx ON public.sky USING btree (q3c_ang2ipix(ra, "dec")) | | ix_sky_version | CREATE INDEX ix_sky_version ON public.sky USING btree (version) | -| ix_sky_input_catalog_id | CREATE INDEX ix_sky_input_catalog_id ON public.sky USING btree (input_catalog_id) | ## Relations diff --git a/docs/tbls/public.target.md b/docs/tbls/public.target.md index 12ceb5a..1728dae 100644 --- a/docs/tbls/public.target.md +++ b/docs/tbls/public.target.md @@ -121,11 +121,11 @@ | target_pkey | CREATE UNIQUE INDEX target_pkey ON public.target USING btree (target_id) | | target_propid_obcode_catid_objid_resolution_key | CREATE UNIQUE INDEX target_propid_obcode_catid_objid_resolution_key ON public.target USING btree (proposal_id, ob_code, input_catalog_id, obj_id, is_medium_resolution) | | target_propid_obcode_key | CREATE UNIQUE INDEX target_propid_obcode_key ON public.target USING btree (proposal_id, ob_code) | -| target_proposal_id_idx | CREATE INDEX target_proposal_id_idx ON public.target USING btree (proposal_id) | -| target_obj_id_input_catalog_id_idx | CREATE INDEX target_obj_id_input_catalog_id_idx ON public.target USING btree (obj_id, input_catalog_id) | | target_input_catalog_id_idx | CREATE INDEX target_input_catalog_id_idx ON public.target USING btree (input_catalog_id) | | target_proposal_id_obj_id_idx | CREATE INDEX target_proposal_id_obj_id_idx ON public.target USING btree (proposal_id, obj_id) | | target_q3c_ang2ipix_idx | CREATE INDEX target_q3c_ang2ipix_idx ON public.target USING btree (q3c_ang2ipix(ra, "dec")) | +| target_proposal_id_idx | CREATE INDEX target_proposal_id_idx ON public.target USING btree (proposal_id) | +| target_obj_id_input_catalog_id_idx | CREATE INDEX target_obj_id_input_catalog_id_idx ON public.target USING btree (obj_id, input_catalog_id) | ## Relations From 74e7f1aacfe096a0dfdd7751054df978ac06fed5 Mon Sep 17 00:00:00 2001 From: Masato Onodera Date: Thu, 21 May 2026 17:19:15 -1000 Subject: [PATCH 3/4] Address Copilot review comments on close() and __enter__() - Wrap session.close() in try/finally so engine.dispose() always runs, even if session.close() itself raises an exception. - Make __enter__() idempotent: skip connect() if a session already exists, preventing an engine/session leak when called on an already-connected instance (e.g. db.connect(); with db:). Co-Authored-By: Claude Sonnet 4.6 --- src/targetdb/targetdb.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/targetdb/targetdb.py b/src/targetdb/targetdb.py index 58dfed7..154d888 100644 --- a/src/targetdb/targetdb.py +++ b/src/targetdb/targetdb.py @@ -38,17 +38,20 @@ def connect(self): # print('connection to {0} started'.format(self.dbinfo)) def close(self): - self.session.close() - # Dispose the engine to release all pooled connections back to the database - # server. Without this, SQLAlchemy's connection pool keeps the underlying - # TCP sockets open until the engine is garbage-collected, which may never - # happen on abnormal process termination. - self.engine.dispose() + try: + self.session.close() + finally: + # Dispose the engine to release all pooled connections back to the database + # server. Without this, SQLAlchemy's connection pool keeps the underlying + # TCP sockets open until the engine is garbage-collected, which may never + # happen on abnormal process termination. + self.engine.dispose() # print('connection to {0} closed'.format(self.dbinfo)) def __enter__(self): """Support usage as a context manager: ``with TargetDB(...) as db:``.""" - self.connect() + if not hasattr(self, "session"): + self.connect() return self def __exit__(self, exc_type, exc_val, exc_tb): From 50c7a2d6673d8a33dd7938e73ebd453e7f5d420e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 22 May 2026 03:21:13 +0000 Subject: [PATCH 4/4] chore: update ER diagrams [skip ci] --- diagrams/erdiagram_targetdb_latest.pdf | Bin 47898 -> 47895 bytes docs/tbls/public.fluxstd.md | 2 +- docs/tbls/public.sky.md | 2 +- docs/tbls/public.target.md | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/diagrams/erdiagram_targetdb_latest.pdf b/diagrams/erdiagram_targetdb_latest.pdf index 8cd97f0263970ed03f7a9d741e1f2eb210f310f0..db3c9218c4fbe1f226086944664ebb019ecfabc4 100644 GIT binary patch delta 17775 zcmZ76Q*)}VxvsjXF-MJhtDaeZ zpTW|e!4i}Jgsq9EKd%@}1T6dhsQ!wf`04kagGINvllqBl_4q`!LE%ee!&I9X((O;@ zzuBBt^ls0RXNg=o=GACO{)LO_OWmn~|7<(Hj=~; z8ke=#8cS`MW^<~4i)3{hxcIyGU`?<8zDwZ!sN13O9n1QH$}I}lv_xd$8?_jW7py|; zdU`1Z48%V?DiiFh>(t=AK2gT(`*u6s5xBm&ci-=qzC6}j*yQIq;E;0k3_)wWmY=>Z zV)_mNe&KL_ei|dHa(yuN0_sn=;L_(zu4KY<0lI^t4tI)g98Fz*K!nT%eh~H)Pr~nNwKB`9%Kb>vF7xNB8;a2~~0t~*Re)mGy-y5Lfe1EnL5~H~Hv9aT3C-hnznZ?mQ-M&9+B3MQ1U%hA7m(Jt7#b|X>)&upp`=ebaP4ooOlFo znj`9_gkSIcF(HjnrKf&bm_kiP>e9EMPPJ@fL)QUS{5Np6k6eh1)ts>C30TL@MTq;b zZ4|K_gQCV3QB)kyiLVQ3#EE@%wXbz~o%k@*6o-;(m&6jLn$2o+2CR;z99a(s9@oVx z!HI|kPDu(z>0(3$EA%bGWc|bdjZ5*$yWzE8VjcTD7=JDk^7Qr;USD(BFg%(lbw0na zrGlH}b!^!zej4=$ngwg!($W3$QQj(>u`GJSKqI7Y>c@Hp+eb^zvx}6{--wkXa`?Za z*fR|vLgBx0%qY>RK(g`_`1=HTlua=p#h1{2u*rl$;)z+&{LxMI3MTdd`gfqfNiuz? z`8*K^2KF&fb`X>ks~l6fnH>~7+fb+sca&5K;lunyO7?U!OA-W%P&X6LL1M7Ve+LSe zp=!pkl}BLe!zqn)l{}TT z(=`nloh18~Y_&99!jy6V#43|+wnTsA3s!Gq( z$W3~iQISqmwO^GCqJ-iNd-^8dWXmCJ0y&)Gr4x=Mc#6VL;K_LQpodc)Be*#~gT6 z>T84dOJVqhOH;Tf^WDb@hW|+(^KpL3Yx|viKAPGQU;6wtAv@>PjmV?JgGGwZ4l7Cf z&9*SZL&Rn2nnUI4q01=h{&~Zmi*DmrnyG#C9`k5nLiKj$abDhVO2I#bTmDPUOe~Rv z-*_C*)l(fCaG9Os$YvD#BNXQj8t&@~ z2Q$wie=h`Q9aPJ`c=xGn&b{{7ZjB=C0B2>e9|@P0@fU#&#DJaagDv7pS%_!d5Sy;V{2 znKq+l;X!m7xueAmP+np3z((f;N@6k_T4= zNV~P!@#ENj1n*j2Trq>Z^vG%Zcm8988UdoGM+{@4tNr`?4+(uv3y9%I``M%WiUFc7 zY;pIv1VlGDKas$~79n7=kS;w+X<$0K9uhrp%eHW3iNl9isxVAy;9_g1_$m z-Z_&MHL1<{!_wxeFnJC*X>hAamX-Y!dvWIuoZ`4UnZ8L`1u8cVB`%l)?HOn}E5_wn ztSy5(kQBPXWN>JSLd?5|mg_!}WMKDXS5-65B~6zV+a%iyDTsD?DzUT<3%iWTz0U_? zD~vHOH;G3LmzTj+s86nzKPnZv{Dm4EBE?&Up5@tuW7?<;HlT3wq2?NQ{REow0{#%x$_?lssKA zVTs~Jk*(NbJ8A7W!Q!k{^KO>LF%k>EPAuts>^1!ntC~bbD;Gujo zck98w&T=(g)^EVq#%jxSPYkgm_T$iJOz$2R79URe!u#-jG;elVJ^5~<{D+qPt)P*9 zQ-@B{cNorYb3!dTV*>(Vg0@9`?uCY|Avm z+s8o;JUy!rPyp_)EcbsER6@__Fi?Aj65y%PI6Ar^D*=M?^$Ll?=IeYcU;4NwLx=SD zDbxbPirL;?KnPDMMD5pIJSkkSuvG-c6TE(tz=u_!TxK7NyG z`EeAI&(VdsM`L_4%pne$nVWXzM`OY?>uezacxLJ2h#O>u8lr@m4xjHntJ(~S(M#y2 z)vL5tN5F>7iL!_jpL3HNq0+b)S#?h=Imf8rj3XN@I`teO0*~CP<7j)$Nl&1CylX5z z*jD#8v_+r00@@AD#B(+N_3vaV=OjnyV5C2)UA!_1=YG*f*BJ%QVB7t9K9J~#qmGMu zyDi?M4<-tEyg07unTJz|4z(WS;wHOWS;;1cB!D43zn+yrB57gj%YBl%?r-0hCH~~Z zn-EYw_@w*C>Q0AvQ!;vK9lYXC>wN}a>M5lZ^;=>IvPWICKLs6U zSbjao)*st}Q{0gm;feB{6piN;=18LmC)`dx77yr1Jgq$xv*#fhgDn4|tO>WAYX%aJ zrT|G(rRe`VOPJ#%^`(T|jG2BS_##=K5S~3ZMaAVQ;Bl{gs4SVt7h~+d?fbEqWLwTl zV%_nv_ys1%Q^J+VHT*W%R&~IGR!Vi}fuJKw z8Flv#Ur#Sn-QkD(n%8P5*O2re;hYAj{TevAlxpCC?Yop9QKwLOHUh?V#l=)^Vh7{~ zqeakaifr}Uy}m2A(L-JyiL}Gw===4wjM?h1Skd*^KmJ#*)&ucKZJ@GytJxl+!JBGL zcr7E0Ob#b?)Qio(q5n>!~X4m&GZD|SPQViTeh`CAK40?pB^!p{L?FIQq9lU!&(Mf8t zXy-;tW%zm43>-HSl@o_4ymX7p_ZCHiT5KfCD~$DaS5N78fZ zQ5BgclVRcLNlTF-y-xE$1bHY6C{Q5WwfpSY#Vn>-*{4dFw!?%h^Yj1yfDkOm)Yz*L zjEX+ZeR8@In-0?9^l~0p>I~W%FH}#4Y4mfR1?Hn&R(PK^FsHZjmmLE#kT6b62ML$a z{Dbag1$yP_LkE0&=3|XWi3`rR>TtujsBtSwM<{{|!m0NAeo-C@*kWo(s^d{NM%e3F zb&(ab1Pe6_1$-yh8dXd~{M2rEn}mN9PMZ*xnp59bjTeJ7fud&!_WAfIQl2JRTa4=MDXO8=L_*+ z9PFq9Qqb;(n4_H0*T76INsr%Bl@9{!Lc071H}#K?CFC%atLE<*>DR+|Iw3Z zB91BEHCFbw?@c^@LaX~x6fnM>oN17`<^6F@Rv^XZ0Uu|P_%w$$J%g!|Y06+JeR$QmX?8ad3Z!F_K4WC?mVOXk9Lj$_Fw!H5eni|*X1}M&<~8W_FP(7@JqV*PJ^FX zUGZ0!XQIc+Otvv#upgM*{MYo=o?SHv;4RUly9 z9)<|KE?y5(odNU?!hank09^VPb!rv!R$!eRia91AOx}FiiFu2vc)9^ZK$^!-rP-DM zx<9*xuwZC%j)|{^NJ2s(@X?s|jr?22^)2MA+-<3#6|2ZqWjM;7aElGMtm?0s@TyxT zXv#K!2ary$UL8|y3#=mBJhDMEOX^hoY>{_OnVmDL21v+M)6jc1`(x9sWvE7AL`ji` z+vNoabQ=BxGnqerbER|X$?Kd8Gh;0Pv;seb#{jF~bc{ayAU`3{sK$gTZb4)`>}GSTY{quQ7jd`-C4s0v1{XrrPVPSzu@9hakxEBmxi zj|q)HdAG9N^Lw#z0%@3FKR+{k+@Ea072F5lnvQee6ivE^U9hh;DDm|9XP`qCXl~<} zIcL!$*S4%yoR8QcH{Y5~p>$PZcM<5=@iXyc2Dy#ey&6Cql-g9z64m;P<=VYn>73C@ z1q&~-N4KB#L=)+2EfHqCaE_CqpAB=%DE>P);e66J*Ww$X7WcJ2dw$Y;6=UXQsb~Nw z{lcp@UeMK!j)eCk`hKRhY0*9asDBanynjXMP^!yRXQ9(sAsTf5m_LPZ(0wv}YT*>N zB7TnJcQ$WSGpdX58iu6Yc^0-peg9_#yKqMPiq@AD>^S4CXg(=ANV{JB&bj}2q}plA zI_HegEmkjCy@$z{x@fdb9}RZp?=?}dZkjm7H-=BrrvB3Q;nSfNoAD813>_k(C7o4A z%a1rjzgJ~Tw=C_<>JTs8steB70w*a{mK~AX`sL`3`LmA9XNP24Om@vX7&?oZrF+oHkC>zY>uz1E8Oj*w4oLY^u;!c+Oa5A=g)VXM z8|Ufyz(FUMU=BPEh%NWu7+NIKje(`Rdvv!!=2>ZnL$9DuR-Y~FPM=$SGGVY~&k(sh|@=WdLcF&c+R3&+dqF{e`y_zx;w~KJDmEU&8fV_WtHrDwjYwlBP6mKT>>K#JA zDAuT#ysif=uZ4%3mCV1aji#>m60FV2ArW0a6NIn7ihCQ10hwC&BGo&;7G^Ht;Gq4UvBwX$7c2*~KoRcD z9kopCnV_YUu{V2>B)Gg*>_&ybJQCtx+@rQ|zB-Hg8@(bv>evlpdmc*i4c-yB3zP2) zZN4&sWq8J00*z>VFCqC)TVbfJ|LN3Nju~Hy5$V-R;^|rNVS^gybOx}{VZBCngL&iU zp+S4z9+^EcD}-_-4Ucyui_8HiLi2oR%B;%4sM_QNA;>L6vE;bE%!4mE+BBJzjQtwN zTBleLM3U7D*5{iM{Q4?u$}PG(ZM+0|>_GSoxw)A({m)DmYmb9Ybg2DIB=zRVq3atu zjb{j_H*yA8uC6kn2EaN^&=xu3$ed=5)*kpq&xvxg^mugcnTRb zU&YVc^{Jb-`Ty)Aa;py8@pEQky>9HkP0eLMadMt#%JE3p=nxmp5F2xc^y_@vBOZ}; z`*r_Tu*el=|KS)a8ZUV<2cm+1!2&WcfdDgBzh= z@5iiuP(OgIt(ksjW)BPn1!64v-FO0gJK7qgl0S-t>ydISNpXR$EGSYhmgzRbqrh|= zsPZkziWNqEGd}E66%qq8 zDrlT@6y^``w+Au-d0IA2Z4>sNX zRVBWxDcVJ+(=|;@C8){;QD0w)72a6yl~r9Dj~2@kbrIi>O0a*6*a)bI$!{zO5Q?m) z@kh1dp{qr*fzr6I-7U>Wc`oGw0Fi;mGU| zwx!sBUQ#Pi))HF0F~mGCsB$hXmOWv>DrA`flg+uQx&F6#tt~zJQ3a=;4S0M)gIVMN zKy=gsC{(;$)T7zSMh4};$5PHp-L53s3IR=S&G5&YR?iLf`MxIq^sn_K%cHz1 z+UT1&4EA38ar)Pu*jV()xCZ#UDZi7|vF!w_? zV!eE$Kh2;1OP-zhbWNh`xGUFWIxhBhS;8TcBNtiDtAaQ6YZ14S!>j`iRLPY`ILLOE z%bZfZKl|f6$1{_S)T+a@l(UtNoZq|7M5g1fm0dftY`Gim^p)hw`w8w&`Vetx$B9UQ z3&mnGv~8RIhN4+kIv_p+`8Guu@P_mSa?f-PyuaPZly#b1 zsP#1LC0nX4GIq}>=@71%F~?g-jYckyD_58pAZz0t=8%Q0p{uA+8rU7jrR94|TiX$7 zOz9Ei2ym-*^wle94^^_$4fP?GAh!o}M>awduc!fNMGiaFU=K2aRL1i%3tzgnGpBBj zKqdJ)Y(;Xu0miy45ZK?yZ-JJ@DxS$%dM=$ii8J(+BmaI$dmq^z6;U@Q$FK$`t?YfR z?JbY(Y2A`2^$8I(chv+fz}`Z)HPeilgx=RS8u<2?hrVi1nbP(B?zMs>2o(mT4TPUx zh0UJd$`Fq#I&PNiT@8!Pv0SS*q4{f2m==?u8S(HQj&6zD%nw-1X)(xI^}u*!*||6(=H8%ZDW6UEP1(GpVnI&bp* z?QS_GVxn~Q*Ya>FM)h#1YhnUu=NK(s`SG07yO<~2Gf=0-Y2OY}ao1(l1S;0%`OG>L z?(7~MHvtvJ)(e?Ri&W_K6zx)pSl9B0Mq$dJ&sI|m#OE$Yl7cVK^i@po36ps>Q`=-VXG=Hz1tfK+D?w@X>@V zoc@t-?7NcdGwwBxz{>uJ~EGl4k)x%Wt0 zpT^LIs_Zu>Ny)cyzOw+%tJAjXLcOy%m*X9N6Q5NwqJxjJ_G4sI9}AmarxpXhmW{3D z(~9ZtZ(B&;O>=M~RI7#`M8vzMs z*URBxW(;@aZ6YqS_Jo!FB{5J5sloP-HJWAcTO3aJUAt#^++4uXD7}Q?=t@`p??BZ0 zrQRkBF~eTZC+RS`gG0_O>$l9LMltpaVG8{nIhi3?=Wvl5 zbT5~9W8Q7Hv1>qLoRg?yXD#m@!qSX%$F}pps?*eCrZhOWbgL-o3sJOZM&VJ^PNU{> z4lND!7$F?@6hOIEkL*UBbBX_-fkFZ=hO=OQSzC_|{^hig{q9y~GTk9cm!4k>=YO~) zNS(QlQubfzJQn$rV{d{?H(weOjlgaIt1t-5G)&I+BY?Z*IeJV6ZV9+K(8bwGzgBnw zR(~)R!4tlox+;Sb%$#U1?8;U?*&!ITJPa>_|4&E=nBFWYWHunLY*Xl2l&{}w`i{|8 zFy%NZmqs;rGucQfFA{w z062a%*vCkb5s%QHQwqjc)HlJ*dzZ_D0$qY9JtO?-<_brC|4vm@)N@>X(5D8zjJiHF z*LTe}7aizNOZwTTOKbWyBrL2{yxi%lc0{ka0TGTbQ0Aggf}=hJyo&IX)_fllJpKO1 zEN4j!#KuUzRz^I_5OB+~p^gfo4tjzUfZeILS4nUv_q^lp<&fMvyrvQ#*nU#Ybj7uH z7G~4nDo7~wa4u^6|18Axe=Ov_?-#=%(f?S820ry47kfRsF0y8pLZN1*0D+|1RXKKa zkTz?ZIKt=3m6^Vfnu>`Xai_cYGo8WzD1-wznLYMRei+D_M1}bsdQ+yt{{Zk>p{*ph z0VQ`!T#QxuOpPxj92H$EhcZ|JbRES0R-=8w0bE}W|;?&*)e z<#k6N+T)>VA8cFqM%^;#+EF?Y5xncm*h&bO;7vIQq$*z^u`<5&m65FfnKHA;NA6_AoO z-f>DpZbaawjG7=~N$ zvlYYP?-Etad}z7#xG>nG7P13XYz1}c?x{psmBE>)*}0woTBDu5Nwy`h>e{DIgVv6L z3vC+h7`_0vivkZC&K921iPdm4gup=D@hYMAp5tu&YoJRTptmx)rEi7MaZ9=*|G@k? z*@iEH@Wwyy1G&SvYj9dezo(hPNXCJ;!LKja%iJDSDp{v}DtM1gAff;)G4O-?%+qfbQ zS=g(G&37Gzfc?CeeMunq38w-qQTM>(Y54&}i$o%OfDb3c=h=`rXdC#=I{V$Ilj3_A zZJR|a{iiiG+v?eGBVE%qS#&X+M?s`Z0 z(qHsW7R7y;Zc?LP-ul=}wPK?DBM#=CF~EyFmVW{d&~Z(81j^+ab;#1!b_n}JwZn&F zI2yDxHTJ`=U2^O{CU4w<9Q04mFRg&*<4HTRX-w;(THsPw$cq|r+Dod`(pq`hUk(*( z1G3p4rC3WqG37kRC)8c*0H<P(^2kD{G_EmRU*c`#_c5C5>!_U3-w(G%|4KG9yBFmXow)BKM;f(dAGy?B*#% z&r87Xz4*&Xm-hK~0;Y_EkEjge-gG6?xY}VG)-- zzt}u7cb3h1H&Hm8T`| z>gnpDzA@%2h`xu@F!Q;w^-8f~o&fPKPT5y+h+}H}VZ0E=H**ts0QL?AH5F@gz&bhs z^n@HbWWG9i5T(Kf8MB2^@4dBZZ2u?%x?@TkjTR?`U%aERI|TK=BFI{NvBX6-xXXH1 zB2>8+L=%dOdT7W@s~3OLZ=5aoTNfdUsn=D3`)SB^dTXlgz$mdw z&nk}cs7P2pr2oGuRjbQz_b$_wZp%3DRP6v7y$Akcey0J5l&4obyID8Z83X|J2O|~L z=+;%%TKoBR7F`LQdA+!4wV^RM(>TwL9!$)aiiULCLi+6lFvFSP>07D)x*EfLh@~-#h=o*hRfAgrk>(2)EwCb4#7pfMn;*HKZ*+ez4+{ijPlq&=DV|?U&w|Vxg*FRPff_z%*a~-43big> zh7-{GfV)FhfKRjqy)EFl$`NGhmawgZ91_N3enLFRM-tm@wO&g9yO7)9J475RH*`nKB=ZB&Om;-OB@jo5a_9h?HLa(B zGpYfqW}S8z$7HkCUBo^80%Hj04Vz3;kHUE#5byx(7#;#{gc(SCv_8y=^{oSpwbx(} zZ&l$Y%NCU=u)CQw*nKQ)ctA^#|4G43_6C<>C^nhcRt7=Tj_`goZG>>j)xzH59N7J_7fn#y zGj1$MPP_AX5vI`_4E!zoU>vre!j^^Nb`aN+!wt58cjW;-mC*$QCV+Y|Y!5Xa{?LP? zsBa`j@)ngP@c+OJb|t+3Zz06sbgs`|NX_3mk>6;ZE;fkPa|9jxmMTFD1L5*Alwu2V zrURT2lV9xUu_7B}S4C14umxxv2!VV9f4s3bDVV4zIlTy=@Bv6z^k+mP10jY)kQ>=d zl9qJR6wW$UrUL+XOE%WOlmXTCsdxJ7^2UWl{Y%>~Is?#(FoG!i1LT#$T$0mh(;jB7 z3AV9Gp!-`~z^$C4PmqCPnF?v8Rb&ya88Ep3C_NUfw-PGxUos1f6dahgi?>*T15mkE zW8Q4)1?DQ;G8?(kbtQHnrHoM{gc}glwP^cpRg_(6MuY%-{0+3rn-7NlU}{ZbFq`r* zGw2OV^pk|9$Tg7(7%+}6q<}4L%7xp)H6YhOhe5V>NaT0a<7$Kqt@t(=z~UO(IGks{ z{$HeIe?T9Hs$WZ!rSr-l@YoYxK5|)JWHG9S=b}|kc_4v|S_!1Dlx6`0oTH~4Dl$Ke zZ#hwa$`FI8x|~zK5*r0#At-3A?`HFV{kevb1VA^V35$Tnjwm6Vqi_#adhjE$h!H75`MiP4k-6~{0U|CQyDy+s*adTE;aXYajTG4br@(2} zWdJ-hRYYBpe-`mq`T&m-DT@p>K~*hqs`bB5cPy0ZHHCwu^!`loC|6w6e&7?6CF`7Z zG=R{QFEF>_0x+{6hWL@im%rn3?MhOi0{`OOWPZ*f04`l34y6WGX#JG*3wB>KR`sA}p$Cwvqh^U7R@P(uUGy<MxasEz|=D|ao~M7 z9y95H0(QGHS%q9~!!}I=PL%Va8S(Op8DdvdZ>|4mL)ORic&8Bo6l=n7lcs0vDb%qAW(Sr!ziLelSKE=Z}McFHCKyU>z%40Gpu|;qX|T z@J4q<)0O`R)JDZwQ+3`7Mox5Xd_+f^-$BI^1(2(vvmeByl-LNe8Q>FZQaEenoFbB0 zM9>&;z2iX~DzQyNfjmQp<5fI;P$3b#9oIVN1G>?UdJKi_rty{f+OKTM`%suPD!dLt z>KYGHJZ=zZH=aCTXNykdqx;awYSOuS*ybUwVrT@h)$kbH9~OP)Bwd)$Pb*Oa+**0P z0yvG|a(b;lbyjWDai!PzKyItx?xh1s+h2g>;vmqt;7y@~LUs(0%!bQ(vf|PK)peq; zEqsTWpC=Ix$7DS$J+0t9i4e>r!u5|3j@qF}DcTu#1gAk>>aE_skqDpYiJ08Cpj;yLBR>Jg^`<9fxZzNqgd#PwhvLuNHd z9_S)RI|}MX-H$BfgQ(RWXMDcgJJ=(nh&Hkj{(J1&h&;cc&fgHbcJvnIcUd8Q)HI}{ zUxqrIT(F7Em!W;97_+>NK_?tv_;G2wjKgLW;53tw$27HtCBpcbK$b4_r{-QghQi|gcc0?;Lse2-n z9Y%PE#1!=U(mQ)gu{<{X%+TNCYI~$7Qq=i!8P{bjlChyn=ok;_c50Q>-O$3`E}t;w zG@8nhx6h@?K?lkPb5Tj5$w4A^fRcO^)j2*1?ExQg;e3fY4d$=>i;7(|K~J!^eGU7QlRbiN|l;ScSi40*5fSDpF zzo9qMxg21jKqEIGoR&C*1Qr4dLv*9mMX|Cf|EgY&WD`FR3i!C*yU@G2^p8!7#LOF%<7 znJ7dCKgY`}VPRA}hN&;0BOfJcC`VIX5?WjhDk!s5xRWs>6dyIr8|?OD%{?W#@11b0 z0-7bZgnUiwfI5lFoOgzO7iv#pBnNi< zVi1|35J%{bHVJ%$V$|~Fbhlw;eqp9|Y|%R?Op^XhsxL7!-`kSl!#A$F28`lnDnf!3 zlexqe0jdyk!8r`9JWXjGSI20jk)_H5p>siO1xKmJnQ+yDh})U8LI}xR#3mk@?^rax zrt&>^ig~^j0NTzZ+JAL-24DTZxIz&OA|I}~qlY8%6b_LU)?pWlR1k9J3qD4in;!JI z%R>U;%focc8$%qVx{Hzt2&~Qb&G$*# zOi&N4A(a_Q!Z4a6c=BAxW*(0sV4I^lXo~&EGL2s5fGz;dLooK3MCv`NtfgYjw;P>I z5qt_kS*{0>Q}~SO?c(H^b0;y1V>Y%kADJmNh z`Vy!DBbbgy`*TyooWW6+*yCiqns($2)mxFFl#jc`*cHng0=XWlzO&S3CB=*F-`VW>YMLKg1E37nRGe|0Sd&Uv5m$c!YJ$ z{+1Nd=HO7(?9zInF21D65o)4%>8oeY?X^P3mdkl+fbMYCGby=mFZ%v=kIj{^Ta3{6 zezV+I&eaYI5S;O$ZiG;8W}%zvoO-gatFW}(3#(u~d#rRv`*Ut_mQRx=tc{sPRK^=`V{Bq7u5wXfyM5%(ko|l<-<#C=#XtN z+eujYRFwGTVLpNE`=M7v6`N?O!9bgmWk?J*xRF1bW8N6i!Xsew6KIfSuOQOQ~(WaGAga6EKCWfiC z*;z?>p#Ei6{%&jE@4eOR&c1|JGNdivRZW7}BBvzcg}-BE#W#^@oq&gqzNi|$Tq1$+ zsM0Ojo!)^xQ9t0Ux3fQgnU!4xsb7wY7FK`6Q$i(egIJ8EtX|@}HC!bJ?$WGj)ZM=b zmyGqRImf`7rXq@TGp?$B;~73oYc#Pzy0 ztk~$cRGo6c_nw+N2HAk+DI-!|__CxI4x@&>1%#3*vSu>9xm5}>&A0>Hr}m{A1?8wIa| z%x5u%s2#0T6~6!%;unq@R$ZlWI7IMcf8%XJ%?H3veC!I z&2lGB3^#bP;_1k$AdiHh^xgrm{|X2{x|svoVeCm-tE&erI2sC{As0Y~O(R)d$FRx%4oBNb^A)V?UB`K zfpTR4!o;#Y-gfq@881ay4{I z8hW#`5tyl8HmFbM`DoYPsD(kBdN~qO;p5777 zwp8m%$AJAhL-%YCdc&qiTMcwA0~83BV}w9kpu;D0*y@0M4FGg!G`^Lm&Ey>OwLbIaLG`l)+ktme_Z}o z1XiC!mA`#fP}Mw!N}2Q&@;aC9L)ZG3$RE~#O1U>-4x23mh5bWQ-e)h%B+dL~h(-}3K8}G&|F$WZ%Y=`Kp zY_zWL*aM<2=H2n={%NGrk*i5!o=em=;5L3#AF~m3rvP*&MKy-IX4e1eT`e7^7d_PE zvuFI#!rGO+F#(#ZcXEd=j7T-P&`h_POEMlCZk$e+*z~3nFdd{S6oBj5G_$I>f?Ln* zngIumNQ11=>j=e^h%vP%`jI6`p!V1^qK}g?A%NU z^)h8GCIFd^C0h&2Oyo|Gr}aVv@AI)mb=!~%B8$y|GJDmI7%~4;ku^d`ZDHv5OmLD4 zISD7>WB8>)F+ti~5h>o@pnE=HbSU-0WFPz6#)d2G|Lq@;o<4fQcS{yC%M`lrALK9m z&u!ANX(0d^v#_2SB=s)OQ41!{T29lMkLX0h6@ZD+Je>LGe$8KW)zPFJ^xC;PP(Ka4 z846=LEXYEaK9f_$h6ISX>e;a!f@Xm;ojemJ0;4%cwStGjgC)|ZvR2O}QYA{-A`oA* zOCDRpmJ_YnD-@~|ShfNwj*WVzuf9)F39;N1!{A9c!>KEV?q8Y^H{PoVx>8nQ5TaqZ z58xDG{%Q_gSQyZ#`VzXDQyr@kOmx(O%2dMDmV-e@-x|^OL?B2j@toFNR_-;6LK8MO z#JyJ^^C(Jv^#oBwd@3-l#9qBHW1Tvocs8r=fuRDw!Py8}CG3t7U~|d!$r?tL~3XHb|y~LWOgijn*MoT5L1j!pdK(4%j_J zRq}?vem^>RD6>7Rb`Z_ccn^pAvnBfU)*ZXRXzR*lT- za9uMPP0`@=_pxXyF8sm29^Mx80QC5PhT;Zz9A+&YugU9`FvXngp;Ovgn7Ia`@n1)S z`I_8!>!s_DYXAQG$A5VGRUezppKQnvV+1)=3pzy7VOZjXZ9W?HdfXSQ@Ke_05}Hj= z;)8R8^V{9;W)-->Jm~dH^`AZep}ahvvXfmlGz+03`dM5Tib(>liar?H8i4cx3@RtT zKQ1hGz5v{W16u5mP!>q&snfKJbRtaZ)Ts_yxw5Vd`FWHc_C_Q*@*X~kEd#r2#EqYZ z7MSh%eJbeW`YQUSGVK02n7caF6bEhIZPb9(=8)t zNRJvshWpU{H0Ay?*uum9E%tAmhD%mm=r^5HD?+S{@>WU|hG=aPvDP!%F_}a1=O)KP z>2v(&blpKaoVkhB-cCvho}g_IX*)XeIUf#6bp4htwP#W}M)7Sh)5f zPG`T#3*PK_<~`ex=G!H8O!e1=l3 z;gv976olQr^(2bPIlvD$m>vhfD$w*7C8lbFW(ZbHwGi=99p>v;0{!N>;y-E|nvD(p z?kd^)RVwpMN`D%VoE1KYCxKX=$CX_>(BddBi%_j>W3JyQpkCn4l3frbhRK*T0=nUXR#oEfHaIz{kmnDu$1 zat)EEVyAgRr%E;%jyyV9UV;~gk%dxugT!3e;z4B^g3>+x>smB!REBUhGkq5O(2yWwJmiYs13jtOO0 zs9{(ir}Qk))~VWm16|2XIbKe#G~VnhQQ@UDMCehwCMM>kJTPp*?4~zt2H9XytFiiTAK0}(usY?`aM0uHev$u3{`Hdw2-oY{Dut?)Ou4dcxgDkr}Eb& z(Gm@$)FQ$FHM~Uc2puZi_4|R*bVhJNKuIm!FDU*1JXK(z2qAV;={2Sj%EPWTN|*e+ zpe=YqIv3>O_jwQE$V1t`3TEtLJDlU-E0)FG8Nd~$GZRtuT2+?;RjuSw3If} zB`CN?AD8xjC!=N`qo!2~S5)!KRJEA3a`=V{E1%~So0u3CORW~Z++3mLQiz~3lcx3I zd>zR?CyGWV*^V< z6)zK32IqAHSeY~?JJVzR2>Fs*y29;emn}P_i>Ny1=V{K+?7)|Pl1aaR$2VT276wfr zoLD;T{+?bLqK1`tB5Xw$ZEG^prNfvN3^f?aD=ejmcDy28UsDUG@E*QobT~HE>*o=} z^M6W(h!&py!uxdbcRO|($>Pn{N>C?`E_$~L@9-7$ZR^8m^fq*?DNuq)Y5~H7spU6Bgv(C`$|rnQgqsnot@bg2TNp*HA@8eDo^AFa>J9dMD}(a2-#7! zDjK!D+d&k0p#>^*q0+f9n2HO;8WVxd)M4fv85ONPb8`@wCqY@)4I!==-1 zX>6OOw=tHKfA36RD^FO|Tfs!m)d3D>a?ko1c)B zg(tfI3C^mWG1@OGrRszO&y-<_t@ zVIN^g9r=lz8LcJ<`S3gkq4u}%E_}hi1uNy%muc_&EQRym*9%R*Sw3!v3T19&b98cL zVQmU!Ze(v_Y6>$rATS_rVrmK?ARsa~Hj~u3oPXspFfcOk0|~D%kQg_Rm9`5=EYAiK z+h+oalJ`KuTNFfqxH~LCto1-5`3Q)(10+)0LBu>Dk!cGg3X?%ZHIOJ;3nD=3ithu7 z(m6n4@d6OB6G$v`0TIzaV)Z&8u?1wu7F{5*H3dX~4A|BMaVaB+U}oHT2q?DmCIbTi w%_|@!feK}AWOHJX@`WJ$t(L^6c4qBgEPJHRosNYtfv20}r{g59^J>hs@b;@JV`zh1T%G zb9^@Z^M|#8xBmY0Pxw)uK8hpUYRgpvKVQNa&et0U&q0@O*Bc-H^`1WVY%LV@4I`w+ zm-yfcKlL2{bp;=Pu?mI_|9-IsDx7_n-@jOM90g41F?OZHzkgiALvQd;`6D)T$k!Wl zX4V^fwq3K0JQMg&5q{H8oCS?sdGD>-d*ttM9PqU8I`rSb_e}Vw!9i?jxDEbOVi58tA7NrRx!3G(e}_Lc ztCx&7t3M-p0C-&cZ37b)wpkgydjHMp3H0c>v_iwv)-=`u@U~w0Mj$SQv34arhmWkd zfEPKw^lbs|Bw~&A@Ul=_*FeX-kJuM$2`mJ3eOv>b5Ml(rfX?@2&Ql|F0KGUu)wtb8 zD7g_hLfsyJAul8R8xD+kPbeU)7SR1YEr>j)jZ}y#=^f!qIIV2J*UVgDWq!Sef4y1@ z4iM`uG`B@oaJkw5Q(?UcD?_&{TsRzFgE0|sX|N7KL+GM50xJEXw0*??&{W>6+2D%6 zu8lbRFBqW@@6cENfi(D-*T@Rj6#e04y@KHPhcF+1>iml*m(Sj=e)-GQ7r%b-;p4M6 zPrv!+ht)5?{pQp$6^d1oRI)hBy4#?W$uE0i*)8Nu- zlQ02kQ7%W?5T1Zb(pWP*BzC4~Qez*9FMatD2@Ly+4-2}xfzV7cepI#oVMK;iTLt|k z14mZFDKCE4UMe*h*&rGx=@f=ZqWR^%AcAd9A~o=nI9&U#+z``!x(eOmdG!_8rbWHcjs& zg~H7Lh(h%2@mHkT{30k^@W&`CnJ@w11a;~G{-YB`Mo~~iE%ARL5(M!0AtT{8LDnUI zstoQ0A3(V*;$;vGD)iPugB(Bu0AZfyNv7cJ4WYqSXpm_KVQCaJ9vWFfgIR_K!a!13 zH-6(zRJnM1)=z@hx{o++*()li+0V9V}`%%H|SY+0(57^8S z5@LbRfLkS3O2hxpceBRfMfi^2$`NnDq-nFnSHL}2I5OM#9X%Nu2w|G`$PV!m;4C%l z(LFE0A?6$BTO*Y9cFcaGalKl9`yiWws#9sLucDtVuGpSs$3{)NQTG9S^jWr|i9qjg zT}DS(5rUniUEuzfY@~X{OnoarJa`{=@KyM<)NbBYkv$EfRu+qVEAD}4lCV+rhvZO& zfi{IM^X^C7q@VQJACgNovOOX!&K{rm~mD zWtXs?_5j!N2eHKBw)tARRpFgc%O&gBEEC;D=2oCX64!pEP0~eGIF57>+4mR>>!NoSC_QhFs1kG+q*N7u3}!N`@d@>9f#~99 zh$=g)ef(04Lj?)(M3$8r6?|umNm2`n0f=_7~N$IuhKXsmB zOm~NVWB${5`f=IS`@4JZMc$@bVMyZi=nM!J zX-tFo1T8Kb4?8-XS>-c`ZW3uK@Vw3YdUO&k-90~Ke*`KIPWco29|HT~y)x)8-=T6E z|H2YS%4a%8XQAHD*R8~W8|7g#wYyAHT~|y;B!`fHN-=EeY?5htI2ukZ`8ZdX2o?HE z%ZH*&v?x&R-fQKwB80sW6oyqJXt_#Q@|Db}_yHB|fG;2a zHbjr-_Ln0^45jwAE0`f@0B^^L!rPCCpGb)&UrPD4|I*Dr`1NwQ~b$dSK77cuB55qvm$NY3z_dl+a z^-!SGN!+3i7m{#PTyNB@xE@R%3=|B>CXdoq*_&yk;a$byC&Z!g4+4juHpGkPS@UaQ zP*%nx&A+2Z1rhqPt?2xSgS(3uY^5F+4D!K$nci^>o|7!R5d-|%F-WsoC<_O0c#?&; zh(q|Zw)%b~&d%ZR{o47Me9_0DpOuHhIK0F1a2XEohdg`*ICM_lf;@B`93CzY2^=Tg za7Z5Bc^v)(I5aoo7@xu6;g0d2NI7Z?L^%n>#R72}h&j>aKp@IP6-0S|fq3Sjg;39XjA?ZIqi~T-_LK#W)Qrcea!gm&&URtYz~bgG=Xsw481(Tjx5tw8T$zZ|S|I88u5B zDQ!mS){Dps++{c#LdT|FRmV$NQ@zv{&62PFHJSab_y-!!N6ZHc~rXvj$u z4x3enD8HtoG%!l3P&U*tAmGVfv&_%0@Ju8}gdWG5wrY`^|Y(?hw<3t&5T^-ynx_aQe)pCMY$e~e%0tZ)r_W&gr+BNE7 z7!A9Jb`PAhTuAH{PEr+USUQt`572Q=GUS#$hetxkej(+P44Fp>#GGI0Xk!Jxx* z4R@UDYVI58_DI*bA;8_+eQ*YB=Op2dqHN!~(S9>&A}0xVFz7Hv#k-^Al-{=()}ARU zC(s=Xx>qnUehfF=^=+$nEI;N1x`RQ7xjD|<@b-E)QZ)9>%{e)LHV#7E)#qzH?2#07 zvK|fs+w0GFPu(*a>26E658+C>s+6oux1il9@F*Ei-@5zuNG8IPw53tXuNL0Icft%+ zY4!eLBtp+6F(s;tZqeuaptj!~$efdyc^KKWOEQ~IV&-tnV4f4VcP2mKpmXa>@|;eX zIUF;usMf(P=PDe3NzN?Ed^%y~aLiyHRAX*=Z#q&2!=gN>KIzr5K=WBCHCGQv51vbm zI_bejfz0a%v_CD$mbwF?rn^7gFTkW@iW7-boIi}qDy}1OY65>Jv2`>QVkQ;;Jd;~y zGpQyt^pk>q6!e{w47`J-2(P~o%c9h(+n0e4dJD!RD=BY(BzO7RFKoV!B&(AEylwQ(mSD4XlE5d6uXV@-~Sk^nsxVL#N-bm1HD#N|7;20KLqW$-=;j z8BdMWE!{-Fr4ipTw0uIeC^w51wGb_niBSh4W&XyjfqAyBZ~OH1S~L+F$k52o7=*Z_ z;(~2{x+>K1DW%;8M9_ouMZ!vGjNE7NPK*8OZnFP>oP>owny{Ena=LY4Q7*&#u5gVe z8yU?u^^JK|jyG>_jOiI0@$|AhnV`TDa{5q^cMb~hPp3qb1cJa$3%HGj=&V_WhS~I` z+YksXG*t5+fJ0iz)vb!-c&Hwl--hmkYy`D%b`+FjQh)RS#Vj z2J^Om2emxYfx?_@xT9LaPcVMT=eLQaP?*m*x-l%|Lo}TmHp39-Bt!Mom}F4&&?FpK zrDWWPt>Ws)O5~LSTwgm=Q{E*F)J1Goa zA9-JRedqUu*IAsC?MIdac~K^{{iP=e1K?Ip|#NP`I`dUONft<40mQUboX_6URL*?glv&?A+-Mt?yLG5FwNz~ap;u;^>W zjYaUzv!n5KCPVaio&^M}0r?63?P_o?xH3KefmI)gs7t;%`bne?bc$}$Dda+DAUS4# zNoU4LCk&EKj*`xXO_>y;59?=1M}B%;-}4q3e(2 zs4x3+;3WK4gx?=?GH>+ECuJ6W=fSl`Aa8TnR+l=AFj!R#CT)mKbC`MvUnzTb!Tqc3 zvAf9IdW2eBDjEjLV5G&jS4Q?Osi&ezgn7PBQ+rn==NvVk0^O1@|5)z<(ZI}qyPh1_ zCt&lMo)q=dpHvEe)pKI?q{53Ad1vn2sZ~)neZdxi!zLw8=9%W&$u3p?kyZZ=Ki=d! zSO)ijLK}RAg_(TJ>ze*@nbG+Hh$@b9V&_I`ZwykZC+ic1WKE&9?5?X!BpMkTAd=6x z=q136=qrc-mLL!iTkgl9e-WsENcxv|vS+bi5&y`N8!f&2kI1(K^zmJ+t5*$Zi5q(}W4O+u+`B-# zrbaZ+Sr_?J2(Izg2Qb?W!D9gSv8%wUB>nlz18Xg~!#y$jB*>UMwYl#Ggc$Pl%pcM=g45K}si8 ztmxLkJ(GdTs#z9vUAGxf+1;Z{xzZJDRZ+z)pxSAcD2v63bY6r$y@MS^W25Lw+415k z`-}ekzt)=tR>cukLUNgZ!J8Lo!wNqdiqpvRv}~3++4ewS?48EL5}`U0H9)K{4$J;k zGx)*Snm=FLAgS;lMK0j40HU9-S-l71ABe>9`Kp=v$A8RXtZUcMM7#M1AF}<5budB| z*JP!5vTNiunJL8)mH*6&u@DhL{~8;3-~Cz~fUGi2IyxAA__A$(#!q+#S#k{q>9U=n zIt{igln$_8=0t%gRyRhO94E`etL?RFx^de>?RyzB1n=qvFUM9}&x_8cVBK*W{uhDx z>DubE$EzRFXInn|7J3TOV9+$pVlKMxqK8)&bw}pCO|r-YdU1}@(|r1vO}&>{7LV{r z5uX~meSH@`5zI~-jH)b@ibkuLG?&(5;zFN?zkSM@t(N#dtNuTezZ4gLU-+{yMsFMV zlQ(v2wOd`Rgm%CPE8+1*Zw>qr_D#MO!or`_)=6kEl5ZvUDz_ZI^Md6*-=D9l&TX@8 zoPpjgenn#M#`>*>7T17LE>>@_1$t2&pYmJyLui9fbBoW3t=E!`KPa|5JgB#>;n4OS z8~X60(CRp~Hd_hvxLDN`ZSY0okRoEdh2CSU7j>i2bvNx_lW7$+R5n0u>KORT`3flK zi0s1y0=~LN<6Exr;XS?OfB~nr>FdxVkQT_TVX0z^lw0Ba%DOG5t{IM}+Y^naHHM4u zJtYLPgAs>S14)Tq5*fg z=IFrTxVga^jT!=OyBmrukfhnb({J#VcR@4G%W-1-fci9k+w3@gZeS(D1XOzhmD={V zbxX)TZ*Sv&4=Q6dWsuujqqrlQ@_BrGJ(y z0m7!2-1Ij4RTZkE9S_BX|D8PA&B$(2jP|H}Z)D1yDPQeuo@Li~OV=lNW$@Uy!hRC$ z6Y9M7VYK$3;#w%Pezh>>c5q0wvebeGI)2EY_WsgeS<*m@icq2!)K9b+gT7H1KcI~d zeWB>)(;o>;E<{01|1z7qK9 z^7J2`z^KgGC2Ve~in z@Eo~#ha2KcFIe3M6oG$KJ@*>oTZ0q=LaMEVKWmO|Qe$99+&H^!9J>9af7%*!ctexh zDua(nV2aSx=7B)Y;j4Zt8Y0klY^cXa*xKOB4f%!P7wEUzhA;5Ok9daRIqZT)!hyE& zT?8`m9?>YnQ25phdd_bVPSobNT+xul)`>j2UXL`o&Uh{Y#5{KaV^%Ei6MF^pHb5l~ z@ZQPG>S3G;aU_eAbti?Oe@O~K_fSyNQUy$KnSKaH&W0?QaQe*#*K2UGUZBMKW|421 zV;F=ctwgh~0S6x%jdUx0IestOZc))UUUbg+v$EIJ)1rSz<;D-rz0IHQC+9F8^#^k54Y~KmPv0MY6fTkQe>g|s-j+0+GEw?V z?Ym;KZ(6y`En8IAGm_K zG*x4mMmwi!h)I)8@69M91{kFVHRA&ql{hfYDIEhRQ;ae>yX_d3fEr-J9)^I&L=DjO zSK6BuYTLmKnB4NMf7WOMpf1N@*W7K>x1eSz-L&G#J7os9R2?y~RewZ6|MQ2n3;XrU zW%>;M|8a6V2g||SQ8+n$Sg?FQa%{AvxH_0lJ&k53GQ~(b2GYeqAl;*3t`#3sVqzGi zav!N$yLgrHT%3xvO2bA&?57C(aU<+S@E2wC#;fsF!IWq1f4UJR;#1;L(HU75P*f-i zCfgh%Oi|u!DFBc-V;hl6>~&nAE=SznQo{X`qrGE8h+oJD_(XMZvZQN&owuN}AB0Fo zRJ2*8Y0D~MIR(;XwXld(p@?G+iMzVeLBDk}!VWZAah$uzuk{AA zn)1n1YLT8dyVAaxMns7!_V-7s>RITovhrThpH&;dBKp%qC1{e)aF~3IxSw$_kg72= zsjz5UU&(^GD-niFZ)P1a*|tj2mTIIiHRLD+?UXH!hnJELAUP)E+=qjC zGvt1foiKg%LA5O`)h33C{*g*gBI;EBk^w@?MCi2H#>&>L#m2>4q?f`7o}nx^N2wrv z`)h#9e{xd2SC5rwTS^r4TxcwLMtZl7WCNlcdoSBaroB!F^Wy1Wo(jhHon*4gcxjpF zsx>UudZoW?vGXse(%3o;b9eR&Rn;zORo|vQl{(Hy$e$&z?{fr<6Re!rAzL%XyF`+p(;UM1@1z#d#4pUY18X zf2co|ib$yLc*a{|BKx-&s>dI4QYL&47H2+{abo^GW+2GEH@ZRGrNJpKQ~xMBz{{2%fI(MqN8CONz2cD*B=SxSuORg(0`*~m#xY9|?G1|_Y* z`?0~Rk-@XxL7;$vK45rV1*H?-4{&QykjDz+UuVDgf>R6euT02RfNy@&3OEXbe=da& z)7cH5)8Caoj-TMRO~KiViJ)WJsc0qqu1LsAK_tR-cE*pni`Jrr&!DqjoIRrD6|EUx zI$CJ8FJjXt7^i6-gvCC2BTzVeDLX8x?pR`hva>8wJr*@BW~0NB$a_2(=3r@Gf3!TqrrG;+(pl!rCf!<2EFHDpiA{1~Ib8#vUP1Ss z-$uQ^#mi|apNO(YUrtG-Sh}9tEI%Hje!{)U-mu);^XBpyM$O+tGsP*EDYMrGRWT}7 zWjr#Yt{#pOF?mDGeO4k~KOCvozRA_^EA^)Nq;E;+jYPu9#AH!4+vC(0f4}Yc>y8)r zW;1O367y-kkFuTZBtx%7gwC=36aL$n&yek(=57t2Wcj2X%0~2?Aw~4~dgvU>&uOI} zB~*9Y0oxr}o~^{-*kn6P_(dyyk%Yhbm5%@R>L@Gywj;DVvK?zqRMyPCY#(qA^aT8j zci`q1I~b*+aW|Koe0St~f3{&i$88<$LU)`i_wE_nyB6^f-$%_Ye<0gCTlq(rxyBQOyh3(d9xfnb?!DiYDZTB_lut1@cF(lT^dz5YI1e= zF@m96FCK)UuzTqCz$wdxv<{~x3NS(%&fUjGsUCR8u(A7YvtP*ge=~lJ1(2lE zg7*d`R}V*1-910xw98Cl7GGue~)yG8-m+?-2rEyc23gmmJ_~?W2WCs8puhy9SXVkSj5X5C0F#G z#j5s9K{-M0P{?8ai@NO+aksLe?wS8`g505y`w2$H_1)T7Zw7Mv=H8rK8HeEQ>a(>O z_DK3U*$jt3?e%B7o9>xxbQdJszL$**6L9~#MqsE$d69E7e}=DyW~pe&F;ajIn0{XE zyIt^+@e`2xG3W7xW&JX(@LbHhSiR+0B1Vt^rO4yZgQ3&!*Ge+tc*#d2QPM78XRBn1 ziE7t(1umbku3)NJbriTvW&<4vl|Al)$u;5vR6c!;Rc-<{kfV{I(cOPZX{gi9{@vI$UzRwprLwb zejB<6qTv-x&nb6A(J-6HbL*mkMmT_mO028uq07Qyf8KVkmuEUym=g_mQ%(2@uR&|N zmk=C+h53Y?8v{c&$XZ}9afoxWp?YdeHYj>%5)Z7>GVZ}vadmXHaWXaM*44%@Bl&vGL^A<^tG4FYVZUna3{2>%s_b192d|I5HN3v_TSK|riR?cz9w;MeQsH0d zjw;n7f1hWavO2OBFj5ye-6+Lx`8e8fJVc#p@MZnSE8cihm2%IeROwTph&Hrn;~j&C5NdM2T4K z81I!>e%n#2&s2akWURi(7XuM($mS(_#w*5Hf0mpd+E=YrY`b>Pa5-^UgzwWe7e21& z))jhDmuppyXDRn@;yRYE^Sx00D>Pu{bO}K4C8Xs#*3;@&7*_~mDfcIdy8<(sBZ27? z0?ex+fGx#Wa0Um_@hGZ)syX{_`aE9XH3lrAGea7dmDs5kd~4{Egf6!XUBAUy>`#Ig ze+Aeu3DQ@qvg7A@he@|F%9h&8@=o_5>$)vrsqpTuc*)nlOz&n@?fh9rnCTMda+DD^ zY>>~xyfWR(adMcv(#JR@bQe-!4x=StY?_$$^%$k(KdN+{GUwmq`%JqY?@&sukiTGU z)vu^tSL%Nh!$TDdS;a$MUmEak-MX5PfBrx>-Tnt^5P!cXu!QlFU`-{x@kVB#j=JGP zIM`1VkB-p{J@oojK67^R_~Qx3-G9&(;~j3^@*-9BB2Bwdxz3v?!UA5h-ug8 zUJ7;H0Q)R9(z0)zXX~1l%(ODrJd7$?ly&kki^b%ld6w@tFPuIv^q{p2IAFCCV}-A( zrOfQ|lFc%6=*|#&YuZ7nge+>t{4?m*JF}HC_@aPq$KTj1Wur-RL0o=18;72De z3cww3&!&Mtj(gHKOu;?7E#ODxfz{fBREwkCw{~;=NqLx19y%+)wO0UZt-SNHPQnTR z_=}E@W<={|V`}$~TK5}*UxKi!URk~hZc;1Hqf%8)-FHNYcLB^BY3xzff6#63AP>Ny zQyh;0#vM=iH}U4d06P|>W=8(+(K0RfLv9k&eGr`Q>bn%x*{|11q(#n>Z}nN{0?IpS zXwE}AMN^Ba_G5~$&@QO;gDB1Nd8$nJ+$*%p6319A#=5RnzsK$F3BJ`{+b*wd5oBsw z+q_~%T-xPA=DX`eTE4bFe`Z}N%UD|5!rff`;FCA$SEyjamP?-J`W=8@==SF&ln3}g0RxhLBf8hC|TZk(J5cz4T z(9g1+w0!tJbDGYe2`x2C{Cu8K`!1wu93KPc`Lqa)Anchm=aLW7)r-1^O9u1Psx>t+ z-<=5B5vAcT^gEsuNCM(K=OMi#Y4bK$bGoUe)f+0yW34RrLbz52POGQhtg;RLcA9!o zDks${eDT$~yuC5Pf7&#^PtUTT&8d=6R=1ei7o+jg>&-5AUjO&nxAI2@2Ip%h--mb- zgr}R)TUm5{JvXI{@cQ!dp16zgh%Uw}T$Sy)v*lH$!6*ahl~#sJy*a+j{=29LZIspd z$W#6j3(}Te=_bI%{dEDo=_>W_>NFr34!d*)Ma1i6xw1_?fAun+&W24d2i@x_Ug-XK z^&^Vd@>vuKY3HE+S|d{7NDo1llKP^EkhM<#W4gDPofp zB1w`Hn|5JS*-UrPq$(yR^f~z3r>xm(iT|_e|KqFQuejA}rIhnqy>i;EB=ShaORt&D;{S_g`U<K(TtJKQZlxQi zq3aj$OZ#o(6Gf7?c|@#mWKoZ3pyq3t_1^wmeP zRT`uYK-Fj(OK$UeD;uPabfYcdJ%&W88r9YSi|X$CE#ZSBMAFg&nFSJ)!whj;8oLLs z0L7{44U)X6nzRpXyn53RonZd`4j*Bo3+$qaYb7J|8ti>|TuPO03;-p(S4M$tGzwj{ znb2gae^-r41MByQBdf=95y0iW32gv58XtjMaR;on96-nexPkp1z^w(y9E&vPdTRkB z0B%eD4S-u16TuC7c>=fF6WzwqkO0l_9HHCL=!|g!u;&s=m7z8my73v|!eW~Sgj+WL zAk5JjY;#+se1Ul9(-Go^J`Ss%n}qP#VC`vp7s74$@gWW2SpBiK*p<)2u%4c|sh;DdrA9VY`UDpVb)j@V| zJrEk&JV{3aC8(du(}Pn)c94^bFU%3bwc)Gl3QyO698HlwGsjNfPGtmpldV_f*TnI zf*bZ-AkqM`xl39}*X{^lU&0 z9DlGOX2XMqHm)qU+h2}i+v2J+67~!uf0EpeZ5A{e9VGH-3%!>GcW4yQgRpg1{g(K_ z6TT0^H(;35O~9c^nu!l>(loSD1Hcia9ssUkXVn9un+TiKZsj7tO_tq$H-LMIiV?_Z zuWgdujYjJL3;Tu*RI2X7{09UAHbBj}8;|~JpQ3cVW*-9x2z&l?igj-xJf7lB8 znTxu2YU6+vj<5uDjJ1UKBEoYcj6ln}tAUpA!4tv{l;BPwtKoBqWhxE%c$_b|^%(2I&>mTm(0&(;DPB*Tp!*eMf5`k}Ybt^w@?A)Ufdf zp^X-`5wsr_%d-9HM+x&t9ZP?`e^`|!_?~EN5X-|2@g-7Ba+{!0Rz3F`;#((J9|miV z5)3zg?r9ca-E1ZLOW@6|HK;*z=!T<72}%neHYt@5Ni&fN+aNCY(@Zo9X^XIvBB>^b zN@z0#@(54qU2K!Qn3UM$aTsj;Iasiudl(B7f_W5ZcfK5OI>CDz^dTfzrVus#IVQjyCJw9zKaA!!q_g_IElYWfX; z+*&2l?@??@9AVwBPA$Sje?|IhM5UCXZh^nE_5-m)o$%QC#G_z9;2NqvTUstV`r zyoIL3>L#ISMOPj5Tc#*sNRbmL0N_&;X@G$m-&BLdP(z;TNH1ov6qnXio2JzZ2m)zA zL2O|6ZLCx950k4dAb%5QtON!Lng*jFPcJajqA8gcA41q^L-8JtMHQ*wM5wK?i9z}g zp|B8!)ab7{ax*bzj)n{k8os~Vpt%Zf>Gr6r{1D3EDbcv+IpKjqOChVLp63P?Oko|U zkQk*C4%Syn=G$Zbn3xhP*U{k+7QdHA2zH#4z5(TB(`*}9lz+m?eu27DQGqhSmPh01 zd(C8~TqvYMpZUi+rGIonhn<9m7-w8|@^mzPjyJREbKS(;oNm#o*j%SA$(SkeO(=WB zT4f}zE;02dhG{7*T#C?XQ@tz_j?apV$5KMaPApc61BwZ0&H~Lb@{1tW--q5LlH7PkPs^~NX zrXlQP<1MY8Hz_oTe^05caKRU-$XS4Gz`e$?(dRU|N})|sj#-x zywYZIRinXf$6M&V0PWm}a)XPytA0!T;3%{m`BBN^plpB;x<`Q075!u$U9N@ z)N6>JI|2M~*^RMm$+acw#85q|U{d(7Q<8E*nufGIq<9YqZQ+PKtBG8$Q z&BB}HD)10W-h&{$Ier8)6s)Mkcl*;xLGh?BXhq4w zNkO4Df74J1Drg=fE#bYQpim>&E13RJb=7Z)A3TBlaFCHMUjvL zkb98z5;br|7Tf^HJ*5;9$X&v?-%kN=P!cynk(m`Sj`9}(D2eM4x+HTOj7ByxV_eg7 z2ItDg9|Rq|!H;k#x7%>Z;!oKX^j-;poQXP*5MkK>u^t2~e2Ob_1Cgl4?hlqj}S+WENp3*cqBft(J%yE zdbf142G8N+n8xzSF4x?LOsaPw;>vya*OSsVC`Nx$!WfUy=2pHKn)3!jN+bDVBN;A> zE4i?CdeKAA9qU|mcbTgbQPCb%-H=rkU5r^yo8G-kRDDcfiXK(1OV=q;Pk(_QlR!6U ze{Wq~6EjZX%Umw%>jUcnayJXgfX6B=XCP@1a|Tr-hOe?@?Ny!A)@E2lR~jNG%-PS^ zHkY_Nu>RrvC8oXk7L>*6I6h~uEn!e9O`8k#b;y{KdNLiMzeodiuxN~{f-PJYBQ#G% zU8`Dyo%I)yz<9GOZD`s>>b}eixu2j~e`q93E;=`xpnBN6k=w1&)jKIY@is}SycDMA zU)^Rw6Z;Ihm9HpaJM1-`|%ezkl&>Y!20ghv!*z? z0e^p-_fBRBtZHLcn0J}$-C$MG(7+8@UZ^`3jk~qlK z0xlMYvTPjP9;FbJgI6)z;Ao`~1eQVo3DgZ_y-(4|SF!+*4!!_Z@UG;Q(MTT(FE?L*$DpRXNl5r6n( z(kBZc+Y{`Zg5^`x?Nt$BP>FoNUDiY8Y_8>|WS#dwCAz>yv*6r0P zu?cme*uqT{4jrW5SYp)U+1T)VMt@5x{U%)pT13)>;$JI8scM10v-ShwbsMVq%)=u-ep!fnKWjs25ZB zLOE7guFE?-dY!YAw7@GhLc%bXT*uTTX|18uBFf5?j=PwZX<)7vE37woI)9q-lrgu< zT0BP{wPi|~6C#`&m(2twT&Tt68#=5_>1E;G0*%G_T})RC7hh->5-cO{9ZXd_7>$Z~ zZbOe5x*R||K?l_%O1dA7CCKnZ0p5Cn=dmI@u?er>2;7x&xFNliN|1%NCLT4*J@*>o zTjQCS;UGUZv4}(|C6H73LVwYL)FfTb!%P(iRG>~w#B6ssUWh9C>bKx$Jt4Ku&0RGo&|?y;^zpgNWC0;c%9Exnfx~*YBL)H5 z0pFukzgndH3oP#$M+4gSZle(jkHR=CF?lrgUz7T;bXWba=H(}o)qn7KfVChrMy!D6 z!4d51%S)@Yt#YeixfQdv2^gQcglx@OF=4dk}9Rrst%cGSK=8ladgQHD-LqPUpfk?wcC zKh2`bU4;$OeT>4}e3MzS1*g(}7Llv6^U5`h#o#XMIE^_Imo1^LAM)LIY0GvY?i_7X zw#f#xUVG=mi*;HNZ`!_-vIk9Q%*Ygr$ zg=PO*M16XwM7v(ZsF}|9gbw5u>s`gfZz(0Z^_8-pjO16>9ylcMpJ@7G;J#l<5^mZ| zYCj$GgEgfJ(|_Z-or_W`Ez;2F+jEqo$E&=wD91M1t9-@kU_^F?SanRZ?l@(Owy$QE z*$Jo4{s7Q0?CkM|QrQS6Pw?A+ou0^L?YD86Ia>Mbso7^9e_b0p(5+uI3!DVoX%_p| z7fpL67drTX_L{F&RRDHo0HuIu7(LjjUVkKR{{eSUK)%tQ;_i`r+3of(zT;|isl_>TCef2!4K&+%m zXg9hjYb|m_iDW$?J~Zau2QKpt&>y-Q89GbqThZobR!kohvc5Ap(J!dwF|+DLh~`WY zu*L}MfPZ9iDPH7E_socDjO}zEk_ke|yT8>h5P5{~pogxq-dfDY>I(B>BxQ{?n6_gi z^6BF87A88!YBJ$jpgiS3cT%@2gPVT;KfEX%7jG30)8$HT7Cw2kLinkkjhKaXEvp@# z22fEw+D>C-{>pM?r0S?5-RM;|V|Kr_e1@a9a(`=i=&G34Ia{-foq8OTRNgg|CUYvw z;(N(`jMB_%H>XhA7>RZcr5V@k$fX=i`@Gq7?bnjyMcmR!bf9akRz`|$K+QS4Y;vW9 zQLz?=b>R{=C9DdSZ>^1og9ptioCt7(KwCi*|Uwt!}KNYjf#L zd4Chmlv}#`WhAcPJQj#UKe~|=w!6SdXu38~3A`1Kf^nYe;i~YM4S@xG3`26%rek@5 zu?MNJ0sxn;fh0fwz?UCktE9_ti9Q$?xmeY0K3qKHoE~qX_ox&`Y1A%UJXE^sx5N*Q zRvPf3Vl);8z!Dx5E(^g?jR{MR$HV-Ju784}ws>8~x6mKMHZ?FV9qrb1@@iG<5C*o4Z^VnUdh;5OF6W8krX#sYgFFuYPQh0ijuX9TG#(Wu)Yu9wX2dl1+QevY6L#jbohr4#3L*c61BokBT) zQq0`sIc{ZQmF%(b`#kBM$)QX$to$BChDD$tOfcR%C3KliOV^rhWqMw%zJJFfp!62n z^~uHMQQ5{@--bM|^dA~baSzq!_cltqeBsMb3T;m4%xqtL5PNK3wLc^Kx$D5*dD{hX z>w#>$gLz%z5U(gXv>tMIezIN-#g#xmiydAaCaMP0K2tX2q$>tralM6msS-hT>9D_! zE3a()_ReTaNB=k4i@SgBe1G=>3Nrxj#yP3Wv75R~Ul`57Cra4P%IE?mdfFES_{QRU zyD+_uwQe-0{ED0Ly)I__M2Pz+j2{ZK4hWClijB-?q8B6Dlld%0`IpAl4`zOh_HDFn z{O$VOuPL=*hVxXY=G}V6o0>GD;@Ub7Vmh8C&>eXp#vn7KyaXh$Lx1E23_L@F9Ss|! zMF+-e4v5A(mMA;$wrIZ{%!5MWcC7+dt+S&F_{lL1^F5A?^$(XXloGzfayBj{0z2{i z&wt|R@E_$%72EL-e_k`wIx4jD(yuhRZhlydM{T6EN6`iDSmwp zEyBUfW`VSbAvgM6=6_H!DUwkVgMP6{#|IRs-Fsa73TE7a3#ez5#v_N}xllP|F%^d& z6!y9J$#SNKZFOk;iRP10aF(oqZdT%M85)(MxGNPYhF&EDnWIjtbRVLnVgsJe)GB7k~TX8gHtx-r_ZBHe6z& z>BdRxwcRR%!9TjG%CD@o%{E*nqo7|d(oubnS5LB)#WPWKk)RbS9DkAx54FZIc7w<6 zHJ+0<<5w6sc+V7GC#jkYJ}2oWwm0E9jH^(aGNE3<*n@Z! z3EINdmLbN{`+qV9Sup-&d}uWx7+JMZh!cpYMjPm@5cAp zPL=#aSk3__IS-*Vj2cowaXMdxZQ+`h7+Rys+>$3EQE08(;XvGvZ-GX!Gi}D>erD^G z3*p8XFU1<>c;yqc;eEhiY#8`A0T9;8Fg8m!89*D|I)9f3*X!{S>yIbaLB~5~snc+& z>RfP$3WXbtaj9L4cXJFs(XA*`B^g4Y0t$hA2pS=I$wFLY(ZMWj;t+SP%7FDEaEM1N zFD~&8ERSd%Dla}c*%SmCjp}&bXf+zu8PU=f>fP*N9h6$^AB-M(wn?dvbzQBf3M9Jk zTb1i=-hY*IQC}}oq+q=8@s5!KmI3Yr5&ISG;qgXZe)()og+X{-TVu=}?<*HdoG+W2 za2)K|IRRODOXJxz8vgSRDXFnMS~9dt1?38izaYmGjhj;Oins84dT6?=2YrjC3bras z9G6y#;VN;9INq+Zk#){sz%xEn0E7l6bX@>s;4nwhiQa!FRu2xe=R2LL^)XnrFE~}k z)=(Q1<0P3}LOa_$R_6fQ?%MR^vUuRy^g^R&m_)l8JxYpvcJY{OI@Jz2)aGd%sY-UG zL5s#aP}=qmr8`wFiH?l9_V6oLp(V*;k^%OKFJEqjpV9%u9J-*n-(jZ`jB~I3OKvM<<22|G7tu z60|~7xWp?r1l^gEyas-T$6urdh6CmpzGMBK9$_0X0eOZhH&$9mS$==Rh6rlCsTaI79N$y<>yl`R22yGf zVSpN5qIZN274G`|z-T%nxFDdU7VZ}me*m5;Fi?aLyQ%aVQwil^*BYfueqPWPydj;7 zatTl%oWrKdVvZJdw6J`HyQ;Fp>*3pg$)f_I{u*^wDD(EOB9QPl1z&8Y- z2hAe7Au8HezFKn8x=P*D>J&@nQ&>fR$OSvLHRhg5I~?Y`CgAK*ZIQLCt?7!F2`hv1 zx&f?A8k3#rv3`Vn$t_*s_Or{D9nwWqo%8cFXJ~fdOaGJpNWXvM8!u7|gQgHpES+|L zr&orkVI`gjThT?^nv8VmFlGfq4TkaxODUoquSnO|)WRvehc6i&j!pIYdBpJipHd;B zg{QypK3)86$4(cr7S?^fX*zJk7OeHe}2hK@A_DzU}nx9|Waa0Z6c>k7ux z9>YbzigSb&9MK5>X8#}Luvm7JL`on6G%&MfNX(hgo9-T5gUjNBUOd;?cQsoXW3{+0HiN% z?eGB(iVHqRbTC8b!N_hmD$dr_gVGj>lC3phYgVo)lAHIv+otJA8!P);tK8byX0@8e zSS@{jYr3QK8p(0XDKBWwITbW#+52jq|Cb0)!8J1% z$%}GH-1#7I$QH%PnxRKk#Uj>|%SdN*4b;lc_0dh;XZ#Fr2R&DZ&~?<`tzkd?LvNG#6<65D43iIR^%!do0ffVexXL9C5HBKa7IxCbOsJ3+(( zAdzVgBnneOL@kggS`Q*X>WUu%iPCvMV(}snu^UJ%a|02vKw|X8Px*rKRFbX9lMNdWwzwd|a diff --git a/docs/tbls/public.fluxstd.md b/docs/tbls/public.fluxstd.md index 88c6677..bbfcb9e 100644 --- a/docs/tbls/public.fluxstd.md +++ b/docs/tbls/public.fluxstd.md @@ -102,8 +102,8 @@ | fluxstd_pkey | CREATE UNIQUE INDEX fluxstd_pkey ON public.fluxstd USING btree (fluxstd_id) | | uq_obj_id_input_catalog_id_version | CREATE UNIQUE INDEX uq_obj_id_input_catalog_id_version ON public.fluxstd USING btree (obj_id, input_catalog_id, version) | | ix_fluxstd_version_fluxstdid | CREATE INDEX ix_fluxstd_version_fluxstdid ON public.fluxstd USING btree (version, fluxstd_id) | -| ix_fluxstd_input_catalog_fluxstdid | CREATE INDEX ix_fluxstd_input_catalog_fluxstdid ON public.fluxstd USING btree (input_catalog_id, fluxstd_id) | | ix_fluxstd_version | CREATE INDEX ix_fluxstd_version ON public.fluxstd USING btree (version) | +| ix_fluxstd_input_catalog_fluxstdid | CREATE INDEX ix_fluxstd_input_catalog_fluxstdid ON public.fluxstd USING btree (input_catalog_id, fluxstd_id) | | fluxstd_q3c_ang2ipix_idx | CREATE INDEX fluxstd_q3c_ang2ipix_idx ON public.fluxstd USING btree (q3c_ang2ipix(ra, "dec")) | ## Relations diff --git a/docs/tbls/public.sky.md b/docs/tbls/public.sky.md index 6b4f98d..3931078 100644 --- a/docs/tbls/public.sky.md +++ b/docs/tbls/public.sky.md @@ -34,8 +34,8 @@ | ---- | ---------- | | sky_pkey | CREATE UNIQUE INDEX sky_pkey ON public.sky USING btree (sky_id) | | sky_obj_id_input_catalog_id_version_key | CREATE UNIQUE INDEX sky_obj_id_input_catalog_id_version_key ON public.sky USING btree (obj_id, input_catalog_id, version) | -| ix_sky_input_catalog_id | CREATE INDEX ix_sky_input_catalog_id ON public.sky USING btree (input_catalog_id) | | sky_q3c_ang2ipix_idx | CREATE INDEX sky_q3c_ang2ipix_idx ON public.sky USING btree (q3c_ang2ipix(ra, "dec")) | +| ix_sky_input_catalog_id | CREATE INDEX ix_sky_input_catalog_id ON public.sky USING btree (input_catalog_id) | | ix_sky_version | CREATE INDEX ix_sky_version ON public.sky USING btree (version) | ## Relations diff --git a/docs/tbls/public.target.md b/docs/tbls/public.target.md index 1728dae..12ceb5a 100644 --- a/docs/tbls/public.target.md +++ b/docs/tbls/public.target.md @@ -121,11 +121,11 @@ | target_pkey | CREATE UNIQUE INDEX target_pkey ON public.target USING btree (target_id) | | target_propid_obcode_catid_objid_resolution_key | CREATE UNIQUE INDEX target_propid_obcode_catid_objid_resolution_key ON public.target USING btree (proposal_id, ob_code, input_catalog_id, obj_id, is_medium_resolution) | | target_propid_obcode_key | CREATE UNIQUE INDEX target_propid_obcode_key ON public.target USING btree (proposal_id, ob_code) | +| target_proposal_id_idx | CREATE INDEX target_proposal_id_idx ON public.target USING btree (proposal_id) | +| target_obj_id_input_catalog_id_idx | CREATE INDEX target_obj_id_input_catalog_id_idx ON public.target USING btree (obj_id, input_catalog_id) | | target_input_catalog_id_idx | CREATE INDEX target_input_catalog_id_idx ON public.target USING btree (input_catalog_id) | | target_proposal_id_obj_id_idx | CREATE INDEX target_proposal_id_obj_id_idx ON public.target USING btree (proposal_id, obj_id) | | target_q3c_ang2ipix_idx | CREATE INDEX target_q3c_ang2ipix_idx ON public.target USING btree (q3c_ang2ipix(ra, "dec")) | -| target_proposal_id_idx | CREATE INDEX target_proposal_id_idx ON public.target USING btree (proposal_id) | -| target_obj_id_input_catalog_id_idx | CREATE INDEX target_obj_id_input_catalog_id_idx ON public.target USING btree (obj_id, input_catalog_id) | ## Relations