From d386916869603572c32568dbf1fcd6fb5e9704c1 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Tue, 22 Jul 2025 15:26:37 +0200 Subject: [PATCH 01/48] Create tutorial.md I copied the tutorial from Voronoi segmentation and started modifiying --- .../astronomy-source-extractor/tutorial.md | 363 ++++++++++++++++++ 1 file changed, 363 insertions(+) create mode 100644 topics/imaging/tutorials/astronomy-source-extractor/tutorial.md diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md new file mode 100644 index 00000000000000..047120081a3a0f --- /dev/null +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -0,0 +1,363 @@ +--- +layout: tutorial_hands_on + +title: Astronomy Source extractor +questions: + - How do I partition an image into regions based on which object they are nearest to (Voronoi segmentation)? + - How should images be preprocessed before applying Voronoi segmentation? + - How can I overlay two images? + - How can Voronoi segmentation be used to analyze spatial relationships? + - How can extracted image properties be used to categorize identified objects? +objectives: + - How to perform Voronoi Segmentation in Galaxy. + - How to extract a single channel from an image. + - How to overlay two images. + - How to count objectives in a layer map. +time_estimation: 1H +key_points: +- Voronoi segmentation is a simple algorithm, chosen to give a starting point for working with image segmentation. +- This tutorial exemplifies how a Galaxy workflow can be applied to data from several different domains. +requirements: + - + type: "internal" + topic_name: imaging + tutorials: + - imaging-introduction + +contributions: + authorship: + - Andrei-EPFL + funding: + - fiesta + - oscars +tags: +- imageanalysis +- astronomy + +--- + +In astronomy and large-scale sky surveys, a key objective is to identify individual celestial bodies—such as stars and galaxies—in sky images to enable further detailed scientific analysis. For example, DESI Legacy Survey have "photographed" a third of the sky, whereas DESI is measuring spectra of individual galaxies selected from all the photometrically detected targets. +The Galaxy source-extractor tool is based on SEP which is a Python library built from the core routines of SExtractor (Source Extractor), which is widely used in astronomy for detecting and measuring sources in astronomical images. + +In order to detect sources, the background must be estimated and then all groups of pixels with a minimum area of +```markdown +minarea = 5 (default value of the number of pixels) +``` + with a flux larger than an absolute threshold at a pixel (j,i): +```markdown +thresh * err[j,i] +``` +are selected as sources, where +```markdown +thresh = 1.5 +err_option = float_globalrms +``` +i.e. by default the error is the global RMS of the background. + +In case +```markdown +err_option = none +``` +the value of ```thresh``` is use directly as an absolute threshold. + +This tutorial will explain the data requirements for the tool, the main tool parameters and the output products of the tool. For more detailed instructions one can consult: https://sep.readthedocs.io/en/v1.0.x/index.html, https://ui.adsabs.harvard.edu/abs/1996A%26AS..117..393B/abstract and https://www.astromatic.net/software/sextractor/ . + +### Application to bioimage analysis + + +### Application to Earth Observation + + +### Application to Astronomy + +![Sky image](../../images/voronoi-segmentation/sky_image_IMAGE.png "Sky image.") + +![Segmented sky image](../../images/voronoi-segmentation/sky_image_OVERLAY_VORONOI.png "Segmented sky image.") + +Thes original image is published by [Legacy Surveys / D. Lang (Perimeter Institute)](https://www.legacysurvey.org/acknowledgment/) and can be downloaded from the [official website](https://www.legacysurvey.org/viewer/jpeg-cutout?ra=53.16216667&dec=-27.79149167&layer=ls-dr10&pixscale=0.262&size=1200). The Legacy Surveys are described in {% cite legacy-survey-astronomy %}. + +> +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + + +## Data requirements +Source-extractor requires one single image. For astronomy, this is a sky-image with luminous sources. Nonetheless, two other files could provided as well: a mask and a filter. Masking is an important process in astronomy, since very bright stars strongly influence the estimation of the background. Therefore, astronomers create geometric masks to remove the pixels affected by bright stars. + +Lastly, the filter is used to smooth out the image to help improve the detection of faint, extended objects, but may not be helpful very crowded data. The ```Filter Case``` tool parameter sets whether the filter file is needed or not. + + +**Image:** +- Preferrably lighter objects on a darker background. +- Format: single channel, 2D array, .tiff or .fits. + +**Mask:** +- True values, or numeric values greater than ```maskthresh``` tool parameter, are considered masked. +- Format: single channel, 2D array, .tiff or .fits. + +**Filter kernel:** +- 2D array. +- Format: .txt, readable by +```python +import numpy +numpy.loadtxt(filter_file) +``` +The default kernel is: +```markdown +1 2 1 +2 4 2 +1 2 1 +``` +and can be stored as shown in a text file. + +> Checking the metadata of an image +> Tip: You can use the tool {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to extract metadata from your image. The image metadata should have "SizeC = 3". It should not say "SizeC = 3 (effectively 1)", because that means that your image is stored in interleaved, not planar format. +{: .comment} + + +## Getting data from Zenodo +> Data Upload +> +> 1. Create a new history for this tutorial. When you log in for the first time, an empty, unnamed history is created by default. You can simply rename it. +> +> {% snippet faqs/galaxy/histories_create_new.md %} +> +> 2. Import {% icon galaxy-upload %} the following dataset from [Zenodo](https://zenodo.org/records/15172302). +> +> ``` +> https://zenodo.org/records/15281843/files/images_and_seeds.zip +> https://zenodo.org/records/15424465/files/image_and_seed.zip +> ``` +> +> - **Important:** Choose the type of data as `zip`. +> +> The upload might take a few minutes. +> +> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> +> 3. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} the image with the following parameters: +> - {% icon param-file %} *"input_file"*: `images_and_seeds.zip` +> - *"Extract single file"*: `Single file` +> - *"Filepath"*: Choose which data you want to use: +> - Cells: `images_and_seeds/cell_image-B2--W00026--P00001--Z00000--T00000--dapi.tiff` +> - Trees: `images_and_seeds/tree_image_2019_DELA_5_423000_3601000.tiff` +> - Galaxies: `sky_image_IMAGE.png` +> +> 4. Rename {% icon galaxy-pencil %} the resulting file as `image`. +> +> 5. Check that the datatype is correct. +> +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="datatypes" %} +> +> 6. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} the seed with the following parameters: +> - {% icon param-file %} *"input_file"*: `images_and_seeds.zip` +> - *"Extract single file"*: `Single file` +> - *"Filepath"*: Choose the seed image corresponding to the image you chose in the last step. +> - Cells: `images_and_seeds/cell_seeds-B2--W00026--P00001--Z00000--T00000--dapi.tiff` +> - Trees: `images_and_seeds/tree_seeds_2019_DELA_5_423000_3601000.tiff` +> - Galaxies: `sky_image_SEED.png` +> +> 7. Rename {% icon galaxy-pencil %} the resulting file as `seeds`. +{: .hands_on} + + +## Generate an object mask from pixel intensity +In case there should be empty regions without cells in the image, we wish to constrain the single Voronoi regions to roughly the area where a cell is. +Therefore, we first smooth the image to reduce the influence of noise, and then apply a threshold on the smoothed image to get a binary mask. +> Mask vs seeds +> The process used to create a mask can also be used to make seeds, as in the +> [Imaging introduction tutorial]({% link topics/imaging/tutorials/imaging-introduction/tutorial.md %}). +{: .comment} + +> Task description +> The image has three channels (red, green, blue). To generate a mask, we have to select a channel, for instance channel `0`. +> 1. {% tool [Convert image format](toolshed.g2.bx.psu.edu/repos/imgteam/bfconvert/ip_convertimage/6.7.0+galaxy3) %} with the following parameters: +> - {% icon param-file %} *"Input Image"*: `image` +> - *"Extract series"*: `All series` +> - *"Extract timepoint"*: `All timepoints` +> - *"Extract channel"*: `Extract channel` +> - *"Channel id"* `0` +> - *"Extract z-slice"*: `All z-slices` +> - *"Extract range"*: `All images` +> - *"Extract crop"*: `Full image` +> - *"Tile image"*: `No tiling` +> - *"Pyramid image"*: `No Pyramid` +> +> 2. Rename the output to `single channel image` +> +> +> 3. {% tool [Filter 2-D image](toolshed.g2.bx.psu.edu/repos/imgteam/2d_simple_filter/ip_filter_standard/1.12.0+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Input Image"*: `single channel image` +> - *"Filter type"*: `Gaussian` +> - *"Sigma"*: `3` +> +> 4. Rename the output to `smoothed image`. +> +> +> 5. {% tool [Threshold image](toolshed.g2.bx.psu.edu/repos/imgteam/2d_auto_threshold/ip_threshold/0.18.1+galaxy3) %} with the following parameters: +> - {% icon param-file %} *"Input Image"*: `smoothed image` +> - *"Thresholding method"*: `Manual` +> - *"Threshold value"*: `3.0`. Note: This threshold value works well for the cell image, where the background has a very low intensity. For images with a brighter background, the threshold value will need to be adjusted. +> +> 6. Rename the output to `mask`. +> +{: .hands_on} + +> How many channels does my image have? +> Note: If providing your own image, you can check how many channels your image has with the {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} tool. +> The number of channels is listed as, e.g., `SizeC = 3` for the cell image or `SizeC = 3 (effectively 1)` for the tree image. +{: .comment} + +> The value of "Sigma" and the "Threshold value" +> Note: Generating a robust mask is harder for images with more noise. +> Since the tree image has more noise than the cell image, you may have to adjust the value of *"Sigma"* to achieve better results. +> You may also have to adjust the *"Threshold value"* in the last step. +{: .comment} + + +> +> +> What is the purpose of the smoothing step? +> +> > +> > +> > The purpose of smoothing is to reduce noise. +> > For seed generation, noise might lead to false seeds where there is no object. +> > Smoothing also promotes connectedness within an object, where noise might make an object appear as two separate objects. +> > For mask generation, the same principles apply. +> > +> {: .solution} +> +{: .question} + + +## Perform Voronoi segmentation based on the seeds +> Task description +> We need to assign a unique label to each object in the seed image: +> 1. {% tool [Convert binary image to label map](toolshed.g2.bx.psu.edu/repos/imgteam/binary2labelimage/ip_binary_to_labelimage/0.5+galaxy0) %} with the following parameters: +> - {% icon param-file %} *"Binary Image"*: `seeds` +> - *"Mode"*: `Connected component analysis` +> +> 2. Rename the output to `label map`. +> +> 1. {% tool [Compute Voronoi tessellation](toolshed.g2.bx.psu.edu/repos/imgteam/voronoi_tesselation/voronoi_tessellation/0.22.0+galaxy3) %}. We use the label map to perform Voronoi segmentation. +> - {% icon param-file %} *"Input Image"*: `label map` +> +> 2. Rename the output to `tessellation`. +> +{: .hands_on} + +> +> +> How does the size of the seeds influence the Voronoi segmentation? +> +> > +> > +> > A Voronoi segmentation partition a plane into regions based on [proximity to each member of a given set of objects](https://en.wikipedia.org/wiki/Voronoi_diagram). The algorithm is the same irregardless of whether the seeds are single points or objects with a spatial extent, but the size of the seeds will certainly alter the segmentation in some way. +> > +> {: .solution} +> +{: .question} + +## Apply the mask and visualize the segmentation +A Voronoi tessellation segments an image into non-overlapping segments that cover the entire image. +This makes sure that segments do not overlap, but empty spaces between objects will be counted as part of the segment belonging to the nearest item. +A more accurate segmentation can be achieved by using the mask to reduce the size of the Voronoi segments. +This can be achieved with the following operation. +> Task description +> Combine the tessellation with the seeds and the mask to generate a segmentation that limits the expanse of each segment: +> 1. {% tool [Process images using arithmetic expressions](toolshed.g2.bx.psu.edu/repos/imgteam/image_math/image_math/1.26.4+galaxy2) %} with the following parameters: +> - *"Expression"*: `tessellation * (mask / 255) * (1 - seeds / 255)` +> - In *"Input images"*: +> - {% icon param-repeat %} *"Insert Input images"* +> - {% icon param-file %} *"Input Image"*: `tessellation` +> - *"Variable for representation of the image within the expression"*: `tessellation` +> - {% icon param-repeat %} *"Insert Input images"* +> - {% icon param-file %} *"Input Image"*: `seeds` +> - *"Variable for representation of the image within the expression"*: `seeds` +> - {% icon param-repeat %} *"Insert Input images"* +> - {% icon param-file %} *"Input Image"*: `mask` +> - *"Variable for representation of the image within the expression"*: `mask` +> +> 2. Rename the output to `masked segmentation`. +> +> 3. {% tool [Colorize label map](toolshed.g2.bx.psu.edu/repos/imgteam/colorize_labels/colorize_labels/3.2.1+galaxy3) %}. +> - {% icon param-file %} *"Input Image"*: `masked segmentation` +> - *"Radius of the neighborhood"*: `10` (works well for the cell image; may need adjustment for the tree image) +> - *"Background label"*: `0` +> +> 4. Rename the output to `colorized label map` +> +> 5. {% tool [Convert single-channel to multi-channel image](toolshed.g2.bx.psu.edu/repos/imgteam/repeat_channels/repeat_channels/1.26.4+galaxy0) %} with: +> - {% icon param-file %} *"Input Image"*: `single channel image` +> - *"Number of channels"*: `3` +> +> 6. Rename the output to `multi channel image` +> +> 7. {% tool [Overlay images](toolshed.g2.bx.psu.edu/repos/imgteam/overlay_images/ip_overlay_images/0.0.4+galaxy4) %} with the following parameters to overlay the Voronoi segmentation on the original image: +> - *"Type of the overlay"*: `Linear blending` +> - {% icon param-file %} *"Image 1"*: `multi channel image` +> - {% icon param-file %} *"Image 2"*: `colorized label map` +> - *"Weight for blending"*: `0.5` +> +{: .hands_on} + + +## Count objects and extract image features +> Task description +> 1. {% tool [Count objects in label map](toolshed.g2.bx.psu.edu/repos/imgteam/count_objects/ip_count_objects/0.0.5-2) %}. +> - {% icon param-file %} *"Input Image"*: `tessellation` +> +> 1. {% tool [Extract image features](toolshed.g2.bx.psu.edu/repos/imgteam/2d_feature_extraction/ip_2d_feature_extraction/0.18.1+galaxy0) %} with the following parameters: +> - {% icon param-file %} *"Label map"*: `tessellation` +> - *"Use the intensity image to compute additional features"*: `Use intensity image` +> - {% icon param-file %} *"Intensity Image"*: `single channel image` +> - *"Select features to compute"*: `Select features` +> - *"Available features"*: +> - {% icon param-check %} `Label from the label map` +> - {% icon param-check %} `Max Intensity` +> - {% icon param-check %} `Mean Intensity` +> - {% icon param-check %} `Minimum Intensity` +> - {% icon param-check %} `Area` +> - {% icon param-check %} `Major axis length` +> - {% icon param-check %} `Minor axis length` +> +{: .hands_on} + + +In this last step, we compute the max, min and mean intensity for each image segment, as well as the area and the major and minor axis lengths. +Depending on the use case, the distribution of these extracted features could reveal different subgroups in the data. +In this way, the features could be used in to categorize different types of trees, cells, or other items. +We will now use a scatter plot to explore the data. + + +## Visualize segment features with a scatter plot +> Plot feature extraction results +> 1. Click on the **Visualize** {% icon galaxy-barchart %} icon of the {% icon tool %} **Extract image features** output. +> 2. Run **Scatter plot (NVD3)** with the following parameters: +> - *"Provide a title"*: `Segment features` +> - *"X-Axis label"*: `Major axis length` +> - *"Y-Axis label"*: `Minor axis length` +> - *"Column of data point labels"*: `Column 1` +> - *"Values for x-axis"*: `Column 6` +> - *"Values for y-axis"*: `Column 7` +> +> > +> > +> > Plot the major axis lengths together with the minor axis lengths. What do you observe? +> > +> > > +> > > The major and minor axis lengths appear to be positively correlated, which is not surprising. It means that segments with a major axis that is longer than others typically have a longer minor axis too. +> > {: .solution } +> {: .question} +{: .hands_on} + + +# Conclusion +This pipeline performs Voronoi segmentation and can be applied to datasets from any field as long as the input data satisfies the input data criteria. +The steps in this tutorial are also available on Galaxy as a published workflow called [Voronoi segmentation](https://usegalaxy.eu/published/workflow?id=23030421cd9fcfb2). From 35ae11cd9a046ce8350d70fd6eb39692df5ee79a Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:42:16 +0200 Subject: [PATCH 02/48] Update tutorial.md added images --- .../astronomy-source-extractor/tutorial.md | 238 ++---------------- 1 file changed, 14 insertions(+), 224 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 047120081a3a0f..c730f9f63e0edc 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -116,248 +116,38 @@ The default kernel is: and can be stored as shown in a text file. > Checking the metadata of an image -> Tip: You can use the tool {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to extract metadata from your image. The image metadata should have "SizeC = 3". It should not say "SizeC = 3 (effectively 1)", because that means that your image is stored in interleaved, not planar format. +> Tip 1: You can use the tool {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to extract metadata from your ```.tiff``` image. The image metadata should have +> ``` RGB = false (1) Interleaved = false SizeZ = 1 SizeT = 1 SizeC = 1 ```. +> +> Tip 2: You can use the tool {% tool [astropy fitsinfo](toolshed.g2.bx.psu.edu/repos/astroteam/astropy_fitsinfo/astropy_fitsinfo/0.2.0+galaxy2) %} to extract metadata from your ```.fits``` file. The image should have ```Dimensions (N, M) ```, where ```N``` and ```M``` are the number of pixels around the 2D axes. {: .comment} -## Getting data from Zenodo -> Data Upload +## Getting data from {% tool [DESI Legacy Survey](toolshed.g2.bx.psu.edu/repos/astroteam/desi_legacy_survey_astro_tool/desi_legacy_survey_astro_tool/0.0.2+galaxy0) %} +> Data Acquisition > > 1. Create a new history for this tutorial. When you log in for the first time, an empty, unnamed history is created by default. You can simply rename it. > > {% snippet faqs/galaxy/histories_create_new.md %} > -> 2. Import {% icon galaxy-upload %} the following dataset from [Zenodo](https://zenodo.org/records/15172302). +> 2. Run the {% tool [DESI Legacy Survey](toolshed.g2.bx.psu.edu/repos/astroteam/desi_legacy_survey_astro_tool/desi_legacy_survey_astro_tool/0.0.2+galaxy0) %} tool. > > ``` > https://zenodo.org/records/15281843/files/images_and_seeds.zip > https://zenodo.org/records/15424465/files/image_and_seed.zip > ``` > -> - **Important:** Choose the type of data as `zip`. -> -> The upload might take a few minutes. +> - **Important:** Choose the Data Product **Image**. > -> {% snippet faqs/galaxy/datasets_import_via_link.md %} -> -> 3. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} the image with the following parameters: -> - {% icon param-file %} *"input_file"*: `images_and_seeds.zip` -> - *"Extract single file"*: `Single file` -> - *"Filepath"*: Choose which data you want to use: -> - Cells: `images_and_seeds/cell_image-B2--W00026--P00001--Z00000--T00000--dapi.tiff` -> - Trees: `images_and_seeds/tree_image_2019_DELA_5_423000_3601000.tiff` -> - Galaxies: `sky_image_IMAGE.png` -> -> 4. Rename {% icon galaxy-pencil %} the resulting file as `image`. -> -> 5. Check that the datatype is correct. -> -> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="datatypes" %} -> -> 6. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} the seed with the following parameters: -> - {% icon param-file %} *"input_file"*: `images_and_seeds.zip` -> - *"Extract single file"*: `Single file` -> - *"Filepath"*: Choose the seed image corresponding to the image you chose in the last step. -> - Cells: `images_and_seeds/cell_seeds-B2--W00026--P00001--Z00000--T00000--dapi.tiff` -> - Trees: `images_and_seeds/tree_seeds_2019_DELA_5_423000_3601000.tiff` -> - Galaxies: `sky_image_SEED.png` -> -> 7. Rename {% icon galaxy-pencil %} the resulting file as `seeds`. +> The default values are used for this tutorial. +> The history now contains the ```.fits``` file that is used as input for the source-extractor tool. {: .hands_on} -## Generate an object mask from pixel intensity -In case there should be empty regions without cells in the image, we wish to constrain the single Voronoi regions to roughly the area where a cell is. -Therefore, we first smooth the image to reduce the influence of noise, and then apply a threshold on the smoothed image to get a binary mask. -> Mask vs seeds -> The process used to create a mask can also be used to make seeds, as in the -> [Imaging introduction tutorial]({% link topics/imaging/tutorials/imaging-introduction/tutorial.md %}). -{: .comment} +## Run the source-extractor tool -> Task description -> The image has three channels (red, green, blue). To generate a mask, we have to select a channel, for instance channel `0`. -> 1. {% tool [Convert image format](toolshed.g2.bx.psu.edu/repos/imgteam/bfconvert/ip_convertimage/6.7.0+galaxy3) %} with the following parameters: -> - {% icon param-file %} *"Input Image"*: `image` -> - *"Extract series"*: `All series` -> - *"Extract timepoint"*: `All timepoints` -> - *"Extract channel"*: `Extract channel` -> - *"Channel id"* `0` -> - *"Extract z-slice"*: `All z-slices` -> - *"Extract range"*: `All images` -> - *"Extract crop"*: `Full image` -> - *"Tile image"*: `No tiling` -> - *"Pyramid image"*: `No Pyramid` -> -> 2. Rename the output to `single channel image` -> -> -> 3. {% tool [Filter 2-D image](toolshed.g2.bx.psu.edu/repos/imgteam/2d_simple_filter/ip_filter_standard/1.12.0+galaxy1) %} with the following parameters: -> - {% icon param-file %} *"Input Image"*: `single channel image` -> - *"Filter type"*: `Gaussian` -> - *"Sigma"*: `3` -> -> 4. Rename the output to `smoothed image`. -> -> -> 5. {% tool [Threshold image](toolshed.g2.bx.psu.edu/repos/imgteam/2d_auto_threshold/ip_threshold/0.18.1+galaxy3) %} with the following parameters: -> - {% icon param-file %} *"Input Image"*: `smoothed image` -> - *"Thresholding method"*: `Manual` -> - *"Threshold value"*: `3.0`. Note: This threshold value works well for the cell image, where the background has a very low intensity. For images with a brighter background, the threshold value will need to be adjusted. -> -> 6. Rename the output to `mask`. -> -{: .hands_on} - -> How many channels does my image have? -> Note: If providing your own image, you can check how many channels your image has with the {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} tool. -> The number of channels is listed as, e.g., `SizeC = 3` for the cell image or `SizeC = 3 (effectively 1)` for the tree image. -{: .comment} - -> The value of "Sigma" and the "Threshold value" -> Note: Generating a robust mask is harder for images with more noise. -> Since the tree image has more noise than the cell image, you may have to adjust the value of *"Sigma"* to achieve better results. -> You may also have to adjust the *"Threshold value"* in the last step. -{: .comment} - - -> -> -> What is the purpose of the smoothing step? -> -> > -> > -> > The purpose of smoothing is to reduce noise. -> > For seed generation, noise might lead to false seeds where there is no object. -> > Smoothing also promotes connectedness within an object, where noise might make an object appear as two separate objects. -> > For mask generation, the same principles apply. -> > -> {: .solution} -> -{: .question} - - -## Perform Voronoi segmentation based on the seeds -> Task description -> We need to assign a unique label to each object in the seed image: -> 1. {% tool [Convert binary image to label map](toolshed.g2.bx.psu.edu/repos/imgteam/binary2labelimage/ip_binary_to_labelimage/0.5+galaxy0) %} with the following parameters: -> - {% icon param-file %} *"Binary Image"*: `seeds` -> - *"Mode"*: `Connected component analysis` -> -> 2. Rename the output to `label map`. -> -> 1. {% tool [Compute Voronoi tessellation](toolshed.g2.bx.psu.edu/repos/imgteam/voronoi_tesselation/voronoi_tessellation/0.22.0+galaxy3) %}. We use the label map to perform Voronoi segmentation. -> - {% icon param-file %} *"Input Image"*: `label map` -> -> 2. Rename the output to `tessellation`. -> -{: .hands_on} - -> -> -> How does the size of the seeds influence the Voronoi segmentation? -> -> > -> > -> > A Voronoi segmentation partition a plane into regions based on [proximity to each member of a given set of objects](https://en.wikipedia.org/wiki/Voronoi_diagram). The algorithm is the same irregardless of whether the seeds are single points or objects with a spatial extent, but the size of the seeds will certainly alter the segmentation in some way. -> > -> {: .solution} -> -{: .question} - -## Apply the mask and visualize the segmentation -A Voronoi tessellation segments an image into non-overlapping segments that cover the entire image. -This makes sure that segments do not overlap, but empty spaces between objects will be counted as part of the segment belonging to the nearest item. -A more accurate segmentation can be achieved by using the mask to reduce the size of the Voronoi segments. -This can be achieved with the following operation. -> Task description -> Combine the tessellation with the seeds and the mask to generate a segmentation that limits the expanse of each segment: -> 1. {% tool [Process images using arithmetic expressions](toolshed.g2.bx.psu.edu/repos/imgteam/image_math/image_math/1.26.4+galaxy2) %} with the following parameters: -> - *"Expression"*: `tessellation * (mask / 255) * (1 - seeds / 255)` -> - In *"Input images"*: -> - {% icon param-repeat %} *"Insert Input images"* -> - {% icon param-file %} *"Input Image"*: `tessellation` -> - *"Variable for representation of the image within the expression"*: `tessellation` -> - {% icon param-repeat %} *"Insert Input images"* -> - {% icon param-file %} *"Input Image"*: `seeds` -> - *"Variable for representation of the image within the expression"*: `seeds` -> - {% icon param-repeat %} *"Insert Input images"* -> - {% icon param-file %} *"Input Image"*: `mask` -> - *"Variable for representation of the image within the expression"*: `mask` -> -> 2. Rename the output to `masked segmentation`. -> -> 3. {% tool [Colorize label map](toolshed.g2.bx.psu.edu/repos/imgteam/colorize_labels/colorize_labels/3.2.1+galaxy3) %}. -> - {% icon param-file %} *"Input Image"*: `masked segmentation` -> - *"Radius of the neighborhood"*: `10` (works well for the cell image; may need adjustment for the tree image) -> - *"Background label"*: `0` -> -> 4. Rename the output to `colorized label map` -> -> 5. {% tool [Convert single-channel to multi-channel image](toolshed.g2.bx.psu.edu/repos/imgteam/repeat_channels/repeat_channels/1.26.4+galaxy0) %} with: -> - {% icon param-file %} *"Input Image"*: `single channel image` -> - *"Number of channels"*: `3` -> -> 6. Rename the output to `multi channel image` -> -> 7. {% tool [Overlay images](toolshed.g2.bx.psu.edu/repos/imgteam/overlay_images/ip_overlay_images/0.0.4+galaxy4) %} with the following parameters to overlay the Voronoi segmentation on the original image: -> - *"Type of the overlay"*: `Linear blending` -> - {% icon param-file %} *"Image 1"*: `multi channel image` -> - {% icon param-file %} *"Image 2"*: `colorized label map` -> - *"Weight for blending"*: `0.5` -> -{: .hands_on} - - -## Count objects and extract image features -> Task description -> 1. {% tool [Count objects in label map](toolshed.g2.bx.psu.edu/repos/imgteam/count_objects/ip_count_objects/0.0.5-2) %}. -> - {% icon param-file %} *"Input Image"*: `tessellation` -> -> 1. {% tool [Extract image features](toolshed.g2.bx.psu.edu/repos/imgteam/2d_feature_extraction/ip_2d_feature_extraction/0.18.1+galaxy0) %} with the following parameters: -> - {% icon param-file %} *"Label map"*: `tessellation` -> - *"Use the intensity image to compute additional features"*: `Use intensity image` -> - {% icon param-file %} *"Intensity Image"*: `single channel image` -> - *"Select features to compute"*: `Select features` -> - *"Available features"*: -> - {% icon param-check %} `Label from the label map` -> - {% icon param-check %} `Max Intensity` -> - {% icon param-check %} `Mean Intensity` -> - {% icon param-check %} `Minimum Intensity` -> - {% icon param-check %} `Area` -> - {% icon param-check %} `Major axis length` -> - {% icon param-check %} `Minor axis length` -> -{: .hands_on} - - -In this last step, we compute the max, min and mean intensity for each image segment, as well as the area and the major and minor axis lengths. -Depending on the use case, the distribution of these extracted features could reveal different subgroups in the data. -In this way, the features could be used in to categorize different types of trees, cells, or other items. -We will now use a scatter plot to explore the data. - - -## Visualize segment features with a scatter plot -> Plot feature extraction results -> 1. Click on the **Visualize** {% icon galaxy-barchart %} icon of the {% icon tool %} **Extract image features** output. -> 2. Run **Scatter plot (NVD3)** with the following parameters: -> - *"Provide a title"*: `Segment features` -> - *"X-Axis label"*: `Major axis length` -> - *"Y-Axis label"*: `Minor axis length` -> - *"Column of data point labels"*: `Column 1` -> - *"Values for x-axis"*: `Column 6` -> - *"Values for y-axis"*: `Column 7` -> -> > -> > -> > Plot the major axis lengths together with the minor axis lengths. What do you observe? -> > -> > > -> > > The major and minor axis lengths appear to be positively correlated, which is not surprising. It means that segments with a major axis that is longer than others typically have a longer minor axis too. -> > {: .solution } -> {: .question} -{: .hands_on} +Once the source-extractor tool is selected, you should select the input file named ``` DESI Legacy Survey -> Image fits ```. After it finished running, you can examine the picture of the data, background, background RMS and data with the selected sources bordered by red elipses. Finally, the table with detected sources and some measured parameters is available as well. +![Data and sources image](../../images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png "Data and detected sources image.") -# Conclusion -This pipeline performs Voronoi segmentation and can be applied to datasets from any field as long as the input data satisfies the input data criteria. -The steps in this tutorial are also available on Galaxy as a published workflow called [Voronoi segmentation](https://usegalaxy.eu/published/workflow?id=23030421cd9fcfb2). +![Background image](../../images/astronomy-source-extractor/source-extractor_background_no_mask.png "Background image.") From 4e2e334cc0086735dc61c1b86090931e067a3730 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:51:32 +0200 Subject: [PATCH 03/48] Create s --- topics/imaging/images/astronomy-source-extractor/s | 1 + 1 file changed, 1 insertion(+) create mode 100644 topics/imaging/images/astronomy-source-extractor/s diff --git a/topics/imaging/images/astronomy-source-extractor/s b/topics/imaging/images/astronomy-source-extractor/s new file mode 100644 index 00000000000000..8b137891791fe9 --- /dev/null +++ b/topics/imaging/images/astronomy-source-extractor/s @@ -0,0 +1 @@ + From 762ef3130ac74ab10a2ed7b344f037653142984e Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:51:44 +0200 Subject: [PATCH 04/48] Add files via upload --- .../source-extractor_background_no_mask.png | Bin 0 -> 51974 bytes .../source-extractor_data_sources_no_mask.png | Bin 0 -> 104404 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 topics/imaging/images/astronomy-source-extractor/source-extractor_background_no_mask.png create mode 100644 topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor_background_no_mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor_background_no_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..9e839f164e91cd76e00461108aa382c075016a0f GIT binary patch literal 51974 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 literal 0 HcmV?d00001 diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a40f40fd39bcd11d04aa676b78cb8bc779c552 GIT binary patch literal 104404 zcmaI8WmFtnv^ClUNC*<#EkJM@cMmSXf_rdxYn+7O7Tg`0BzWWQZo%ClKya5JuQ=!2 zcki!n40=#a7rUzVUVF)$b9I=qqBI&Z5i$q_LX(w|_y_{M$N^sQNH2lE^iDMP0>AiO zCAC~t9n4)ljGWCt3P!GuwhpegR>p7L&757V9PBxm*;tu5nBH2tx;nb>v#{9x|7S2e zI9sroQ`dw8qr7&M(RKlW(2bs7aNk9WtUz!ekgUXeHAu!mi$?}YPwLat-avYxzHAfY zA;V7OI|MldYKb?(UGu`I!j9b6J-s5U^T`K)7k(eObY6XaxSU5Yf&a~_jfI5s?Hj@% zW`au+cTw2GUlXV_SIzXax{#1n-AegvvpKY>a}s#3By_1(1Kn?Y6C{?aOoxLUL@8hI z3=a73O`bNNT7cfB&D8is=y5{ykqTRz2ax&wu_^EVrLQ4o>}f6yQ8l+`<5c ze-G(k;k2_a<|yzY)-U!Z=@=OUp;ire(*F*SH=DoDucNEW=C~$WujfN-@tz^4NGV&& z*VnhK=f824l{0vqUbwlrEwLj02uMmygaZj*{!r@JIp<5OJvFAo9J0=BmIzN$o#gzn zuXgdl^jL^6t4t&fN-f>g+n~jibj2ao%X7w%u%oB~saTNGpH;}l9dDF@4)IGD^&yYN zy}#1_v`y_CjT=qN$VlR;N7I~&%06p9y%RP#M=Vp9i54UVdA!|;_ach~XLR{Y6BP*` zV3SmCb`ilI(cUaoLVsn^%}rYupfT zw>gX>$DR$$gjsGiRU}Rnk7oU=Hba{2+r3k zcjs9rwnno2{H`9kW5U2Ff<@@uws@@oTv8gZZ0FxR#mF1$^T^isJrbt#qISH`lc)n_1(*)6LxruW>y+RR4Eh zh&>M4bK&4m=FoU@CXdHzQiQ&I(GWc!c_A^WTLPwR4Y~Czcb0_ukX9v16t$3MlA$+#2j3mo=b9$bMlDZIE52>2!DcMO_6sp34AnZHNM%cC$kr%c zi(1_#CB50vH25rl*X6J?)^}yph2ho!((l`?vN$coWjwi^E#mm<4tA2=+nxK9P@}!6A7ZzaM-;~f;fl*u6IfvUDla9O7`DnMV&1_zE z6}FwEq~0y0VksUH%FHfLD|DyFAF(Czp9eusOAUFm{#m`aqNtV3Ka&reYBaMeGo5Es ztIcoDP*yiqViQ=z+kvpLdY(y`N9JxJ4Z@zh~Ek5?W#!@0KoO0hc6# zBc{R|X^y>(-56brPSza+W3R@=7w3?bM<|9+CYe^9u(J;|%JDAK$bxsgHo|CGJ=6bGQSE4q`$`V{2 zm65JnuF0SzBGLHejSSLQSAqphIe@>s8GE`{iX`E~0-an;Ds5gZI`q}rEwUPQB7oZC zsO3+#;+1GNe;r%<->iq6-tCuf-tJ^etE=OZd2V4YIS+y7U}h*w_H`GC6;dU)#(du{ z#Z@kB`|rMmN$O}^e(3#3Ym@tKtjb`3o-+TtU>;taErkxVAjD5okCjCU-u<94-lMmBKo6`L|tztG0`Q4E_=)ArwR z{q|ARq2+QW;YsAC1O22MTj|qgZXPA3V%*N^wZl#iW7d}q&QRe z;YeEognrjooLm$bZ#MJa2R3f2PfmSx!Ns*={MF2k2d;Acv|PRr{PI3~dq{-@dEFA& z3BZo}J`}XRGq!m=Tk?MA?($}6T66P(&E&1l9i?0(;CJibG*bCglpxn(!ET01YU=Cb zzyjy#H?clW(L?f7ThCRVEqKTyVwh~DR04ho)*?m?I2Kl5?B}GO-Lo=bi?%KGyE&# zjqWgDySDszL4^7e6ZK{Mldg`=L3k+;vBSy4vPTs`qN+|#gQtI>G^i~QOhy`o!5}Td z9`ZMv>t;j0@Q~J|>z0FiCngfkeHRuS|0aR!9S(Jdd3^}RhSNh{GDLP}plom7oM-S2 zJO%NCSP%;8E>>%7@a5#?*RTJc7P9!hW@)=;?~Nfx2i2eU5}y`{JiKPqEbCVCzf-kc zsD6FEGp584V=;2JIm2E{#fK*^cN=E zI*|V@M12+F_Dk_j&}@U&~buqwtV_N_AUWv${S+^d8ZTJa5= za+LU+Gh@56o#me&opsyM_2mBAzIP?f_IvW>OiK8)_$#+_b^y5##;>iPzWcD1xjDdn zv?Y6SxZCc4&$J8mc_FH5MW5Arr6cIxh4$Ufy0fk2p8XHAzVV=JQqXi&7qSIz(tW62 zU1DU(#ej)ms`k$C8Fr$I#13nO1^(HBhrg%4(;b{AtJ7dNS9NVszkmPU z+UX9%h8Z&gSzBI+Q?sE6f)JTr@^0W#CBe~31>B}$cCYHJK}2ZLj@`$I`aqAo7(2x@c)v3~r%!iLV66On`*6;_ipf>(1UH-`@X zi(p$jJ8&>6;TQNqHNpUK+s4v%hMb7 z*`PFFF-YM;$<}Ye6KByAm6U!Z_vQV))s^i5DKAC^t9``;?rGGv(M;b-Nf4!PoRjU% z?K!aTZ0JLvR=dauCv#Ce8{~%GXomWgFGQLTxe>5Y0!Qv&m6j#8wwc2Qr&tJ43a9yW z-ptoio<;Oq;~Hq7uitvZ1~ZHP5}b5St{-Gni7mX4%is43_oo>sluvft=zcv#Lzc8R zS=6g6l3u&Fha@zX=9ArMg->=?|dN^)I@#M9(l9iU0J}0b|UYFKPhOH!a zc6K*M9&HgyJ{#EIOG|sk^QBKSk9}S}++B8MdaS$#egFQw9UfgUK$^@GL0w(_dr3(* zPus1+hcr(51_oi({+mCh>9*RKIC~T}^cC^7%jc=1t4Li0xFLp5 zxWR6tuNyMz$MTW{R@`*7`5`lc8h3)^{QRiJ4^^;!dqQqh-C(q)jI1EUfdhWY;}-RX za4mN2^^pmx1~r{`{G0-feK%aXfCh-WX2hcz&#{f%r9JK&1*Op-!FPpSYuHZzYyKHGyybxvJ**M&Km(Q|n2RRXSoskN+{FxfmoJMNdE z$mI^K;*|(GS;}x4(&*{1K}F4>ewn@z1ejZ(rZ8t8FzKbbb(9#$xe+OfwAlh0I>*4y z3~F*W8XwJsSpEJ`Hr&h|&1{o}W#VR+CzqUx5-dYxes(_L;f3+O%elsAz!EPxM4KoN z-p2q^w8&47cyZnK)Uwx*mq*!rIis6oh42FI{*Pu`XSv@cV`|AiDems253ln(`_*Q` z*~8@sU|Ny;_D}v+T6ZE0ueK1EE2Rf3qwD1q(lJe3!5zNdZ5$;T*~Su&_K7X3d!O9I z#?K|y2+Nn{*sab8*7P4{il!u=Z`Rs7-w504ikDY2ryY>Y$~)WQ7n^_ig&nxXvn(+Rx(JnBjrZ@EQ4@~hBmRSXoyXi zL@mMszT+P;&6)f(Afx+9n_cI9(U|qIr*D8QvAz1y-rMwGZOHhUytMg$<)w-!Q#Lzd zPsdweRBGH~wbj;8I0C?x5O&}ozfM5QdP^*f9)2H0CRsH)zP{_ierx)I(1v!uUVmO| zd(*ig)Mi-^xvIsyuqf!45Z=HY8M#axdP<^t^7- z;MyT?|tQY>0=bX}meJC%Pt=n`NfFEsf zS(Ua9D<+?_LyzaT3 z`Q(kkz*lf6h{h9P*r8TLS5wnwvT{M4B!vMwpDfgh=$P1zrr!>jKg8DDg?-ZE)+R4* z&TM=m5UORSWhSQUoZ09RG#5ShgGaEKk}(oBZ@sjHkBO1&xKV-$s^K}vG=qUQyM4J) zNo?P~(#Y@QH_hPV*@K+m;mX>TLMt)(RNu3fbg1 zZi{*Po80ysv*)-Vtcurrfj_U@r#QKdJF?uEP^w{yi)eAh(J^!g8b9~X241suqT z2#;M!u({bNj2jj`&~Jyka?rZqDJ8j&l}S^)Qt>C$k}qu=ta{{{)ok-2 z1SnPit!}%m&=F36ln&y1=L*bW4)n+CWI6e9WsR3D?Mos!LfK@w0pXEx6S=fH^z8cP zK@v3gXBi(6vR2k`=p{d}IH<`|=$(KACoivR{5|Fl|So=`B`> zg?_bM*Kpp45Tj)!%+y^UiOz}J{+TG?UM6^jdJ@YAbsSO$hd31#Ie0NOP19I1n-3U5 znY2_-w(6X~C4$3JC*Ly7EreVY>0)nxhK4IH@@0m6C+Tf)O_UpcNE{sFM%%@@dpc$0p=kTD{{?Erjqn~;k5%EN3X@lNb+s=*Ixpb9 z3XxsdIfTg1R+^lAx_3I#t4>JR($Wc{eA+uj{vMwcmu=pk%CGPcxW1mAi+ArCQL7ds&5{iQ+((U2^Lxa*T^Rb-*BxWf8f zjJYL8b-SsoF{@n+W}?Jsl&TyxX4GO`JylOMs)Ph1=#~5$kK=wQS(E<@`hECrW!=e> z#2f_OzgZ{sSo1)^`{dy3`|%bbAZIp0fl6x4+y9)0ce;+{(eKjwrgNP{u2gwT1hF(= z&~mXlhUhkSM2S0#^7_~HF#YP9>;4Ny;qt85KCSc);uG%3I!0n}@-AQ1J`TmQjm)d@ zze9{Mu4n3|=vD0H)>a*}t3KGJpFw_JLtx&OHW8l8T2YXap*Q%>)phL;{Hp@r4amCo zWhDLzuLYh#Z5E-^o?w*V@PzSz%%FMS9|yA$s;=<|;bK&Yzpv*1%J!KgW~Vm0k7_TY zR6)$`2*6e9jV%+e63nvjU#B0d>a+9iS?BZ%!r;l_lPHs{wj*g7$K2kMN|bS=t6t|F z23z*g#TR)&UHXb<%B82aJI5RvU)yyr20|{^#XR|$H~B&B8P6ObwbuhSci% zbvIHk!Ec4Ac~&|UO+Oc`F(b9_%*{Gf5i;FNjRvS0$`j-4Jr)c(QTMYdUgE+6(*Vo= z2QgiL_Y7g3g<;<;U(TY~Sx8`kK`6D*eFE=0&a#y@a!nGUaM5>Pn9K1k?k+lho^DnG z(1yhFkzT})-Hr?E)XYXygm zrZZt{+gS3WpyuL3zr>#|oyfRvCnB z|7-mZe10T5gF~lRTLYF%^zWVMzE&0~J(s8*&k)XSae42IQJ3w2Wi3H3gP><5?kKQn zz*zd#-ISR-(H@7*E{fVZrDvvz@{M?h20V!6|Ad$L1UI+mnaqm|Z2LK*@mw+%(|qXv zX1bT#V+?WJmW$-`C3?`2( zBuPRzjD#v+c-s@kxh2#M%QQ5Zn04AWt|i&*qr2>V83ehLR)sE^d3YlqwBjTe-x?5% z`*@wZ9KM59VZNl)-C1gOW7L6%(@hd5W0G$|a-EZgqu2mLqL|juD>`Jnw8&NMWsS zUf4G@6xvrc%0E7aSN%ec%I2tcG4+g$U0{zsqi5jN*LRsxhQEEdaTNKR`!Dd1o1s>+ z4W7le11^-RuFaB)B`3{Rx3(n($@Koyid#H~ej;}@wVk96pnpUQ;-ph@-nUFelAC!cm{B3vMz z;a638haeWPfp>43-|uY`%{NVV(%g8GW{tja`d`(4Ewa)-1NyPASIC8ka5FRO?T-!i z+Z&_zuMRqdh-Q{*6(Qh@v0hCBweuBcc9k1y2|8x>hLMb}6a1A{6u#T3hU&kwE zv^QbXtd(ZWo8}H!P8m0@tJ$ef03@cjUT+0C65@w42ZD;fk=he&ij0c`5TR4HE8pJ5-`= z$;{9RUaU2`Tkm?#AV$^I+OebZ%5vc@f!%ykC||Fv5!{Cl?sT_)uhfd^-h}DYpp1no z*CW9G2?QnOi=+5~(~?M58t{8?Bew)Ql~y-N3G;yIB6qW1kC|fM7+Sl7q0m((sp@XZ zf~7Qb7jFYGD_V%W4=CeNNk)+`Qs^3`5U+5YW&R-SM*?7;p^bXH%XKV3lvpnXN+7cv z$8Ok#7*g_3&!x#$Zj&Cbrpo7Wi_uSR#)+-#jHF=_akszRYKHcMVt837i# zRdIiL)7NCbAZM{%Wn~V22lj5rN?p5zD{+ps6E8hWunIZcn%`&2$(uCTQ}hfUe6LZU zr+MYmH|qMH=KKRKc)lYZTa~x@#8q#6j|u)`tYV+gm%^zy_OMLF_U27)m`R& zlC_SoG<$sQ11hW)Id|>l_og;9IzI}wO$+78d~=`#a4%B$-QUH>8<`6uMz&? zgUz<{&q$u13^))fk*X)f?L7%HSHU7ZY16IP8mWpBjOKeiX3e_8d{caRt!Z@?6kZna z%5ElZ);8HX4illahE6d%{l$(hg%szhpJyz+C40ua%lT-5tR)?|N1xm;)ZcF#_n`bo zM=TutukA}?Q5OyKUB{*hMF(e3zQIbe)-*bmi8rztwl zgrr{h;?L2YMqV{9(!eNzyZtn(DN&Iqh%4@7iqV7GdqwfVq1zm!Z3^>_?xl@PtLj}? zmiM!qrRj)jGZdLz3`%{k)UF7Jl6ShxmV&PIuH7XTnN^CLBDt8hGlqgnyMnb_n+#^i zQcK?-< zYixPRcy3Oe(Z~PTSR67$JGc?NLD)B4$Rw&FH2VjqWYLOQQM%TS+2l8(QmokyXOndiq_DbB+GXcD2662OXlS6Yr%=s6KL5 z_AKfy>{9OQkBMzfB`MjY-<$lFuiwjd)@HwzeiJ3(*Eru#5Fn+^plZ!a7(-AKe_Ov~ zpOBRJ{uM@;6r6&%uJo(C*NnMYp*97@*k|3YLY|66UDi7Hb!D_&`w~7;NXb~)P9K!| zOKgaYLB?DD8+E55NulCd5mcmW#r2%s#Ez>Gl^iOi`MKQsP!CghNNUN3QHP;Ew>sNUf6(bf+@GXzGGJ$@` zg;f*h^H4Zz=wES$a+p)(rfc+tXO+poW`T3*A4Oy~P~%XKnx%Gld2W5LURl8g3Dt&6 zmv)A{N(Ew9s;{(u8HAr1Kd;wgLu+bVPRL#lep5@1|BI7x*yk{@Tsl2u9k_=Xm$BTK zvM$mn8r)u-ZMLpkS^=DVI5WoE$k#XG1tW41k?CjIAIQVr#8IQj zb4Tp6@^dj3MpRp-(wkArrI(uY+E9VF-fwt8_N>FMIpR;a)00p4a9(%af#ZS?YLyF= zFdhz1AIT0&L{<5RBxjCX5d#YZajI0vfwkK2&oZpSGPYEvz08(W&nRu zq|Ln&YA2_VTSd}6#tv$+aOivD?{IX-b)}A?KHt*6O-l}T@xOZaDrsOd(p3nxp{cNs zpnYP!|8o^1TPW?Kp-0low*@cc8KBizONRu6V;jvfB&udMa!+AU&Dm zEjSR8Zu{;d834G>FvqNo2xEePDDBvUiI{?nZ-Zdphq|l^9hM+tA3r3Kn8cPe=NID? zQJ8GheuJikq9(DL$lL@9KrBD#2Pf?AVXxHEnQn?PmZw2;OG;2d7^p8dZy|!G0LgQz zG$>7XSW+sCy89qCGCCwIuHn5z_@v!uibt+JkQio>&4rkveoZ01E-9u>Ei7xsb!vC- zuA8C62i^bC`|?kHgiMUEx%*Oj%7Zafd{CP77#bj;)yk#-OiKZbh#F@GDR-EtEgqTK zEgCoJ!|Dww$0K%M{#R5ZIlLn9cY&KR_9>=+K4+(rWQ?8}$4*{;re>0Kq}bO1MO;&4-A?C$~P! zooBTitfOH%_7X)VlB7S)`e#+rOY}^I-j@3BeTa`IIJT^ni%+h_ezV!!tgTB|S&Op~ ze3=V%S6RbhQP7D-edFP3c9IZ?LEyUV)n5AYZs zVG-{VCY8lb(VCW#JOxAFwRVMV25%5?;%LXvdJ1oyc2CL_nB1)%)*jM~$IDniVL7<} z33aZ1ae=K0QGe?YAS=wSM*;Io2W{}s)6${5%e_}ZXzPz zT{fo`7UR!0h9tsZg;a!@TU2d#q6Z5&S<1Ofll)<_q z0SF+dt_sqFRUVo4vqLZAsQ05u1sW3t7=={iq5W)Gg%b=8U0?d02`ubz#$YL4Ei3k? zmMGszcVS$QP0L57jlC`JviS(*sY#>jrXxPb7Nw_rH1}P+tl6^j%T|y852RjvHmOlE z_0i!@9y0T8O1F*s5kx11t3Mehm#z%yeL*N-b`;*j%m{s5n0W8tKC0~KJM}bCR<`Bf z&-*O+5amT>$sc?Bx?y=aQC;jknpey2hx@vZmVsnSy-U~=XNA+}r?NFUg@uT?xVV<~ z_EMgno@G5MbT~p8Gcy_>QE%_2y-#DqI~heJ0~u5?m7QTw$tJkizU#xqS0JrQV?@wZ z4wGRcs`#6vNDXAy#)vA2=MZ!~AwsN`vA%&sYn$rG66ev8;Ikuv5mVQg=I6r|BtZ?PqbEv{eZgE2(sj70(R?3vz2*|PwG{D1l@I?gR%1-hCQiFv2zV+|&@e9ysmJmvSUE=TY;#zEujz0=Azc^i0bXCuG zZ};#2#W(42JcD5Wsm*rBe>r^EYQfU}ojBg|x@bu3zftMf!%ts|1+=)ORFr?Up$Xdr-k?Dr*}2jmxUC;05ASDR)ngkW7=c{7(gk@Q8+AM}v_6~W>Cx6cR* ztE)Mw_EucRgv8b#*U2B@K)LVzxE&l)gQ$9qDAylI5v>mpg})SxGJ zY!6+n%6#JvWjSaiUSLjx8g2E*g67Z)mqRjVch4p+AcD&pQE^U@4t0x}_soop@Qw{k zfFv*emUz;k_d-)z`c-&D1RMxm_$KEDk*`}ET?pYVbMf$^I#elplnEcc@q=~*QNOp? zEOBwqOUldkgXI$`9}YqR0f9=leT_*U(`_tY8q=&yN8VvHhwBVmUJZi$sH-9Sm8c`e z>ch7%R;eomvH9+ABhm*{d)RZTarW^t2MqFxbebAgp{O9(>*A7;v#^8QPQbZ=zy=0xvkA}(CVKNq^_IHj5w!%i41FSi$N+$4a$lXI6ZQI_E};^ z2Uj9k@86OHvz&^w^D6Z@r3*T+DTp_%#<;hU+xdy`W3?^9!|9zsPWBELr<>OP+cIZx zU_28BAAo!l7LzrlkGWv`n0kSXN)kwh{>6ahys4!c2aq2Dhhk((_dHI*TbFr4xt6uJ z54&f#Iq9|wEXWJtY;=5PJ&@ykTcjBx1(*z$?~|pJNGG_;%8$Ai znQ_!VGAKsBADG0fc*75udO1!JGnw@MOmOe1UtU#BgM+-x)JH#rIDio^5HF%5>ZX4- zp7%H0+Bj#uF_G2Hqb!7xpS;6q)VQ zl*=xtBuCtiQ(G9|%oLdP3|9xK%;Z`9c~!iB%FRI(#Df<|i}jg@D2Rn9id_C)$?yA9 zmL*PWHyb)_1`k$P2=yqTr_M8O^nvbk?pG{Jx{#5c9$V^(n{Vr~h!dNYm&2h`VXjBM zKo&Z=;*0OsMh@234{coD4e!BldPbW*iiDW}JS7FlNI`t+P?3*JmeY239eS7b6_|4D z2x@YBp3}vfV>wRVvae!E_u0x5ORo`wh0VWuV6WO!qOp_Sd9X9bLZ!$|?iKy8J>&W! zH|M{oA&B~L_&4eO(qpdo5f+_Xlh4>Ek228E`R>`Cu>jU8zjk{99p`&fT`Yg`VsCNgHmHx3J?NwRe9H|ae!P3iXB z^hmfp3N*D4XtCfx&84U-hL4& zHFT&*rbH$m>BCiy&zy~3`8AKgrD5&r@A~QA+@@v6zYn3*oqNpq_n$>4W~VE3;u$y5 zR+UV8926AL0HqC9Ib#^iR?y>3kz(cx$N90z6U4(mf82MS@EgA#Dpu!(pFu@_NWaWZj3!LI80U^(rTpkYjay%GLQ^u%tPsd(6m$e#n~-Di z&5|omca9oDu1uYv{JB)%6M7*S_Cq-r66u;jgY0T!6L%P41m<3NJ@F+2FxL3PS8M@P z;CZHxM{wVCpj#mQ9G^_0ehDt{k6}qv$x&8Tl_zmB^o57VgmcprRyV;7cPb!DWr$4> zv!aW_9Doy}S)s}<2B)!SS^%~#a=)~*c7Dsuv++8p4>#-`E;*Panz1P1<7TwfCizD~ z%Eb9@Ht2Sw(Iut7H!2~Wjpm?#l4KU{m5g?E&>Vm0xqeq+Av`mq&qXLvw;KINf$W5R+QE(+C^a zisaorCH6WB+5!)&Io;3pZD$^Se`VFyZqKunQ(dYUOmfnIBxNl(g}@|&ZCYafRxGIm~sB2r8k3?5Rw1<4xhSpg|d!<;`mi(z|A(LOhM1ksR z@7sxz<@}gf_>E9)0;$Fl&OJho)IA^V>le`S>@wP-TG?#L3F%nDqzkuqU4&K2VUGhh z$MQDXVH4(4q<85zhg{J?T>)jZ z;2e8#!Wp-(Sa`oI-^J;b;6R~^`LRfOTbxa~?L>o?d8j4@Os>l_mpFx-d~<3**YnxK|n` zsOa1(ZhNy8>+Y{djfv=fb|lQ{71@!95@$LMAtU8L3XBP#ha0LABW85 z@b_(C=ul$bw+R%Fl%0MDlS0Tw%DQ!;*WT^5dA`qc64a(!i|U&{UO<_eXNqjE0D8;k zjQlY?Hy5?`?*o!o3leQ~(LGHO4#A+=ul<^BwG19KO*k>d80n5IZtC@x*e^AA`Uoqo zEH-0G>?AF1Me{h#Y=!nDRM&8YMT;#4ER+6|DF!^yi6|aC#226K`<@lLqN}Z)W};ZO zHt+#kWX;0aEc7-}rSzn+L%P|6W-bJMVGkVf;5=ls7W2w)SWp zF;W3Y3He(L03qV;#VzxbIVs02sVN;yC>3B`mt&FmAN)A+@%s{6zfOPCKyIQBevJrY zG-|Y<4^4$cWuVqdrDO3XGTSUdKR8H@eBoNa@vR})Cu#9b)X#p;VL4y2l{Z#}V=}># zP_x&3x>(^HcdW{75HVk*L=FNT)mH_82iIWemiz>AC8r7>)zuN-s>2C6ZAi$aSaPPR zG0Pe%i#z25KzMqRYb~jXP(J&Z9TQ%>U#z%rd)2{~y!SVhv(Z0$tU<2&!8LW@@zz3{ zuqjtkVdEIZ8IQLlQf~o~|8v1T@?J6*k7`DIPl@L`(K+}?JT2z_-XO0-^QEZtBTh&T51kxcmS5 zv~ZAtF~F&NYhhCH$L1`Df8_jjO#)dABA?#8#QdaX2p~urYG{l$HX9J{w*kx{2{T_b zMGu>mQh9V(zQ#6UPo7gcm}3o0S|f8LPl6P8>}Fr7U62f2$483?=Yk)A=l2|~V2CCY z;`b~oD|^#!W+>l9$qzJ2bTGOlwZ0~w>rRUub*gtq*ij#6?L&uH3m_8!Q97{7ByZEbEvKWU3lGPc zn2^&@PoU7#!@GIDZl&V+m0I(EIFxsoF|QQJ(9_-}XgIvRMQ}DoqBV2h)91&;A#InZ(`vlPbs+_HYm@_O z1z}8v1#M(w)@E8O{j9-;`LRWnr~Ka<>6L2d_aDhrHQYPv2y7gKJ)E)qIIMtNPOYa_dA`jL6FIlZbb_q#~-Zpr6q=wC{!Uq)ZA47g84xO9DJtYghc zcP`OOcwrBr-~IDouq)fMhsR(cGS0-Lys*lEYU0K>n%)8@ODr8&2cVZ@EsQp+9gsT1fv{;lw6{Gh zwypOPJ0M`pZna&v9Irn;v^|CN_DbowO{?D=KRr5pNMWT&m0~6MNBS&yz2vfcaM1k) z5#{7&Gltf8T*A`I>b;~SV(UdA3-vW8=UGu0l0BYMpGB06nKT3Cx>=p~gj>tv47fzS zHILE7lVA^48@`@7#Fct=N%4S!X8MN^MSoUBTl@9eS*^q~m|_K)@W%#&+ld`O{tt{5 z?qJ79pZl9%x$VQL?FsblYaLG1m1S=TIFT^sb?EWnb#ynw0d;eGM_~JB`1Z$#)3ML+ zPG-2FMV^<_?Iqf$$9t1KXUYW?_RIXJKo<-s#cl(TGNXV1A@ln>7XgnW1jpN&qAjwb zmnGcxhYK~Jjl-WMhJwp)=1#4)x2WyZp#o;3^wGcs+LcpK z@NVy~?Tx*3{`i*ArxrX-JPqRH^PX$wsx zYYHc8AdQ;$oWHP)lr!fd0Cfv|2UQ-NhQLGIzekQgDl{GRv3RK2e^!{>NJJ4PWL=T7}{)|Q(ppYIg zI$F==Hp8?AP2b24!*;2i4iQta6ujMv*Q$4<0Oe${HJvoAKD+^)0Alji#RkKtyIBx( zU0(s_mpaQ?%k*bV%xnk`1a% zx?jLEutLmZ-+gnsc^YAO|KjO>>?yM8s1Zd}?|muI&yxLgZ{Y)cBH`k~;rH}+bu-5Q z-sEiE>uTOY#n3RuW5x3o&yr(cBrme$@n$>R+K$MpEHC8UKQDd{!vRaNR@StkF>0G< zC29wD>?1uz$GE0mZXwoc6D}io>hlLZT_`#27w1MYYhh$RKD$B5a>>CLa#&GPryCJ0 z8?Aqjx`1{v3?u|r<8CC|18m>LYhrdU`zhozOV4WXxt~P<@a~Z{*D}&}^e*CvqZcz&Xolnmia+*Dj(!8CyC|V*Lw#8^?L0!v%SkG0N~+wRaNhHv0$^QEAwzw zC#tJkRtPYX$U%WJm$v_pwwW~O`g#a?FS`GYcq9=Qa=uhl=kqZRKK|xp_9G`KCok^> zy5I@uxm^-)SGh14*6RIl9yY6qf~}vBpgc{On~mOWvnzdT_D-h9Zyied*2_`{zIbIx z#FJm*r;-{#qe&gef19ygc&fnpMHt9sA3D!xAQ;5^|LkiK zZN~lsgeuL}v&1c_3x~D`cV~2E(En*?5oo}C09-D0^Q-S-b77@?LTqiKc{&jSIN&x#{25*qa!tXKX7`UTgFbhqIF4 z?EK0RK;foPSo5HMCD zt4HY-IKNF@iD`nw)K?kc#s2HxBf3cf38R^GCTqjcKnMdtrF@v5cC5>FxsV@o;rR_5A7axcz(#o=U2F z=yZ2nPrgW*?(Ewbu=Y0x79xv>(*;`$khl+}j+%N>04XHNz4s^Fq5TnP9<)osLb<@< zrek^4dY)N7ar>;vSF}#mfct?Al4x?pCPlFqn<<w3{&@<#rz?kc6qfFy z<(;vy8cv~@IIK0|)zG%1^A+#U(qwRD^^~o-En>O5({nXbg(mAm)aDL$&S|bpCC^{4 z0P7%s1OY*`J;omuP!}{LK`kch9DGz}p$ei_RzBi?y^qx=&z`R)jdQ`Mk;JSY4)g`t z6JU-k$#l()spUE*Br<+x@nd_u{mtV7Rya0V;9PsS{#=wDtu)?t$8bXagt@xaTGXaL z_!Wqs_ai#46oWwbCkWK`cv(J~B-_hxf~)Zk%pS>j>ZLnAGB7!xkl~Tl%rgIFG+zBB zED4Oi)_ zj2@Lz(`^;quCHhtun*dI&Sn2U!oDi1s zU7PL@5Tqry(%s!%o_GJ};#{6FymB~@wbmPRKJ$s*1{fMCt|kY0xPmzUiwnM%Mf=>4 zFyHDO0fif1(S?A2k1YK<(LtJb7hGDFKjo)yj@{dUheVgX7y13qzkmO_30pcoJ$NB> zA+$LxzYP$58a-!GU-QrTp>aC+Hafbi^FiJh_V09kop{owa`59+tk{zv!b?&t-H?V) zF}Re1|D`9N`jXn2un~V?CPYH;d~rGY+AmJ2_t3oy z2J^A_^FGZ_T+^XM#SFs$mD=~s(__Eb>rI{%QrH=;2;Q;)IJLfv`J#X_O3gt7PUk`b z(rBCOqu#YFVbzJ*G!g&2+80$yIWbfpLKtGb=S+tT1=B zMXy`x*}kWd@17O8a6fJ#^AL#cXQolcq)sVL;!(AnP1e%q#1(U4Oz~FCyW(4Caj{8D z8{$X){lk{Fb+8yY289ImJ2WE-hvF!rQ$$Ovcem; z)yVEu(n87B&wGUMvv2Lv`OtX6R(BQZC$$GdK znA@!+>h&T)Ia_k(P}=6@=j1gLtJWAmZ--KgQG?kHAgYe*s09{HssXX^cg^W_|7)ZR zE95`up>Dc?oVB0u&84>3y!_0(C0xb>n+NM@B6#MhXi(FVk&S zly!Ec9*x1!vgt&6DTHzK(48rkY}J56`|SFE9p2~ZeMNtYWWn_|D3ooNLQhQ%2_aR~ zPw1Td{7VojE>iPBo6l-Da(#V0Ft!mALU?HniIL8CvSIpWqRM+zj?bZ{`sK^@V(9#m zH|F%iey7QKft;t^lkal^V#_&a`$SH!(Y>_wTmOi9d?hjY+NTWZcMO)e+!HZ{2}KE* zX_JgO71<0*y3Y@bdiCW0OTry?-uY!qhPxzvrBrMkg85mDQko@KmVC(EOX3S#aiXFC zqmc#-h{V4amY`KgNm;$-=nF4GhydiX@=c_ao87^fJ9~RbpEtVGb=amVVBCo#j)IxoN%mg_h9+*N+^CrD zuKU+>Zm}#57Q*$kD!NZh`%fN#w%E~t%4JAT^8E%Cfm;uL#hB~j%4Ql)dvDO~_!bKW ziEw$l`CdJNIt1sm!Fk7X@v4cI!;D~1s98P4b!-uy~LuCrYYJN8ok^Nk}oVQ zv9bD(_4^C3^x#))hYDJg-OT3-dYQHH@9%+64{cbb^^N1186~L*={1{P2tNmJ!E-TIG3qB|RPvJst+_Hx;x;bg3E!LX+3Y1#}QXtZtiHI!XS+)RBhR z4V|2Ct1iukn?~`g62n;yI1^2U$e4}xy+fty6Do!=3w-nuuHyzA(CoJa_aQjF#Xz+` z4f;K{jCT~}#mbgSdO(d~=_HeXB1Ly1LwCX``UJPtm~sk`fGDWa5k$N?#FTsC+%}P> zLfzKBv~j$(wzl!F@)y(X{IN{RSSU^v2^H|CX>!RGi08Q&AA(>DSsOz{=9wc)-EhzLnZNeG|U)=cKP$#%0v{m8}3l3+LX zc6P{kO~1*(J%pNQ$RJ5qTk@s9)c^71T-gsppwcKdW4fZ}hF<360C@1!K-m}#n3~+_ z*H78f^QM$0kf~gk+y}poHPMZYy8+9K8#(iDT1esRi-gi2oy@4#St1x{n<(B_k;k%2FYw09r~6^Wy0Y4Z7%M15uhhB=s5TM~feXjJqjDU6&q@sa(yUcGZ3_HsS8~ z#VEerj_5rZjHck){e>>l;h0Mw;SL5{b)rwChMhFVO%%qlOt)0dZScALnJ1XDum2y) z{m3GfHxsT@hPrQ~q|=Bcvo$9aoGzs37KwjWhasYQ{gCS&zajlM4~PD-%;UWl4wd9M z4^B&-7K}y71@X%JqkAl;D|=^P#Wi5F*55ytbh@HrdK^n@+OWdKf{nNoTeALeqbDN{vBJyBD_>(D)0&EzmMvU%}4&9tq9?6Iq7@!HmhJEb=P^ZelF%m~`+pQX<7 zE9Yga*PFV3;EAm1kQP|np7ukwhE15v6nAjI_2TVeW zY*o$vyK&~{=STXlN=;zH+QC7&NInNMSV9gG?Gh);AjN-n2b`>i_O4yu3R>a$pQVkh zWCOROt_%m0!;L{tw_tG!h2`&8 zEsb-+jZ+e^lkK-Ijz!8e`u7tuscD|Ga#&qJ!glg2Pf8G?*_-sChz$?|{5D*2K6I^r z0Za_BuW@L;6U-uUve%~JsDA|ege-l*qyR|R3csGKotjT)xT&kjVX`}Ay8RBb1g};< zOxKThggfe}tE|O#VuflSs#@uXpx!4_=1CZZ4n*5AmYmb?+-KXIJoct6~ zOJ=hIq>r7egF23Xrlyh?uEN^wP4$@8=V#_h>*@&dWnz`&%5!rOnUpdS93jShW>J!0 zx!?h+nmtAdEl+9n88La>$F~*V6NV@tTJ4SuR9_ID9M4Bm>s*+QblQmNm9o0k1(w2G z&^?|P3+38&*6ChgTc-_WG>woa{35K*9j_r2Q#Fq*U2sZ#hZ|R!B4nRZQbe2iMnlp7 z5GM00Vj1ob*8@_fGtQQGI019{?U2d9I)1vdR`p;*cbc3l0xOe3S6Mj0L{%X&V6sFP z7NT+A@q4g^$o0nq)y(Z zH3flt=%MQvHfsracy)xUzlsG3C8T6zhPXb+@poh~py;sH0#?S0j};ZM|FzagK3i1e z_>em~VRfILC7k1LA9jr=8J@bbtKt9TwFw@bZY^wYaDZRcd`CxC&efE9*oADx`3%R(G zOW%cHg}bDwT*+=KY0O4)kCL5s|M?dNh$h3q%-fV{mbs)zgg;^AQ~AZWZg3UuB7{#JUdlDH8OXXS zv#DsSaBzD2-G+R@(7~Cgv;Pp~#aO!2@1$lF)46whmvsCVSl{=ZB1NSt1|uFk4$GO;xxsHPs2I!q*{{7Zn4>nua7 zLoKGRn}?9kgP6T=Lee0LanINpL6$QAABC|=c=JX;&t!^-{V%3<@}a!&T9QJ-);Ig9 zYFC6mKHG9$QMn&cJ{iw)Q&PV{=xjcf&itq_Jk8I$l6<|4Iyd+A?6nng{WN(0o+4p7 zp&M%#dbG9}ae2SzGy}b8ND5`G#1}9mS<%9mIk?$~`fd*CCJ{gTkBm6>n+Q%faprMo ze-!-YHSQIUfwwM_7Bc&mT{UKLgTD=BFTq;65MQ9QfCBaR6T!3RsaTXRJ)@pb_DR=* zi0S=PmSfL}h<2tY1JAD9Gb^A995HX!;v%$v9mcTkV+FHYPoTzky6L{>=~j;*FKwT| zFiwn+f1Ln5XPf2T9k#r#ut=K;7SC1DIUmFo?b_||I~`_}$D@5%8Pm{OYr-T!8WUwr zj8PMZy-ev)-~HyY$-^P(yk{Wt(ZYy{IbC#@;5NX}pX`2b@8rg=2~xz#ib@vZ%U*n{ z7z#L#a*+(T{+<@PtvFzgpVR*gJ1k(|`%Dk!)*MwIHSKlhdkR6N_frh&U;h$w_Gfmx6BsX4L0D9&NCv>^RwijOAA?%;BO; z-cesSeTIdmI&1KaJlC-=Y^;AK$S1FuB8oBd^bWGns7yqkRg9YZ{AAddB4#tIQqGkn zDYqs}i1H+GGMKR9eizGy zoP$Py9_qx!b!Y;Oa=;Cph*J@X4px?aV2&g9va63DR2LsSxsaf%bJ;x_vnKv0vD|Sp zyXdjru{nIYIc?Zuv_0CJKA4b}+@rv%k%llrKaSH)rO3e;`v4k6 z4|N0%cpqjC`(l0usgGKxyL)kJyifcPC1IS91|)8P^dTIAJJ!G)Ap%?o`yK3CkXehB zdY7RFk;)ai$gw?`r~qlEOL^XH?CSj^=0=^Q9+`09C~QVfUaN@ZIT;UfmFPG6uKFR_ zX)c##QCkWwB-)=9DV|!CtdVR#Dqh&os3iZ5#d6p%j#3-MXJu8MypuJx?J-lh+;5Eu z2|+;+2UD-lHyH_06`2D~BxK|2BO7kDMf1C7#y`-*6O%MW+qv^=Ov(NjaI_0q;*5fo z=b&97;buzjAFv*6MdWL$Ap|>C(i3$-cEAudGS?DRrqyZVVaz$Or6C(*!|~FuKQ;}v zVP==|(k6L5H$S1T7O$02$Oh=(*wUGAgPz#gZ$5h)q)8wm(8N%L8Ud%NJ3fK+jDTBA z6ock(HgWLTpPf4nbyP{w>d>!Om%Az_#426-86MuQYGIKvXC}Qq)ITX85qBefCR_@l zu4sykjDoz5{|&Xc4$V~tXVoK-=d0dTNTwIL2}^U_8ULtSs?Ltr(wvLFtrZH%q?-V87>B&f4RRp}t}xYlvMF>EsU^M{TFK0?WUqjl9vv zICMVS?Ga@s7p$*W?7StMd>jd>q$THs@ib8Ri}6R1gC@ql7dU)S9xsb|DNVaYy>t60 zSn)p>fLV*R8q*mbvoLRxnm~DA66WtTZE*8@D9LlBqN(~~l94Urt@>XI0E||*zwzNm z;p1PMuj+_sFzq+l{zmI4lb`Bz^G2FR=&J)}k@`4B$?A09JUJ~veu?invSR;Gn!_|* zAc5AR>m=#;WZ>SGMSJ>;dzeznt3{s=MejRkvR@HLy49(WH|tm0`xg}SCiZPQyVZS; zXFZN~IP=@D2v^+3{x=SY%=NzH%WMH^b%$X)4!{d)Lo<^NlX(myW3TZtdCF1FGX4cN*LI2gutNX z)ni{hc;;wp&$AEN`-iFQjk&`>cvZx7xRtegF;Y23f@AupRDC9E<||2cqaoOg2Yh6( zv5WpxEdkL!CsTTlvk%lfkq%#Z?!We|78LT3V$qRe<>lu;qoSf3Tn8mMS$2{rE2kl; znwA#Xi6~psv%9C0qs{|AbEl#*jDMG)F;>tddRqOf&1G|Kzsu{53FXgnGs4#S=VfQm zdiY<_Bx7B#E31o@Po>ECw~rgXL8LyYo2S>Y%eB>mdUGC=;S zt*uQIC^#Y3Cml#_sSAd7|8`;C4qnY-`bVM`lpgb}DT@~fu|xC!{*~z9P#TafHvg|E zZ1OrmMCQ1{n$ohc+*((lFivFblSs7bMuf+de|9|<+YZqUlp9Y|95RE>^uq8J)XA>A zNa20xa%`vG4{`uGWE)l^;C~vMavjtT4q9+XhEmjG6waQsxg3}Crqy{ujJ zdXy6qt~iOptG(3G0wl>3jNq5)m8LT-E`s{%2{x*P@1k(~VtW5AI6iwt^EQx^T@S@b zA{>l+|F2TKx3~AiQ)KWR=HL%Z#QS*y^ZC17_ck!#ZyOwoTu)4zY&M+bJsmx>a75EUU=no;b0|@ELu#m~MH23ho1lizVfvnCjm=?E!@3%DZ7X4# z?ogZcMNF;Pn(h<4mT8Oosv}ZON+1u*o8D3x&xD|vZLy0|dY{6+mJeK!MT-B7ct54<9*nX^-xc^mmvR;`y^ zL*4ub3vV+^p^_w~|CE>Xf+fw9slsc`3fM!DG)Foil9lxoCVc$0(%N$)N&8K8F75w4 zDDuH$&rM8xk!7IU=znE`K9D3eR*4(Bh@D))rtpKxqGea;Q+m2%ql1yXJ`+?Bdf(M5 zBa$P`gNUa&a>j2EC3AN3?4S+HFm}Gq$_=NKK-LKIY22hzQXDi4PGks&n^=@nSbzB@Ic}s`^ z8Q>4E?9Y2_hj>H(nTeeBsQqWo@;@k(7&x3Dyo3U5O=)8HdOby8IVz~3;bv&EuzBrd zRX?%-FbAx`?Z`Y9Pj9;WlJ8DJ+>Ez7W6cD@AX)rV66)3R3hol81Dgp88xD@#+$2lr zXUh!ZQ+>XaC~Swg36X)&Op;r(N!Ql7#X}6CF74c0b-qI{KP9=5Yqc6zk#s_8pU;Ql z_6M+19$#sM;Vp-0B{r$bD$PNLi9CRmj=v1Pq!_FBLziz5;=(Jj2CpJnc`%AYbbykR$#KCKNcWQE`WyOptjmAa`JIq&1 zi5|(_LqZnJvQUpI*vZnQ6o)JKMiGhV#IoxWTZ>ejomrMjS?%8|*I^mh$=vTWD`531 zK*28#b8C10s|kr?%zn3QAlIm`qy7a$N|X-9Z&`-RV20+K^laWD) z6|ipkz+Y3y^P^4&iYxysxRY%MXzW&-n{g;=q^gU5TWgKlJm)5gbWYgp=7w5;$qrL?e7p~UuI~Q$bqRr#SA?y z^jP}YtX^E*)--aKmKyRk{tYUTByME;Snb~c6 z!TK{M?#UN&>WRMO?;^zwU8H=3K_ww6az#zTBVVE(2Gy+>9x^W+46Ju2@A$s)(L<{P z+B%Y8wB_a2y{yikO|@S;!r$0Lih$gRi! z5$)T|sdY%EEDh|@Iot0!q_c&=CDe{jgG-($(p26-ja^vS3`U5K9eGH?p;-7IVH{d@ z&UE|8nVvWmQ`BJt$x62uXvn---M@)yBfgZ(8o0lYFsSnv<&{ngw5J?uYaQ3sNOaDY zboZVbZTygjQAj4jn3PnRrr%!bwSFgwB3pp;nyzZ6zU{9BBEH!?RvYYScf(GLy0vI^ z*6Vx)khfOaj@JY@NZfI#US|aq6?I8Xj!g3l(+qBPiOx$uPmZ@R7hD|_yk3vxI{k(I z;5-;lxXFW$SOsQ2aM$#~7%CPFt5?;pKg8|xyZj{JdKpgsU1yV})*yj-uYm(27#Rqd z-&YBMn~P9lhl3=$^+?E;Mu^bJbDJtk%!v+ub-nE+2w&McoIhP1h?~(f8pA2D*5UCN zfxoMvsi^~u8TnmRj1pr_S~2LGTZEP$=*J?D_%*h35Rvyq%G-nSp}%931mtm?Hxdu; zUuG~tLVZ`?1o9UzLjjW3y?wZwFS~Vx783P+aX3K;#R(i__mqI{Lw%0T_?N7Tlxv zH>MiEd@h=`a%HQftr7>}&Dp|RS~4%cY%0&O@WsZ7JxWf>hsvX zM+DOExvv8#X6-*k?2cC7w;`DBWf)S*rlU`fGu*bMqu0AV*wee`v}M-dqO7IY;VcGX z{z)-fD)x4~H_|LhH&2MA#L97T$!UeZKe;maaL}B}(4ld$ec#nN@;sKar2SM1+E{BQ zj^VSxHtM+jhT4Jj;4#7rlsk74>e(dKD>?&>KcAHYGHXVpTF2{kwgvl9Lm!z0nEBJ@+W1MDD>~ad%TUj}XZTvAQ*IEJVUb>S zNtVsQ*Yv2kZ4pe-2j6Gy-(mWQ++1P{tSA7~L`*)#WV}$mX!m^XnUs5tUXu^Ed*WPc z2ud>o<>9gsv+vAd2zLDiS(*TL3`X$x zF@O+w(u4l#^s-PMc*!S%vpxd)=6fMB0@!oi+)z$RY2XCSk(gqs%ZBXz8A%r{ze|63 zpjLMxpKnTb^s_)-O|8UchR@g83lz?FF-+0#y9%3gR8D#jZmH3i-TQW4C|eHH#hpa9j@c7Fkmc=g)PaZ- zy$ie&M-XeyX|Yo7;&uXX{k&qfLguAm z`$U%-ZQ??UYG6V4lnZrqmsxKKp=5~|sMv4)hRkbV!!YhgLI13neSmICDO+>$Kq%T& z#3t8jiEh=)Iu+7tK54p$DSR@d`l>@65Ez`e{GDKm;QG1Q({uPqfkU!Ur@y1~R~~;^ zB<{k6>sgYr+klF=d~0j-DpD?9<$N0nO$;UayXdB=xXo-i$zxXKY*$wTra3r5M-&m2 zzdwXjw&Misn%1=ClfO6C;Nw>6v+%wvRUxEfDl5ZtYI$??hsC}bfaE>EA8Ync=`6lN zF5$Q>eJw_`+h{mGG|YjTwLL6HPPvyNx*PfB&Z%q)gafZeMVE?4UY$X#?!tU*aLD-O z-tn)VQq3c7uk>EGR^Neh_%QyMnB&*RdcV_kUv%T9#!S$*woFcOjSbgG=#}vNt;gNt z46rn}0YknwgFe8siuiagm~Xu=x3u7wmT1~uxp~ZKqdNEgu-85>_u@4PsK5462Qel- zzMNDMG@cT0p)O)&XKjb**4y6lUYZ2|;blJ6Gs90Hz=i(qNSDsGa2BM^$U=;?CFiz& zOEmWTl9p<+1)Ap0E!CUDgYG-x}Mc)u$bCW7fcY4+14fg3Xc(>dl8?v(~3 ztgi_v!M%-uc8po9LP&lbO%v-6k})>=qTya$jmACB?C}z-%&0b>P8Oh$n?E7g%!hm3 zKI?t&QQw@8)BYB6L|~Va^0Xa%0X!vIh#R!Qx4`PAz&~kx$3>A=EeF;n9iXC1i( z%OB@`{w|vkIZ=~C#H$rT1kr*<5CH*hz&BT8TH^~K33=umI=i^6dz<7Ch)?Dy8zy$uQ*~v+U(11^ z0+4Cc9f${?xxd3UfSqhKOs@gg`c+nkAHg(>{%vzndK2q90`6@5QPk1EZx#3p2_J>;rXBqOfAtM3yhKy<$~FO;#IpElW@WERcI!cG6926ve_hTu0mscCf4TGlMoy zHtt%6LBvLP8U40muSDH?E6`OR=|DjbQphMoG%U1CjkW?d=1PvCACZyQz1_n@Q3jr> z-Z%6X$r`+@*Y358c$yZTUfa)>WSkWqR%2gP)3jpCwxl!>ur?#T9?DdJ~WUKhgc(NUn`FDPQ{$ax1UA9ae9W zfHwbk#D@#v;2VQ52-1Kv25Rqp_J{j_Pn;IiLIqcqhlnM)6+JU#!8L3oBKu`wFkxKQ z@{)s+h!p>hm`X@$^pP2%N*q4jekP1`N@+IuW4ou;8HJM<@p~qAKQ``$<}jI7bw{P2 zb@l^WE(NXRot;nKzNc9pjx|s$unu=qGlQ|JY%7NJeyIWHv{}XFPpas4HA5O1W&(?F z>%^X&2~YQ>_Kh0j?a|d_yZMt_&GI(^W7P1NnS_p^*#jFLbJp50rmXF(OW)xFU{t&H zR5$rwOHmlzU*UImJNeCLL#(P=S|NzfP~f!qt`5I@wQe}KanYBjvg2+q@y*Zw@NnN< z-~mIBP@ocCaG$pm^g1huV#bh~QXy86axj~(HU^f0RejOI?knlBqC*XW5r%z*wcNml zSoy6x{GoJfpNn;D5+?#yT#k`HSwalWSlrhL*ElutX@I~1i}>=HW+!?rs1AS;0s*fn zKdX#EKAG)j8jods4j|4HW&ST7=4_Y~9uL#s>b5^VH5H-c62x7SFRmCZ~rRC)?RtM#jwLV;Mz7 z#WQsXBu!*`VIc}mV!qi`4u}W_Wn2VnC14+mMjEuauY&M|xDJG1Iv6u%N#1mxH9Vrl zbbICJO*h~Pp7chxB+E|7>j+q2jb0o^j#U^&=c$y;-zw$cDzoW+1uVApNZ?)zmePj! zM=7C#2DDNTID?=@r~vn^;zPkA{R|h$oag)#8O;&P5orR-k*__*Y=-TEUbZV;Us45~ z=%%WS#(pyaOt-L*aWkQ+TKbm=4f<4ztMBVf(vdT1NfEC}GW1Q>)=H20u%%MhI%CA7 z-c4u5N3mUPjR;**^Qv&7>=aHfwv=S$w&}D{KavJDK}Z$wdjH20APWDjtA1P(zn-6? zloMDsZs@l#-f4`rY}hC?B{4KI)jIyYhvxA3Wk(@2saLzeUwYC0VeH|y#MY)qd)Yg3 z7NuXG8eR63w$wQYAAi@()0Bwg-0@8i`a4rca|C ze4n|1xfw_zN$7WIKb3v}ue}?nNKOIco-l*ouKVHk9A7~rs?Kt(d;2`sVY!24S5sSi z{b084cRRJ;g{p>z27}n;<)wS?s37!Xf18t568qw4Z}`Wa^s6Rs(#fo)L8ijr)t`k* zdB?vU`;IYcVPu6#3<)uL+i_!;nZk=z)h)X2` zJvcohB!zCr?U?o{vpCBS`PBK%tM@X@qH(pnbXbHeGRvU9s=(&?7D;l7JDd!7p>=wx zfDXV^)rRvV`&_=!A?2f3LiL^9vvOxb78|BJcW;bEg|w}An7j2hjYQ*Beup*ynPtib z1lq)Pph3g6@3^&4$P~nHTJmNEH0+Sa`|I@)f#r>&exLEq$3utwmX^1-Z=Ke@8q^SB zSpOkxmjL8Hl681Z1*C~NdUYrR`S0`cww;?>$z$0ef$3Wo55q?PB2J@_hXFp~8E|2x z?{(vd!=N$Kn~Zcf{sDKj0Sqt8G|N@AwfnL4^zC?YGNljv}(ruUlt4FJKY8>XWGLK;nKQ@Ta=?Y@iUPJX*3YRxGf1A|L z(QXN;Z--b9GgOAEMjQt#zpQNKTF(gi3N~U>goO9UngR!HQuikj zSH+&}_dzFnN!lM-z5}~6crp)A&%zr4PtBx5?Xk(rt}-#gENou+ zN~w$*BV5*rfKUk}aEa^6qPGl3AX2S)(f(kr0TZq~N>5K$0qb?Ys*{?t{RC+!3}tUy z?B81vYTToadwW-Rcaxui$ew$p#VhV@=D!BfT2$Q4gzU9M%1zxj4tiQ#CmfjS41I?hhv9tK?gf;eN%a$vh=_<2V50^pB0zh7Qf~B!(Ruf` z%B)tK*;zt8@5|2o#FrTHm;IB>gtzZyUVdgGX73jJarauZ&Ymi}^-A~U7~2H~vLYZG z%Pjd4fbmItwoqCpZ`<|Ll%CXEa{RgbHeBlTiQX$ zSi@yZXzu4LYlnW8Ph)z|m@2-t*PHEYa8%d&Zc)?{Bh`5-E#hXou}&u|r-Lozxs`5n zvQnlgIM*qrrJM?Q0F!~{KWf+SUYexQ$u;5V4l=L3dZ|9WYuesA)P@7OX3cfin&!H? zu>Ql(XY64>#i5~5klA6ruZ3l0-v|G0#bssj{jt}_vBi~bI2kfgUEmVKY_eU9n6~(h z7avO0hc?~WLiX?CZeP&IFb1A|7<0Xkiokrd*X>5*_cf!*?t`KW54BOdptW0)yCR;5 z<=`dt;3^C#5yw~yWC4$F5CN-w ztEbkz-QObEuAXsnhxLsPR+Gb0lpCmSXpTB*C}g6${cNTfP^I%nGr#Cf*H}Dw+IN7z z4HO{mVg4j;?rzuK;rDwN1}~)~M2$Xr1}%c(DN8P)+G?7^6D>eP$Y_Zx?x`QT;C21Y z?FY2gtp5(38TpTs4sJL>77+v=O6|z4%w3sK0DC)mruUBYRvettcg{jn3d|^4LotvK zFUvCHzg4XqV23Sn#yNY?IZXW+F1~Y+0$~phBy8deu#;Yo<>2`O`Vq$3%|V|houQYk z99d0ilP}8>(+iI;5W?IPB+={dZFMf=@-Vc_^(a0{(ArXqQqoqD1Y`=}THas$1krp5 z2!8YP6I<8$2`VU%%<>X(u+x8%aJ&J=7re>PY}x0Gxp?IA@-4T1Z=4w-KG0$@8tRR< zDcu={VG)`c8xZV26~mM+v#DirWrK>=Oez7+c;T)a39RITF}W_fkr#eAnF2$~3yJpd zS>nZ+wUN#4`+OPGv(xnxNjj_7Ebp!1-i#dfLV!aHY_o?YR2%5_oB?d~p>s;hzS+?P z^?Ns|y-+AvFM;MEO8va-@!GGt=i`$2=w8Ih^fA&-gDC^r?dJ#`=B%!mO&A;1nc;<* zdqw^VSwi8ztIjqFu7Onj{n2UhZsg71axOkF4Z4{f@K$1Mh@n3Ew6Yn zf_uOa$HfoC;Yej(gIV_+m+48G+y0xIwO;+m{2i&C^borbp(ayLk0%UEhTBRyQow*J z{iA%1<@n2m7HfhbA>lOZ=6qFn$O?{@wrPN(;vDx6CoqhWp}To#JMJF#%r^w5C7jR$ z@?srxQGZzIKQH_|C+@n@e}?NsH>RMAUE%BNSvzQ0mBcA83aA|+wUrz<3R+UN5B@Gr zitaLn6IO(vp)#NNW~+PqsiiKyU%{TK;;)6<51Bk`Px~v|%%gb{Bi)*A=T;c{fi4oP zq8!?6p(T-hOlkLMI{5KPK-hA?Y)Y&K`pqI4QWtCW@8$maQ0>cfKTkLv1q5QAg2NKL zDlUNL0Le?HGPB2+z6&-mpnf`Sm~Mqg+&9&)fOJNc#f7MC%MtFy>154pi&_I_&VC0F zNefS+b>RH*)eD?-KS?@-Y3ek(i&GotqTPXhNX?aRSiVNidRTL5bQ)pjq6`$ zh5vNBnR2=U$WFF{@dZZN5^-`$zzhJy&#at-cF71_^av}Q+6GC!y%wg{EKmE%dM9bu z%l-c#9q?olCoot6SC;DHWMD}A3pi}y*d7qjZ+2%j{_ zZ;^2oU5txA?@Q6s4L|psBqtMt9%2Qk+k?j52de;HmY5rchyC2wT=3M3$1)$}(80?D z+PiQ-%!3a_k_cWQ{EB!ZgiX!_rMd|FYdsLha-3@G&6~HG;NYK21fqSbKs;rqVLPcX zve7^36eIr1@RZP!zun@090s})tX85;L!|hq%w%@70PgytHvBK&#AP8u#twri;Al^$ zu=nUCFs*N<@$kflf*xA)A7re4;L#-5lva1yJX^8Oe@MYlOSFBT@CQHfZhf?t(|vuD zX?Hk5vyNemUqi!UMOtgjASl2VO4Um~*?cgSL%*7yG66SWp!E)smh&w*W`Haac;CR1 zk_Jh#zByq_?$dJyFdY$a`lbIrcL(MsM;1`{2F{}5taR|%ID&>ktaG=hxu>=Wu{8#; z^mLki1fJY`P~i9Jxy#lYhZ0CIzN&_l6CHc2^W0(T2>B~W+L_{Nfi+Mj4IDP=kH~hX zn;`w7@Z^r7GLQWA3Gde@=-F;|fy<*3Yu2uNV;V+I>;VNY8s|u6xU&BVB1koe1^)YQ zlN%TLLyCO|ix@E+@XWSn6XU|&7HmH*W3g_^NS5;3Tu1$D_g5@XEa(wPN?duYG35+B z_D7s~Ylh~ILq^9C3o&ee1LX}Ar2$73&w3bnz2t^m@gwP<@y}_fxZPBd#>xg%qU5~H zrCsMJ9JPL(YT^Wc3|hgAv9kBxv~LBB(c-IqAt6|igA!t;1*iua^N@1psuA@O(A>NeK$0eY@#A3-@M43`1P(n)Ai}c^;kERm&D4sdxp|W|{cFMqk@wSZ zG#dU2bzexQ^nx@%5Ps`l=SbU4ZK)|;`1w`p^=ZEq%j@o(?NLQl(cOvNJ#+%czqucp z?S_dTE|T?{t8Y^XRdK#%KW~bycCqb-E#kAP#5)f7km~lgN0~h#U~TeoJ4` zfy^iR-@dh7h+S~7$iZ4pm@4~2%j~Vf#x8@B;&Jt4VNJT4Ku;<6x02gZ}UTkW_{=F!h}|EU#s<*{U9tAXeWDq)}F+tX)!eaX(*d0J1Kegq9TjMlgtCL z+<$ZkX&AGIm35-svwx%#HpH&r?yc8ox6weam^kUSJ8_ALkZ-y>G4Ok78&=i`~=_Z8{=T+CWwSOQLgHY z={P*}v{({(0OW^i_X8ckBBZ}Qt=u!qtywBg) zsdZtRiX{&wN?_`DqgCv=0_u;UD6-Txhn#g`-3uYik~H%QX3}4bk<;d6RtO^Dy+pf0 z2E#GUUdAJnJTZR-cvqhIY^weLFvG*zOwi5m*WU-hyHIT^p|4F$%3CoD7b1uW@rlMM&6r%pp(r67N}m+9Hl ztesuE5ZZ-IQI2Nn(P^;BzxstM{xl!ls9X7}+%`LhkS!J6H>%_O;EC zk00uf&PT)R3!#lEM-H-uGi4Q9gR&{ei>P4(iv6_fH5(i(I~C#9btboidF@q(UN5xgmM#U#Vm_ zaRxv9w>q#eC4GVYw~1-NDks(;#**iJYn2s5M0x?1dBb|&rfvZPRLER_O57e}>L68? z;uG<-;Ari}#ID{Zi;$jqG83l=dqP^2`#tWGLcXTpl3#q1(R09aunxstzx(0C1!k;( zj?uQiSM9zamCqSTGSwa{;&6R7}e_ado5qXX=4YWUa# z&Wcavu~2Zpl4U2!`(Dem)geR(a*n14PgstvorCu}A$%k*>Bza}I-I~4$zbw6{wKOk z>a1J(r8)N_nmo?b@4ynbICD8(`JNalEe+~4kwHfhc`G5FFLcS;Y9a7tvMUp_atbty zAgH$IpP?I({Xz#wA)W;gUo`xr+p=M-nvL2!ud`eiu4)eq@Y!XASDzAwobcW@2@D)} zM+82^GIjruPV+C4dHsDC2#xq-NxzKHOK<2B_Ror#JlBng2Vy#*k#TEM%S!c1S%MeUgtRJVd z(w^mQs`GoZI|Eh(UppXlcP%K6enMaW!1D>H(Qd{-T)G{Ikc%0~SeVN#dM4jURcA^m4vgtNm2{P})+9BF7FuJz zL`Q>|!hpVWo}RKOsmEk)#N)@~+1i1KyYFPikg&VxSw$m6up_#SEJuIA!_piKsILA@ zTZ$;-cgn>zUvQ}oL#d1`>pb&125Y(J{P?B(484fe@mbluVzy&h_IQT&d(4Iv{>1;r z5WAUVgwp!v?Y@Dh_P)KpGCu0?^E{7WE!g86v&`O5gOFvnKY5FI9X5=+zBBKqEax@b zSB&NLA%p#C(S^oayDs|9)5o2-e)vx-9J0OR%=fxLGv7W*Agj{JpdD2kWyx*Gv8?t* zjpT#!wO9w3q0T{RK$V`^(GT zRM)7=qUcg5Q$jnmr`@_X1CQK2Fnii$YRAN5H2_yY0Z3~>i6y}Nf>;1##`9V zOc+z+bMha2(}Qk{Ffo$ZxfF(Z2<3(1E*CKyeVnSIDnT)P;?Po~M((?q1%o3QcJ`fk0Ce?Q72t za0od^ez;<;UGOqzAb6GYeUrajKx8({yV9G7du$)RSV8x8dJE<+J;KLk9bUnJ`+u;+ zX(*y~Z??%a_=(dTdZINYswK)cT%;)?9F`btWw^T_EF{9puJwQTddsLNyYGJ(15r|? zTe`bbq>)Z3K^jE58%02xp=;=7q=phkkZzEcmhSHKf9C#uUq0(`@xtZO<#2JGefHj; zGOE!QB8P3is(|S_xxMdRUuqxG(fW$S_nMnsnHohYB*vaU4RwMUzrJ<9_XX0W!g6LE zw`nD8BT5eE0Tn$EKJpRuAcwv9-Y zzRi(}xXIG{P4j+_4(rnHp>pA%u@|_v0(N>Q0Je1Cx9u|mCA zU7o~AB$|7o`{W5@Y4JA_T2HT|=L(D4&BxKbn0;d-e7bA@ob1@{_i(d*eLLCUx}6iU zMu`TPTo4~$U{a$C)&YrhEE|o!y)Z)QUQ8d5kGS6$sJ|dle5w-gIpdS08A+|FnJ(WvpdZ_e5QS;>VhL~?{@gjdvMkndZ= z{N+HS+ecga;9N9~Lv-sxwuB$mNr$Xyr}E$2O$n;ZrxQc(V`;1=H$%m{NVtyL`g<6t zTQorhl$5bz@EH5>VmFcm{-8p|BG-RJP>((zcBMOs&JVmGGNC+ZnxIWcM8he3zc^X~ zr*;}7fSQ-#nAFx<9;aNro~gpDh80o68L5{BS)*X*3R*@+;;_T58e(cE3#;e7o(NGr zKR$BV4uGWWtEe3!NwgTzq!&8=;O>@ew zx9#O_Bk1b=+0z4%iM!QaJGz$LPxux7sd^f{KFLD^y5RHZ=;D`Z&nYpN=Z+0qYCfOt z`c#@V^)#Z-*3B<>jqUikNN~ALG~xvlp{A<}|Fug0K}SupUfSCuR?N+tad6VW5~nRu zF8agvNSD=H^QrBE!wCPu&MJD%1WN=kZ>m%sbfeK_J1^cUzPM^`)9%-oKXzrXrrFTe^UOs@2z4i?+bHV1#iH0W5L#^` zINy9Sqmd*t#@alMNsUt`8s$#2jKw@A3K$z{x{0(>L@6cEYPUih#*#E$6@khk*)&Bc>?0dBy?q)sGrBztqx3d9e2L>xwT^)&3X90M}h#jI> zCf16$=Hu8PYrf7}Yg}Stk&@?REj+sF!`ThY_GQ&T{8gB)Y3~Z6vAfzEKAK$-=BAPW zKAwVk;>)JKg!ep+TaUsu*n@9{u|4gkhb@ObK&#t@hn@ zFZ@9rU%lonF&@w9HwnUE!Fsyj{rk&~Lgl2b6lDQnJsk5amT81c;kZmY9FH~AS-LQ> ze3ZR3JAO&;j?y7~4ioO5q4LfZJu|r;MnOGVRK1-Hz3zW2wc33Agxqzy*U%?M1Kiu6 z;1zWQASkxj#(t<4P*y7bn(7hXd#@!n+~>t`z8w^2#6wjCe{(OIRWGdxR}(=^BhKQb zSLn~pK8%<3%rlR(?1kwovaVC9(8DkwZ-#;Me>}IaHi}$@6$HgQ3RPk-L z({n>SyGP&^@k@$i#mHmKg*zi$Wp*;5&BFt2gXj+QEG$?Hk@?W`3OT0i@LP*fkN|vd zeE)@`+%OE;)vxDBd2W8MKg8)z#<+4`V*xfJayJ(Twf_|yfO3wVtmjn!B(Jxdj~ByYF4bGrqp#$`X?5~mE^sYexysSIl2}?uL>CUOQh1%SHdmXX zf(v8m2iT;SAjl*PneJ}EIs}Z{qOYx@3q;MutHmW?ycwp8fCzGP)a_(zAN`#UT_#6L ze36w>c4b;@3b_5G^J96~FGM0E?ydjbk9vh&f0~iWKZrew$X}`r)A5h7?AEpO7WSh| zWxq?OdtLF5r;N~5)JRYrbTx64TJQ#QQDHJwd!3(FP_x!1RhY8{Iqna7BO`Z9Q=}q6 z9XUAZRDg@@qiB_<6EYh7J=n>gH8`dCugYW7DP{RRLd!*zVbn%N0ZCTQrZz&%=4JFd z?Imzg1&NRh)(V2L?2FO&!0_vLf?Km)CpiNGl)_1()#6NGNhAGlQU}3r_5{f51p*Sf zMm2!P#)GPqt!;$so%QH5jyCZB0*EnE8-p4Tot}FbT1@#0rNfY2RLp?_DSR3`-`fh` z63q3FdZJRND%zrCWJEowcuh032RB zk+SL!i7mTu%OvqKob`!E(}>STrGat5?91{Q3Iogmje_5KPd@PRc5xZEwZMNAGs>{9 z@T`wBWo*w9Hg>cReuTmLqK2jvBq?yB8DFb0Wss-|J}Y~pZBD@=(;E)JOI?09X8W0D z@*s9#v-eF;s?LuZ|FO~C8q-Tlo6&GAMVkce%Sg{H>axmFr@`w-I>N9+(fQBXUAb>* zag2=2i6EY*LX+9Q`YuqL@S-?_6_Q>Z2^{Yt)7=}{-V}>)M;}hGk%v; z@OeS&E1>qJwNOjZd`cjjYGtIS-1!{ZoM`7@N`aHvyiS7I?D{Oiea~5c7ZJ?&eXx4; z2$uW=RtK5DIo>C<-PUz2R3CR{iF=|*VFb3?1;bUD9!aQa?*ay4UDT8EnYTKVA2K5m zH~nvoX%YCSKhcfUiEh1y$as^Ikm7^}rwtX9UjV5_z6Fy}6!SDX(Uc^dD8Q`8Y$&6( zq_h-ZK5D1J(bzH*wQz4yPrn&n)^u*vI|KdS`xkiy4Z4CHNsAHFLU1$pwpcH{;22L)LD3H= zU76y@dFfo(mZ-mCpf8}lC;?LK-oIj=3Q5YCDpc(T`-a03EYib%Qv06mzmxV&SwoSL zsf%=B)>*WsRc2u4Wqh6nYlE*^t@XyG-z%SMQm^IMko1WNbME|lfXqY(bsJdmJ60Ax zA(f4K+n8FlTxGcoa;lRauweEJD|cBH*x*OwFDS96-WVNf9;&o+NAy#h#no}A&eGx9 zRDVz=trSNAwna{b4#rGtxX)c`hIpwhet^22H_eu}WxwWdGB<8Lph}HC)ya6gq!(BTNq3C{_3WHm2MX0pTKw>6hesAdB z;V`AAVtk%PNfj5rUsbqWY`H}RxH>wD;6eo@5Ph#7EJPjryrj0I5Va;r=35&~Usz9k zw38;?7B{$ib@BWAh!|Vj5mp;rCTSoZ zA=qDt0zABIM!dG6)}SiWQQFzzlEY8b8!LZACD106OL6ic;Ke`0^~Od zE=b5K9Yn)QwMv@GB!^ga#%g|w>l-tl?RH(68UYdqx@6u5z?liiQn$aYdp!{8}P(; zRMZ9>dP`o-Q|6w>hDv)^y1#X6gL2)%wT+P^2R$^LWzC(b6+*?Nd{%kWV5_@2$;pp4 z0_;%ierMU&a=GHcI$p#;;+(a~!|_r){r+CZg5ccqu<7dLXbtGZaIyj@Kt4IrW-&Y( z8(DYA#VP#-0>o$T{C{;6X{`%;9v@!o>j+L)uS^W5hGLui3C8d|J)d=IR?S*Hf`W-k zYq1$gJ+8y1WKX2bMw(LOeWK)kykHIJr)GjOYn86BCzH zs{SukjeXcuXzTunj1}SB3wp5MuVwlif*6Zvx&cx6`9U|}K{=ZL3bfwKLLu+<2FAwIxL6KsS5W*({m&yuSi?a6;g;;+DiXP z|8P}8TnS^duO~%OOHJ7i2S~q)QiW{Zh*EfI&%-U<=FN@q%LO4%&N>{5NFOi^XEq8y z27zDZvriai)ZopMeslJX?kDSKwg}Iy)j`D=)=;3R!2%otz;>SF z?X4MQ5*ayk|2_w6PP-VuvbJe`5>MErRad{_X*%*9#^KUxAfXpso2nmZwwABB!Lcm3 zSCcC%5(8g#CMlEAQ(^s0UB%2Z>Lfnz+k2UNVSDpCC&l+xaPFhGAkE{455U*u-F@VQ zjm$X&Y{2#~u3*iawghjR8XZsS?CLD~%?<1r$T-TaiAVQn{S2kK>P~i3J0b4_+cAcB z;(K-oAdr2{K|BliF#tnZGL(W?F&YhZEy$jR#s>++nQRQ_1=zBPQwaW^JW>B|GIT%^ zi92(igBud5g%39x?yTl!g$mT_fP?J6b<0Q*ua}FSC(3{m-t9oZDluT`rvsYQCEm1d`&VVroA z45;KC@eEv7mq*B35)TgvY1#sgBdN#kFB}kA>FYPm4UG0~ce_ZDcgE}%!7X*Z;Ren2 z=FZoX8c0&{;&WmK(nHzg(`A$*5U{9eaCP(Brs~y7gf3Pc4)K@ZCJ(co&IrNDmKKWz zu?IR={gWQoLMB&>Az}E*(;pw3GKY&#!b(oA@YT(qu32PwC zJ^hUJx5>chTJTbBvdSyXC!&gldNb8~QQw9cY}BpDc`%0i3~DL}I(u(u^$E-y1VGX} zkcFsE{rR@OY?`qNuIiSpzwxT`U zpN$O(ky(-p1~zudZlz*CHZt6xFz@zKA9ptt7DaY1KSV0!!YAsAMJv6D!DI6YAr?Zk z=|-d9;>c?oUSEz4oESAhTN>UQ|KDtl0wQ2n)`)oyr`>icy>C6qED`fE5K^EW+YdMp zGjuw&4tLwNZt?eYyLO$Oy<=KBVs9h8j$s*h5|p?WSN2I0&*$6?&ta1J#hH?w|Mm-4Lv=Y)$faR|n=3#z0OL=> z}JS{^KBfte6^emnIYtz3>}2N_6`YQ6hvB)tQ3KH@{qmlhvuAHuhhmD~(X@0Ug*z;|{C8;2+t2FDS za(f@Mr3IE^DA4ktd~0GSwxJ&bpBY3={o%2GF8n~t`E#SV0D8aQb;WOw} zRCIS&ku}PUVeOavv~dr_aOn9(YL%7FFOz!Zw5VP}y7wPtGNFo*a~JrA%`q^Lyj?h@ zfchJ}3Vg)JH(zJgm)xpU*jwM2Tv6=&76-m1L11ohG@AI1`Z>1Q$Pm;f`L*r#=qKUX z=r5)d}R<^7bfPJDvY*X`11FJww;%f z_GWpQ3QNeU3AlL_4e7VzFppO2*iVUd;l3-OeU`HyFFTN-eZC|A{iN(hW*B!N~___|4*fof^MieAn#5q z#8B|{cl3YF3MKcB=!_(@ONR_PbFy53%g6Npn29K>JEheLYn0VVtS=NpwTVzkXSV5Y z5U>o+2LSnKFzY9n^_rC#H-8Hqsp`sU7Gp@(Ap5~b+8Qj->y)uSiQa>_P^UPHXAEcE-oo) z&6SDxJu{Prd2-l}v$B?K+y&y%W88KobH0Das-JVl$R%Kzm7c+Ed0nq{MdG!WjWF1ZnJ}PQwC;=* zE|p4!0!-nRc4jWSI>M70yOR^~uw|3)3QWK; zi8xVg!GOd!W%%g*6mZm+5WPKYzw8dUl|yl|wQ_Ug^FPg_Tmoq{)F88Dq$MB#q%j0^ zh+WJ*LJ{=4=H1@esdC-Ym~(8$O1i46sX=CBTr38>zV#2NKUu{h_zXjwavggL2k%Rh zY?)3zCE(7Dl3~xbxB&<*((n5pn_4%<3k|A=8C7i??JiRN5H^dL3HGYC)&F}e=9cA= zhrkbW5kv=df??Tl>DlznFP#jl#USxn^ zmo|O25R@(i?7O zX#=#^8DxBaf(5RbU3I78c5L(Ie(nIGa|bSi+RTWF0Y6KBG&S6OY?N^{x^lIudihj3 zqGXy+Pnjlejo9tSVPE1q)8*cHBDd`XE%B|M9?6;(2=r~i$#Xl^U8SwG-u5PJOObLL z$-W{Ona)(l+gVmNoqxk{f^hvznWYK4W14sdKV$BZjXydP0DTi^KEgse^@ET57$rk_ zcTihd=qWOB^nckmIDR*vnUOl#%!|ndc@bA7?+${r@m{5e;Dnajqm}TD{s$jpi`2~VX3;mNn$P(F{}Xpu?830#g;ja(V?ry&$sUOD0GUv|!(o^| z!xi17rMuUz+<&i*qC(u&YmH;7&~-UM~6t@KXkb86t4u z{5qNwuoc98yuYj-fjHb}2)#Q#-f9}Jw()rXnWE9i^#?a7_oQu^e~-c^rfj6L(#U6z z52jy>?iMy>`9K1M<)XO4%`;yIh}+tSldT=EE zaNnibs$HRVDpNZ3TY46UkjSAge}4LSa7RjxXimR> z7pl|px)Z$=G@KDFLm6Q+>y`sL!zGdsE>Z5!NcqU}aKJr}k>8niLSiBv8x$WOpOKmQ zOQDVDKQ+|Nl(e78EYYlN%#WZH**;zsPK1J~N#zRPXu zedx^0%<4ukp^<#Z)nt8ha44lek?~dEJ5IAM%nV^SbP&D6--nD_^}j#KT0ts$=Rxd+ zkjr{@Ljw^q*lf;puhoF&SMT5sR26fa) z4N6l1#Q)UbhoZJrEYVPII17j3lMySejz;;+m8<2n0vr06T^OSSJ%9YLKiHA+42#BJ zA^G&dSiD$Z^VkNKKx%mCYx*R?k|u4WV}-z)+q8EGfU98V4?20&@p7CnSPQ0YK9z8z zDHLuNR%L7FY`SK^&dBR!!w-BSRC&Vzrh*ZitYn6s#j`C|_ z_k_eH69Du~g`e^vF)?&|75zPxEi+TAT+kDf$=0AG6R3^^I(bpQL}A`=f`;|Gb*0x8 zSC|JzJ?3|y0!A)wX_E_#d7*G!p`Ow2fn zLikK_a32fzfbaXLsuj;Ww}~rD6<1w4m>Ch~EwXV}ANthS3C2UB2hn-JiE@#Bz&l;M#5+IeUA;PiQ?e$J+i zv?v9F-%nT^g!CbC5fv?+b$wctKo)}b-x!3P$i&NYC0rTwK$e zomS=N5O$>YGj&+Nbn2IeyOH;5zzDZ$SkX?3`zho8bi<3py*=xTtHUFpDX<@B{3=TE zSdt18?8orsVwREgWMFlKlySJ~ellRBLGyZlrQxtkts&QQLhV=it%89ZI2qDlDpF*g zX`f&HEuhNX&;=8pbz=`fw!9$xt@&hjnsRGIk8&ZEzL%#BQ8%<$S0#4m7T)@KM&FQ? ztrJ|KO8CDeU4$Hu{q^{IQXRJ(=@wMhoPTH(PGSjdikdw-A+8FKx8I0k8Q2z8 ztlDr3U*#g8wu3^N_ub9FcyQU|wxc#S{uTbLEO+;V1h49(+d~Nj&ToKgg`*im-hNIc zb@-2f^%vy+E{A8K^n6tNoe2=&G?<-OVtTJ&-7XiV19vL(e#SNyv!*jyog*NO$()6RFOY(<+sh;aHIS&$VqA;9 z+4{&^#$==nUu^*|-6^_gek>17SS*!Ebh1Z!{5Y|k^x>Y?uyA1y8K_;7PJ)quUCK3l zvF`KNoZMV24|c+yi~+ukDhNMIWY2bQoV0?km7{#$IeQQ8a$N3X0{6=0Z~3jZg-}EZ`z9d2DI8uwI&t|GF!$iBy z1xJ8Kqlh25dH zE0ge5v+hOu_psvuLSw!nU9eJY2E_j-e7t}0%!1h}#MAWFPCmOHXcivu2svB%-QXVl z!+!j**I~uipzY!0!UFcIdu;P|$^^Q4+~!=w&G5$v-6M-WZo*;l-*;)!cMrVw_=YRu z66>a2@Q=NZ_B+Cm>n#MA8#Ca4(v?SI_1DMVitY8hFl_PQK$3#GuP+V=VlL(wDx}7c z=5J%sWK{`rcfI6=_ZV|+4ReAh=g%Gee)ZePX!_TQH z>!&Kg3qRdVBv9jtT2ykW7v^|r#E&IRfsv^#K>&x;4qSy(8sHD8mGlk-3VGRp7Yzfn+-s&kZVFo3jv;3S@k z?T;M<8Dl-n`cHI{G~wJmiD#qFU^AxNm=*6G`{HEk!vKPz1I&A_d@f9{#!EJzKK|N2 z(^nrigfuD&$$A~L$f}Ft2s?u{@B%`D%o1mfH6GV9;JPg&tXB`)kKg^2BEQ(#KQ?eZ z$nuDag;&nr`J9(rv0}jQ1tbEnz@Xe$7jID$LRcLkOjwU}f~z!yWs1(dysG_0geH2O zsd_Brbc&(HtVqULItaDQxVu5ZWd=5X$T!VN;Xcef1+?j*)(8;pb!*3%U``_2*kwv% z<}EI{YYL_Y$vp=c#RZ`0r@mr@0pG4G3#Cjm2-h+M%aoiFt1kK5#M*l${?g z><1R%Xn^FJL``#G)UPrUE#^l8lp&ed-b}=LI3eiUH(3-S#4j)NGbFGddfTOhFuoKI6@yYEtQOn6%(wyfFiN`sb5utE`Y znA++$8FOieH3aL+Oc`MsH3ncI)ss)go0?#?_VwB2d5%%(yZ6P!ueSQD&oIoG7)llFauS#MU36L^En*cAzJHZ*1L_DIDx? zX9ucj{+e4@QsU9#{^<|vh1_mwOC3*}s?{W@UhD*)^sF%ChK`1VTy>S=*wSUM=0AnZ z>WfftvyS-RaT>G9YA_yWg00vmB0ls8kNvLJm0}clN|{IC?@JYL!@3+GM$8TBSQWYON~?0%As|;?Hs1ei$-E z#BB0z*_!;^=0O^ie;l<*TeBf70|79^Pf65m>x=1zSVhYg4sW-4mD`VdVQql2F3$mvUXq2v0k3=UkF zlXN*GIa?+XkPj=->vgK|iZbD_I9#VB-loQKk$YaWDFmk`s}_Qcvd2KNZD?g?c5R4B zP#raKqWro(m*^r5u@NFk1hTI{!k)hz^$Tfg$m%~w!2zvTQS~&$4ob(~KM%pzl`j~) zB-Pc`>+4yo7HZ5HVW-`@dx|y3vzj}oe#0p4Vy|Aq91*U1HbizS!Qy_EKyffv>B2Bq zm13jYv|CovS`Zhvnxv|+2Pt1!XEWejyL7r;YTR+;s`~sBCR%OxYQCa+{{;&+dGwS+ zbzgF`G2&E@GV}J-VKN}|ljWKjAx}ZZy9I;`;uvoWZEyUDq6B$`D|M{20-yyv^!rG5 zdtk0RRQah7@6^_|eIN*pT-5-qlEDOr6j?al?a#Lzg-cTT`mep6tFt2o1_5GhSKX9iqpb6cp_m5=s_yY zyRip^J%79E$0QbR*0?msxh11v!?u{5^)oTi0&Rj_o927%5;h%H{7z&WC45;JvWAo6 zLaGQ$3T+hL1u~kcqdSXj;OUOKxER#0No%@Ksd;YxaMuwd7Qa2K5^8-iqkFHpKvgOog8LP8oK z=)PZ;LCRJ^u0)W*)KTlV7oJ8o6BK7XNv3kWBj+MfCiS84A0D0?n;Q2ffd8SkO;IYEqp_M(|F;+tvSMHxX zznqBUP&l`w3b_C-r);c%a+h0O6+#fSD# z$APp`m{z&;fuky_lAG2bT>kX?eof#FOmXG*F$Yl+c5!g0qlC5-7yH`khpQ?xYP9jT zHtI%Q5g-2M8h5rrPdF0j~lR%Go>>`cWvpT=G@Wsud+=}e0U z-ln{TvhF7&#uwOn&=R@CYtnA{sn+{5r?zHK8D$dLN z&9hG=&o?q}F;`v83%%dx7yhTj@l^9#llwt-E{H6+5omcMqm5rZGjsT-+3#|@A|Prx zU7+?jG~8viHb9G8X-)mgLpdcd`s?Enmeh=uwqCN2obNG$p5X>q$WpHOCP(PpeB~x2eHrkhYt_Ks{rGzazeOTJ^H-Ap?EVEw;wdNknElYnf z-F6t`V8>1`RO!5hTgkKvSm6H9S&>qKl_uC7CyB;EC+tNZ?|{y z@=bPE^mPcL6O#N7Zw}R6yI5IS&HwN_QG2f}J1&CQF`dpf(;n(Va<%xLr0|*I*JJXM ziE@NOJFaWn>nTdik{icOvuqY`{lqDqXJ#r7Pi+ulwgmd|@xA=buf4d_G&LNJ7s+Ky zGv%vt3P+AUR0)nUrnGmJXmVY5VJX4B>H@Hk-eH&mUZguYiszLo?jNL#o8+bC6 zKDVB8ZtIx-+UlPJB?CTkdAbQdX)huBL`KSop6udWx&8Nz7Czx4BH*Y(@>K1_Bzq@J z8U@e!776=2Kxqb!W1)1oD9u-c4i8a4Li=@##er)eG`d*2+i}S~Fytj;Q&&`3$(_qo zyUEyi3G$m<&kzaq!=?Y`x|Tg#q_qCIiB&s>P%qBg_05aq7!q836SKH1X4Spv#=G&y zaYAd_0i_i6@QTt1{l!sXWd&%8C3q9QeRzJ6AsRN1OP}3-R!S#u4gy4A=kAd$-fpo8 zr2bE@eRV}_2`mj8zm7~*$Qh7hU|?XeZ>%qytB;_)vjT61y_6D9HkEwJuskQD;a7>Z zm1B8b3FekkdwerIdtR7#($rk!+@uZ}E6Z4)=sUH*x(;cj;_sa$ZIbF8rKZ$RNFNnE zBD^czo&z{N#bOI3&O4oDG!`995=9~f`5PC;$e(ck3f2kZ+fL)tfA&7Ui-e~HZ2IH> zrtd5Y_h#$!%F1>Kh;xiJj&JVnswK}JKm2TPU-8JT`hzgR2n8;#EH0;2$PYJ*KA2q^ zKUP4E$s^hMhR=##UgrK26uBR*Xmz;~5%R75qC8@#JPPrd#WK|n1*|j$c^wt8+daLb z(|i>>3h4cT`krlnY^P9AHcn1zy@JFkx4C&B2bWB5FkBulFCU%{q^5Y>BR20!2?z*A zWY$u+id7ZctMlaYzJ~{Q#v&ilzI7|FaN=C+-(2H~g7>8`=IW7o%|uxUJu51{jlzLj z@MxD|Q^?NNmi7M41Oa)ug=KDbi2`w0+FU)vw7Bw70)^q%p@KbN8nS(NbM(74=(4xk zqJB$wTu+T@w(wds<@Z_9jlk09+3v>r`ir{7$VC7l{QhuoU^p zP1#s2EF^_LDw4hLyYvTrDCGRw_m8LrI)#uU3RuCReD`b7&o3Q2_5Th&WDL)NM6|6S z1KA^|>lb0TgyqAENtvxZe|ih$jJ1s8l`n51oBihp9t`$KxZASarWv1vJw6e7UfpK0Onah4 zC?mYFcN5Q$$Hw#wheDLmRKoPdP%VD1Q^L4S+WG*lH>w6>z^2Qq=Mo+s0*y^gBjDG+ zsf7jqeq-bxG&cSQspkLS=_oj zP%iR0;38SlFQcs1*L>?w`C^-H^RLO|C8lSpRh(!}%h07KEK8g`qO3G_eu2H5h2(IC zGVX^kQEVj6*@AMB*`L{2pMK+>Dy=)A{zjeT^kzb8pV8J3=|jdPK^D0&HT%!CT4Q+TI~cOpS&MM^ z1b)6WF}nGM5fTh8+Xnd^(1P*`?elCs_tw_Ty%Rh6_V=gF82Is<0kuE!o@kQ{+P?M8 z7#!|)zOkUii16RLG7fx z)0|B=_TzkWHMz}%`+X~;Kj&|4<>hoTM0+8h;lqgSuEhAd zbP|yZ_<4u)CvevL0UBcfw^}@23(5H^A62#e?PF!@){;3b)R;XE_Rh+v&tJ_=t#STY z_OofT+m$rTBuQLk^7ygpZmL)?xC3qWos{F5AJ5Ym?w5vce?JlVRwsLQ; zuBEY(gUN#rM4Z`;j6waXT)5&{I7~oOly|l>5}OoqAb$C(e03E?obsi&H|NEikgxA7 zzpr&SHlo2iOz^Gtmb8qsJ=Aq?HQUrc@Fz4mlj%-s$eiN{of!Y+jS zF?vH+@@JbV9N1d->#OFUQbmc8&#!5$C~qtfLb3f<1?36cKH6f*HTRDiE`br9Vo}B0 z5L)HXoPo*^k=KGDp|f&=>Dx*;Pl7g&ZmKMf&0&JxcrEF#|0Nm6##gQwis2z(TPWdupv!>Q~gvwkDGiCLwTD85uh ze?Cx$MDNYU#r2rU?o0BcDF|u)7~+DQItkh&M2|LuN#E0BU5WPW^utyd?#yk~(~1*Q z&R0LPE3P#lCm3(3^t33-?d#`>zD0RtuZCb$c&qz$4f0qSmzB#qb_9(*o91?72Jfz# z(>5MUyG>9ruZ_qLvvYas@qi&=vEj$5TYE$> zG0EsymEW>7OwgC;**S(0D4`@+Ha3EsmIG)N<|JQKeg=1bpk9ypEA&zSEn!n$e@GB2a%W2QEoFV%r#fpnr%R{rt^|x;oM3NCn5>*`6;p6MM7A?t8$(pJa9m|3CP8s$ z+DYZCXp+`?qEHrat3E_QPfPE_F5co`(CcwxW5Mw0ifRWupu_tFCRq;`HdfXrghdhI zj$8tSpwhQjspsW>j}Dd@e?Ep?%uEg8HXyS_MJd9-a4Ia8Pc?p5bW{EUbz+`^-J93M z4QjXC=X5ncY+qQIE5fdFKbF?|3VEwv6sl-X+VyFLrmN0yBp8OH<`CI4MKFvQ5DK;M z`S54{+jFQo9B2BJ#j8MT#!1v6UxlZ^Z^HSZIx~ZFB6$ZcUmh%m4#B>>-+F>y^h zbPy!&PVdb^CKjR#n{f*qsZ7)h4jb)%G?k9xlC!_Am6L7jO5sdrmOn?`*GgzCvgvDf zX2>cPQ=Nzrp5%L3sTCH?^~K4l0Ro|NmpDmFhm4Gv5dVJAkvM0l1q^g1K>qBrXymiV z4HaAIqWXKXR1PWu=w<%*9GqkQaU*U*Qf_9gd6xa!21BV+mUM zl+-m@81@g~iDZM$;1LSs(KbxAAa9GO^mTjKF4OxG|94RZJT2y*@~>g3JZLgeQ7JzA zhW~g}{PT&W%Wx5L)>)Mu*6x9o(fzN3z8Y!1( zhH1%Oq+{5OD9+UiB2wG1l8iTr@LpvUO*HjtD#tD6N56>CN?*?x_YQS!k_w=-N@qEq zF_#w=oCPLA+v%5DIIwkIY&J->5r zD35|j(+a5e>XU|ZPP?ML)e&^VVd&<0jBC|*7m$cK1j#-}DZM9OTVwoQA!p;~r$tuu zSvr3&uqFT@JY=--)4sfTveN!wZKmv4#`SYq4OF=8Yw4JDGcMObpuRL3@=UAP+P-co zK~@d|V5Qr~W%fj_N`%aIW8jUApV+$AJ2?Y<(6K*}lZ%qnbmrdwU;Cy028^~#(#~X@%&B@mhR@plXv)pD}MkY>wI8ziK_HV4V5p84mSE> z(;{tgCu>SriOS?th)8~2un5&kruvD%-wU$~FtT~BV=iOv+sT>Ezt!W!7M`V>kg|}P z_ZgNLlIvSg6E6L0`Ak_?R^i5#;iJYnWJeWOmOq2bgL<7@En@Q(5n(8pU;gfE7R8Rw zE3Y4+26-O-rXu5Ddb3Al60NM1x#ajhPLm2r?h-3PXBQ_X0m6vVQv1}EM$I}$s*!iep=SQd7YrN! zgqk++M{yNO?ZMl3r=yD_{r{#+pWo`-aw<>D_c@F z>*}Z-|0Va@ZH-p;If}ix`QLd!2LB5%6DHwu^*iiOcOLI{ZU$rCQj*|kZg7yj3K|XO?`HZUg0uF%jrH_^jz>~ zfsZ}yuiC8Yr6DICh};!gqu2m6>*U?szjvP%-}Szmuo>krdI3tU%xRV7zF`KSNMtpi zVC#S&DlmVVX1fH7e!4+JIV^N&*OX|8J$R`Twgk7HH%4~+kw16NZZ9kYabicQfdW#+%O%~QvR$A%ShX=uo_eSgnQ91JWr*@lT zd!;%o4Qbm5*_S&yD_t;tG;%&GzD|j6-Ll^9cf6B?GRkwoz=>#mV+0pcpaxN5Zm_9n-d9{OGq?VQ2QDe7%-TD6WKXYSY9+rcW?|elm=39*C*ei&>)fT458@Ul# z&wfB3Ycg8;wKG4Zi(=u>P=YkWE#>IZ@_u0BKSU(%yB44Fw-#zHvrO%-Y{ln%i2=W;z=8_YK8n4tFi+d_ zPjfEEwCE%x$jdw!_4EFv=PtPbwnvsQ>f-Zf;o#CI;o1vK9Sc7xeB|dj8WE4MdP(9WJO3X^R~Z#$w}mm05R`7D1?grGP7p_OBg?bRa40mJ4M7iqhTTC z?wMQKF?1>O7ioClklW3#eX?OX3j@`bqm_SQRk=9IS<8743$Ee$!V zG(C19`?VtsX{7xuwp$~do{|O4DaikX{IQ&*LET*gJysoDt>dK>BvqObPt&|CbhPdH zyFmh#=-9A<6zARyv~1-rNh^E4Hb@h|O`9x#vHh znGvEwf`sQ{4t@BCNMPxlAnJO*I+j7~u`Rt3L9Xq6{IXnEcQF2&?+QpLGo35kYW~e7xf*FI(8WqojNRUWBtmky`h4GOYyUz0$y((V z2g|7<|BZ^7xFA#Szy+jRLHYRB;gLb$4NloKXJwe3voPYC=KMjT@>y~oe{ zY)^un=d$d(pp3^e4R$=+Q6HHZ96a({yslThiMGD|2(eXir5|V&N=o#+;7*;aK(~Mm zbdZCz0ReWLfTvH-=Qx_fVZg67(JHP-!X-{`I8MY8$*#}j7frb1_VIlQh6mdQ$J(9Z z%`@gUxwwRWmryRglORVAM2P-RY(P~|e(f&jPGNufE2iFMiUXppElGNoD)=R=w$|0@ z*7LZ-tCY~NufGFeV~$rh;10`pY4Pc;k%B&D>TDyqPw8iT(Vr&h-4^CQL{5SeVQ&yr z4deMev2M#R8kh3xZCY0HcI{+$>!EvsY8RTEjre)yE;W|X?BZdjlDj9?8NA%_ETo-ybV#Y za5GkXTBZ2?;kjq5WA#%;#hNN z&KU8LPJv4eeNi6AAOb2FW0)CaeVAk^TNl<%BOAFwXSZ#Mxl8gQ8Yg2py0#!D`+ZHc ziRX-K!Tp54YwGRof_m>mnND}5R{oXU^vct7KI=~^=1>^($p&g`z3O24>@T_PMf(r~ zwffbQe*)|zl3JeEYy)T?=4$ND&#(6AD)*`v8oSTP{>VkH3E6Vfu6Ta`XGK|%wN-Hp z$ML*~5coDS?02VKg$?Eg2~KvLrVq~?`qMh|1gu)sJx=FW>i3$Ya(~x4Y;F6qzvP_R zQ#`U8e@4p%2jyipM0Rtt)k{+|(dCp?4FFHE(O*f{artTi5!l?# zu8X$k;=?Kh1eui+E92;7^v*BEDS! zQ57OQ6?blb*V=9YTYP!x#46;BUBasEo9ept4*Go9HcDeTpaDwdyjOU(Cu8g)pc{$t*uK|E zCeW_{xAG%x`>BdU8!dPGSku)&l5#oDjD79v-D~nZrS|OaWWAy;yYZKu`i-ICr_S^) zE_97qZ59qvrv{qvaykhNgE91KTziwmsS$rL;w?nD9a-CnBK`qQ)=*uYiu2C*cY7*# z$kp_ar}L*aaztQ!oImw&p*p)`C@ppmf6~$pi9dPebstiZ&@Dgn%oSi5*9{yC=@=zL!?gSBYL#>doNK zk4K)Cs6JS$tk>b>h>7qfKgfb(%ka5ay;vXi>L%Q>IS)qdu3Oi{g8U9>ghpo z7CF0IrsK-54Y`xZP`1z!eLVH}ufw{X+J&2HWeiA&({^aKPl{P1=SKla2Eo`R2Fd~ex@tI$C4Ib`=Wx;1cXp&+u;XxOYRvoGt_tLX!RKIQseOPf|#sE2>VUppePBcEgd+DSt48vhTBKQBzHlDYO zoR!*}kmeqFr_&(lh*lj`szuRmd-T+pH0sdThwj_ixq6JTHi$Sd;<)rkGeYx`2p z{kqDA8n3SYs`WMf(&YR}*Chs0sBn%XxogU9wO{bXX8 ziRUP*Cr80%y9Y~y(JA37xGHenpH?h+K^v)ZD*_$kI%7*LwAK*$B z@84q;cHXY~`8$=$6J$eYyEx9XdBk;*w0*s&S>}+EV8asjmG|o+t<+hW%6d}$_R6&0 za%B~5a{FF$EGaoa?X9U7>YWlcd$!9ky)Jt9JJxkSJ0=&Stt@Fs^;B0Ic zD$M97>i376rg^Q%c17Iqs3)2z@6MuR=ELSKk^(W41vLJl3k1sDVKe!A_!mQx4k0ct zuV~610G!fEN2eww#!qN;G@pW}qsH1=ENas#^b3p3hE4amTAsaLvwtcdXh>(mNnMTi z43_x>O!j~*IxMpDybkgM;`pQhfjFP-jsqxcZBELrzv3pf?YG_@+kfs*s+qFa=u0yn zd*azpn`Y$XE5Ur8Fm5F};hu0qgxc6~M`gIu$gb@kg-Xk8a z2MlAjlhZ=!qVB#1J^c>xZa)E2T8xQ1_3)OyjJ_z;v2TVv%hdJ^=D0($?(t<85*Zi2 zIKMu4{&#mqQ0<-blvl;V{T{&%cG}w60(GWhB~Uk=l1tws>wkf7GY$lFM|H~q@=i(< z8e)g&cV}>~KZ)5Ut-BudXO77~rt}p3kt~G2r<4Yd60o6VfA*`gSHUrG*B>*snwZSz&&*&QS0p;M=U6X8%`2+MBcpri?!TW*D=4;u=5p*_B?Z@x_V2ud!FXm$Gs&5sS5 zQqb-CiXQ)!IR6_Y>R%4pRbdyLyPM`a7gob23e*!&Q^NzhoT3sFgHxKY>S+jwh%&3H z;$tsR8^(O@&U}2P9J;cj-nh5utl1`tE^RK_BJ-c*g@%3uD9Vp2e#ef^EH1VPUL^y@ z><#0nKZo4>cuf4!G7ew>mf5$yh~>&KefqNk`nGcL2SS7#OlScx=bhH(GlY^Pk_rop zvK2#+p|dp?9<)q?aB$bK&v6Q{P5*)21E&TUnh5*qN|alQyY0hZ0=3K*o#yd64eoq? zyC*UnP>+JL)n$2E)=?g%Kz4*fw2&)eZ}&}~sdCu4MWX0oR3vKWQ_JzjaGCpwdBe$= zZaxy(`kl|>pS_;rL0pOFqlk!z8y_G-2>&_B71IA(a>NXl^>)GYy>?ZENe_9w5Y^(a&+r#$@cRGTXU%7gpSLNMl$V0r&8iST0$O@F0YhHx|z?p^OuRy zTOVsQtztGMB3?0QX(n`?tK>b3eSKDw1YhtKP8YDA{snd$s_N-sqa_O1P~qX>m0Hi# z-M$7p%>?b2pRlm7JbsT-4Lp9Eh70cW52j$t4zPox`dZfg7A{ZlogH2_-F-0PqWIv6 z{xc`%QJ!+z?w#i@SZwj`9j$->aV;2+ZZFmjj)#@AfZc0tAgy!mx^M0SDCwx}g7?sL zbaYUbxCjof4O9V@u(oDzx?bTh=?EvinF|%T*NKGgDX(Wf+N6?Puh>9{vx@=J*}fW@ z7bNEsLS-Z+^=a1mhZLlIm@{^EiTe5xC&PJR zTNc(aZDH( zYL;tW^%mjl>+e==btl1-${y6Y>>04?R{gj;B5ppHLi^<~AQH6ab9W`^dCqCzc_78h z%Zu{EfjhAcY@d8(YHE6%aB*7Q9C3c`>UrKqE$!hUj9Tn<4IUPsJNl<5N`6Li!ds6S zV~H@(wN_-2%MKR>4ajzR$_I8{tGRQU+$rt>sZipS-|OlFj_&?g!@mAnT5hlYWHfhOw8!E+M!sSIb7Or=Ny`fH07R^CB> zI)O;5&?j(o=4O8ODheT0cYgXU`=`b1G5m#aJ}V)+1>Mm^(&sb6!O=)%{Ih9C``i zXEkfTF+Ae(6xM0E6=vqyl5oh6lk^E6!gmXRFe)M z$1my6cjP&qr0zeQ0=x2nu5Qs}s(PtVSv2I$Lm#HuR&pSn{u{4~_ zzffZ6@$|0ToUr&K?A62v%52t*gxAsBQMPi5iMB9A)Q2O5H+}Lm4Y{WU@yn*Bm6f1} ze!G2gh3fj4K!-*={-Z?(SS-d)6Kf{_aWC~0`0q%~_dkT9H_0EGP0e+_#U=MLDlYkK9} zAZ+s3;60$P9qet3)6sYe3&s8b9_{y^sPm4c$gIx2PMCmYsZDWBTdC2dBLOepLL^w^ zDa6KhGf=;{q^k2Sa8SVd*FbLwIxeL+YQ8@J=L^VVkB{~JES2S20W7sZP33_d5CLBA zDys*XK7iASUQ+8;&$|^@Ra?L7m-RCtP&^r>B(5J8lJ39BLv}LvXxPY!j*4j@^n_C` z7;Z9IEHbM#1Y$f5R=@mI(iB=Vq+dpM8?QFKqug_T#~+sj%7E z*;~UPENt~43FEVrw3(IslZ=YD83P(ZA;qy?Cw0<5@&^!JYQUfF*Gq+g_hA0)$}aOK z0ltOB!r8?$Vq$clqe)ImIv*U$A<;C9d<5rs;^2Wcj?UuM8c;lgYz&XiAlK@bR&zo+ zrmyA{^ci~zd!AlLEXQV@SQi(r1)29<(nKRv!L2n^9ShG5c0&nKGq2>WO830^vVJM&p6`Dm}aDHvXFU@W}2*_CuGmMw=;P z*No#!CxvF$=My;bJpLvi`@RsC)-F#-xE>nWnR2uiH9qvU8i0t+TsB1A)>bHy3zGNj z$|aIIvdaHqFAmqdaO*w@@8F%VN)P zFJ4|X-UL}!CkvPSct>#Ih3H+2I~dqUU{;oR z9QpaXd0Tk)5i??q0ENLg8qtUXr-Mh{pVro=!$JxZVhFEHQ(3rCPUp@-u~baf+6T_y zswNIkdMB4NF|3F8*TciwE;4BqY8(shus&rpeS*q~yTh1t(erRes{wp@`lvd=uCp31 zIe!vH_sG0o_1o^FXs_v~KsYYuu|~OE`E%Y7?6fcxyJDS96ed2S76~1Vi_7HC{~8KD zsqWa3mx;+lO|g&d5{MC}iccNeJ74V)t2;=B8m*v!Z)|LFLs=F}%in(JxTtG0%qSv0 zn;z}Oo_-oTTf6@&t$7C_4jo{6b@5W4pmpZDX?+w9Rw$f-&url`QAtaMSFiTA)RFR( zF76xsK5O*udj+_B)bYQ74IGvOwH)~Ar=9iFbSQF=K_Myhi({_cibhmCl7jF+b&!(q zDdb2cJY9~FxTqjgXE!O^r^Zt)H^DeZh_ZHloWS58HvHavA{jEJU^X|LKd)I!ue+yB zxZ>kN)XkOZw2R~?BbqPc7sc--kWPOlnq@bUCiiFD)emc`X8!d4J~?(|g*YL_43(8} z-QC@7f2N}Wh~edrq8;TU^!tepx3A%FGO1JC&OlYGEXU=4su(FN%*oaenHpz%50-JI zHCV|`_6sv9M55gRZLujV3j#DmYxRr@Z{%DAIt=SqYj>ZGfwfiB@kFmH9GJd(g}Vpe zdm5JnS}oO+lYgRinf8(KBU1lof5KYYlO0y)-9Iv>PL)3r^&qe@;(GC0krjTP1J$ScKg7^y2mP^8tG?!eH3TcVb~b@69qOgF3Nsp#(`5seBa)lGKF3xcCUF;DS3D-E*-Rj zY%LA|N1)E-3C~B8p3<757fA^ef>$uLF^e0PB!U!(n!EgpbrLVeQGaTCTH_7BcY`U$ zX#_O@-yYiLmOjHT(QCQf7(SQ>Q}g`35vrL=aB#4RVJOlaC8{=v^_273r4O8nZ2Q98 z(_e{;=GpQB#n6skouTxLjiS`oEic@?L>q)17{_`MVa4aJc8${%j#~~uR0DcO2{kQZ z$W@9G8tUoZM+5q`Z@1`7X=D{_>bdDcLZkyI(D`OlOAyF~!Tk-ypOksNl%el{qzHamom`xLW-i*wzSxI10=uGG#w)PkxA~FVg zB3I)9Dhdh_GC(r7MiYOvX4k={UhmK`R(}Z#!dz_}+3UBEQ%H<{5PSVbkK)#Clm)C3 z#}ci#qr(BN9uZ&&crX1JG^R$k6BXylS_W??0CxuD)PQ@(eDc6Wj#`OWDYf81<|cJ_ zhn+`&Dekb)LfxCis0Zk!;5V~O5v5GdQ+TWYk#Puk1@;b>T(isZ08+KT6GSEc_aMSi zJx@PpU>0od0c7L(A2{XtfXAMcjUL6}_wW1bUmgg)e}CChFHA~0bg_DLVf$fQn}UN~ zy1hW1#84{;uo)C2JdZV{qy)9!jon3f^yeLxi*+_UFgJQGukE@?AlhU_UZwQiUu$hZ z#=+d&=e@Wx?yjg4=D_x30BB9-0Xi&B)q?$~0pcV2QB!Lv25f-=|7YJ*j|qfBw0@w4 z5_?}q&?y7|U2f93kDkmw6Fo~#9CUZJo+YTGLBQ}dh$D1s>tOx%1_jp|q=_}(xjD#T zj`b$_sY^+n4^38TgFU$XN@-LFms`Wb2S*-z?GDKTCYvig`G6(+{hbW3*^6su)A$FM zlQGe#Hp(*lPg?N!={@7wdpU67eBLt$rBvN`mgv7y8qu=g zE2&0f&bplJuYui0Vne-pA{2qg_PoY}e`L}%?``L?l<`xjnJnDK2|F{}T8VmC=^Pvz?t5 zDglk+Ad09-NeD_HW@}wUvM4lpx;^9LZ3~H_Ln*gkH(HFdHA`3;8F6ubl2dG7X?U&I z)8Dbt+Is6E_+FB#mW>Ta$-Wo_Ep2p6e7zs5-z=K$uGiJqKCoAderK~H2P(lTdjA?{ zOR4P}iPX9)4uYpOd&+^doM+Uw7LG(;uXNTcD%jdFJVi%L%`!?e?%g)ImsQv?#?2@q$clYHLq(3F@eQjosb72b-g)Z+r zV#%G*5$L2?e{({o8Hqvn9H*zPFL`p?l7N?=wxGWLj&xiM5Mr`>>-#@?J}lVkkU9es zeB}1OFTHPF#Zue<`t1@(m}NO(ryyTzH7`GukM1ZF?Z2Mh2qj=t(2?~%34XpF9N7uD zJCiBqO1o(TbIefEkx|NGy%`dFcfJ0ew#(1M`@O~b+Ko2U*YGqcwmLU_pUZyXC%@Yl z;vQlBDU0D=#LHg|^oOoa<{SHHZojPNZ|sdoyv4)gOG+7F=ufCmsSiIQ)ua}P%D2}* zurz9HMDxO^irM9e%zi0Oea_5cZC(6l#Qthlf3`&R5RYQ=x>aW8KE385Ol79R=Ms<}x*v8wxR&-%==G zbt881>+9`qK-Kf){6X!lQ>EPP6extj8WrOd!T8;mqh)OCETeRCZXpMGUKIuZs z&w|6+wvN_JfL|&RR2TpopvGRHT+@J)`pvp-i3j*4?um5Mosku&ro&-1!J6*a*7grG zkw-+iywBc%OGH~!C!{r(5pY>3)oqYWq_nag1z-a?S10*2K>CK4N$27?5E@*DW5;g{ zSI*23vB+U2@L{7HTxqxa%iJ$v*Y?!`dCoQ<`}3~ao}u^|b{0^$+*R zWwE&5O_j#V+`{8=`l0t^OHf_q1HJNl;uD=m7!L|IsjXRSc$JE+=N2b7EPFM;w^FnncRA*asU*Dqa zUa1q6SUzPRpQie3GCMvUBu3zBIWp4Er%|~*^ts%vKc52Y>-!JwDOg^$Okeqga2iYOoCpwJhJZ^cl*82S?~@4(HAgylN9w@36UcI^C! z!Oi07v(ioDa~C6SV$S02bvERlY3E`le2T0+^`27ELlZ&9Z%GP}y{!VcxyZ{?c zuhQi(E8@q_`7D`!&MbPNGuF^=*)CTy-V#^*!uGx_H}hVIK3(+`k3F- zFAW4Mg74mw9rZJz{aR~7-JAvb`mXNd#h)xpjJST-adF_f6&1;bebK7Y(H2B$B!?fk z+y-P~?Jkxb4J55zH(x2|g~=83AYRFDyp0RPdbodJHKl?`i@eirx{kLIlVjco#%C}) z%#Oh{5R6&`(^0v))NnVIlcXzUfiXQp2dDZhHJ9eZKXt>ZX;EM1W}S%RQv|<+XcbH9 zB8(mk(-pUjNx%dYx6{>A9rbIi{EzN-U$ab!uPj~aM|X7n?HV6-py9wp!a?=*2j6vqS0j_12On{8@Di*qLaBI3 zjI<%?dZrmiLo=$;p>FC@FEmWsq~>C=kxFY7Qh7=lfP(@gp=I*SlQ@oMPtql@O4F>H zpnOIHXuDNZi;yKVy-0fV%u7VrFDN*uqHU@Y)egP9c_6@tF%U6K|~o90JdUoodv@l*VQdj;5-F zH@cxMw%ZgT*R-6(s}?I=$7mvcvi6}ILD0Zm?H7SqS^3B3{aW<)_UaE1hsDt)>e{&E zyr1wweVNYF6B6fc+DvzHz}$=0KtfV7tUv_3^{{aJEUXB zM?PE(W|6oZF`j~GA<*HAd$~hirO7$S_#t__99R?y$@uv(&aK3@DH-Cvidy`maa4 zGh^1IT|8f#SCp%4p3_Dbu&tbe=@vNDogB8aii@H}BwAND4;?ORbYzso;^1nwqF*$M zi^Vinm<^>TJ9ESLN?qOr(SgKn)Hsc@JE080O-r4s$uWMpu>|K}!KHpP9DpDX(J0v1 zP!mR{_35BEXD}FO>5osn_a_T!cIk0=XTOV(t8?hLqJ(*O-kZ!n>vy?zwY6Q_0vcWe zJMV7-Fe66rI{cP$(bIu>vvWI2bP6K>;!{Uful2U{hv0MF^^y_@@V+Rjzy~1_+G1Xi zejR8xV<`GI9zdQP{(nF^#_q@Z0R|P|C*4( zWC@gV;?A0+R#5Uqd(l))Ob8T%04WKznf1qg1ICE=G10c{V$?EVvc9#^xK`#@wY=(#@b0#xRk7z9#6vLA>0(WcPa6i}lBrD%`nZzUIrbsD>IkZHHAEZ`ULoY-B zpwTFqY-~H8$kX!587K{;P2@1Elv2Y1Q~D4MOfh6>({+R>GB4mcUF*;*yf0cmRlsGE zHsgSc0!BcpfN|&VkimD%oBL$GQukB54&5E|qiHaz+R75@wv>?9DYJlRKkw~`0LAk$ z>X}PIF~D<^-PxA>=pjr6PK5IIR1k=1aCPXX*kU7#jk??|#r3~{IK zML2Dfi&0Ghi)Y1D)dE1Hi`_g+iUQhwX-R&gdKOfX4hZh08`MNewNrFV42amQ1=zJ98aIyTmZ7r@%`*`Ge-rN%`8R!hd3LFDF@=!b&> zb=QyM#kVGtg@8l>&ICcdcdI&v`rnBYC3^@Ojw4wvhbX6{{76%r!Eb)HTMrS+yZP0zEW*0UeMVXuMUTx=uVxp}0FtE7f&TX3u=$`zFC0LEpwQYv+v6&hS znlm<|{$x60t(n7jNdyWTDN$W;Gn-*CHW{kD19NH&1B15D35#f*33^k*$EV)5cQ-fA z(^&G^JqCP^_{&T+=3 zvnY>987C>zS{FTo1jC$ZIO`~p)U?MTy=bKw7C1ADKB7n1O}GC{YEq-Vi0M@0fLA*d z2xi5@8{G+g8oWhtKs+$@4?QR(4Gjg0JJQq7yF$BOSP1eCCVle-9S}thz^ux=u29;H zb}KNl%D_BdW0I3gT?`NsEmDK!1PeoIC?Q?=j}qz+Pi@+zu24nS-)P4-koMtBW9zqZ z_CD(FCDx_*m1_qXa-fJJwX!uCyWUexgBi9%$L3etzu$RCWtLNQ1!83%};%->Db5dvuSplzkcM#$d9_@fhFJiu)$ zD`2<11b6a1D%CfL;#9K=YsAV=;HfN0u9Od9r4cTefRiZR$}7crk7&=oFTJD zyluDQwtVvR`37Ys6DU&Lg-+IGWq&o5nUpR6#xVU^$=o9}H8Sk-C=aNIpjZj4^*#e>n4c*rQ61hQQ3JmVI{=nZ zRJVPA7{e4O%^+gMWVY7f*9)uFU+CDM-gyX@KY>lO8s{5n3#SkL`Q??+iXgJ~e{wnz#{>#HjTTOYz>v7yB_e z@=<@M!j!Ei@S>hh^?6Fi+*{dx`Y4oZSzAKWEsh;;{h#b+QnIS*Xo+!?#-StR`yZ#C zwOjFW>yID*6WC_&T3_GvaG0FTHp*`9HYvgj?*oP@otfbgiSI?Ov6O|qJsMg-ahmz+ zHU~q`@6-H5zB8Vg2FC%Hjqe#9z548U9;rBZ@$c$RXSkib(buR2d!Uz5F-Tn1Ps%Fd=8n@qnuwIwsrM61M#c4aOKZ~algQGwMmCwxm#02R;t9maD7a$mP zAPL_c5JmZR_*rCuo0ctfk|!SjRbr){tc?LN8ftTSC+y3sgID z=i3i`V3~fcCo<&KH-nBmi1`VXB2Yb?UeVm*R|7mS@4E%8#}h8?PVJp^gLdd6#-A2% zKv?4SKd$RG4xbQ!NQ19O8mN`<>g(-Xk3Tio0w{pmSSE-$nUtA=g6Hv`V$xUKy?(>5ty zmWO|rALHdC62`lXEJeG`s+{@%2>M?X$ggja0KG87@7>?U1!fBh@gM~MT z7oPb8y}yC*b#bMBSKP>fM|yOe4j8QgQ-&hE0WO?E$<;b+(Jt5_-}x-))`yJ;{{jbH zqgzkjDW>&R{Yx{8Hj(!EQ$=fdp=rP`1n=f#M_G@xe?_GHzkXX&DAx~)zuK*UI4j%y zOY{5ec)F_V^8P&(Uku`bva%5Y7{#!U|Ci%;l)eFeGVdBsq1)BU@%=$c;e9|5L{!NU z5%B_)*32xUcu$5vQ2Ya@od})8_2f&euursrhg&x7am1SSf+p1|Y%#PhvG3ZuQ<4Z1 z0nT09_43&2vjeg)YHT8eE+;3mszwK0f5u?%i|UCa*@(8_m5x)=dqSu>cEmC%Lr)Q1 z+((u$59ho^djl$ORn;$7N-4h<@tI!t*bO9S{Og>C*q4}XxG#-`2qTcnFkHS2 zXlSmuq7sg?Qlf9<_H>Aaj!r%c`(w25Cg-QrK6hRkfIF;s^hl0wV=QdgPx$e?X#sZa zLnNf&5fc|bM8$pUvLB(0%o^ufJ9OPhu!Ro?LaM-WJFfBK1ryNb*jw-V%w+MsdGV}f zrGj|vg`U5I!m5*JZ3J}Xn|px_i^OGb?SXpLShiB}5A~)Iel?r|;bwOI(LD_hrW)lYCGEO`%cO0>`D*FQ&LEj~wyz862i|g6&Vf zugkvWD+YcWy6@jrrvIX-LA~xiDJ}7@vbmUGV(ft29;JG4X4aA#dLJpG?7!fEeAH_Q z1~ZiFLKC?8Qv;+l4hlmtW5G(pNZPxZv>V`lyjBmJ}FJ~wmJkjpr-yeh3j9;Pj0 ztc*)l@Z&c~@rfEbyW~OxNeykq82I~#tpTY%2JYa>K|b*h`>05(<)TxpwCM&+m$!B& z=BV+G2+)7$vjzA! zKeoptN+3Gp!0&3WbFT4{<<_?CvFFu7(A8WP(htrMN{K+&zSw8l2ev|wD-cp~U~@JX$x*E1m*>3K zVMD|gih3a>$P^0-)Z><5QnX)kGx%*x6UfIb`hHS2VD+)P;!$WLy9E`5N;H~^#JS`zD?p;wBHq? zc=GUZHZ{V8L%$@~UZPyFr*N! z2rNL<$KjpWI_o*Hp@^Hs9Uwd|Iri z=e3S@E$NlT;KI+5tlSsuON@RGFRqVJaJ%=)Dnb zM+x4Ax-3J&ijC7l#Y{66+IUGy7E+|Me_QwZKXDfkNTb5UgKAIx@61@+glZi+YSr*E zt|FO9t=&tykT0f|bU10aV)c8VhJIX(950fPgXPua!*@b{e76T{E0XEi@GMziXO0TF z8)VMnqj#~`9Qwr4!a;y&QR2YmhopJ~jD=cQ@%_w5T&r zOWldgMhlm7iopm)0(WqK1EYf;L}^GgVUjh5E4$-2bDO?$S6?!)13lD9tM7Ms^yrV3 zl~laZUwjbQ@P_(K4YAcLL5kkZiA=SN(O~f7SCBjV{Ey@?i4=$J+zRq(DD4Cy z4maU)`T1{K-`frP@>Qffdh#xP{puV$rvgjLyk__g z@1xG>&12OGH*2qg)mXS!I6=x%`p_Uk*;t<5$sSCqfgo6pRn#rIFJW*jFfIr;3z(Wj z?x%Hx0NfIs_+5nt5QYMbHv1cAvl3r!W-PG6bZsm4oCGIO_!pI3Rp~QbCdF2ia&x)@ z*7X{E{Q0rR9?kmEf*EefA9A9-dvUJQ(XaJ>mc+R!jreCu}ZiQ+Cm)-gD(n+l)UMq=KjqG7a4E;<#eKLFHAIAZOh$mVwdh8(6RG~YLnQtat%#^Yc ztWuymZECh>XgZvupI>&3dskaNM3Ok9*8R4oxg)!(OI?p&j&^giL?f}pS- zVmh#Qv;ZrVS$4a+KUWf% z0csX42{AFz73C35K5uK3mTzq1_aP;ib2LFz@!1os!>Zm)eW| zGw`b7haY@HwF~R9A1!6hB{n0u5J94{z-c69SoO!gR+PjYFmXz73ex!32z^d7QOyAb z9h*@KF8#ac>mhaAjRroW`5MQW1O7Ne2+=O@a10jK$}s|KgcF)_*lz!KCngLbQ-fpF`JcZUhX-Cr%0+RpL(W_Y>7_Wn4nboo7yJ(p3L; zIp(=s+}z;2vK?^bPfo_I16(s~B38R$*x!`Jb^;XglHt1|aR4XYy3Rn((bsR2O?w5&TZDXf%MFeP z`(6!SPfK$ob=JA%mX}0n_Y5fx>ZDdk;W0^%N5=ZepJcJTREa&B;l5T|STP#vOjS#u@Bmx@=LBGGkHmT*EQ4&)mk zE0Tx?AbuTpy0v&qAoUig2Jab97gUw*V|qNa;Tqv$Z36QOS;`$GOUi}HMRcus*HZ(L zajn5yGOU$@`^ZI;cDcno6abTFI`#BJ~o^Bo4h9 z$kp3ExdOpD<(oNTNA+?C$h#p3L3wSgL?rj^#pV2f!9 zk5P5wy2MEmi=k}OPn(<*;U4JOgl&gPCY?ZJBMQ_6x_K;tQ#f@b$VqM%$XK(5&BfH9`oPQpkT}vBy!z48cOOuXS1f$r zVQwkIG3!wH2)a48l5m`+%d|#4E*1;=T8$}0cqx)yuBq5NgcVAi@2EAp^Fw(E2B|q2 z?D|$r2s*j1C?%p7SlQUq`+IH94Sk}hXz*P~ia>N3|BlaSie}%a3gvF?OMM?Cgu%UT zCm5Ox92~q*5v4}K3niU8K90d8_m9STDYi|4T^hJCo-B<0`byO@1)Dr&0nyjf=fXY7 z%L%Oo#MS7sZz^LZBMTsn+iZ~h)t5m=8@~2_Km0uQHL&_Mn#_&z8Qtlbp1^A8A1ha* zfn*qn3U`5G>r+kNbbAd&Vn3c{D7D~`!#A=I8~@}lXEYus1br_o^98;-lvd^*TAI(5 z6}^*_lup*&*WXmK-O#ioaCE})i z*~mGBcBlz7rBLBrnVOR~{=gr$i}uwWMhdamaVwt5gs}cUI2_~z;YWP_e4e0Lh?*JG zW=ikfzIg%YEp6Ab;#piNy;Z{ z@k~aF3Q3gsAN_}>5W4|{f6EFCl60|1+1HlmK~Hboy#i!LQ~V!-&&vDrMq)z$)RHql~6!LP>>ptHVEk)$pOiMK|l}$hEfzpT88e9A(d|Keg6K}^{nT` zy>6E8bh%(SWAE?&e2xPO*FzDN>WyFIp#LxW-=dNp2KcOEzr+Nsf6hf-O3y@hr#o7z zYqkFA7l<>|5X*A!vx?VNrDc)tHAAK)n&ug=eN@+_mNv$QdRm%Aet@IXqtlge-nZ8z ztkl73m_5@;ChyEhOB>HZ!(*%NApvnx!0L2J(dKTV)a;Ee=3LP~cFn~cz23LZ??tBW zS?`fx>JxV>i9R!roieKr!8$x{&Rykana%VFkItjs`YuUjhp(O|@UjH%fVW-N?g8if z2NO>b%2-cH|E>c#HJVHGsY(@KiS!ql=j7&I0F(F9hQnp&Hifg}EnYr8RUMrxABC;L zbF^Y6;xS*p(qx_;FN)dzx}2MrH(iEj{h6nm6p5lz)gafUAd~uY6ICky1~Cpo%o#`f z-+_KcKEUmp7QtF4utYzx!7@|+2vw8-vvzGapZ98?C*&S3dm>bA$I`bV+eFa##At-v zI)hi=PvY&A_oU8?=aEdkgpF0C(dl!dULanm1Z-*JA40^Cb3)S6@p z9%l6FM{!YM@zh-HC}!oV6?%+q&;eEt#s%+GtEEtp@A=;t4f~??lioPV=T-HUxOtf4 zL_A`iLv>Rx398rtpMU7wd>;64bx zsl*0_US+KiLEXg`q1hoJ&z?WAxnT?dnV$si+!=AYf1lUJ@50$1HLB^XP*(QdcVIBT zh2EHYdA9rVU!SSrITGvF(-%P(cm`AxFDe}kcW3{9SGkX@lV;RGIUgo3f21q}gvBO2 zi}j&|+#3qC@EUtp>qfXI^P!%`vuSZAL@k$i;jW2zx;N*^U80H@+C*CBLN9E5H3;z$ zA%Ybau{Xo{*xW*tBanp|Zq5-mYiZ$2p36I6mO?A=UvyX5cSXo=_8-0{Jr(u|3HvcD zY!-l3YCVqca^{hE!mcaR&AI0J)t}$$C)yX0>4t-?v4wiVH1fOOC#2^Ur3fL6?7GE|-A+$a{x4F>{&5zBGzwD=mHj8SgvjAJ}LlPAm zn`xnL@OnM!{l5k6bY^>2nTAbN>8G-?va^ku<_LEGbT8BDBYps}MKc3_M*Z|yVeG^Y zw~q;ZKgR{!7m}6>R?Hp8yI}Pb0@H_)gdUc8VzxPI0xOACu2%XJl_eiTo>RJPXWC-k z98Y=csI`;m3Z3u1R6Z63-PON~AcOD(AF+(=h`f-$GEk&fdZN}zX7CX!g!ReYZB1z* zw)M9TvxA$Bt+4Xvyw?WPx^hCzT%t|63;GZ=bS7Kgz}kyiEbVI%CmfZ5FxOZ8Xf3G_ ztTb`epYwLvURPZ@h2vzQ9|J1T?ja^uzppOIR>k_Ky7NN3Mot^V5$NdXus8+fVnOy` zftnhK!k_b{?8bj@lUH6^7F<^&zQhjozBd3bY1_*j*_6+Wjc<^QwLBT<@89{F4b;m^ z0MgT$CWG?UyB)Qz&p^s=lBmuEYe6&t=K0seys7URTFli;=5)nwH{wbxt3PGilaInH zV|pJ+f%br|%!C00PEM#N?R~`=$B*keD{)PMLqt$U#)mIl z@!nH@PumjVTkvFgR2Q{3cmve_Zk=jL|LPF$U1B?)d-VP$wREIy5$9)CsaH2iv0%WJ zuRUUf(bLf)Ps60?^4H{l+I@u)Y?alxONCKN6r>dps!YQvTA;eGuCN%Bd9DtX@$&OG z;gBnbnMfqkW(&f*6p)Z~0A>W}=~m4Z0+T6liX3if+sx1#eTpQndRt3Icv5bBFeYB` z%J@(_QgB{H_wa72uvj9$6_@6iryWv6)GQND5#pqWxN5P}(HA#$D(hb@oiYH=lh1N0 zrAuZMsQMS9F1qm14TKOU{r{>0oIGt{MS$Y5O+(82Wjkzl_0IKZyYEB})XKUAkr^Yc zkZowqlsafm%53=ofkGxn{cCS|O6&J?0v4)f%@^z4oC`IQdPv3|2AHCx67Q zZsd+mgXg3C+Ye}P4)NvGXIe4~CgYq+@kw$vt8XAhGLQ|UP$&|m{TX9>doE$iY7$UC zgr0``hl7pL=GNX9wZI`fMrnsH7c>d%*pBE)ZVL!p%{<-4{L2&ZCufp=@%=3@42Bu{ zotJppv2=E?4m>P1DqOME^k;|PNt6BNuYeX@&dK=eh~x`9La(nzWL=mYuK9oIX+!_# zetYAwZbenqtViY%v&%$XSTHz90U}ckO-;?fl$U`=qaR{o@S)1bHqbvh1%qJ2z(dph zlK>7YPS$!R1m|u0m}=fmKDGGF-cWvBjamYXD=sYUj;qpaTbgD@VhL8;oc*UzgpN#D ziP`~rwag;K;-%G@$w6+nY&}O$U_7qc`xfQO6mlX+pgkp%@i~dClG9D-(0+dmhurV; z-I&JfCb82y1U!C%O(Gu7-eA+{3OkgO zB}Zn0Iy=x=7pwX~)&AqHZhz<`KrdHp81@WrG@vK@= z&1d1&Yh}|)u#?wZuIVmPk(D0h zcTMOrxR8Gpf>Mxu`5VVc0y#Poa>9RD=CzmmuQ58@mOIF=Xz<*8U94r!Q+2;UNmOwl zZh88nVLws0R6K-`BV-m(r8h3YQf()m;2!s;kKX-6jvnBxhpeolgC?vMs*nQE;4>}w z>RZv4piu?=7vWgzFuQyLzVAWoi*0QA`f-;7HF)u|(pF1ldAQ4_P^W1SvpllLj7BmZ zUk5#vXFBkn=u$}|=@ea@H#gCcn3}ZSA78Hvv!+gll`wm55sJDw3eEQfnQNIrC>7iw z&5s|C&b4ZHNcL4HQpyUAk$a9|@{Pl)FBpHwX;5w^YrepGPc%?9w?m=8d zO}vBUnJ&X~oo{?!g{&qK0S;DjYilHLLMkNP0!`>YATi5Vu`g?OR9m-v?$WKF!uuIo z6~B|COU6 zKRG3=M_-d_h`*d_mnu8(%d?{pR)~}RC=q|7R;R(S;)OezK8lqb0w;$lD(?U7LW6`- znfEfn-a7igWcXIt#B{nr!9W!;>;~$o4AhDDpyvQg>^6PaAt#O%G$;$}Q_{8n}ARMuPG zWmRAh^WTpT1IC{6$LFBM3CJ3Qle`$PDbTbK0HA+pXbD0L=cqPHD!L|Eh45z5Sm~$bL`?&jHvw1wJ83SV+y*Ca%I*9|BN1>zP>-?&%)72K zeYTSs@8;4gHIT+zx=s!0CYW9^kP$h2-OxL?H9Z({>rNJitlN2l0+jpqcnqbnrd)xy zha6go;ZFYW?Kts7LNBWs8pa}b&~*&+=GT4^V(_w+{JP8@rylZ^uRNoPsfO=Oe7=dZ zsC{5wWI8#AHfnZRva&E=ur~1`<)V7{S2pUWX86at+xZKovP$aUUcHm-;zIqP@3D4_ zQ5~Z~8+_pj{4wrr^1Jx%ofM~p>GbOkR#}TCIfe0gJ_{k71#xYz1JBE+3$DBT{VvC0 zP-CfR!os-{)>i7v4d1#_toOeHzy)9uX)U&h8yODsa_Gcy0Y|USS|U-QH;TOKM#`?d zSrzBf9^?IjbXJ;BwPo3qap%N#yjg3iqd{@dK zkpoi{p_?!Q^I}VZ#UxTV#tIRY4FX+6jBW1A{x^Z@Q2_~O5dr=`sfj_*{qxX)2V#5B zlY|a6-3`wUx%8rH@UCEpEOZ?+_Pc=t$e8HqoF}@`yq{=v2}c=IRsTQa)~^rPTgRv(3;*?<5$%8j5_d=ETAZJ5!Z<> z9P7F;Sc3@A(Q-_!EipYU1ug^Cb69w-a`&KAZKjr4Uf-qc^XMmEkUZB-S2jN6%JX7frlZFrKIw^`d;H?#*S zt-yLegwY_9Iqaq4u_y#VnU|SVe`;Y-VOCzPX4E(IfzkKa%U{|=UguJNf>~b8j+h1~yBCoj_oI`ie_!YRHPcrJ8Lhf_`gYGU?YZe%X6aVjEpI1T)wuUm0|hlQHjbhY#cv zm6n88G9u#rb$F5pkIbsBm<$;58*-_Q;L{Zs2J-m|ynpUgO6ubl)WFXK4oyG`E}NT& z?95@u>B70=ex{e7ayJ4pf}2%t11e5UaWQD)Tz57T6s(}XM_CZmY^?E%xqZHCBZxEJ zRAUngGQ5y|8WsLWU$u2=J8r;{k;~gg$V@b98PUUShQS6_2N?Gk5_Fqoaq~q(54>1i zSWORj^F!ik$-mhasNn~U1kL@QayQiYNTntu{G)r>5LSjnR-vTq>Exb9kv4xX+;ltC zUY=XUepO6YN{q@sd}Gnhz1BbM8)o%s)6}`ASdF$?VfJugAm!Nao(Q@G!ARzmZYB-4 zw~%Fsmn^wP_!rJuCyK%z^Mk=U+`b#B6jK;Yt*jdSKc>Qc3Jpn2{>+)uA+OWdum2!4 z2;ilHGoxnFU)4qCZXAj%VAcn*J?=(;%f;+Q*%g>Hfp1Vqml~zbA!yb2DZJcFFCD9& ze%>yXtW`R>SZaTu*e(Mk zg~TIY6Y7SozdxaffwKRRbBCOl0cUSYXuDy*zL-8gL*K*8isr*S4#TcTXp6wHy1CVB zd1(e8$-n*-^W<05J3=$5dHK&SFN4u&3}MZ z`ZS0AUOAfLLZGy=a(MvGn)U+$939GM23ELnSg$TOeS;@NO54-0r2DS~XznPR%Q)~9 zmdC>i#j+MIRSvM9GcXr!v~WOMQjXPOmJzKxz_+-12%^&R_tG8>Y9{!rJ7nq&qH@nT z6scqtn}&4@ckuIGNxk#E{Tm;fFUAAVi63=;120r_h0aOJf~*_a&dOdeJOrKD!eR^K zp`j1vbb>0P!V6Tng4rJc9UhYHIb6L8X)1y*gY;b95OczBLzGJ!b&C3Xg55b`?2PAZ zK>$ncrhbZ2xHl-#U8EJ#O?i@VsL$}w%2QXPa9R_SADQo@S66->Q6G=IOI$`}C6@S` zYTj+*mdm{8uXMaP(_GNr)+ABum6MxwPWjtME7 z!|$KlUAV(zvzLdV;jh6S6B2IoKt4*~KZDrO7HnWA(z$aEOg@nyg-D$K^1|9CyKy_H z#j5Khu*9V;No+Vqf7qwrdTjvThj(uZ8G}BCo;Tg0NQtLYk62%mfWGqn%AmDcfSp}M zW%&nV2txyj9!l*ALbexv+UAF>i&b-o$&2%$5*HbpA6tW9;&$TQ zvWkf3omMtl0JY zndiy%ayc))hz8M&(DF|Hdb5-4)LDdl?uz!6l5Wp$!^4IIC4-mF%|Nr}T3xaI?J(WF zzJ$poLvAHLvNY@@Vd;4}ojT)K2ENnIjICfG%%xsuAi8V9%_HdR&*|Iwz(&}jdoBK# z?9%cgvxSa`2vR=NEiJ82Ow4L~EW5{9a!m8Klx)7gM&;m%p6xMmr(mu+>Ow!AHJSyh zM7&hsR9n)`>0>B&jTQTPkKBx^sN5{ zMW^HxUoSdPcKvR%GFbj$8Yjf{^FYrmG~6s+VfIsaKEko4|jTlnv1|Ya~Zdgu>ZOiTn%t{N2Ux9hFVy ztEFq~ch0}|?qRp=>THH8vq0&x|0A6C860l&;4Vf`N7-e}^IQ8hr&UjBW81UzLl5ax zo!Nz)!nL_wly(Q1=~7GA_+sJJh>cRfFCan=ch@ z_xJNW0OVdzXRPO|cJXt~%gf+64GcXa?t}og0?>VWUx1KUY37fb3z%fG!5iRu^L7MX z+(>^g(4%BS4~H9|m5;?WX4%!`dbuG04s{dV^JZB%dfDI_GVnc!{3O+`aPVQ4NvkOO z(R5fLn0Ct>ffZJs5;OvhfU=1#(M%#(%gbXY%m!q@dXusBb)6wErZzxE?H2hxyp@a$ zTj4Rz6E0b@;(&^#KEO#C60bL<0DRRNm_dVOcB9Y9jzxf6*mKOUl9bPKPD-gAd|eCJ z!;wl+4A$ql4B8cZbqr3N#oqHM=r?XYlmGzIDkY*&S=y#h_Zp<&hY zwZo)lj64xouth{uSk>nrnx43vr}bUn%EU6uEFc(ZFV>#Dgi&RaqbW^TxH^8SR3$M% z0GQ*W&G~A}2Vp$BYd;GBYJB!+T@55RF=GElxTA}w7h>9;1}mkFP_5S_G*c*I259h8 z@a?HhQ@a_zmSQziK?UDiAo*F_64R)`6J`llN@y@@omtMBOB>+p!AG2YOq|}OVbPn{ z9SC-DS!u&Q1#iJh~$nS;Sr0 zI+XG)N#ZmfHYU#QcpJSVCnJCY>A0lMw0Iu5O}7;qm%nz)Dsn$AI_3Mg{wcOkfaOto ziqeC9GqeFWcX$7Lv{4`0=(DANywZlMPKnF1l+X9LhjTODRat(W3_BXD+g?^NP0N)u zGM#r@%vpV2y%onF=w(I=l~xA&5FGw|{&gdiSEgkXE&r+zZ^GqQ2kwmd#ruCunAf1< z-;eu<`kt!~8{&8kUFY;a-U5O?6smFtm`rkkh~_oh&=FkpK5&f3)ygYjw;*F~=tS2+=?N4_)U z=|a5U7XiGEZK8}6)COkU78c^4D7oT@BeMbd2_kX2tsd{5i{jVHHbH7=^ULu~Ga3#f0+dpC`sE^*%XSdO2UhPIpJV4A0f;Z0HBl%4)3U`1D8YK4Km+^=BoSZ_` z-)VBOK(fA@Hzk%M3kr@X3>Lm0h@kR|OsQFx)>YhKCeGsL%&ST$FfkIP{D-eTUR^wm zsR&Ge@s3*evEb7!NzcArs;p$_RJ^Ve?r4jpkzeMYU_@=gFjx`j=Fhtrzdzh za8F`>A0%UC{b2@lw9^ty(o-8?$_zmQ<#`McZ8IvvnmQt853E?tlv;<}wnEZsah@&) zM9-N|@rJ}%d;MYs_X}upa!@IXcVHPmboGeq)phDEgy|y_?!q?A4(h(-bH}ctsI><; zlQPRyVIe7LBKeV9Up!UDx23NYtuhT2P_ttDxLM?A^+q zR7Mg2zLn0~{CQDkA(533WkJ?kCQ2U3eyw%k);lM3!9b?unGvaj7hV$_9mhf^pIO!1GaP2VGQs25TVbUA0ouom(2u~Ur_-4 zf)>bVq{b(d0iy_0zJZ3nCZMNp1?AzRq3Z5z#eWNbc0mdOG6Xf3+q~Yq&PtEQGPjly z_#Sz67OKuMStpk=2GOY0!Ds?a-84$@|h^0x2c zO>X<3j!x90@g^t@w7Pz?-}@B?p$@w1_E=AscLvLz?!NepmLRKlt9rDzIFPme`+j8$ z;xh`w@7hy_m~`-M~L67mde z04LBRGsNwsAGCugT^~zwI1Q@IX8N1r56EbQCk7Vhp`XHHJPAUxG!2 z_wO9@lbUv2`l47%EVH@!lA+l>u1Ua}Ug((Z60!Fx^x<^f>8(mcJYyG3 zQ62-%>=DasrYB>wpP4)yEz+OAOU3tD#*5#IvxQd&U+=(>Ec!o7v-<^Z4S>0^ z(#lijOyGp-vBwAU8@G!prAC~t$v(BLeglg1Ric>&W50hx&ibd;)uO*sz12lOP;G#M z1_Q(HI;QyxwBfPLT|aK*Z0c*x+jQ+f(OnYYG|!7UI$J-EmoChfGE;BcQOzBaFkLV; zNpd_3{rO4fa9lluE`74>!&GYS{pIz=L$^H}bV zcfLRZd>kDu?S9vLDqDoVBBUQwetb$F(sR?~TPJ!l(Y{Bl6|`@5vxUTr3)8w6)htX* z&aNIKk*T89@$R@+I59xNhpdt!B9<5Y)#x!!+R>Rq>P1FNy#&U!5VD(jef zX_vFtzbz{_SOW$>|GU=v|$&v=^UYWJyjK z{!FJ?00uma?49hB%bV(d9GdW`{6pSO>fDa)6jzH@<+-#M*73+Z_YU6V4pOHmK--eJ z+Urde#w>f8v1t$Z6pZ6FV_LQh6@%?Kw1COgxe4%IRgL`>i@p{LxepTay7i>}`%@bL zF@-Nlgp}m`Tkz+*(80<0IB#jOhW@KvXXm+9SJ|#qexpx^Z7Cv^0R1re?V6TmRMU^1 z91Z{3lB9&v5#{muT;GVUJDcTfrrmr8aY4j7$zisFohRj!9=oI0Xc|@KAE&Mln?PQA zaF%6rN9#GD^SlO!ZHs0_AjBVj_OEtwI>o9swy&Soxt~28NF5&oIcKtwg>JsG>)d4m z4EA@TukiinlsoTK{bo+~pc)?CMm^o%?+YNLWcI6T@QmVaD;q|FPWKL2+92j|&5WtzZ`oC>=JZH6Hs_^X)yc853s&?~*`H=?_H~JZk)tzizp$ zvRq6sr4sqH9TzQ?l$l0_t;{J3C0LnZ;A};Nrty_@z|MdkcEJ~80D2BGH$i2cX|(*m zP(TcBpyB!39)1NX_gK__0rDXz0otVXYWf8D8oOqWz<>frX`i zkmR`Ol9(0Y$z}gDESH14)PFh{8Kv$?C!D*N&gs!LC!COUOnQ-z)UgSXIls@S`Ywl_~Fi2Pp@wv)7m7dc;zFrKK6DT-uV@7mag>@6S-?z#r9<# zE<>Kowr*7zb-Uk{6?dz>JEvdi@@aJO@RzD8@W%|K1AJBN}p z(I9mF##`;Fuu-KkU)4z=>7AwPy_{&LitvBxKK7#$&fc4%86}eRC@=I$7d%Fj>x6|; zz^QF2^;;M}9pw@4IjPAes|0||OZGoifGlc&{tap_viB@0E)NM+Srcd&9Wsm>05+z3aK|^`W=W!@}QHP}xfuMne;oY(pGLs_1TiDB-V}XUubjnbS^%SXPa_5`(xm zBLkpYCw6%L(WmZ=Iq`RT%$h#K7wex;>hyAy?Okg*b;RL;7nVPebMGR0Bj@2{mSjRe z)PKSICR^Ftn7oVK&cpA(K0HTWm{O*<7dnpG?lQ3K=xp8qa;i82L3MEDnIqq6z??Q% z!xx<04_I3r9)h{C``9kY^x2&QsOx`c&g0=g6goQ&1@}Q2_6>b|c*cKevGjIeVA1`df#Hti zKxH!0@Nq_7!*Em%RLf=en!=KrDurNAuaSV0n!kBc&#(VI_?wfb>-Oa{G?h~UxNyL0 zdvX@wcM6VIz+aT59Y|OFn$X7o;e+_w79I)hCCqPu^7!=FGmfdE;O?HH$tWW4wU{(2$^w{xf|;Ek8d6>T@97H{IfbJHBG!_uoa_TBtePxhb{x5$JS8vt}Xtg-y-NPPi*1I`mh(5Lmo z?Qxl6gyN$G@?spV#*X9K`qpM)jrbG2`9UL(aG!;N!C%oM|1})$tCP<@e=fGOXhP3jsR zzg^zol=De2oq^A+BHhezPVfte4EkQ{AymG zOVRQxOs&1QD$uAwkZZ^+ng)Qzl{Fs9v5RoVMhBxq%3nkZOqx2C(<$}|@kPb2T`a-u zPo-KD!F@M_5b?ZJhb^r8du#u}ow$nNpH2VmtUhSuB40tL^Qv!+8v#+OX0e;9&Ljk4 zYh+G(Pz`itM45$B+5o6JB+`A64x>%uG1Rns_^`r^*@U;jn91|RkkG3t~s%Um9+(Y`CQK%F1<{;Q>_&J`do=KzQN zA&hVE>1KyU_r!lOTo*S;7B9#8;S?gk$IA1~`DfI&Cp4lnPDmilG%6uV zi13(O2B0iWAHc@hjWfOmnrIFns7x99(ow5iut#s&d2I0dHzmA1+e>ptr*(695<)EoB=W*s3r`` zo;mVjVk1tJ{N*4@8OI_ox^e9NLPP{Fa!W)L;~#};W{FOIbZ%PIG#_;G^_#)L#vp(4 z1kZFbM}iM8gNaq%6uXS+C64rG1Dx)?<0v;}iDE+@wYF!eUv9$=0HdlS*fjr1i6&M_ z;X+gV=;@<7H9MW?kJ<)yya!!A zu=w~djsUa^t_joUPG44+jQwm!r4_#V%0SpqE1+Qp$f(D^c|&~(O~Vv$Z?quKjIVDQ z_;;Tt8rh&{6zG|;9ar$3t~6i(9@q3*NqxR==6XfPu42#2~v{86Es^kwtU9f-#j^HEsCLnr)RV7~+C^2*CvsJGTRp8}5f zeK>hED)Dw{-bLMLHazsJUfp-=vw!l~D^ucO8romCF}b3bGmw*+&+5^yi|--SX2#f8 zGVjh#hzenyrp&emhv)XLBlXx-{i;{`I+>Q`%w@PT+cu>38Lq@Gi;U~)!*3Lp-syqE z_IS}|zNqr`DI-RWJE^Iuu_#oqArOga>*+m7F@QT5y~jj|tHla(viRnwC9b1CSeXu{#$a>B^S zm&5PpAYCrCuWwIA>>E&I=e%&fIx#Kc(LKbcHn&j1O|UsW7(2+@`7rSO_8VXg6a?I- ztuC~hlb1|a4E0xUQ{1-)`ODv%& z3>iOf+;8T~x56dz3Epg!O-PlRW5h$yeuvKGKplM>P+p~-ZaS5ht0UoSZ~67fOf@?n zM5pP3fLF5jKlXJP@`{A8wff!LZ&FuZFauaWKnA4?^WQCSOFQMGfPqP{RVLR*EWlK@XMy!3m?8l-$xqMug{v;wnw?X$W~{A8};`0 z2h%^Ka5pra&0fgQ+&)HC_qG^F`be( z^;cm_70|eYzCm2UWr!h@prP@mh_&?jgYuSYHxn^b*SDn+CJJmI?tZqHmMuGFB*WH^ zh=cd4ktL;gpkNW3ZMvvX>n{)B@&JhK3WS@G;tKGl(?tZ;P2D%0eU?T9dhlVN2ku4I zzPe_&vMhQ+-~z0NoZbz5k8#cy8=?sWb7%3NT*o-g41CTlEl_*|1ctR-2jfULoW~Ts zJkgp5?lI_)y`dsnL_jtb>jQ#kH+9$&%Jrh7anFi_Np$7lzjFd1^yOvMV0$0J95Bgn#Z`*ETsBHgVx&0D%z?p>)XG<|W zp@GnvecMeu*RBAphxCuPfEk>{5)v6xQ#U}$1W5AcIOCi@ z{d*CHCQQpAeVVoHpub4{g(`9UPiK#I+m4Af&(G(IIQRHU21(KMf)PG!x2%8UWS(`VX-Y~trW1#1X$fRo`xH>%t669X(ZDa>rx&9rhf zzZIV=E?Ge)EGWGKH$t8A@2%twKpYwI;Ny>n`Cz%&!ap5(iVj?>pPuqnml2uh<)F7#PrKZQ_#3LvuP1 zgo8F+iR&&GNVZ#=A^Y^(hCpBia+3hvU`NO5;l07}z4CpFk&+&LWTKO;a`iExhF8&M z^9r8@8)Ytr#6%A3PKta-yMEZ)udld=E2&xJ#>8@a2!Rg+Iz!6(0484?Rh6`7;trH) zF9DG6wa=al@OE4QQC(&2k!yj#XF7e?Bz_ZS#2NDwq^s(nW0zKN8X6h?FZ`DkgQ>J2 z^DB-EENbw1nYiwGQ!z$tS=>a-6?2iQXoR|BTQY3ECQ~E+++QD=54B+XYnc}5#oJh@ zkZ{b8zfIlsuFE=kj_OWr@wIa#0MK>PJ#!d6g|;KGu*HDAFd&C6bz>OSXum$qmM3E& z6++px>7}Hb$RTqMHLy9HodQ33&?`8lg=E9^l#HTa!jd`@GTW?R=Lt{9x4oJ5pO9Fb4BX!_rd)D|ffN31$r`Youj8s@P zO!jOzjZw=D*1U~_mv!4tUH2x^jZJdbn+oY|6KXLyd7bs8Xj@k^EePQ4^;Xsu3C}hm zDoU4nrFyPOMLBVOE|NgoD(Efu29uhTX`yJZ6SPheZj% zEl8i|ByE*rC1|v;R0eMv`M_nk4cHPkrxT@+AM*~EZiNiyFtw&9UXehj?8k9h@S+dWpU_rQw3lrvl`kI3h*7ZdL3;|c=liarTT`AlTA zG^%2zeaS%{i9b~d2K~&5qD};)?Zar>CuVwyk|s$Ryspnx`#(Y_H9OPsnwO zOaIUteq@11Re=$h44*3`f595-)0Z#T8~2+<{tkBsyt>_22F~CiT4pXENj#Kgqgpy76vPWabg<0&$dNrrL}tO=c+ zh5j?9)&aBS{qiT|z?fR%sUj~g-$UFF4hK_IlI?nJ9=(nGvh6`0FFWR3Q0u3WiO#*m z#Y-SI*apjCB;T5!Kg|fzh!uCUv?3^QALPAYN_y0`pSt@NbT@to{G94D2FQX{=8Lo( zK=c685i99-#%h_+6VtDcH_ycy|7+Xe<9f*_PXljz9Iv8Y8=QbddfW8s8Au>t$s_Ll z4UgN_SCYqEhdirFrhk9h)V@Ef{pE)Vx2df;XGab8vpU%oLVe=so}91BeBAzZnEKc` zt7_LfkabZnUG|1KDDRs$9-1K#2;kGr0gbwLSnsIJt_w5^Dc1o03eeH4; z{iDgEgjFdk)FW|g+$YVM%i8DJum+Bq#K`<#-&_xuR!wEo@=NN3d0#E|5@-5Va}RH) ze`r$A*j|}2Giso#@D(kPMIO*j+(UIjOsdCU>8Mv4R({_%ftKnyeTeT2T zjlwD=z~rp-cRuWQ?g26HWkcl?$)_F3Z)pLzqcc^CL`l|(>PKSmew%s2J7_)L7(pkZ z`Oq1>QvUk_N|85>A$&qY*Fan9d!Z@j?=Kod5)#lx1b)!5OiW41y7axiu-sfuPA;xE zN6VYvHBen=E7`Z<6`%Q6y6_sZ@y9T1W-kYIk06~}FpYjl`_%Fi?L&(;VV@{zzF~y= z#*Q{Ob4!op%*S#rW<3M;x}~=Hq{ytquwK;kruIM`Hb5k{>qen}_BNqEivV}`xlYj* z;212QMWrEF~3kXwVlJ{Gm~2cdg+FnrMZM#=avC1W*ZDL3IxCEn!H!}*`d z;=lN{caL0m=}js2Yn4Gw)$MrS?IsD!qL1YA^77yQ(g0e0ef`(#HH%J(FuJjZf5Jx8lp0k;na|&u+1c%^*X2%+dWl z;ZfTg?ag40OhQiu74OGp&hxLjNPB-j5Z9_sxLQRa!|op%QTtrRXf;YbKk?cuYdq4$?^Q7Q?8NG(SJ4F z{**v&`>QGV>c92cjgS*cXz}sCD`n`72z{&TtJpt%eLccHO*70nzFL`~oBK z$bi~EcSkqJwAG5nQPQ9_ajCNvbN{+dNi@UEdKCP&jdpJAgk$_~^KsSLjNsl^{Sy5{ z-fvy5!P`?+q`LLyQ^&4(EF^qZqfz8MOcDKzJK%8MGa4~LtZ-f^{Tw4d&ZmY?#%?3# zsT`EIvU8j$IGQ_(9*;OsKbRIJGK0Y^)8(`Ggw7OmANE3QT07?95pEZhC#QqytX1sn zIK-`#%cnK<&Tc7u_xj)zmtx@Abt9Wl$0$JjmB;H!ODi(&sgIT~42Zj*xGu>*-d=Wt zXEGO!n`J3X$cpDdf3@CD>R<|E%{Rz3P#RR8mi4k!G9@#1_skplU41rezusj>Bl?SpY*{PJGQ{}5nd`_loG%Sxo4BuCMC#tUI*wULeXJ)73ZJQSH zj?IbZn)HL`F8)8?_6e&$6iJZENyS?~V0IDIx0mbHbFPUFezjffgZ3W5m z$R4$=RbgKxe|Zl}TS8{QcRsEjA%?X-JNMQ<^tsCs_oMY%CuzdB2bZ8s`+r}yMmKsX zcptM)FW;x(XPnBGk6xn)m5Nhu=SPoq=iMmN$&Zebd>ej;a?eGNbA4v%zM(K9W-d*$ z2CF1xe@XVidL4g@3VtrMz025LAOFYmnlaLJXC>JNCCFFwq%Ar1o!yM*DxA~cO7)JA z;sen#5!irrb_}KUU@kD<EIkgbqmaNS}^W$ZqfqOyKM)01Opc#S7gDaR+}T)|2AvTd1-L-Z4R*Z^}6ug`!98=m5=1pw##lv z?FZ)kjY0ip#NzO9Pdx^%-XJ%G#x6Jh3HEYoJ3zQaVS-qamU7?E$!fH+*rewauZ zOf067nMo>Fia(_*eMw?hV)gU)q0dce>FiI1H=YB3FhMmWM_qM;3N1>D#LmZoZ0>9oh(cHR)Tgb%(;Cy65x;v8KqbB^?hl@q+}noM5XD0oI*+_5Ap zjl8uJX?NdjHa`{5&z%`Ry>;;B@pZ$Ei723RZAy7}{yN+*UlEA-9^*V3a`x?&P{Yn|4q5a2vimv~P$lyGjIR%9-%O|gj32aJ044n2 z&MqzSvv|l+3~7>kQd6A-W%9dYcn378`D!=#g4*PI(*wC(wY+cze7TqkrD&lG}_ z?4*^L7hh~aW2p=_*#PE^2UvESm0b91uYu1N>4vCdAcEb;Xt8M^1C*fRRouWpJ~JRz zNvEu=yEE$@Cbt=Ol8&dw4oS2v=-3ckFn;5Q3!84`W8DR1(=8F$-oAz9)l>_ub#>K# zo^;B-WRKZpsi-yw+=8c1+8dx3VwG)o+nPkM5tW>An2^7H8H&6$-ZYbz^^9lU8}&ny z&Wr)I&u%oF&LwDXEPe0w-Ti<>vV+~V3@1~55`5ufsl*e697+)5Vm*>=vC1FXs%~z; zM%2`9U5sSv=Pt>VwL;?Lwpz~pe*Qw;TK6iL7Cfi{!qgO(4zo4p%WAppS`5bh3;Cme z3L0EjvPQ2Xw%$nm?K{ree(iY{0B(iZyzp=f!pzK!%aKRhN^}gqaWYVO21HDr?X6q1 znNWtycSda4zjK{4@z+zFU8Uhk`pSg^P3|v+l`X@hT{iRS_xoXsw;h>eWU7&Q9^$g~ zddxb@#`vgiC2lBuBrV+gPgEQ;5j)x*cf zA-mRIxcYWw{qr(FjBBqfHvtiZc)c_a8C+5E_p_H;U#G?Vz@^{yTMs21mR(Q~X={)! z7$qMS?k5{!Og-<4!%hvDng2hforPCa-y7};5fKCx2}uEIC8ecHYRCbRk`jRdX;4Z9 zL0Y=IhZ2zP?q=xjp}XVm`Tp+x3$6>-lC{8@GiRS2@B2K@hk$XMIlw=v`IpYxIdHsz zNRCHn0HEko`SCGeezk+J*n@#Q%|$nlTPu*KCXL*Q2%Q`AL2+XNOyc9#N*Aia4A__^ z6=jQnYH{$Z%<=%VHUC;JNfo$RP^lP8Ae*G~tYbAiMygWbk{H$=a*qDqx6iJ!x+SI8 zV|RAm?QAw@&gg314L1A`TPUvvQS%>9Zf}_CJSY+F_7P;j*4*!tJM|KXvv|ErsdXFd z51Fr;IHd)No9%}qz2Lhud`LY7AsdZD<3AIVlG#Bhbp*Wd^o?Y^!0@}{{f@`p7? zF@=O9Wv_OOM@~Q%#^8E+#50GB8{lhG+>8fSQ;^%Y!_3^yD2S52;ZXzSCkohrY7y)e zeE4dm`w2DsuH!HQE1L(G_yh8EyhU#_<{}T}3 zdt+YJ*N1ANZc_^p*HJ+{jV^0D`(P^0)HC_MFPH4*+f?R)UJN^&dDqSf96UtUy@Wnz z#C*AfX;%HOPQ6f9T;Gz_!|`nP29THj(K9adfxRriy^uPeSa`Zy>p?@S$aag^jCm^lg?nSZTJ#G}v=9Y39A z?;Qq`*%n|ze4aViGnZq?&9SRbAIQLBcva-4BDk?;%R%bhP!a7WAe>EyV1To+g#4=u zD??tVU%pohw&cq$g0ofNt(!sPO8bCwhdlQJY*ktGs!m=ah5A3KmSkK&9jm5yc3C%{ zN6H|xEGi(f@ce#=t)u**x_MX`TIbGRxYEpw<|L+k7C9jI)voU!rb&Zv_cqVF*}cEV z8^AeagN|yR7uBAU2@*ctAD(p%nBHmqYa-@&%xn5@X0`HAaPrw}Yoo^r)%>P5<}#%ljxREBdymg)OVcqMv7_T=bNV{b&@yW3pS=v-x{mJVyPFY6V0qOFa`?}$XeIa)SZ;OGpw%{*ktl4k;$@Vv|V_B;O*g~cI9u-nR87rLlZTjD2 z7m-jxku;#*fb#SG`1sf+DCnqDkG?d&p2`-@;&)Y^S2uC)W|-KxXcli@23xjU7r&~p z@}x>PzTLMiSTrOFA`7i!xfpi*EO@JSp&J5)u^ybbRJ35l>b^y&!6 zNR@P^{m!4u$AaXqhoZafg@q|mTF(C}xu6xhKyZJElEfDiv~*Ub0|uiK@{f7=@f5H} zX-{p6_weVoH!Zf4I2NP+2_O)F*i*S6NELDq%+0oS15K-gNfGxvIUXd-W;Ysb7=bP^ zDxvF@fCmNOtn;u^;2B+n(t*l-vj8xuf)b_TP)wAMr~3jr$X|LMBF}&&m7i6bg;N?J0?d4=2_RNIL1vFjEoQw1r%V6^Je2wURk91lGI4_<$~xz zhpcR0uFsB3D5p!n;ty(e9iRF6e>k3h%?ZKudXDyjv~~Aj`JmKw_xT^eJb!@fv$J7OV7u-K))7nd_=0l`kY}Tu5k!TfScI&1h20?>*st zlro7UGwVJ87cj~Mx0dxPX1t|a z&het<_>i}0u#gBMEu zDuO(;H-wCdcSn8!X?adh*Yk+#LXacv+Y`M^zz1tw zuc_W&o2jadi1wYUIh@w!%pfoR+^iOqYaeqD~zJ3D%0}k z4%U~z;uT8oEZdc5&2UnA!sqv%8P$bdRoFd~i@}m}5X`G4Lm5{t+}WoeEq?nZh@yC6 zw+9(JMvj_ybLBZaa_2RrRn(@%$x!5vWU|?4 z#*yI&%TLP)sdADrDwO)Rhd_`+W`}Qn`1gY5u^8wOLP(yu?JJ3<5zy|e*vslt)KWoXtyLHVa}VDo(m8uT4f2jv`?PcE z2+%<5c|!D4V99G;0vDuCR9bjUQUWwOz+ya`tk(>d|gS?$S1?|j>~ z3_tHct2o~M3-$_?lbBs)T`KFj4GhYD)zvZI)-Ek%YS`*FNzsv7rVwNJw1QGQLR*t; zKaO?{G^YaI(U6k(f}Y@qWniy5sHz!L9HKDQ3$r5B(ku z_hF8FgPzKm#=pd?w@A3Ds{>XSWb>r=?sVF5Ngb2fi_YEoehEq^;ZWjvsgy??NQx+=bi65vYEcN)B#B@xC?U*{#s z9gm%aFmDxxDfcPNUV{sehfwk}G+ronOvRT}V&cr+u;$_sIg~fgnvG6r^gQzkY1auszJZPJl&^@@zA*RPCTkrXd z?^oY=pfGHJ_zv`W5AVv2u-H~tXEj5{>tr4>Z&^I-XRzBY1DawPSD~co+ULM$DAl+w z2_9lDA;CeQDM4i>0>b>_*q{UCTd^6~MsAY55`KznMr-F#VbUZQ^1D(n(>zP|!OW*Z zd$im>rR-!4YIZ`slH%&=7hSSQ@=MsT8AV3N%do1#kQAW8m8EGzsDm3vKlTJ6%>QWIJB5#nZ7%BYcG#kPvFKb;G*KYv% zBCo|Zk#eZ8=F>mKIVzBmgBU5nsrz1CJ-D*71Zy2&*Wdl^3cuI z0l*;x7+1$0Fe`xvzlkW<;l)ihz=lGt^fjHlztD~E3ZNw;3uK+ z5r2xl8SJ7sDFe=xkeLI2Zj6W0Qr2Ht^kz@^r`Op!knbYXH*H(=`V$!t(*^0J>>3M~ z>dh10D|u5Xo3i-3yj9a_o1XG~XVmlom-gL%PJhV7GhIN0Gac3J936$O8fW=5;?#X0 zqJ*wuWq#cQ1@2}7*1jm(92}MpIlG{*Q>| zB4SRzJ!Z=p4(YE~JN+}+JDtxyI zg5vuAZ)UMIqbbhD*6Sq+`T#O3>aeLAK{@0tNN;;#!TXOREfb4pazX8~5rV z-e<*mbgW}%=A0bKNZ){|L}dSf;C&@%G|LCu=JeLd2*R)Tmbb zW^kY?=FU5MtVlNg;$w1Yq%H| zIF#gwgip{i@@qzsx9D8Hc-)wC`36zI?z z&?|HVZ*C6npwCR$e$}{yH}+v?_v;$iI@&F7jy8Fpq-}<-*>4Vl27AWt?zDsLS`py0 zPfeDh6sQv%R%C^yrhaP=A|aD6iUxNcJ#CPv7?a59>u&A@Nr)$xZX#gCTacJ1DQ9|j zCa(VfKEne8rq8feu=Q1h=Qe=^7~ryYRQLuSb6#L1JK;7<6XxWU|M20xw=eG3ufV>S z-B)3F=`iED@<5YP&^vk7b??Pz-hVa@EALR+B@_}_Msv&xIl`vjxNV#18dX*sFrkIc&=Gm@xQc=(Lflpaw57i&)lWlKmj zTN~g4ei_mJP*M6i)h?{6yDMcXtA|m$C+utfhuGSS5V;dWQ}>r<2@0qGh|kLce$cR|@EQS8kxAnC$Y-e0b?>|0IKPWkDozJN-t%90sQ z96x^78_Ul2xUsGy#CQ=oLaJ>L0!TWrc>X8A^s;vs6V361~b*Z zg2Ac!KPrshtMGYAo@pJ4fib-^(bjx8fIoAh+RBAH>%k?d&W*o-x zR7Qk*fw(x-1UxgQnZU%>9uoB$)7urD#9P(%wJ%ut(|>sbB3@U`p3z|>E5Ggs6w;3l zsC+^w_`f58!3UL8^KE(itj6Kp?q>7)Sb?OK6E7;a8ywK+a%;$`r>Y1CfQcfYs;ZLT zNa`N~L>}@}&6i>mKsCWr^`vZaGRAK8Ar-&FgRM{ft$VxGxZ;>}x2-@lh&)?<#GlY5}bj zfWg*?v5z55WdO#uyorc$-=)aXuMgZV=S5M(7z6xmOpZ4^*6sg386jp|*|FbFmRm_Z zyq+DP7O_EF<>5I$l_W@ohX_2l?=>M}OM80=9I^Yy=BNQ;%Eo^YVZF;MaUljfY=2PmRIS8%%s(h*`p(W$?KmGau?z(}#i0SEPL;hq6UUqo0s6Jt)5xU?O` z%X}J=8@14C9X=xd8>nE_k@{if_0u(Nl3az!gm)AIxyJ{zqEGSukUMKZ7lGlmRuEMB zV}-B0=Ktc~KWI#qM2Ve1-c*O{NLDeIgkur-5K)xb)nB;9)@zEUB5+E8d_9LsW8IDe zG9U0+t+XqGZK8c9BW-p4Q8lk4BU`H3(@*-%D+=B4Vg3vF2_=hJcW~U)t1eQzfebzt8qP z{?}B;7<(L_iNp&93ANauo>;?ewzSe2T9J|X`c>=djBdpEn2cP_L~~`epl*LxQ&3=_ zP7*d?mI7jXV4c%z`8Z$D2p%DDXRZ>((~+W`2dgX2QI@9hUwG10!w?d{^jy%Ik`(vnZ@ z7qeE9OHrbe>SWtcF{T1A&jN8Q|H|dbugBk(mlnJP$!x}%gNQRivBn{rAuQ{KJw1u6 zU3!0jB@aXuW-OwP;El2k8Pl_#EH?>&1Fq6#b7ycOyPEB=vX)YVhtSWS8=V2~<2?=AID@b^w&X>esAy19V6FiNNkJh(Ju(+vuPO%wFzW7)FsjG6P zs=Z%Wo{n$ms7|D>5NGI=K*ik52lZ8gOz`pUqlkG`S@%JO_tRA|kmKEoiA{@ik;h$TEr9eLlktA&8{J6<#-~O3ppi!UtPg`9QzcDw`gSNBH|q16t@}5Kv~}>IO}* zjjeH2sK!e>e+R2{20VH%`(O=Zg1WR4MZV%R=))7WI${@K_Aydq2fg|%Wi4|aD}ZA%T2*;M3Cg|xi#-NIzfQHtx9oP2J* zn|qvMl0#u8C-f2$W8Jrv@R*4IBCL2gh@@;!V1&PFhP%QI!QDkA)5Wj$!5_s(0cl9a zQ*8m=9)QvNY&HZRAuGImYKpJX5VtJ{Hv@s%H%vp(@!<(Yi>B1S&9UE*RmMj7prCB$ zjpzVNdLl~wb@@Juccu$w_kJA0v>e0j1;A_Ik4_F5fX)1#T<@o;&&CG0-Hzn?Bm5;y zbXXD>{S?cG_fpUJhDV07&L@RH^dm}m4X{ZL9DD1EU`}lw$u9okvMl5Fg&o*9Lzh0P z2mo9~dP?yVP)_S5Gcx4#-ru~wK+Vml7vUVO5%&@YK;!nznVBZ7ehELr1NxWdbB`0A zM6>i=Oj16&{)|*}Gw&mFyU}WB&P}7uaCZ3E3pn*)E!Zo1|3i$rC)McTtj$(Srrb1Z z=<{HGT@PjqwE7x5dXXA)LXip&_q!wD@;=}7B3Sw+bAN%<*cvbQGS|s&D3hCjNC5Q5 zX>w&Fll?F0un=!KkkRipQ#Xx^U@Uy62~^d!!?r6Xb7Av)9jHAUFh6~kS84;LDwH@B zxwCWL8B9rPze9!s(3N;flmKt}_trW6Z5H-D&m=IHFrICTw}Ao}a#yBty(M?a=o+4e zp%r7mAM3hH5$5{sukQu%fml9PVgc^BzMUf$PJCKCCdF3Q4qeu%pJf12FvB5bs^^3t zQnp%OO=35Byhx@)N8CJ5fFJiBpz8ASZ@rT4uLgGRA>@5COHzT_n* zpPcFB9XBPfvAzh4*ZCU#b{hKDO??2u@+&-=C8t(bD>Er5TqCMvKENxyMDBO-@&odF zQs2=_AFN1!51jD+Gx74D<>igxCkuzso}z)kH-R@-8mjNIudXkhJ+hV0iW=PC9L>3& z&l%kLH}ob35XdWF?!6y)YkyxlnteGFo9e~nD06U$W%2VbOed!6J-aw3G5F*L4)#9V z0vt~eIG;24<3oS!iQe+>78J>P=#aBzW~NqW+@qei#rBNwqu&8qyaqV@kMjlBVUeyl zNP62mI;>Y*YKb}L=-rWUG-rN#b-6zXmX(DK)fvTiVluMW)wTN9PDr(c{_f$VWT53` zDF ze00>XO7oLRXPq4uxEMO?k7(H?CG{GYx@>D{kzj*(oexgmZVPBs0yby_6vF%lMV-zPS0Y#q zWzI~JuS(Bv{%Mue*V{VTtElB)zWd%rs9#V}x><%O{Ssu5$B#;AC#&m)E1rZh)0Nnp zo+k3nFhysbjVa!4^{Y>2pBjXFaw&FyO?ky|Uk7Nve+cch_LiE3&dde{Adxve1G2s= zIv*0oDc6s%A}E2%F?-&V+8jWjW3|bvv)+TU zp?;lexU6Rv3(G$a`Bp}C0Cwe-uQXdKqsnP@J;W@_yZLedf>}=wW#vTS7v0djJG|c0 z3?@YR%+I+yF9bY-b$p(kkeJL3H}p@3!BTsbo60YZjrOxIj*7n=n)Cuo`$a(ksPwP!yI8ERajmXd%C(g8=gy@&+I6z!)=N$=s@w&^&OoySf?6bnzu*8jP zjYmGbxHRgbBf_}WPa)atymIxqy;eWjgouO9WPM5#agoT%KS_nhJ;;y-NX2+SYrRP8 z*@pep8bL-N8J@AA-S0 zR_l0_gNu8dLbC~Z75AxWIPqGfo+JYfDSt8ncYNG_V<_E(sBN0vw7$#R zbD$uktIEbcqZWRM_Wm51?Q)zR^4IDV=BDyNFszW<(8NO$a~Gthv4bAUR8?P~@!$bpzMh&m2uL^c&5e@kDV!WJXi%gOmgv zytLBvC8}ylyiluYI9a&`QD!}ahO?j(runscivvNxmJVmF=87-in7&eiX30FdQ8I2Mmgh4bXMbXg!>IBqO&~qjyy5DIg!O}Hp$J(dic6C%Ep{rBuHj>rFa7&Y-XQ1N%;Jq_4 zQ#-cWa_00Et6iR`v*|WcR@4ud&o4LiBS(r|H#Lmo%e#G%+V=1?E@+p-j-bXsUVK&4 zm~1S;C?&4HD7++URO8vdGWV(z*5c&h5!9T4JPBLl8JRJ0y<;9H)|KTeSLsmmf23nF z9$~-w@b+Rs92PH3?itI+ZsP{-w96v9XA`{6^&szRmwcGl5tI|DwyuXM`66?tq9SuQ zr`!4AgepFUF-7zeFRm^fVeHIJnP41!-6qvUjM4Ib#;62LPo~1H_A-$$L&IH5;=m#VRDs-lX#I0Nd>v;d%dyT8|P&a&uT?2 ziK%8AsMBkzG3FCGJ1^v4rtq@-jz9A>+0#~mO|meLBD~0Xg8k#2XJJzjb?g}>TfTM% zv-wepC(wrYlv7OqOG=h%=ijhM+}SJX#eJZIWdD!mUJc%Xz9x z33F#>`J+RBv`9;ze;$6>iu2<*o-dSx|6 z;}>^R=09Vd`G_3#E1zv$e}db~IUUc*8N%Z>lKP4F|1z^^88)~jqz4VeDj4Z$iW{g8 zFfljO-3;%SQS+xVOmSUBc+2q4soa1dzhgeA_I4xMA&}S00|O;c=)}hHQBZT}OY{HZc29=MqWo&wCz!tNiYMly}EI>%Fq=Z_K8Nn@HOrw26R<9ah zJ1`lD*DLH!#wlX3kXLbo5)+`^cgJU@V}#4ngkP@B!~aB1PN+|wRV>2Pec(yfW$Z^< z*;(+ZOqlaVO1ZfXI|V!}zaDSaf7pS5X(DGI&ZReB3?-Z`^vKoGOf8Jdh5HrO%SDb& z+Dtbn%KuTK=3zb()X}>&;bKDPvg*TW5KdNhrEIe53GQkqn8lapu!gefQ6`GAz>>b0 ziMpnh6ZdRx6*~{V+1NS^eAubr+Kg4+8(;GTy)EJ7oxYxY6lLOn4}=b zNS@s5eo$_bbLrFV$yXy;Qg4wStlmKz{sH1we8i773W@#cs+`aWT%P-ea&ikUZU)pS zz`IZWD_uFcA0yn;2P4O?R4*f#Wy2D;{)wNcjww5U9YZ$<-jQQQ$Ck7K?3IkObNGN? z!-=iZ?b#TqtN%b^OUdQ8>-sbdp@0C)a3@O(mf&Z^OP;k?Y`2c%p#L{vykQ!7!P*11 zW~fO7?taAq`gs(YaCtWw!h4PlUUeUsVn;`9j-F8SIb2U z{uSJcC9ds1QWWtGyQTs>QsI-6;j=-LXa4}>V59Dhg_{FTP&YBrG-p^uf+V%_CMo;T zdT>v)Eek8I%DFA4Fy*YRZ6|PgIr>XQ+qqZY>+G9g)#=UKZP+O#?p}H^ao?1Rpgh$T zf0oU{p-S@aV>C33#(5BOA#TfwYM3pbEPb;p86rqDuqKfi^?*<=Ym{r?s(Dgccr5ug z;P`?7WJY2t1`%X6z2IkN zHGzT2Csf6MEjODy=k6?Y@71E> z04iSuG|SShjyGu5qxs%6VlN!!=hL_=@X5rt8-y37GGz%y&X*VYU`S_1UWk9?g>sf3 zD2$aCCiS!Hv}yTR%%!f7MNqyNsa@kuYWj?e-N+vj-X_*w%BzMoRQ-euQ=h?~dGvh>zk6Y>ZvHoIEdR%sc_QPsH z#Y#IY5iG zP?o^(D0UO5*U<~QJLwQjW9BB*3J+HuobtEb*_q(6BAZL%3(2VNZs$%^W-|#4xDG?qIx8L_J9Vtpia~JrlwR0R5_;;77J6?`j8b_*-cO( zAKQ-&?OnROI@l9(S}<|q)z8hxbEE6K_PKvO-JfXSQLk&BJFK;C3!fi#4px+3wP6Y_ zzr8oEI@_WWp{@Ou>2~8%s7*PXRtKEN`MP@!CT?$HW@Z8j6yyh^!hYtGuq^-`r!9>z zWzj1G{NxTyZ}A^*f^5Oq(<3k8zdxS2ZIc6w2b;mJOH*)+qik!Ncyg?r!WFNvYA_xJ z5g0F%cBf)qu8Vg@w_1}z=oTCeO$LJvMRks)>{@mqWu$N{rF^hqw;sd}rT;s$g?O zhLjUT!*2tR)3JDh+e%x4=0TBYnsQ)RfEXrSDIda`st7Xnny ze-t>A*OZub9M?{~G=Udut)`o^4m;ru(>udozl(SJIXy!En>WB?)1}BOE@E>tzMYXg zRjka#p8QKiz~KT{{AG!~RlBligo#SU`_RamD(C(q81Y+PKbQt%3Lc@A31}N7Rr2d9 zDpRYS_9qBbuD9a2EeEixsOwUo@5Ovx)0Me@3(|FE9G&T^DoDn|!iNUt+gmt#t>iUA zApJyDJ7Xc%2su^uTvjc(zx?c43YC3SY@zhJZ_sO&tjJg^VQ8#{qf+jd0P~YAN>VY; zK_R0iD<_7R3ox1csIw@~pN>Y}b_N4S7VgY1c)nauW`cE~voiFKdDg1NsX`D{ZzcCx z?IKoY91wYG5XJ0PCXmI7%cD8!N^8lUV3E4c=V{MXz@(eDAoe_2WTyveDK|m6z4SADoGapD9H3CwZZALl;FlxmypUpYu+hT%}Ye z!^>w+Rb%yZeo2jM<=*_TOU#-jN*qYdVeOx1en7&(`DUITTXn#89sQkhhZ+}f_G;`LW%D4YAV&Oq^1fkQR< zd-Wt_h~BH@BYeAaDoW{ds)Mec@U(a!0ACz)aIJMl2Y&%h9JCB%>H#`n*;6(p& z;RXa&Ep>S|)Vl1n-WE zy7}O3F0nCOPJt&hHcWQ|cyIJg=i3RUe?{YL*3wz3n@W~(lxRoPP=;%id;h&^&&^R5d(JTBvQ9qV z2p+j&>uFxp2@UeejBb4sit3qe9v&TNLm(M?CZynSXh;tZiFYhRPL8SScraM323q1n zT6KEU6Ne3rM|$of#P=LeR`2GW+D!AFs%jRNKH36i}# z{OM#Li*lePcX(ks&-sCQ7yUtZdKY`erV5i2vkLUVoDG@Xq@!09azovng#c^s?{h%nFf4?Q@6ZL4AUc_;qtU5m9Hg)1z^jAPF-g zql{T2)a5>*L0v9fCK{nW7eBUd+_S+dUB9By+q z^OlfKJX@!8out40ntl}<%Q zOY=d=O9-plxFiN^`kyL}l8~4N(O}k>n5k5zfu?o!QI^@VoXu&t|1;Rt4@Gn5G0w6~ zAxNULgFmly?whtjO~Z`-`b+f!7WOAC=)gO3X(Xo)HnzaB@B| zH8q{6b9H_>YX~k3e93(O&7AV3{(@nwP%l6!p4V`(`Pca>yQd#;(5BSaQ(<9Yy(DMA zQgc)U9=NfgNobwAl)H21T@9pZuuj%A&tw9Q$(6$@SRwyBvp2&>6^6Y23q{Xm`LKVn z=n@@h)G|t-2!BMxXYn`4E)Tw}Nk1%H#Bjyy&s-J^NzGy@6ofKR)I2Y7HLO{dfI7i$ zvU1FxDK1y$iuq*fE5b!6S-z5qCk&LS4T{5&nyq@<+A zJwEFhF%J(B%_99rMdRfBkjPo9a&-r%9Pepj)4!Pv+17->sP3zEI@o#NcC#hzsKv@I z8(tJIB?Q2cD4H|++M>VWwe>0`jfySl7#^WT<+Y9jyR#sM39UY;JTc1bd`{~p- z?<{-;_pw@Vm>5&Cjs(yVdXGmvgDIzFCWSxIU(ki^qniw7j=k0{3Xn>Z<{_zM?(jRoJ@==x#@Tb|?a zWJx>#m`FN4zVY{bv^bwXePS>&HulX)eEs^hq=xEqPEO7k4nqvI7d$+XLUSCAwvR+9 zMizf8lX>uGwP1EQx-3-sB&!%%sEOQ2tr*8FEibETYWe`DvUo>cUY;s|qT)pVZ%oHL zp*7Ok-x@1uQ3sj2Rrc#?wY3xtmxv;icbCUE7@67}XXCmVaesiyfd` z%cfuZJ1p#J?bU7#)2ml66O;e^`3?-j1mE}~a45k=EXLpyfU9fy@9Myt;<*kqQKUN+ zNC8V4`05=G|LsA<_}{qZ7+mv|*5qtjM55zp7 zw;&t@PhTpiEcyBQ0atR%?raU+j@sz{QUH7N@&VpubYdbU6N$t^8;OCGwKZE%;`k)SY9N$Z|c%B5^k20Y$0Ia(oF}^c)?ZS|qS7 zfW){B5H&0;{Qp_1wgf)swmDd8Yiy{lt`?g_p+akqhZS5dR-Y|3KxCY!>-W7Y^z)2^tv1%wE^eWcpyo5V`D=M3MIOK|Gvy7mo=**C)Rgt zDwmHc^X}k7!H%?7#8y{V_sUN8AiFx$RtGq{F zzkZ#lw57wRdi&c8o4{zY#MI?{(HB#W;lHbTD3z1!&$Lolv-{L?EdRL!Z0eu+5-2%^ z{E;1MyFA%K;jA-EMUs`lTMq~#=er;5=Omd60d&wk4vqyLq$uY;bN)pF+^#0l>z31#4+)rj?iT zO6W^dKLSGUzCLO2R3y0o;DLxc8QLJwAgryei61Dvd)GLesUT2Ktg_^?F-UWKa`Ffs z9v>e7hJJ9FPoj{s(e?R3443Ic6f!#{Gm~DWos-A@=F$?;2Gc`ry94KERii{r2thkKj!7 zYX19Tj1b{d(ucUXL*P+H;@rl$7Sw1*g^B49tI+|AxqX(RfrD;iXNZ#1N1`T23pW1~(^nSOsF zRt(YTs3_F5LC6ScwJfS5b~%VyCa0Qd4K*(Kgn&bTBr5<4w)3toAcz}Hms`24gvv&& z+bTA!#F`~F6&rW_1@j?|>5SHFx<&tr^%w?}w$9#>Xw;OPQ%XEKd`cLZftW%t6ZMaW|eVPWAJ<(5Fv zLN1y76Z7%3pX*7kknNc&bug|! zY)@AxYe1oXL+P^EOBJ@uGNDmX45$}V)zV^2ayyg@4G*WY1~^{BfiLVJ<)Lk{#TWG# z3+({l<^5WG2?D^J_JHQIt#0Y3pw6Bi!s&`HB-EbQ#b9*B#_(81ZS3uZjG9V6(^H%V zzYe1O7(qaYw6SqIco=-a$RZ(RP+W+yINx<{U>zPFZtYJLY6DXr<{b#(z;vuEnlk=x z44|^Ai!I05z~E&H1~kR`yPLg$m>AN7vxYmp2TeDlud6F%N|I$vF<87G7u6p6gC*!0 zxNSz@$mk_<`E#fgtW>Crsnst6&o)uW+r!`dAowR`X8p(ytWp8n+py3-e_lkr(xwH= zBJIY(P8WEcd*5m9z%J*tcS>7vUY^3+qh4+!5D7xd%q)lc*s`*+9_aS%{9wxhNt$UT zC2AlB2jWtvud1T*0{oirOMQxwrp_fCv1@R7xTA~p79q@qGX^^srxgv9G2jzMx;!?YNIW>ZWd7eW*fR0Naqm0V{}#xhN8mvGzoqhbGY-@Leu6vA r2377teG|x(@c(|4?&1IMk6wEY(zcl~n=t63fj@H65UE0mk3atp?~UXb literal 0 HcmV?d00001 From 2452fbb4a6317f96364dcf77d39a2a79b1a5fae4 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:52:15 +0200 Subject: [PATCH 05/48] Delete topics/imaging/images/astronomy-source-extractor/s --- topics/imaging/images/astronomy-source-extractor/s | 1 - 1 file changed, 1 deletion(-) delete mode 100644 topics/imaging/images/astronomy-source-extractor/s diff --git a/topics/imaging/images/astronomy-source-extractor/s b/topics/imaging/images/astronomy-source-extractor/s deleted file mode 100644 index 8b137891791fe9..00000000000000 --- a/topics/imaging/images/astronomy-source-extractor/s +++ /dev/null @@ -1 +0,0 @@ - From 251fd81d422d041a5f87ff77ce2ed2813834d0d2 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:38:32 +0200 Subject: [PATCH 06/48] Update tutorial.md --- .../astronomy-source-extractor/tutorial.md | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index c730f9f63e0edc..8e026e70525df8 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -37,7 +37,27 @@ tags: --- In astronomy and large-scale sky surveys, a key objective is to identify individual celestial bodies—such as stars and galaxies—in sky images to enable further detailed scientific analysis. For example, DESI Legacy Survey have "photographed" a third of the sky, whereas DESI is measuring spectra of individual galaxies selected from all the photometrically detected targets. -The Galaxy source-extractor tool is based on SEP which is a Python library built from the core routines of SExtractor (Source Extractor), which is widely used in astronomy for detecting and measuring sources in astronomical images. +The Galaxy source-extractor tool is based on [SEP](https://sep.readthedocs.io/en/stable/index.html) which is a Python library built from the core routines of [SExtractor (Source Extractor)](https://www.astromatic.net/software/sextractor/), which is widely used in astronomy for detecting and measuring sources in astronomical images. + +This tutorial will explain the data requirements for the tool, the main tool parameters and the output products of the tool. For more detailed instructions one can consult: +- [SEP documentation](https://sep.readthedocs.io/en/v1.0.x/index.html) +- [SEP paper](https://joss.theoj.org/papers/10.21105/joss.00058) +- [Source Extractor for Dummies](https://arxiv.org/abs/astro-ph/0512139) +- [Source Extractor paper](https://ui.adsabs.harvard.edu/abs/1996A%26AS..117..393B/abstract) +- [Source Extractor website](https://www.astromatic.net/software/sextractor/) + + +> +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + + +## Background estimation and thresholding In order to detect sources, the background must be estimated and then all groups of pixels with a minimum area of ```markdown @@ -60,31 +80,6 @@ err_option = none ``` the value of ```thresh``` is use directly as an absolute threshold. -This tutorial will explain the data requirements for the tool, the main tool parameters and the output products of the tool. For more detailed instructions one can consult: https://sep.readthedocs.io/en/v1.0.x/index.html, https://ui.adsabs.harvard.edu/abs/1996A%26AS..117..393B/abstract and https://www.astromatic.net/software/sextractor/ . - -### Application to bioimage analysis - - -### Application to Earth Observation - - -### Application to Astronomy - -![Sky image](../../images/voronoi-segmentation/sky_image_IMAGE.png "Sky image.") - -![Segmented sky image](../../images/voronoi-segmentation/sky_image_OVERLAY_VORONOI.png "Segmented sky image.") - -Thes original image is published by [Legacy Surveys / D. Lang (Perimeter Institute)](https://www.legacysurvey.org/acknowledgment/) and can be downloaded from the [official website](https://www.legacysurvey.org/viewer/jpeg-cutout?ra=53.16216667&dec=-27.79149167&layer=ls-dr10&pixscale=0.262&size=1200). The Legacy Surveys are described in {% cite legacy-survey-astronomy %}. - -> -> -> In this tutorial, we will cover: -> -> 1. TOC -> {:toc} -> -{: .agenda} - ## Data requirements Source-extractor requires one single image. For astronomy, this is a sky-image with luminous sources. Nonetheless, two other files could provided as well: a mask and a filter. Masking is an important process in astronomy, since very bright stars strongly influence the estimation of the background. Therefore, astronomers create geometric masks to remove the pixels affected by bright stars. @@ -150,4 +145,7 @@ Once the source-extractor tool is selected, you should select the input file nam ![Data and sources image](../../images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png "Data and detected sources image.") +The original image is published by [Legacy Surveys / D. Lang (Perimeter Institute)](https://www.legacysurvey.org/acknowledgment/). The Legacy Surveys are described in {% cite legacy-survey-astronomy %}. + ![Background image](../../images/astronomy-source-extractor/source-extractor_background_no_mask.png "Background image.") + From 1efca537848f64cde73dab21ad99468590314ade Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:14:35 +0200 Subject: [PATCH 07/48] results with masking --- .../source-extractor_background_with_mask.png | Bin 0 -> 57626 bytes .../source-extractor_data_sources_with_mask.png | Bin 0 -> 76231 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 topics/imaging/images/astronomy-source-extractor/source-extractor_background_with_mask.png create mode 100644 topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor_background_with_mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor_background_with_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3d40eec52429cd61d1b71dd8ad9faa265d2f9f GIT binary patch literal 57626 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 G&;CD;ci5=_ literal 0 HcmV?d00001 diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..524a7ed1138de81c57a8829d65fddf09e28aabfd GIT binary patch literal 76231 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%0Dx|HQ zGHdj%3Pe`%Zb$D+vU4*>DUs$WMrKGQ@j0WA-3p z_qNY&(M-XOi=2&3|E0>jAUTd~>;Zj!^*@|N4SRCm@H9|ZdSAtW$G{7`nC)d35=S!x zxs#Q*o8nWH87Sa^_@>|S>T8R#1T+~;6tK+uhy1oXaYC_8uE=U$MyBp%Gt#aq4*{zx z1R3o!WC+&fzjj_odr2gsq{j_7Rvs;e-}AOw-7XQQjLf3Z}P}t;879ffw5GK#|QYbn_Ia9=wE)?{VjXvVKUVABo=A#)jXfvdkFLr zIbdW!CqOK)2nv00W+Y3sZk+RV?y`68Fa!D;Exk zDjf3%0z?^Q82x172a3E)^TA5dLa8;>}+8AbWr;HU|EC zkQn{h+1-2z2~|k?Lt3}exNy4=LTS_=R}m00-A*W`BL8Bvw>=06m_WfEcuKPxXi=u? z;XYcg3qrub5Qj`#l~Pe)>_4OU8W|Y41LYISSCb@`AOl*bKa>YZj>IZ7iGA*y?Cn|K z8ai}mzT+rH96IyBA;TS}aACkpNy^)A!buhsmOn0W6$!YZKapbqLi5-MoS>XK&db0b zkkmAN9yxRz0d%`ZcYg;!EaB_RkNL%KsjRKVZ7lugExLhdXSug`+pF!8;W$Bh`Qrx) zP3otCTpF@rT`Xo>%J66R;?0zQE&S4@`R$DtyGqDyoF<->=};fI33RkuKIqQZqCx=1 z5Ku8q)&6&@-vDWyH=9Yqs}*xkUR?zRRe+B1H9zv>BQzMym;jJ=I!a$KVU^V*YE)hI zF}wJ!xy!Mhs4>|PI*rd&;;>n8xQLe^jO4|ILR|b$d@8E4@U3Ukzz_t`WYK~Q#HLN^ z21hi%-a3WP&}|@7goNS{7s_dXcnEDg5jD0bm@#<$3bJv6BYp_2Sx%>1WjiD#jeo!j zOdXT27Iwr3;y>u&{RE^hFLDe?2m2qH7f&BDSfwQ+kVugVc$7|$b#lk-?DschgAN?I zK@+l;j9f39j<-X8wKt^z z4PwfLr9kRYefoTtrl=Y;>ix(B`p?056XaxusJH~6D#`D~ErW_yU^sg)o;#b#Kx$MZ zC^dkNwgrAtP`^oM2~c>k1IOa+a(!WZLAf17G(D9(E*mdLOTlq7rM+}fW>&3q!sWZWf^MhZ%6-L;(9s;gC7Qgpd8*+s* z|Lp%XGupeUb~GA*{8ryd9S;QuGhK%Kz}SW`&g8B}T7 z$&J3&ZoCNCZLIH^avL;Y_dxOOJ5pu$_vtwLb+a$f3(a~@q%e_o#lA3~fv*w7A{9)j zK%n-37B6;W+L~9_dIq=o?cP}( z3C04|8lbCt7qELpnbh>&K>COM@K_>#oPAw=c^GX0n*(~6N-sm zo#iF+&uY+2#h=ht-4NnAN{noQD|e{2}<)X zq!O}gwT>iADZhVuOxFIe{wZhcBdNoJr|0bro#t(>*Te0=O7o-RWDXiUxeOb5_4{T~ z|G0L>eeX;eU0BqdG(6> zwuUlQ{0q-dtz2+MgZh@NyoKj?iyptuHPQ$6C&ECM8Pxx3*S>l4$*WmEP%i z&DI+i^y6Ia;fCel*~=8CpUlz2eS=RF&hcAX(R!w;0_KcvtLzsm+L(+CS)z=@r1+mR zW~3eg{HY2uGSa2R+mB&*DD(;2MSHNOHUX!?EZ&AGlTo4`{57}|w*3zHazv6+_uCo^ zF0%{I%@KrW{Ad_^y_O?Eqsd`EY#&j9mI*>B+XcT!!#IIti zEegxJcSkWXicewg9^Z$7t;Z%BeHcxnsH%4A!>NsHZ=;Y)PG1>~qzUi zWX9p}u*j`fom)P_=b1=k3AeA-u3J1tHdEdfUaCO+2=Q*8Kb<^eBwaL~9+_q)-H3 zB7@*t)ml?6gM%NR);npb>7AXUk_)IQ&6e<>BUf}%8@~A+*x4=p46nB9?>ULVqWL#t zaW~7cYNRQP;&8lbx_ouu`4G z5l19reSPrMVleoxXWV`6Em(AV{W_qk_M#HVwc%AW)fiQ79v1*JWYyvvKJ4b^`aT@@ zD>c1r+Q>@1L;l`iL|ybctdwZsV!OZW(A#UqSu1OqnYJi@4N?4eM#s;=e=M8)V@0_m zvTq`*hrfo;EHF(#m7jTws#WM}>k4#D?OTl8&@u4dHq6FLlTJ@7e84gu=L&M@Zr2)N zY|RQtn4W%g+!PHn+0no@n1D~mFjg!iG8*9JyZe{G;(B%Yjge(?zT3X;Zyx1TTT#dx zd-&mXuGqdElbW3!d#jNT1^)ha)uNFREisWRsRBeV$2JXB8Vy#g>n-m(uBKkY{l+00 z-HfAGc#rnwDxD~iT10<0TS~a98ZxgrLX(v=d3}98)g7uOBcA?|e`UTKjot#h3igB& z;p~lRGAZy$x$SR=cwV_XGpI4{fA}3OW3BfwTVJ1+j=F*qY8w3SJ;PqJ%PWF^zQ+X# zeuSuz5^Mq~*-Cd|)hbQRgN%e2{RRsa($}do7F8E@9p$uaGk;WLi=YJ(&v-?RgXX?49fv**LQ@7JVspgI>B^t+L|Ei(T zb1xBzws?=-px;@l>h|_@BZ7d}{efL7BvhiX;ICL_#z*$pRR-OW6g&1-Bm{Fy!^vvP z53+K(^o(PWrIdz|ry&>^${HVyluPCO@=XlvliCPb1_o1{L1M@wRzstD3wR8V_RHM3 z>r(25tmnZP6l(H{9WNz1)=uPK5Qquy#rXNB7S(a*&x}u6<7G+x&^4Pv&&Uh(;{<_ z9P>2E4NWJoDba_s^2L)yVmW6~@_OuJy35JwXgAHxXO|=0$yPK|5%?|$HpbxyxE(U_ z1Ex_LpJ)6m4#Q3#=07DzcD9(o$($%fZ5eqn_^)5SCgu!mzao_T{o|ebS-Ku@sHkr?HV&Op z?qc?MBXEPQb%V!-hT8?6lhb+QsUoK&;oIztD}7f)0qxf(lCbO8!q&cqDmMX{JUw@q1v&H%cswJL=BHq5(B`sz9vp2+De{d$Jgf+fm`DoQxiJzLBUT%TnW?y9JWokjgp4Bb6T0?!XVo!sEdr^;C;7LA>e z-|pp?Trxf0rkQm8T&@qN);0fN_uqKkO;FS9DHPTd;si-%3odi$O;6!`Bb1igm3p|r zm|u`|lK+Jvbs+ZMBVy<0ANzhN`8%b#z8X*{%OFeT2dqDV6iMI5^&+0YtBo+Bn@(o#AZrN%<)Y zWiS6eez!whIjx4SgJ?$-WsfMRsW0HVI0vV(=kXYE%k%Z(qx&> z{j!1fV)r)r9&LkHQXsI=Xe_&w=Hn%W% zh@lxO$XjbJqJ2I(>ovbRvvWoxlE>u#_RL!@Bh%Dmv;4WDYXKY6WqWm6q_CFbULkSD z^sDk%p^BWDRj)EBo;<~Xl=vD?q`*jS1i|K@$IbajliT6o0COW4YI(Q;kJ>jjD)Tj= z2A{30akE!z{|@J^THIrdYi%!9%E-}On9Nmq6S9`{MM&2@Nt)y6taXU2bD&+GlgBKp zAwl)YNYd`%-!QYMs{_d00eM!M%NR{@de=3Yn-PKEnpkPBrTpo#+~Q>C!gm-DJ;(;V zrc2ncC57ELlJWL_e2Aq3FULSk7G?BkRW3aNIj6_yuWBZq_*K$m_9Pfk|9#sd>Vd6} zK-`6S+Lyx9^s*tcGB~g?G?XwxAEBg`%Ko`r#h6}_mifkbT06A+ zt74%{Yh;9x^Wo9J>h~R{e>hw3j`)R#hP{^5F-A?ahI)UmT=Lpd7+zDgo?m6?CTlT2 z|A)RIBU4$F3~OtxMD}o-;#fR3Hmjk*&OyC3oP*iMCC}pHwteJ({m~TjHP-k{OiX#o z)Xpa>d`1tw{MY3{qTd(@**Ri$N_Rnx^pn26{_XvJh1Y}g@oK9;1_d+TQb_PRj~s71 zSlQIY)-(zR9pOoif+r1wPu4m*MR>;HdaWh&;Q4dl;9XJ>!3Gz3e-}IZ`CVraRY=H2 z%=Vyu$jg|gWjlUlutOs6~29)=8#;=8$g zC0cs=ow>vLsfP!Q<*Bao#aapQmOwg~MN;)n5TVfR;OepS`6+(N;@PqjE-o=>iY!lA zxnXVt>UfCW>vJTLfUL0at1n-^6lvA}KJhy75Ed4O`V}25BqxW8&u)b~CqPdAfhD9U#q63=8=L`oCC+F?dGG9d~<^cNf3OFuQsxw)ek+ z!z#+pEA$h|-F#2@mR!a(RaYPBv?@=5F%K{hsB!lje~>3 zPl)*VwnSDQwzex|MC1I9M*Cd`!R`X83r%%sU7XMfJ@%sEjKhZ5i6gF1ponH$vo<)j?y zqW~XY%4;O-U-9vME6pBm8^IK!o=aw#6s_0QrDxd;Ugm2jGczh1xr#Y**&CjcZ)yz< zTz96Zp3mB#Wk-_x4??lWNm~^I-wB3A_ZV#`iADZ)Iw5>%cBT^{aZJPLm^tJ}H3JaE z;NW1;%?SMtbTqc>0YgOdK5yVMC@divDybq5}8OWenuwd(gvTkej@>+QSMUBad~ z5_3_7#ahNUP*oWje&^@*e={?o;{|;9Q^61zx1*U}T0sFdz>umpIOaEpZaynh%VuYv z9Z{sFw~t2pc%Sg4^1Gl|+m=>Jk%P-j1{sB4H+D^l({Ebl6ijabKq=~@wxVJOn2AC} zL?k994FJGS2!8W77(S7dlDfN}ZIuP^$p2;){QUep&!f|}Kq;SsmGuv3k8A;Un9)&D zOpMekDVztY!d{=D1Xd~n*-%AxJ7x-l45$R{_Bkg!bCn`qF0j zyeaSui;9Z6^74E$IX&IIP;GhlbmDXJ+rhVi8DtUS?%a2FcAmhm^m#Rv?{IX;Xtc@g zQuc4dpS8Z{ESq9e2}U-RU*`R1@Gr%ad%ms1#Y-zIHqIifQt=OGOf#OTokW(Q*7ir? zbVbGC-6A4GMFpS0pWp-pEMQ^!A|oj{s1UnDh`v0vn~J(|F_dbG=?H!&kfQ&fUqw`c z&9`FosXW8ayt?|8v$G-wZr^Y`ZsOykmHJT7Xkp!YV{3JFOk3OMRJWakAoBXOf+=zg z{EPEB@9j50W_;A2XAZe<;H%?7{H(pId|Yd44aKcP9rLENh0FVhz*pm(a~(G{H01U) zfdvF59EJvYNXVoh>-@K4vVo6Jg^0RaOQWL3YOf74@q|noEA>^alyCkN2g*WooL>zNzR}tkGodZpb%WCG_!}Qdg*IZuZ>&r?9is zI?6Cx8poAML1nqZvf|DMkpc+Af27$g2~D7zjDjjK1zn&RlpxS*)zYW zSnzuH`&-e#uXo;c*7%LFbcQ=Ftrc~72s!`Y>)r|0WvXLgSv7g5aA4DK0h(LF zTd0uC%)9j(>&t>^&-*?!R`Te1!#gLZv&WU@tgkBPp>Od?Z!w{)1_nD9_145RYwbz+ zz0(hL;$(YM?=IZTADltd2>BeGxmsVPNB^4OP<&20@gM@9$?aA!#^Yp*moOkXHqkN< zk4`b-=^9$*ynVmNO=LZQVfi3L9U^FJ%h2513|rWlAd0{#N}X9>5$;&BK1m(UPM1WN z>%_znIH`PjyFG|0Cj9Lq3kFoU=*8IE^yS5*7xmf*@OYvAe%lFD?DJ_p4+KlgO|TXj zAL&OjMup~9PjB+bPVlPxyFi>3F_IuunYP+y8lX`uTC9?(m|q99hC->>vaGuJx*u>! zahfn=5=GO!LAu52oq$zF+Eg5lv*H;|2Riz~Do5kN&Gv9Hb0AStxOrQouGb#f*ccUs zDI&sDTIJaHBvD=Md6nWKuS~78(2`Pd`i&<>Z7#YbHwY+vO>g0n2w3tmVYO`;0u95k z>KVPbQ&Llh=x8eE>mMYD#;AZ~mx`0>`5XK!t7iMaK$qjwUgNJ7Pqk?#lR(GSN++7v*tu|gEZ=il!wzNP{~b<;Vzh2;P?O9AVY#(GIAWEr77a>u^rm;zeW>9bDLo4d(2Jqc`(y9b`mHE*HX; zBi4-%Ulvtldi|3c#5Bl;CLW5o(ztd~ch!2|Gl(@`mz<~K$;g{hoTdW~OTSTv5i{6h zET=E)(q8SIAxRu}j~PPX;y;h>B}`Imr>L7T-E@8J?05_W8+oMu( z=#W$mq`vX`g%TQtBdclb3=E1iGzyr;Yl+N2C=Tx-P8$Y_(UfzZ9OCEP_zD6+uN6ObhE<(-aCXM4sL1SI%PT_M zlHmu(GlWPDoflp=$v_Vd@U9~D$3Z2zsOUdkle?oArM4~oAVEpdW=$&Vwp^D?;1qj* zazS{a%-;!rS~sE5?O*w;6F^GCGM7#JpGk@dSrseK)MU`9&Al*FKuf?z zes+DFAQR-~K|I{w*siwZicc^fUnA4Uvu#eT3VEZlT-V<88y)7pL3}P0<`x&3q(pe? zXfHSs-l0)eSVSDbN2elyjl<^jPACY3%eWO@Dk86m_?$w%&#BpT_sIU!+7Y+Wktf9N zX|^5Xf75GaQytao)1dN#KbgO` zXi}e7QCLR3bOD(^SPlvdlSnD8DACgUvR!&B?nCfR7?k3TCvB(MY}eEsVAcx&g~ zVn^a~4;PN&Mt~U@Ngyx+Y_PcAr9tY242mURvrytHMx5*6)2lw2I|Cw z_$MSZC8b!W(W6jf-3SSSI$KA-dL`ikFDN%Ww70XX8|`crsaLtVon<)e-mX}dDxjl% zX_OTc6oS=1I$8<~UiX2gYqgQ8z}&^u8^-Z7wPgS)i0MVOB`z;7L~PGhQqnG=>RoPK zVihGxIzLy_(vnt|LIS!g_;GcFM5BIT$d@+G+M4eUKfk6b zYy1=?tFowO>;7S5kRJx^4y^-D@zkqVYpct{U`x*fF+@Z`;c+)d2G+mTimI?EjNt=! z7kD8ngCjXgh25H^rj|DJ_~#dQMCesWx-mf(i-`liq@yqtM+q0hu=JD0a7t^R;KIUfM}|<>;;}ZCmch;VUY@`nC(5L{1Gzruv-l>1bC37&`3CWg}Z&TtFn>JYRR8 z7eDfIm!09w&nmInBU}pTzHgEwN{YAlE_M@iGzVk4gjY1mJ}0{VC?`jdr+V{ZJ4y({ z!{g@m*5t}Y|>!Q z!K~Xe2~j(z*)|oFp>A#dC;_LhsvIhag1c?D5o~NJK{1;h!W*VDi11TH&(2!6rCQIy- z;S{N)+M9sUbzpb12|nWYkB^kcn$JZ((}*#WY^Q|{^dEhN_V$3tSN5Px&F$|8s!(8; zE;KhYMcC0>!Zk?;G$*cz9l+=fZ^9E97SZmWIwTHqYS_P3XC|9i+l;J!G4uaxH9Vfs zClPb^3JB<~JD28=Ba_R49C9S-B&<%B6!?D!`z)--tSfIkKIL|`v@z+Lid%jbd+QB0 z_QA9nC$}kzsiKm4T-xZ5Cf-;qYB05;NL{rR0 z@pok?DO3H`6EP>hG7OT;BQ!{g2dm6d7{NH_y*QE;pIk zl5!@7$gdnWWnkDUVmOhkbx3S{|H#@Iv3fm$t+d6;%w_d{wC2xvt*B#kDMKlPjuGwQ_d$igVEfnRK&9dD#i>!9uPaBV5nlU=w^g_v$p&){TaHF-tM!35Ul8eyXon#KLWln@}&U%2gqu> zpi%^%qZMLfv4KG$3lzUfKrCpC(O0}SCKUekn#qPhN2jUW3{7le5+dG5<1kdv3#38B zadxt9dL^a0MolKBq87L4ti<<{pFRz-A5ew}8fX&$)wEc}(YDNJOv2(TmM*8`PfJ8Z zh*0egXIxxLL2ggN9_z#V%@?GHA0*_6E|M`2-xVV+iQ-eTq+THN_lWm0-7F2g4v&rP zUGUSK8Nt;%uG@So8~CKA*el`WrIwBH{eKxikVNbm(U!lpOBl>FgA0R*h#hOErRB@qcRG17&_-JM2)C+lDQ(}=(W zG>qb%@Y4ij>2+3kLCnl^snMO4xw7TN43RFo!<&ls6@$aX`_i-M81?vsBNUNDyB<6) z6V^E|@<47bM0!)lX!t{>)e(qNpc7)<#+8$yR6F#q3d`fayR$P;ureH+F8q+fr>Vn3 z{6XBB`D|{w&}w)%o0s*EkH@2(#rN;Y+C@}@St=JJk9WywO#X)xihngU>hLf+o5$pV z=-<$_L3}I?-T^7dDM8%JYrl)aof(Bv91BX2;7(hgp6moV^UO+Jd$;+dD=5sEUEb90 z-C4rG-c2X6fpm5YQW}~nH-sqt;FGUsH0+6o)hb%wm%;F_l<*(4P%eas){le7%brh1 zwQf#l1~%PYdQ)cd3DQFhbladLFp)ob78@hOV>m4Wf?1~FVMy(B%#832|HGiW+r6X8 zN`nZv5Wix})*FW&=GGtiSB7Q2y)TcgRzg)@SmIwO_!4VEA~sN_F|aTl*5g5_uNg&0 z=lR%$`1@cVly>PoDl4t;6R3Jh*%`--cb6Sa!4(3tu(IOEH3&|Yl_Z|H$6MC{A;BL; zWgr2T3JsZyitYq`BU>Ik&U4wVCT?oDFV*H4h*wuu{lnXv6mk_HMz}ULu_tG98n{6# zMnc}|PT{$m3&!AeS%c!UV7q#Le&y`6ZpioxM2%^&^woFFd1r6mIs#RjFw-z~6#%>1@}rg$kl%+a|#psX>U08tvodwKc4^o@hQD}@P1+!gyx{8>>izXJ1GA6qua zRM%NdAqn7T6LJsuw~lBA711=y;dd_1=Z`I3w=Pa+8zU(uaW$7%b_mda$RVMc~2wIBuzd2OFExq>J{8M zIOjkJ2x*(B(XQ_RzkxKibDhiKU)83W;F;cZ#M`?&VGg$NTVtH5@%Dlw4z7e)@=Tk+ zGNzcnkfKj2=x2U?`*gmYEF)8GF~CAh9x6fLE4!n65~HalJ?a!0ls@ma9a-kIGCOP71w+J=qWp#+#ki|U{-dvM(N=YcR&jo#z5;1q>#S4 zT62`qzvB;1u#I;Ae|)^I3_Kod-X6%e%&Mj&%ceA&=GR0mt7iVcdbo2lk-eMA-MwAv zN|r^W4M~W&9De*sd_R(tbqXre=4l&+eZl$Gity>tUtOh;!1cWW+$QqhBD3-&y0PjP z7n4rUIT1J~q$X04j0{AU}3PeBut^%!_m>YVt@uI}dt(}j0F zCrzDkH^%CmdP7bhQ5+t?kZ@uBmH!oorCR%9~6C5)R0LTL1I_f6P&!yhToS z1{!(HFV2`6nIq{2%xqw8%T@027%U?#_tvN^(;Bm3zEG%-RBo6Rg><%&~3LB&0^XheLeXBq_pmWFtZrwKS2wc_7~_y2m3j24}cB6Muu{jV(j?6S%iz@z3Z$D5vtUn$&o`jX|%a{jYE}TglX6PX)lk3B*j_V<-P@^ zhO$>(z17`&0pzN@KjTM&@nq0>1ap;$|HIZ_M`g8jaRVrd5=touf`kZygdibZqI8FJ zcZW!qNGTv7DBX=nNH@~mAQI9cUD9>uKJPca`;9y980VjJ4)E+}@3q&O^H=k=0)e!} z^F}f<+&_XtRipobj4tzg#-Tk)y#W4H%FJ{H4an=L|9Hvv=mt_BCD5mLez9X;l3=HXva2|SZu-Hfm%2A5KH9g>gS`a43`MEl8zcHRD{p_qv02%<- znbu%LP{YX({O2}drOXbuT6`Gpc29D@ySh4Ky+a_ZOuhzNis#p^A@V~j$)J!Y_k_8= zc$?B{7U~$c_QsbUpYE-{&a33|Jk2;(VDzh#K(RnS?0W_a>~nlfhiMq;+}@uW*i2-M z!W9L00B*W>&yGSZHjt zf$hw?%aV$BX@`ek*3hQYi}I?EQ~BzuQ{+oO0_xDPKUKJTWMo|qCPi0mESVKHiic5L zUVV<~KGx_aTyKeI2&*YMI-|}>_x5xJOIj|=G2mq6t-l) zJ2Wl(%95dko_=R+Js0cN{N~AiRm2x+pPZOtX!tXmgKiHT{KNY*;wO=x#YcUk)t^?| znP^i-hqS9_5ju_B*RK(>o0ds?9&|HwAA%P^b*m*M{kEz~-XE_oT3)w**>WsqW-Q_j z2+5|^N(~VqS4v3su2-ff`(`n>FL&Yk0;-d zZG8^qJ>G6S;^s{^>7;)dg>{`|y}q%%wDqkFRifc{AL&CE+44ntVteOQme>xar^sEW zd;Wan;CW$SS^3^Xdf4?C-9xqXITH^)&iQ$9X66-W&QDH36%~B2UiCP6K{!PGx;(9h zmU0WIb{}%Gd_ID)7~Oh$|0D1F8w3yUJEx^3XtzjYHg^Z(mzX*j99lJLYO2GU1`LS& zDSaBKcW$$p*uit77Zy&?R;KjxJ$7{bG5_nS%AZ;ZJ5yQ+^>K0C)F_~#i2%Vg419f5 zkm_@mnrcYSASjRoi%Y=y_*t@`OE`tiA4ylW7}O+xysh@lvv=UMuQ>m@4YKMZ9q+_i zzZ+f^7We)cGXU7r-*80klbCqEt|V9WkK}LU`?P1!MF7de_vVNR7TyviWkNiQZ}4#T z@cg>v=-dW>>bcr_cGyVZ(4FniyV5}dzXW`b%8bGXUUeBta5(Y}D^)G53@eAjgN}QD zop8D?_&QSc!`rRI@?>BnM%rV$Y|QLv4**%K)Ee8KMm1vR{v`6trTmJVTes$y4%RnM z*!}G2hR{c_p)f6&Qf?LXZhuuGeGU!MrFz0m%+R%kP4$Np@p3^!uVJ+Yy9S8eH}uVVbzcy6u~ zx2x#j>KoJT+vyDIuE-Od44V1uETS6p4&OJH zT+ZHAcNOR1&)HC&G*3*ZX{dD+PgY=VZ7iz1WpB``2!$Rrrp?T_nu4SYx58@9ArN;z zpL1sMcLMiDXJ3|7_JcAxyJ*?Kz_fSqBcJg?mk+PyiyyL$W3bf_n-IWgO$w=I~$wEKtqKQ60+tM zM=;6BA$r*#>Lmf}C7NlE*uU8FpHQy@D7LZo8um>QsNz5pItAtS=%l+IUOG@Hk6~E? z?aFCjVDwRsQuN`q9DK<8t9_9U0{!)$Lmxhuy1P5@JpD9mZVva}Xu78Td`Qu0ad8Lq z&|mxmBI3Wil2wcl>2(ms;8h?1e!V!OP_81Z@#kjF6R(;#kGUlz?(^}td;ZnI#f4;q zZqQ#u5fT>f^pO$HRDn)WQY5&L8K9G&Fi0$@>0>GTw9DchO@1h*$uNZi?MIl;fK3pd zoDl6Hz3J#QG`G0)XNt00pP7pPh$%7jHXWUoxWtRG;g@c%-20MJ<6olNK{rV6`@S;b zOUr@Z4auga1cB_lIu%*g=w64>9#?NyW%_$Gk>(wq%f$(X`KtocnTov}?eWq*1vw9M z>&g44b>cidtD<7WBft92WK}noXuK*dANsrA{bRfY`Z8f{y%d@L(fNhu`YMNU;5LES zX?f0ZcWUqj_%uYz;()^4dL^nzMqo6&U+vpDQ1^-}^hS!TA|6pYU`U|2zaNmloWVkZ z$U6RPSkZo!RTJJ`l>nXbqI7(Km@TsdJ$;O-M%NnPwQdLW);wgeI|5!T_d+WH>lL1N z`V-`U&#$Vw;p_xRzyEZzZwkm2Jq{Uf{`j$>QJ)|xC}IQ!a=grn*ne;kM?I)=a3;C!g|?j^UQ{H?hy*OXU3j2~Y+G!2*r(ybO$!QJow~Zk z_Ezqa4^6k~$jRZvSp*FbJS%{mS+{0r>uM83z}9zNvbni4ENsP1ixggCoRjw(oQmFU zA4zSwENRjxY@|J&wDOdd>OTM+639+OyDVnfpY`3A%-+`5=X)`$lTLll*tAzX z?6Ma7SV_FMEiDaoBrwM_Gr@+GshT-&V#U~?Q5Tn2TpT-GWx?>lPG-->G2#>q4!v=$ zpzKlD-j>r5zJ4nl1XIH+efIjNZ}WJ&Zjb3H=2hX}Yfa2~0@8dTJyTk+QqZQ?CODp) zST(%yhqVQYBt)?qKvt5zfX(w%d)M?kGl`}rr8>_e&!Wra!^ShLhW;Uk304=m?|Ftw zI^+m#^HNl>6WN+y4rTd?1matWQa1NQoimS3ExrJC*7C6I;<)e;n z>4&0nj(V5Bc#r4iz)J@6rj-bYJFgC&UeHYG28ZFADk*Wt!wfVd12^lZt4m86GY$O_ z^YcC%W-qiz;jFI0zw@Hd=nYN&0d!xdXAU`qOU(%!wzku;oMB&w z7udS@qm4wKZDN73Q$r(ej@0_rW2tV#{6VyP>a6IiF6%aoEHW|#Ev>0Jqb6g7+stA> zS?oLPWwyG-w-Q z9j*kB)$+YA5hpP;4^TLW}ZB&FU73h@3Q#X^Nn+ec{0Q0r>Q)ut* z-O9LdA${o(MiEB8NHcdg7n>_Dz7Wy+ixzz406!G(GaoI2d##P2pW}CpXyElqIHRN- zQRCkCy^$hZi2!KKo1^Ek!HEB>nN;!BhPSi$|w}YOLX%TB1&Nq7JpFfmY+_|AtD*x%qd7C$khdq_YiU`3uuUD8rhCE2t~|Y0k z8%^|@fOY%N0>CEF4aHbDZI7(Fm|l7ydpKa4iTERQwWo z@+CmqB#%cVW)2CMQu?T364vEka>xx;>Zf{kgyD6oCw z*GmdI2A(8i1~JX;KU2H;+K(Jc-%J$aniYyRBei$3;M))0<8|>vMMdbIq@xy4@5H)q zlhe#{=Be0QtBoZ9WBpc?YRQB(+gCeAAQ3l-U&`Y3*O%Aj%Q|0qyhI(gw1^pWUZ*IM z$H)5#?>B7FKS9S-Z8TDi$J7hVO-le8PG&al3FGszwG72vG!1i5!{lJzE;;4{I&Uru z#P@3{4}tRGijKR*r*_4YnyUZsNg|w`0p}hl8g;dmfUHQka2+)@py;v0@ zrg_#o^lIgRG+*kc_+&t|Lumo(a=DBVPhKMcwJxB!S&shtSzECwZQfucNEo(>nw9>Q zrV!%NnAHa2p+T0N4LnMW0O*08ZvM@!AzRX zMIXd_=T0$UHJ(k@6@H%S@1G5y1@ibq+Uyg>uFF%>d`_yrCI#&+`quvT26a_|&20JZ zsiOxL8Vcao$nw8)x9Or@)7Y*^+F=1j^izP;aJGZ_>Dyq`$*lSm_Kdp3E|$19K6m%k zAB}p?L6i&ftdF*44?*qV7l4))7q76dCownQA&%_!a3x>-{X5MZDW|joWyOHXexpsM z8WGt(CAdFbhwf`k_2_3%Rn$_Xa3!`T&JBB!LpLw*FupX^kcYEr@}spCb-^|VtYLu0 z(zbY=t%ZKR^f6CtxXQuD)r`O<+jb~%Qam0+lfo9Q)-Y(= zDC`Aiwrl|O%GU_f%6#HiR(^Npx45uw5%J8xvw<%KM>{Ee)PB%&;TV~`0VQ_ayLXtz z1O9kS;+gZ(7WBZIaB;XF{*3s!jOOgNet?ug=f}tB#KZNA0gtIs?iqYj$TizJ%5I$T z?)ayhR9E+klM{dJHy2()0pL#Wwro(aNU$BRT>}v|EIA>t=#_b1l^>t7a(fe2-v1h; z#Ab?cR#dC2?4Jf29CXZAeQ)CQ{A*W?m-Z{Kz#kkEHj=sxm^xrdcw-}ez}TYn3J81& z^s{4n?7uf4-}UlkF4+S52Rws4Fc`!`ZM3tRE_Tvd?Px+&f!NB1#ljGuL|c=;N;13# za~w35%O%Mr$-3YTg+*G)$!N9<3!xzQV@wte$bmmvnd?L80DvPZ@$ltrsfoNi4_?CQ zF<)uX`%F*vc2-3S87XwZ@wDXZ^t$M;twT-1$c~+C`&-CX*ZJe+n?SJp9A`>F_S8qsM>J)P&{~_1rd)e4r z<6UcgYwK6#<#)ktOzpLCEvg0+f!9pXGJsgbk_aMTle4I&&1E<`djmNTGRV_t5vx z-*pCc8OoLq&{_SCjePm5&iw|qhEV!svv2e2Drry0eby2X-Rg}MXqT3j;^E;vTl?`C zmEP|@QM%|$8F{?tFJ9o@d`IrtXbvYjf@s=oZr*Ty3oW-C7!oI5P|?cJ-^-t#etCV! ziMbFxaW3#GZ+LKNmAmScoc@+Z`W=co@|hQ$4O?3cqq<_~FA@`PIKG{o9P6h~%l}ly zX@kYBoZldrZQAEi#44fp5c~3ymG(QHffn%JCkw^K=L!lRENp1N2j*mJYjGWw_Ppv5 z96(Bb&t*9A)!nt>%*z|ZlD_l2sSmm^xG=mSBIN`09Jo^OPc2OT`IM{^mK{qc;P#rH zr>^$zfJNYq9FSaLk(1-ju*Xq)ucKe^?@)eIOda67DKT@^JB^;>GGO{^*v!Lj{j8yU z+ZH$d&SueO_4IV$b!iG;{n@MKq-=@IG-G)^F9serGqmw`^si~pV4u^QyH0$c+OLQk zcHh}q7TT)w}Tz z_V)gDb05U1aaCh^`hg#8#BQhWXQ9FhtzXfGC%U*D`l8~pfwxQ}xSD1}qYAAAPnatn zK0^9V!N8b(hF47U6?uZpa~HRvzpE0yh1=m5J^4;X1l37XyoNLXnUkLy9E2H`?cAG>D?5o<3J9AVFM=Vy! z+4Tm8^gN3D`PZ2i9pPR6oV+ZI0UD~NRBBZE7J@kob!to2tY0RKVm$R#qhH!;XfDjc z9LlN*_u??-EZ}GSK+Q-=D#?mm@?p<;3|XTMZTbOv**|Wa>HZ0~*ba?<1|C)l$&g+w zSKQW=^nZWFqRU8VDLUco^H`5(2<;j7uj)(m?O zT{lwpMBfPR#f?YtH=MUyyr+;GK7JKuylE(A*~iIg)=9V&YjJH{*)>V{!w(7kTI8Di z>~iQLuiX<4>6wnL9L#z}vTCbpU^5U=^)=zUCr-h?gmxt_chY9EK03b`u1;Vvk#7!lDCxuSU&5H8Fl*s>b#kN3J`y)fN42C|pX+v~Aju0;o zPe)hRJPZP;8s8K=pTj-rl=Eup_r7#s(yo4`tW2;D5~KWlYrSN|NK!HF7Obl4`E@v3 zZg_gS4-6VCB%c<%Y5wGl^pB``uyw$4H3DYU0IIbxx z8=Ww?O}X(iqLF*~kdxD{W#V9(R%v+sm5NDm#oWQB#S*@7NLa~CHwT%YvZA6eI3W)BHcairLvaN5or}x@RPC<){^43eY6f#L!1=K68$ndmNr;#O;4rVkg8V}oe;|&P90vgQW5xXZOrj;^u7}n z5xK_qrSp4!K3PW){EPmx`!J(|#GZoE?<`In?dM?n1bVU(D^Z_u@Ypo*SlDAU)2r6S zds|!E?8-`)+3kpky9GLRlH%eR;7;H> znsTT;o)3o65aAIKO-O!PSQswF=|CU~1{T(0Wb!$6zu*;LYHF&VpWn_Bvv+JrNQjTZ z?te?dV6T`5rOxAoHBYsW{P;{t_w+6bGC-x_>SFt(OSN7YqNtP4rdHtV8Vsh1kn*|U zd4uq*{TvAeBqt}Yg`dmL%L^{E9NRmaxg!50%2q(jLY!@U$Ka9H1wV_&kgLO0@`ukV zs>Q9l+I2Sm>z^$}J_P0xaC(@Q!l`-xeg|7WpRY>ZSLPd(0rt!8O(^?0AkPwUEH9@%0m zZ(Q}sB03XDWjL>{F^BSuoiPMTEC>qVs&Rq8V+A1pT*Ts7nLF|7K{2}~S9WcJTmqL* zU}ww0u?t`V7}mC?z&jz_AtEI>@be1{eL8N>qAro8E$sxI0Hsye)WeKH>d{|&{=Vo{ z#1Fc`Hl5Ks=|0;%R#Ov?ICBvAzZxn1{o+LFDRsCN!dD zr>PgO>F>EEhAxztu+*eo|1@Z}>)OV1b|mSd%^=NCb6h999UM$CQLwqW6swf|0j!`$?{6ZC zL17H{a2gj%#)rhV-Riv9!$8}LgMVA8J&X;6vJdR-A^Zeybf^h@YM3^*E8tUmf{k0@ zJZLRiKt$S^cmVqHsWGbVh^VWR%KMR4< zPh0KlP32sm|C_455P)pwnznYSo4cW+6f-5IUrfk(96pa(ZnZ-kd>SUMNFTDTSpd9pC$VoOQKZFj?PidKzG@^>A=|oHap5O^1 z-o<~VfWNLP(V&dXv7@un1H7LX1M=Xaf<+!24v(Bg-?)=qW#?icZi(8C+B@gHoE(3 zqU-WIBa=+LC^SWY^CBj)a^0$?^3%y@rG_wPUG@)8dR8xd6*hiB-3%{`Ion4i0H5ONJXW z@!@t^WMJyRcYjczo88$T2Dk>59DDu~Gk15E!~AU<8A$@EdyIi zO9Oi{%UPmQD=djUjt~9pIg& zTM6L12_p|(S{%G*DE7U*a3xXG)vaK*-vgcL6=A7>;;wvY5pQ6y5p0PIi#@TVJw4R91)<(tcJJI%Q@{B6 zf40A>F9~LVwR#hI>tgT#LA#1#dYoIIRJbwjE2;40HulnZB<;yW5JkTsW*vO|F=qvyauN}^F>QqpYL7*T`#axy)F7$H%uYy3 zKAT?wyKw}=7yVk5>Dtb~zJyecXW<}(1+^O9ScTC>ag(rDwLMklojdO=N2~CZ{9zmU zfT=`x3os+Dh$Mk|0q84{6QoGl;F~1Kx?h_1*?AmVffD?N@c?crKLkoO`=EO4&c3KW z^ug8J2`_v>nec+A1%r|XI#+zbx+Hiss7Kg+UKY|cS)-%&70e5ZU7}rYc<6a)lxSq8 zs?R;vu3vY7R4Qc>Y>P6t*3+8rtK2M5@I~`AYD=rL#Or^v=n$>}3}5T0bMd zhMKrUxGQ?yjZQ1t^{nHy(eSHZMdC|z0{r%~a|1!6tzlvDvrIZBI zw|oID5T1c@x6MozP|2_up5Ako*0nI z*;y=0(+Z%njQ+D=KOf7ILBf$H3$^AtrJ_L~vm;M1QCsU`J@^PGjMX>>ujvv(Wtw(y zHkVoNMKt1t&URS#s1{~3Jw#!T3oIW6iXuAyc-Yk(h^^Vw;}&{kcS5aC!`+4yWcQBM>(1#hA91RJ7c&ZH;Gg z;kC&vE^l32?I|A{cX;j*KlR)1d`L~%k^|3jaBitpaC5SKYDf``CI%!ATn|U+mcM@e zLCfo&qMHMeVHS#aLFH^k;sGsTj21Pjh2dVXhBSw^##6zGVt=H-g2_VUl?^i43%Fqd z^y8VB_q9}kdVs9}Hge3rYmfpp2ZAC_149Wfs`g=Y@MOOJ7M_cqYYTuCG}cog{bb)jZ;JEQ9}oZ zNOhSDdWvk#a(Qy%k1Ba0d828AW;vlBX4}EK={mtK;I>8pJJX>XNs|QiaYEdwAZOOz z(O0Ahnxl5;?!s98JF9B>OYgpZnirH_6wy!9HS>%i4hx3~O0D1R8Mf~$jJ9Ow;@ZwM zIxRO`KqL%|J3=xwLPGA}gSTsMVS|6e%oy^%vhofpqdTz|+3&nuhez!R>gt^r;dpDO zDvP^2I}aZ|M0pn)ii1*JUH#0(?agDlk6-RYMG-^>vv)hNJaa5qQ8I_=bdZDuC`*-SvOV3NwO${6q z<5+BgxkduOk&2NFiE)sC^A>37&;6;vVam6p4+?3~Eu_u+ZZ&cNbt8xYs_v0J^{K%# zP>lI^?eFa8%7TFv1NtzR2eNBTbtkI_D9UK)sJLNkq~{aglwH=JL430KEaOZ{yDb?HV(4bK)398|uAW8mQgA&FXp88sGlh z+iL_Y47h16Z{5Q9yM>n0Jsb&N1UTB`;q)-sP9Jvo5yo0~qJ}LS&{QCaT=o;}0DT5* zsBUlfe^f6?P?iM1i?jkq$QUIUuOJ;FtS(->*y!)NP98FK_$;=qXL_8MZMCN-8#EUb z-0o3gw{NcwSeXCYZ_ZIE$*GJ1-^-#igDOZ^#?1ktk;X2ltn|@Dhj)2w_^NpzL&Z>D z?vH&aY;y=j`fu;eW#wBs)8V1Nqh|61H?Inq1njm*leyi#%zW2qZG~xB+FBrLabEK> zv@K9WNBUMjGDH^*R!*-f8#18r0!x1*F^ixy1)CKTKn44yImIthX6VghHM428Skj0L zzQuayiqzIa?M%22xVw&$dHd> zh*N*eA=p01!4YY5f>>7nC{+_*8+beuafn=9@*S zaC8v(JXRX@h%V?o)EH&Kzan9y3O0i3x2Y|}(-B!gv$<_D@OxuF?mHNk>vM)yxH;_&JeLs&6+oEalPcv5IIIy;?l&=Iy}@(jL>M0w z4(%E=n&I$=<$}k`bhqSmE8i*PF9ZAbvb^fe4wD~Vx!yj?KYs|EFe^1xRv!83B%PzOmhFyr=6o8Sds+&hp6>(-!W`WbOa$tYkdaxcnYmyBEOF&Mn%wN?ZnGpQ;I&6RY-w4=<;mlQiwg*WYet422sq%m#7GTi zao6O)L15>EDa6mm7huGHMi3;J+l{0^%8{{v5wx0Zj*jaj{8K;1lp>&uoF$---~ z#r+3FfZk&TH${BtrkGVQDA7t>DF#G>2_YAO35S&HCyZcafIkf(B6Qf;*vhJ^sBr1r zi!6YWqE7a>u4YC9!bVyN#Li^(Z($7d`+Ps8j6D5OQ0QnSUcFE@VZ|vYKH!$vp<`tK zioWwPw|V*6-{szT*S${K&W;YfKh=&Ke`<(a21cfBkK--vI9d`4JvS|Zy}_F5>h8AI zw)$UF|IjHppmS_28fL@=1qGp<`s4IF{rdGw;LANS>FnVLX-HAjHcuTkvB_3D!bT7K0r`&o{ zTwFY*ygX{#>!=2xxjh(KoTixTvQ@R>vfD}|At6Ee__04SnSlZ}`+uppsf8+1$e?SRLS1yC1+6S zApi&^8UkQJY+sgQuF;+|B`HL2{_iIKhm64gpz%ELv*Sac{|(_db|lc|)&KWLZZL~d zJ8%W%icd~Tsi+f!84ICBfBg!8+Vxw?!yqcEDl+_+(LI7z4tuUtEh7knC5!@Q3eX-| zb#yoD7G}d40P;rgh7KGY7N=zReHtqq-kfW!0S~0CTzk$SR}HL`IXuvqefXsUL^zP( zhCBZf26mxcr;3pFi@|WN_Cnmy5O8S#{`c6ZHjt^TU0hJCwUbN?HN`#PbUEKMCV$Gf z7}g!705OIcigHW^PIXvbo7(wS!XYh8PcdP@OO3NDcr1X{zV=rk4-v2ROGSYvmb0K) z5~(}j1`#0k8(>~*D-F@T-To=SXY_7qQsDgrtY+U9+d#wFt z+42wATWBX=m~q-#{N#UI;(OuBx^07un&xC>D9GE3f-gTN8oxK4TjS8J>zZ;uI__N? z{Sp``_;wSg-s|kD0PFTbyJoo^8%;nzxqx&Bm*BhB4@pxNJzs9V9h30+p z264c_jLV;!zty^$o4F&B`kbA&T5?qOFZWm49j%}=*2eP2S34ECGx4j9jaF{2S@7Z` z#ra8p?bW&KbzYtg^$|*tAE{X~P+D6bzjfx_s8#xucm8BBMjCdR1!!5oOcG%AfOIxz z)MCWqApA`{JBb%$8bQ?$)}ppSk>ovUA%dn$#1;!Drt{Vm1`>UF z2<>9#6H9L|Wcq6ScMmKfz0UER3;5P^vq_HXG7SO|eO(h8-N}+b@J%nmo&LQva;dG2 zzy+_Kb2_*!OWU-x8!G357S9NrABZocLAxr#fsW3J`$~C{UOlg)UU&0rV79dVvKrm^Gsx_I^Lq=JzkUsw7Zc~TP*HeKH6*8m;vh*gg-_LmA@`GWVIE{I zU5NKv*@B*e*EIq}SMkZZT+ykvB#(iyooa_z)9l8vXz)mA-jl+h)DqV5;Df#a;9riK zi_bOAFvbw1zeT6Nq4uaDnUb?C{XPbAHOL>V;y06wzr1u-jf^1QPZd7 zm=a}6$CSPN7KkpHWaIyfoQ3Js17o)`SYp*8llwv21qzR$b$w6YYWBw4(J3sk&&=3k zdOSWpU?+j>Ly)4yCp*88zyxXcmshV+R(UIcCv>YLf48+|Lr@mSMn{LVEv5YY_(>kl z#c$fbTEQ*M!MgPb6sb~dCRpPDa?nJsrk({{%{1f%LwWk`{re3a9U!FaD^eUPkwj&P z{5+ZZOa&;G0x_vHyiz`iiQo_p2DD&-r{G3P(_@f{;0^qdaj|3o&B)90R!;U=eO3kD z4KK}|(ed+RpD7L){ymm=^pQA~GGEr%<)q=+vmttV zBPi z+l~ayLv@l9_`EJYQc=4%JB(}rly~sQorNU)fkO|+%CRGcHtB^S>yO8r(IALG0iy^BLBW3^jpBS?KAC(I0 z?taFC^|Nq|*ZygWkSG7#NQ1_`gNbgAO)TsU8%Gr4`U90C=($^}d7vg0HBl!9J46qJ zOxHxctPJowbxRWP_R`bHB($}isI9{^x21?F$c5yW3w3qa{&T5 zQ-CSV;iK%F*4^1ka#xuaJ6LIhVhVZf&#}XhLf|_UayF}pXDUk2h+(LvK7qY2eN!_d zgOw|0x_-&ge?h%w2<#tb@miV%64Pf& zAPKyu%jXjQ;Kz@1*Ur0u^#HaExi`tsj;X7tb?lb1LrzkQ4e?+IoR!BP@sHOJ;H8}d z9o4^+eQ;x#06M|+-02|zjDUhmSSjHjczK~9DO@&ka)_A#Y$rEmV|qbw#bVwO9fqeA zS$mWng`4o7=K={)yicGv{V~J{{tjZZI?}Eb@-UXJ7(0oyNwZ!vL$N+&(A>T8$4%xBhRhR4 zo52@|PJ5zKN2E>r3UZF1{}ll>`tB!SC)nDpq6TvY?cVm0dX+jdz#jvk#3sVh(pn<` zOkZi^W6@XIHBnjhAqH^9xr4|P0$MqAYXZDgqhe15FYQ{>Os@4&Iqp5QMM8BTQzSJ z4s0wm?`c+$>ikDpK>UTn1=*(aH{}UNf>`B4=i<(y zwy?MU#vE5!Jg&GEEKF8hoRKS@~nJld8QPL|9h|zbgD?TbhcsUZ6L$m(%x05*uDb{b1edj;C)|4a4}&o3a~Bj3Eb z3W*~@2@GkfcqJo*V*lwA>e2&`_3ZW4)Naf?$u6Wqj(G(PnHu;WK#z^8G*Y_$7DA9+ z4vgQeU7Y`pPwWLkGK7g;L-oTCWwe`vd5WLabmb&o`H6((g6kgk?!DbeT5bq%8oWV7 z%FW@Qw_l@q0QaU&DdQA z{XaHT9!hJhq6H|}A=3c781VLgw6)3r81ibW@^jD&s@|5r@E)AZ`=GiU{gb}~2elwgG4b86+gWXv7Q>OIx!d(F-vDVQ6-x9Z>ZqAWD?e zJ%~}I^YRvMqvH&~e?F?PZhpehfx-D1BDMv|xqgDzix`9EHT|d%3QwiF$4-M(P|$J9 zM|_XC5m2+Ss4UMX94HGc#s7FnRN;1!Gz0n&P>DOYxg)VO^cF-gGI0Ms#vt&u*C z{dZC8U>u5aT86z^a&mv!vCH&kyqU^Pm_WKWv;J$hZcNt{ivM=gekU8sKR+Rb1k%us zFGI=L&rVXWV`)6~)+i6*KH4tHO3@qg7Vo&lq|_hLBwVgl*9C)M#*^VT<%@!ix1)Q( zGn#2|cH4G*1p=0!9&jnm`JkH*P+L7#o0=~@nr#CSc^^D=LLwqi!cPTCB8~>6tD}4U z8dY6BvU8+j{M`K~Y`jd*zlzz;h-NCv)al;F#N}QccH7P31egJQBlcoXeNGCILe45Px_tb0~2Gp-jx8Uo_}{?lQym+>Gfsi zXKN5HtE-DKx@*JI`Kr7W3fSJ*kr5x7=1a^}kf?yo59Bmrrq4p$5@7yBQl&>M6uhMC z5BQ#WNX9k}4~20232AIzXe4SR=t9Fh%FY=*HyNczvNI3=DvbDM5k3&;9hkLj5S+Wi zWko_e=K{o3?&#zL@DLbyUWDJSy?P&JYnEaY;)Of!^S+X+X>vk5_d6*oXRIuO%>!@2 zWlA)-^*wQYa0tvKS=04C0&)5d=!feK-rrRn+rKiv-U`IiS?appu?21VCoC0$n_=}P z-8#J3!V#9rzojCRDG-O|mo*Ck`*SXG0M!NM&}YUdvMe_Fhzhih48b@h33VHEY~Snc z7g9^TAqfSNfPlzwR$QIx{`6Z-vZ)!#wlRwSGCMvgCG5!$1qdEsg9vJ@{fg4+8^qws z=0^cx3w$Z`EcWY!;Es43##+f*o9X}W?8p^#1RKiC^pTz4tW4fmKLuVYM$2g8KIL}> z0S|H4l^!>pAUeE=Nq-NlA+|w76R6Fwf@oi))bh@u)oaBU649#Ns$H zYl$}(5ym!-KeU#^4g2!Nu1ORXzXy9GMiQ0Z&jGB6qSitv$-Evh-mYiXUKIwdzOM#~ z`XwOm6ONxPh%DA_{}Z)XO#w&M!oc6{{;+bZIf&3f(x1_{8n~=U3YpX&F$Ajt2NVyv z9KvAufb9{aJPuSGD#a`YLp%vdp%slk4;fT{e~A_YM}nCQl(QUyvjU zZ)R|GqY&sjU`p0M=^wc$-OWufY#|YWXfEewU%(pRe(pe1VPNq0bskjjNZc#f+>qF6 z?wZQ$5MYoG(NHk-;$d~}$M8@bi2csJjRgTdQ!1`zIXx%lH%}Zl>!kr=?oaNA84Mkj z&bS~e=t_AA!_kHXnr7P?`J}UaF5`kaTe3q*Da)$kbZveM=@`rlsr<7OMWf(x3<{&* zmn?}UsxUMRB&CJy03dA;Q&@Z%M~CC88q72!Z}5m61@ZVl3N*9*z4=Yoee$=4al-kJ zp%X$lUSM5{=1v_E8}!1sWnkplRgtO7Ql)Izx}T6>4UV#Hr-s z+?of=_{8E#Wn|~Gs{(j%R{)_vNZqtf(K{ILGMGDjXL_g!i1d?=@ekqlBpKR<2~pe&7dwh zqqlfo_+72B0Zu-vTBlFWgp3a>(|x@sD#Ac2el<~fr!F#zjSwF}yO6YTgx_ipEMema2|nh%ujUB;)80Cp6s?v!1s?-GHqW)wdPL18<7Fbn_;%> zoyn1wEB@2J;hW8c!=m2aNNUTs2b@o^v6rY!`wf(HkHdQ7&5!opxSVMFFw}DTRxzgh z61lm7l#~0|s!St{K*)BSLGP1w`ghe!cD7dMP)+-B*iDIHR7KEx4F$8^!z>WUfWj;z zIvN0Fn#L7sq}Yp>ZHI9>A+u&^MwUy><;% zH(ZCGA5szAizFj%q}udCsv2Ylo&5V@IC6IK!*sgV$5oKu&3zn#8xi2j#6x&tl?Vz-QwI%<+PQQX|G0}Rt@Gc_*4Q(>;nu>vuU0VnxI!h+K*~hnSZK-0nn0!kR17H~0o4;l zi_Vrw7bO(^5e&x#@YfIkYRB?;DRmRD$*Q9*dsUhm3IrbD`mNmM70T{7>QelZ75mrB z+oPMv?F4Letb4~hFmmF7AP}^Oun69JLAMPS(DQ;L5gLNut|zRZxy6BU3vyRURk8r* zI5aWk-SD_B3mFN&7*s2xVz^3^v(t+BIimrD@!I=s*vF6(j|eg;5$RK~L?*2E?)mn= zr|(BEjrsf!%2yU=VE{pMz9x(=A+BtIqX#rKFmPcPk{BzWc~%?6(*C%JjfM7hf9moA z6bf@HZ`m(FWbq|BQss3k6qvwZENmE5^Ti@cQO=;WnBJC8w87j%KWKQrN*)X-^9D(Z zh}bTYHBt0}b%+o#T`+b1iA(sC zU%O?Haas$3v7oVSG!kYZ%D{2gf|>@lIVXk{Bch=}pX@;{gBbx4g`C}^?3dY8^*=t> zw!A`*mgkB{Q?!SKqtM> z(|YqzATGtG+MCT@nLZPbat&f}ag*HP#sLUvE^R8mv#OzXIWEM1^AE&GDCHS@nXi60 z``17NRWmgx!X?}m$H_x#}$RD`72xhIx^!9U32`Q!Z|hi2n&6CM8)H$qvn8{&$P ztdTP5OQx0>m@0%P`|N5<8}JZOEki1Z=$i@+T~0jNHz#Hm;K%0lkl98hVqrs&V+)j!1HV8LGzI7D@wO52x`-T-a|lLR zO@3vNXz)%(jarZL03x5N2T1~WggsDRrXZXFaZ+McyN=sU%F^M zumvkD6jZ57r{1^p?;sy1lxl75v9qC$97@U2Ok^Q2&_F|9*FG zB^MIALBZo51toG{M%EC}5I|B9PSr`-DBf+*tWx~tU2*Sg5EOxX3kxu%3r1tO@h|2n zV^~U{DPy2(Xej%E#sebk{a);&JHb4^yyupHFwXwSQ>FDtnnR^Fde(Vd+5PStRM;LX zyX^=YV5mdhpTr{q4*=+jrmOGT!8%?8zx~rxq;}|9xH@^oFwlc6Y?gJ@V#cvdW%M4J zn)Dgj+q2XVF@}eHEs}&i@2bSqKc zPH*v8Cvr?~V+j^u(GXKO$KSe5E*<`~aRt?P26ZcAKtt^@(DLU{P-j!$N=sc#8rY!c4vC33eu$_HnQ=6 zWq|jIXr<@-MYtyGx+5skym{A-R4THve3u z>;!cf_XT+H9E$91Azk;)=Sl8c+=v<>JU+gAZ>f8{)|Cy6Tn;Lq{qRgeoJrzy<1YLH z#dPGBs^PaB5(wX2f=XfzanX1mIeWK%S1&mRgOsEP%&BWQ-+OrmRJ(?zX5bXiVU*Xt z!0%`}0Kw|pi1?XwFVy1C}qt^YU+kc3Yr(( z(k#;)QBo0{scp5aOcO7qMv}%LqGqLGg41+CsiXo!@s_Q4fhLFdz32pu z=InMmyQ!&Z!-Tt=8!jZ|>+3nUFm@sJ(zS>zAPj}! zhx=P69cV*d)bZPv5s%O5*#*{|*M9BMDnOTps=3D?BSV2as_VF2hc-RLItl+-_Vi2{ z`uqErLWcM5l+W1(1t;G8hm1DwnSNK7Hf~^QyiFaIf@5hmd@C$*RkZ_6Xn*USj~Vl= z{k)!K|IB*6Sf|K~Q^n9xrwlq6DJ`r1Equ_@~q*rz8 z0QX}QJp)X?CcsV_r_PNr;)mXDVKSKkjj7HtF)>)XyQ-nV!S%Mbml)dFf#Y>SxT|94 z3A0$f`nxK@v<=Ifafi<@<_6UPYS3K0D_9gjURHfla%Y3=Q_5#PD*Taj$Y&e2==~T& zyLUj$7yzRfhcgE73^W?8ugN~uO39PjHmReoJbdUV07O#!)Rzc*qTuC?-KW~_9uxkU zWi1<;yzF1~zEtHGhgrVb-f!PbyV#KDuzmZXDJ7v%S-OgsA4^jOdE)VT?J-+(JT7Kr z;EjzW$=U~&7+ z!SL|DteH(9L{(XN2FLDv!F0XU_TbcNXk99mj&yxa%`fxH$NBjD%_qHISyxf;fSjjU-u-OVCGKczu;WPg43SDdFDxzmET|l}IFk)nSW( zM+)ew{B1Xrjy@H76z?1Pw*&QTL&IJyW8c@;f9K(av89w;RV(F($d*23D`yu91$h8s zM*#Lj`tbDP+2MunflkpxvqD&>Ws5EU8xob3TrO=eKfC%e9NDj3yB74W3@)eTPZzK8 zQtq&^Sq7p1@L|b?nG0`R-Q9DbSA2c{x}J=_;gC9dsbQ>TkJ+9xmmdPoaz=5axFB2E zYQ_r{-f4}xzT=qw^6%{4gU@dSH`C6FwR9B-hL#iJ&B$O*I_2;T2wWjFQj)d=lO6!l zRym%E?s1AUDz^*Gh;~MeRr550AS6QrqELwSad6QV2UtjBk z!RRU!iUaQMx;R!pjL&Mph+a2!>`t%LaGKsaq6%}&NC02Lvc z8XL%k$Y3)!H>azf0EsE$(iJQGkQXYZ)hf}F{gXd!L8FhHjENzWnnS#Tf(ow{7IOOf z`)z&&S*_Uv&97ehi$o$5*Si%K`@!jL;^N{&y-(5s=vQe4>T13ukYTY_pGCHGCJJU!2R&g%qB-_phzm}Gkvo!FX z?f|uojH4ESBAWF!@0)&}o}P5D7ln$bt!Dy5^hwwECjq_J4_uuNHt1q)Wwoa5^v>(_`5@)zM`ucg z=%%)KD_IpW@#w`62}C)Q_azEX*48p=?{cD#i;Ig1Fn=R}f-T~wOcaeo z2R}JMmbbUFquZ)~T54oO*z4?^d;a`lMSCQJ_M4y-o4%94`1K3mIZuaK^6*>~o-a~I z@x7@ZjCFfdy}i96kosD3&f7IxmC)eEAw-6-a&h%6nEdye#l!*e8S05Hvvdxi)r1-bg!>i?Qyr?tP;SlU} Date: Thu, 24 Jul 2025 15:23:45 +0200 Subject: [PATCH 08/48] added mask picture --- .../source-extractor-mask.png | Bin 0 -> 10092 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 topics/imaging/images/astronomy-source-extractor/source-extractor-mask.png diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor-mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor-mask.png new file mode 100644 index 0000000000000000000000000000000000000000..fc330a68e60fe372a38239a2d8e1fc4f62ce5dd9 GIT binary patch literal 10092 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 literal 0 HcmV?d00001 From b4244cb2f30305944eeabb3795ef8d098b2db92e Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:30:15 +0200 Subject: [PATCH 09/48] changed mask picture --- .../source-extractor-mask.png | Bin 10092 -> 9488 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/topics/imaging/images/astronomy-source-extractor/source-extractor-mask.png b/topics/imaging/images/astronomy-source-extractor/source-extractor-mask.png index fc330a68e60fe372a38239a2d8e1fc4f62ce5dd9..7ffa8afb8c9dcc3c1e9b12ed0a2960273693a60c 100644 GIT binary patch literal 9488 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 From 2535f89feda6310b67d3cc877d1548b7e4703def Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:31:09 +0200 Subject: [PATCH 10/48] Update tutorial.md --- .../tutorials/astronomy-source-extractor/tutorial.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 8e026e70525df8..503ffecd8e7f1a 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -149,3 +149,10 @@ The original image is published by [Legacy Surveys / D. Lang (Perimeter Institut ![Background image](../../images/astronomy-source-extractor/source-extractor_background_no_mask.png "Background image.") + +![Mask](../../images/astronomy-source-extractor/source-extractor-mask.png "Mask.") + +![Data and sources image with mask](../../images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png "Data and detected sources image.") + +![Background image with mask](../../images/astronomy-source-extractor/source-extractor_background_with_mask.png "Background image.") + From 1af94400cc763a2b941fe325c08e25af467d0583 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:32:11 +0200 Subject: [PATCH 11/48] changed mask From f423143f8f71e6bf3437dfa2c711b0a2b2f2ea41 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:38:44 +0200 Subject: [PATCH 12/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 503ffecd8e7f1a..24f4a698065846 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -127,11 +127,6 @@ and can be stored as shown in a text file. > > 2. Run the {% tool [DESI Legacy Survey](toolshed.g2.bx.psu.edu/repos/astroteam/desi_legacy_survey_astro_tool/desi_legacy_survey_astro_tool/0.0.2+galaxy0) %} tool. > -> ``` -> https://zenodo.org/records/15281843/files/images_and_seeds.zip -> https://zenodo.org/records/15424465/files/image_and_seed.zip -> ``` -> > - **Important:** Choose the Data Product **Image**. > > The default values are used for this tutorial. From 54f94af4570c7992f8d677dcc1ceaf34b7b0420e Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 19:48:36 +0200 Subject: [PATCH 13/48] Update tutorial.md --- .../astronomy-source-extractor/tutorial.md | 177 ++++++++++++------ 1 file changed, 119 insertions(+), 58 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 24f4a698065846..b1bcc09ea2e135 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -1,22 +1,23 @@ --- layout: tutorial_hands_on -title: Astronomy Source extractor +title: Source extractor on DESI Legacy Surveys sky images questions: - - How do I partition an image into regions based on which object they are nearest to (Voronoi segmentation)? - - How should images be preprocessed before applying Voronoi segmentation? - - How can I overlay two images? - - How can Voronoi segmentation be used to analyze spatial relationships? - - How can extracted image properties be used to categorize identified objects? + - How do I detect luminous sources from a dark background? + - What are the required inputs and their formats? + - How can I easily get sky images? + - How can detections be improved? + - How can I use the extracted source properties? + - How can I get the seed image needed for the Voronoi segmentation (TODO link to tutorial)? objectives: - - How to perform Voronoi Segmentation in Galaxy. - - How to extract a single channel from an image. - - How to overlay two images. - - How to count objectives in a layer map. + - How to perform luminous source extraction in Galaxy. + - How to acquire sky images in Galaxy. + - How to create a simple mask. + - How to draw ellipses for the detected sources. time_estimation: 1H key_points: -- Voronoi segmentation is a simple algorithm, chosen to give a starting point for working with image segmentation. -- This tutorial exemplifies how a Galaxy workflow can be applied to data from several different domains. +- Source Extractor is a well known astronomy library to detect luminous sources from sky images. +- This tutorial exemplifies how an astronomy software tool can be applied to data from several different domains. requirements: - type: "internal" @@ -36,17 +37,17 @@ tags: --- -In astronomy and large-scale sky surveys, a key objective is to identify individual celestial bodies—such as stars and galaxies—in sky images to enable further detailed scientific analysis. For example, DESI Legacy Survey have "photographed" a third of the sky, whereas DESI is measuring spectra of individual galaxies selected from all the photometrically detected targets. -The Galaxy source-extractor tool is based on [SEP](https://sep.readthedocs.io/en/stable/index.html) which is a Python library built from the core routines of [SExtractor (Source Extractor)](https://www.astromatic.net/software/sextractor/), which is widely used in astronomy for detecting and measuring sources in astronomical images. +In astronomy and large-scale sky surveys, one key objective is to identify individual celestial sources—such as stars and galaxies—in wide-field sky images to enable further detailed scientific analyses. For instance, the DESI Legacy Surveys have imaged approximately one-third of the sky, resulting in the detection of billions of luminous sources. As a follow-up, the DESI project is measuring the spectra of individual galaxies from a subsample of about 50 million targets, selected based on their photometric properties. -This tutorial will explain the data requirements for the tool, the main tool parameters and the output products of the tool. For more detailed instructions one can consult: +[SExtractor (Source Extractor)](https://www.astromatic.net/software/sextractor/) is a widely used tool in astronomy for detecting and measuring sources in astronomical images. The Galaxy source-extractor tool is built on top of [SEP](https://sep.readthedocs.io/en/stable/index.html), a Python library derived from the core routines of SExtractor. + +For more in-depth documentation, refer to: - [SEP documentation](https://sep.readthedocs.io/en/v1.0.x/index.html) - [SEP paper](https://joss.theoj.org/papers/10.21105/joss.00058) - [Source Extractor for Dummies](https://arxiv.org/abs/astro-ph/0512139) - [Source Extractor paper](https://ui.adsabs.harvard.edu/abs/1996A%26AS..117..393B/abstract) - [Source Extractor website](https://www.astromatic.net/software/sextractor/) - > > > In this tutorial, we will cover: @@ -57,71 +58,88 @@ This tutorial will explain the data requirements for the tool, the main tool par {: .agenda} -## Background estimation and thresholding +## Background Estimation and Thresholding -In order to detect sources, the background must be estimated and then all groups of pixels with a minimum area of -```markdown -minarea = 5 (default value of the number of pixels) +Before source detection, the tool estimates the image background. (TODO write a phrase on how this is done and about hte BW BH) It then identifies groups of pixels that exceed a defined brightness threshold. + +Detection Criteria: + +- Minimum Area: The number of connected pixels required to consider something a source. + +``` python +minarea = 5 # default ``` - with a flux larger than an absolute threshold at a pixel (j,i): -```markdown + +- Threshold: Flux at pixel (j, i) must exceed: + +``` python thresh * err[j,i] ``` -are selected as sources, where -```markdown + +where: + +``` python thresh = 1.5 -err_option = float_globalrms +err_option = float_globalrms # Uses the global RMS of the background ``` -i.e. by default the error is the global RMS of the background. -In case -```markdown +If: +``` python err_option = none ``` -the value of ```thresh``` is use directly as an absolute threshold. - +then ```thresh``` is treated as an absolute threshold (not scaled by error). -## Data requirements -Source-extractor requires one single image. For astronomy, this is a sky-image with luminous sources. Nonetheless, two other files could provided as well: a mask and a filter. Masking is an important process in astronomy, since very bright stars strongly influence the estimation of the background. Therefore, astronomers create geometric masks to remove the pixels affected by bright stars. - -Lastly, the filter is used to smooth out the image to help improve the detection of faint, extended objects, but may not be helpful very crowded data. The ```Filter Case``` tool parameter sets whether the filter file is needed or not. +## Data Requirements +The source-extractor tool operates on a single image file, typically for astronomy, a sky image containing luminous sources. Optionally, users can supply a mask and/or a filter. **Image:** -- Preferrably lighter objects on a darker background. -- Format: single channel, 2D array, .tiff or .fits. +- Preferrably: light sources on a dark background. +- Format: a single-channel 2D array stored as ```.tiff``` or ```.fits```. + +**Mask (Optional):** +- Masks regions affected by bright sources (e.g. stars) to improve background estimation. +- Pixels with +``` python +value > maskthresh +``` +or boolean ```True``` are masked. +- Format: a single-channel 2D array stored as ```.tiff``` or ```.fits```. -**Mask:** -- True values, or numeric values greater than ```maskthresh``` tool parameter, are considered masked. -- Format: single channel, 2D array, .tiff or .fits. +**Filter Kernel (Optional):** +The filter kernel is used to smooth the input image, which can enhance the detection of faint and extended sources. However, in crowded fields, filtering may reduce performance by blending nearby objects. -**Filter kernel:** -- 2D array. -- Format: .txt, readable by -```python -import numpy -numpy.loadtxt(filter_file) -``` -The default kernel is: +- If ```Filter Case``` is set to ```none```, no filtering is applied. +- If ```Filter Case``` is ```default```, a built-in smoothing kernel is used: ```markdown 1 2 1 2 4 2 1 2 1 ``` -and can be stored as shown in a text file. +- If ```Filter Case``` is ```file```, you must provide a custom 2D array stored as plain text ```.txt``` file. The file should contain whitespace-separated values and must be readable with: +```python +import numpy as np +kernel = np.loadtxt("filter.txt") +``` + > Checking the metadata of an image -> Tip 1: You can use the tool {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to extract metadata from your ```.tiff``` image. The image metadata should have -> ``` RGB = false (1) Interleaved = false SizeZ = 1 SizeT = 1 SizeC = 1 ```. +> Tip 1: Use {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to inspect ```.tiff``` metadata. Required: +> +> ``` RGB = false (1) ``` +> ``` Interleaved = false ``` +> ``` SizeZ = 1 ``` +> ``` SizeT = 1 ``` +> ``` SizeC = 1 ``` > -> Tip 2: You can use the tool {% tool [astropy fitsinfo](toolshed.g2.bx.psu.edu/repos/astroteam/astropy_fitsinfo/astropy_fitsinfo/0.2.0+galaxy2) %} to extract metadata from your ```.fits``` file. The image should have ```Dimensions (N, M) ```, where ```N``` and ```M``` are the number of pixels around the 2D axes. +> Tip 2: Use {% tool [astropy fitsinfo](toolshed.g2.bx.psu.edu/repos/astroteam/astropy_fitsinfo/astropy_fitsinfo/0.2.0+galaxy2) %} to check ```.fits``` metadata. Required: +> ```Dimensions (N, M) ```, where ```N``` and ```M``` are pixel dimensions in 2D. {: .comment} - -## Getting data from {% tool [DESI Legacy Survey](toolshed.g2.bx.psu.edu/repos/astroteam/desi_legacy_survey_astro_tool/desi_legacy_survey_astro_tool/0.0.2+galaxy0) %} +## Getting data from DESI Legacy Surveys > Data Acquisition > -> 1. Create a new history for this tutorial. When you log in for the first time, an empty, unnamed history is created by default. You can simply rename it. +> 1. Create a new history for this tutorial. You can rename the default unnamed history. > > {% snippet faqs/galaxy/histories_create_new.md %} > @@ -130,24 +148,67 @@ and can be stored as shown in a text file. > - **Important:** Choose the Data Product **Image**. > > The default values are used for this tutorial. -> The history now contains the ```.fits``` file that is used as input for the source-extractor tool. +> The history now contains the ```.fits``` image file that is used as input for the source-extractor tool. {: .hands_on} +## Running the Source-Extractor Tool -## Run the source-extractor tool - -Once the source-extractor tool is selected, you should select the input file named ``` DESI Legacy Survey -> Image fits ```. After it finished running, you can examine the picture of the data, background, background RMS and data with the selected sources bordered by red elipses. Finally, the table with detected sources and some measured parameters is available as well. +Once you’ve selected the source-extractor tool, choose the input file named: ``` DESI Legacy Survey -> Image fits ```. After the tool has finished running, several output images and data products will be available: +- The background subtracted image with detected sources highlighted by red ellipses, +- The estiamted background +- The background RMS (root mean square) +- The segmentation map +- A catalog table listing the detected sources along with measured parameters such as flux, position, size, and shape +**Example Outputs:** ![Data and sources image](../../images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png "Data and detected sources image.") The original image is published by [Legacy Surveys / D. Lang (Perimeter Institute)](https://www.legacysurvey.org/acknowledgment/). The Legacy Surveys are described in {% cite legacy-survey-astronomy %}. ![Background image](../../images/astronomy-source-extractor/source-extractor_background_no_mask.png "Background image.") +> Ellipse drawing +> The ellipses shown on the previous figure can be built using: +> ``` python +> from matplotlib.patches import Ellipse +> import matplotlib.pyplot as plt +> +> fig, ax = plt.subplots() +> for i in range(len(objects)): +> e = Ellipse(xy=(objects['x'][i], objects['y'][i]), +> width=6*objects['a'][i], +> height=6*objects['b'][i], +> angle=objects['theta'][i] * 180. / np.pi) +> e.set_facecolor('none') +> e.set_edgecolor('red') +> ax.add_artist(e) +> ``` +> Here, ```objects``` is the table of detected sources returned by the tool +{: .hands_on} + +## Using a Mask to Improve Source Detection + +Bright stars can skew background estimation and obscure nearby faint sources. In the previous output, some central sources were missed due to bright star interference. + +A simple mask can help. Here's an example: ![Mask](../../images/astronomy-source-extractor/source-extractor-mask.png "Mask.") +This mask can be easily created with: + +``` python +import numpy as np +import tifffile +mask = np.zeros((360,360)) +mask[270:325, :] = 1 +mask[239:, :200] = 1 +tifffile.imwrite("mask.tiff", mask) +``` +Upload the mask to Galaxy, select it in the source-extractor tool, and re-run. + +**Improved Outputs:** ![Data and sources image with mask](../../images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png "Data and detected sources image.") ![Background image with mask](../../images/astronomy-source-extractor/source-extractor_background_with_mask.png "Background image.") + From 0b879a3b49b0153d2c8353aa2dd6593ec34f2352 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 19:50:26 +0200 Subject: [PATCH 14/48] Add files via upload --- .../astronomy-source-extractor/tutorial.bib | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 topics/imaging/tutorials/astronomy-source-extractor/tutorial.bib diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.bib b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.bib new file mode 100644 index 00000000000000..3d33813d3b1881 --- /dev/null +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.bib @@ -0,0 +1,63 @@ + +# This is the bibliography file for your tutorial. +# +# To add bibliography (bibtex) entries here, follow these steps: +# 1) Find the DOI for the article you want to cite +# 2) Go to https://doi2bib.org and fill in the DOI +# 3) Copy the resulting bibtex entry into this file +# +# To cite the example below, in your tutorial.md file +# use {% cite Batut2018 %} +# +# If you want to cite an online resourse (website etc) +# you can use the 'online' format (see below) +# +# You can remove the examples below + +@article{Batut2018, + doi = {10.1016/j.cels.2018.05.012}, + url = {https://doi.org/10.1016/j.cels.2018.05.012}, + year = {2018}, + month = jun, + publisher = {Elsevier {BV}}, + volume = {6}, + number = {6}, + pages = {752--758.e1}, + author = {B{\'{e}}r{\'{e}}nice Batut and Saskia Hiltemann and Andrea Bagnacani and Dannon Baker and Vivek Bhardwaj and + Clemens Blank and Anthony Bretaudeau and Loraine Brillet-Gu{\'{e}}guen and Martin {\v{C}}ech and John Chilton + and Dave Clements and Olivia Doppelt-Azeroual and Anika Erxleben and Mallory Ann Freeberg and Simon Gladman and + Youri Hoogstrate and Hans-Rudolf Hotz and Torsten Houwaart and Pratik Jagtap and Delphine Larivi{\`{e}}re and + Gildas Le Corguill{\'{e}} and Thomas Manke and Fabien Mareuil and Fidel Ram{\'{i}}rez and Devon Ryan and + Florian Christoph Sigloch and Nicola Soranzo and Joachim Wolff and Pavankumar Videm and Markus Wolfien and + Aisanjiang Wubuli and Dilmurat Yusuf and James Taylor and Rolf Backofen and Anton Nekrutenko and Bj\"{o}rn Gr\"{u}ning}, + title = {Community-Driven Data Analysis Training for Biology}, + journal = {Cell Systems} +} + +@online{gtn-website, + author = {GTN community}, + title = {GTN Training Materials: Collection of tutorials developed and maintained by the worldwide Galaxy community}, + url = {https://training.galaxyproject.org}, + urldate = {2021-03-24} +} + + + +@ARTICLE{legacy-survey-astronomy, + author = {{Dey}, Arjun and {Schlegel}, David J. and {Lang}, Dustin and {Blum}, Robert and {Burleigh}, Kaylan and {Fan}, Xiaohui and {Findlay}, Joseph R. and {Finkbeiner}, Doug and {Herrera}, David and {Juneau}, St{\'e}phanie and {Landriau}, Martin and {Levi}, Michael and {McGreer}, Ian and {Meisner}, Aaron and {Myers}, Adam D. and {Moustakas}, John and {Nugent}, Peter and {Patej}, Anna and {Schlafly}, Edward F. and {Walker}, Alistair R. and {Valdes}, Francisco and {Weaver}, Benjamin A. and {Y{\`e}che}, Christophe and {Zou}, Hu and {Zhou}, Xu and {Abareshi}, Behzad and {Abbott}, T.~M.~C. and {Abolfathi}, Bela and {Aguilera}, C. and {Alam}, Shadab and {Allen}, Lori and {Alvarez}, A. and {Annis}, James and {Ansarinejad}, Behzad and {Aubert}, Marie and {Beechert}, Jacqueline and {Bell}, Eric F. and {BenZvi}, Segev Y. and {Beutler}, Florian and {Bielby}, Richard M. and {Bolton}, Adam S. and {Brice{\~n}o}, C{\'e}sar and {Buckley-Geer}, Elizabeth J. and {Butler}, Karen and {Calamida}, Annalisa and {Carlberg}, Raymond G. and {Carter}, Paul and {Casas}, Ricard and {Castander}, Francisco J. and {Choi}, Yumi and {Comparat}, Johan and {Cukanovaite}, Elena and {Delubac}, Timoth{\'e}e and {DeVries}, Kaitlin and {Dey}, Sharmila and {Dhungana}, Govinda and {Dickinson}, Mark and {Ding}, Zhejie and {Donaldson}, John B. and {Duan}, Yutong and {Duckworth}, Christopher J. and {Eftekharzadeh}, Sarah and {Eisenstein}, Daniel J. and {Etourneau}, Thomas and {Fagrelius}, Parker A. and {Farihi}, Jay and {Fitzpatrick}, Mike and {Font-Ribera}, Andreu and {Fulmer}, Leah and {G{\"a}nsicke}, Boris T. and {Gaztanaga}, Enrique and {George}, Koshy and {Gerdes}, David W. and {Gontcho}, Satya Gontcho A. and {Gorgoni}, Claudio and {Green}, Gregory and {Guy}, Julien and {Harmer}, Diane and {Hernandez}, M. and {Honscheid}, Klaus and {Huang}, Lijuan Wendy and {James}, David J. and {Jannuzi}, Buell T. and {Jiang}, Linhua and {Joyce}, Richard and {Karcher}, Armin and {Karkar}, Sonia and {Kehoe}, Robert and {Kneib}, Jean-Paul and {Kueter-Young}, Andrea and {Lan}, Ting-Wen and {Lauer}, Tod R. and {Le Guillou}, Laurent and {Le Van Suu}, Auguste and {Lee}, Jae Hyeon and {Lesser}, Michael and {Perreault Levasseur}, Laurence and {Li}, Ting S. and {Mann}, Justin L. and {Marshall}, Robert and {Mart{\'\i}nez-V{\'a}zquez}, C.~E. and {Martini}, Paul and {du Mas des Bourboux}, H{\'e}lion and {McManus}, Sean and {Meier}, Tobias Gabriel and {M{\'e}nard}, Brice and {Metcalfe}, Nigel and {Mu{\~n}oz-Guti{\'e}rrez}, Andrea and {Najita}, Joan and {Napier}, Kevin and {Narayan}, Gautham and {Newman}, Jeffrey A. and {Nie}, Jundan and {Nord}, Brian and {Norman}, Dara J. and {Olsen}, Knut A.~G. and {Paat}, Anthony and {Palanque-Delabrouille}, Nathalie and {Peng}, Xiyan and {Poppett}, Claire L. and {Poremba}, Megan R. and {Prakash}, Abhishek and {Rabinowitz}, David and {Raichoor}, Anand and {Rezaie}, Mehdi and {Robertson}, A.~N. and {Roe}, Natalie A. and {Ross}, Ashley J. and {Ross}, Nicholas P. and {Rudnick}, Gregory and {Safonova}, Sasha and {Saha}, Abhijit and {S{\'a}nchez}, F. Javier and {Savary}, Elodie and {Schweiker}, Heidi and {Scott}, Adam and {Seo}, Hee-Jong and {Shan}, Huanyuan and {Silva}, David R. and {Slepian}, Zachary and {Soto}, Christian and {Sprayberry}, David and {Staten}, Ryan and {Stillman}, Coley M. and {Stupak}, Robert J. and {Summers}, David L. and {Sien Tie}, Suk and {Tirado}, H. and {Vargas-Maga{\~n}a}, Mariana and {Vivas}, A. Katherina and {Wechsler}, Risa H. and {Williams}, Doug and {Yang}, Jinyi and {Yang}, Qian and {Yapici}, Tolga and {Zaritsky}, Dennis and {Zenteno}, A. and {Zhang}, Kai and {Zhang}, Tianmeng and {Zhou}, Rongpu and {Zhou}, Zhimin}, + title = "{Overview of the DESI Legacy Imaging Surveys}", + journal = {\aj}, + keywords = {catalogs, surveys, Astrophysics - Instrumentation and Methods for Astrophysics}, + year = 2019, + month = may, + volume = {157}, + number = {5}, + eid = {168}, + pages = {168}, + doi = {10.3847/1538-3881/ab089d}, +archivePrefix = {arXiv}, + eprint = {1804.08657}, + primaryClass = {astro-ph.IM}, + adsurl = {https://ui.adsabs.harvard.edu/abs/2019AJ....157..168D}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} From 527ca2bd8e47f6eb951158e87e25554c2cf9d84e Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 19:55:28 +0200 Subject: [PATCH 15/48] segmentation map with mask --- .../segmentation-map-with-mask.png | Bin 0 -> 19696 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 topics/imaging/images/astronomy-source-extractor/segmentation-map-with-mask.png diff --git a/topics/imaging/images/astronomy-source-extractor/segmentation-map-with-mask.png b/topics/imaging/images/astronomy-source-extractor/segmentation-map-with-mask.png new file mode 100644 index 0000000000000000000000000000000000000000..847c7868f8ab8dd7c4ac0ff2f6379f9884a8b9bc GIT binary patch literal 19696 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 a!@4k4Qkl~iz0uR?Z7^c8qUl$3@BTkj_f?w! literal 0 HcmV?d00001 From fc7347ccf6f061b161eee42d97de82e4e5b9f511 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 19:56:20 +0200 Subject: [PATCH 16/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index b1bcc09ea2e135..5ae1d2cb0a1f27 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -211,4 +211,7 @@ Upload the mask to Galaxy, select it in the source-extractor tool, and re-run. ![Background image with mask](../../images/astronomy-source-extractor/source-extractor_background_with_mask.png "Background image.") +One can observe that the central sources are now detected and also the background dynamic range has decreased, due to the mask. + +![Segmentation map with mask](../../images/astronomy-source-extractor/segmentation-map-with-mask.png "Segmentation map.") From c5c45d72adff714551f5fe35c4966d8550efcc33 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 24 Jul 2025 20:11:02 +0200 Subject: [PATCH 17/48] Update tutorial.md --- .../astronomy-source-extractor/tutorial.md | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 5ae1d2cb0a1f27..31e03410d650b3 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -60,7 +60,14 @@ For more in-depth documentation, refer to: ## Background Estimation and Thresholding -Before source detection, the tool estimates the image background. (TODO write a phrase on how this is done and about hte BW BH) It then identifies groups of pixels that exceed a defined brightness threshold. +Before source detection, the tool estimates the image background. This is done by dividing the image into a grid of boxes, each with a default size of: +``` python +bw = 64 # box width in pixels +bh = 64 # box height in pixels +``` +Within each box, the pixel histogram is clipped to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the clipped pixel values. + +After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. Detection Criteria: @@ -79,15 +86,15 @@ thresh * err[j,i] where: ``` python -thresh = 1.5 -err_option = float_globalrms # Uses the global RMS of the background +thresh = 1.5 # default ``` -If: +The interpretation of ```err[j,i]``` depends on the ```err_option``` parameter: ``` python -err_option = none +err_option = 'float_globalrms' # Use global RMS of the background (default) +err_option = 'array_rms' # Use a pixel-wise RMS array of the background +err_option = 'none' # Use 'thresh' as an absolute threshold ``` -then ```thresh``` is treated as an absolute threshold (not scaled by error). ## Data Requirements @@ -213,5 +220,7 @@ Upload the mask to Galaxy, select it in the source-extractor tool, and re-run. One can observe that the central sources are now detected and also the background dynamic range has decreased, due to the mask. +An important output of this tool is the segmentation map of the detected sources: ![Segmentation map with mask](../../images/astronomy-source-extractor/segmentation-map-with-mask.png "Segmentation map.") +This map can be used as the seed image required by Voronoi segmentation (TODO put a link to this). In this case, one can observe that the two bright stars still have an important effect on the source detection, therefore better masking, using the array RMS as a relative error in thresholding or different background mesh sizes could be attempted to improve the results. From 4dcdce861cb3570f8a70f0edef33a80d1a1f919a Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 25 Jul 2025 10:35:19 +0200 Subject: [PATCH 18/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 31e03410d650b3..6b7cb644e33f6e 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -29,7 +29,7 @@ contributions: authorship: - Andrei-EPFL funding: - - fiesta + - esg - oscars tags: - imageanalysis From 5191c0adfd8baa7efc2e940e57f6ee610b70010f Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 25 Jul 2025 10:59:30 +0200 Subject: [PATCH 19/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 6b7cb644e33f6e..837dbf16aceb0f 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -29,8 +29,8 @@ contributions: authorship: - Andrei-EPFL funding: - - esg - oscars + - eurosciencegateway tags: - imageanalysis - astronomy From c2a9d8c05f30cc5fff1d5e388c2c416c0ab7a0c0 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:02:05 +0200 Subject: [PATCH 20/48] Update CONTRIBUTORS.yaml --- CONTRIBUTORS.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTORS.yaml b/CONTRIBUTORS.yaml index a4a30675f6b00e..d2e39e85de82fc 100644 --- a/CONTRIBUTORS.yaml +++ b/CONTRIBUTORS.yaml @@ -187,6 +187,12 @@ andreasrichter: github: false joined: 2017-09 +Andrei-EPFL: + name: Andrei Variu + joined: 2025-07 + affiliations: + - epfl + andrewr: name: Andrew Rajczewski affiliations: From 303714aaaf6f52f3b2f4abc644497e86c0976f1c Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:03:31 +0200 Subject: [PATCH 21/48] Update CONTRIBUTORS.yaml --- CONTRIBUTORS.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.yaml b/CONTRIBUTORS.yaml index d2e39e85de82fc..fb41d472dc49aa 100644 --- a/CONTRIBUTORS.yaml +++ b/CONTRIBUTORS.yaml @@ -192,6 +192,7 @@ Andrei-EPFL: joined: 2025-07 affiliations: - epfl + orcid: 0000-0001-8615-602X andrewr: name: Andrew Rajczewski From 4f65c98b2f6782acf18718aa56da54b4d35db4da Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 25 Jul 2025 11:04:46 +0200 Subject: [PATCH 22/48] Update ORGANISATIONS.yaml --- ORGANISATIONS.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ORGANISATIONS.yaml b/ORGANISATIONS.yaml index 88770f382142f5..8e4725f74d4a92 100644 --- a/ORGANISATIONS.yaml +++ b/ORGANISATIONS.yaml @@ -122,6 +122,12 @@ embl-ebi: github: false ror: "02catss52" +epfl: + short_name: EPFL + name: École Polytechnique Fédérale de Lausanne + url: https://www.epfl.ch + avatar: https://www.epfl.ch/about/overview/wp-content/themes/wp-theme-2018/assets/svg/epfl-logo.svg + erasmusmc: short_name: ErasmusMC name: Erasmus Medical Center From 08cc5d6a5e424df9472f88a21ab165b12758cf7e Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:00:50 +0200 Subject: [PATCH 23/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 837dbf16aceb0f..b01d49530186d3 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -8,7 +8,7 @@ questions: - How can I easily get sky images? - How can detections be improved? - How can I use the extracted source properties? - - How can I get the seed image needed for the Voronoi segmentation (TODO link to tutorial)? + - How can I get the [seed image for the Voronoi segmentation tutorial](https://training.galaxyproject.org/training-material/topics/imaging/tutorials/voronoi-segmentation/tutorial.html)? objectives: - How to perform luminous source extraction in Galaxy. - How to acquire sky images in Galaxy. From aefbc9d72310ce5ced6f019f16401b638182c1c9 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:02:28 +0200 Subject: [PATCH 24/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index b01d49530186d3..de088109f01b2c 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -8,7 +8,7 @@ questions: - How can I easily get sky images? - How can detections be improved? - How can I use the extracted source properties? - - How can I get the [seed image for the Voronoi segmentation tutorial](https://training.galaxyproject.org/training-material/topics/imaging/tutorials/voronoi-segmentation/tutorial.html)? + - How can I get the seed image for the [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %})? objectives: - How to perform luminous source extraction in Galaxy. - How to acquire sky images in Galaxy. From 30f1ff7cbf90e4bd5035081002cae9e9795a702a Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:04:16 +0200 Subject: [PATCH 25/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index de088109f01b2c..b5b0583406edac 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -11,7 +11,7 @@ questions: - How can I get the seed image for the [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %})? objectives: - How to perform luminous source extraction in Galaxy. - - How to acquire sky images in Galaxy. + - How to analyse sky images in Galaxy. - How to create a simple mask. - How to draw ellipses for the detected sources. time_estimation: 1H From 8f808a1626f641ca3f4c4720ba6d22225d963f54 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:05:07 +0200 Subject: [PATCH 26/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index b5b0583406edac..0b552ceaf43fdb 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -12,7 +12,7 @@ questions: objectives: - How to perform luminous source extraction in Galaxy. - How to analyse sky images in Galaxy. - - How to create a simple mask. + - How to create a simple segmentation mask. - How to draw ellipses for the detected sources. time_estimation: 1H key_points: From f288e0a519aad09e8d33dd6ae1945823e7ac8761 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:11:18 +0200 Subject: [PATCH 27/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Leonid Kostrykin --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 0b552ceaf43fdb..69fccd722f3f1a 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -13,7 +13,7 @@ objectives: - How to perform luminous source extraction in Galaxy. - How to analyse sky images in Galaxy. - How to create a simple segmentation mask. - - How to draw ellipses for the detected sources. + - How to visualize the detected sources. time_estimation: 1H key_points: - Source Extractor is a well known astronomy library to detect luminous sources from sky images. From 91d2adeb51ffc72d49e693771dd20d1f31bc901a Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:13:31 +0200 Subject: [PATCH 28/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 69fccd722f3f1a..b6c5ec9725d99b 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -11,6 +11,7 @@ questions: - How can I get the seed image for the [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %})? objectives: - How to perform luminous source extraction in Galaxy. + - How to identify objects. - How to analyse sky images in Galaxy. - How to create a simple segmentation mask. - How to visualize the detected sources. From 051df9c44b3056c4e69c41335b542c85547e9637 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:14:10 +0200 Subject: [PATCH 29/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index b6c5ec9725d99b..9b0e857302d987 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -18,7 +18,7 @@ objectives: time_estimation: 1H key_points: - Source Extractor is a well known astronomy library to detect luminous sources from sky images. -- This tutorial exemplifies how an astronomy software tool can be applied to data from several different domains. +- This tutorial shows how to analyse image data for object detection and showcases how an astronomy software tool can be applied to data from several different domains. requirements: - type: "internal" From 84a69b1dc11449336d64dd166dfeebf56051bdbf Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:17:01 +0200 Subject: [PATCH 30/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 9b0e857302d987..e49b810bc99b34 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -31,6 +31,7 @@ contributions: - Andrei-EPFL funding: - oscars + - fiesta - eurosciencegateway tags: - imageanalysis From f881047d6ce9feb6dd9f10f7a28c52fe08305b1b Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:18:03 +0200 Subject: [PATCH 31/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index e49b810bc99b34..5c2562a3814ec7 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -36,6 +36,7 @@ contributions: tags: - imageanalysis - astronomy +- object detection --- From 64b479b4c1e6cf0dda0c9fc573bae0518b676fbe Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:19:37 +0200 Subject: [PATCH 32/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 5c2562a3814ec7..66dc29dfdd3d5f 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -40,7 +40,7 @@ tags: --- -In astronomy and large-scale sky surveys, one key objective is to identify individual celestial sources—such as stars and galaxies—in wide-field sky images to enable further detailed scientific analyses. For instance, the DESI Legacy Surveys have imaged approximately one-third of the sky, resulting in the detection of billions of luminous sources. As a follow-up, the DESI project is measuring the spectra of individual galaxies from a subsample of about 50 million targets, selected based on their photometric properties. +One key objective in astronomy and large-scale sky surveys is to identify individual celestial sources, such as stars and galaxies, in wide-field sky images to enable further detailed scientific analyses. For instance, the DESI Legacy Surveys have imaged approximately one-third of the sky, detecting billions of luminous sources. As a follow-up, the DESI project measures individual galaxies' spectra from a subsample of about 50 million targets, selected based on their photometric properties. [SExtractor (Source Extractor)](https://www.astromatic.net/software/sextractor/) is a widely used tool in astronomy for detecting and measuring sources in astronomical images. The Galaxy source-extractor tool is built on top of [SEP](https://sep.readthedocs.io/en/stable/index.html), a Python library derived from the core routines of SExtractor. From 0a52931e640ed8675614fb6e52a985ddcf470b88 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:19:55 +0200 Subject: [PATCH 33/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 66dc29dfdd3d5f..c40dd13008ba3a 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -44,7 +44,7 @@ One key objective in astronomy and large-scale sky surveys is to identify indivi [SExtractor (Source Extractor)](https://www.astromatic.net/software/sextractor/) is a widely used tool in astronomy for detecting and measuring sources in astronomical images. The Galaxy source-extractor tool is built on top of [SEP](https://sep.readthedocs.io/en/stable/index.html), a Python library derived from the core routines of SExtractor. -For more in-depth documentation, refer to: +For more in-depth documentation, you can refer to: - [SEP documentation](https://sep.readthedocs.io/en/v1.0.x/index.html) - [SEP paper](https://joss.theoj.org/papers/10.21105/joss.00058) - [Source Extractor for Dummies](https://arxiv.org/abs/astro-ph/0512139) From a327e3ec8b1e6c6fb222e69515c988089d756e86 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:35:51 +0200 Subject: [PATCH 34/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index c40dd13008ba3a..09d502729fc45b 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -68,7 +68,7 @@ Before source detection, the tool estimates the image background. This is done b bw = 64 # box width in pixels bh = 64 # box height in pixels ``` -Within each box, the pixel histogram is clipped to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the clipped pixel values. +Within each box, the pixel histogram is filtered to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the remaining pixel values. After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. From 010d5db92573b3754b404153837be825ac1d3ef7 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:47:47 +0200 Subject: [PATCH 35/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 09d502729fc45b..f934f9ae11bc9e 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -101,7 +101,7 @@ err_option = 'none' # Use 'thresh' as an absolute threshold ## Data Requirements -The source-extractor tool operates on a single image file, typically for astronomy, a sky image containing luminous sources. Optionally, users can supply a mask and/or a filter. +The source-extractor tool accepts a single image file as input, with the option for users to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. **Image:** - Preferrably: light sources on a dark background. From 1a7e6b358f482e8a9fb5151b8c0f1da0fc1ce021 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:48:03 +0200 Subject: [PATCH 36/48] Update topics/imaging/tutorials/astronomy-source-extractor/tutorial.md Co-authored-by: Beatriz Serrano-Solano --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index f934f9ae11bc9e..ae7224b7de381d 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -164,7 +164,7 @@ kernel = np.loadtxt("filter.txt") ## Running the Source-Extractor Tool Once you’ve selected the source-extractor tool, choose the input file named: ``` DESI Legacy Survey -> Image fits ```. After the tool has finished running, several output images and data products will be available: -- The background subtracted image with detected sources highlighted by red ellipses, +- The background subtracted image with detected sources highlighted by red ellipses - The estiamted background - The background RMS (root mean square) - The segmentation map From ba483fb552d330053fbd1bf31070849da000270a Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:50:36 +0200 Subject: [PATCH 37/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index ae7224b7de381d..a5377539d33c0a 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -226,4 +226,4 @@ One can observe that the central sources are now detected and also the backgroun An important output of this tool is the segmentation map of the detected sources: ![Segmentation map with mask](../../images/astronomy-source-extractor/segmentation-map-with-mask.png "Segmentation map.") -This map can be used as the seed image required by Voronoi segmentation (TODO put a link to this). In this case, one can observe that the two bright stars still have an important effect on the source detection, therefore better masking, using the array RMS as a relative error in thresholding or different background mesh sizes could be attempted to improve the results. +This map can be used as the seed image required by [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %}). In this case, one can observe that the two bright stars still have an important effect on the source detection, therefore better masking, using the array RMS as a relative error in thresholding or different background mesh sizes could be attempted to improve the results. From 8dd91589fb3b0d21ba3fe423e8fb8934761cf680 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 14:13:56 +0200 Subject: [PATCH 38/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index a5377539d33c0a..91748320b10bae 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -80,7 +80,7 @@ Detection Criteria: minarea = 5 # default ``` -- Threshold: Flux at pixel (j, i) must exceed: +- Threshold: The value of the pixel (j, i) must exceed: ``` python thresh * err[j,i] @@ -168,7 +168,7 @@ Once you’ve selected the source-extractor tool, choose the input file named: ` - The estiamted background - The background RMS (root mean square) - The segmentation map -- A catalog table listing the detected sources along with measured parameters such as flux, position, size, and shape +- A catalog table listing the detected sources along with measured parameters such as flux (i.e. sum of member pixels) , position, size, and shape **Example Outputs:** ![Data and sources image](../../images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png "Data and detected sources image.") From 73620295f25b6d173ba904908595c7203ee6d017 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 14:22:55 +0200 Subject: [PATCH 39/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 91748320b10bae..4cac6cfae1c757 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -94,7 +94,7 @@ thresh = 1.5 # default The interpretation of ```err[j,i]``` depends on the ```err_option``` parameter: ``` python -err_option = 'float_globalrms' # Use global RMS of the background (default) +err_option = 'float_globalrms' # Use global RMS (i.e. root mean square) of the background (default) err_option = 'array_rms' # Use a pixel-wise RMS array of the background err_option = 'none' # Use 'thresh' as an absolute threshold ``` @@ -166,7 +166,7 @@ kernel = np.loadtxt("filter.txt") Once you’ve selected the source-extractor tool, choose the input file named: ``` DESI Legacy Survey -> Image fits ```. After the tool has finished running, several output images and data products will be available: - The background subtracted image with detected sources highlighted by red ellipses - The estiamted background -- The background RMS (root mean square) +- The background RMS - The segmentation map - A catalog table listing the detected sources along with measured parameters such as flux (i.e. sum of member pixels) , position, size, and shape From 0727ddee429f6d4ad760a5b528fec726f327d36c Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 15:57:40 +0200 Subject: [PATCH 40/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 4cac6cfae1c757..406db96705817a 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -105,7 +105,7 @@ The source-extractor tool accepts a single image file as input, with the option **Image:** - Preferrably: light sources on a dark background. -- Format: a single-channel 2D array stored as ```.tiff``` or ```.fits```. +- Format: a single-channel 2D array stored as ```.tiff``` or ```.fits``` ([FITS](https://fits.gsfc.nasa.gov/) is a widely used format in the astronomy community). **Mask (Optional):** - Masks regions affected by bright sources (e.g. stars) to improve background estimation. From 0d3a1e7128383a3391f2a3a9399649dfe480d2d6 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 16:03:36 +0200 Subject: [PATCH 41/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 406db96705817a..9b940ffc950e31 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -170,7 +170,7 @@ Once you’ve selected the source-extractor tool, choose the input file named: ` - The segmentation map - A catalog table listing the detected sources along with measured parameters such as flux (i.e. sum of member pixels) , position, size, and shape -**Example Outputs:** +### Example Outputs: ![Data and sources image](../../images/astronomy-source-extractor/source-extractor_data_sources_no_mask.png "Data and detected sources image.") The original image is published by [Legacy Surveys / D. Lang (Perimeter Institute)](https://www.legacysurvey.org/acknowledgment/). The Legacy Surveys are described in {% cite legacy-survey-astronomy %}. @@ -216,7 +216,7 @@ tifffile.imwrite("mask.tiff", mask) ``` Upload the mask to Galaxy, select it in the source-extractor tool, and re-run. -**Improved Outputs:** +### Improved Outputs: ![Data and sources image with mask](../../images/astronomy-source-extractor/source-extractor_data_sources_with_mask.png "Data and detected sources image.") ![Background image with mask](../../images/astronomy-source-extractor/source-extractor_background_with_mask.png "Background image.") From 374adcf4d7f9d0d36021b502a9163c1d18a17b4d Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 16:29:19 +0200 Subject: [PATCH 42/48] Update tutorial.md --- .../tutorials/astronomy-source-extractor/tutorial.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 9b940ffc950e31..0d847093138c7f 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -101,7 +101,7 @@ err_option = 'none' # Use 'thresh' as an absolute threshold ## Data Requirements -The source-extractor tool accepts a single image file as input, with the option for users to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. +The source-extractor tool accepts a single image file as input, with the option to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. **Image:** - Preferrably: light sources on a dark background. @@ -221,9 +221,9 @@ Upload the mask to Galaxy, select it in the source-extractor tool, and re-run. ![Background image with mask](../../images/astronomy-source-extractor/source-extractor_background_with_mask.png "Background image.") -One can observe that the central sources are now detected and also the background dynamic range has decreased, due to the mask. +You can observe that the central sources are now detected and also the background dynamic range has decreased, due to the mask. An important output of this tool is the segmentation map of the detected sources: ![Segmentation map with mask](../../images/astronomy-source-extractor/segmentation-map-with-mask.png "Segmentation map.") -This map can be used as the seed image required by [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %}). In this case, one can observe that the two bright stars still have an important effect on the source detection, therefore better masking, using the array RMS as a relative error in thresholding or different background mesh sizes could be attempted to improve the results. +This map can be used as the seed image required by [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %}). In this case, you can observe that the two bright stars still have an important effect on the source detection. Therefore, to improve the results, you can try: better masking, using the array RMS as a relative error in thresholding or different background mesh sizes. From a979a564d860946134586d4b256376e99f4c10f4 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:01:31 +0200 Subject: [PATCH 43/48] Update tutorial.md --- .../astronomy-source-extractor/tutorial.md | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 0d847093138c7f..92879234155683 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -61,45 +61,7 @@ For more in-depth documentation, you can refer to: {: .agenda} -## Background Estimation and Thresholding - -Before source detection, the tool estimates the image background. This is done by dividing the image into a grid of boxes, each with a default size of: -``` python -bw = 64 # box width in pixels -bh = 64 # box height in pixels -``` -Within each box, the pixel histogram is filtered to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the remaining pixel values. - -After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. - -Detection Criteria: - -- Minimum Area: The number of connected pixels required to consider something a source. - -``` python -minarea = 5 # default -``` - -- Threshold: The value of the pixel (j, i) must exceed: - -``` python -thresh * err[j,i] -``` - -where: - -``` python -thresh = 1.5 # default -``` - -The interpretation of ```err[j,i]``` depends on the ```err_option``` parameter: -``` python -err_option = 'float_globalrms' # Use global RMS (i.e. root mean square) of the background (default) -err_option = 'array_rms' # Use a pixel-wise RMS array of the background -err_option = 'none' # Use 'thresh' as an absolute threshold -``` - -## Data Requirements +## Input Requirements The source-extractor tool accepts a single image file as input, with the option to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. @@ -134,6 +96,7 @@ kernel = np.loadtxt("filter.txt") > Checking the metadata of an image +> > Tip 1: Use {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to inspect ```.tiff``` metadata. Required: > > ``` RGB = false (1) ``` @@ -146,6 +109,46 @@ kernel = np.loadtxt("filter.txt") > ```Dimensions (N, M) ```, where ```N``` and ```M``` are pixel dimensions in 2D. {: .comment} + +### Parameters for Background Estimation and Thresholding + +Before source detection, the tool estimates the image background. This is done by dividing the image into a grid of boxes, each with a default size of: +``` python +bw = 64 # box width in pixels +bh = 64 # box height in pixels +``` +Within each box, the pixel histogram is filtered to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the remaining pixel values. + +After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. + +Detection Criteria: + +- Minimum Area: The number of connected pixels required to consider something a source. + +``` python +minarea = 5 # default +``` + +- Threshold: The value of the pixel (j, i) must exceed: + +``` python +thresh * err[j,i] +``` + +where: + +``` python +thresh = 1.5 # default +``` + +The interpretation of ```err[j,i]``` depends on the ```err_option``` parameter: +``` python +err_option = 'float_globalrms' # Use global RMS (i.e. root mean square) of the background (default) +err_option = 'array_rms' # Use a pixel-wise RMS array of the background +err_option = 'none' # Use 'thresh' as an absolute threshold +``` + + ## Getting data from DESI Legacy Surveys > Data Acquisition > @@ -165,7 +168,7 @@ kernel = np.loadtxt("filter.txt") Once you’ve selected the source-extractor tool, choose the input file named: ``` DESI Legacy Survey -> Image fits ```. After the tool has finished running, several output images and data products will be available: - The background subtracted image with detected sources highlighted by red ellipses -- The estiamted background +- The estimated background - The background RMS - The segmentation map - A catalog table listing the detected sources along with measured parameters such as flux (i.e. sum of member pixels) , position, size, and shape @@ -178,7 +181,8 @@ The original image is published by [Legacy Surveys / D. Lang (Perimeter Institut ![Background image](../../images/astronomy-source-extractor/source-extractor_background_no_mask.png "Background image.") > Ellipse drawing -> The ellipses shown on the previous figure can be built using: +> +> The tool already provides as output an image with ellipses around detected objects. Nevertheless, if you want to create a figure by yourself you can use the table of detected sources returned by the tool ```objects``` in the following way: > ``` python > from matplotlib.patches import Ellipse > import matplotlib.pyplot as plt @@ -193,7 +197,7 @@ The original image is published by [Legacy Surveys / D. Lang (Perimeter Institut > e.set_edgecolor('red') > ax.add_artist(e) > ``` -> Here, ```objects``` is the table of detected sources returned by the tool +> {: .hands_on} ## Using a Mask to Improve Source Detection From 920624bfcbef0ff250c6ceda16e0d6c1bab69186 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:01:45 +0100 Subject: [PATCH 44/48] Update tutorial.md --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 92879234155683..ed1feeb2a359ed 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -93,6 +93,7 @@ The filter kernel is used to smooth the input image, which can enhance the detec import numpy as np kernel = np.loadtxt("filter.txt") ``` +since this is the way the tool's back-end implementation loads the file. > Checking the metadata of an image From da95e991c405e05ca8c8473eb2a06bd3431f244d Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Wed, 20 Aug 2025 15:13:43 +0200 Subject: [PATCH 45/48] correct internal link voronoi seg --- topics/imaging/tutorials/astronomy-source-extractor/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index ed1feeb2a359ed..8a7a9876adca4b 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -25,6 +25,7 @@ requirements: topic_name: imaging tutorials: - imaging-introduction + - voronoi-segmentation contributions: authorship: From 8c6b10baf15c9b9a2c971900ec6e38e1c5f523e4 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:44:47 +0200 Subject: [PATCH 46/48] Update tutorial.md --- .../astronomy-source-extractor/tutorial.md | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 8a7a9876adca4b..a26dd1da7b7007 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -64,7 +64,7 @@ For more in-depth documentation, you can refer to: ## Input Requirements -The source-extractor tool accepts a single image file as input, with the option to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. +The source-extractor tool accepts a single image file as input, with the option to provide a mask and/or a filter. Typically, for astronomy, a sky image contains luminous sources. In addition, the tool accepts several parameters related to the background estimation and source detectionm, which are set to the suggested default values. A subset of them is described in the subsection below. **Image:** - Preferrably: light sources on a dark background. @@ -79,24 +79,6 @@ value > maskthresh or boolean ```True``` are masked. - Format: a single-channel 2D array stored as ```.tiff``` or ```.fits```. -**Filter Kernel (Optional):** -The filter kernel is used to smooth the input image, which can enhance the detection of faint and extended sources. However, in crowded fields, filtering may reduce performance by blending nearby objects. - -- If ```Filter Case``` is set to ```none```, no filtering is applied. -- If ```Filter Case``` is ```default```, a built-in smoothing kernel is used: -```markdown -1 2 1 -2 4 2 -1 2 1 -``` -- If ```Filter Case``` is ```file```, you must provide a custom 2D array stored as plain text ```.txt``` file. The file should contain whitespace-separated values and must be readable with: -```python -import numpy as np -kernel = np.loadtxt("filter.txt") -``` -since this is the way the tool's back-end implementation loads the file. - - > Checking the metadata of an image > > Tip 1: Use {% tool [Show image info](toolshed.g2.bx.psu.edu/repos/imgteam/image_info/ip_imageinfo/5.7.1+galaxy1) %} to inspect ```.tiff``` metadata. Required: @@ -112,8 +94,29 @@ since this is the way the tool's back-end implementation loads the file. {: .comment} +**Filter Kernel (Optional):** +The filter kernel is used to smooth the input image, which can enhance the detection of faint and extended sources. However, in crowded fields, filtering may reduce performance by blending nearby objects. + +- If ```Filter Case``` is set to ```none```, no filtering is applied. +- If ```Filter Case``` is ```default```, a built-in smoothing kernel is used: +```markdown +1 2 1 +2 4 2 +1 2 1 +``` +- If ```Filter Case``` is ```file```, you must provide a custom 2D array stored as plain text file, that contains whitespace-separated values. +> Checking the metadata of an image +> You can check on your computer whether the filter file has the correct format by reading it with: +> ``` import numpy as np ``` +> ``` kernel = np.loadtxt("filter.txt")``` +> since this is the way the tool's back-end implementation loads the file. +{: .comment} + + ### Parameters for Background Estimation and Thresholding +In this subsection, we describe a subset of tool's parameters that you can change. + Before source detection, the tool estimates the image background. This is done by dividing the image into a grid of boxes, each with a default size of: ``` python bw = 64 # box width in pixels From cfae6a2a3c92dd4477b484a82769430568220996 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:02:35 +0200 Subject: [PATCH 47/48] Update tutorial.md --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index a26dd1da7b7007..15a550224413f8 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -122,9 +122,9 @@ Before source detection, the tool estimates the image background. This is done b bw = 64 # box width in pixels bh = 64 # box height in pixels ``` -Within each box, the pixel histogram is filtered to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the remaining pixel values. +Within each box, the pixel histogram is filtered to remove outliers, and the background level is estimated using a mode approximation based on the median and mean of the remaining pixel values. While 64 is the default value in the [SEP](https://sep.readthedocs.io/en/stable/index.html) package, the original [paper](https://ui.adsabs.harvard.edu/abs/1996A%26AS..117..393B/abstract) suggests that on most images, a value between 32 to 128 pixels should work fine. -After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. +After background estimation, the tool identifies groups of pixels that exceed a defined brightness threshold. These parameters should help distinguish between real luminous sources and random fluctuations that can appear in the background. Detection Criteria: @@ -152,6 +152,7 @@ err_option = 'float_globalrms' # Use global RMS (i.e. root mean square) of the err_option = 'array_rms' # Use a pixel-wise RMS array of the background err_option = 'none' # Use 'thresh' as an absolute threshold ``` +It is advisable to adapt the error estimation to the studied image: e.g. if the background is reasonably uniform, using a global value should be sufficient. In contrast, if the background changes drastically in different regions of the image, a pixel-wise RMS would be preferred. ## Getting data from DESI Legacy Surveys From 87ee61ecfd1bb4e2019a5db9013e8cdd37821eb0 Mon Sep 17 00:00:00 2001 From: Andrei-EPFL <55141699+Andrei-EPFL@users.noreply.github.com> Date: Thu, 21 Aug 2025 13:30:00 +0200 Subject: [PATCH 48/48] removed link from questions section --- .../imaging/tutorials/astronomy-source-extractor/tutorial.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md index 15a550224413f8..796d036a1e9101 100644 --- a/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md +++ b/topics/imaging/tutorials/astronomy-source-extractor/tutorial.md @@ -8,7 +8,7 @@ questions: - How can I easily get sky images? - How can detections be improved? - How can I use the extracted source properties? - - How can I get the seed image for the [Voronoi segmentation tutorial]({% link topics/imaging/tutorials/voronoi-segmentation/tutorial.md %})? + - How can I get the seed image for the Voronoi segmentation tutorial? objectives: - How to perform luminous source extraction in Galaxy. - How to identify objects. @@ -25,7 +25,6 @@ requirements: topic_name: imaging tutorials: - imaging-introduction - - voronoi-segmentation contributions: authorship: