From d1a70d6ef91a3cf93bbb7590e29c46a89a95c8b1 Mon Sep 17 00:00:00 2001 From: Trys McCann Date: Tue, 26 Mar 2024 09:30:42 -0700 Subject: [PATCH 1/4] Add a pipeline for tract-level injected catalog matching. --- .../_assets/t9813bi_completeness.png | Bin 0 -> 77167 bytes .../reference/21_inject_synthetic_sources.rst | 6 + .../reference/41_match_injected_outputs.rst | 194 ++++++++++++++++++ pipelines/match_injected_tract_catalog.yaml | 36 ++++ 4 files changed, 236 insertions(+) create mode 100644 doc/lsst.source.injection/_assets/t9813bi_completeness.png create mode 100644 doc/lsst.source.injection/reference/41_match_injected_outputs.rst create mode 100644 pipelines/match_injected_tract_catalog.yaml diff --git a/doc/lsst.source.injection/_assets/t9813bi_completeness.png b/doc/lsst.source.injection/_assets/t9813bi_completeness.png new file mode 100644 index 0000000000000000000000000000000000000000..c2dc396ab5a6232a9b97efc1f0d084de19130da7 GIT binary patch literal 77167 zcmce;cT`hr_ce;5V45n(3hx!Z&&kP2R$*b$5%WC5s*uD+`OHWR7I|-meOnR)x>p&jSa*1y3GjN(cN* zx^krkj#Kpr1a3^s#TecZWVm4cT8BBH3Xhrrur{=HvnJzVr^dAeny=)bp+ss6J< zQAqp-5BUEtIjOYCRl>v`mWzeu*VC86;5Cy-*(F&PmP2g+C(q_<^{ux8DLqx?%^P~~ zJIgi=KDlGg(xm3im>OOdy;EhqTC=+wT~~GpMI+!g&YhKl#NOu~w-2XZVCNQ27|7Mv z$3U?qxjiZY%aTM~dELBTnOKa{b!d0;L#)ns@X%(zaBC)%x9wR&d()-S5KqMn?UnJG zT%$CVfm(N)#W76&)XTt%eD>gW6}EaI>NwKl$z>YVP@Y8cDH*jaEGTL^+`kNu%Nr3VsVF!E5d8hEsPg zPx*=KnN-xr1~&^Rx+Ob7q1L_^EL>fSIE2+kQI`-8G8#14yJ*|2{ZD>%h=gC3Nb`GN zbKup}Oi}POpBE^I7#SHUMqu8XZy|NY!Mf%eXK3s|T%6N`^O`BsA=e)NcP?NgT zR3UA0JlZWES6wZSy(vHVUQ&QW ziaaVKTb?ynS~p#ls4`LS?YOFcrNs&REe|{(G-aUT;SKn!@Wz<3;t5^|P42XcUqQ`z z#Zt@4bK&-mzw33PC?P#fg|&(2;=s2Mr?j(+{O5gRiE=o?=R@<<)cE-LkZ&g~X3GNy z4Ix&sqVJ+bG&LB4eTauA=j%W)-+sU$e|)A2gPB8nwqEte3ZIsBcv46+1Hs&|{{2j; zGK*G@7xLD5m*>Rry-g9gk<;>Mr8y_~UXs=a4mwWe8KRvit5bQ?)i5(T>5{wIw^Gm? z(ivgY!kVEr)z$hhB{oI(q^w#HH8uAPGVYQ$UCbI%Qw8Nrv_YydBrJTmc>ld)jPfmE z!Li#{n znLs0D>|2}VUHU$4vF9PlO8vNv>GBuCh=mFy+2eU$$9Fs7f(&VQnEmUz=d5~={0*Z-imBm z>@B`uY(9^?S8g}86_FElrM@!bOR0!#Zf`Dehg_V~)l6F$_!Lb~4OmBdOj)QK8!P=j z;4AEcG2$F`VP_yTT0opsdC%N}yMN-x5hCj~_|mA`L<0AK4hY zpxk)^;~cxAu_Su4(fzG}Lic(YeH(|R@PVRpu_U_vde+X`*>_>#Hnnb@o*M5dU;3@B zm4Y=heTg7#r_apB8`mbPsCxa<@|fm~m}wlpJUE>MK6#G3I;9#uUFWwnBn1I^WPIQT z+F!YpXww`FF{a@edr9a(jQ1$jdcz~mS953f1pJb-XY=|kk7q|t3f9$i4O`f|$3#Fv zL?&Mc%2ha^s^+H>2zH_C-wvjKDSSG>D`T=LkEb`$R+}~nNc~dln(n}2Cxl%CvUw8Bgd+f zlWWLl^^;_<_PTA^9*XYc2{w&>Fw80zf_IZvzlopN#@S~uLXC0_Qm!?K-HNWLmHa_# zl0#CrCIeQ+PmY?up*Rbz5(`0{ny+=~|LkoeouBHXx5}-#8>eZ!`4CiJDW@afm9Vux zX;(d#FwVV+66rx7`@*$HqTe^8xy^9VvUSVlR~^64I^VYSAHEM=VkT>-lN!=)YCcwT zFYZd)?tqh>6#Zyp;HHHC7fwiW$-b2bwsTX5_!gX|WQ^v!Q^b<&5QUw`gBEj>4CXs$ zJL9qTB!x@Y(d&yEu-d5jx@kn0Q|N;IyiJ{l^p)1X9}QBK`Z*571k23QGFeFU0S*;Ba-@ySuCJ-7&Zbh7GZ6jSIRj}fZjkH{ldY(`OKD>W`OM#a=yEGE z-Ao;^6&I^Py$uT4Sxx#@`~&ZAC+EG@(>(|ghH|DG9szTW#4@=F!jxr-VO?MPD#zKelY49=~+)lpi}XQVpvN`6LIV`s^I zl|%1ZpYPFV-}vm4`}5iudm%e*44USq5ii^zgcfxA&;*I zO>@IGab$99s3Db z#=YscZ>%Jgm6Ze6|9l%6xUq~olpu6m^2A&NA-yYncNx>Gv8*();gM&csQvKZ&ztLE z54t`@uo`xdTQ@uuH*uX!+SQ4|f6!K2{kkGnv4T~;1fzKE+*qP_nw)dY_K&k&KN7jOL)htErxMF;^pB2XoQ=cg-Lh}J}V{ zx<0H8s)uh9X8frRqa%vN2Ur3=Wo}UO;P0ZJS1hNKGUS7_Ka>Fa!>u+}`>SE||7b zXE>F|KTi&$b)6d0*b_HIIV~AkMUuS-S}!TU2VOz7mI6%|H({qrHCsX`0oc#duW=X* zhXTeNW0JN&D5g*D2T)2t8>}-#WPF#YMTa&Lxu4m8oCiV zqBQoBfG4Gf(V;DjJ=%_;-((o?rF;=WEtimrrNXmAL17mK0r2qvd)3@m;Co0NZ{D7t0k&fX5gA@tY1N?6fQn_iV4wk8UY9 zzHKZbXCu3|7=$iUq3s_hicT&{r38#;Z#z3NQ50|i!vp7c%#KY zHF>?Ld50!2P;z3WP1jSP86zj(l?hV$Mz1ErQlG1T`Pd4p{?6VvyRk0612=>?d*8-X z5Mt>97vtx&9b8t8euaf_@uw8dWV8NOQbOP@tGg&=-@N<2z4zWE zYIO{^@^fw}FTE`}!}(m2GiVv#h97zpHNCq;xdD6rob8fG(64}CRWL}z6Z-yp*sOH3q)-K)OCfNC> zi^Pmh`+rx!IdI6%^4$@hG05Scs_@eKr-%p0hAG~Q?&7)CJF}q2G-#<`VA&rqAFY@X zI{Qv{_Uj4bgrfV!sC^dIQqv$0V`sD;dLuOian8=DG-vMTAERs*ejN{-@=xkKKDf_W zzHfPGwox)>Vx-h&6ODPXVdo$6*nVQltUr6M z_d{>D8v6Z7p%^Z>*G(mcvz{sliiMt$LftVjJ%G5fM>V~~g$m9_-h-Jb3VGkh9Q0=> z_}yLUbZfaQ zCFMF)@NifyytK~q)BX?hShS7JN$IB8v$@ElA9zumbKiR^`p}|y0}k5vA5ypfU{!sK zBwYf2bzNz5Lsh$vS9gZ8SH}nE(p#0Mp6<{3Lk(3b>+Pw=>tf~a7h9C~h?IOWX9ld_ z1b=E)vqjULAX&qPm2i<}bXf?7{agPp0;mm+O9DI?)i36^B+5=_pG81UY(ky0UCa{#cFV%k05os1I#s|*`^d9UKBIF- zmxKwAgF`L78FRKYR?Oo16{$Sq43FW|u~_15)Obe%L@3L$LE+NKlPt3Cf^j_|VR{+H z<270D4b?i7Ylxe)J0W?wtoNWdl1xgp@#qv;x1ecmdyGHe?I;CMRNNuA`jyYaj4#vX zx;X!%b}+WuDU0luw^xMRz6!%|JzPUG<%R_x+S)ajTaSDo6Zm1^(Wpqq{%>J*_#;1S z07DhDQe>LN&KsG=A6r&AkbNrqi__kH6najypB2LjOL>DY1{Ht>#OZogw4i5Cn%`Zn ze-@qN{k|8_8WIC;$MkP;p8WN~`L9wm;tHE=0 zp|#dy?4R4W$M`|`j4wZ+@!dmRD2>qe)bXD5n|)OC=-cbv{^+R3_Fda*!y0n*ek7)R z$_N*pD|UV&Weib@6Rn?W%M2?+oh9bL2J;509_yRo+{Qsamx9RQ{YG3AVe@l(q~J4q zdkpkLg|va*2eeaw9DFGs8F|&nQ?FV%MX}HuZdVvP6}pMt$yQzBjB1PKZuvcQ#yD4u zZ(MB8HhAvC-Ol5c=zXvN?YnQo7NI}l&d#&x+kyx$YnRA{T=1RmuAJwpq}ZSnpX*_w z{K6BU+Dyb7raLp-D{qH79V?*lbDiy0FJ3!}4ODOnyu4*(sAch&u5`X`7O_CyaUo}%3g2S0kn>CkhC5NA3pHafKL>PLjq{*ZTG|eE)G;d#Yw4yBwJktEQ@;BW*OqAvdWPLY4A2fS0b@L9e&!f8tstR6Z{CLloKT?m z7eXKiOd%w#zpug9S#B6Nj82g<%S(o$KzpT-TL2SB#Yh(WZGB-j#}o!=5IZx%_h2#Q ziv3N5^biB_Pq6&7`Q&{Lq&l`wTToli%w?oZcP!zPA<%7Yj?93{Ulit zLtSkmIRRWh@KNU||J6rNt*(stFOT+fJjo=v@BUri0Q^rfhlH&ML};+1S`KM1AU|Yq zjPu80a2WwJ{cFiVbUZ0hacrP9uX?dkvk`gg*7HIlMT_>)y58&I9>FmdQMgYV*$U{l z6w;66tB&2ROUeZkE^VGFk4gr5NNLo{{mtG;E^eGNLtej!O8};|_KeR?*8e_8GpsS? zt<<7I;?)7-AHWH@-qId{=cad11ppuAx+mi4Hoj|#Z%aoDsI89I6szs7eF4phNRT|{ zZaE|1*VbZwhD@JxcKJ-K=JaxYBdL|P(G_B5YmgL;I|HXfVA{+1{|gPiVO)V5#H2{ z7KImvd$!R7_NbT4ODYnDjYKfGLHE$d&d!ASDVEvt8JlJWx6!`KU9@8!(%yNoL_}k& zW=8179S?xsk2WWo-7zxip#uz2TFTYgbhcaCqAYbrahk@rKrgm!3Ybd|oDODE1hZ42 z);0%vY1?TrHnKElU)8-vPx9tv`&KmwNn8OC6R9Dq4Go|xtEg3*1ig-6-JmI85helU zssJJ74RsTTIzdv8M+ZhBM#grTeskC||eRUM{jWr;GCbMHy zetMsg2E;g)4tS#tLPxBKr#pZ1=UsDl7M53+?l6)lQQ0Q)a4p70;h3_=n5v%Y&mP*k zBWf<;Ysne+@dEynXlhZn(W^ewYtpZ4vw_}R$`%R7Dq`FNn% z;!0-|e>chEXA<O8Qp~H(RsCQY0ueMZk3GbmI3t=vUQcb}Y z70vee#rl&_#$-%eOw3N-4epf2Feu`(!kL>GxZfG|GK8J0xI?BJ_lH1Mrz(Ba&E?(sjp+FR=v%rHn-4{MBfGHGMvMdU3m+tGmqZ~^hX1f9R5m` zzt5p!OM%yWLxixlXlw{~*>7m)`wKopcXh3N(=YpAsT_$O-e-=iA1A`YhS) z>CeIvSO4)8@8!jF{JhZ#02n>c`1^~M$?-Rwt)NNlkNkax_vUV8ROAKQ^HGuSK5z4D zDIGeppXG_eO*P2^v!$oGwT1A0_7#L zec{XD>*1%DB%?P8y^!oFIzf|hwaZwO?&qPjFY~lFlBx8W2p&2jerSbc!Z0m?Bts^> zqF{;U4L*wepl5h;{3(73 zAhpv@;QReM4nNNn{m)Nv4$Lq8|L~$X(6D@}oH5JGZigSPJz}1DEVB)}4QT{@d_oGi zR_U;mq$SW#8yxWGJK@!J;TX`l{X3=5^g^*XlO$m(S1g(JF0x)s zE+q9fNQ9*z34i*1{m7BLoE*@~GE>qch#B*Zc+>?rCTrkHC03YQRaI5pRY0%X-!=xm zR_KK}`pZLwW}mQVNEcx2OO&}+>TZTVVP5r;3m?|HO$oBLM&;z?S^r15^8v~o4Ui2^ z9Wg>9$C;;nd-X&VC|~A3w6!NdKl2#eex8{liU-^>OMh;uzn{sml^Z5#4he}DLrneb zw(LW8=87_puY7yaOvw!#=TApQ{^uvH$g`6Ff4=yu1F)gz?%cVPx3xSrX#F~9px|!y zZm$2Lc$V7!}5^1=zx0i7~3$IIS+#WG5}O% zHRsg?KK;}3;CRYO3$+`NRQ^37l+Z5D#KhXF z;kX{_?6s6gf#&6@rn)h_fP$-~{!u0a!f{$w3n;Jd^EEr0A9dd3gwd%`;a6`Aw84Ej z|67?a@}rO04-Bi4ntd&`OkkNeXzPO<*SA4@{nQmf0v>ESjOJcEe^_*>(I}#ICPvk$ zmA0ySBKlqkWmURDvlZyakE@PsZ@=Ic@!0>`eWJETnDZ@EA{{V?VXTo$0LXs;f}2!$ z+Ei0u7w8l`K?(!g zjL3|5Eq1}h>6Ru1i7KbgK$QFLbmG(tlmh%`+ursSc+ZK`OvA*l=uA--maA?* z6Qs-y4eSvSsfeXQb3-TU)?$_G@I`o;DCsW3pLa$J&>zs@n?621CDzM@woSG7Pjq&7 zSG#5nM(8ZxjXyd#t895f!YIMUvt`&xWvLa8k5egl6H_tS79KA5aVuRtq@;#U1IT8! zsJQGs=jZ#-xK&K#U%5AUEBm$zPPx5GXkeu9Zno60v9!Nk5(;`7&3 z=(@+ch6*ljCo>tB`A>ZIp_QRKb4k!RVTnfLMn=Hk!(79p70R5=E|1z zb+f3bj0XT1X+U0OK|%>jvn4Y1d!bH;y1DSNQISD&A1s^}2XaSFfjq0UVg|DC*Szdl4eM;~yk?+2 zj+h35WY>kCU#Y_bWa9VdmBf6xZBuzHRQ2^C- zaZRw58FYcb#V{hL^p8WPPSc1tDZhV+#a><$Fq->26WeQxfxfL7K8u)49idpHf~bU0 zK#u5=2DNrZF`&>S>-y@OE3Gc>a|W^5Ev>C}uTDtJ=jG;}3=$@NEHBJ(lm$VXHc@7) z+Cf;C(G~K)x4OHtSz4OPDWoD_=eIZzGeJuPV*Jo}QRba^@rG6i-sjh+eQ;19kMps< z1qI_vj0V*uUOQW!b$%RPuHX+rVQaz}VPrGPrv5xd8K(RveU#2bvQTs6a+rf z-Ax;C6TzM{8+Xp&lK;rB_Uw1sNrl!p*0%?UAR8$1I|Y!F$(2E1C!-Ms@=bcWf#xcG zuhQI4#_Vho(DYq!QptsM4qc&#)^hFD_*?4V$1`%Ehh0aeK+!Kz;O>8y*yOkPXryLw zp&NB4kMN1HE)@>@`_MPWMKKdv2;20=O431d*Db0*zUtBc z@mZ(LVDxuT2Gqi>KKcmb)2PP9Z+s6>Uh5#Z@LB%Xl)%mw};CP$VY8I zJz*rfX|yG%G!reifg$T9$+(m6Y97S~3`gAGQr>!Cj%ev~%*V;uqjV5Jsj%@)_h8wo z$CcXP9zdAAbp%Q|B`wWeBb!^}?8T1}!_h&cU_;h(t^C1b++sK{2(43vK|G<(y%9;3ljqQFOm@ZrXR)>Dp^rQZ<%WzblZ+nGR81E&tc4boKnH*hUr zCkSE0LB`1l0i};nj>|JVgCR}(X#$@3U0V;JM$(%=loIE=_rFA|TL4OXzJI?~8 z8@}hepfG4pE@+(wSn*L6Cz5iI<;l&P|LSM}*cb%-GFYS$>m@wETq$j>i6@Md+JP>J zh%bdOrirQ_m|zE*dX!J5y7safiEvax@-IkPyg@SfkA^(J^3^j5ngjToHC}&{HBjTb z!ZkQQN?TX|K;(FZ0Vudj=-&V=8Bl7CSnpA-$&K9VTXEaBwWqbUrNP$A-2U-fK4_+; zj4eiC^p7#XjGH)6ei(3R=^r#p_&=fm_?k*}xtUHNUQ4|FiD8GxNT8?n*z2-pdB|H5 zr%J*>;RfsV^f>P>r~?~ycZ`i8?GT87Ch>-SKQr$)qtsVK7Jc(d9)Ar-$L;preAyR3olY5&8_ zV=OF>MwxQ-u$mZKNbId;eRL1Z?7F8%l)H;>m-o!~&N_S;vF=Xp&!*prOct5rJWp3O z?4u%nXnw#WTZ)g*ok|7zzK!oWCag2`?K0sI(U>fH1^d2;O#eI3JJJ+fsCc87#_57p z9u%(}9~u%7svJjiUCc5JqxWxiLAtH%tH+4nqe()bLiJ=a$PR6XVI5gcDEu% zT9F}`bn@>!ZK0JY16t)JBZ2CAK%g5otTqx2ynb>;yJR?yXQZ#T1;&Y*FL+M^HK7o$ z>8tVxUho}ILc?F9RRmwALjp4I(XKsc4yr7qWk=jvIngJwLNJPQtOcupD^ebO67LRb zvpF`cE$nY|u*eOPqv>e@-nulPONz&xyiJ;JDMdLSSoDHvK6C7dQSe_O$n>q>8^@WR%f&)O-j*fMc`gzyQZZp+lM1pB;f_zB+tDJXth@Elj?`nOz0sd}p?j zwVDu$hw@7G;0Ak7Jpe=ow_>4;ph0&97Z-d9aTDgH&t4_T!Rat6A7nPf`gRvEh2ka! zv^@FxEK(_GsGu76TBGboJ1+4WtF7M*JB8ws-vH?Vg?PC5iDz+faU|9G(=j2Xb37z% zxV$6ry}ry6o)47D#{!o4n~QL~Yo{DcpYzR>Wy7lhd+dsTnCh~KB<_R}5K?C8Fd zYAwIG6WAwa0^Nh6^<39}OZS0mA1eb>iW$x!W6lR`2QhD>EB_mo9-ikA|2w)}^ zw$bLronrn5Jy!R2wrB-8b9UdmDlV_W*qej7`~E15Xw}beHawabl}O6R)DB; zl{HbaMSPJ(wmpcD7TE0|qQ|bX&Lv3{QD1(N$Hu*l@CC_FA9!30*VImE6gGLk56Ru&$10Jt!(H0WDqgB&K9Sb2RDIaoC;51NV1(9~>`s=%sdcjt}S z0;}5dLO5Fn^gu&@E7qfB+Z=8*%Y@Xfl{&E3i11t%nwEl6u`M zd7M^AcXe%x0eP}%kua3k;XhJhwE_Cp+kj{2R_L{Fdxtt(N-uT2_2+7bpriD*CCJqc z9(ExsHKu@1ZkR{GotVr~Hh?6GOy=e5;gebd$UvZ`@ekXb~w;LAV}*KyFe%AV9$30zGTF&UU28q714+qV2Q#d|Gvh9G28 zjdo)D5;En0ete2gy)NoEZSO{~{dB}P(CPe?=ag|foJ7%Zk#oz(9l9qRx~5I!Ki3hW znGv$8+(AEdFBP@9^h;Ew?SoJr(@=<$FyZ@nm|*5$BY_W=7|f>OnAKk^pk z&W$i5g&nH{#_{3T88Hj+qX8A164Tkmt|EwtTWK|8^d+ek_A7~?ar;@+uxV#Z<1GQi zrvjfEsrOr9`4^Y9X?CH@k`fXfs5jE@G|b0Ea>y47vLD0S3J@NE!J!RWw(i`@Xk~U`$RM<~)&bqW z!-gv|FLfP$^ajd~AQcDte*F`$yWU}=@UAmnqA7-BMO<3C^wXzv;EwMj44QQXYjqQ2 z?h9}XxRq-yM?6kY%%%uAojqx0IWiEtadAoz(xNDP5#e@_5J3w_)iL z8KG7D2_3>Fx5ik%9METP2wp18p9L*;ZQ{#lAU^^dd|ds%+q~`)ZjYFOH-QpUVyzt@ z=a_5tZ2a<-IH0X07w(XPNR_O=G7wlEwi+>RpSk5tsww~8>sV=C0q0` zS)d?1TXCpVs?AIZ`H)#JipCWoxYvLd$j^HO=j z+cOZ{$DZqQ+drOBEkmP}4ZXWeW&VE8z^9 zy-B+rI!rfP8*^{_@8}jc_w>}U`u@ynPt7pIa-{pkm8pA^O@~{K)E;h`08=S(FPTq+ zXGWf8$bM{1`2Og`=VwO^Prc=OpDF)$YsAJgWm!OCJjY!1SKVSGWI8B&=Ep~sKkI;Q zNEUG$(s~j2OL~BfOHdM&i1fpVoin!gqmGO-lA(WsDfxeaMa8ma)Ej3Tn6lTCAnduK zxe{-zakX92US;$^UaKP^x@20&Hb#E8l1N^r11<`tB6Djsr*hwS>dv^^MrSxB!@=-=G-z(ho85Ayx$h`Ut=jEj?mlgy z?gj7|DQ6}J{kLL|plXVru*@u=L?661EHC*{`y!_xj19!xP-bQw2&sVs7kB%^8i9(p55CGHbZjV3 z`zq;}-v>5@W*V(34G_oTUYUNgW=Il>o*(sULBsX=5OC7H6RECVyq(9)>Q+-`_@RnL=R#U0 z{){`c1RsKAQ0YUyIxzF)Xnr|^DKu1T4_GbpG{ScO?nd7Z--_iXvk2aJ!L_aWv69VI zpwoG?^MR5a#gVb#y6k$zs86p59JmoIKG83nV4(r`gJ=y(($ikA~BEX!rsw4sk zIHJ1rBo};mgB-NGqV~u#NOPSlK>nWb-AQal6DNVm(Z+^K0os77he*K|36DoSkCXwt zb;maS1F$mA#_-F1A6E&T>4@zOUj=@1OZ_i(0C7$N*_LlKFgzD*o)PmGHf>=@53osv z>NaHn*^fIsRoYa?QLI<9MF915X&tqKU*&uh}7YRS5p596Vp@!=hK7dQ+B#i zU#D-vM@lNw+pQjweE|-bS8lQYQY!B{BpC?ea%AKns3~G~AW_CljD70_LWM7&PxdBX zpS+~vF=GSTzW9)tw-9R^zMPJJJL6bSQSgni_Vz@NEkTX-uO~Kf-1mUhB%TKHw2e(j zw4m}ermff;iGL4BhY;W%pIrs6zHw?CV3RuBQ}qDE@#T|w;NpImMe9*E)BJJO2oqPm zlLZ}h`EG(hGm2Gr z?wA(JKc7AT+iZ3j1kUVmAYRm`0*YH4SWges7~d4?*2cV-SG_}90xC4g38)s%m3|)n9Dy4)>QUT(T%vNBz#H74W}Bqz!Z%V=oJ< z29$J`ZLP%KYhwEgNWbn(RjPWQ3=1Hud}}q~ShwN5Qwnm-?jS(zIqE|}dDd78RR9n< zS2L1?_0?myR0<8dw^fSx>rvidR>wty18AG4d0yp>0|tLB_MbKZe)@kmTKI2Z5Jdh_>4&9h|3qiz1({!e_Vg%@Jpo}= zn-~PC7RmSd8ak&8wU8;t^!`0`G6(g=ustE`mTPD=KnX20m!c})~0>TX(ce3S1J!1_-gH=^j2Ao zGU@w1KHf3%L*pJ`;2#4I(+0?O*6<5lk&!Q@5LcPATMD4Qf#ci?Xh~%JM(iq@qas1M zhFFDZ?)}Y9;Z~GX3L(2OZSS3I26yhf1Axr}toMZw^71=itGsC!PWQ*yfw?QDq5~C@ zxMWe5@cr!>z`=l7xOc!QZLnHD!-f0x_>Rv1Eb`5#if2adh5^pa6UE>H3=QIZP~B7j z`tTvwwkHB6%&`w?iBzx1t<|ZCXn|eu7*N}%q^-|?dCn>4F9Fc{HP#qF^_iHLSe|A2 z`k4}y&uRk!_4w6u1MRN~fD5<{G;%{*hUq&OF~+~|$HNKi0KJ}t6fn1Or_N)_Kz*PY zvmM#VJJhYY0x_`#9nc2oU{e|)?p%|N{&1^$udI8;=7!AvvWg{Y9r)xsfjjR4n96+p zAe_EEGVoQ)gy-rvT9=0VxP0f2AF}_%c@`7D*TlW13T7H2y3T>h4Vt@9F z`zKPAyg%MQ>IPI7Xpv$32~H-GWgcJ8yB{w>DY`ES)DLRkaw99&T4A8dG1kpM;2PA- z0*2U(6!GK#qoE%*p#1`dqqlG=E+7?t0FVle0C_isnvFc{s+eUBrtVV4f!Pyi`>EdF z`F#Ka>IChuG;=IL9$2joaQJ7w)0b)ZYOU)1KSRd19Rw~H+qboX_e@DiF*gL`yx)p; zoY@azfTdt40QlcK0kLugRJ0Eid^kSZL@jJLXc4&4LV-2?8t_m8msT?m|Ns4k1hKr; zAEa$Yigql3OfEMC9F{5L@_(7d6b=109{m?6dE%-YOg}%6Yb@Wte_x_-;^==be{w(( z&?kelBc;4A{Yxgr?7r zc7o~HZu#WA@1p-b>B;Gwlt>Wd^4nTbX>Jp>(wdT%50IkY&-~AdzPtm7x$2Z9FyhQD zEblJ?;-Jd)MQw!Y|2jeC_RE3GpFl8u8A{s)7{=T%2P}p;rw0?OGY?U5Cg?La>^}6_ z2*{taEtF}wZJ>tgmD{x#2(A9F)BKl)?lk%nq5ryDgLJjAp%!%jc&ogAUpH&p9DHvC~xf3|Md<0M;g)xg#2MBbcz?O^WgHb~Z`7Y;q0 z|H8ZmI00bJsou{4ap!`UZ!~F~{H+s+ao&LBKRA+EJ2?8!DuHj-+ zyGDg#81`gK69c0AU3%PQNkYExte6Z*)E+;oldeWN4YSPtI6M2A<4n^{jg;D-B~1Sf z3(FrIGv{1mZ8@r^0sOar5>KEz(R9_HTQsBhcPQzSv1wD^5jie~R;@a%=`}q=#wv}q zpwWBNevWq?2cL_1_z_{5c9nZm!lF`zo(5sF+@= zNv%15?Kz{d+d%(|h?EVLZGyTWx7vKS^D+ z$p~DYLaxV$$h7EjBbfiwoWx7+OZZ-U&%FP9%1e=G4Z(bK&nfAtbV1K09R=!IPA+=x zJtPlBwapj20NHYLT{4mh_buXon&ap5{&MInuasGl%b%|4Y!NyL!hx(C>}FS@s~&gh zrCfVl(hv#wN$ITg4QeWN(ulk~CI*JrMjrf5kg>G}1Dri9pnR7z**4#2W?(#73Ybw8 zEKG9JnFdUswO`usGA~eQxzDWptOZ(;vX^Le-V(45nN~j10R{)85pvb!e$le&POY$VKP84BLXOzf0caTtZp;m#l$J?cSsIRNFz)gMzJ)EIhXa5H+h@pLHmF zj)FgB$GyB!e=ErA?b3mKM+#`FMXvce5UP%{7<0Y7Cdlp=HB_pNRpwQ z6nE&#qJiJvIicBEbKT^|cy?WEQlNOL{B~tsU=q~d)KEPRq&G_iXJEg5FV~~=Wr&#y zm>SRa=LJxp_nu*KU|RU(M(i8Vrrc&yy$z9e!E-0as$ua87D|AJOaR^jEb7t%aIL-r z{lf(6QYw>G0ZHEzdr}@Gc&iGB2yiOr8N~#^W)Gk)xpXIAz2^9x1FRabOkMcLq*(MZ zCA7$|S$*MK&pG%XVNd2T)_}z!5IhAyGY^5KOWR;-Uf}mB;Bt!5+;3j?Knhrv%M>hv zz#vx3P?_xnpd4ntzuf?6%G&oC4md+#K*UoBe7W~4jM-{7dt1g`i9m6S z;Tu<8?D<&Mz23BUcH1rzMubkq{9^pE1f3i15&MCCPmRLsnK}B!2f&D@Xf@ex={~wc z@VjgTCRq1(oV^?S%^wgdqu#d@93w^vB$atvW}66iXVLk#(nO%Ep1T`7D-%XHM=pN4mN_?n+gEG@?V#l{3Pfy|T$NDu+d1SQMriQWe z9(4CXp-`@RKPht7S&Qj`FCKpqUcF?QitWaAU&t=5r#Wrd0SWLprcNX5;B zwA3DT0+*CM27hv51hqZ~s3^&`*qFBCh2fcwcVsp1Rr79Fu2KGp$**=_;8%2;AhZ|g zL{J95FLT%3-rPG@jMaU#qg!&OWgU!tjMciMXOuGuFEq)OYkOBk7A$#j6oGZDhNqFz z@2C5552cybGC=zGtnUv0!S1b&e_LgjN?)k#%d2ngXqQ1?mT1Tg>8#MU>Q^~~zQKIq zy&=GFr?gsp3M(HlQLD7zc{Lw7{INr$kM{GDyhf zX87p^?g}k{?j`gSFIUd1=~)xnKwo!w(Q<*i*h_^m-1eG%vr$j;3YxNGl5ZrGBKt5> zfzMK2g|R(9rCm=C+pdQ(q>V!HvEa8o*%1+Kgy7bT2l6V1NF$|ax6z9Bp{Til8Pb+| z0CjhHW)|5RY%jL#nAM>Z-p593Hu~7F9h6BQ7OADG7~ur)j=yQPUE3{A|6&JD<89w(1b3TQAj3(Wlt# zgvCykDYVkyjF>gLdhR*@^4}ojl6$8^GFr-yO*2}h@{ycm%b@TiWUS74l0qb1=(k^L zGh=0_+kzHS6}scYCeV2!Bk~m(9ZY?F(`2m;FZ~`DW(!@)_EajC0GW^#2LE7OhyQr}%;S+4s=+AS0JqKxF=lm}xc#yhQLOIAv zC$|GHC*!s$sNbo49-oy@>3Fw3+icDX)gXKO(dw?G5;*7NB)fy{k_lXXf?sxoOn7l2 z`8dvMV~<#NUyl2dwBdfhv8g+F*P5r-Edk?UvwrpFtRDytl3ZjA_k~5NX5)%>?0m(=dkennVhzdx~ zIfF=&ELjZXoHI&}B3VG-&0TQ1`*!!ef8Y21`p);AbAZ~l_o}t#nrn_R#~9DI(p|Bp zA1=q4br=;p#?vJ|hgK`(FAL@i2Wpz7~c5g>T z?5DR}pS^%P$v?eO?j_6?I-HNYQJ!Q*>Nhz@8#;NpP2|$Id<(*?;aw-82XHEa{O6)~ z;`je1ACdlTQWz>L8;nViK&dZvNhX1WhMWE|k?3yh!7BbnfcA~pE&fP1ZPW6qQVZ8} zch(F($?%DCec553sB_gU-F|=5p~h>+dGxpI7EgwY)!xXLi}URimk<1J(~q>RTU2Xx z{ysCZH8@_jv=#5MeMx0QaG2Y=L7HlE)|2*5Q|<27q1ZQ8@3j&$)a z?zf#Rk$bUKO7HJAyeZOA@?**RN$J^*%G;~^xU-KxYB=p{d^uS~$6Ko|Dp6)fjP2n; zL4P@e@;p(?kiGnnsF2c@;cVp0ry=Hn#sg3Ot{*}9!I_J^?-;d4I=(qlJHx14#@{PD z)!EN_rqoUE)cz^brGtFK$in?Geru+6pRdvD@t>O~@r)6aR5~>rRK{y9Bw! z$;sS}JE&&luazbG3FUq{hvVa>v}8v~=?P(rm`?E@9@P8GU^|eJ)PYAK4H5 zWWE+-auh-3@dK3kIi#htXKi9{R%z1j*^ajPT9llfE+jBa7`bJf@aVykG9OI5X$Rj^ z;-J{|Rw3v#?t7;3c-k7~F+C0x-N>laf)anF!Zvc&V7b=Lwdu519BATn)o9`Ni^T6g zKJTnf*Nx34ADq|2o4y;jUw+`qH2@PK$!b{ZVhcf(#qYf{Q1Uu&p~p{l-3+b2)OmUn z+k(1=ibf{2S}P;YE}Eb2q)W|Besdq41U#oPjP>ZIdD~NQ0Y75%lB%ykgn3KklyItZ zdrI!XiZyyhY&F8>e(36D)%G&wMuME>QpE7~r)5>5=2?d)0lJp4y!o!0A7Qw*O1@cU z`|MgP|M+8Isd7)mP3U^*!do z`B5Wd8D*JH>t;8dyE<*9$34=53H-W>Z2MjLC%<_Y*zJ*Ls#h0Df6OXlTb)8=yW16 zcImoeyH`^flbZFx#eRoL8?%qX#Q3GwieA>$brahZSMx8wV`eoQXHzQ@9k%e840?2R ze9_|88Xs}J17X&z*RbngfBil6h|yaMB$rxdb4RMFlCJt%i0s{SF{dh)V~pLm8s_N` zser(-q+kh|A)KjncAIhvtkzjU0crT>{!YrF-LuCstS#@%7fRLziDQ*(F)({uueFDE z77BmaP3TB{rQTbd-;=2>OPtdl8d1*{R#Upf6CmtpXHvHD@m0F!BY1YXR96hlhw6Ex z?=4&#ZUvJON#DQEae~F11fyHZ$r95(_UR{z}h4$6X`%g4I^$&f%x1Ggzv3^@X$#M*XF1UYs z;#}KG{e%E<{_iSSDnFJYs&cx`6*S1-J{C|)qC`LCgnzq1^WnjngXDs>nhcd<36Hb5 zKZOHX`rUrLeydg4sQNIF7JqDH_;Bk73=2j*z8ycN#mLE5wYbxFgd^P_-PjQ3$I(wX zN#;9&oA`<`_IvCwe~Jfx#!1T|7|>xi(|%j1asp9-KDQ;XuuVXU@zFa9DA5K3#RqgZ z*6c;<)SyxN#JF}FsoSisBpy92NomaTJ(s-mU9_*^vzuL0n=p2o!F`p+r|KHHd`UqzPan6c zW3 z;I(;?Sm1tT=|~$P5BRns{~;k~*x`Ir{)cOLG#^QpM1a8DoxMmsB%19xXy^u^*fLJR zERVFsFa;L3*{q*S+pWE5_qo$E27;PqkuPrjAa-ZU)pmVy(%x${@816TfJBN3s04lu zeO^U>_6o<>)%0}wi(4~v1Ej0T)tR`n>AW2!US$rO7tMJie>l6=x?;&Lk!~i75O3|R zZdaP^JzEK>`TnAHJ{I;fvw%ze_6>ejaz8L;VK4vjY|%V{`|`Vh`D#d*>-!!CSa584 z?2!K+?lVmo^|z$hTF1K3WL?3~vbf9Wv%P4iiSfn0=JO!kt-F=_Ehpc!YP$*<1YRJz zRe2qXL>E@X#rN@4f%cZ2cAKgv=2~ft>cz~M_ZDW3U&O{Wy7){jmYYJJ zA@|^Fy?m~MS$md;iy3cHWp2#GP@fE6J84^uIZuY}8I-%vY@#-tTxIainjcq+;6~HW z5ecckY=@aY9OFuG`6lQ|Mb`8 zeMov}WcX%f_$F4J$QB$3+t~f5W+4kKI#u|?8OzK=Sjp_Bg9h)5Ert$zF|V~NFRjV& zW-2l_%3N-*Rh~c*vB2Z!UQj+ya~=4GdI0psTn zzCW}YoYm#K$saMAo5SNaOEgP`x&_^ie+~A7V2tu0CZiVx+GdeBxSwGceyPo&BYERQ ziP%k?Pne`{dse*jv`ejbT`%_UVY)xRBY$r7RU*_(#l=IZy~=`^a83|#JUoZ%(daH% zYGQKZux`NF^VM#wnfSK$;aTf1_LszxVU0pT@f^EXBE|h+?Ly|$q1S`XOJm)<)KF8orgLA-x;VF1ri4fVzlhRQrRhXF5)BiouL#jIRoNA?hf~Vb!`%m@=0g_+!gg+(X z!1Ps0j9Gr%a`2|!g_RYuIATsr{%gKkmQ@Llh5Tuj3(rz_?Aa=G`D0QdfTp+4@dw)D9|Zo?YzH=}fT>$_NJKe<)D`ka}v*pxcJD`sN%%;)pIE4&X^E`AGu9#d+@U1Y$K zqIc*$lE5`(ov`lep|p>D%f1@!pGiQD0EeXfq6UC?x5&lCDPHi8ejmhqLnk}?LF0m7 zH~R;?LN&I}5j`<2@akx^kZMlRT@Qoge9_F28GImzd^N8<%!O~0JabYabfeEYHU z=)Ed~kDmu;#p?MVeY4G;SYG%2wyu5=B+b0PLCoG0f7bmy*5D8SCd1_xU6QLk|pj%Zf_Hh>+zcdGia*{cS|9KF|a0kWpTKErU#Y#WaHC`}>Lm#UwZb{E)UVd*$gYwG6zO!c7*V%sMG48m}G*{(14 z_80jDm%l33`DTdvNxgxAQh4en*;8n-5V2Uk3RS14iDWH>l;&&b3KVkYB)q(&|FFk$t8S_I|>j=X`UolR)E$r9gktW z!Jd(V&bW@@31h-1rkYC{Hdi2y`JnI2{bhzmjv)8hbUZthnB?uF!TsFzOmy6!R`weU zQ-@Y~l7`I(=(5&1n?gX9eq;9rf;K(b_|eeio?t+Tl`MWcBgpSWDDzv9x6c7SgS(Kw z$?s?P?9xj%`S9zfg5aIUcbCDke4$NN>MB;;6hqogFgjXg`{6(4~-wMKpRpG4VPI zbqu$PVLT;HFgPJ_@$6+R3D4JFXX$}3dFJRb<)!~@g1+ww<6k#=+$m8Qi$I(X1#;p= zditFs6jqGAlXWaE8moI#5Jk}i-3aVnFYdtbOk9JOJmMBH%KL7*yZE%pumbsd489%| zV8xZ3I;V1m%j2*86^0UU)5|J$@*RF#!tZ4KPTV3uHhY9o4!^tFDSBrQUqt5;*7Xx8 z3}5twKz$8LzT6Asm;da`_(x{V|NOQ6yT44lCw#PbqjaEHfqeA<&HbyQ_=Cxw)By+! z6pnwv)2RQ2@&V*0=nJF%jYa}Bs7c>xfCIg{FYHx+8+ea~rl#PQ7U}+E;Nl^mC31m4 zZCG5?+}y=tu)5s8LfsMh=><3y`+&yt$N%!vzhlE+UmDi4TCxByXzqx_;C|r_Hl8Jk zN~HKL6bemyhZXaAYGy{jpEf~=NoX369E?f$f^O3pg#mAuiqPAe^h2>&~05-mUi5y5eS!^3G2nqGJv>&o5= zFlVGd)>e9y$L+v5>s2r$Daa%J<9BdR8&OMcJhQ?2*Wkdf|DOhbOJu;#WUDz9HTu)D<-nbn{N*Hv?%*;$zsfQ1Pi)m4b)W>v*K#-zp{9fz1 zPkff-BC~J| zQeC_FMd2smA(fEgn4-ixX!@ZA;4e5dRL^x!pmW+2>ukY{``6(Ab|K(f;if}0=F*R!EO>2B zd`wf4nJR7`Zr;x*4b@~Zma5oQoYq?I(wnl4n+^rAx}MkIXGnW`9uJyWMFT-QJw083 zxRo3O1VW&|roFYW%%Q)dq)-E71RShgl7Sp=uAF7bA8w1=7p*7+>w7%I%C_B^#{!KO za=IC%R)}q-NBeW=xC@Ob-TqXyLiYlY?B{yS5T_kZWZ${Bw?vG42RcLx>a94+=?(|cE+x`WN)mUzTWpU zbk&zPx;*ca+d(s$TyeV(MRzno->@M{>tm+|3!sv!kf)Yb8MUjBrgJ4k=3U?NfNr{% zr9xhMSFw?dLe18`=u{^=p0tJh9@kZ2r#N*!=K^Oz`zoB%BG2zg8L0|FgVbdK<_fjJ z4^KQ{t)pL*UWwXohl^Jd71z10;eXXM+^&Ac$@2F8^!;YRQyfz@vqkJD8v5z715cRC zMYvV{sTlbKtd??}tSc_R*B502fjgsTs>lZ{Lwgp40Q6t4JIft;S0y6-3y)J=6*k^A zqDR(!KLepMzO$_SYa2)&Zf?2kDHoC55~iXE%stEL``32gY#CycFZXL^IM07l@v5$l z+Y3Dj^7T5;5*oZG5u zSmu9+qS2Q}y&*yr{bDwT>{bY3_YLzD^3{KMc*JmQH^xyJHY2!2rL2#$rGz1WS?_uH zW>pvz7*$Am-qG`J88e!1wFjnB2horgOw~RBr2tPzUVo}0tg{@%0Rz7Bd)MhNPc}s` z&;TWdd(+MCqv6c*fC~kX%<}GIa-I#xr`9pgs;%+SC%~ktvNcjwD8D*? zQyFH5-`Rf4K0TN(1?tip#t()uc6ypc*}^tmciH|tU0{qVtP9C`{%p)uv2a%q$+eN( z3P2`0a=w(bP___eY-_7&AKr|n=E;brgshUrRQ;IgF}9he$#E8rMea-$Nh~{aodvJX zB0Hbh@#~{K{VO9(8C5rGE9;6bs_7q;ldW}ooV8k{ zvY=+S%$sLf`>WAv2#;_&dfT9(zpyW=o-v$-<_qgnwK>`*^uthWAzk{wP|iAuNplTg zMXQI+0&AnDqf-#2Wl$e(Mm9q6oyQP)v z9@jbv393i@-g_lxD&VVysX6k7S=w&|x)nA^LtF_qXh;ia2=%; z?vz0>F-)*Ay82?BJ%P$UI@X~mn1Nyu938z-iav3kMCsgqn0vs0{pS3Cm#HQFW2P4T z9ewV+nI`j^TS5NROSCB4Ng63&$!2R*D0Ovp>9t04_jL_i%-bHP7x*7!zubKx%Uo51 z1E%ud519XaEQLY&za%gI%QbIq!1j>~`U8)Tj*M{W|7V8ezkJAleoe|LShs&5m-8X~ z|1p>Qr^x~F?_ZB5fB&KTWn@f{E%gVWRmcQ<BzYk@KEEVW^71Nk zaB`CQVx2jG>OB6U&VgPqdN!eX#>Gf|@92zi?g6A>!O$}!NPPD4NmMda)R5~Foys_I z3+g9{deOp8B_q)AX$1}$&A^^zfVSE~a_`(!_2r)HCv2V846~GMg4YiAmUA`xuHIz- zw@dHqA1}^-NC{CvmQD#XN-PK9PcW2`$V1cDB2J;1mXXm6Xc(}rWT44Mm&H$G)$x#Q zapU9I^GQEM^nC}Y(}*@1NH2h34{w0e>q)NoU(mzW0BozLEZ+VvTZz;QP37eEa}+() zs)rqqwg~s%7C*c$-Op0W!6kZW0Q@Y3vIi=ELr+fBUSv{gfM#h*U`f)_KfSd7r2+Gj zIt5V2O8VaVzdVZ@KP)m@eAVTaeqnr_sX}u^5MgvrAg6yOUB>Li9OYd3I-zupiIQx! z!DrU8nnzoUn9eS=r?jB%@9%CFhF=8dx7fk;+8}^@p460lhg7 z#Sfa)N)=KT3}9Kp%l-Kpv}QDcj1L~s%R4cFS%_3aW+~E&jBzHfYD<-WF}qN@6bEUC zR0owMTHRkjJ1^{ei;qRJ%5KW3sH9fX1QiA ztA2fuzsyQEFa2SLl>^A27O(ep+7e7nHINc2J(fBeu)wEVE92(rAk}SP90RPbC}@XZ zcXPj_2D&CKkM@Y)(t3D^q~{G7r!OyDS~}C!ntxVkvF-8vAS_Dc<(&bg4Fh9C%%M7e zGLv-Z;H(T~RBY-o1y&VzH%Jgh8bNh?BVRv)F1g}R+dm5Hi)R1W-`)%)?R2+Kh|$4Y zj%>te3yZk(00U7ik@fl6*m3k$?m#(hcm~_^smvd2A`qG zOrA@KH0=mbI=c`p-!2PKq?+!MV&e{Qis3Q}jsi)%5oz?LCIhmsmpOFv(y|h~=l^xh z&76Dx9PM?fRj7=|?Bt6cDAGsw-`6V;0v- zpdbb>v58%1NST6aY@pd_xg^ql1Ot}Nze*J#q?2R$Cbt5l<_Jv|x-$ZbfklVA`&3m> zF*2)B;S+tcY79F^zqQCa4AlbsYM`dz0ZZwJSM$Z zA=~hHWl-Lil?{(EE0+Yj9c2}mCW!wRhxR8Fh|(1C=R+AO4T_+eS9cIUb(nlK%`g<|VG(V0Zk{rAY+T>Jd3zNtdlHh6o@ zr_VM@1ncN;ev^p0R$lRY9D|vWo*v!#8j<}KUPwwIs)04V20}BBrIKGCh0Cu|$9p7N z)6xpqz0Hzzanv9^lmucw(um9;7U3!|ry05rwLy+}{Vsz))b_<6*XZW8XcS7M=L|49 z5$LHMuLyS!#2##C!k10@+zl!!38WQkG3bl!&k+?UHR~=Qon$Rss_>lz!Qlm=#LGT+ zjh;oIqNCPa?<`kQ^DeI(>526-W*qJI>A?u=hWyVb#yUFeL^a%Ir1d&|Cw6sVBt z)kv4XwSIu^Idp%Qa`7(gbl6P1E5Y4bkrZtEe z=1Vi|ER_>Z#k;bkD*F!grL;M6<>_GKdZjH%Rvig6^^2WKUSf zE3VRgCdoC$4Ig7DVL^sDG#tKYAmze^1XN&e1aKj3_LLyL3w2#?Mug z(eX@**C5KM)PTE{>#`zKID2=T6G0>c@}@)!&>cnOFI|1@1_)63xiF0l1fZXa^Xx0( z1q)~xZAE`w9S>eB8av1(vR&T8ckB{urZ(}vj(-0Ko2gbP3fA2Ae1$rCsd*(lPNssE2W-&}hF6I6maVwm$ zJMbB!KP6U)=uW1>o>^cueV>0e)_QI4@`D7OQs#2T#LzLoh6}$EOHB7LR$qA_ciBVFR1D0nxS)z;w%Z*jX}?n zyW|eHkaj|-Ylnk|LNf+-b0`B9vJ67mw8m7KkTAlRwt3!w`bR)|ZZP-oNrJ0uBXUxD zeGAL!uDk4;EkwvOKunkPbVphMd)_NbK^KE=^yy)hcEqyc59oTOOJSHAs3UsQX29cb zorGMbquzmRL8@Dop#bVzWfs4Qb{smf)~^q4aJDoyh8Z!HH1)1XM<9(S1sDO6d5kWq zeXH3=NtpY~UJyZ4sdg@_M8wp(B*M=;5nql964WEEW5 zS(EZ8?~yFjA*lK*1tnAo_G=v-vQL>$V^jz*Q zm7$daF_@Dv_>K_ZAsEnF%NJtMNk>v3fPzZ~G1P?cN&4PVkB<#0I$l#8#@M&J*1*$T zTy4B)#+hf!G8)|*{D9Xs$Wf7Lj`8TSpPqoU8_RUlw>FAm49xwGr5fJ6mcVOfi>&rr z!uNMevZ=^O9&vhlZwS0E8R^N&bav6baWz_S>#Y??zI*kBYC zCROd02A;6^LFH7WTx7KnVsMHf_QCg~yG0E{XD=&a1lbbJErnQNvTU+J)`y6RmLO3t zJFOG$bT1zOi*wLGa>Yz7*1)_o#bmFNxD=fwZtQfW?JCT$GfN34=3=n$(Md z6qm;Nx%?rv5zuGNPRnP4bNQsWtgJtXhRGvxvYadCsPlr<_K58vbiG^wp)K_5jq;H5 zZ*Zs!h4!3>{-6(BD1FL(?6&QE*KLsXqk%*D8%HtuBis<);4^?|zjg~fhrDPFw2fek zbk_0d;{{z~LR#rS_{pfM;O=Q$tS9^aRUG!M_)#S~Sxdr!rU>YZyzt8w-e*Z);kQaH zzLg4n#$6Tm=4CKvr8^yAzGdI_1++}GV2dpDiEcy#PC!6N+aVd77=RYmub6s9zE*4tDtoeNGK=tp!#6f z#9=P!wY2*UrSp)<+vtWz*_kMHOM5$vpR1>3r%NV;GK&cEnuoCi%C1!ND70wusG ztpYu7w2bv%Ssfx}tp*MKrX}7;NO`ZK;ucf56=igTIIo?nJ34dvZ{sBybLO>bvNvQM z;Yx?@HEhF30C-ks+)eNVKmy^T^8+f-qR89g-896+l6ac`e22`q8$kXf>?!O=la=_J zX+}9jgOChD-P`9+I`E7O3S{gLIlD<-*?b)JIs8OP~9I;gSMKMQ51tvs+5o>nq zs|PknCWr*`&HvkQ5%TZQCHw3}(6Ux!sszacM2Ly|lEV=@4w(QyK%Sil7;o~RLQ4B_ zme{PjzG`rBVQuM|oJsG~L`3cbdC6mx+pn1UbT@pqn}`1PN6_OfdU>GI!Maer)E5cI z5W%#TaE5w~XK<*^RxvJIdwtl?{504FX*B0Gp6CeH9``=47SFld{-@35F#_CAGXtkR#MI&_k7S=7Bb+|yR&8PjkjFy4 z8L2Oy(rOQxBqya)uHn?U)2d15L~tu_^6t@9LZzYGpSv5HppTB#51=&`VSGEgC@5cX zyDL|=`PHE7odFHuRiVHTDoBDthee_okXGR{2hYO)lhb3F5X9XRb`g!ewPQ;N)wT4>JihVRW6yGtPQN8kOi)(&kfY0IShI3Sz zag3n^a#wF2wEJsJl!BXq+}_1UP}4!5J1(a}NxA8iA-E3vj@K;k@t3-kKVnoK!Z=;J zG(@)o9X+#EJcET+7&)WWcge{L#bljlF7fXktfVbVh&I(|M$;oLPflBxOhab8-Auy; zMPf{M6?^)PIXAH9H#gX<_Oaa>_7o1nq1RXS7{*BaKr0u|jA%Jrd7cV}oN$)Cht#AW z+}p!9Xol)|V~Q?uQ(F}_HG}!!TD{!5(B%`NY(o^Kt{hSv+XC2=(LL{}SJVe3NqSDR z6;$eOpD0^jALOvB#R6q`_EMWLrA=@~ysZlo6+2od$&v+;Hf=Og4^`sZ9EAncIV)o5 zY~`Fw>9!GgXO-z=U=5YV9H+Qd19l_W48yhy9j?exJ_e8MI$ek?^Jc^Ot zL+EUkK!j^%xapCUMJhqWCA%2-cG{=$4Q3;&F>0cVW$Rc*w6VxKJuf#Ve)q5yoE}l8 zYmBe#fB&c?bfhCI^Xho&tEJ|cYr=+c&O)ZeDk}}DVR}6>8ZyMX^jseu<`)(8e-4ou zRNMOwS=|{f@A`0urrSQ*fU!-pN}@VuI{;E_Dsk~6MTD>5t|Yb!@O)To?6Z^3wOt?7 zp}f-C@CA|Efbzss5%tsEO3%Xfs$-e11RPMG8jrcIJCn^RE^zjAx?&DR|F%$9p$>-7 zpH}B}RltO%s=wq1&(Kouuzu58PP(i39T&ng8{8k%2m!|Y)-%5A;&rv5jeYZTWVKb6GrM(8=6Fv< zW^89ke5PRMJNx;Eu_8xHmB$qK>N{xmZicQ*eNak5e2^vKOq`RG;``43lquz26Pwg@ z=&WmqLP7$?7dH*sMY|>T7oV)sq#BJ(7n&9$>_g|bdwlSm5+6x zXlStSP=eD3Amz>}-wmPncCHC8hukJ0&y`7h)Q@}`f|tQQrn@_?Mss)g`E0LRe-`C- zoMVx6b!lm(+oq+J=4%^C97|My1@maAe!9TGYc+}jBNp%)E`F9`7^BVd$1r25(8CpK zNQ{7>HX)!WJHbA^M#5$DXt`2{U)W`9%SLN=$Jmcj1ThQX@zEn?iQ9|$P<#r&>Sbzb zt%`1f4%ddcn2ILu(dc{2J!^d_of%Z5=A*^qJ&Q_~;{l8pn?VdBtu+pBk}Z!S84Fv^ z!OX+?pq^x~N_1FtLFJ%%LdNRABxJhPJL#-JGS!W;u(PB>gFeV3erJIO?zgv=9-&2n zFj4usKR$a|fk@}l**XO4mZ+`Nem1_0BlLc@eqaA&5M9YTmK5^^M&CngpO)V>AyYwxs#3;f zUBMwtYYFUldVePT`iN`M8Y%oBD4xxYjQ#g>WclFu)SdtI(>at*BWQk@+_~h6lrF$B z*TDU})5epW#R4cfsSK5vG9ltIIXTI`fV&sQY`iZJ-+1yguW(x%z-XsRj+4bJpF;d| zS@N_x9}J}`vwLRsNHfqyTpO1kBMH3TD7i~e(BM|15h@zWgN(?nn{aGMMYt5phh!)n zKLc!$ov9Fm&?kN|PnEtShHao56fgqK_vyJ*_=~#bZIDbNde>RSwj1Y&&S)#lh+F}# zfYAD+PT66WL;6#Vh}K*_$ghzxQrYsrvFB zlMW7_#XXq{^{Rx(paIg3Xh}b1n$T8Rxi&$3uEB2aWprS0x?PQ}yxwo01Yd2mdASoKgv;n484(=W^VpQm=j zYaJCCBaJ>(_UEY$x(t^q5(rm2C{GpApx3I{)ZfwIB&3Uben>0^7qO{OT}a4Hk?{dl z`J)4^-HIr^auugW$?}-_NjD^5M6jB%AtBQD+PtAppH_8hm5qr~b9N!O`DoTyyk??S zb#hNn)6kw%Gb{gG*URVg=@M~^wMjNdQS5-v?#YA853v|6nE0Q48MURI2EyVtp zQy3h{psEL;3~x8+I~=7pt3Oj~^d)9AC1vjiAI5jz8LQdl<6n*}4^}Gn2xWe4y2~B0sKo=HSLS;aOH=7c~d0EqSWL$GW|^T}xGL2kIsZVa*ZY zg#OvUR(e7}QNVAK@Mm>fNx^=ts(){(=VQ6zQG$B!*-%6xxVwY`K0S{7Oy8YV8b+swM3aVP%!uwl1yGr$*|w&r0)JKQ=!bi|Rx>0~1tWwvmPV6HdRX+vz0h9P|-kq67R{jC9zW$IpPMy2SAx#O&zhua2`;i;-YVasuMO%D$nm-I>z1b_$w%jf*Waw#m_nw40g0*a zR*Hi1$nUXawn$jnhNJ z>~j~W{nj-R?i#$v5z)4Gkv(b9=Ar`CrqF&(CmG-HOS$`2E zeRsP5`X;{K(PkNVdUtD?Ng-W22n-sc5h!PQm=55=07Si_XL>Dx_31a*P)7{{sm8{Zrr@ILQ#olcR$|U&qYJY1ntxA&6|o4&pRr*2yf$!0 zyu0;0b5tgU?mcDp?%!K^o>IR9xKGyw~A8P>Xj78rw=TO*~wNgr39py0#=IHC4?v+f=iTMxxRe=gQkPdfJYGSJYPl zIBhqDvC^<VBjI^~SMNbdZrvz|JiVAvd*cKZ# z9{cg*IU<{+{ZrM#i6Jd6zw~x?{NvZYZN|xTma}%(I~Kn){Y#SRRsl%=C=?VH=Fqee z1LlQAk*Sy!Zd8)v83@ueYK~h=42WE4pARb_SoC4B)P5#P!Mdc6IBzeOL&pK~@-_m) z9mGNmaR)`sr}DZEw_~u+m9X`T|M+n&7U>jsCe)mcnD^53fqYJEr^fSP%|({BECY=xF$DN zK^ZmtoA0G&@H5ix1K034kh+z ziYz>fkMRqds4c>Gwbhzcjw(|4vt)Blz(7ca<9Aiec=Ng=*G{C64Z* z=RZfv`hpPvM|UutnbUOqLv$2Yii_uagWZ0t_LAdq9po_`(o64s&tD%%%&Ja5Tx!mX zqc7~ZaYKO)+@RSN1RE|R512jvWB%?3J7a!;u6V91E!t!K^gRA*XzCF+PE~O@*A^R7 zBHrlNwcXR!XEQZaWG_)*U)eF6wa%v+&K0lhD-c0!)2U9=j&;pEYk}hyR*v) z@Qiug7c2qtm=q~@19&zO=_~MdlNoJ<|7s~R8~t8aO3w&Sf)Ml0kgOeq)=Z1p`5PwT zY25Aa{qx!XY?c!-Ix;2SF>iv@70vP%djR5<>#ZA*s0JbRm>xx_DTCl4S$crj^4(ux zT@!+c`UjAkf#{rpBS`+mpjic$uJtyY8f6XRK$*C%khK;x!qGQUnlB3=1%85=u3ZQUy}c1Ku#PN;N|>2C6u>S(aog3#s}x zURdf+&qa>k4*19oh)n@JcMsy-Qt3e4_9-!HL=8*?G?gT!q&Q#H0(})wIt2hz1o99u zXEdc-5UE^)Ok-~k*j?$Scixoms12DVqk=4q>xDSkgWqKd;SDr-a_r(_XD=9QMC1(T z*JpRrn2#E^nVbB@FwlA0mmP(u;(-trC8B%1k8PZ8g(zBnlK1pL)cUzIAEdmxYTd%# zRbpzRD+Qr7luhA2l2VPhsY+!klvU#V;SYm!vcc1^h+}a9o%aKIi@Eo`VhCOQ^P7mA zCMbBar{I`~dIG-bU;N6gW`8TDkvSGD>WZlyVSXi^q57BngAeObS7u?`lT}o%)$xeY@VVqGy!g< z9dG$6X-pD|U)4jlc>nd?y8G=Jb_Or_33Qb3ltS2&cp*5)qDahMbW#yHBE>PGX! z3#SzhZI3(Jj=G{m#$rF-v|ARXH&SG3Fzk<`5RUE-_R*J83lI>jmb49#7p`sxAvm~ z4jg-cm5(vEP<2?y5%^>R4WQ7RO+yaEEDjn$!7bfe@B~*IR^L*n3#hDPdKMx){T%rc zw1X&IHgO6dpKu1JEuv@KL+>6?A@-Eanw0~p7b=h-5~kWF-T!P|?+n&tyW%heg0QvY z8*&e3VrUGJ4%elLaA_+3G`pg{>;g#lzs_ebQG`O{oBW7fylMN zZo=W8yD&X%9$)jYqkVz^CMhO`(OsqbWQ~ojVJ2fS*FjE69wGpN3i zW@FSYR)Suv)|bec>UndoV;5LYLEp!8tg_W_?%>;-2m- zRC7{7e|IP`Z#yvkYX%WK2BZLf`st;Z?SjvtPwzK5)&8E_ztMycrCYt3ru@8{Wq!3w z_TuX6X>Ze7X>3!i%X$pR;rU_zdxGje7bxWm(DYkhf`7sI8vbo-oM7Lap)g3Ut`DvZ zm&%bl&Ry@e`Hh%kA_^LyNDQLDN-S%D$XVPFylap*$ZFlU6v(2oMs+{g#(yyKITSh7(^;tPhMdhKi~`o|c3&xTnJ53F)Go*P#d zAJ@6P4Im*Z(D{aIG*pyXOl=43qc1+K6;o|Ng=yQ}HBEHgN{D(;AJy@futZ7!G^*6@ zb>-F~$CcepA&2K1Cml>Ca8)W?0ydwDlborXo{Z`;9LQVymS8d^ChLF2>vw}HL;S^~ z_Xl>An2j4yzNo)Ahp@PD;nw$!8J~ z=Z~PPD-X6AtUHk9wNh{)LHYOtk%E=!MGc&5M3pn6^K0wLX8~7H!=IUITC8D-KqO*- zNYmhuC&O_>a_;{a&tY~`t6^*0mkMdruIo!`1vG{Vfz@(qGv9&b} zlyIbg0y3TK%NmTwR@u=5?5*@gMAmo>xNWLxcjazkW4guGXr|}>N;T?(Vv?tvF{}Az zd!Rj*P4J$quqsLKJ3S9KDD<;R+-VChGqI1{A-?;FXVI@bGi$@t_T?b?(TI8j)4{%jxJY_6&?0w!eIZDLyw70taIfYt1ndjd+Aomd zkP%(wc8ZHq%9X!UH!`AVCXycood9aUTB7NXIY>0z$T$K!c3b3(I!^4<=u zxrWB^QSU<)0R6#naV!8G2ZJ?AGfjj#B1@eQKD^-AXaz3!F}8>|cS)yd3PX~ohrq`- zSi4wuCX~fY5!=ig5A&ZHU9nnw0InU{KahF+u#t=KIH-t6W4;@09tAnEP*Q{;GJUyrTePm`x$-H7tbOR>Yq8j(n$Rtvb-MR(Tv_Wal z&NQh@oEoKV-O1dl7X;`L(1tTdZTc6p`0#nnfZjaK&i6I?hIi*XDVe-UwT?IkV)0D5A8#VCB5Ycm z`N;s~AhaeBQ@#zT)UzW}#+?9ivQ78I`*YH@v#yN0=L^gP8MY1th~E%a-(5_O9>>BL(BmsFheM}j#^NWl!qEl zsc(4Ca2+R9h(7)s6+~toki)2C)8+mA{(LDryAmLrfLbltT6y#q>06LLtoXSCB##yW zJ4>zY#P;%oZQfYhQGW?LJHEwTQG;Efq};_VmAO6tmU4cPMe+~i{OWv*OV~|Zd-QeDx*4;hf0LW z%L$Sn=lx8e#l0F)um2|KvV*V}=ld5xS2qH7m6-B8IOH&|+-*p@#$6tlZX(#3^oe`G zaB;k*=E{kNMsSd$6SQ0UFmsC)#HozNM#?0=!oFz~O}*685~@EP5FE}D5UyGryS)uz zf=lM|GsGwKDp2k~wH0(~89xv}qOiF)Hq#atGcNkVxGOckCvW@{2+KnK9_^$pib?*e7?FmRy$9KF8L+W`iVAnGf#tW|E4$xR0`{}+w=bK}71)E~e2 z`KpeIY|HE@nDCk8Cc`Q}%Is8H3 z1bGjRW1z0f!D&AeXTk|To0`&_2N6!VGFFvgOXQPQ2VmiUd4I9Uenm4%!1g`&Y|@vd z2;gi-3*Iuv2VaqAtqwLnoo|l0MikHBcaoNXg{`VJIp~eXB0NIS=mjoVu`xL!+6!jI zD%O}XkvD2bxCVzxMR``%vz~!oFJy-&`$NDx<~|%1;BJaSzC*1*#ad?<137cRy=V?s z<_RAu4_o;0y+o9W5y@QgRU5zG3!?e`e)yo%Bg1v=&XH;f5{&+vMwAVZv6vXmc(H}u zgUB)G$tQWt15CfAJ0Y`o$!ekEo{^jIScdbHzFrYk#Df)XPp{z|aM^;OWhZkq%Wcd$ ze5;~nNTq0dy*$sU!)D`Iw~LId-PpKAU+?B0GVJA#!xedHpFziTEP-(OT2lq#`seJJ z(9osr!j4TF7q!lu7~Qc17U=OXALW3_^&>l`v}As=-rLmxQ;?mlrF_V~svMg9W61yt>Y==ewP_~l z9q4e79;~U+)`~*~-a`n-3V&lkp>YM2JEi=8VK=dsEDy0w5}O5rOf)#c4(#pG1#S7~=Al6dpc4lxDYy)ZK1hrB{&Wd6Nk7 zQ{T7YX_Urc{P6bu3te0+Mv^h({q38hBiq5@Q#3NNZB?_gJ;znIlM1j$x7a~eVzAi$ zPGqUBrgK(r8?`FN;NJQi=P=U5z>*|_7!Ct1u)Z5x%7#zkL z!}~`>WvBsR@q$2bti%4QvL0^vWlpC;>Bp7b8!^g^jN9Byblg58D zPCw@@TpXE5;p~-2@yNo$qCBK&!?B!M!r;m72j5fm?UBnGe$COx+xvHx)*31EW@!ve zjj7i2#wE8uTSxx&D?dy;;?xQ-HXJVxYXOq!H$@uC7Q4gz)VJcuc!6jQDHsb^riMqI z#x0*4{7{rh`DZ_RU-AeeDV>;{Y#}iovXS91WoKva(?q$8!nrP4A%|(YZb-RFj+CIW z0;QNAarw(d ztJ$yPdYj|*Ez@WBSK9khOr_Kj+H;@OQ;N;zNN5@K$ zr=k+N2la!HeD)^irHUNW?c#S}YVLCdg>VrO5zu2tIQIqVk$5DX(T5e0XV2Q|-41eJ zoJ1%JcpTIKQbY_W^dwILc~*h}*W2!Dg+oL{CnO|P4C+}x*;nk4h09Ec=nSL<1tV}& zA#tGz>vRb9!V@3osNS<@e>0l(%BOt?5aCBcq#Oo@d|ERN)?Ixd>^eKa6MKQsEA|%W z%g-NCD&2YNl_58+1I&9>SV-*mQA&OVO8PS2UfZa!*QJ{}E}i$kD}s>hTC2xvGWkGBhK zom^saM_e>YSxd@)OunSXNtD0#h<$lv+5{)4M<>ecgkv4F;(@_10{8YDxoj7LjX+?` zM$gVZIE)GN$^-xd{6`C5h;wgs1MxF8l=P_j7J`s&&~Oew&r=QZ^Rp?8$HALc>vQL- z^4zIoc4Xy;SQoif_Z8Gtftod_Udw%9g4Igf=<0LcXF+ZY{sY!@>($V2-lUqEdaVa4 z3*ko~eS+)l#Hzq1WlBGb85(|q3TU1M5*YOj z$C)J(rGRBP%Jrl}34sSC?Vf_S2ni{n^db*f7dX;a8x-+_Z8HN6g#y#u;+{yV={bVR zi_^Lh`=#iPcrN)^R-@O%3H!j@P!WdonR49cd{sXF({VC=$k^`n>HWe!!{3SmeK-YR zo+42BHC-5(N53#Z?*RtFaC+Ur%dQqZH{^NA*_=BL{F)a#EbAD~J~p}f+u9B-4trO) z7d{zW<}+ugDPgxty1!Xbb|b|N>UahICV`|I7@ynnuIU~p$EQ1BV)k};a?ZUkt?x;W z!@HH1n1(#E<%+IURV$pM#tC_7MJE<0lE8AVvEkT{`C$9T(!i&WyoiioCB zl>=pqj3FT*#TFC%CjB0I1KksCr}ixkHgIVdxX=*?ge z==mrq#F1E2RJ~=QHLlRx>p4;Gk*d2$;xb$JmS<+{?T8fE)k*jJ3Z6O<#5fY4-Zcz^ zJ&y`1c#+p7r=*-qZTo89_cG;v8VZX+v%0_9eh!c??=GR=O~@+hW0^8Iu+u%9y*AHw zPOurSQ!NujFrJcKb;<-_ghG4UdWIwut^>RIiB-MSX1>cB_!-Kf|Y+?Ly_#sGl#qfo4#7K>Y@(85i;fATyFTm)@k|0 z6%i||BH)|!&wfG68A*XV)0fo*Yy#9K=%cU>RN$wrs9?nyo$ml<5+tuvX9x4jec9-(4_e5%mu$at%XJ&;z$p}J z9C?)cIB(vUHaCQP$I&?!Wd>PsL3=!~N1)~&#@v@+UfB?+1Jy+S`-69C0x8Q9MDs$( zxp(5~y4xdNYuish48U?rXkX`I??DB?$iB?Ho^T`+C_X4|Eruwpyq=C*;FmAyVLtzA z{We|bwN3goc#5@VJL~xsXBNuyb5FUMx)ad(>VXX0dbteI2C~vTK75FhEHxew2Oys@ zC~MT@F_D?OBK~8IV)7A)ttg;HeH1~f9E-fH+6Z-&{(moOax$_f(4>-p^GM}l-RDCM z9u5D)srmzJqsq6d-x2-bOwR-wmcgq${O{1}Gm!AR{v16C?0W|?VM8=1qj)^hAt-y( z9RzCN83yx#Hkj7%3qID=Hd?i3P{tX@eiEn-6zpoj5d zL-FGLYVKvBxROnP5Esq zSwU|f`R>jdFyb;#>pSLNa&nIKSA$s337MeMVDYAhp_f98&N>_n0Y|Cp03>n~kJFj7q%oT*t*8Xzsz4EwwTz@ipl6?H+cM)=;d5VEI|lnLd) zv8anW&4Z;EnIh~Pn^gtGDQu|o#(0x}CZ@@hNh%K%k1H%pcg6u3pT0}hmV-Pr$xZz< z-$*);5!?U8GMk-g(4K;8aB7MoaD(#JX6W`&mf>u%Ry!mD4;ec~$<4IXsT7l99+oA= z(Q1xs(ct2(2D8jh=cc)$lEMr!=30`{mvC96Q0t8agQw8A7acph62JuKp)G03{k9x< z6lO5H4x|==M10Qu!(r?o2Mkv$Gj4_29l#fiZ?1u5t8XTvIo|-LjTPI>OQQ@|4TIM~ z0Zb$gg}4}aQF%QQeFfSLGj`XGh{2;}86>%#SKA9WW}*%eQ0`5>>?~OW7AF7txup6P zPqtX5ISVd2M36Qe3BwQtPhfl~3zL=gl;p?U5r-#Q@nuiB>&rxr`D5!_Dj#(pSH4K? z+VDMdtm)cWavA9W7aF8kMdII3yD|fcEA*XL0GB}89>oY^!2PG_9VwcfDlmo+2_~0| zh>FIwXZiX0g+S%4xfGCbk1o6DmI7R6Z=H(+RJ}L@l$7NlEe97)Yk!|@z_%bzgU;wP zW?nWqagFUkgMQpCc4AKIqXrcnZyP6@H!X#z{7?%LQ?iqqf|SwmI69)Kq!d*4NjqL7E>u^^j1Ze=?cTNU#tDQggfJfT^$D zpNpfEkn_+ore^{9xYgP>f|5KHUZYoH7U7Js2-CV4^LVW^eN)yLuarii4P+fwhDXi^ zxe7@kBe|mYACXED?;Jk84(z-B#ZSUM<~XBwatg#`tVfS5#A0zznGAf4nC(iUxWIFs z%T@DX=%~mNnF!)uQiSO_DvH#Rj=bQOmkT}KH~cJL5d1Dm`D$^lE9$pC0lLT@*Ac^-Uix_W|GAHwdE9pP4nO3iMiD;i~vyXJZfCp=AxfmfP?!u%oQvR`0; zRBSyDz${9g$w0AknKQnj;9C8`N*K`cJ_l&aOi4HY<`B1cAnWED&|9&cs|WFO3pi-P zfI|C%iQj8K=emAl{E;Tg5EYk$(gvtzfF2v(PSX7WVY}aABIddf>He_FFBH`Wa zHTAl0s3qxYY3Fa>o7&e_*~MJFTQ1PIOT0}Tm&rKel-5osa+(2q+!^al4RlsUs%(1N z&H4scj0M*s)y0(!2pSY=p;&6wRVqar(So=QTV!!{Vz0 zz{++GvV+OeEQ%_$_+W6SYNE%n6QqTaSFf?pv)jrTs&}iwxOlM@nyBWmGCKIl0|cz8 z248#SsAO*V`O5_Jhbgtq=+(@aO2(J%o+pkAuUt)R%^_!a&?w1MU-H7pq+oTSd%s&P zXYIpbRR=r8{^pw)(G0%KT3or0J zkpQT7GK~@jV8{S2?hlCo;@cks?WMzq>s%^^7WaVZdif!#l3n}a#pQ`#)?)@n0Ofi* z9-p%D-3%cH(&4Nf9^>znSv<~(qwK$w3HD|Q3AP3Z`w&Gveh1Qz?&IPS(OHbU2Z+pU z9C=r(o%^YO`H;6Lh|6tdN)XNgsA8Y^0KX{dvixAY2!FM-`e}6P)bQ5ZGs7gva?uQ= z7lqE$?J+EwLy26|@l+YA-uV~#G}J*S1K^4Sl!%oeYWUPI1?We7XnC~D8k~BIt5e}M z)*(`1iU5V(vSoK!62dn8T&p^YI%)U$J>gwVTA#>FmAQ7l@z0r>4*Pgd92dz%nx7zU zOA_>C#j>4BPgW?%zeyCpt+LT~;mTa* zU;BK4vSkk#8`X!$pdR5Gh-t|D-<5^pR}Y4>D}IQZ)DHadvafWa+}O$~OI=Epb4kre z=z8#$u1)1*$_p)t2;$05LxG9hNxbEAt2)2!mZybcp4xzES$09D zj1Ud;W!`Wug29n6@!+ zZ$ltf0tM=?&?|Imr7eqotY*Xgi<VW6QF{jgHD(5?;K-9vE2Fi)o7&^&Ye4Y*9aDzwLfR{+HLHf zff!l&9`o1?i1}5(eM^9$<&r00)_f#Lo8#&q(W{jPgIwekjMJ)BA>^uZCl%4`j##t(zrJj++rhZs7N`tck3uWWiD?!jpUvwc0E6q*dpa{_ew@U zhbEon=W36BSS7JL*hK`)ySsF4?l&}Tq^Aammin5e0G-)-wfpXee; zCpq2tm7HbNKx8Nq*U_*u@S)voTO!U)$Zz@AV8qPIcfHwIxr?FAi;)aeKEn#3UVijx z9~U&FtlwUgFm?6bLN9PQ88q6f9_=!z)=z5_9FJWhVBs+m>fCs`AwGdOD|MDrOYrv*d=aGYr$Je>p`ay@EKnZcj{^W_ z%Kwf>`?yXf1v!-%e@&*BtEDm@vad9^Oj%c~rj2>y`{Kr!u$12Subt_yi!4=3b}Mgp zgbCj_inBtlv5{@Ik5nK+-p8j{FS^EmJTl6$b#bWLI$Yz}x7L#@!Uhv+M{DZeJi32I z0|aZ@f?h&{1=@_DqYL}F&%90>(c2eLVE7`GPl4?I8I4k|Au*N((2TEd&V8jkDA38H zO@H1*_S}d1le?b#ezCUa)cUICjh)1Oh+w{B`1s^?X9xTjZ*j^xH)h0Wc-WI|mY zq>0f^T#$XLf5VhP54ZWu_#ApkUoEFaIrs5W%fmmaV%tKvFX4KTPIJfbdu}%spEt+J zuKOEEb1>(+(44{sT*Iq^b_dOE9DP*VHU>RWqWp@9R+l8|Xa+GhX!xC4^>GkyUsh}f ziF2OmeYd(?5~qYi&g2;0AI07?UAJBn+ZCxVMud(r+Og8tVIB@6x<8RUgtl}s-jQoM zNe8jIG0EaNQl7piG~?xbE;|~mr|}1;6Z?15hnO?$>JeX441J}?>=Y{`N9yUX^X-dS)(rmP}Yt~sR> zN~gW@IOmb|%82)+Jw;OZ8=apWr?T$5f4E7`)gbm_cw`rmJEjg0|#U5BtwyR;)bca&H5)^(8 zCUywjZhwonEPHQWs%l31!bNy^o&4hKP;PweL7w zjvKi{h>}-EB@m+JDR>hvQW#|FNGMmFtOK2b;+DaJdtDv_I;{Bvrz_!8{Fa>8;QbPp za~t8EtSC~=I*-*CBSRUKMPq*#x=v!%7$5xl>f6a) z0v1aMkLY{Js)iy-w`9L?>Uad96mzAf-u~hEyWXt92)Qc9H{pzg=HBmDcXA&xPH41q z|CX(;bpfhJw|sx|5xr3qM7+G{`|xxoZ=@iE3t$jQzNO)Q4v4TDYz2ioXHQ0#9?0i| z0g27SrW**F?TLd4U!Y=H2x^I9!V0b1^<|O+N%hU$CdGGWYu_^*)Zp@ELD@VA)-}_i zI({H)Xc;Oopdcp~0TWlRqLi3LWxe^V2%c5_Vv(Zw#bMF#T@v@%9LS&}SPg%C-U3l+ zOzls21E5r+v+myhx0SC=kzms+|A#7zZcF-{L8DrnzBJLGP4@7i9vJgH`01oAJE`GF z6S&4!^yWL_P>|^+Nyc-&Ft6X&x8W)Yrd}W;Gx#(VX{Rc4s{Egn6!>BM&R^%@Duy5_ zEvQ|{&I3vlh*b`w|D-KzI#JKpcflJ}`ufYg-H2XpWnnsl)hrp=*`GlTH_otNXfieE z1+(!J^agqW^0x?pWoSWJE43V`ms{?53W!m=0g3nS1>2i*9-+TQf1alAz!&pNwTtU| zjc)8)xajWhc>E6NVWbBjX(1z1j&^mo5YCci)o^yJm3!w=q2)eir4X3J-#z@hCr}F> zpyE>x*J6}pI#^$?E;f<(EHa<^-8X-T_y}?_4UO6X862F{sz*lq>0&F8JW~>e zCu3q^3`=ooNtfL^m0I1D^@gCJtPD2ND=^gv6lx-){KpSjR3yZi;sYNd?r<;q=jrBw z1s@q%M;EB;zeYbkyw>LnmVxKzuUoHlFH4f#;62SFk!cUAKrKrv7&I@X9hKql?_aW` zU+a0}n)`uhZ&<0@_7wc{6$XJ*=237Gj5u2IOeXDp4LZSXfF^-$AU8H*FmcQWoNlqp zuDJ~t3&z&guat@0uvdP|Km1At-ia&}YsIOLRbweo#M zxgr9=Cf}25;GouZ?JYp0okpN|@=*0+I7yTD9b?l(V8UEq^`t)SO?`@4b&N)JvYKIC!lO|TgQx_E z@CE}BR6s?Z9&tj|@0O?Mr5oIjI@G*ZVnNH(Njacz(tv7>fnqHZ5VJ8aUmhRs>-B$n z0jWlz(pz$wMBc%kDDbY%UeV{vrJfSLH;B{04HUm@Jdb<5pOG-pX^sH*IusHg&H00& zpTAF~PyuNmc+^iJc^__H8Z0s1$8VBJp_559zkK-u_|oqXs7ESm zI$C+U!LrmrD}iXHuNW8X0t7Wb2>N(It@uo?pdbF$#n@g8Ei5ED{m{)V(1-@eI_W1o zPU@~+GTxp9jYMOOzW`g4eVbbD8+Wh3MT+BI)f}x_?1+2(eTP-mB`*koUpDAX_DRd^ zYBiwUiPpJPmKDz${Xxi#R+TT^x2w+LG*(nhgv@XKsTEPhC8gn3BOBQ*dj^>)M;%L^ zRelS-$lrz}OC)!Q-;)FI?bHXmt5JUe(iR>#M6M4I`G!5I%!WTmZSHG)fQp{#K7!iw z#e=pkCgQyNy*{T;O-9W~Wa+ z*9~+Gy4$W$vmziYxo9hU^Z2YyWAMMWIBst*dqQ9`Y4HU(_QRZ%Q!Ng7Wq^Ix1&t-3 zrw=;@x^U=40($!8e};pcd-uN%_ENC2Lg4nosaHGseQGZS6_prRr?Y<@WynFyn{9$! zR4@9w;Ef|SElm$Z<<#X@aVb?q&kGLz>8;FxgM$MY0h%VbkT9$z`}g-wk^(jdkOXq3 zxp7xW!Q(vLOP)UNN9b0Nt;v}ZvSN7Vf;)pQ9J-;db|4;vQcu_+D0_g8g5#gh)SBR* z=db@h=&JkW%~fXe(MpB5`%cbkb^O-I1wmK#DLs2fw1`Ze}QZE1TB1^i-+C(43~@{1Eub^ z#x2MHc`>Z43XA%G@{c{j`lbDzun7q?Z zss6dQ-UkmJ2m!Vjdgy{mfDD5!C71yShM-B?z}gLILMjl2(!>oACVf==+X6@M%Q zF}6dRz??xG(ET_NuK(c({_83v)qEl>oB;~#{#vl4n%>^t89+bs`>3)B^!@++t^c=2 z{;xCBB_siiu2S^n?}sJt9S=y5zmENDCH?cA=@MdMpMd54`q!!H5+L-r&7kq~?C84j zsb2!h6Ce~myV8H&;J*%@%LN^;NRi7^Q~c}HV1~xVM!8Z$rn95X zIluMq|8L`PI1C!@W`GTk{Ijk9`9&noy?YOHlnd<7*4*#wK!yeflfHQI;;&cw_uHqW z@)|YY3;83U@_>qM&lC($EzR1RrQe6Z$d( z_v+8)aRCd%x~B{xhRn#AbB#;SE_mmguvVLlW864L%JzE`O^Sl$C`p-O(q{!*y93Am zTJZR^RimJqZYJ_;;!alojsXUo)g=h|wZ-^PhkbLV41$*WKV~;5y7#)S!0!j-Day^K zl1W#?PJB6-?LS5ccoNXqe(--Rv?ot$<2kMVUcLXV=^whgZ#8z# zX=-G71&yPi@+U`KQ#lNInthpkxWkOU&T{N@PJMTnnY~CZ%OFKWLKxsK5;Ig!M|B#BG zpG5G9bVAgG{gHwDvp57^>jv?O8saRA5mdSz9^A6{HOP$HQm(q8Vie>2=G>JKUp2+> zXS0~?Ro~kC5G28j$}4Qmid3=6?nFN%H|DOhMb&K|#kv6%8~4>4I7UiYpGtEz6tcB$ zJ=nK?+X^^Fz2V^_W}PD;8`G7-oBMN(-{p?l4(Ey)!Q?-2sL&cstDGPHPYCkH*H=Qp zwp65i)g%DAt|4{sLQThOhrpr*f+8Hk*z)d&1ZRrVKWZFuDykOOcb2yk_MDywq>BDl z2KHbsp{hp&KyYhw)W6WZ1Ziif?GoML8(XVI8QTW>ioltKA06z*(ToBy84%D$P0z0a zPyHM)>rxXSdwQ1RyYxY_k?wW>#{f#wyM#pKN#i53=!$GAyY}1Rlz04FqRq>69eru$ zI6Fz>D|MrgnNJNZ3%5*F)FOGu)%fc&y&w>THA_~+SY$4$8~{!ue5jU|u7Qpsv`g*d zzI|)~aEqRw!-8)zLfpH2A5*%tj|ZWojcHV9N!mFf#E1=|_9_wFx5guAjCs-Ed?hQ! z#S%|Dm!S3!2`4efdD{{(FOzfXJKH6iUO%5`b3Ns-GM2He=79>;pJO1r<$Tw~b=$d1r*5q_P1PpWZaym`+-e@H^QVnN9CzX^-Xjf7tMe3cBJ70#t|x$!I?gLCbL*EoS-%nMYzarKo2W2QzsyuxmaYyg zNC>J6_PX0q0cG@pf|ysYhHT8XbNzAos-FSXgJJ~Pyz&!aIrkPCyt*~|jzAA){mx4~ z7hWLP>EtNR6bNdCc2eU0q}fG>e{gl zvxTNyxAoBUH24wkHD1A!@YK9o<#}B93hl_jm4H8HFn?CSVNoM@Kq8hup70>LZ+@y{ zP#GkbjNOtFYKE-joMP|NOL9E`lgwM*mB6DedbY1f(?FMIn|Y$awf0}H77IH8Z;`tS z#yzcHWnRbu{b3#Dc7Ay(-N|_8TL#8{K!1}Hpv<%?J_Y}N>ZTR``8U)>L9KTdYwUOv z6L&J{hV8#?sVh@cUKmkeKHBBE%@h7%yq)UF?V_7n0vlaf$Ir>TM zkyz;fZk8+^k{h`_R8S)onVcQ%sGc<5C%ci6HVld1J(p-7JkSax;+pysBs+Rc=85WvpJHVro_0;trwafc7Gyo{Lw>q$!u1QYT5hyQ}yp!&l+QS=F)O=tAT-Y z^W{((2=_HXQc|kui=_oxUl#o&k93j-Z16~uNWsS~(7-r}PhWd0C6EX3B-wXvC0aN* zBGAIX!0?}M*IPanUg_#x^&{B<0o*7%n2B+P2-NvUF#s6O@M{DA3gQr8i6biaFo4=tn7^SQC7dR_8OUkD zA7GD#(?MwgaPyNMU%q~&AS3%?hIviggXuX;6<-KgACYWF;p2{PGx~MN~y3rG4N>FuXMbMc{S94TQTfsCB~356-|>p zP(s+5LBHum1u&+zNO}}_+{c-~zcYg}lnSW}?_lS#!7rvh({*<`*x|+rVNsAy2ns6_ zFpDr>Wr#{7Ii}RkKO7-SJJ%TGf{0rCrqgTOGx!hy`&rgjk{aIE(Z+ci9PUNU><-fp zYa?({S#rq{uR?fx6mAQA^3pB7ZEMgeaC^E`n@*@8c@C`hqsIqCV=Q9(SMeM8@fBHlPT~jdLpRf{A!9xOK@I|^Gp&0S~`?a4yw7GVvU=aExPg@WmM}TrF zV0DGRF95fBoq+k9PM;1aiTGb3^8fE<{(kUQ#X8M5psOj4{9oysr>!4oehefy|1tK^ z#ef{k6tp!e2G02Z676$xssJW+<;-w6mYt%7r|AZORGa<^;{I#A_y0Kvvd*TaR?zMw z;opffINIFYn#kw!$K?Ir(`mtKAQF%OI2QB;nw)y+`5@64HR; zG$?s=d&lp}mBqU#r)9N6VGsB_Zn^6GN8`sD4hIsT%;o&_-#YU(VsGy?T8xWc9Vv`Q>PqyH zW;s#q$HZ}VB2T=1C^*+kyjKN)wBEA=PO`BTrlm1;GKH(|Snn-YukV&McF5hTT&dD4 z#1Ehef>}9ln=DNPuDACUa*T_=ltIcxAfvq#C3BLLtH~^C{RTs#>qqc6Ji120Tfoo` zeQ^Kj9}o~_Q)Fe$ZWZ@PTL`)FIZQ5DY(4z~!!4l91YrmP$j+}^`%(ZfCgw;T!N-71 z06ZK`lSFv%_fEAoHapbw%yq!Z=_XcIa&p-%hA$133A<}niwx%N3j-u> z_9t>Pbi~)I@#jyKeIOCflX!02|LFnHHx6dx`X^7$g1)Mta1298Xzz}VsQ0ziY4DeQE!dBUuYmyk0{pI!Gi z4R^^0v=zyWBJPJJXLiwN3V9^t6Ng zY*(B`c=bS=LxqsF|ajeVlG6QoRt&j-Y;E7TX_|`Hr6~?pVWu zcsUU@!Dca>$Dw7RIpUyocR#$Zdu@wj1Ju?rI}BbYSl>&t)~ShO!c}0K7HKbh&uMxfDmRU>+@#qa*;}9C zdeV8D3+T+}sz)l!LYTVw9%7H#L^ZQD)}s$`RgVtDv*ZiBMu$tHpt~j%Y^c)V+2mEN z*9~#H(e&+`n5}L2VVPZtD?3scX=#S*WHr;rulcaRwMks5n}gMIzsJQwJ&Jdv*2<^9 zDm!=7K^Z%Scim032JOIQbr`)*CRl;4y?@f?-<$o5joEFuVz3MbTe}aSTfuDWxi-D> z3Adw+A?Md5I@*t9!)Y|19rHW4m8v_B>jjY2+})WeVYWcF-5$}A2`CM;T`dyAZetYa zWIv+pRBQRx4R6_U^4D96TNRH1jbs#fIz7=FC9QLJm1VG8zF}PO$75ueo`|EG=t8Tm zcv_E+641`OQfVM#N3XbP1_?2NU?7ak&(DD zDe41Bczq0)%zfhHk28$2KQJy#c%bZ@W}SAsMd^!YSN2iEgluN!n!+=4BP)f@QPN5C zK?2O5F}6S4rZ*0N)6vkhVel!|y$hIKH%JU)tWRJl!J`Z7ZrB%ES#T?O^X3iURCZ7g zG2M?_i7;WF6%a}#H?V>Z)CU!uuKV+A5BePDCmxJSL!kII?Y86Q#zRdS0VG&f##1M317G)83hF7j(N}pqgK0hawR)# zpnzaoLo+kcmEA6uPOVD%od6H_`f4wh9BR=dT_}x`*>C}u`DngLu2Srl&C+FypeVi? z2awh9I&D_F9dnoCC_ih9od|<(n!t*+e4fEqF-c?`l_ASaqg36-yDOj8cqpw|)85_g z9<{1}M0Z3&K+{=ZM$cxfNl&j<7Qs|dM@=GmoOE@k8AMX=AH74fO7yCuHy@Ib#j7Q| zp8J*W`F;#WN(;q0Vv7DsW|Hqh-4}ka^~h}qPw{tpQmN%e?@yi=l$;Cg{g{ZaMPN}L zc=1_-O7-5V|4G8y0v28gb22yZ)hQp^+KujxR$_m3eU zReaFc*xGnmM*e+6!iGS}a_^CnO+vrvSnZ2(*KIv{#}uIeak=#m-f|hXOhzvnBCorD zDo}3157&QEx3(14TP$Rjbz4$4{eNqcQx}spU_0Y*C9g(Lw zyV$0eZrw^Y=T5l2HEq4{au_djVjaOA=9lV^Hen*DD~KD+VhFlXsm-3Nu0tH*9y`SH zD}ke9*u{AQwQORdQS*V<)`C%WuU!KrX0YQnktT83L_~6;-eSp~EBi?jK%Djb@nh>R zwH3Vo$m*tyPT?mbOG0*+cd4uQx8mxn=Q>_3u~R5ju_`GGDl#hn!4ibU-ghVIE|d7R z+f;_jRkryi9E;sQ&Qm%kp=>fFLo6%aD!W=8FX-eAg>#ge)0ELfGGA2Q+D{iy?@l;6 z*ijSJGHr(o%&s?H=s@}NW0yLH9y4_FZL54hxh}54Po(+yxoM0DGaos-IM*J#Q}>t} z)89>Ns2IPjMm1fHhb6UsRp#PDjil8_xFj~3+67rjWSL)#X^WVCCkI%p_`db)PopyW5fSnYz1O#B)BX2$XuOMA|bIgry9= znMGfEzU$h~J^0>#N>_@|EJXC?`tC?17YR_t?Gh5o_U`@5SzU4vlxQ_)ATc zv?)FI5>@-P{aY8@>KwYwW6-nny;)K=PRkkdd1-ypv?%rhb>T#k^>kGinN^oMH#5S8 z7^Y=)q#a5ME@xppV1ML?cd4)>kdWO-zkCJg1%>molqa?j6k4K~R6of!W;sS4o)EFC zi|$0beO&fPl4ce-h^^iR=8!;H1BiA@C_f39P72R)<#pe2=)-pd3nTo8$-RE|m?*Sb z8j51kE$1BH(U9}XLe$lj+9R||RlS~07*|#SBbxUIEZ~@d1oYP_HMb3L-5kIl?7<(k zZ8y`;Y3@#3_d#Zgu#|4?^h}xiZZf@8&0LG`HP>Pb6E(Q)|L=k=iu$=Ti$zE?&b6%}jJ@ zB-~EeoM$|&@$uPnysV3N@BrAXWK>d2>g5o=C7M@TrYmvPLZNamxP`s_MC89WPOlBXD`v8big_E^tC*7RPF ztTA6U=1-?NB0WYTCgPgrCldGkVvP42WcVYyA9?8RWIki@yTor9bemdD@>v6~wELb> ziey}g;3a`$fX1fwW%^>fbFR-57v+a=yS#FtS9sNTaY_@v95L-G#gfT?JgM2os5Nzs zV7u33V|w%{vmIJy^P)X4dN9qDc zhTc^ItZ6S0@qIem^Cm@jZssUd@FjdUTGNeO=c#S${Yp=ruzTAspb<2;6PTcfe%k`#0=DwFo)P#N2(I z2rf#t*o&(B+1bo4zpSec>JOymloHTbx@$TzZM4%9OwESx!Y;vU^%zYH-qM)P(kNJ~ z{nU!PKQ9q0q;H^Q-~)+IOA0e7HJ0>2=g9r0BqUWqYtvS<+)N zEvS9B#3N*6rFH~bfDUz4zE|^q5-93uJFcWYAsGLWRn$Ic8XD9PP2+~F`LzQpXp)Lq)n3kFgzW&QmZbizYerzQP)UALML)^3^iq?p2#%nDe#1!ny>MK2VfHI!#@lXx~G zbHkex@5g9Z3SDqGLSr+(z5Bg^r-#U(4^}T7rbsv%$K?^jrQ}hMXVNpj!@)8aJD*e^ z$j7wzDw9qMYi;Z&J#wPhwKerNCOy*5v*Kt75UmGU;21a-O1#O zF4A#YYL5TM#BAaLN$8NjJ6od#U$d=v$s=_Ri_quV?zCxI&I8cOEEu70HIYV7%^L+P zX_JJHPpnEFe&a27zE>^sCVxE>)oJ|ex`*Z5mQmPt))wZwt=l!l+9NizUGyBb^{rcs z5z-Eb26@7p2%8B6tNQp2ebls(hu3-1Y0%}cTk@7YLi$lX-Z@pM!Ko+0yn3H~^MR@W zmGM)>IO(yzN#B(|o!XQpY~G7TTfzx^o#L6H)p&B8E<3rd2a0k^q5;Foae}F|^b3#m zN8>2lyVVQow-aY-wyn;x%RSn#?N+S1GTg#uyRm_9Tms*Z!Kji*@71J;zs_VxraXWO@r4uL)i!h9!YJ zZf%PcPR9`l3J)*uxhjseW0!PwUv^4=C7&00Bif8(F64S_MmMD~BXpIlZejKEZTt)y z%<$izI_xp}>U_`nMlGL}^#>F)4Z=+=V#xje!v6GK$18ybqca{-}6oG@u1o|wKo>kSK}mkJHPb8 zsDt>1>B8RA+yXOsZ(n&AUUV z@DrnxRw0)zh>xvTa%7ge$L8mK3%+!U2~+T>+w>5M$HgB{na!kO8WTMFDKp0G-K;c-F*n-g#wa!W4A{hj%2^&1`2!n#Mp1Mq?%`GXt8QUWE&&8?OYkALuU!PuW9k*sl|_!AtMYceuw zo((R9v~0%Tqwruq#G@6(@31NAkFe(%Tnjct0VD$@miO4Tf03dGX~TZ>W5qAuZ8qRq zR_?z3W!2K*_=b^Ur?jC(RHBv%@m!3$ zS>NLYEVf5^JXXFOYg934CD)qnU)$L6O=_ubIF4Mt9MtMPG1%hy;A<#}K&MK7^XDSa zg;SBI!o&z(zS!MRtV_K)>Vz(8WS(00FKOt_{_s`pT|P*049~@e4cfk@KMYpdL5T!> z+Z>gD7U%Ai+(?hpK*Pl6H*(0iV>iNp?vVGqoie0Ar zVKW=K=Kj>Y*--cvI>k7ncpN!kx2RgzF3d7Oa&Idb>|D}S8T6>+i4^9Mobep?L|nZ) z!H-S#ef>CHGEmv=G7nI^eN-^VgBocXqH<@TNTqR+#s8DeVKE)XMa zUy0h|`O}29eOZ3{;dYU8VuliRS65_D>fPg&ne}u*@sQNS)q7ZX=NO}JFWKr{p6p%h zAeg7)urQ<;%14wj$1ql3O24GWYt@-vqd~}O99sJhkv-vFN5w;F;n;gy2Y|<$;V+dl zWwd`Laqya%NE+)Qix>l$=RfHHBY2Fod72bwQobDWlorw2Phit&vlkY`|5%=q@ogpr z47>s&n=8lFap#i=5A0IKiZB}s!VO=_CUDySDr*{?om0;nf14{f;_W0raYE#v=o_T} zc~i_sn;PsCiFQ;Do_@6k1Ul@FTjg9`MB-p1xo&G#5BB#p=-IDTq3HSKI^4G-@$Nc1 z9Ol4JMkNaNT{~6i6Ei$`BJ{7Dc+qR0TnB9?PJs|yENcx9VYxfX3Fdk-Rn;r+q;c-w zdW9Z$oM}AJT}>RLbWBl|O7hrDJ1lpPJG7f@n90(w2@+8ieMCPKRJzHk$D(>|*Ua_s z?PO*?-<(<}M+W;~%C*9ZL}Grrs?b$Czj=hHwq(St2}gUm+eurZM_O3-RTn8v4{j0~ z&4}A?I30F!sn>ojT=ShG^UYcAq7kzG8B{*gg}#QK3^t-WW_Xah$f$iMeq0sVWZ#SaX%Y{PJ4+Gb~H9&POxgB zvxz7Wl)Hoo@i=B02?xcVl;hniITyja_@9duQp+?1{W1+rG&8P z88)JYt!~wD%ET1UGPV_i42AmhtlH=1D6oQW)4Bd)x0PxwE!KXtL^GRs=t7RH3YD8P z<;Z!m(M9YLbDixD@f`}#hqQf*$G)m{S;5tXSTX}8UVXq(V}k7byxG)EE4%i^YyoYV zX!v%%qud1{U6rP8fcpk9-_C<8AeFC_q=c?yOiU^@&%n#;J(!Y95QtI;(7=qkzA!Rk z7RPt=L@0qn%Z=LUaG@vsLv(adfWF(Q0rH7jI{1l9dLIkVlQ#%2!IK=#u)NbGif@UXsZi?|?+5bFl-(cVkk zXxGD-`FL-x7fKKAJ18n_&dR9mN@pG$+}4g4AS5ll;6mHSGyrmvfsUPSEL2!GlLPDH zbj7X+H)7?4YI~65tod4GMlUZB2t;3hF>Ah9n61Tc2X=C*si25!`00t`UoY9ZeRu{aV2b2t0u{yTNX7X{e6F8 zqEWZ!!i&pn*AJg!h87DlJjxR{E-4X{lgpNrYrH^jm>eUvVrU;|5}_apQ-&lQbk#!be}%wecva4zLZhz3|9e^E8_O5 zo27gp?2fq-*9*n{-cLjeDZk_z-1J<&l`$1>eiwosnUVUcJf}J*?K?NSF})ifuVzUm z4_DExE_M38lEPZ;1TnoYCzyAVJsmvPmi(5d$_nwlpY2>tQ{QJ?%ABf~7b8Z{8B{A8 z;dfHP`Px`2<&2B%9JaV4c!K3f*&<#JeeKjJzBU1&=5GB2pO77f2WIu*G!KjlG`5y+ z(iT6w{qYrrAk%6jF?RbQ)V~TK*(Gu1iAl&oaedmre<`^;;gEI7r&v2 z-|gD%<3gxQ_^Q_M^(rmH8*Mnr%=3Pzax(*|Wvz$rJ585alh+!|>E8sZZQg&pT!Q-b zwPTT6zro9Ol^?^YaBDoY9ZzA^*L7s6pb>mij&2D!e!U0ir_lPX8Q?jbxtB6Oeb+qm z?qV1=ieXdzCmqfikQ;Bx=n10O`rI&j zbr92)RN7~=);mr&BIc!tTN1YYb`!shRk5#{4;Viho0#DC$&Ow7c;3z;k+vHcsjI0j0;c>y48b z8teK#B<0%hetR*O_cggJ1)8UNviDf?yN|K(?EEm&QS^WD6X&Z!N-m!#4C50RjvuR* zv?@3fD*%L6tM@%`slLnNzi)kY?TL5k z0uu8yo=sAe6B3U_& zkbK@x&k9fOd%gZV#bu1_@7vYpq6ujZa&x?~$1r+JvTkR$n3rIiF|{)Gd^;ryZA<*9 z^|)}%*r8&WLB0GmXFxNm*g2SaAoLj>o9Pon_q7@Gt?A_1Qe`E8hdkedEljsT7fhm}r6m52~1ptNBO1GE39v zUH4`_>{Qf^(^%`)phH`OTu433!qiQ0e2Fvp;Zo9@5AA_ZIuATN*P38$Z@pFEknBwA2Mvr0l7PwLayI$H0DxPd*vr|fnC`>J~8v&Cko(;yQZa#vH%Ua-@d zIX`W0Tdl0Xfvb8)*qD%JJi;^mhH@H0M2}VKGRnZJYzd|RYo5=DDb_ZHFqC|AiWk4A zl0PwrUS64O36m;w5yU*79!rbHp$M38Pbtl}f3hEx)`@UQs*cnUaJ|Mms)O?VfxC&+3u4h8R})iIw;;%!Y744Q5cNW}Yi2|Qdi{_HbxRBMqZk+Dd~S{F zZ)T&Dpr882+OExJ#_xp+&C!mr5?rb*ZZS{m(;ur32wo5?5F&Q27XC;kji|(5n$y@m z5qEhIH@w#}7RYhvi9=Z(wy6I(wcllHb>0m(LIGM!f7shAb8~2QiuF>iLrG7aaY%S6CQskw`bo1(&~ZDk@cZZVpmB=B={d9od`Wy=PsV z*)UZ7**;R+*|`9^i+JmPPxL9V@*iY>vUQZH!Q$`kmXNFUStg~OnaUw&fkS_7>E?}+ zTkMpM*R~@hhJ!oJJK3B~YjP1vwG|TM-NnPMQnwp}y`Ri=BtM_7j(D=eBeN*z<$(S* z)8WSgs6+OWIIIkj9Qa18UR6=}Gh1z7Re61=ADrdSvY9jCF zG>qEK9fW)rW{4yU9*J{}j>+;PhfXb8A9pWHjDAGzC;MZK$yJfs$lV8h-Q|Y^Cbs94 zbJ8sHV^!(4p_RF|;q^xU?8^J7<@hno^YW=8sVZ?F;Z%`@_uzilh}mplI))Wx?&aj(np*GP8ePkpVp8d|-jXH;a5@y1(m+teg$ zRv)rldp4o9jg#yNj-PHfUfxbXD&ATtrqo!LSq2lyxGc|?DwFG-tCf0`O?@2ovzexb z5J60>VCmiu#g_T$u~dx0%o&5-AStOO6US@3p&{i9)7(f!JIxA}^ziPA6dnnsM7nch zgdMmno5IDa1Bc^>1IzFeUUVmd+*I|OXtM(}MWWtomvZ{7##KN;1Fw=!v1gzn`V{M# zP#*WRn;tqKA~hdfKS)pSnA{!c6I=exLU6`$OK8=b2?{2Y>uuLyP0<{?U==^R4*69J zhS`1_cUcTgnpK_5_9!>x9zwGc*$JboGOG z`upT3aA$wc;~sAbnfa{Wj1JzY=((OJdtyx@nfNt>lxf-X($lAtUT}}3$`>#W)vVc` z-Ml$hx9>k{?aj6*fL&{aM{Se^K>SSZ2gZvhdMWNJmeI z+&gBk-#3Gr)53Fjlnu>&rI@5@2f?5>=06i+GY8<}cV7A{o7{NzrJl3l)v7WE`r>?R zoJPMm_T^*!zHn5rG(>I;`}(r-ijiFYU}pTgpLPGOz8ROx;#Uj+UflS`(%+EpAT$&g zER!ZqC2U;yZlYEZmaVLJlJ^mPSibRlM^_ecQPy%Kf3okA>+s>%nFi|ci_H*@2b)Fm z79qWw09qlVqopt~OvSQnP%kqJIM&B+-2>4QIEzKx6$?}@E zef`pCJZ2g^;*GLGdinaIX%3h%Z5GT8SE_2n`G>>DQVr&AHt-Jm?E`?{OUwwxYiIj9iRi) zMn>)w&D+fjaZ(c`OMlC5hiVnTd&P<~vt5+HHose^i~JZIdEw04*Ajfqk$W~MmCht( zbKnu(NA2(AE4;)WFSwsCxklMt==gg3?ww0lgr8l5rLzO0E39J@G&I3O zxqngqll{jDK6Grp10GIo_qSjTX!cPI75Wj z%VYSrQ+0jh$8Mha?$yo3Z?Y1ulVR}iOJNTh#5)b9@Y##BYu z1$}H$>%RiXGM)woQ7%W2F^u5ulV@I-{WIL#@CL@o|DD|auk(?wVB7ru`rprHcCy2x z`}k4gzfAW*Kl;0O(0WMvFZ0H*1z^1I@1f%V%>4N})1El-*akX*pX%Ep?+3%uFDHTk z`H2u={xhrm_wW9H7!5>~0W>S9Ty{%+rutXDj<=V>)fB3Yb2&r6ZTdChbDA^(YY9{C+^l&<4N%pCaaojmM51KM|t2 zXm@4TSU0T9@~BGao7)y@#YTb^H_u{Ytxjr~Vj`v@Y0u2DTZ~IoNiN+-d@)y z>GNIuL*k~oPuo}8YDC1!x8^hq03$@@fBR;m4rca;>nw?B2AoVgA3Z`ILK_fr07BNb zP@sFH$MzP_m5&S&d=}6^bNF~fhAKV3SEYu#;Hkgw_G$b>oafTIrriu`E;`z zIP(vQ6f5vO9(8`(bwPwgmg=dvFk4iyO9kaL?pU zJiJ<{!eL2WCUk%4gqvf}IpW@UJWXew(_P}a!kwTM$(O&M|M%t2q*&nX7)PGG5+yq~ z<(wrKqrsx_&Z}h_>u5F0GnFv5X&hg|;{Kz~`={#x7 zhN!6=Dp1|<^t5%d+7IcxhX&jjVV6L!e2prK4BBRK^vi6xMuoRZ!OSo75rWt*$)hVG zhTv$n^ChkePsbwXZ2~e++%J!w4S^{NC4xz5rVM2kD3T!U(HZswV1=qc9ad*4(TO!~ zI2^10pYJQk-wl^4B%x3}*BdNso&)S0t@qcPglK|+u1&@&CblcX(68t&0%a`ra5v@5 z8D3c#ANjfBq`P!@6a9!5uCrZjTU*vRx1Q{Cp;PPXIa)C| zW0u%sYS(_&Ej_DJUUt*5d$4xDBaLe5F9FfqSr7HP*GTkVhCe)I3Yhi_tIvWf`} zKKF6yE^1z$A_z zo;dUO3EN=v*H4Rm^BIvj?w7Rp9+_2&$;!%C8CQ;wS0;{ze?5CNrmFZ8_7$8@$|S?0 zT{DR%qi?6narsL@x8hWdw0}wZjr^YQ1KV~8PSEfF6Z6g-zxeYryOia&oHEgUTbPIQ zzFtp)-OQp#G6Gii@ER7ybQxApPPB@O%F4$_7u_8_RUAN(axpcHudE}B{CZ-%+ll{s zq55WmR_!@~k64k$v*&F0KduDRF>IKF0&}4jvACfRBqaH-2DN2>gX)xPD+_D@)ay*} zN}k@U*vuJ}SQ3jap3cb}aW$!;cx4Zg7Xr|_~Kawf7D{ptT5$5vLN4oo>#NB?a$XV3(umOGOJ8Q6? zaf;{fnNe_fk+I^ID)SV}&b*<#d(CoAzrGm4$fBTp4Wo_eMNrh>F2%kuP?TH|z4CDT z{=E0*WT02x=67WYHx9iwFQ$UFCXOm+e@VD2_U^XY->dAq8RGT-{@V9S1pII0>pzo! z|HBZ}|BoNigF18|aC>fonB_%gN#~$Tx8EoM_yk?)v0fCg+y+BobZ0qs{wkPDo&FvT)=|YDs{5Nn(`Rt0nbMY zksbl&n=;_tTkWRx_-4iT`|-79mIlPRoYU9#HunP7L_4c4|qOk!Af|(fBa+{8iF9+&J3Wr=s zs3X9|%qL8kdU|@^0MN;x>4<%qS>VmJN&giaz@Hw0@i6=Bsa|pv&;bodHy%$mlek?^ z$(cwDX@C${rcA?vrKGj= zE`o$uoP=fskFk}hxqa!xxs?mh2)`#X^#za&Ss012N~s-FE!&g6b^xJ20&16<;-Cmr zS^=hK+`+M;^~@ajLCY?~Zd1&du0F^Tg#@}Gq84{86hV|v*ibJwHy5@(n_|Fa9fFC( zrl�lib4kJ~N-)@RJM-HUVh>&b~3qsE^SM0Xg|-$D! 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, consult the :ref:`FAQs `, or head back to the `main page <..>`_. diff --git a/pipelines/match_injected_tract_catalog.yaml b/pipelines/match_injected_tract_catalog.yaml new file mode 100644 index 0000000..d6a1003 --- /dev/null +++ b/pipelines/match_injected_tract_catalog.yaml @@ -0,0 +1,36 @@ +description: Match tract-level injected_deepCoadd_catalog datasets to injected_objectTable_tract datasets. +tasks: + consolidate_injected_catalogs: + class: lsst.source.injection.utils.consolidate_injected_deepCoadd_catalogs.ConsolidateInjectedCatalogsTask + match_object_to_truth: + class: lsst.pipe.tasks.match_tract_catalog.MatchTractCatalogTask + config: + connections.name_input_cat_ref: injected_deepCoadd_catalog_tract + connections.name_input_cat_target: injected_objectTable_tract + match_tract_catalog.column_ref_order: "i_mag" + match_tract_catalog.columns_ref_meas: ["ra", "dec"] + match_tract_catalog.columns_target_meas: ["coord_ra", "coord_dec"] + match_tract_catalog.columns_target_err: ["coord_raErr", "coord_decErr"] + match_tract_catalog.columns_ref_copy: ["injected_id", "source_type"] + match_tract_catalog.columns_target_copy: ["objectId"] + match_tract_catalog.columns_ref_select_true: ["injected_isPatchInner"] + match_tract_catalog.columns_ref_select_false: ["injection_flag"] + match_tract_catalog.columns_target_select_true: ["detect_isPatchInner", "detect_isDeblendedSource"] + match_tract_catalog.columns_target_select_false: ["merge_peak_sky"] + match_tract_catalog.match_n_finite_min: 2 + match_tract_catalog.order_ascending: true + python: | + # Target settings are likely common to all object tables + from lsst.pipe.tasks.match_tract_catalog_probabilistic import MatchTractCatalogProbabilisticTask + config.match_tract_catalog.retarget(MatchTractCatalogProbabilisticTask) + compare_object_to_truth: + class: lsst.pipe.tasks.diff_matched_tract_catalog.DiffMatchedTractCatalogTask + config: + connections.name_input_cat_ref: injected_deepCoadd_catalog_tract + connections.name_input_cat_target: injected_objectTable_tract + column_ref_extended: source_type + columns_ref_copy: ["g_mag", "r_mag", "i_mag", "z_mag", "y_mag"] + columns_target_coord_err: ["coord_raErr", "coord_decErr"] + columns_target_copy: ["patch", "refExtendedness"] + include_unmatched: true + output_statistics: false From c4e31c4e28c3891ab07346c10bb64a66b2c39721 Mon Sep 17 00:00:00 2001 From: taranu Date: Fri, 26 Apr 2024 18:28:13 -0700 Subject: [PATCH 2/4] Add more columns to matched table output --- pipelines/match_injected_tract_catalog.yaml | 25 ++++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/pipelines/match_injected_tract_catalog.yaml b/pipelines/match_injected_tract_catalog.yaml index d6a1003..49a9ccc 100644 --- a/pipelines/match_injected_tract_catalog.yaml +++ b/pipelines/match_injected_tract_catalog.yaml @@ -7,7 +7,7 @@ tasks: config: connections.name_input_cat_ref: injected_deepCoadd_catalog_tract connections.name_input_cat_target: injected_objectTable_tract - match_tract_catalog.column_ref_order: "i_mag" + match_tract_catalog.column_ref_order: i_mag match_tract_catalog.columns_ref_meas: ["ra", "dec"] match_tract_catalog.columns_target_meas: ["coord_ra", "coord_dec"] match_tract_catalog.columns_target_err: ["coord_raErr", "coord_decErr"] @@ -15,13 +15,13 @@ tasks: match_tract_catalog.columns_target_copy: ["objectId"] match_tract_catalog.columns_ref_select_true: ["injected_isPatchInner"] match_tract_catalog.columns_ref_select_false: ["injection_flag"] - match_tract_catalog.columns_target_select_true: ["detect_isPatchInner", "detect_isDeblendedSource"] + match_tract_catalog.columns_target_select_true: ["detect_isDeblendedSource", "detect_isPatchInner"] match_tract_catalog.columns_target_select_false: ["merge_peak_sky"] match_tract_catalog.match_n_finite_min: 2 match_tract_catalog.order_ascending: true python: | - # Target settings are likely common to all object tables from lsst.pipe.tasks.match_tract_catalog_probabilistic import MatchTractCatalogProbabilisticTask + config.match_tract_catalog.retarget(MatchTractCatalogProbabilisticTask) compare_object_to_truth: class: lsst.pipe.tasks.diff_matched_tract_catalog.DiffMatchedTractCatalogTask @@ -29,8 +29,21 @@ tasks: connections.name_input_cat_ref: injected_deepCoadd_catalog_tract connections.name_input_cat_target: injected_objectTable_tract column_ref_extended: source_type - columns_ref_copy: ["g_mag", "r_mag", "i_mag", "z_mag", "y_mag"] + # TODO: Remove as part of DM-44139 + columns_ref_mag_to_nJy: { + g_mag: "g_flux", r_mag: "r_flux", i_mag: "i_flux", z_mag: "z_flux", y_mag: "y_flux", + } + columns_ref_copy: [ + "injected_id", + "g_mag", "r_mag", "i_mag", "z_mag", "y_mag", + "injection_flag", "injected_isPatchInner", + ] columns_target_coord_err: ["coord_raErr", "coord_decErr"] - columns_target_copy: ["patch", "refExtendedness"] + columns_target_copy: [ + "g_psfFlux", "r_psfFlux", "i_psfFlux", "z_psfFlux", "y_psfFlux", + "g_psfFluxErr", "r_psfFluxErr", "i_psfFluxErr", "z_psfFluxErr", "y_psfFluxErr", + "g_psfFlux_flag", "r_psfFlux_flag", "i_psfFlux_flag", "z_psfFlux_flag", "y_psfFlux_flag", + "patch", "detect_isDeblendedSource", "detect_isPatchInner", "detect_isPrimary", "merge_peak_sky", + "refSizeExtendedness", + ] include_unmatched: true - output_statistics: false From d1f6059a64ddb0b25617b7604908087d130afd30 Mon Sep 17 00:00:00 2001 From: taranu Date: Fri, 26 Apr 2024 20:57:29 -0700 Subject: [PATCH 3/4] Update pre-commit config --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fae595d..322f32e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,19 +1,19 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 24.3.0 + rev: 24.4.2 hooks: - id: black # It is recommended to specify the latest version of Python # supported by your project here, or alternatively use # pre-commit's default_language_version, see # https://pre-commit.com/#top_level-default_language_version - language_version: python3.10 + language_version: python3.11 - repo: https://github.com/PyCQA/isort rev: 5.13.2 hooks: From ec2e8b3befc844abdc9ec03b07af290f034441a2 Mon Sep 17 00:00:00 2001 From: taranu Date: Wed, 1 May 2024 12:50:26 -0700 Subject: [PATCH 4/4] Change reference object prefix to ref_ --- .../reference/41_match_injected_outputs.rst | 58 ++++++++++--------- pipelines/match_injected_tract_catalog.yaml | 1 + 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/doc/lsst.source.injection/reference/41_match_injected_outputs.rst b/doc/lsst.source.injection/reference/41_match_injected_outputs.rst index 8109765..1658420 100644 --- a/doc/lsst.source.injection/reference/41_match_injected_outputs.rst +++ b/doc/lsst.source.injection/reference/41_match_injected_outputs.rst @@ -47,28 +47,32 @@ Matching ======== Now that we have our consolidated tract-level injected catalog and a reference tract-level standard catalog, we can move on to matching these two sets of catalogs together. -.. TODO: add info for match_object_to_truth and compare_object_to_truth + The matching tasks are ``MatchTractCatalogTask`` and ``DiffMatchedTractCatalogTask``. The first task performs a spatial probablistic match with minimal flag cuts, and the second computes any relevant statistics. -These tasks are located under ``pipelines/match_injected_tract_catalog.yaml#match_object_to_truth,compare_object_to_truth`` alongside ``ConsolidateInjectedCatalogsTask``. +These tasks are located in the ``pipelines/match_injected_tract_catalog.yaml`` pipeline definition file, with the labels ``match_object_to_truth`` and ``compare_object_to_truth``. The pipeline graph for the consolidation and matching process is shown below: - ○ injected_deepCoadd_catalog - │ - ○ │ skyMap - ├─┤ - │ ■ consolidate_injected_catalogs - │ │ - │ ○ injected_deepCoadd_catalog_tract - │ │ - ○ │ │ injected_objectTable_tract -╭─┼─┼─┤ -■ │ │ │ match_object_to_truth -│ │ │ │ -◍ │ │ │ match_target_injected_deepCoadd_catalog_tract_injected_objectTable_tract, match_ref_injected_deepCoadd_catalog_tract_injected_objectTable_tract -╰─┴─┴─┤ - ■ compare_object_to_truth - │ - ○ matched_injected_deepCoadd_catalog_tract_injected_objectTable_tract + +.. code:: + + ○ injected_deepCoadd_catalog + │ + ○ │ skyMap + ├─┤ + │ ■ consolidate_injected_catalogs + │ │ + │ ○ injected_deepCoadd_catalog_tract + │ │ + ○ │ │ injected_objectTable_tract + ╭─┼─┼─┤ + ■ │ │ │ match_object_to_truth + │ │ │ │ + ◍ │ │ │ match_target_injected_deepCoadd_catalog_tract_injected_objectTable_tract, match_ref_injected_deepCoadd_catalog_tract_injected_objectTable_tract + ╰─┴─┴─┤ + ■ compare_object_to_truth + │ + ○ matched_injected_deepCoadd_catalog_tract_injected_objectTable_tract + Matching two tract-level catalogs can be done trivially with a ``pipetask run`` command as below: .. code:: @@ -98,7 +102,7 @@ Matching two tract-level catalogs can be done trivially with a ``pipetask run`` Within ``pipelines/match_injected_tract_catalog.yaml`` there are various config options for pre-matching flag selections, columns to copy from the reference and target catalogs, etc. -Vizualize the matched catalog and compute metrics +Visualize the matched catalog and compute metrics ================================================= One metric to determine the quality of an injection run is completeness, or the ratio of matched sources to injected sources. @@ -107,6 +111,7 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. .. code-block:: python from lsst.daf.butler import Butler + import astropy.units as u import matplotlib.pyplot as plt import numpy as np @@ -123,7 +128,8 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. # Make a completeness plot. band="i" - mag = f"refcat_{band}_mag" + flux = f"ref_{band}_flux" + mags = ((data[flux] * u.nJy).to(u.ABmag)).value fig, axLeft = plt.subplots() axRight = axLeft.twinx() axLeft.tick_params(axis="y", labelcolor="C0") @@ -131,8 +137,8 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. axLeft.set_xlabel("PSF Magnitude (mag)") axRight.set_ylabel("Number of Sources") nInput, bins, _ = axRight.hist( - data[mag], - range=(np.nanmin(data[mag]), np.nanmax(data[mag])), + mags, + range=(np.nanmin(mags), np.nanmax(mags)), bins=121, log=True, histtype="step", @@ -140,8 +146,8 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. color="black", ) nOutput, _, _ = axRight.hist( - data[mag][matched], - range=(np.nanmin(data[mag][matched]), np.nanmax(data[mag][matched])), + mags[matched], + range=(np.nanmin(mags[matched]), np.nanmax(mags[matched])), bins=bins, log=True, histtype="step", @@ -149,7 +155,6 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. color="grey", ) xlims = plt.gca().get_xlim() - # Find bin where the fraction recovered first falls below 0.5 lessThanHalf = np.where((nOutput / nInput < 0.5))[0] if len(lessThanHalf) == 0: @@ -170,7 +175,6 @@ The following is an example of a completeness plot using ``matplotlib.pyplot``. alpha=0.5, zorder=10, ) - # Add useful information to the plot. bboxDict = dict(boxstyle="round", facecolor="white", alpha=0.75) info50 = "Magnitude at 50% recovered: {:0.2f}".format(mag50) axLeft.text(0.3, 0.15, info50, transform=fig.transFigure, bbox=bboxDict, zorder=11) diff --git a/pipelines/match_injected_tract_catalog.yaml b/pipelines/match_injected_tract_catalog.yaml index 49a9ccc..2545bf2 100644 --- a/pipelines/match_injected_tract_catalog.yaml +++ b/pipelines/match_injected_tract_catalog.yaml @@ -28,6 +28,7 @@ tasks: config: connections.name_input_cat_ref: injected_deepCoadd_catalog_tract connections.name_input_cat_target: injected_objectTable_tract + column_matched_prefix_ref: "ref_" column_ref_extended: source_type # TODO: Remove as part of DM-44139 columns_ref_mag_to_nJy: {