From 916926b9c2f575fb2d1475d4a9d1e5105a4533e5 Mon Sep 17 00:00:00 2001 From: LeilyR Date: Tue, 17 Sep 2019 15:44:55 +0200 Subject: [PATCH 01/13] debugging and improving the computeOrderedMatrix (#23) * started bug fixing in parsetable * debugging and improving the computeOrderedMatrix changes are included changes in formating, adding the groupUsingSample argument as an optional argument with default = all, adding -a and -b arguments for the region to plot before and after the region of interest and adding the possibilty to plot the intermediate matrix (this might need further improvment) * removed unnecessary comments --- ultraheatmap/computeMatrix.py | 99 ++---- ultraheatmap/computeOrderedMatrix.py | 306 +++++++++++------- .../configs/computeOrderedMatrix.yaml | 2 +- ultraheatmap/parseTables.py | 5 +- 4 files changed, 216 insertions(+), 196 deletions(-) diff --git a/ultraheatmap/computeMatrix.py b/ultraheatmap/computeMatrix.py index 213d001..46a28be 100755 --- a/ultraheatmap/computeMatrix.py +++ b/ultraheatmap/computeMatrix.py @@ -4,6 +4,7 @@ import argparse from deeptools.heatmapper import heatmapper +from deeptools.plotHeatmap import plotMatrix sys.path.append(os.path.join(os.path.dirname(os.path.dirname(( os.path.realpath(__file__)))))) @@ -36,73 +37,13 @@ def __parse_matrix_parameters(configfile, post_clustering=False): 'scale': configfile["scale"][index], 'skip zeros': configfile["skipZeros"][index], 'nan after end': configfile["nanAfterEnd"][index], - 'proc number': configfile["numberOfProcessors"], # same for both runs + 'proc number': configfile["numberOfProcessors"][index], 'sort regions': configfile["sortRegions"][index], 'sort using': configfile["sortUsing"][index], 'unscaled 5 prime': configfile["unscaled5prime"][index], 'unscaled 3 prime': configfile["unscaled3prime"][index]} return parameters -def __compute_matrix(configfile, parameters, refList = False): - """ - computing the corresponding matrix using deeptools/computeMatrix - """ - hm = heatmapper() - index = 1 - if refList: - bw = refList - index = 0 - else: - bw = configfile["bigwigs"] - matrix_args = argparse.Namespace() - matrix_args.transcriptID = configfile['transcriptID'][index] - matrix_args.exonID = configfile['exonID'][index] - matrix_args.transcript_id_designator = configfile['transcript_id_designator'][index] - matrix_args.samplesLabel = configfile['samplesLabel'] - matrix_args.exonID = configfile['exonID'][index] - - hm.computeMatrix(score_file_list = bw, regions_file = configfile["regionOfInterest"], parameters = parameters, - blackListFileName=configfile["blackListFileName"][index], verbose=configfile["verbose"][index], allArgs=matrix_args) - return hm - - -def __clustering(hm, indexList, configfile): - """ - """ - if hm.parameters['min threshold'] is not None or\ - hm.parameters['max threshold'] is not None: - hm.filterHeatmapValues(hm.parameters['min threshold'], - hm.parameters['max threshold']) - - if configfile["sortRegions"][0] == 'keep': - configfile["sortRegions"][0] = 'no' # These are the same thing ##XXX what does that mean??? - - if configfile["kmeans"] is not None: - hm.matrix.hmcluster(configfile["kmeans"], method='kmeans') - else: - if configfile["hclust"] is not None: - print("Performing hierarchical clustering." - "Please note that it might be very slow for large datasets.\n") - hm.matrix.hmcluster(configfile["hclust"], method='hierarchical') - - group_len_ratio = np.diff(hm.matrix.group_boundaries) /\ - len(hm.matrix.regions) - if np.any(group_len_ratio < 5.0 / 1000): - problem = np.flatnonzero(group_len_ratio < 5.0 / 1000) - sys.stderr.write("WARNING: Group '{}' is too small for plotting," - "you might want to remove it. " - "There will likely be an error message from " - "matplotlib regarding this " - "below.\n".format(hm.matrix.group_labels[problem[0]])) - - if configfile["sortRegions"][0] != 'no': - hm.matrix.sort_groups(sort_using=configfile["sortUsing"][0], - sort_method=configfile["sortRegions"][0], - sample_list=indexList) - - assert(configfile["outFileSortedRegions"]) - hm.save_BED(open(configfile["outFileSortedRegions"], "w")) - def __compute_matrix(regions, bigwigs, configfile, parameters, refIndex=None): """ @@ -132,20 +73,20 @@ def __compute_matrix(regions, bigwigs, configfile, parameters, refIndex=None): def __clustering(hm, indexList, configfile): """ """ + for index, i in enumerate(indexList): + indexList[index] = i - 1 if hm.parameters['min threshold'] is not None or\ hm.parameters['max threshold'] is not None: hm.filterHeatmapValues(hm.parameters['min threshold'], hm.parameters['max threshold']) - if configfile["sortRegions"][0] == 'keep': - configfile["sortRegions"][0] = 'no' # These are the same thing ##XXX what does that mean??? - if configfile["kmeans"] is not None: hm.matrix.hmcluster(configfile["kmeans"], method='kmeans') else: if configfile["hclust"] is not None: print("Performing hierarchical clustering." - "Please note that it might be very slow for large datasets.\n") + "Please note that it might be very slow for large " + "datasets.\n") hm.matrix.hmcluster(configfile["hclust"], method='hierarchical') group_len_ratio = np.diff(hm.matrix.group_boundaries) /\ @@ -157,12 +98,31 @@ def __clustering(hm, indexList, configfile): "There will likely be an error message from " "matplotlib regarding this " "below.\n".format(hm.matrix.group_labels[problem[0]])) - - if configfile["sortRegions"][0] != 'no': + # TODO set sample & region labels!! + if configfile["sortRegions"][0] != 'keep': hm.matrix.sort_groups(sort_using=configfile["sortUsing"][0], sort_method=configfile["sortRegions"][0], sample_list=indexList) + if configfile["outputReferenceMatrix"] is not None: + outputMatrix_path = os.path.join(configfile["outputReferenceMatrix"]) + hm.save_matrix(outputMatrix_path) + + """ TODO: figure out how to do it directly from hm. For the moment when I + use hm some parameters have incomapatible types. for example upstream + is a value if it is read directly but is a list if it is read from a + file.""" + if configfile["plotOutput"] is not None: + hm1 = heatmapper() + hm1.read_matrix_file(outputMatrix_path) + color_dict = {'colorMap': ['RdYlBu'], + 'colorList': None, + 'colorNumber': int(256), + 'missingDataColor': 'black', + 'alpha': float(1.0)} + plotMatrix(hm1, os.path.join(configfile["plotOutput"]), + colorMapDict=color_dict) + assert(configfile["outFileSortedRegions"]) hm.save_BED(open(configfile["outFileSortedRegions"], "w")) @@ -172,11 +132,8 @@ def sortbyreference(regions, bigwigs, indexList, configfile): parameters = __parse_matrix_parameters(configfile, post_clustering=False) hm = __compute_matrix(regions, bigwigs, configfile, parameters, refIndex=indexList) - if configfile["outputReferenceMatrix"] is not None: - outputMatrix_path = os.path.join(configfile["outputReferenceMatrix"]) - hm.save_matrix(outputMatrix_path) - __clustering(hm, configfile["refIndex"], configfile) + __clustering(hm, configfile["refIndices"], configfile) def computefinalmatrix(regions, bigwigs, configfile): diff --git a/ultraheatmap/computeOrderedMatrix.py b/ultraheatmap/computeOrderedMatrix.py index bb40616..5563190 100644 --- a/ultraheatmap/computeOrderedMatrix.py +++ b/ultraheatmap/computeOrderedMatrix.py @@ -4,106 +4,147 @@ import sys import argparse import yaml -import tempfile +# import necessary modules +import ultraheatmap.computeMatrix as cm -sys.path.append(os.path.join(os.path.dirname(os.path.dirname((os.path.abspath(__file__)))))) +sys.path.append(os.path.join(os.path.dirname(os.path.dirname((os.path.abspath( + __file__)))))) +# Code directory: +configDir = os.path.dirname(os.path.realpath(__file__)) +# Parse entered arguments -#import necessary modules -import ultraheatmap.computeMatrix as cm -#Code directory: -configDir = os.path.dirname(os.path.realpath(__file__)) -#Parse entered arguments def parse_args(defaults={}): - """ - Parse the arguments from the command line - """ - parser = argparse.ArgumentParser(description = "The program clusters regions and makes a matrix from the ordered regions.", - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - # Required arguments - parser.add_argument("-S", - "--scoreFileName", - dest="bigwigs", - nargs='+', - help="bigwig files, the ordered matrix is computed" - "from.",required=True) - parser.add_argument("-R", - "--regionsFileName", - dest="regionOfInterest", - nargs='+', - help="BED files definig the genomic regions of the matrix." - "Multiple files can be provided, but the per group information" - "will be lost due to the clustering", - required=True) - parser.add_argument("-o", - "--outFileName", - dest="matrixOutput", - help="Matrix clustered by the given reference samples", - required=True) - - parser.add_argument( "-i", - "--index", - "--referenceSampleIndex", - dest="refIndex", + """ + Parse the arguments from the command line + """ + parser = argparse.ArgumentParser(description="The program sorts/clusters " + "regions considering the reference " + "samples ( given by --groupUsingSamples) " + "and makes a matrix over all the samples " + "using the sorted/clustered regions.", + formatter_class=argparse. + ArgumentDefaultsHelpFormatter) + # Required arguments + parser.add_argument("-S", + "--scoreFileName", + dest="bigwigs", nargs='+', - help='Index, 1-based, to define the reference samples. The ' - 'reference samples will be used for the clustering of the ' - 'matrix, before all samples are added. Space-separated', + help="bigwig files, the ordered matrix is computed" + "from.", + required=True) + parser.add_argument("-R", + "--regionsFileName", + dest="regionOfInterest", + nargs='+', + help="BED files definig the genomic regions of the " + "matrix.Multiple files can be provided, but the per " + "group information will be lost due to the clustering", + required=True) + parser.add_argument("-o", + "--outFileName", + dest="matrixOutput", + help="Matrix clustered by the given reference samples", required=True) - #optional arguments - parser.add_argument("-p", - "--numberOfProcessors", - dest="numberOfProcessors", - help='[deepTools doc] Number of processors to use. Type ' - '"max/2" to use half the maximum number of processors or ' - '"max" to use all available processors.', - type = int, - metavar="INT", - default=1) - - parser.add_argument("--outFileSortedRegions", - dest="outFileSortedRegions", - help='[deepTools doc] File name in which the regions are ' - 'saved after skiping zeros or min/max threshold values. ' - 'The order of the regions in the file follows the sorting ' - 'order selected. This is useful, for example, to generate ' - 'other heatmaps keeping the sorting of the first heatmap. ' - 'Example: Heatmap1sortedRegions.bed', - default = None) - parser.add_argument("--outputReferenceMatrix", - dest="outputReferenceMatrix", - help="Matrix on the reference sampels only before clustering", + # optional arguments + parser.add_argument("-g", + "--groupUsingSamples", + dest="refIndices", + nargs='+', + help="sample indices, 1-based, to define the reference" + "samples. The reference samples will be used for " + "sorting/clustering the regions, before all samples " + "will be used to generate the output matrix. Several " + "indices can be added while separated by space from " + "each other. Defaul it None and will take all the " + "samples into account to sort/cluster the regions.", + type=int, default=None) - parser.add_argument("--kmeans", - dest="kmeans", - metavar="INT", - type=int, - help="number of clusters in k-means clustering", - default=None) - - parser.add_argument("--hclust", - dest="hclust", - metavar="INT", - type=int, - help="Number of clusters to compute using hierarchical clustering as defined by deepTools plotHeatmap", -default=None) + parser.add_argument("-p", + "--numberOfProcessors", + dest="numberOfProcessors", + help="From deepTools doc: Number of processors to " + "use. Type \"max/2\" to use half the maximum number " + "of processors or \"max\" to use all available " + "processors.", + nargs='+', + type=int, + default=[1, 1]) + + parser.add_argument("--outFileSortedRegions", + dest="outFileSortedRegions", + help="From deepTools doc: File name in which the " + "regions are saved after skiping zeros or min/max " + "threshold values. The order of the regions in the " + "file follows the sorting order selected. This is " + "useful, for example, to generate other heatmaps " + "keeping the sorting of the first heatmap.", + default=None) + parser.add_argument("--outputReferenceMatrix", + dest="outputReferenceMatrix", + help="Matrix on the reference sampels only before " + "clustering", + default=None) - parser.add_argument("--config", - dest="userconfig", - help="Added to the default configuration, overwrites if " - "necessary.", - default=None) + parser.add_argument("--kmeans", + dest="kmeans", + metavar="INT", + type=int, + help="number of clusters in k-means clustering", + default=None) - return parser + parser.add_argument("--hclust", + dest="hclust", + metavar="INT", + type=int, + help="Number of clusters to compute using hierarchical" + "clustering as defined by deepTools plotHeatmap", + default=None) + parser.add_argument("-b", "--upstream", + "--beforeRegionStartLength", + dest="beforeRegionStartLength", + help="From deepTools doc: Distance upstream of the " + "start site of the regions defined in the region file." + " If the regions are genes, this would be the distance" + " upstream of the transcription start site.", + nargs='+', + type=int, + default=[0, 0]) + + parser.add_argument("-a", "--downstream", + "--afterRegionStartLength", + dest="afterRegionStartLength", + help="From deepTools doc: Distance downstream of the " + "end site of the given regions. If the regions are " + "genes, this would be the distance downstream of the " + "transcription end site. ", + type=int, + nargs='+', + default=[0, 0]) + + parser.add_argument("-op", + "--plotOutput", + dest="plotOutput", + help="File name to save the intermediate heatmap. " + "The file ending will be used to determine the format " + "of the image . Available formats are: \"png\", " + "\"eps\", \"pdf\" and \"svg\" (From deeptools doc)") + + parser.add_argument("--config", + dest="userconfig", + help="Added to the default configuration, overwrites " + "if necessary.", + default=None) + return parser -def merge_dictionaries(a,b): +def merge_dictionaries(a, b): """ merging two dictionaries """ @@ -111,50 +152,75 @@ def merge_dictionaries(a,b): return merged -def add_diff(a,b): - """ - Add the difference between the default config file and argumnets to the configfile. Order matters! - b is defaultconfig - a is vars(args) - """ - for key in b.keys(): - if key in a: - b[key]=a[key] +def add_diff(a, b): + """ + Add the difference between the default config file and argumnets to the" + "configfile. Order matters! + b is defaultconfig + a is vars(args) + """ + for key in b.keys(): + if key in a: + b[key] = a[key] + + +def check_config_file_items(configfile): + params_list = ["regionBodyLength", "startLabel", "endLabel", + "unscaled5prime", "unscaled3prime", "referencePoint", + "nanAfterEnd", "beforeRegionStartLength", + "afterRegionStartLength", "binSize", "sortRegions", + "sortUsing", "averageTypeBins", "missingDataAsZero", + "skipZeros", "minThreshold", "maxThreshold", + "blackListFileName", "smartLabels", "verbose", "scale", + "numberOfProcessors", "metagene", "transcriptID", "exonID", + "transcript_id_designator"] + for item in params_list: + assert len(configfile[item]) <= 2, "length of "+item+" should be <= 2!" + if len(configfile[item]) == 1: + configfile[item].append(configfile[item][0]) def main(): - """ - Compute a matrix from an ordered region file - """ - # First part of the code is applied for all cases - defaultconfigfile = {} - #1. Read the config file - with open(os.path.join(configDir, 'configs' ,"computeOrderedMatrix.yaml"), 'r') as stream: - defaultconfigfile = yaml.load(stream) - #2. Parse the arguments - parser = parse_args(defaultconfigfile) - args = parser.parse_args() - #2.1 modify config file if needed - configfile=defaultconfigfile - if args.userconfig: - with open(os.path.join(args.userconfig), 'r') as stream: + """ + Compute a matrix from an ordered region file + """ + # First part of the code is applied for all cases + defaultconfigfile = {} + # 1. Read the default config file + with open(os.path.join(configDir, "configs", "computeOrderedMatrix.yaml"), + 'r') as stream: + defaultconfigfile = yaml.load(stream) + + # 2. Parse the arguments + parser = parse_args(defaultconfigfile) + args = parser.parse_args() + + # 2.1 modify config file if user config is provided + configfile = defaultconfigfile + if args.userconfig: + with open(os.path.join(args.userconfig), 'r') as stream: userconfigfile = yaml.load(stream) - configfile= merge_dictionaries(configfile, userconfigfile) + configfile = merge_dictionaries(configfile, userconfigfile) - configfile= merge_dictionaries(configfile, vars(args)) - configfile['numberOfProcessors'] = args.numberOfProcessors + configfile = merge_dictionaries(configfile, vars(args)) - #3. Generate an ordered region, using references only - if configfile["outFileSortedRegions"] is None: - path_name = os.path.dirname(os.path.abspath(args.matrixOutput)) - configfile["outFileSortedRegions"] = path_name+'/orderedBedFile.bed' + # 3. check the length of computeMatrix arguments to be equal to 2 + check_config_file_items(configfile) + # 4. Generate an ordered region, using references only + if configfile["outFileSortedRegions"] is None: + path_name = os.path.dirname(os.path.abspath(args.matrixOutput)) + configfile["outFileSortedRegions"] = path_name+'/orderedBedFile.bed' - cm.sortbyreference(configfile["regionOfInterest"], configfile["bigwigs"], configfile["refIndex"], configfile) - assert(os.path.getsize(configfile["outFileSortedRegions"]) > 0) + if configfile["refIndices"]is None: + configfile["refIndices"] = list(range(1, len(configfile["bigwigs"])+1)) + cm.sortbyreference(configfile["regionOfInterest"], configfile["bigwigs"], + configfile["refIndices"], configfile) + assert(os.path.getsize(configfile["outFileSortedRegions"]) > 0) - #4.Build a matrix over all the samples - hm = cm.computefinalmatrix(configfile["outFileSortedRegions"], configfile["bigwigs"], configfile) + # 4.Build a matrix over all the samples + hm = cm.computefinalmatrix(configfile["outFileSortedRegions"], + configfile["bigwigs"], configfile) - matrix_output=os.path.join(args.matrixOutput) - hm.save_matrix(matrix_output) + matrix_output = os.path.join(args.matrixOutput) + hm.save_matrix(matrix_output) diff --git a/ultraheatmap/configs/computeOrderedMatrix.yaml b/ultraheatmap/configs/computeOrderedMatrix.yaml index 954519f..992836e 100644 --- a/ultraheatmap/configs/computeOrderedMatrix.yaml +++ b/ultraheatmap/configs/computeOrderedMatrix.yaml @@ -26,7 +26,7 @@ skipZeros: [False, False] minThreshold: ['',''] maxThreshold: ['',''] blackListFileName: ['' , ''] -samplesLabel: ##should be equal to the number of bed files +samplesLabel: ##should be equal to the number of bw files smartLabels: [False, False] verbose: [False, False] scale: [1, 1] diff --git a/ultraheatmap/parseTables.py b/ultraheatmap/parseTables.py index 8462928..e5736ec 100644 --- a/ultraheatmap/parseTables.py +++ b/ultraheatmap/parseTables.py @@ -12,7 +12,7 @@ # TODO: def find_closest_genes(peaks, annotation, annotationFeature, filteredoutput, - referencePoint, filename=None): + referencePoint, filename="/data/processing/rabbani/test_ultraheatmap/test.bed"): """ Find the closest gene using bedtools.closest """ @@ -120,7 +120,6 @@ def __update_matrix_values(peaks, keyMap_closest, tables, features, IdColumn, hm """ assert len(keyMap_closest) == len(peaks) valuesTab = np.empty((len(peaks), len(tables)*len(features)), dtype=float) - print(tables) for i, table in enumerate(tables): table = parseTable(table) values = __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn) @@ -150,7 +149,6 @@ def __update_parameters(hm,length): """ """ - print(length) for i in range(length): hm.parameters['unscaled 5 prime'].append(0) hm.parameters['unscaled 3 prime'].append(0) @@ -167,7 +165,6 @@ def update_matrix_values(peaks, tables,features, IdColumn,hm): correspoding values of each region, obtained from the tables, are added to the matrix values. """ valuesTab = np.empty((len(peaks), len(tables)*len(features)), dtype=float) - print(valuesTab.shape) for i, table in enumerate(tables): table = parseTable(table) values = __getValuesFromNameTable(peaks, table, features, IdColumn) From b37832a2948774c3e02d241ecb80fece4686b768 Mon Sep 17 00:00:00 2001 From: LeilyR Date: Tue, 17 Sep 2019 16:14:27 +0200 Subject: [PATCH 02/13] added group for arg parse (#24) --- ultraheatmap/computeOrderedMatrix.py | 227 ++++++++++++++------------- 1 file changed, 116 insertions(+), 111 deletions(-) diff --git a/ultraheatmap/computeOrderedMatrix.py b/ultraheatmap/computeOrderedMatrix.py index 5563190..f362edc 100644 --- a/ultraheatmap/computeOrderedMatrix.py +++ b/ultraheatmap/computeOrderedMatrix.py @@ -27,120 +27,125 @@ def parse_args(defaults={}): "using the sorted/clustered regions.", formatter_class=argparse. ArgumentDefaultsHelpFormatter) + + required = parser.add_argument_group('required arguments') + optional = parser.add_argument_group('optional arguments') + # Required arguments - parser.add_argument("-S", - "--scoreFileName", - dest="bigwigs", - nargs='+', - help="bigwig files, the ordered matrix is computed" - "from.", - required=True) - parser.add_argument("-R", - "--regionsFileName", - dest="regionOfInterest", - nargs='+', - help="BED files definig the genomic regions of the " - "matrix.Multiple files can be provided, but the per " - "group information will be lost due to the clustering", - required=True) - parser.add_argument("-o", - "--outFileName", - dest="matrixOutput", - help="Matrix clustered by the given reference samples", - required=True) + required.add_argument("-S", + "--scoreFileName", + dest="bigwigs", + nargs='+', + help="bigwig files, the ordered matrix is computed" + "from.", + required=True) + required.add_argument("-R", + "--regionsFileName", + dest="regionOfInterest", + nargs='+', + help="BED files definig the genomic regions of the " + "matrix.Multiple files can be provided, but the per " + "group information will be lost due to the clustering", + required=True) + required.add_argument("-o", + "--outFileName", + dest="matrixOutput", + help="Matrix clustered by the given reference samples", + required=True) # optional arguments - parser.add_argument("-g", - "--groupUsingSamples", - dest="refIndices", - nargs='+', - help="sample indices, 1-based, to define the reference" - "samples. The reference samples will be used for " - "sorting/clustering the regions, before all samples " - "will be used to generate the output matrix. Several " - "indices can be added while separated by space from " - "each other. Defaul it None and will take all the " - "samples into account to sort/cluster the regions.", - type=int, - default=None) - - parser.add_argument("-p", - "--numberOfProcessors", - dest="numberOfProcessors", - help="From deepTools doc: Number of processors to " - "use. Type \"max/2\" to use half the maximum number " - "of processors or \"max\" to use all available " - "processors.", - nargs='+', - type=int, - default=[1, 1]) - - parser.add_argument("--outFileSortedRegions", - dest="outFileSortedRegions", - help="From deepTools doc: File name in which the " - "regions are saved after skiping zeros or min/max " - "threshold values. The order of the regions in the " - "file follows the sorting order selected. This is " - "useful, for example, to generate other heatmaps " - "keeping the sorting of the first heatmap.", - default=None) - - parser.add_argument("--outputReferenceMatrix", - dest="outputReferenceMatrix", - help="Matrix on the reference sampels only before " - "clustering", - default=None) - - parser.add_argument("--kmeans", - dest="kmeans", - metavar="INT", - type=int, - help="number of clusters in k-means clustering", - default=None) - - parser.add_argument("--hclust", - dest="hclust", - metavar="INT", - type=int, - help="Number of clusters to compute using hierarchical" - "clustering as defined by deepTools plotHeatmap", - default=None) - - parser.add_argument("-b", "--upstream", - "--beforeRegionStartLength", - dest="beforeRegionStartLength", - help="From deepTools doc: Distance upstream of the " - "start site of the regions defined in the region file." - " If the regions are genes, this would be the distance" - " upstream of the transcription start site.", - nargs='+', - type=int, - default=[0, 0]) - - parser.add_argument("-a", "--downstream", - "--afterRegionStartLength", - dest="afterRegionStartLength", - help="From deepTools doc: Distance downstream of the " - "end site of the given regions. If the regions are " - "genes, this would be the distance downstream of the " - "transcription end site. ", - type=int, - nargs='+', - default=[0, 0]) - - parser.add_argument("-op", - "--plotOutput", - dest="plotOutput", - help="File name to save the intermediate heatmap. " - "The file ending will be used to determine the format " - "of the image . Available formats are: \"png\", " - "\"eps\", \"pdf\" and \"svg\" (From deeptools doc)") - - parser.add_argument("--config", - dest="userconfig", - help="Added to the default configuration, overwrites " - "if necessary.", - default=None) + optional.add_argument("-g", + "--groupUsingSamples", + dest="refIndices", + nargs='+', + help="sample indices, 1-based, to define the reference" + "samples. The reference samples will be used for " + "sorting/clustering the regions, before all samples " + "will be used to generate the output matrix. Several " + "indices can be added while separated by space from " + "each other. Defaul it None and will take all the " + "samples into account to sort/cluster the regions.", + type=int, + default=None) + + optional.add_argument("-p", + "--numberOfProcessors", + dest="numberOfProcessors", + help="From deepTools doc: Number of processors to " + "use. Type \"max/2\" to use half the maximum number " + "of processors or \"max\" to use all available " + "processors.", + nargs='+', + type=int, + default=[1, 1]) + + optional.add_argument("--outFileSortedRegions", + dest="outFileSortedRegions", + help="From deepTools doc: File name in which the " + "regions are saved after skiping zeros or min/max " + "threshold values. The order of the regions in the " + "file follows the sorting order selected. This is " + "useful, for example, to generate other heatmaps " + "keeping the sorting of the first heatmap.", + default=None) + + optional.add_argument("--outputReferenceMatrix", + dest="outputReferenceMatrix", + help="Matrix on the reference sampels only before " + "clustering", + default=None) + + optional.add_argument("--kmeans", + dest="kmeans", + metavar="INT", + type=int, + help="number of clusters in k-means clustering", + default=None) + + optional.add_argument("--hclust", + dest="hclust", + metavar="INT", + type=int, + help="Number of clusters to compute using hierarchical" + "clustering as defined by deepTools plotHeatmap", + default=None) + + optional.add_argument("-b", "--upstream", + "--beforeRegionStartLength", + dest="beforeRegionStartLength", + help="From deepTools doc: Distance upstream of the " + "start site of the regions defined in the region file." + " If the regions are genes, this would be the distance" + " upstream of the transcription start site.", + nargs='+', + type=int, + default=[0, 0]) + + optional.add_argument("-a", "--downstream", + "--afterRegionStartLength", + dest="afterRegionStartLength", + help="From deepTools doc: Distance downstream of the " + "end site of the given regions. If the regions are " + "genes, this would be the distance downstream of the " + "transcription end site. ", + type=int, + nargs='+', + default=[0, 0]) + + optional.add_argument("-op", + "--plotOutput", + dest="plotOutput", + help="File name to save the intermediate heatmap. " + "The file ending will be used to determine the format " + "of the image . Available formats are: \"png\", " + "\"eps\", \"pdf\" and \"svg\" (From deeptools doc)", + default=None) + + optional.add_argument("--config", + dest="userconfig", + help="Added to the default configuration, overwrites " + "if necessary.", + default=None) return parser From b98d44ec336cec85ca1fb0bb3d7dad775d8a042c Mon Sep 17 00:00:00 2001 From: LeilyR Date: Wed, 18 Sep 2019 10:03:16 +0200 Subject: [PATCH 03/13] group arg parse arguments/ added plotheatmap (#25) * added group for arg parse * fixed the situation when plotheatmap is called but the intermedate matrix is not commit message for your changes. Lines starting --- ultraheatmap/computeMatrix.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ultraheatmap/computeMatrix.py b/ultraheatmap/computeMatrix.py index 46a28be..c4f95e5 100755 --- a/ultraheatmap/computeMatrix.py +++ b/ultraheatmap/computeMatrix.py @@ -103,7 +103,7 @@ def __clustering(hm, indexList, configfile): hm.matrix.sort_groups(sort_using=configfile["sortUsing"][0], sort_method=configfile["sortRegions"][0], sample_list=indexList) - + outputMatrix_path = "" if configfile["outputReferenceMatrix"] is not None: outputMatrix_path = os.path.join(configfile["outputReferenceMatrix"]) hm.save_matrix(outputMatrix_path) @@ -113,6 +113,11 @@ def __clustering(hm, indexList, configfile): is a value if it is read directly but is a list if it is read from a file.""" if configfile["plotOutput"] is not None: + if configfile["outputReferenceMatrix"] is None: + outputMatrix_path = os.path.dirname(os.path.abspath(configfile["matrixOutput"])) + outputMatrix_path += "/outputReferenceMatrix.gz" + hm.save_matrix(outputMatrix_path) + hm1 = heatmapper() hm1.read_matrix_file(outputMatrix_path) color_dict = {'colorMap': ['RdYlBu'], From e4560974639832e1874170ec02bd8554ab23c88c Mon Sep 17 00:00:00 2001 From: LeilyR Date: Wed, 18 Sep 2019 15:22:20 +0200 Subject: [PATCH 04/13] updated requirement and readme (#26) * added group for arg parse * fixed the situation when plotheatmap is called but the intermedate matrix is not commit message for your changes. Lines starting * updated the readme and the requirements.yaml files * small update on readme --- README.md | 32 +++++++++++++++++++++----------- requirements.yaml | 3 ++- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4615eac..fbeca4c 100644 --- a/README.md +++ b/README.md @@ -19,34 +19,44 @@ The Prerequisites can be found in requirements.yaml First, get the source code: - git clone https://github.com/maxplanck-ie/ultraheatmap.git + $ git clone https://github.com/maxplanck-ie/ultraheatmap.git Afterwards, create a new conda environment with all the Prerequisites by running the following command line: - conda env create -f requirements.yaml + + $ conda env create -f requirements.yaml Then activate the environment: - conda activate ultraheatmap + $ conda activate ultraheatmap To install the program in this environment: - python setup.py install + $ python setup.py install +from the ultraheatmap directory. + +Alternatively, `pip` or `conda` can be used to install the package. We highly recommend you to create a new conda environment prior to the installation and install it after activating this environment. This can be done as follows: + $ conda create -n ultraheatmap python=3.6 + $ conda activate ultraheatmap + $ conda install -c bioconda -c conda-forge ultraheatmap -Alternatively, `pip` or `conda` can be used to install the package. We highly recommend you to create a new conda environment prior to the installation and install it after activating this environment. -from the ultraheatmap directory. Now, you already have the program installed and can access each of the modules by calling them. Try +Now, you already have the program installed and can access each of the modules by calling them. Try - $ ultraheatmap -h , + $ ultraheatmap -h , - $ computeOrderedMatrix -h + $ computeOrderedMatrix -h or + $ AddFeatureToMatrix -h +To terminate the environment run: - $ AddFeatureToMatrix -h + $ conda deactivate -To terminate the environment run: +usage example: + + $ computeOrderedMatrix -S bigwig1.bw bigwig2.bw -R 2peaks.bed -o final_matrix.gz -p 20 -a 100 --outputReferenceMatrix \ intermediate_matrix.gz -op intermediate_matrix_heatmap.png -g 1 --kmeans 2 - conda deactivate + the above command line produces a `deeptools` matrix on both given bw while the regions are the clusters obtained from the given bed files after using kmeans clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first bigwig file (`-g 1`). diff --git a/requirements.yaml b/requirements.yaml index 7c13ae6..f54b800 100644 --- a/requirements.yaml +++ b/requirements.yaml @@ -3,8 +3,9 @@ channels: - conda-forge - bioconda dependencies: + - python >= 3.6 - bedtools=2.27.1 - - deeptools=3.0.1 + - deeptools >= 3.3.1 - gffutils=0.9 - pybedtools=0.7.10 - pybigwig=0.3.10 From 55f13187559fcf0361b9e757d8f10f8fc434b3c1 Mon Sep 17 00:00:00 2001 From: LeilyR Date: Wed, 18 Sep 2019 15:28:59 +0200 Subject: [PATCH 05/13] small fixes in formatting of readme (#27) * added group for arg parse * fixed the situation when plotheatmap is called but the intermedate matrix is not commit message for your changes. Lines starting * updated the readme and the requirements.yaml files * small update on readme * updating readme format --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fbeca4c..76b7fc0 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,13 @@ To install the program in this environment: $ python setup.py install from the ultraheatmap directory. + Alternatively, `pip` or `conda` can be used to install the package. We highly recommend you to create a new conda environment prior to the installation and install it after activating this environment. This can be done as follows: + $ conda create -n ultraheatmap python=3.6 + $ conda activate ultraheatmap + $ conda install -c bioconda -c conda-forge ultraheatmap @@ -49,12 +53,13 @@ Now, you already have the program installed and can access each of the modules b $ computeOrderedMatrix -h or + $ AddFeatureToMatrix -h -To terminate the environment run: $ conda deactivate + usage example: $ computeOrderedMatrix -S bigwig1.bw bigwig2.bw -R 2peaks.bed -o final_matrix.gz -p 20 -a 100 --outputReferenceMatrix \ intermediate_matrix.gz -op intermediate_matrix_heatmap.png -g 1 --kmeans 2 From 837b3d834ddb51469c918bf48ca22e8f61f9241b Mon Sep 17 00:00:00 2001 From: LeilyR Date: Mon, 21 Oct 2019 16:50:35 +0200 Subject: [PATCH 06/13] Documentation (#29) * Started writing the README. Installation section * Commented unrevised chunks * changed readme * fixed preClusterMode * removed some prints * changed the config file. Now two entries are needed for the matrix parameters * fixed the clusterign issue * added the number of processors as an optional arugment * removed bedtools test file * Updated some function definitions (tested) * Minor fix * Updated documentation * Updated program name in doc * merged develop and solved conflicts * fixed readme conflict * updated the usage in readme * added help to readme * updated the help message * updated readme * updated readme * update readme * more update on documentation --- README.md | 179 ++++++++++++++++++++++++++- ultraheatmap/computeOrderedMatrix.py | 4 +- 2 files changed, 176 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 76b7fc0..9adde53 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ First, get the source code: $ git clone https://github.com/maxplanck-ie/ultraheatmap.git -Afterwards, create a new conda environment with all the Prerequisites by running the following command line: +Afterwards, create a new conda environment with all the Prerequisites by running the following command line: $ conda env create -f requirements.yaml @@ -37,7 +37,9 @@ To install the program in this environment: from the ultraheatmap directory. -Alternatively, `pip` or `conda` can be used to install the package. We highly recommend you to create a new conda environment prior to the installation and install it after activating this environment. This can be done as follows: +Alternatively, `pip` or `conda` can be used to install the package. We highly +recommend you to create a new conda environment prior to the installation and +install it after activating this environment. This can be done as follows: $ conda create -n ultraheatmap python=3.6 @@ -60,8 +62,175 @@ or $ conda deactivate -usage example: +### Usage example + $ computeOrderedMatrix -h + + usage: computeOrderedMatrix [-h] -S BIGWIGS [BIGWIGS ...] -R REGIONOFINTEREST + [REGIONOFINTEREST ...] -o MATRIXOUTPUT + [-g REFINDICES [REFINDICES ...]] + [-p NUMBEROFPROCESSORS [NUMBEROFPROCESSORS ...]] + [--outFileSortedRegions OUTFILESORTEDREGIONS] + [--outputReferenceMatrix OUTPUTREFERENCEMATRIX] + [--kmeans INT] [--hclust INT] + [-b BEFOREREGIONSTARTLENGTH [BEFOREREGIONSTARTLENGTH ...]] + [-a AFTERREGIONSTARTLENGTH [AFTERREGIONSTARTLENGTH ...]] + [-op PLOTOUTPUT] [--config USERCONFIG] + + The program sorts/clusters regions considering the reference samples ( given + by --groupUsingSamples) and makes a matrix over all the samples using the + sorted/clustered regions. + + optional arguments: + -h, --help show this help message and exit + + required arguments: + + -S BIGWIGS [BIGWIGS ...], --scoreFileName BIGWIGS [BIGWIGS ...] + bigwig files, the ordered matrix is computedfrom. + (default: None) + + -R REGIONOFINTEREST [REGIONOFINTEREST ...], + --regionsFileName REGIONOFINTEREST [REGIONOFINTEREST ...] + BED files definig the genomic regions of the + matrix.Multiple files can be provided, but the per + group information will be lost due to the clustering + (default: None) + + -o MATRIXOUTPUT, --outFileName MATRIXOUTPUT + Matrix clustered by the given reference samples + (default: None) + + optional arguments: + + -g REFINDICES [REFINDICES ...], + --groupUsingSamples REFINDICES [REFINDICES ...] + sample indices, 1-based, to define the + reference samples. The reference samples will be used + for sorting/clustering the regions, before all samples + will be used to generate the output matrix. Several + indices can be added while separated by space from + each other. Default it None and will take all the + samples into account to sort/cluster the regions. + (default: None) + + -p NUMBEROFPROCESSORS [NUMBEROFPROCESSORS ...], + --numberOfProcessors NUMBEROFPROCESSORS [NUMBEROFPROCESSORS ...] + From deepTools doc: Number of processors to use. Type + "max/2" to use half the maximum number of processors + or "max" to use all available processors. (default: + [1, 1]) + + --outFileSortedRegions OUTFILESORTEDREGIONS + From deepTools doc: File name in which the regions are + saved after skiping zeros or min/max threshold values. + The order of the regions in the file follows the + sorting order selected. This is useful, for example, + to generate other heatmaps keeping the sorting of the + first heatmap. (default: None) + + --outputReferenceMatrix OUTPUTREFERENCEMATRIX + Matrix on the reference sampels only before clustering + (default: None) + + --kmeans INT number of clusters in k-means clustering (default: None) + + --hclust INT Number of clusters to compute using + hierarchicalclustering as defined by deepTools + plotHeatmap (default: None) + + -b BEFOREREGIONSTARTLENGTH [BEFOREREGIONSTARTLENGTH ...], + --upstream BEFOREREGIONSTARTLENGTH [BEFOREREGIONSTARTLENGTH ...], + --beforeRegionStartLength BEFOREREGIONSTARTLENGTH [BEFOREREGIONSTARTLENGTH ...] + From deepTools doc: Distance upstream of the start + site of the regions defined in the region file. If the + regions are genes, this would be the distance upstream + of the transcription start site. (default: [0, 0]) + + -a AFTERREGIONSTARTLENGTH [AFTERREGIONSTARTLENGTH ...], + --downstream AFTERREGIONSTARTLENGTH [AFTERREGIONSTARTLENGTH ...], + --afterRegionStartLength AFTERREGIONSTARTLENGTH [AFTERREGIONSTARTLENGTH ...] + From deepTools doc: Distance downstream of the end + site of the given regions. If the regions are genes, + this would be the distance downstream of the + transcription end site. (default: [0, 0]) + + -op PLOTOUTPUT, --plotOutput PLOTOUTPUT + File name to save the intermediate heatmap. The file + ending will be used to determine the format of the + image . Available formats are: "png", "eps", "pdf" and + "svg" (From deeptools doc) (default: None) + + --config USERCONFIG Added to the default configuration, overwrites if + + +example + + $ computeOrderedMatrix -S signal1.bw signal2.bw -R regions.bed \ + -o final_matrix.gz -p 20 -a 100 -b 100 --outputReferenceMatrix intermediate_matrix.gz \ + -op intermediate_matrix_heatmap.png -g 1 --kmeans 2 + +the above command line produces a `deeptools` matrix on both given `.bw` files while +the regions are the clusters obtained from the given `.bed` file after using `kmeans` +clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first bigwig file (`-g 1`). + + + $ AddFeatureToMatrix -h + usage: AddFeatureToMatrix [-h] --matrix STR --output STR --feature.tables + TABLES [TABLES ...] + [--annotationFeature ANNOTATIONFEATURE] + [--filteredGenomeGtfOutputFile ANNOTATIONOUTPUT] + [--genomeGtf STR] + [--featureNames FEATURES [FEATURES ...]] + [--featureIdColumn IDCOLUMN] + [--referencePoint REFERENCEPOINT] + + optional arguments: + -h, --help show this help message and exit + + required arguments: + + --matrix STR, -m STR deeptools matrix (default: None) + + --output STR, -o STR output matrix (default: None) + + optional arguments: + + --feature.tables TABLES [TABLES ...], -t TABLES [TABLES ...] + gene id tables or name based tables, tables should be + space-separated. (default: None) + + --annotationFeature ANNOTATIONFEATURE, -F ANNOTATIONFEATURE + annotation file can be filtered by a feature such as + gene, exon or transcript (default: None) + + --filteredGenomeGtfOutputFile ANNOTATIONOUTPUT, -oa ANNOTATIONOUTPUT + saving filtered annotation file if --annotationFeature + (default: None) + + --genomeGtf STR, -g STR + genome annotation (gtf) to map peaks to closest gene. + Will be filtered through '--annotationFeature' + (default: None) + + --featureNames FEATURES [FEATURES ...], -f FEATURES [FEATURES ...] + A list of features of interest from gene id tables or + name based tables (default: ['log2(FC)']) + + --featureIdColumn IDCOLUMN + name of the column includes ids/names (default: + GeneID) + + --referencePoint REFERENCEPOINT + If closest TSS or TES is needed, otherwise closest + gene body will be found (default: TSS) + + +example - $ computeOrderedMatrix -S bigwig1.bw bigwig2.bw -R 2peaks.bed -o final_matrix.gz -p 20 -a 100 --outputReferenceMatrix \ intermediate_matrix.gz -op intermediate_matrix_heatmap.png -g 1 --kmeans 2 + $ AddFeatureToMatrix -m deeptools_matrix.gz -o appended_matrix.gz \ + -t feature_table.tsv -g annotaion.gtf -f column_of_interest_header \ + --featureIdColumn id_col_header - the above command line produces a `deeptools` matrix on both given bw while the regions are the clusters obtained from the given bed files after using kmeans clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first bigwig file (`-g 1`). +The above command adds extra columns to the input matrix. The output will be a matrix with +`deeptools` format which can be visualized by `deeptools plotHeatmap`. The extra columns could be gene expression. If annotation file is provided, program finds the closest gene for each region of the input matrix and looks for the gene expression of that gene from the given feature tables. +If no annotation is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. diff --git a/ultraheatmap/computeOrderedMatrix.py b/ultraheatmap/computeOrderedMatrix.py index f362edc..7596c54 100644 --- a/ultraheatmap/computeOrderedMatrix.py +++ b/ultraheatmap/computeOrderedMatrix.py @@ -59,11 +59,11 @@ def parse_args(defaults={}): dest="refIndices", nargs='+', help="sample indices, 1-based, to define the reference" - "samples. The reference samples will be used for " + " samples. The reference samples will be used for " "sorting/clustering the regions, before all samples " "will be used to generate the output matrix. Several " "indices can be added while separated by space from " - "each other. Defaul it None and will take all the " + "each other. Default it None and will take all the " "samples into account to sort/cluster the regions.", type=int, default=None) From 244544eed3050b919fd67af599babbc1aa5ca5d6 Mon Sep 17 00:00:00 2001 From: Leily Rabbani Date: Tue, 22 Oct 2019 09:04:22 +0200 Subject: [PATCH 07/13] added required/optional tags to the AddFeatureToMatrix arguments --- ultraheatmap/AddFeatureToMatrix.py | 43 ++++++++++++++++++------------ 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/ultraheatmap/AddFeatureToMatrix.py b/ultraheatmap/AddFeatureToMatrix.py index e6fec62..9aae0c3 100644 --- a/ultraheatmap/AddFeatureToMatrix.py +++ b/ultraheatmap/AddFeatureToMatrix.py @@ -22,22 +22,26 @@ def parse_args(): parsing arguments """ parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + required = parser.add_argument_group('required arguments') + optional = parser.add_argument_group('optional arguments') + # required argumnets: - parser.add_argument("--matrix", - "-m", - dest="deeptoolsMatrix", - type=str, - metavar="STR", - help="deeptools matrix", - required=True) - parser.add_argument("--output", - "-o", - dest="outputMatrix", - type=str, + required.add_argument("--matrix", + "-m", + dest="deeptoolsMatrix", + type=str, + metavar="STR", + help="deeptools matrix", + required=True) + required.add_argument("--output", + "-o", + dest="outputMatrix", + type=str, metavar="STR", help="output matrix", required=True) - parser.add_argument("--feature.tables", + required.add_argument("--feature.tables", "-t", dest="tables", nargs='+', @@ -46,20 +50,22 @@ def parse_args(): required=True) # optional arguments - parser.add_argument("--annotationFeature", + optional.add_argument("--annotationFeature", "-F", dest="annotationFeature", type=str, help="annotation file can be filtered by a feature " "such as gene, exon or transcript", default=None) - parser.add_argument("--filteredGenomeGtfOutputFile", + + optional.add_argument("--filteredGenomeGtfOutputFile", "-oa", dest="annotationOutput", type=str, help="saving filtered annotation file if " "--annotationFeature", default=None) + parser.add_argument("--genomeGtf", "-g", dest="annotation", @@ -67,24 +73,27 @@ def parse_args(): metavar="STR", help="genome annotation (gtf) to map peaks to closest gene. Will be filtered through '--annotationFeature'", default=None) - parser.add_argument("--featureNames", + optional.add_argument("--featureNames", "-f", dest="Features", nargs='+', help="A list of features of interest from gene id " "tables or name based tables", default=["log2(FC)"]) - parser.add_argument("--featureIdColumn", + + optional.add_argument("--featureIdColumn", dest="idcolumn", type=str, help="name of the column includes ids/names", default="GeneID") - parser.add_argument("--referencePoint", + + optional.add_argument("--referencePoint", dest="referencePoint", type=str, help="If closest TSS or TES is needed, otherwise " "closest gene body will be found", default="TSS") + return parser From 99e7bbed8564e13ba89cb1b74134e3a4ae679323 Mon Sep 17 00:00:00 2001 From: Leily Rabbani Date: Tue, 22 Oct 2019 11:23:00 +0200 Subject: [PATCH 08/13] renamed AddFeature to addFeature, added documentation for the defs in parseTables, updated readme, changed the version number, added extra argumnets to save the closest genes bed file, set the default referencePoint for finding the closest gene to None --- README.md | 21 ++-- bin/AddFeatureToMatrix | 8 -- setup.py | 2 +- ultraheatmap/AddFeatureToMatrix.py | 135 ------------------------ ultraheatmap/__init__.py | 2 +- ultraheatmap/parseTables.py | 18 +++- ultraheatmap/ultraheatmap_tools_list.py | 2 +- 7 files changed, 30 insertions(+), 158 deletions(-) delete mode 100644 bin/AddFeatureToMatrix delete mode 100644 ultraheatmap/AddFeatureToMatrix.py diff --git a/README.md b/README.md index 9adde53..4d900b9 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Now, you already have the program installed and can access each of the modules b or - $ AddFeatureToMatrix -h + $ addFeatureToMatrix -h $ conda deactivate @@ -174,8 +174,8 @@ the regions are the clusters obtained from the given `.bed` file after using `km clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first bigwig file (`-g 1`). - $ AddFeatureToMatrix -h - usage: AddFeatureToMatrix [-h] --matrix STR --output STR --feature.tables + $ addFeatureToMatrix -h + usage: addFeatureToMatrix [-h] --matrix STR --output STR --feature.tables TABLES [TABLES ...] [--annotationFeature ANNOTATIONFEATURE] [--filteredGenomeGtfOutputFile ANNOTATIONOUTPUT] @@ -183,6 +183,7 @@ clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first [--featureNames FEATURES [FEATURES ...]] [--featureIdColumn IDCOLUMN] [--referencePoint REFERENCEPOINT] + [--closestGenesOutput CLOSESTGENESOUTPUT] optional arguments: -h, --help show this help message and exit @@ -193,12 +194,12 @@ clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first --output STR, -o STR output matrix (default: None) - optional arguments: - --feature.tables TABLES [TABLES ...], -t TABLES [TABLES ...] gene id tables or name based tables, tables should be space-separated. (default: None) + optional arguments: + --annotationFeature ANNOTATIONFEATURE, -F ANNOTATIONFEATURE annotation file can be filtered by a feature such as gene, exon or transcript (default: None) @@ -222,15 +223,19 @@ clustering algorithm with 2 clusters (`--kmeans 2`) based on the signal of first --referencePoint REFERENCEPOINT If closest TSS or TES is needed, otherwise closest - gene body will be found (default: TSS) + gene body will be found (default: None) + + --closestGenesOutput CLOSESTGENESOUTPUT, -og CLOSESTGENESOUTPUT + A bed file to save the closest genes (default: None) + example - $ AddFeatureToMatrix -m deeptools_matrix.gz -o appended_matrix.gz \ + $ addFeatureToMatrix -m deeptools_matrix.gz -o appended_matrix.gz \ -t feature_table.tsv -g annotaion.gtf -f column_of_interest_header \ --featureIdColumn id_col_header The above command adds extra columns to the input matrix. The output will be a matrix with `deeptools` format which can be visualized by `deeptools plotHeatmap`. The extra columns could be gene expression. If annotation file is provided, program finds the closest gene for each region of the input matrix and looks for the gene expression of that gene from the given feature tables. -If no annotation is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. +If no annotation is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. diff --git a/bin/AddFeatureToMatrix b/bin/AddFeatureToMatrix deleted file mode 100644 index d8209ad..0000000 --- a/bin/AddFeatureToMatrix +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -from ultraheatmap.AddFeatureToMatrix import main - -if __name__ == "__main__": - main() diff --git a/setup.py b/setup.py index be8bcbb..e3a3c72 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ def run(self): name='ultraheatmap', version=__version__, packages=find_packages(), - scripts=['bin/computeOrderedMatrix', 'bin/AddFeatureToMatrix', + scripts=['bin/computeOrderedMatrix', 'bin/addFeatureToMatrix', 'bin/ultraheatmap'], license="MIT", long_description=open('README.md').read(), diff --git a/ultraheatmap/AddFeatureToMatrix.py b/ultraheatmap/AddFeatureToMatrix.py deleted file mode 100644 index 9aae0c3..0000000 --- a/ultraheatmap/AddFeatureToMatrix.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import argparse -import yaml -import pandas as pd -import textwrap - -from ultraheatmap.parseTables import extract_ge_folchange_per_peak,\ - find_closest_genes, parseMatrixRegions, update_matrix_values,\ - __read_tables_columns -from deeptools.heatmapper import heatmapper - - -sys.path.append(os.path.join(os.path.dirname(os.path.dirname((os.path.abspath( - __file__)))))) - - -def parse_args(): - """ - parsing arguments - """ - parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) - - required = parser.add_argument_group('required arguments') - optional = parser.add_argument_group('optional arguments') - - # required argumnets: - required.add_argument("--matrix", - "-m", - dest="deeptoolsMatrix", - type=str, - metavar="STR", - help="deeptools matrix", - required=True) - required.add_argument("--output", - "-o", - dest="outputMatrix", - type=str, - metavar="STR", - help="output matrix", - required=True) - required.add_argument("--feature.tables", - "-t", - dest="tables", - nargs='+', - help="gene id tables or name based tables, tables " - "should be space-separated.", - required=True) - - # optional arguments - optional.add_argument("--annotationFeature", - "-F", - dest="annotationFeature", - type=str, - help="annotation file can be filtered by a feature " - "such as gene, exon or transcript", - default=None) - - optional.add_argument("--filteredGenomeGtfOutputFile", - "-oa", - dest="annotationOutput", - type=str, - help="saving filtered annotation file if " - "--annotationFeature", - default=None) - - parser.add_argument("--genomeGtf", - "-g", - dest="annotation", - type=str, - metavar="STR", - help="genome annotation (gtf) to map peaks to closest gene. Will be filtered through '--annotationFeature'", - default=None) - optional.add_argument("--featureNames", - "-f", - dest="Features", - nargs='+', - help="A list of features of interest from gene id " - "tables or name based tables", - default=["log2(FC)"]) - - optional.add_argument("--featureIdColumn", - dest="idcolumn", - type=str, - help="name of the column includes ids/names", - default="GeneID") - - optional.add_argument("--referencePoint", - dest="referencePoint", - type=str, - help="If closest TSS or TES is needed, otherwise " - "closest gene body will be found", - default="TSS") - - return parser - - -def main(): - """ - Either the closest genes are foune and a deeptools-like matrix is created, - if annotation file is provided, or a deeptools-like matrix directly from - a provided enriched regions name-based files. In either case the output - matrix is ordered and is appended to the input deeptools matrix. - """ - parser = parse_args() - args = parser.parse_args() - - # Check if the feature names are consistent between all the tables - __read_tables_columns(args.tables, args.Features) - - hm = heatmapper() - hm.read_matrix_file(args.deeptoolsMatrix) - regions = parseMatrixRegions(hm.matrix.get_regions()) - # Using bedtool closest to map annotation and regions - if args.annotation: - closestMapping = find_closest_genes(regions, args.annotation, - args.annotationFeature, - args.annotationOutput, - args.referencePoint) # XXX instead of all these arguments i can simply add args. - - # paste an extra column per table to the input matrix - extract_ge_folchange_per_peak(regions, args.tables, closestMapping, - args.Features, args.idcolumn, hm) - - else: # No closest gene is involved in this case , each enrichment id is individually checked and values are updated. - update_matrix_values(regions, args.tables, args.Features, - args.idcolumn, hm) - - # save the joint matrix obtained from either of cases - hm.save_matrix(os.path.join(args.outputMatrix)) - -# if __name__ == "__main__": -# main() diff --git a/ultraheatmap/__init__.py b/ultraheatmap/__init__.py index 923b987..19b4f1d 100644 --- a/ultraheatmap/__init__.py +++ b/ultraheatmap/__init__.py @@ -1 +1 @@ -__version__ = '1.2.2' +__version__ = '1.3.0' diff --git a/ultraheatmap/parseTables.py b/ultraheatmap/parseTables.py index e5736ec..46c54fa 100644 --- a/ultraheatmap/parseTables.py +++ b/ultraheatmap/parseTables.py @@ -12,7 +12,7 @@ # TODO: def find_closest_genes(peaks, annotation, annotationFeature, filteredoutput, - referencePoint, filename="/data/processing/rabbani/test_ultraheatmap/test.bed"): + referencePoint, filename): """ Find the closest gene using bedtools.closest """ @@ -41,6 +41,7 @@ def find_closest_genes(peaks, annotation, annotationFeature, filteredoutput, def __get_reference_coordinate(feature, referencePoint): """ + Returns TSS or TES of a gtf feature. """ if (feature.strand == '+' and referencePoint == 'TSS') or\ (feature.strand == '-' and referencePoint == 'TES'): @@ -75,7 +76,8 @@ def __filter_annotation(filteredoutput, annotationFeature, annotation, def extract_ge_folchange_per_peak(peaks, tables, closestMapping, features, IdColumn, hm): """ - + Updates the values on the input matrix by appending the requested values + from the given tables when closest genes have been found. """ ## keyMap_closest: peak_key:gene_id ## peak_keys: cols 1-7 from bed format (1-based index) @@ -85,6 +87,9 @@ def extract_ge_folchange_per_peak(peaks, tables, closestMapping, features, __update_matrix_values(peaks, keyMap_closest, tables,features,IdColumn,hm) def __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn): + """ + + """ v = np.empty((len(peaks), len(features)), dtype=float) for i, peak in enumerate(peaks): key = ';'.join(map(str,peak)) @@ -101,6 +106,10 @@ def __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn): def __getValuesFromNameTable(peaks, table, features, IdColumn): + """ + Gets corresponding values for the given tables in case of one to one + mapping. The name column is compared to find the exact match. + """ v = np.empty((len(peaks), len(features)), dtype=float) for i, peak in enumerate(peaks): name = peak[3] @@ -116,7 +125,8 @@ def __getValuesFromNameTable(peaks, table, features, IdColumn): def __update_matrix_values(peaks, keyMap_closest, tables, features, IdColumn, hm): #TODO two different update_value function can be merged into one, just need to an if / else over the arg.annotation """ - + Updates matrix values when annotation file is given and closest genes + have been found. """ assert len(keyMap_closest) == len(peaks) valuesTab = np.empty((len(peaks), len(tables)*len(features)), dtype=float) @@ -147,7 +157,7 @@ def parseMatrixRegions(regions): def __update_parameters(hm,length): """ - + Updates matrix parameters """ for i in range(length): hm.parameters['unscaled 5 prime'].append(0) diff --git a/ultraheatmap/ultraheatmap_tools_list.py b/ultraheatmap/ultraheatmap_tools_list.py index e46accd..ab58aec 100644 --- a/ultraheatmap/ultraheatmap_tools_list.py +++ b/ultraheatmap/ultraheatmap_tools_list.py @@ -9,7 +9,7 @@ def parse_arguments(args=None): description=""" [Tools] computeOrderedMatrix - AddFeatureToMatrix + addFeatureToMatrix """) parser.add_argument('--version', action='version', version='%(prog)s {}'.format(__version__)) From 09b493fd02e901537f41d16f847cef63829e3a94 Mon Sep 17 00:00:00 2001 From: Leily Rabbani Date: Tue, 22 Oct 2019 11:26:37 +0200 Subject: [PATCH 09/13] added renamed files --- bin/addFeatureToMatrix | 8 ++ ultraheatmap/addFeatureToMatrix.py | 143 +++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 bin/addFeatureToMatrix create mode 100644 ultraheatmap/addFeatureToMatrix.py diff --git a/bin/addFeatureToMatrix b/bin/addFeatureToMatrix new file mode 100644 index 0000000..906c575 --- /dev/null +++ b/bin/addFeatureToMatrix @@ -0,0 +1,8 @@ +#!/usr/bin/env python + +import os +import sys +from ultraheatmap.addFeatureToMatrix import main + +if __name__ == "__main__": + main() diff --git a/ultraheatmap/addFeatureToMatrix.py b/ultraheatmap/addFeatureToMatrix.py new file mode 100644 index 0000000..a4fe63c --- /dev/null +++ b/ultraheatmap/addFeatureToMatrix.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python + +import os +import sys +import argparse +import yaml +import pandas as pd +import textwrap + +from ultraheatmap.parseTables import extract_ge_folchange_per_peak,\ + find_closest_genes, parseMatrixRegions, update_matrix_values,\ + __read_tables_columns +from deeptools.heatmapper import heatmapper + + +sys.path.append(os.path.join(os.path.dirname(os.path.dirname((os.path.abspath( + __file__)))))) + + +def parse_args(): + """ + parsing arguments + """ + parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + required = parser.add_argument_group('required arguments') + optional = parser.add_argument_group('optional arguments') + + # required argumnets: + required.add_argument("--matrix", + "-m", + dest="deeptoolsMatrix", + type=str, + metavar="STR", + help="deeptools matrix", + required=True) + required.add_argument("--output", + "-o", + dest="outputMatrix", + type=str, + metavar="STR", + help="output matrix", + required=True) + required.add_argument("--feature.tables", + "-t", + dest="tables", + nargs='+', + help="gene id tables or name based tables, tables " + "should be space-separated.", + required=True) + + # optional arguments + optional.add_argument("--annotationFeature", + "-F", + dest="annotationFeature", + type=str, + help="annotation file can be filtered by a feature " + "such as gene, exon or transcript", + default=None) + + optional.add_argument("--filteredGenomeGtfOutputFile", + "-oa", + dest="annotationOutput", + type=str, + help="saving filtered annotation file if " + "--annotationFeature", + default=None) + + optional.add_argument("--genomeGtf", + "-g", + dest="annotation", + type=str, + metavar="STR", + help="genome annotation (gtf) to map peaks to closest gene. Will be filtered through '--annotationFeature'", + default=None) + optional.add_argument("--featureNames", + "-f", + dest="Features", + nargs='+', + help="A list of features of interest from gene id " + "tables or name based tables", + default=["log2(FC)"]) + + optional.add_argument("--featureIdColumn", + dest="idcolumn", + type=str, + help="name of the column includes ids/names", + default="GeneID") + + optional.add_argument("--referencePoint", + dest="referencePoint", + type=str, + help="If closest TSS or TES is needed, otherwise " + "closest gene body will be found", + default=None) + + optional.add_argument("--closestGenesOutput", + "-og", + dest="closestGenesOutput", + type=str, + help="A bed file to save the closest genes", + default=None) + + return parser + + +def main(): + """ + Either the closest genes are foune and a deeptools-like matrix is created, + if annotation file is provided, or a deeptools-like matrix directly from + a provided enriched regions name-based files. In either case the output + matrix is ordered and is appended to the input deeptools matrix. + """ + parser = parse_args() + args = parser.parse_args() + + # Check if the feature names are consistent between all the tables + __read_tables_columns(args.tables, args.Features) + + hm = heatmapper() + hm.read_matrix_file(args.deeptoolsMatrix) + regions = parseMatrixRegions(hm.matrix.get_regions()) + # Using bedtool closest to map annotation and regions + if args.annotation: + closestMapping = find_closest_genes(regions, args.annotation, + args.annotationFeature, + args.annotationOutput, + args.referencePoint, + args.closestGenesOutput) # XXX instead of all these arguments i can simply add args. + + # paste an extra column per table to the input matrix + extract_ge_folchange_per_peak(regions, args.tables, closestMapping, + args.Features, args.idcolumn, hm) + + else: # No closest gene is involved in this case , each enrichment id is individually checked and values are updated. + update_matrix_values(regions, args.tables, args.Features, + args.idcolumn, hm) + + # save the joint matrix obtained from either of cases + hm.save_matrix(os.path.join(args.outputMatrix)) + +# if __name__ == "__main__": +# main() From a89d062abae8812e0c7b69ea25b2af7f0fabd05d Mon Sep 17 00:00:00 2001 From: Leily Rabbani Date: Tue, 22 Oct 2019 14:08:19 +0200 Subject: [PATCH 10/13] resolved the conflict with master --- README.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/README.md b/README.md index 9de8ec7..0be838f 100644 --- a/README.md +++ b/README.md @@ -34,26 +34,14 @@ Then activate the environment: To install the program in this environment: $ python setup.py install -<<<<<<< HEAD -======= ->>>>>>> origin/master + from the ultraheatmap directory. Alternatively, `pip` or `conda` can be used to install the package. We highly recommend you to create a new conda environment prior to the installation and install it after activating this environment. This can be done as follows: -<<<<<<< HEAD - - $ conda create -n ultraheatmap python=3.6 - - $ conda activate ultraheatmap - - $ conda install -c bioconda -c conda-forge ultraheatmap - - -======= $ conda create -n ultraheatmap python=3.6 @@ -62,7 +50,6 @@ install it after activating this environment. This can be done as follows: $ conda install -c bioconda -c conda-forge ultraheatmap ->>>>>>> origin/master Now, you already have the program installed and can access each of the modules by calling them. Try $ ultraheatmap -h , From 218ea102d0e00473a1ad87396491cfc571ec5a4e Mon Sep 17 00:00:00 2001 From: LeilyR Date: Wed, 29 Jan 2020 13:59:01 +0100 Subject: [PATCH 11/13] Readme (#31) * updated readme, added an image * changed the image's extension * added the png image * removed the pdf image * changed the place of the image in readme * added caption for the image * center image * removed the other image. resized the center image * fixed the image caption * more on caption * firxed partitions * typo --- README.md | 6 +++++- docs/content/images/ultraheatmap_ferrari.png | Bin 0 -> 235181 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/content/images/ultraheatmap_ferrari.png diff --git a/README.md b/README.md index 0be838f..c5c0843 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ appended by orthogonal data, like associated gene expression. ultraheatmap facilitates adding orthogonal data to a deepTools matrix and allows to cluster a genomic heatmap by selected samples in just one single command-line call. +

+ +

+This figure is generated by the ultraheatmap on real data. The first two columns show the ChIPs signal while the last column shows the gene expression of the closest gene to each region of any cluster. ## Getting Started @@ -239,4 +243,4 @@ example The above command adds extra columns to the input matrix. The output will be a matrix with `deeptools` format which can be visualized by `deeptools plotHeatmap`. The extra columns could be gene expression. If annotation file is provided, program finds the closest gene for each region of the input matrix and looks for the gene expression of that gene from the given feature tables. -If no annotation is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. +If no annotation file is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. The above image presents a matrix has been generated by this module after mapping genes to peaks on real data. diff --git a/docs/content/images/ultraheatmap_ferrari.png b/docs/content/images/ultraheatmap_ferrari.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ba4e46af50f34b64c0ff2a66163657ff641e1d GIT binary patch literal 235181 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 z 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≥K|ZQhfC?+onGaM!J*LQ^W=xm#-noD{z#mh-xx34|zmBpX&43-_ter#G z$whQ4kZn;`PK*Pb2VHHJd_FKQ$TP+()^~$4tz?}e_bCc_3i(|8{Yo*w|~=L{pQ!c z?se~d{o_C36aMb^f8P)P&<}mhfA`g||AxQ(ZQuTe>n8Dhsf*qCb^qfVpYchv&;fYR zKN1}`o~&85$b#ag&Av%eRkc={%3`3E1qcs z4zh>kNq|;eVCX8KQY5G(7po&lLoM3ez#}hH%@{8^A8g)(ka^I76_nx{p`(Q967vDE zgM?ZUy1Y8iE)sN3q zKWMc^=uxt2WuvPdrHcv9aeby?jhuDZ1H`aqXi_`RrceQ4}bi} z-Z+lqFbvmC;(1Yj={x`alFH|Q#=rYx|KMLdgC92)04HTf>&6)gj`Y1l$fKq`RBI_U zFUzvXN19U{To{~ppp&G|lIvKL;p@wWVY@wm#nVuI*VN;nU+}L_xG3=c0Kw5w>|>Hw)h^- zTg@z)hx?dzP{sNbkG&kBJEAZ&l*BY1)!H?4nczGil*uhuZoY);&~M;l+atgKdl<}` zvYN|*%ZQp`0n{;04x|}s!hFDdV82G_kD++;l~fUWE>rW8f_a1mKvk&L zoU8My)oOOJN2!327m(1@o})BtccIIB8V~TEUC(~igb|2?IWHGrUYncs#z&BL)U*G# z*P!?F5ZCOc=enMJ;)(Ha_|#APwDx0QM1c4N@AHMXQ(dE zn0Cks^9bh|g66%;8O_XY*vdsnFlsnWey|hyx*#tAu|5M0pz^G^uJgh5tK&Gk-$LTy z0`o){t=~r9$F5?$)cq&x;fiJqfzIfI`cnwVGw%F4`nC5#=3x%$pmEP-YB4@G?EuMj z=r`)t3_W}&0AZ-1Cyix6%{0gHQu7|u0n-&AEVB*|5z{TD`nWa&x|QdoMXx2~WeV$Yj$p%4V+-W+% zM}{B?K4Nvs)fpds$?*xz&8cLhL{e9ymYLr3-aDNOdP<0MUC&B=&?kAVf0=uKCz#D< z10X!lG}s@eP2yrVe%)VxpL2-Xm94W~GJTsg63xd3CsJdqZrJKh5FqC6ufEE6b(4&K9z zKDyY!cObEh*xhT38f=gYnD=ot<6bKbA zuq60^5YYAJqI?H)d;~DBri04~dFDK#ENXv?=}Pnd==#?(N88^NP)-2McMWL)$YFbI z=Z(zPZxmMqkY|jSsDdA~x^awhDha27-O%g>o3KuH%`179JH-c)-Sp^VkM@24wzt0R z3%>9R|4q;Nxqtq103Lt*h1X5uxvy{duD?Id=`ViytN$(RMSPTt8OWkj@v3I5HI z=6#D~fGXmE&@n`nLIB%ay!j$6qm38XJ<#P{a6H<%qJ`6)VtZb@72A}&3VnctnvoYY z2k%;~PMEHc5-uB=ry@j#9^JZ`8^Q%Z=Dgq?s!t2jL%w(+1eARg4B&10`vfn5SqFK!@FTpiv*YmK){t8u~2}B&|99)3!;5}SKzt;Lp%}7dxX;J6^ zAQ&#KMb(47R2Tecr58nD0{>0}!e(U4|+lLqcj+gKu z(#7!-%LsGoR@Tf-8_mfDE)#~W>(}Ny+oB_Jy1?O*HHij#4O^~GK#GR6V0>WnL3zg2 zJ*uE&x`2KK7h%RUL)8si>$d0yAi$k!dy_d~yo3r|kncz+O{}%E+ zgO6;P+wbQV-g!ILHyaO%p#ur?@Ey{EG9xvB*C9kcC5bTeY||b|C=9(e=NwKT!Fx)o z70Ut3$mvqk4%4XVfY8B=ZS2$a=A*_dlngLoVAvq^%rg#`N8iJCydYr?J|Oh)5mj^^s9GkJ1vMjQ zHJ3m-IFGzMgH7@Ke28n{`nTS$=fH;jPkzN${2y<5%OCkq{?o7h`mg`JpY@sV$u5=j zGe7+^fAQJq zD{%$i8({qgK9pLk>q0sd7{cI|gXSlxidtplQ>F`Y0o}Sv44r64Q@or+r?5ikIUi&_ z%yHUde+6a06j$ii6j&B5P`A$XMW|tm)lDO;WX=1Ob1_E}E_P>U(P%Yc++n`L{x$$~ zD{OBSKR|`c#OVsE%o)wSykE;lOcR&c%v1%DH8UrG+Fxp!=p3Dgb4Vk~0y=;yi_jhE zybn1_448Lt{zw|80Tt68&LOT4Rw6m?0V-Fd5qX9R%$iR)UBG;xfNoIekQU~Jsz;+I z2`<7H#HzfYI=O%xG7?Ni!rxBJ#_`Iet}^G{qnc<`#<^Lzf(fBRLR_UWJgv|iz5FMHV=zT-Q->MQ@7 z|LRM>^z`)fm9Ki$cDud2y!@qK`lSc=?+>fhH-F2we9EVO>UEQNj_a@eou9n@VEd0qH=K#wm#ST##{s!<-8*Tg<7qdW|t${NfgXi+AR#x zLPV`r3PJ}XhSM5`29xzj$W!y}P#Q7rMZ@}(n{%DL5I(AkgmXb8hs=J3dEbWna9+M= z$;^qq#W}3lBoQ^CWNyyrJZN$u)01G$l8_gtVr^?&A0nnJw_aj-=I$<3P%2R6qWTjw z0R%nUB5Tc2!$5;F#!HNs2m_ic__RZs*soCw^2{_LFX%Ul1I%IEwe$z%rA~W*be^Gu zdBlO<1H%3RR2f$Au0=UPMf(dKcFo6^&SN;yu;s}u)oeLq8IS5e31;vSzB^8nrajUn zz&ejmL9LKrPDbRUTId6v7pxJBQ4&BphklLKRz6Y%U85ae*RusjJU#re)-U_gKlcCp zvw!wwf8vk7_{A^zyWjIYU-HFY{Jr1*1E27TPcJy=_kQMQ{`gP4`EUQN?|$=}-t$g5GslNrllYZ)-Uaa2zUQ|_jlbdh{x1MO`i4LLQ7``O zHVL@^psa2zrB-&{7q9H6E2A*ChW~K?#h}f~;APh%Qn7K-){e5aj?|D?l8HQ~QLj`M6xXxT^Bg4mgco>7W}SQe$3tu0q!*)uK8@`URx zjEz6mMB}IxY1D%!t{3xX3ypZ1vRaj9KDm4rWeRY96BCzdXAr+R4vM^0(S!w--{RVj< zgtW*zYm+7C;X>Km%Jc@+S|zzn@@=wjj%miULoEy)Pi`R$qNx_k6C{Ex$y!K56CslT zn}1QIRdXT{H`v?~$UNJ_Eb1n|_S>V>0JX|_wp`GX0idN1sZio_Xq}a2?Vxjnsp(p8 zlM9FgX@F2w&E+c9;!)jEJfWlI>fwQwNf-C<tN!2HbeT^=kesA18jh?4~!p>Bl#l&FB8XKiD1)!|)%!<~85;t>5~tcfIR{ zFMNh%B=7zC`T6tzE`8WFiO=}B-~C&z{C~gpKu%XjFD6>GHlOjXW}*@V4JEZu8q@+6SYW@l;Z$*eD(AgQf)Ao0&n{1v zCZriO#X+G*JlE3l+>(MFsai zag+YFfBc*3ZEt<+N4??|@4e-J#VcO{;QxKw+n#Zg_?=SMMC@l?MF4Oo8Bx~(D{qDh z)k;?9Nle8by3YD@XY>S1@`rntmt$ivgDS#G-9R`Ef(4nE^9G?7s|6*AhG7fI%?B*| zBY{$aip>YLv9$y<^&5s>E>z!H9B8KTg3F|`pmrKg+d+ZTRbyenNBFGJ%Q-qPAE{oO zTWH^eWkQ}o2a?0K##PFtsM_k>-TGYsjcw>vO@az*1!=V?^mANOvhe}u-TS|X`;?>i z!7_4TjHpEDHJmWt#QqL)hTAe{O?w=!FdqP5d(PDfoa1ufe5iNcRri;G9R(k;Lx=zo zB5enN<`Dwoz+B-R446lZmnsF*LGy&zq3a1?*y8*KU-$|~hjie)J04ax=XG<7%Ypm5 z+Fx>+G#_+%4+6TLs|{DDgrusJ0jld--$m#^7)`!MT%jhkKs^_Z4&fzhK7hvU&E}Ot z=TQnm$IT5s4AFU?o8tHR5ZCOc53KIpz4yvjzUsZN+`4rO!0p?&Kjas>>n8Ec%RvAh z;{;WWb14;Rmc(vt{ie8B1xNPYe3^N5597sA=S4$|C`7GD3l9K97hnb#D_kNa5wMzF zO;lA})!_vFma3e0SVl<76Q&(X#^zjcK&?o7sygRIE566++90M0%h=M25PK0YhiODr zGn)ekl|pZVm?un2^Lj!~s8!Qmhbz_^p<@DQKiIIvYKv}-JTuQK8EN7&!#UgB=!cVP zKKp^gLwt|>^$GH__>QX^xr%0)ZpxB_k2hjI^eiMvBcP`4&Izax(5=)@T%EeM4fI_T z!Lg}ZeW?EECPFhV2TfO)u8?Li!;CJ%cUV=%9+Z}eIX~5k*k)gd9aL~}8~5K0KshPR zh#giZ?AOQ{W*oMPYt@YDO12O{nouju!wQXZ5za}8B*Jh+k7^-+xI$dl)?#Boe;kxE zbWo-5p2m>Vg?v!C&a^)`m7)U4il z`hd<^AI#TedG2cIlyGn4P=LUX&5@8~7D+?^B~eK7fTBbg65)RYViE|32*V4J z2;dNr2mD|g+qAH;+wSiAbMHOp?7h~SbB-?$b63R%+}G7kb+?N%A4+w$j?O)I-M#0S zbByo%eR#|DhhhB_0HQ2fu0-csy#iX2yLyjaji997xSgm@O9G|N>8OD%8B?PDjOgr5 z>xt_f>!y9vzM)m-g5`>3Q3MayW0)*}bP}k$wiD1%3ZiR0@qCMV#`(;gLF#me)<#K& zC**>*bA(;fB82^H1V}_D=))T^9WYEYp3ye89rtfOd_3Q!rFW=+%{kZhGv3U#RshSq zJQRtC^|P*!02~q?V;{ykGp|Of+ja^tnFUN&ui&TADcs}$`mWxrw;?AT?RStkJl6I5 zq~3dPmTFpd+1ldVBp{2k^YHj_Rzur88a*+U7}H%krYoBcY#Sp0V^l~oV+7lV+t)zy z@K||5UL;Y0SDuI_OP77HS8n$>KjUbOn1in9*v@+WCsAfj3utH?_GdcZ!xD|!&N@AV zWYf9Tat01&(+|M${bd0$WFv!f+lj%aZiqL!~nYv8zas6vdi;Gtc})s?@GnyL!vR7jRWs6b9f#EFoEnH z5YbULq=GzQzJB_N z4GMTh?Aq?kyukv>68nbr4(r`WtssJR*S@Om5Kv}_atFwLRd0Is8Wrpfic4dCJ3~Uw z7$^5>!Qlp}kcOch!pM*yN2u!gj9zU%A_D6@0PH7#C^KHvFqzm-i$D+E0K` zj>wbB0-B;lC}6#Jwmlygo33DfQOeFY$cx^_l8*^ZUdFUvih<_VNZ{DdfK--YYJ(KL zvQ^}Q_kZLvn;BT|JSi1LkKRmS_iv(Yh)CYBzJa>q5QJA;{5y~a_c)`$_og{MtHbEBeGDvF*>5FZt4$!zjtrFv#Z1xf615p z$PfSUPk-g3AN?qRU-GZK16=EG``WMjxwNPL{CEA&4@KfV^ENX8);GJmWnGbq(LqC5 zaQ_DGpZa`EHy@a|hNV47&*4Sp1e`3U*mtk1NO{J5h3VKpOB2<(o!p7hU#E%K(p;G% zB%Il5^vc%FEtNSJsyk- zIoXBUG&)OZQduwnBD zAv%takqdf5nl8aX3YDX|la>gzrfAwvynpjDXvxb3ACfZY@FKI=&Zs*fS0K9jjyz$x z(Q-qYdgFGF{lvZ_XWhKg=vx=T)T#r?9p`6^#=7$EIdj2wkL^5i<#h83rXw_Dvc^XX z(u}ski=tgT+bJQt^!JJvhQM;vbCMUq9uei9Ap8lFLtdKg^4TZ8L& zI=uL|f6cG?KmYdM{=R?seZTCN|FZGQ-}vj_^PvxY=p!Hb$j|+UJbn7+`Mkb;5&6W& zKfW9eU;3qAdORLJ{_#)z;~)7El3(#}J~*!5OKr{Z-*UwKs7ELoC764jFdcY!d=bB= zV$#%`_B+r-Pj9)AJx@vnZD+6O73*EH5K|?;E%(6s@ZB?FNi3-#;qKB70T~*FXaw${Ex+&g z{@(xczxorO_lthf|M+MAhyUjv{DVL7-~89_2*UW6zx%t#|J>c({rZ3JD}VK`{?&iv zkNwfN^M!uohky8Y|IXj_>Z>1oC=&0bDj@*fCmI=>MPoE>n^q@H=0I@Yar;TMoq5u9 z#d1J21(+w5V|eN?PH=Tb$9yA2mqtKzNQ#hpn%t)=Jo*3uC}f5Rv<OSAEr|_ox3a-}PP3o;~}|{)_+Ie_C|J7k|l@{HK5XkAK~7{jGoCoBz8j>~MT=IWclDN1%F_{f)^tE#=T5d9MKzmijuq7Eju+a*!I2k20G*t>q_$;A<@b~K;Jhbt!>y&sw=iN1m*%! zR&cl)esX^i{2-yR^{~{YYn0<49feKI$84Zvb;WiE$WL#MIl;x`G05c6B*qJt$jVARde&hHT*5OEDaP9pb!-#rWqqO@BUur zTi(13cQB#vI^Szsp*AMuNCndYWwJb}HCV!6L-n_2`18?xDv04!SD6WunE(jf@3EiN zJ4iR@=Qge3U$*t7U;3qg{crxwAN$cCUDxfyU-031ob9R$ zcT;C{nxQNKU%QGip`mwxeRu-@x@M^DHZ=2)(k<_qW|<(O`| zCH2a>TCKKi>Wy_{TdA;PKnv;_1-1D4dPiB9C-jQ#glR!ubiSpXL5hU=$nmB*(*#Iq z3MX7Nvj{yT(|zu(4}ZZI{QQ5&N51F_|J-+e=MVni5B@VTrGM@_zTNrNz#*@&aienJGUUPj$u3Dcrf#+{PAz9r?ti00;grg_i; zrsQT1H;H$5p!k_gru*sZ-~DyJ?oa)9|NYnehTr&`zUHfc=`a0Pudc6t>L-8dul?1( z`n`Ye?|suB`~%D3A#~`yvJ3&>m4X;T6q=F~K&y<(dQvJi7}iqCpt-rPx4i!(NTh3Q z_jc)=6pSNnbO3tvDqs50pfdr&`Bryt>ghk#>DE%>llOBzVtt0`$TXpC-kQ$$*iI-D z%Ys~x7cJM^&Y%Ne+iX8!yH{^E9n#JFBTv<@y-cGS)CY`jI}y6jgxUrIH?OcPVQEkE zZn*_|k7)Zc6-$=a{Q{ZDGp>%k9Gj(DduufqED3pOFM5W3xrvagbM6G?UejUi3WES6 zW&?f7YOHHA?^3iCDNSaKJ_0@iK%Pv&dY>dJo z6y~XeLH1T-J(0;Df4)-+HM*{IZ;g^O&?;#}q_+CgPvG=)s8sdjgY|u1NY5F<{TtX% zGQ((pw+dGDMo2d=YajqELDIg&d#6r>FkhqZs5{1{xm=@Fc-Hxrr@K5&s0Wn=(&%l3 zne~c6TN*^X{fy{VmQvdrbYP%z4ApLy((i$ zRP(k=opmdBZxm0F54CsmWHeJ#1QpuuEfsgu<+PsAD-|9At(VSz1lmdgy`!zZ-K#Zt z5{O(-W*iozN#^J^6zG+`aq#$3M%^HxZ`|*>pQWIrtH)>+k3XQtufh|09l`-#Z+w4; z`2~^)T`U@-$rg?GPce#JG|`wch65uSN%W@k2@q4ka)okGnPG|BNqx_6DUaXje)qHO zdJpQRpZT4i<=x{WANj~%_=|t>pZ?g7egF4=|M_%&-}~SHWncbfZ!4W1io|8p{2$fYx&giR#!_1DqDs45+fr99Ae9xY^tveVC6vKc@tbCb=*BuuP6tk!jw^_5s8E8KmedpK^}b;YV1BR%n5bVdPfET_MLQ9pm*NCiD;nv zaQ~*^N zu9Mr@+72l!T_~;l+0J*R%(R2bmHbfk7R(AjG|@7K61R@T9+(lXx(|bbNV>pDp2pK) zUAf;<^@3Hd7Fg6{D_`a z-HiYu7@chgjjgHg)QFlWXjLFaN*#padh($#gG7Z7uX}G0;I8?47{VXcdw6~Rhd=!J zpJNkrFxcaJD&JEd~jJX+f(Z1e1AKqNmYEXsxPM^qR_)=4;>YQgo@Z?Mu`V zNj=7-a;N7@qtv|%wI`piZ93vfT(HvnDsx`FjFeGVNbrohlDK5I^~QZ4*t;Im@>o}| z$dV6K-gb|+T}TqqksRd!Pq5@=*7Zy1HF^snEQPt1CFf%G%(^RO)?NFF(UcdZ0y|)N zjK?2DR7&9!+j{WMhcwJd0+z(4BSTpk|#nD3A)bJIfhN00!9! z^HC8@1;aD(u--%K!EyaB-5Q_Z9@sDV1ZJNO1NbEnA<)~NJi**^sh*_>+A3MT1{o17 zy&znjy@He_D%dvU1tfYi&sJu-52S>W!>@U`Mk=7ev+@j(q(DZ;zM`H$)A1#l)04NI zKlOuxp)8j~%rc`Kkqu=*Ucz$~5S?u|^^u8fmOQ%5K#OQ>fM-Z-o2EnDd|;LLP?xAM z!9A5UCyKp>m(J)+FWly|pL~Rg_6BwCXKeQzQPR=q38^4u%{MV$BhT>6k%QfKLaH01 zz@^qOBoSw6P5|Zb|^CfE3$swqX`w*w(rs3c?*$ z8=^tVz_3a|Qr!?$UOH`unI%p$Xf#Lk)K=T>P*;#FM<_7hLer6o%kh6Zv8@7aKO>s1 z-^ck1dD4DHIbsm~EDfn8p8O)ztPc|xxa4iASc z!AsC>KOLhh`pEO)XcI+;XXMHAY`GY%>IF9m1JL$pyF~+C0Op%E-*|M^v-*y@v+Y=) z+j^(zh~>J|1-iQ;;6)Bbkak_h$+y)}UteYv{XcCu7d z&#WsU9}z?I^(8mE?K(f#^QR!W99fEb00NC859<15r2@+^L)~Bw^>OC|jPn8W70P_c zH?14?HTIoGi13W*006Bb176^HARiyryL-<2%&MEd`+xsyzYw3&Ly`FO*HAZISr?6b zODF_PQ72PZWHp`c6`k9O3NN$r62p)TAWZ<3=58r~Ok@Q2JJj`ZQ5gvC^K;}0`w7oK zj=SgDSCG7Ug5_F=$Dr%VV2uF44lL*!xI?r6qa7as!EVRZ0Lcu(%=ZCl0_j z4XMBjJb|vZv96*A4W#9Xr)OAinI@Duyzp&w$G)O%LckJlUWS6x3~K6h6p8oPIm7^LV)PKuIq(S z>W(s_H+Ui7ZIk;j;xd%hr*pKSco7ND1UkLbtjsoDv#uO)x-#SDeWYE29JY~hW~v+A zk){!1s_2XcOIU8AEYX_i@M0-5f}TA(PH*7;b>vAPhv0RTmR6_vFqI?BW!~~qMfH}V zS>J3}-g<+1hjoxCJHo)ohxTZR>j03D1gmk6V_GZoDT z(6HWPcp5yZ9FdZ7HvsN1huVN$xtVAPu&qcFJVTXr!*)xbR2KA#^_DOI9M(TeHg*i5 zr=r7SOF)^lJy-(U?0>?_ywhI`ozaS{s+J5oBrrO^yXltr^- z$kPS6(JNt!hPJ!p(?QYLt4`0gts*!rq9K~q4bf0{B!8jrFY4Q?v?o*dmg{Xy#dI zvR>I%DA0C9!>}Ewqc`-OG^laElQ3eDkY}_Vb>;aP=qLx|Vky&-+6FSft!+KR)LmVv zFil1`h>+DY_cMBB-`onO0}eOX&lmwn3eastbmU^wwWoyMsSrso@*FfqgVdtKX%u@E z$UKqmY3L7VpN+oxzg!c=&(dnGef`&d?MMIdM}PBg`7OWV-}u*WZf-vIv5)=b|Mf5Z zw}0|a9*>9L{yTohLy>r|w42_FMQb5JU5_i{>lzQJx!CV7ihgDiGb;zF5+9K$>U; zz2Wv55J)*JMepnlbysiFs{7~Y4P|0E_SznLGkaC5km!!GFcl{e9lctF zS_7a|l#47GF;Y&$Qh#t^^RqBh4mJ&=F_<=8=c&{ny_|3JyDZefFx!k@)Tt; z3JM6Fyy)xqlSTLFWjk5hSteY)r1?7N1QvwtXKCenzOY^4h>BhjjcB@i9W?C~=JHIE zW(5OPF(DVwP^*rQP!^gE^Os3MZ(bt8n4E4|k&Ec0fs9ANUe#;Bg2w0>-Rc=_Lv&a| zJ==Z{%P2EInCtNeEB%Eh;V4H=OZ09E@4M>8?H&jWp1GL_L^mk%j8sN|YwX*;uUyY5 zc1K)h=EKfLL$5gB*?vZJ!C*eT=mOO`TLbMPs4WK=(Kf*7J5s@X1gsDJZtrNj5TJ89 zs?3%qwv}TDkuopCd`H{4pRwKH^g72ahm;xm4mnc6ay_0BdPUn|2`OVbqHg3F(Ws7I zp$^Xq;rz+r9eMbWy(icA{loA3#lPei|MUtm*4O{`-}c>q<*)qckN)TvebE;^6p8o3 z+C>0w@NkgL$tujmM&VF0j;xyL6H;CcC;M| z($p&YZri=xKZ`d$iBec*l;YDeJb-G|wlne!1qjSX%-1N3yudQc9I3P((RP`;Cz8<{ zw^K1*6jPt#(w_=wmIzBdqPDKC)EjbPUD0dG6D*-D<_Vt0t{J4!EEl(l8a&-I>JFOR z=n1WB2&>Eh!d>PBF&~hhV0jdILNpH9SoAST9ss3U*F9i)nwOcqsyFT@>}S6A45wSR zhUGx>3q{#h@#(K@1n{WXl3c@8Whm%=eulOm zBp5~GwkkS2$(>S<-Yp{)%ZI^f=sk=`DJwd9rRSa|*3F{j(;IoaN2}=7w>y_0sfR4V zbMzLL`0|JBaE&~3Y=}cMbAC29O|*vf4)X%@7(SWX5!>EXr(}I-M8}cHU6i7w%CdkaoWTeb! z31*@(F9Je}h!%o+R?j{GxMcsykfxzofM<-W5~!4^0k7@vXy5r1U*chK{V6N!XBhDJ z%m1}s{_WrTt^e2ee($gRil31~_wC>IZO7yBBVYKDha&NwnMnY^(oWcR6XaejxnZQj zfyC(<_cPo{gU=*I_;hfPZNt8*X9)yB>@8ImsP&n%xr==nV?gb)4BX zA21y?-Gn88l%j6vE9&m*Fk`;*k&$32%7LC`hPqRo(rn7HqC=qT1v81Y91*ei9$N!M zvbZJD-4I|sW4p(C2O7*_W^G(}9(up)`K+b|)7)pJ!{lvE&+LjR==2#vB!RW}d zXxLBK&xm`}9jyZ3w2TLc=-76wcNn?iy{on8jpj@vfHuZNpN29WU;+NK+3&IKYE7O#uwS zANUdn+#P*KZ-@q3PqWh0#RedPy_uP-=XU1#SsKIVwqrY?chNX4Sg!Q)=kGA($$`{Y z^h!%IXWK8(?>t-E*q`U#5gnuFlQWPN5p`#8=7!$bHqbe^My+DIXP%Sih>qwOy_Zi> zXnRdj=aDS5ok1Yak!F?&5)_w4jQ|3zq3?*!^)@ZnvIH8(TxUC3+oZq{^(s(iEqgjNxuGGAgLdLx>`Vd+9T@$%LH-waZ;%g^_WlraKLw|kEH$9%+e z1(5sMQ?dCl`eUJBU9moA+W;q_eUpMiVlb$G<0dgwww{q^0gQ)ax_7-ie0G`;Ie+_i ze&_H1#&7(#Kl`oU_GiC!yjV*4hTrphe)qrsdp_5m)kBf^dA!d+0I@t~IaqJ#jlIvk z&VoBoH+W(v+K@#;X&!NxS?Zw_Z;2(NQoX}!Dxx7z@IK6RvIKR949aR~JA-O_fITm= zq~24n6FHClg@zW0ru~doFB4z|Nv0$KYS`{!xkPXUNYoW~uOk&s*T@Bc?w{k6|5Wa1 zRRHHBu3s9y2!M>{BSZUi&$?+n!Ay@npmONv`(~v@w<%>yDVmMn>QmnMcjlJ7amEyG zHn}CY4vT2L%WRl4DnVpNndP~|p>T7g!oKr-i|ro0F(vt==>T)&MIhQ5=X;BG8UL8m z5+1)A(=jXs{la+Xh#*zaXzqkbfY5ffUHge3`p$ht%Ksltz3n50T8GCdi_F<8JfSS| z+{CCAZAWzXq^tLbF#a7m^s<)G>tF(+R}m^#ump8Rz)X0sT)$`6s~>#zFZ{*t`o}-= zBR}v1KX5*sUVizNFZ&f={`m3Z&%s~yp-6oCYkY$DT1ihiTVb?4+K#fUFe^7b)TGd5 zpk0iK3?LD?t%cnch+Qcw9RNZMGtvbVgKhUbKZQb`BxszY>x$OQon_H{4fo!n*R!3U zb3H*}1pCfBp)6y^0j_B2qo6o+E@b+mlBDT2w}tC)E8y zQu1`652<51sCNKJ6Am}<%vP;d?^O}KhvkXsMHE;vMYEjiUBFlX03ZNKL_t)iQW(uZ zLtwi{gjq7ukf4TC!g551qBCdrXj`j$obOXqCrC%%`+BE%Mo;i;Dbox@x`?}GxI>&m;=p+KHAUteM;9@e|FJ}VBC@B4?}_tMKR zedt3Udi#|x`r-W3*6cwj8$DkY0fIe(@DedX% zC8Qa3MKqY<{Ji}0 z53u|k#4!8EehABT_!OR)CXzNvZz}8!r#Eq4(c0yoccj496_Q1V0{iNSOB8l0$dk%K zPe@Oc3Zp{+BE9xcj(P5M^K2=>oFivDx)1=E7f5P5hZsQ}X~J}1bd{y$LxBEH2GNW538L;!gIAuR(r z)O+t}>e;)|%#~nOGO&hv2!Lr1bnhE`9q|v!i^xGo>e3bfkd2Iv2%@{fqE)6Ul&DGI z$3F@H^HF)C7vyP{WQH{NRJc4g1@;rR`%6AE2vBW@HUR96+r6TLKyOIF?H-<>P&oiX z+xX^BxB$YUnTRqY&*53Y@VQP;PdXfYlQ6fs%2vM<1jF8p%sk+-NIBg*iklSD+(L1N;X%hp@G7ynT&rmpP(C zvZ>m9L|TxFB19q=)a_z0Y#V5Zj@~XgrgayoG@;DN(_7|`PqWGXpl*6cmG!eyUH*^1 z^|$`WfBc{Po$vkLS3mgbLy>r|_L~Ucyw#dKxdl>{njCvX-4wAHo=iyf1UmApsJvez zDeXK$`UU)&BT{5sK&%V9Ze3Zh89} z?w@(vwcOyztD28m9zkL>o}c0F4LpBCZDa4T-NT#^A?X>X8F@n6AR!gZV^A#IKh<_d zo;V-01JR6zR5&j<-dLVZ;^>ELC-t54HPVFb7VAClUdQPv=y*{y9or5>14Aa5U<6o> zJs)}Vc`0SOcQGVKK5`z)C;E&QAc`*f`F^V5KrehQ@OBNkoA(=vi z*Im7`?PyhH8lw()VwsVOKq#buW%eDChLetl?KGNEnrDJaN0>8um((ii`7-<%5#?Z{ z+$<4DY4)~VbiL7$rYHxCj_HW)p1p#A8{A{QLY^N!WbanH=`F(F+vVlqnLHGUcca}z z0L_ww+T_MV_F@RRCZnSFb_&6-5@h>k=Ua;=noWz%N6^}I1-eg*lde!iL{!Ul@}ciE zgxX$vjlD`j4SDYL24?rHt;md2D!O@p9A6^HGP75lZmFk3Qia|z9dXQ74$2ej&R#E( zbJ5Y7?w`>JFW6SBCmbK)@CYw`9yP8@91x2w*g`aOcP9iz%F$ZSurwvowp&OSy?>rS z*NYk^mWxHR-ok9}z4h)2Ms=FIvj>&TEG#$Ko))A9hnE4kI{OY9p{RQoKv4aX%109r zt@XW{Suy&40sSkt+F@kRp(orZee6uFdZ<>c6^eqUO~!=u2#7|M_ti7+?f~U0!x^$XfE1N z$Bs+J!>8S;BJb&{`BgGzf^AFDNSjP<32kdW#qt=mkXrAe6{EGC(Ku$* z0QNK2JM1gBlZF64O(QFtOU5f7R#`+x+lS(l>O4Qgegcit5xw&6jadORq**FRC15dr zR@+-|&9nSqW;rD@0%~H{3*KP8)e#J*h$&C=;A+&fXc!*p?Vf2Ot6$)KKm^QSiP51D zNOMaG(b*c>hI&Q>NaO{1LffT&ab-)FX3=yU@*$DvoqhA$Pe1|Bm=^dAU>HFW(?N9A zbxafpTHCSRqgPA^c!2`@nGkZpw4iM)1vgJ%4j3emSnsgj!P5wol@v&rX61Rbwg?O& zdWVIm)=e?uHXhcya>9GKIXo1J&)9m5ozFjx{e-$Hf_cJx1Vqc4k1-w5#|9^<15M!G zdy|3YeM`|InwitQMN82}hV#bK{NQPtoD(=U_K?WzK4049V9#?zcyD%oljmEWpTi6^ z`2-4i0t{(V$}KN%RSaB`Dms{Fq(YjuQ_$qOF?U$9ln*cY@ujf~D^0sF^7q_0LEP>w z8YM!xoe+VN5i3OO6?KJ|lJbxbeTr3?U^Jo-*47RSifJ}a)^^pE(bObQ1Q-GJE}bhP z_Q6ZFzS7+DM0F`NqWUbs+(<%$5(o%o5nbj~U^}r_4z5PsP*?TNUa?%kvkGBGIeW$F zDFH-Np127#rOe|KMZgL=oB8Am3{gYY_Zi`B!*&Ov_ufu- zQlx0^Zt7?OaxRBRGf3lf-s@J|Sxz!1IhD*(&Y%+rpauf!aR~w$D<{#L+DSISoV^z8OlD>@f)hL;m9PZC>xsi`*cu|B21ydknP>LO?GBb?rhG-u z7dyhfvYsw+K%S6iN%8-(_qM^hZCP2^^Nca)TI+q^z0W@9e)R`h0^Koyv{XQdqW%yy zK#XA7Qc8<7P1}4VfHBBdQpO}zF^CY2w1_AgL4_(lM1lgEs*v!ZsZ^z^p_*u? zP2b!1I!Tz}{^=Dzj&HWpV_))Lk7$wi$xVl*w$IFLC!tN*s1j?sMJK@9fUu zRhd+vE!RGvR*)U@CCoO599RW}Y{K$ADC5bd1f9gKmodZL zK{JJ-S*#Oa%3NnfM4KHlD=>06@px>*ikB1PvNOweC{9g^1him=lxoH9T%eRjlh-iEX7>XE*f@IVtF1?sA?=*8Qr9z3%#ea!MJG~a({~E4 zM|qJIa+84%*J@->_1-O2`iXtTc+hk}bY-F~B{O_T8kGs6jwF*7nJGDfVE91Ncnv>s zo0hwY=M!%F&`&r0(;xaL|MZ9c$@@O})35u&U-g=w|F{3;v| zN1qfOrIvBmt@ggy@o87m+#qb2{?-pr8jPhN0&T(7Q&>*ipKI7-*lRjRopkY%p7+^! zV?PGP?o>yBihz51g;x%H^(A50-wv<~eVI{N_jR_j)L1_ms)%xo0?q*x(Hv72Fy7v^8D-1hcJf>2v-IBfH^mGL`MGXir zL!S{V>e#1SeY!vy2_c#Rj?G*Sd3Y!{qoF%t>q&KzSH{X{ETeoNu%e{zjTqcOP|5k8 z?mmIz6D-^LNJ<*^dFMBYcFn|=dJmv&1m*kmB;b-{6TO(bk&qT)?ip=icCK?TgE;`D zOgy7uGOHjAF!yqfzFdQU*%^U4$jTZSH2RL!Io&d)^@S39--OdCdG<|ggX_tn>FR0k zF^uEZQGgZ1iseK%NGcZ?zC3?u1IS*a#DZ5S)Yf*2SL%N0)d&>N;bhMlI${RJ}6 z=53w_b%Ys|Tuy>8?s7b*7e>=|ea+$?Dja_<8p=L6_nWO)A`DlE1m9XzPe5f zyK{(8;NIi;^b_cfFZ)QGKLRruFJteSpCR}ygSyrRKCK~C}n01$# zLmk{~qhec|`OLfU?q3keVTWmtI$5cxlSjkpE+o(}>@=M(!@g_h(F(H1dSG`qGXv0J zFeeGYnI>D{64ty=!S+&LHuoNxyE=Nx3J78oVcifm=QhekKLzGMH90ZWIv|)$eQm2U zQj#)nI$|WLWNK?Oy??NdJ&kQz)B6# zK%$*^x{LLQ?98q*(F@uP^T>qPI_yk=yH6k*%79@KjhW0rv}T(J}7ng{OOp zM!yzjM|9)@5ak0P)7?xreSocn8}Y=OB=Mnwo1U0k3oMZ-9jfn3DSqxnRGL}%;U3PS zt>dZJ_2i`#GaJq@9M(`51LkIRms2i=1gr_&s@Z0PoL0+dhUKc!L3*sr$cUt+SD2SN zuvCba3r=?tL9#Zw8SB6@7O#j@G&h%-XIEYWLCVniqy6j=iJ6(1L>kQ$td+Y9&%km? ziG3aOYFba|E5?1@8Okop*g%7(^@{hNMq5y-$_Ohp(iHpq?L=FTAk#{M9cE^3Ky)rw zxOxiFX@+61>6XU5k>{3Y3`S=v<=ZHikw#~BA^{>h>4HjI%IRuz3}tk+832bJN+key zz+_GU3iXz~2|zYxm>J7xWpFdb%Dy54nGn!VINjTfC6FB?%;5uF31nXqC}+0?yB4?d z+I{Ra0#1^UlAB~~c7b7~CFpL1$BMSvatTu7{)2$me=U&xX1eKDwGwaQCP_T+v5^ic zNyk*YkfQ_9OlD+A1g2uehMX#Z4Yy`?k)+jHl19Q6JY8u$Zs&)$866LXtrWEX}%18-jRO0dp&$MwbuK{v8w=zJ0d9E{QX$HTK3hWX}Abp$a z38tdM&2l)XjEqhNGjMvwPS0$1K=is1TzVW#%P1lHeW)Rm1@z|=2%XfJGUDPlGtpEHtfoIKjo{N`1Nn$7f`$DCQ1AT zfSa}zw9Ok+gV7DJ5r6eHHG+&zT!F_8@m%fzs1oQMNucRB&ycU`$mN9ARgH1-_TA?pi^c6H% zffWL3v&gh6D^AjjqM5>ClFoT3>*jzxiw)Q-uFE_jFdF)EOaL#l$N#Zw7 z9RdJuSRw(Y0HNecf>xXem;fMcd$F{2V6AIkxI&o{FczyDbxvr|!U>MzR*)rD-&{5^ zW4Wgn(jlU3js6| zMo+ChBr9eG)1dK!W(8vQZY5Y`W+XGL?(Fc8GLmK+gIeO$u$hD}mxQSfFxKUg%RPY@ z_8Jc=W4ED|5mq*)gOrTb`hsYr3FLahd=Di0YFto9lu=&TW~{SiQ*>J8{#K3$SwR(} zGqYu;RLrhN8rB(R$xX_y6NHcMb@Lu)c1Y~cX8LQ)s%m#ZNoFbocq7a4yrqa2E-Og7 zd-v}7`T5q*d*8Ucyu7@3`C=1=y-58?zw> zH)ccz(W$To+W?%1O`ei8b#WWOaM$#3Mnqc^hQTCML=UBzWx5xGFbwD`)+4T-^5Z>Z z2m}qo$ir>yZ%b(rW(IS$MG-bmX{Gz1;ZO`*Ps&i)iO32!i%gi6VFK;Mdg@us1`63l zpOXoUhQY*40mbOqESl&VcBiyj`~j8A&LkWV#njXXu^l z5$5tr(zC-X+iV*~7ahw{eML0Rml$@cqoxZ=@{+wHqLhL3>~lufa%oC>r4q5i7Q#@9 zZaucG-o|C2f>tyhI3BVuNTrvsVz5n6meF8VN&&AiFq)wZk_-gRhLO>5d=hQB9t)1P z2~26&YuKSqpr=_z0)foFERi>x>_Lm~``+*Urf>Mm?|%2Y&(F_4=a2vKKl_#c)o%AI zh19ow>)-sAH@@+PO!puGngFmXc3x4bYoE)jr_g4dKgzQ^X_c`maSvq)J-zf6B5`N3 zom(kGEfqlTEv3RBB(bMjh-BSp4Z|+Ivbv2hGE+@DZW#%1V<86wl$`Hj*dsd5AKeJs z+(ap8yn2c>lo6S@e4JO$@NgSOYcnO55d`{D+RA7$2aMTDI}wl-D$mMzW(C6zrJ^_V z<%~p~G@j+Kvr?e|KLw#KvB%v4s)--{22uy4va;x`od|Ez; z20&I(Y6=O&SaLY`>!f-;wz74J0VuoLni9PhH%6;%Mqg9OTKO!_Lz?JWYcEq5ixQ<| z8HtV4?L@jc`U*EIgJ`l+2=rhE*5if{V!7Hh1XXvIVc7s`++Y7j1_MpzBsLNvFQ2&n z)sW^zb=T-Y7dYU?bm;k-Zps&8y6H!L_=msd&wbS^Uh#_G{|ElS&%XK1f9G%i?SJu8 zKlS(i{&zm~&_g$H(*ulZ;@GnqXP{@Dc}s^|zVQYYjGmL15$zWH+34LPmy=?(tK5{t zudEjLQJtlxmoA3YUaGm9Iuw%F7w@ag3xw#3wZaliWu~Y!MP`SPUTNkEMu&NpG3=1$ z0ptFWts^3dhevQ{smG^z?@1`Hr2@wZ;~93ha@c7+sLg7tHhZG^7@(!0cP-DL47l}h zo;?aHBny$5ZJF&^-kcF7uF%%9Uh#DAxtGwP+K*Ev4OylIMN)+vHKha^cW};Kk>TX% z9Mx^T+@uMu4m=#-Q~rr_M&23ayJ`>;=Gd)*k2ZRWCQ5gWzh3O1lk-;`28?uAO`4TjE&G8UrYJz2y zLYzHf*%-lCA*fEhT>D;ltYuR*|Df=bo9U((VSL-Se(NWG(kK0c@BXe@D}ev)2Y>ME zzWQta)N5Yz-QV*)=jZ1)N#cQQNeIB9SV+Y_t$`lY_HxJ)qf1jI#hN)+kSk+hS%VeEO`7m6!v*8fed1{NSK;qKj zMdMlS@9;WJ8#iOXRDjxe%RtG-XedLs8j@#tG*gn07gUcjz^Vj8dN!;llrc8Ftc{)> zAp%}Old|{Fd<4zhOo@$avYY@Rj5L@d6YYfMNHdiQq|7nyvAZQJP1Z9LaDt8$oTLmE zDg()ku69E2Xs1Hi4deR3il2My&;57*!+*bJ2mpWhvp(yQM;>|o7rgFE-ta~L>vw*~ zd!OGVi3caT0N`C$eH%^z;Fg2I2vdZRw8_&AqKBCh33d!DLksjwi0GIK&#M)5UMov0 zgjObAoblQ6ziq`YL?t2b>!HnkUE4}&&m(2ZKh^@uvj3uDDIm%ibBWdJRK zgsm{at(5My!$M9t1Kw9x079QVBP5u)d08&6ttkNYMs1pgdw4-#Mbk9F2V_%Q8NCo3 zr_E*+nUv*ti17@#W+vv=bIQIAu}b3gpHk0sfoTxQ5CUdkszGk%P*O@WK<3rPT}n5s z;ODcU_yVl$ZoiLzx6$;wKJ`<->972iulTYr`>((DYya{$ebY^nc+g^-VVMd;FoU3; zIQCe3Lh0F2$CG6X49;C8BqIw@vfXB{70B!noL65-lG%|7E5!}-HqPIWjlf9PunU?Z z1&QYBBZ*2>hZkf+%WIwL=%_oI%N)BqD0Q=iuxL0w#T3RJhJ8wq9El9f3zSv|o6bYN zQN4J&L|+jN5qR&9r!*y}Gr#p{8O|cKgjQ%sy6titEjkF6!JoB>elEDFc=U*jbYtC@ z0gA5Zn@nMVo2XHYx8T)`5XvUHmzfa+GTNyn2(uzHfF6Ayd?TipK6tCZYw z^Tx#+_8KO5Wf=izvr)=~*=9STGQjNGRa?4Yd_7?CF(30W-}^n^^Xkv}WAA%u_{=}_ zpMK>peAPGprEj=>`_4FyH%a2bYf0cGJ8$9=x#{(7r(!W0x%5b3D(2ZNX3#?!QX%TN zlNGkpfJNLilq4(Rg{Am<1cADPS7c(CHnc}VHy8!5XC#Zcjg+14V!7J56d(a&v%q9w zwmhAr#Bk7ffH{|=rh}$)W@N@<<=8bHY+zb%JrfyTYI^O%d7Em7ZSC=`t6@lAj(p~q z_;26j>*?Zf2Nw_P;$_|Hb?3sz(OK3jWa@r^3D;ABtgmPkZ5G|g-hCKQYONz^Ya%lt zFv6n|LBOnd9Z7O+lX`@DU$#lvq;>Nk!BN#w4}~%-VV*3xbxjD*U^F)`o4tfNq>zgG zkTY#?bw&UQkX8nvs!6H{ZmfthvJ5IilrsS-YyyQ{a-dL9qExgA86q})5lMh@*sJa` z`qouKUumxC44E1ZN$XO6AUWcuag7hmbm#?WT>s}^_FsJdpZvT(^y#1Rhd=wXzx>a9 z#e1KB$(MfVdmew{?|%EYPt$ahBp$$+L+Fc>Lvfm&x=uZX4KQalERof#dnMR2T5<)@ zVa#Gvokm9rTvKZ@dc*NvSx-)|h-E0_h5zON03ZNKL_t(z@lv5AS(Jsr^_0iEk?>OK zP6DOk;w2KV2X!Ez6r_~hJbY}45WLF?aOzg5K5^Y;2NR;nxHd&&Ul1z<(5@B2vr~!vElg+E zT!d(hUfYqqZG1!YwMK_mjeBlBubB|CuLQzeHgLBu*|l6@zUx*2sEqUiWuYlMGP3ue zW!>d?h-VE907}{C9+DH)%&e4QsOp^WB^~BlU%h@HaMMlW8ZY|B^{4*s-~G4#&bNR4 z|M(aG_kaG+-#1AB_;3E(KmU@KzVv_o#&5hy5)T&K1ORx?5^MJ*L+WlFf{||5;1Yo9 zw615zRY76{s#91(Bnr(8PFCmW)$2v#BBL>a#z^&LuIhGthVvE7F^qP&Z6v(Ns{oV% zWn^Em+=Dv2sti$fJb%k>plM=ju=GkkVFzf-M8_Y#giFQKVXFkWw+zh}7Eryn54o99Q=9~389NKjrZPfR*h!*N(bvo@HKzeIBbDjgs4GFhGiX5F1qfwEGt$O0 z42ewk1rmBgG+sRo$dmwU9cy&d5p}2Sq$eV&IwcFtavP!H7E7NGu^@lBW=UV2*-`-(DMcZyg>SXzwgsN?e~4!ryZ}3|Nf``^cTJ1 zv;N3u|HO~~_)U^{aDo(oM@vSvOi~FNytomdGP14ctF;EOSxqmcR9cziSL6VUHaI7y zq8SYvioIOD*K9y_WF3S-bWP`xnE-};42PhTbc(&9wE|&x8*MIq=JA;lPrwVzQFmdL z=Z|5SxX#=z8D3=uuQCU1larEpz%ql;3X=0BPIuX6l@a?}*k7bo)XP@YxtP)5MI zR}4EF_M6~`qMqd}}=!rQP%-I>xAW*#&}w_GgK2*{ZoK$0Dnv_mmBOR4v0kpV1u z)024qu;PD5vgt#t-LyZvf9b}@9((MMzWUWSN#a3zpAo>N%FVWl>eQjkI z<2lA#FlQO%C9OzqFh*l<1xls7c&W@a=PR_i0zORey3P39=O$5xE;J>eq0m?gMOv5E z*eu}+eGttl0-H(S8VKc9ag&Tpl9h0pZ%h$(C>SznGuUuxfWk_LH>(g!tOHz`Ne5|e zZq%@A5u_QBAjd-rYpQL1CO||>g)kbZ6jaQ5WC*f>?nW9mY)~TI+)}w!0A8AT=viS! zq$>?sVnwFR0v2=uPD}cYD#!D_g#9k63q9N^5xQ^;dH6Ec7J2^p)H6m0P|JOSM&mN?$2(JEP@u@sP^BC$qaTi;}K)f<&rs>WTH*2vJclLvq<6rvid(U6Fw7x^@Y zs&gMOj!E2E3Ucq_Tsu0v}L3V=G`cgKz}UtvFGvy3%4bMP081&&6{qVyNf6T{z%;9kMj(5D{XW#thTI+B7_>cePcfIScfAbsv z*^mCS@Be{+wA=4*lEjB`Y+%6NwA=3*9FQ9&oO<>|lX~Q4*%pZ_g_G4_#2T4GPlQaU zL*cMZED4rfZH+{?Vs5og69rnpBl46wwOqP9V?XUmMq~((4|R7oRNqQqWb_0Tq6dp0 zHx5iJS32J7>q>RMde2DFh&wM~nNXQNm>HspeoTZkm<{TtfR_f(j1C64hElQyAd7Kw zb3>zFtvLr$gsi%4RPN`FqkIjuD80h~w=71BUX4Q;+z3qDmKLA{AqgRjWlIdGPA5w? zW}uF}w>UmMMtAj%jLq@j?s-jSkxbg%BAx3M+M?-z`bc=4dv4=NU22k-eRnuugaK-c z0@ylz}pEf1wPv1+lujr)mbWBTiUi^LbJoqf7}?9XDT(73lI= zqX9PTQ)-Ep;>~o^^JqHsLdI|T$lvk{Z~uiq_1e$>ny>r1_f9mu=}m9?!q0#0t3T(D zeeP>s^MC)#fBE_^c-?n@*LS_{^{>B45+BypNCJ4O(=zII(DydW*2LTul7!-#X#0Zd zrBLW=XX(PQF~A^ei|;b~vqwf5;04hbtM+$>!<}jlHL|0wTu;cv?pFG)iz!jZ zdTJI8655QuT-z^?d(pAZxOy6OLLD&_k{B-l!dzxpPw--Grcxk*y_B>NG6SU`vuxWh zyM(=&Wk+ABltgo6fOgv}Xf#T40q)HE^dwI6B66$oLuy?{N?wHC`lb&!78`w&(_>Mu z5KA#LBb=L%Q#OGt2B-|~CD(awJps|It5~N*!Z(K^N!h{*rqRr}o*btG#PtL#=~d=L zL8(-3X4EQ{*oUC(V>|7TrqFs7i_!*AUIq<&Ns&6it?ZMo%+cToMi*%`m0^WNgaL@y zZW{(p!!RKgotYWgHeUDrX2aeua`J28CpXhgFP@vk_kZvA?RL9A{}=wk`wGE+!Y6#f z8@~99{?_08w$FXdYyRWk`8z-TGe6^}e)6YolEjC3jvxV~R}xF;)YXzpCV@guZY1`F zlQTg{EizeCKyQ~3r7vbE=JWw)6V4yrJac%wi*|w)>@Q+G3#(>iv|NssA%*6XwUd>C zHZ#-8$PD(SOFbmX%U;8IiN%eq6KU{@Qjmc$D^3_mFQx7X7({K|dWQKiR24&CD^v{Zi{?v2qnE6^UM2w!vae%y zv;`U1@JXe}oM)CAJ}9~uROB$_5%*(QDRtT)%Kq3Q1xWSEf zc2dfmF{^>D$nN983#smyHXEoc_K)QQVU z$4k&qDsjm=u#Osb0igx+XdwE^^@uWHcM;>6w#!7DCnaMo(U<{9G_i!2ITcnD4h*K^ zW$Z#vsf*DZ_vuMIerytYs+gstCr*(7otWH<(kNvLvJ65i3d{*Bq!W8LY=jgzmDkd_ zv6l4;>j`F{!CXF|H7@ti7YJqrW~gJ@(4~OGC}Cw`8N8H%G)jFX$T|+BQeEhRgqCU{ zBddEcB73Z}Nvm+Oa_t;NgTxGYF_PKfMS#p_8(KLNnD4{BBv6fROe>N$U9c55o$CiP zKI#=8{hiKU`86NRVCN1I%Myy>>HW;M>}1@V6a#natMH# zVcfyIN5}{5?@&rmk(TSm^hT+r4ms>WvM-7*uTgep=71@SI+rWldlG$x8LVsrTFj9szA;G;8AE3}4;*cICqcfw1NFhFZyP0d@sM_N;o1~(^D(Gr7~eZ9@$ zVk4jTR7-@*4z~@Pq8>wPiEBoJ(LfT#z{~`@7)jb#$q1y>r55U`Y8;F03O6%ai?$gG z1Ir}%NzUB=l3S@LXE(F z)@OhAU;pMee%_z>+|U1l*S_kvf5J44zxa-KeD^>6t~b5uP2ccM-xv{J`_*6lfBx8y zz42SVYM+UzxFEy)5XPK{Q9r|qpyDT zFTDNjKllUx_)om%bN`di`1BXW5qe|pdJ{Ks6ThM2l^^+0KlK0n%=`V+fA-0*`cN9f z{p+9q`8U7$&Bv?b%Rl1fpZqDGvbogt-dk($>sWVllX$)(6?Z?#6v_%aJjV-8$K#7( zkom{{EZ*nzqRS( z%k4k%YkuW*e$~hQwwtYZ-}tpkvzyiXpjYp7Jl?F{ujjq@B8j)X?QL)U*|)UT9)9GJ zPyEDB{I%pdZj!`@ZFm9jv;XhEV4HFGiM;y+Qrw-PRvs?2yDc(dibf@)nL68o%cpd@ z#BzefJC9=6UE95xql}o&K;O*K;1$EJTZt4hGBaURGJDYJ#oS?)Zrmm*GsJD}&Jq$Q?>VYS_V?v2Zye8tN2f zYMYD%L`l(=kyfLO-AaN6{H|Ah+;c49TYvN)$Q<)gci)5FV6IFZ@9B7%$1B#tVd5}y zci{e||&wK^RnoHhiZt@t^dgOe0O-$<@85qw1AiJV7T8UPo z!ABi#cdMynaO@|vrS%f#t51!krRFXH)d&%2P?)DoDeWL zU7_faN*PeHjNuSqW(15J46Yys9i|07Co4sWW*`ueWx5{gG(!Ty+U`RKlNG?YJL7av zbdX#Z4Lcn!4CFBIaDhz=eRm6W2LkJyPd~18p#^Gk+~MqkBHJu4C`DUVP^zsk$9z(B zShb6X0cbgCIian}(0oD$c4vI(B^Y-++=AV)hd;v15FP6Y8R!jdm4rI6Q~-#;=9ZTo zPd~ot>0*C|>0DN9J?fcvqpzAznvdC2ZAGbmamRK$))C_lbwH^omA%QKaSt;dFJVOM zSehWL3rfA&U(fI6eSxN%dhf4$?Q7rmuiy43KkxH?$ESSqty{O=`ObHK|M!01U;C?n z^>Em~{ta)qNfHkXl9d2(?{SWM(9|23nO@-4va8KlPs#+0yK^Yf7tVz4vM+#9p)z1R z%kxLfiZ)fHXvhEo5)zgx+Zrk5+pXkRKfsPx)I7k3X13vPkKs4IUp0(1@tgrFw{~) zSTm1Z>*h6gUugAs579(ZoiI!Qc(~yH+^#pRkb&id(>)yTUMu64>eC+kg8=qb(Xb>) zq@a!^m?;Uv4nCkx*xgB`o539dmFz2e+myqv*PO)F(|V>U8qIljo4YfB=>x}e&={+Z z_t;nN4wxqNRmV$sVWDh5q^|Da@-7wGS3UDoF2~K291-jdNX=Iw=@kXYhIv65b#@z8 zAffJXF|n^8=|wQm@FJ@yAHW^_0!=sl$PfSUzxug<^>@GH@BNsX z|LnK^jlc2Q*S+qhC-K14AqD{Se9td~;7~d4h0SgO+!$MD7g;84s;l!QvTI#7E}E=j zKC(9+?r3lf`;8MPl4MIobVjrDmn5BKaHM+63>0$M1uSVuR0yQ2mu#Se?9mLYR*3|y zAS1dW2wAjUt^}_Eu4{87F}h`xRC!R|3y2c<~78&NeM{Z2#8|0_ND1SYyTU67xNn^O46`M+|!nyR18uK^eBa zQbM0`^^DdNNbK+E_RF_Xdyue71?Nl5m+UJK7q-j-QJm)2OSIW{dxbfyia?zh9np}9 z-e5(gvaRY1#vR5zZUp|Gx5yV%hW)4C^wYofKm4uln<2J%-Rr;bAOFA)y#4KOf5j_a zag!t-pqs?7$1T4Gh+IZcX9PJGg$|KFayY1vAdmhinelG3gX%{t*y$~ zR990`Gpifw0D^5*yFzvfsv~L9W=ilPP=M$`hEGP4Ec*dMPXQPVe)UYfdJi&DDt!3= z*?X5>%epK(XpA}6T6>>!?!6K5J+jjEKynF0(}*e%ZdU{U1wgz+3yfr0{v!x1ny#|k zKp+8s0Jn{4+3r*W8zEVgE33X&MBIDM-fOKn2aSC)jgeeIR_V)3vhHkNMd+S5vG*El z&N&|P7G4Gm%`-Jw%`MT>U}QBEN)fj?Cl_}u292Gx#r)ohKnW3YcSx|JwszE{lW>T{ z3{^MJPlOJ!zi4#U#{C8H-Vg7oW9vXugvKCr1VP)nqAaSX`y3|v9dymHzG1C*N_Pe_ z*f-3fF)_Y_7g`Z{$A*}INOD{;c8#0*jybU3;Dx2~^vLrYw3Eyaog<@T>@a6e^&6kR z0$@UZ_*O3;l%WVND-WkXiETw&SWmEuFS!IeXMgnu@9w^j9^RsE4H^xvs_tP6&9t0Ug^Rx=0#LUdHvk z1DK()DNS>7UNyhN?9BTq4+-mq>lq(@q}iEC5bea)V5ZxPp5Fu1;dRk(>KjY3$G3cV zgR;PimNV+YH$Twni7~J}-^YEL=r1;Q&4K4{MUQ#hIg;!haLQ{$( zCr%pU6L+GrKVx=`8~UyY&%k##T|d%Gm{S1&W2YB;ctdwYRh(c>H(5aj=!(Fc^hK?L zh72Wfdcx@)pMC%meaH4pJt_vhU^!{Mz$+pEqMiWpkWKeF33|XQj_bV_c$LtTqb@^Ac=49f zlR*?vMY|<(qL@39Igk-TLR6HLdE@yl#|9-p2T(p1k_9+Wfo zPH)!M^p*#sG_pvQq&s0*{Sz?z{FT}{t!A^kp<$_7PE@Gxs24035UeZQdCt z&)pGsu2ET|t_eC}KgsLPiGIWEY$v?^0$w?G-JUUajt)9bkDx(<66>SPRabaLPVO(* zUJyI1;Ndfz-l$Z?)-x6f9J3NwZHazf9rRD?{EF? z@x#{IfBskh>VNTH{?%W!Z|M~z{wxqd0M@U5d25;>udP`GX=xmN~Caj;Cm=FMX!a3oqA5(JiqTp!b0N+Uw8TA9p*JIeynl}5l!k^!D` zM)Z9bdm)OV>@WBIfmbdk*{2rQr?<#yl%=rWpnzAnqn>zqa~zb6uI+ydcmt>&i7V%K*CRe;b-20{O~XQ@W1;X{`-IOkN@%S|Niga zuGh~$|Ki{L?caL)_U$j=cl8Pqf0kjB0I0MWJ7`4%`_13~GxRIyIC7qksAoy-6y8K? zb;iW8(RB~6h+#P@vK6~D0>rrS_7Ry`YAz3jzRl>7)$Gz7#2ylI4>(cG8-US?1T1Nj z1?{{~8Mzo&PaE65Z@bu8w=_3D*T+(Fj+qoJ7lWI@oD-2T5+u*1)`S3-=5yoN2@?Tx zc||71R{O2Zj=9}wwjeS9!5n?z>CGp;#IOIUZqM|hhtIKG*c!~~1)`4e4l*Os+!P!e zZZDiS^%q_T0gWAp7{UtscAUJ$jAkIEyz{ucN{Ld@-oYKq1!W;fF95Mz7!&(P?mGl5 zD;_^XSzxXVkWg|CK%il{U~Jr800;(2%L!KRJX$687tGGFYuick^nmpdnLGw-2ggc+ z#M?8rm;19+7Pdt%AJne^rPS@p_4N9d{c_j;%a-FG{)2z;kN)95`Var(|L7GYeo1PA z0KV3Wz`59ZEF!Gn@($y6&)e*`Lp#kF#awezRb@e235ZrCl{P`m?l0dO0(2bRMhx4+ z-v8(w@%Hk$E*E9OYg*kBJ(5rXOGZ(mEmrDGZ6T(--%5-GJL{-TJXuMHPQY1$rYD-4 zFAmZm8#nGBj&xkev+4<6F+28~AnsRq z!R0NMi|PsP>|5TRA!&Jold}|Si>w@|z)Z{?F*SGGMc|HF?wmJ?`&IiD>%(!Sz}$H@ z)>kpz_tr`LLVl{h`@j6%|MqYG%~z24qRE zj2JQ_4UieY1da6CxSm3!8KemS6ac9h71J`zQ*)GleV83yWHqhWa-yW@%;{v!DS^!e zx9G?nqm{grzi6&yf@*oQkdIWvp*zs)wM&hYv+_E!IqkAf(H?^hUsPIzpNx zkQ1fID(a$DvLaea116~=;*+sCM{1rK_m2QjR|zT=bw%G0UC$r%@_+VJso3{z}=hMp?N4uMlMpxT!}P`r?-$Sb`b){9C^DY_qLu2Qc`*&9ZJB0-o<1A zjRXk-MhNxOqu%R#%nfb9)0e0#a_~^bnd9k8EEm-UfYG3w{bt)U*N@t-G$NBR0Z9of zs7)Cdy8z@BbkX4D?ufPDh-6z)3MG{a0TEQHUvcbRj@fiwgk)P)7sSMeueH74uz0E` ze(@Xp^4CGTZ=NBJEBXs!@Q?lv_RaS#x2v8%XzW!|L&xpg`)Rem z=;Z^p7nB7~?HfjiyMOkj|KL}DiVfK-yXp1le+7wOxQ-5I59WX`=>^b8g{>@4hg*k}B#vGL#EgtN zgFa4|6c*=WHDrv@Bg5w)s8W2n915NzI;|2&7$Dk=*&{NB#b}07N`)Y?-!ON2ZSAbq z)Hi#+vR{$Y+Zi#HDKA!+R#wqqMx}d2Y1y}o_+g2bPjPJ#wtT^0fr z0p)Sr!(32G6G(3c!pp%~N@1o_ywuuE1QQ@oa-K9812N?dwQ(eFUjvePdhNbWcw{(X z3d?DkECpU^<*?L;GM$F*=*2k!;c?mJ3DF6t#6<29SmE1{_ zm5`!dLZDf5K@t5`8MUcV*jR#ZMArpq7xYoLL~xr4wQ zxPHWbH2}*BbCd?JATT@T!1{ovAKbY^(G#584K`R?p%|0&^osL4TOSeQ?t1|sC#>+k ze13p!Sk5SmtN`L1$RTg^g8stiul)8A5umu=lqo@8K*MsT88p#v7y~5CK*#0HVNU`W zN<}HkBm^t)1{&w4xg!MybL#oKW17UeP-lGmhlg2{4)@>XgwqASyuM}MYyG^un_fZU z&(BUG0h~Ylfyy#rGlPy$+KE>z$rUadSZ9RD94wkd!f}mu_ovm7}hNvbZ(3qCn33 zyr|z|^xL+JK8rd8x<0 z{ZpO96>(<}VcZbM2h(w^Q_|S)Jk-OSqhImik2r>6vQ%?#nWziaM*tW%Tt9NZaXG;Z zz&&mIuwEzO4RsNnv^x{2?}(ZG$~;U~R^`Ol*>9Qyy(SAdHQVZ*_i)x4#NA z%?@*nonyyLDg=lXbv;geZ7;ljt%LMjE9SuL8oTDOH=pz2oyvj?j!k{jzClnVB}AaS z>Lk8Dc=$Q|(%bd=C;#603#p8G1&Keyb4CMjs~3))%vK7NP#n6mvpf4u+r}7BqBOPh zK$R~n?U2*D(KCEpv$TPN(J?m6&dfBkQYFY-=Cv-(?k8@7k{pu6vBQkCA*2-nF{aEt zgBf#oi6WGPeM&G zX^}bht>l2FDM5QnS@VM|l`-c&v)?|kk~n|qIZSfG=6=`fnFT%QP=HppmmuhzT$E4xlYOJ;@8_kN~5s@IaTt zEH(qrU!&hp7Ldn|U9)4q9)9C+X9kT@P=Wx8+7HG7`i2;w@$u~;nuCO~;rapF4Rh+l z*H|A=mz*IP&TrUOx?^sPKEzfyg{1jxQT&QwS&r|=aS%xG?h$9Id){sIjEh#lVY{C1!y zCrOYQeT1oBDa~^7wzzpI)nrssImgxdp5C}V$Q%(yjLdDq49%Ea6OdGDqbw)2-`u&> zS}D2hUu98n@I=_Kn z{pxXeDCw|eML7||+yTm*3ihk_>oKiDzw!2+%;^nY?M|o#=%`CB57Vk>%y5L~1faSS zI0PR;&zu%A+aZ8t-*W8qg40v1Z>CrILbn202FGpQUSdQ^5c2aA+9_!yQJQFqK@k1M zx#4j5=o|VCG^~&K;xm>ab4GA~)*M_fRO0#`xA&+EPLDczqn~2<`O0qkY1mCaj|1a( ze&=_#ZF>cYKTkUe2*5=h0AgsnQko%!tge*X5o8vV0BG1=s(bMYch1{E<568bXB#_W zK!7{e2enHc8Ew!gYxpu?AuL46&X@11QXonRR>6ycNXvN!QwA87VI|}OhRT?*gzuZc zl)ThZ%345xfE%Y2LIP+P)Js8H_9=zAdnv|{km=bmM`q~uBJ*l4YvCp6Ebee~cXt3C zZq83HuD|)G>^IE`FIZNs544K?1&X_Qs#gF!uH@r}3<8LGv|Jedo(CtWEGQMYadga% zx?sJaI7YYrRdWZxIW%^S4uJLUHA{e{*>Z|GXI+qi(LE;Tj#`n^y}AbW4~(I)gQm!G zdZ=Ig5IU9&?qlQFKs%Ju%uwG*pftEsnJ@1#c1XB>WILf&%Rt{0amZ8X1}{22!CiCW zyFbSE@lP>c|CbHfU)fFn!ZPgV(MtSR|IL5>x|8^G)=0nrjIy{_Be*^?MuQGcs^(5# zP#4|vh+Ytr2dt7u;%V_r&&2jpL0islxcNZ>!F#LhRRy&6jK%F_M;C zCT&ju6wOOzK>`pOWe|*-gQEv{gHu-IkP%S7dVl%Emsn4#E0%|29K@Gz@Zpd3{2qPB zy7Kd1!^7wD!qEYtt?1i5VdC;u?UIMaqAajt3hgf(J1BqxWd?8b!m^|nWip1%or0D# zV(175q@z^sSKmHDiJUOpvsA|Aseh92KuIbR|ZN|UC>T! z7mz%?L4U!V%%MzJkuO*t0da1;eavsaLIjTWI0zbE71!VQJ@1v>^a>K+GfD&idZqh} zoZ>{aoUj!cww{Z-zr4=~wbf5gN5GF_;FxmEzF1-95r2}PTLC#Gf%JtInMt5hZmw3wCH8H2MQW)IBaUSZYTSszDPBUP(6MMc=bv*}w0hc}pwh>=>n zRH3>%U`UJI`-|Lzo-C$xO#?tCi`;!Cw~qzTaw!o#ZH~P}$Jp7g7N3YO-Oq$lvV5fdcz z(GJZ-j)NwPKm4E!n6sU5ene?U><`S*R>Z{mfJ`dy+@~>){}#}>J{*Y`++L)Q(B0V^ zhe)KYJYN_SIki3O<2Q(@aYLzSXSP+#88l>~6qFTa$VZ*u@yp*tzvA`*`|Ym1EU&NU z_jkkl7dnqugm?vs@97@m0G|Ea6C-nKsfCwnjq;o<)gi1Gf@TIlv=oBgBNA31My4>} zGc{FiphVTXW@a#^%^PCgtqdbHckEYgFW8@{ zymM{EUr_IeUy^;|D=NH##Lr|Y0l>*OHq8dbW|_LdXL$g92rt?8%sn!96!Kh~8=Kp5jCG)D zY?_Q6qbo*HvNYZuQvbx!@Z+x>|70pSJC0ploP^QK8Az?W|qLq6*bxs`X6J4ROzTx8^W4{4Fsra$5oWPN#q1iP$ zVglgl!rDF={`y+4^$HTd*cg!k;9-2g98@9(q60(>(%eff4}EzIHl}(q#N#|&`!j#^ zPblGZc~=%Jmn>@lvbEDi7Lel_R(AM~ssx~mTZ=ixXb%SKpD-$BqbG9`W#&r+08i3|&7^QVhI&2c%t|ba{6O)|i1fGA9PyBvQbB zMQM0=CmQzaJ)xRFIf>NloE@hpn4_MsKB_EKBsj~GFhT}dzfqw~C?!mg?ZJNK9lY=$ zLCp@Ol?D>~3y<83vGa%t*`M*@8}y%o3G>Qs`l(h6uT9!3Nc>DXR&xNi_Qa+m?xsX% zbj*=fqMnDjgoup9TKM2HC6HNG{_tN_ze0c)0T`pYB{pO6F)(iMYDG(q0wj$zf4M5Q z0@l)$vwB5YvbI_3Hs&_sW$z-_s)ATNYOOIT;5lr9skPPfVfW;QNo2n=LS+$)%0jqh zm{ej~Z2+d#BbT`5~!2r+3q7-#@cn@R%>`%Sl(!*zoSl#0?YzQOE_4hddh6_7}JWm^nbjv>Zj z6LNSuw&mysicAp3z$7yiNklyXm!FLE;yn zlTZSv^X7zY&$zw6yY#d(vt!ar8%G*LvFbK5jfLZunL+32Gg>)fe+ubt0HH)06*_jC zfCIH(=>?~=_y9ne%$PtAF?Kgzs5ATL4>hdPOe9jKn6smAG{OtZ(y?rZmDIii>25}o z6>8UZm4Z23;YylWS*khAk0UZqZ!9No-|=?E>?acB;UfYXRCIW;Fh5X^u(Xgo$nr2z&r#1Me(iv5b~dwKyuBkM_Z)pAj3 zX^t3*`(mGFKZ(7QQFWd5JaPYtWiWcn&fBx~7an}yOlBO78cKP+?|z>R)&hn@K54N5DDHy%6Xr93-VVGiQqFUh2i?CcoSM zpfmv^t*7V(tYJdthBUKAog7Z%xY^v0$>p4N?bB2iTOX2^QlyN0s0cagMMt)rvh=GI zbeb)wZ-$l5;skJb2+DFgbi_^P`V@0YqC3pXT9Ba_DFi%VXo~@6tdzxJSoJ4Wt%Xhu zV0M%RrD1kNCk-(WliP;_7Xh$TDlOySxzCu42}+h?qb3E056!G+l$J4eZRh^%6vtMSCIHw zv=Rm&)~7OiHLr2Q{t|O)4$NUkE~Yz5<@qVs$FLewAq_%K#U!*Sk)g~uE~ZQgnNty& z%7g(4AtzJCYl>!M%stbD2;Hn~!eZ-kI*~L&P)1tulmIPE#z+z%=^ZwtNHtnBT2ADU zxlRwAmCB`G8G~kC3NsiJ83Lx2=`F+pc}z)Nk{Bv7BZ-KdBh7q9#7LoiD&yMT|LE?h zItS*^k@?(Km1d+_S3zcsiMipn0mSJM zPd`vh^sD-&ast7}6HCLPd8{XuC6Qr8IR5U=+0C0>&W!z@fON#q9GmAvJLSV$l;u9YFbiuvHD&@Z2a(DQfl5;{r{yfl!$(?Hhn2Cc z1DuIsBmtpNq-AO(COl~%DTv%5@PDJ-=MXTS_*pg;qcd*1aN$SLz<{mxo>eo{TXI)#6K6|eKASCIHw zj5PrO->Gd@m%?+g<^0wlWH1I5Q%II#W^*r+TTQbN0=7>`XBonN(QkD=LxjIE&!$&#E0iz#bMox#=UzCC6A}f@vUokezs9sgq^u-B0 ze{<($dByo{!qOKf8dLjq5l&_tn;Bw)7kSaCb6LePf^vbjE?lX$#- z#r;|4ST0zOJ#8R`9$;eMus_4=fw=chVGd;+QfieIrBUITsBhqYm=a?9s07F_iEhjDy@WL2) z`3BLE0(7`_$qGt=UG6@+hiM~|IS_$NX|gO@0k3%aT!-3xPL3PL26NRF$4Kh`dt3X; zZh93?zk; zSdeDue%^!CQEeJ&Fi$nBb@euP?l0V4v_2%vAfn3b>F`f2E$2WC(9_B+mA<0TGCX(m ztCTDapa{&Jv<}0=7lt3p>Ldd^2lf|@%}9&E{&MzKz0FM0M3)t-ZssCucAH&7!UbyL zaE)Ee6P%yS%`w+QpSdPV_7g8cqGY6xg3VC zS{_hO5)=WLymD-O{u;Mum}5DytT0EvQHfHa$w~Pc%fm7Mk>9Lu7&jg<)DckVXky0A zZr|ZpAslv05=v#p!EPdOh_{JE1~QSM?KveZCt6iN&tC&yb6HUu&EXC&@T&7$oZdt` z^Vp;O6c6JoyXmK3H@zasD@gq8YDTtrU(Ktx+Wc_hvr-&92IL<@A%~$DUDC*zGUYjM ze*5VChSS68^hW0HZf1M$14+UG3X&jNa$4O`V|nMqI<95^ASm0}6nOa-+l%UA=Qmm( zRhHvzv2pWpLk4nUZ0ws34+#==;nNp9f7VkAqL4|O8G@L>4BOr(5CQ-?RTfzbGQll* zjLuHQo4LD3M$DKINxIi{S!g~&_9=(IvA%Jn9geM##)f_?NA`mfvqNHOhY^;{P#2ZP z7$A`eZ^9jx5YwtMiy+>qsKz-3OkYsX_523sE4+p`crhB07#qL)Lu^;@g&)5;43`vQ zzp6B@7dSz}9R!p}BBlhe;`E4j51?WDi2kBXlob;C6(mYM+;b5jZ+i0=bl^u$^iB0d z15S@P97pDc6f%zJJvSqu=kH$MukUpX@LI1R@w0f&Mm+&pk&ZZNo&=c(t&1jD&gNBM z)eQQU1az+6K+a~DN3JKBEwP~w#6U)y;X?K;1uU!ARizmX@u5;y8rm9lAtuKS(Pvrv zn_uT=4tfd}dl`GuAnYmgRSwa5gFR5@Q-lNQIDNk9Sgd1pYdNSu2J1${RqoR?Syv0p|y?<0vSMZZo-i?D^e&0R)u6c z^YJqsoQ1xl@03sq=8pY_m^4#6;mwz?Z`t=+uLggwAn`pvVTa=S`46rC*pbZ)040NJ zSx`?P2#e-?DE3_DDqd?Q^&`q}Wdbk1&2 z&aRj&4d%h}JpF1dVAZ*1_E6Hy>1IncGa-h?q!-jOOPdj6&KaL#`mYa73Fwql5rQy9 zr66QTnu20Dt+>kzGcb3I?a(2zEHYOH`iA`(b5ka*pe$G))XpF=wu4Xvfu+`?>5wTV zV^GOjwLB7121ui;uJ^#y=dZCnW52=5Jx&*hv}vJT7<(gZWLI8Uz1@Ypp*D7D?tZ-Nc8Qr*2^xy*VB7`7MB z;lPnC@h4Qg|09%UUdTg!1}IWeW{_rH73@3420Am80k2%ohwEyVnk)fmc~pC#l4K>U zUv+)Y4}W~9Okk$v46Dp}SSq=u=LB^01nf5vXeWULc>VTnD|?Wa>WaQ0s0`MHq;4PZ z@tb`4h`ve5%VT-_11x7O4_Y6)BhP2FGu#z3=QN0QF~XIu;Ov6ng;tc4edF~#0D{Vi zd4#R{r>AwV^;)kW@rzu?`FGymr(~oXaP z*ysgyISBhmfjpF7Zk0-nE3O~3U9D8C7o48Z&Ot9_p#i1IN~DI^N1naFI3nkals!)v z`Iyt2_xhkJ0+EodDvkH!n+vn{XU;2NC?!f0iy;e?ZIuuo9{#W^A)VQyv_oV&ch9%u#237H9`08(XPsfA>8 z#GsK7VsdtP<)F>G zqZ0??cc3hI`=vd7&I};cchZzeLdLe9nNt|tubBH`0}p1FLg4-|L;zA<6Fl!WV#yEnYx8BlrXa zAA$tm5ELGRWF=DIB{Dwt*_S!z7^An=YArmpxg!!gTHeQJZ?H3}wzk%qT3Yk6dT+JW zQp@G`E$;nSKu-SB-{Qe;`qyrF4>8@NN&F~Fi3Cs(T=e;}k-~9B4CYOAm@h-=O!YLA z%r~pFQn{V=>9^DB1nwh-NM&_DS6e6+NC5;VEHdw@9@09(gmDOP8#q_(njH5HIlYQ* zUJ8)(&5h83g5;AYb228(l!+LeQie!@nE@21Fo)~SGSp5(7WsbkUy6OKDlw!9keTbE zt=xkS8bQV|B<2tlFpOTtjbB_4jyqR65GcCOtHzD5-w@K%XSheH(R*ehM~P7gmwZK* z-o9CIoLhYl1gdB4&+qGE@SPU-8n+!@m{Z4N0WFoi65g!NC3t! z|HO^HUuLGPv~6c;IDIsQGPOOW`AChFgp?E$kg+nMR5cd2rfgme%6>ykQ-B~BqlR8u zf#48*(v)iMNg7~)CjnEt3|WjZXCGrquu=tcghxu#a-d(eUB><~e6vi`1U*ZQR7PYB zMBE1tRfAVIH5%0ljUb{+QO3=4Dkd@jsqFdmQ_+(ashG1E8j|yl4Bp>}gtvFYj~JRA zF`+=eqF=cpyGud4z$%t&It>zmvSMQmI9_CxX1KrVxUWym{etZT67ylp@i(t}@4x>a z{D=S1@BjXP@kf97XcGUn*SaR3e&gR+oJ;dIy&Tr=$&7WV!zL18Ky#)9VpvJ(WHfTM z4S?8B14)f z5GkryE1TuC*)zYexNbRYrCN9uMM6s6zUE46aA&{z@rLghQ;4w|H1-Q%Fn?zsNdQ$h zlr7s?b%TA!H_gE8o*^3MQSYxnVjKWa>N0aB043M=w(j*deMsY0*0*4ex(S5DrDKo4 z+b?w7SPD)Tc!d?PVJm98ya_SvKLJ zx&EOl|5Z}cuZ!Ju9LFF1!5{pyfBH`!lf3PnXK*ACXSVim@%t^DXmsD!p zaXUOiIg$nK4An@4-p{5!2rp*48LOrd^a4QUce4>$j5AZ0-}dL<5g^GRJN?v+uJD{v zW&}XX01%}K;GBjua(D^WLK#xC?@D+{-`sYKiPc&D6nyFmIBtRtIgp{{(_AkLrujk*;NO3c9+ zYA0EtQluh~L3et2_rT~kyMBdnfLydxZ5Pon@0dd|LD39jU^(?;K z-f#<$fZQw0RrWNaWTd=3Ua}tn48X6+WBmX4C;#NX`LF)#KmOxCe!xwSdas!P@TZ*@ zb0=xGQ?4m>%tQ5bzE*v_guXfa2bchKgXGeyNl6aqrFy^B+B3Cp2=XjpTGkr{go7*+ORb<$gOyT3YQU*hLH=M5S3 zqUDA(559cE`?r8#E)b=O&bnpYxlAwGIU&X*Bq?cgEfJJdq&fD_JpaTs!KaIp_&$2i_wQ9G%fQFktd zgp#+feW~BqAVMoK&~KUt=FlAQs_o3@pWysaUbyo3GB6LziGGDww)5jH`=Q#yulq0j z-~aJH{!jmtfAH`Aoxk%x{7?VmAN*(k`J+iZ3IJB3&QmqPT%#%_94xBmt(`r`4xA*7 zL)$s6%sDN?tR+3%04j$auRtK8lv2uu(c`$@W!X+{-pb}i_BVXyDX(*W(!I} z17IYfNZsl)fJhy=2&!H!8 z&CkD+Rs}+-m^Sa>&A4(hvShFGj@c2z`rZ1i&VzNsaz@(Dswa@Jiv6PfS*3ZY#SIzE z6b!TD_BC!VrW6gQXINFKs(aK^wkKR*pW!5o023f+{f#l9M05bCoAzhbon|3Un9LIf zWkIw{Sr)KnjttGa`V}#zT|>Es_x;;%caHVs(`)FFZ7JS@h96ycaoo3y;X%6tkl z(r#~1DuOYKTef|$$b1gPaT93PVD50z2937i`RDWeGlzrzGgb%|Uof zn}?SsV?$PAk9+hZMjuwP4-zGNuUpb-jb?5J$;n6@GZPpI0M&3RR!E~RmI0>OnJ9!J z63TuMC^L-YcG^Zq4rL%+a2oMf(1OMGjM@mMSCGuG44WMVxzx*`+U@{n&xOv-BV))4 zOSAo1<|Nhc7zZeszo$%>won~u?JHzCl@k#;j%4+xpJLo~d*T26&vknhjJ3I0dHRI? zJNa~}@ambET`Phcz&wbQWbbg6lPob|W&L@S4T|?r(wHm1j$TAEQ)bKA3GED{uHRCL z3?tFbh>n0_ro`>?DWl;$t0>5$*u5QY(go%&ir=F6sog`NGNbB0^sJgJUNk|LB*(2*q#belp)N7kfd$J zZQR+fn5j6->P8Ttg!>D|4K$Pu-qIYUxq|&BkfjDqb8?OZ4=wl7qyOz6{iDD5@!$R3-~FHe*Z<{jIb`y9T>cucCfENtZn(cKPY%%0zePWk z!4E&>c7az$Uq-Mr7lfF$VhLhkg)RtCz^mG2ZkJ4@M1^Uho(@?=_A%VdXeY;ht|=H~ zWCAm_AovufFa$!7?js7bl$wAEnF(XUr*P}Bv()|BGZ2F-U`I+o`v>mNoCj#CdzU4h z3a?h&D4CMmDfi1FIJp@K(B3^WlsMjU9ytfUw3F!jr#jyF`sXmi#QRk}Chu2_1Es+m z6pV@fYUXM?${zc(&92f6fEgs*UwD5--PY!r@0J^aWYM+q>DJ6Kd(&GJ-gS%30ms%5 zgEkK{H%R1<$CP zGEh%i7D*AvnVFG^@m3VBKy=7?1dcb)h2a$F+>*^RZz&qn){!OXF_GEBcKwFb|JMGf9!=t}TVZ8V=9LPVXG*{v#|(2ndwX^T`pwrFQJU&$di9)D zs=!J#OE0^5TA7){%5~;Q32<_AdK`q{^{~2NE}6{PoSPezIXe2yb5tYB=JmW$INnSF zbC}b}R`Pi}0x2lN6varo*XH}#2q|qjYs?`e&BZjO!BiR+mk7uRj=LW(kcO4Gz2Ueb zrNmvwiNX%paL1FP1{*8 zF63=?jyp(_synQ}muLVALG`|_s5AhGL8T;GMcI}Z0!n}|hlKm}J?-xN5vLCzH4esn z_Y!|sggokpftwzR>qnFLvF;)m_cwzI1)9K-h&gsBi1fHw&a$2M{Uq{^BB_*j0O>oU?1^~{(GkUqm!|pwrze61jMP13 zP$7yt2?Ls@!1eupq3$otWZhJEm_s3u#}&74eJv+QjE>VY_9w49GM3^FIVlK|7ev4a zFU-X8h8Tb_J0jE%ko@q|pu-!K9uv`d+;sC%_W%pk%rOt<1pQqrSen{S0Or`9RJH_N zlXK|$70g+8)s3a){seHzI0$5>A_Ztpk4`YXWWBh7#~TQ37wsPe<@Us!Wy!qfNCETk z7z7hK^tNS1B$7& zFd;$!qZd+fFABEP<~2kwn~}!-JsLV^dL=MZw^T|?1yUV_#k{7lIWj}Nr$F;US@aU~ zsZ@F6>^`O<(@U?X5d(sKarHVo?=L#8w1VwIuc!^}tk1uLx{HPwn0+ls(#p~*&(a_j zh&egCYF#FYIXddj6Q$GRplGP0n8}b6#-IKmh+Xol7y99 zUg9eR&Bj>ItPHCNi|tC+6_>{w2j+^jt(o-5{)_Bb`2|?#ty6=DymSndD@FIfRVC z>sLmShDDs+&N5fO=jbwLsj}iEAMB<_J(|Sd>`8(E@X0e`f?$f06s|;R;Z6IwdyVZw z4-xQYqM6z5^cb3*W-v!im@AX_mm0%kZYkR@+|K3&%HwvQGep8HVb=jC4PKm7#_V~$ zm*d40+Rr+F%I%V7>zuN7w#(xV`rDLM(8-J+KmNKp>drCyf1qyVE2|KnKygdxK=MpnlG5b zz=c*osdiS`kki;fFcarbxjzrVjh>-p|2}Sr$q3|>S88zFVXvqswH*>l({@R7D6L;P zjuj1y3`FN~#k?;)Im*su4@Gd^A>er9xINyo9~3KI$mRe07k~Zw+0TCV&;HMU{%8`9 z0stxj@OY^b$ee>2s2l5+WgnvY;Wmr8dtl4RZG)kIDC20^+26LcR;?S$mR7W1xL-8x zyuaXhfp6NMlLn>l7kN!B2UN}0)36p{nx3jz|x`LU$aPr)B#}(5O812S8ivSk<|V?=~!a7+qW$z7Xjh&8SM;jI9`D}Qj4^< zh_+B7B6G&<8Ho&ou!QIWyjdlN$qM)ZR+2>|y|C^mEmx~Le}35e{g6#Ucm&fun#2$P zoDsmRC(vf%UVMs16yq)xWYn72j2u!*gp{cft}bAdeR!EmBazC0(ZQAy1~jr5s#yX~ z)auU-DaD+du^>(6aLxooaM=(6a%$zTEruu~pn-WT+CI2kg8F2F2FOWn&)F{Sl^HZ+ z&g^%LZab46V2;7tt0|ZPv)Rs*WTtzz+O+L4ixX8Hme?*TTLPNH>`NKfufM3u#Wa0? zSz|i6xJHm*4lh7u*^v`v&+}&~En_jhAR)R1&|i=NZ%A8_(W1#K+L_Tss%-bEV`h5Y z+IHHWY#vy=VTooaRhb+&Wzrn8Bi^b~{ho8m%LK4uIquh_$%+}>jC79cj2TuXuoTn)r}tYs7I6do8BbKJU~M|o2&`V zQ6V$4dDNJS&KTI9vh5N^W>0l7toD)jxm@LNaywVM6gm>H#YVO0h|GEl^A)QpSTdQ@ z0gr=y$lTkRIq}V($qPw&l>h~2e>cX6!Q*ZDnakYvXKokYH;w~!53iaXGZ2I3AW?TN zE!c9aR+iHf&d)IiXP3lw4lq&xDp^RYmg7K*B9E)xU*7L&UqaRE=ie3$UI20)8g~jJ zIXjdpjQ}!`A%b<&c9z%sOlcD7AyYJ~+8p(?oW=pBgop&w8{5etA2;4#&-a&0zb*T2 z(E-5>+Xbb8WHeY&J7ac!`wPB(g$zh6)x0PT`;+!h@5+%Y9pex+ScT+z! z=h+E}5|0<5s-0&Fj-p_6o5SZ_OL7qd{f+&G*^vRS$nOzf`d~NV`>>lHlf$D){229q zOKzuxrMah4N^#JbDBj$waLVuangNHSF&*N(X?Bt@vNTwc7tje}4w!e=?q!J~2zU%+ z4Eh1@G5{xU?jq!%3v9b$!Yj73#-R}jGSj@o`BQ)TO@RkWfJQipKq2gQGrdqMZFdMU z5PEkO@gjdKWmDOvH)Qy@OA0HPqYxX3^$kSK-X}fk(~&C1&9H2WzQ`dtjvMJfdOu8o z91`fh(uCfH4z#oiGtEi8IPF}vY)xz=Buxn!WSD{xh-v05)o4j!TmejPIDf|Jqv<`D zA|ysoiM8$?cN|wlkcPTpyQuDp0W&U=6{u2)Fu`exgM#G9gUThz1})bPe??rBO(bJd zA+I{#czXvY1u^H^15t_cf_9P>wF|Zr>~>FXGa64qNh#gnkFPl12@C&meMiTu;CNl zXZ8#NPQFF#j8a;{hr3^PS2z@~+&9*lb4b|~7Gsk{YZwX8i=-T<&$WBh(WH>{JD)Y{MObqufU?KaPe!Iv zwoXqaXcHEK8;jA+kipwGc>9_P-!4nSCM%ioZo;vAQu>YeH{4&?&Z>KOV`=mP_sGmh zlD2{<;z$<4+*)bQ82p#0*SsO}-S!m%gtBuAbebV2GeL04t!smF5n;^>$}RwzF}g~F zSF@c~RP){K1Hc@r8&03{yZsi|DqBF?(XSpaKKtV>`$1pcM?IRv5B!`hUPK&E(Q#Z& z6Oy%E+jEi-Op($oTM7p(Q$@~R z0`s_Hn$2$auW$omDpRGh)CA=v_Dzzlf9YkVg|yj$in3`djKHF?*8N=!2q1$H=YW}8 zfr8@zgzX|LjG=i4jS>RT-6goI>?k|T1w(D{f)wWQc*}mEdPf9*-N|&1Ch@3$^?*YH z*yAqRynO1`)}mshC{zPkQ^<7}2GRi5Qff6)shEtJ3d;(TR%RmTZMz`nqzzaka%Gk| zoUn}MbbE%at*P01vhS}L_q@L0YOJSb20&KiE&Or^3KGR~!7@tGYdZk~Xw<*7M>WFD zrnRI=fHWm)S_aMBi|EJbm>o!FI^BqjbkMewXgIDK2T7|HZqdGwt)}xwoIdLF?*PI$ z-q}IR^{C(N{%ZXdSObzHPguYX2Fy`+*`jfQ+VQ6Ax5$JQWwPx!U0?;kN=Cx+ z2B&4IlTOKIwHzIPP=wS@vib z)%_;B%1*`FiesKLBOrlgqQFg7trU2Rm?Z`*Zqtsr-hc_9kOnp@bXQK8JEYkWvse%) zj;&Bmj9ZSLQh=%_c^xaN#jBY!XG(&KnG-@X25&FySCBe=POk~Z{DLJjZ?6dr(T!F& z17wCdFgs>XbDTcQi|R>Ul&N>&1s&o2#@jbIZfQQZr}XAzL2^;KzO!(HL=ZWciF#T& z6MXw6Gv!4zE;FT!Qh}KuGIQk}VPQ%TN|RT>IPOqjd(!@l55EZ#F*yh3h&eD0Lt+jd zH$bG2$-1}mN7a+Ib4LluAOJ(}!>AK(G(aovFa~23Me#?Ic+{gw{7tTa0r-Z45#6Nyfi4Rw#Q(VZD# zHG~B#6`@*j-AdiV+dA#c95g`=B9vgPyd8+Ie~#-nh|V0c%GC2AQIMQ>W-iAJ?N7iH%#n!&iAzp1rGSiy z3>RXK<|WP3O#27s!2N|WXa(j{B8KKcGxL^ZOW$VQ?EIPA8ROuJ$5=m`+iPZg@yBTH zD+N5gfi_q|B01Mw2Bgr8=R%Kxaf8>juV(JrKj2d#4T?2?NXW}i>CPC4_XRj4t=S?H zNX@C^iqmFRASna=j^p5*5>Oh>ALSJQ6+XK!jH{lsoSOP|8O<&_6NnW~hk8o$ch+hK z4alkcHDju5@Io`I8@+(0OdvT2B-9OchlC8p^l{8goj&OD(_aBO`8OSc4|da|9!=uM zF4J5)37bKHDxnO?%`!(Bhm^7kuR#KA>sp(0vt-+r<;JvAf&`w3PgPVT8v%=fm>Lt2 zu5_gvSw9ZcoWmfM7NR3uiO3bENs#8QS#n4@t*LlsK$?N1k12vHo!j4!Du8CzNQU68 zQXyeP(mef?+YTv&0D5RZrSep`Q97>F5N(3GzM&t+a8mVT?c(nCrI%K~(Yw43afX~x zU9~g-L_k?`*zAl>b17D|5@6_8j5|rhM15D@u{5?*dO>vDUlzd><}jlIUYA`fz3}-H zjyD`H=y%KkiAaE$2lOqz`4gnrcAlP88U*w^mYI?ntZ)w1UHj9!lgIIflU ztbl+S+J)!OmQ%ME%n`}#cLIx_h8!3NGFbPp3ds%3P|WHT{T2OT%ke{1KHABnN&E;k z=>YyLn=Qc)5e|iNHZ;6LgqxFH=MZ7 za{vG!07*naR66daZ+oP$k*%{>HY?3gq%C?vGJr0xks-i01JspXI3N0 z^~aE5$fS=R8?*{2nQJi|!NL;c3N9IiH)bKc)g zY6W>gZEG3;4fTX}Ry(ag3H$JK%VCntnV}d0IPO|jvPg@mNQERJg?VMn91jZY4-5u8 z*iDZn@dN+t1mHL08{S`FHQR1o31n&eVndF*q$e+6Q{9h1cY{DOk;lkXz-)78*|KcP zP)wlLwmX=Dq*GxtpDRL|loUdOG8&w-rvP#w5;S7{H$n#NPKlx#U24i9j<}`{6 zG&f&cT!Jc9teD+n+Dg%xz2x+Af;WHx%oG7HyJEP4vM@{Ypx}F?hO{Cc8oscTI2V%~ z3<{VXF|cqg66PrNJvEv{3>;UTKCs^~ZX{JU`1%aAm>5@#0|H8Y*YW`>8}}y&1VNKI z2&`?v{ff75Xr{7_OhWJ`A}RL*vg9cDZ!o)*XeVtK?ib{)49vk8@D1KzRWy`_n22NT z8)P*=^c!Moj>w>qIXOBY)=jH@miq48WrcN@)g`jy>LQO*>xY{pzQd>Rul?dtk0$YJ zea;9VyvF`1R(hy1Qm#TaC{&&jgqO|Gj<@~x?Fj^l41hr!bnZ{p_C=?Gd(`ta_{&?& zRCB9FCyX+}X%)#FjwliDv1nG!3KfmY(jsC`Ud4N;8aH2;emR1fkxZbH+|H6_rsz|$ z=mwg#+BU_U_nQDSL*_DH3fYYJbG$^~jR6y3fZ(Z#z!a7@R54ft2;{(**iACym_TU% zFzZPXGXeq#qgkfq;Y!X!vrC{G&L2>I7FLo5T0~BXBxqW)H- zH;{;xfl7JfJn;HUUcW&W?(?(mg*MC9aOVWab?U#%WprEem)DjzY;>(RQIeq%}IxpLdZxL!psa=-K|}Q zFcV5ub3a{X%V$LA901uiSE?_5pJTYf;|m$r@VPZZ6(4^KF?hV< z_AQjM0^;4`0tr!GD5z}Mo@5RyBp{`i895?mM2Z${)(lvU0=1cYB}(a>N6GnAs@fTJ zoj*YdD=?D~bG%O^EAm>B#OI%BjxrCwe`D8g^!63#YoNgjBPmtB;bth6rw=F_GIaaK zNr3VKeh-7c2fOKe%?I(wxPCN=AE6uq@LM}G0_FmSIE4|KzHd(_DU;Sy31r}iyaC0w z+IAy0vl=(P{Fx+_LM!GK2}IP4i~(t#IE=yBQ5)(B?PQlHkFE^S54fa8xDhdt6EJ3= z-xY&xhk2$Z5iFA+`3WUfZG z%(i1S^~v}nF7qg(xsul^)sux@<*%yx!Xl&X3nP)R6&M5(1zM>0l5f=k{ul#0wL z^PJ2cqldL(B&3pnIYF(Y*5q*$u%hl1lLSi9{)GKm=8TD)vVzip_b^mMaG8hC14;@i z6%b$k91ktsqaID-Z^2IDZKBJOD0r6#m?Fl!hW|h8yRsm%9%xGk5 zYr9YT|9{jqyAOMHHJa%rfU3+0_p=XC9DS@bRIiD>8nf~j5FkKS1v2wQxStP?crkSh zNrsY>WM<}>>HVPJ*>d}BC<&d#9Fod?^WN4Ta!Oy0npErT&fU17?Edb?^gU@+8uL7A zwrCSRipts8w%)dIi^wWBZ}WsQX(`^>jWAm{2ZN$U)U1L4s(c)VTsvi1z+0Jb1U*qwPl_q2k+#os4bI4*vqGsDwRp#_2 z4dfZ1jT`0w33DxC>yknA3of5Q;5?8gRG6os^!k}?gKua%+?9z+=3MW$tGZJ6H`as} z;%!=v-~9?ze7~8*a}Ay#@hi+EAOPF^=;kD=s$!pDYtiYBqKcWU zhsKy5E~*?mmY+)9lw_YyvBNt#8F#JJb}t>&ppFxd7^ZW8-u zCWcSM$aot%rMC&r+E~qG-b*sT_=tcfv~eZbkvWm4FG5icpg>br&Qq3Uc|#jvcU*;w zhjr(tZe7`rpKA_OX=yD;nxS7S_Hz+%zf~XTwOyTTCRfo6ZC_4Ss?_}pa32DYW2E^{YCA!W!sc02Wf^SBr%zrkwB?f!u<=!4IcEaeywp> zB_N)spm82GPMWiI?Vl_*g_rL!7c`xthguPFs8P;IJ3G`9^F zfX@M1o9A!yFtf@`anL80!$jv|4MCV^X5RY_(MZJWbV(907m0QrmG?5x-MqQki}T02 z2LTnV&B?o%?b8fsB|j5Xp~{4oV^?10hrXqgxXv%|E|T{HIbcqjV#9W^{!-T;lr?i= zo`hMuSicHbqHB^QF;6aZS=?CwRXlI}>3_N^+OCy9YJp|KvAR9cK~qiEfP`^i{7jWc zhc)C07|mJ>x?>)w6F>h?s9^5i;r>X$V*yZ2T2OL#ry+>?fVoIG#H)5n46 zf@Kbx5k&O4eJXD?r=yy!FmpbvN}u(tCrJF2R#O7_vGKV4E(HPI)RdfuTB8}}Igg*G zHF?{6xUs}r)*(;S76_^GJ@Gcu*sAnC^2`Fp7Tm&q+@c$P*y3+5@_CpNw1k6< zaIYx|0cAc20x^+&{ZibsmXX25xC zc^b)xB@n58kwxUGafgy0U-_( zZPWgW?V6bwcSuzwpkj{*jvEBrezx0B*01{fdu*>5xAyk`1HyS<@l!bt0TEAj)AwRG z<+I=P1c_gx%mHL<0Cr5OnBsZEI0(U9+e+4fIc zH?)GLFiItv6qMJ%eAjUjV%uebwi~c^$f%rIB_%t0*Z$iCMKc0YmIyU>hHg~`vC<*B z!^3EumL*B1+E|}EbO`~LS;$I(XxsH+NIGt+6PM47E)Q8qc(lLfN!YDip!p}gd~(RY z)m3K>&O43|m}4H08kebs?5jVLN!~UYK!Sj`lBQ(d=%MS636|hB{rn)Yyf=`8^YG|b zGn7zNYwDfrSq~~t-rsGVjaFAGy8ZZHL27#)^eM~&EW)s9+WG!4`FQ(#-o8M^*wFW| z5DMo0^4s)Q5Nq1F$2=fmp6$Hjyg`Y6Mc>gb_}zc6_#cBYvq&m8pQ~mG+iT`wMO%T98oVbJrJY^uP_wB;Sqp*vjjAXl?hfv*ajn=^dJdyqYV&}nFS3%%oCKnA^M|O0G8gI0A0}#oiwfCKCMVftV9ig3WIYBOF6rv+80I7m<1y^Vu zwgM;Ua>5+P2fgFd%W{RPQdQbG?BgdM?;FrxexvP*N@Q}W!58Jp1O57oD6r4^g)@og z8azSb``6>q5Bz*)GYe+}j2NW@-G~O|9FnRstbOjD!YF-=0@Ygx;JgiF|G6UPbj z+4tM*-y9Ee9B2)F=REjv0||)dJsz3TotIDLU8-UeAqxW#O~+01j?9Fk@6mde5=K=6 zb|W;PLM``mD6=58-GB#9j1&?ySg7x4SB@K0sCrBw*$y zNz&DAM_w>#kGvX=JI@<(h{o8w@9-ERh;X+E);v?FY_uO51v>@%O1c*_I6dx_KpYW}n(O zHf(?L7bQqU+baM-kUB0-q6mi4=fQdB`3Ky7rlhvv`h)sQ?Vr+O)@mlP89NF>$p_k8 zW~)%tWDe5gK1Hd@H?!~^#8EI{E-Fd3Yu zK_bl~>2!Cq0#-oJk(S=O$;mL1DB8V}iyms5*JRF3^?R$oed$JwvQr!-EuUElSs&lJ zz~cDAwny~Bg9y5QIE7{o)R`j88FBg1wioq_0Of>aHLOOjly|Xl*kHzaz?vjtu!gG4g4+v@cZ@q!cE027??Hz z7fXUHiz!>=w++?Kn?N4#etw`5^Po90p?VDVa}t35gq$!#zp`xr|7=6|tpD)(O3(f? zFgy|B2@>C-j0CW?hSmfbbPZ!Da+b#^Kv}RO;Y7-&;G`Q(DB)IU{ZrpR0oZ`d@ZellCos?Sm zo_E#3N>qx5{Zo2_Ma>iA2tsXNYB11v-thDPhx;4Nb^THO!f|NPRY6F&7o@nnUc8Z0 z=4uz3mt6YBWA4-SN_XUV80uL71rp=VoK-o!KZI#{VjcqEQNF?4NJ4UA-dPEAMo()D z@_g6vQ8_DEm$7tyx%Po8u2qvQ)4wo`VL zW~mvwbIZft{(x~98C9r>XfVe*ot!tEH>!j}O@K5P4BJKK@Bm#^GS9Y`cjA``uAl6t z=Yik}68{K&*C+ zh1YZn{i41z=kmP(=<^WCew7(wlLgGMgxtrwAgG)Uf^#Ad95?G%^<8ae+bI>Tqz&0v z3YvqXWn`9S!3iscvG=}= z35^K9ureVYAJ^MYujj|ZWv`^RWq%p;q~x56g@Kg3PL3OMfN-PQ4s!{rvYJb3S75l& z+~)l+ui=dyB^WFLuzaWMxJI4S3ws`q{nY+1G>JZ6s=eWxZbYyWJ%o8-4 zBR1`y&~}bPX1xBOmGhyJ_gwTdh~qFNbLjZsJeemlANER_T9!)pcb@Mop;DDrNeLF# zIxe3=9j56F{);Xpc!`O=PlyWFTqz|p`=#cW)^e$%q6K!`kC=w ztt^b}hUO;0P%oNhoLN*Mq2(&!QRbuI8jYI5oMsR_N_a^0EQ|=2<`mf7_h?0F^}8i-BTzezZ1 zY6Wgr*?D`srMzcJG;SA}iDr_iK&zT=f&H^;W@hD7PMKL#;MFJ`Hvp=MS)k+fw~9Wk z3AQ-IQO-;pZ(K8yXuP~~PR=_fAQ`_{+vS1i1k6L`h!72e8dRg^aFhWgSMJcWp7jKY zzh;mi0krVXwsgKeO9geamu3Kt)GYmR!04N^Mf8y6$((9k76DvT7>B%_jFOZyOXaa( z#LSUZ=V3(OUe3murJNS6wT4OvMH4Uu;z4yaK&m4mtHw|rhZ(!k+*jP0piWrL$n-Tf zFv>2~uDMdu$OIm0VRQ2^$X1+>iaA+{d2|ws;VV=)Dtn#;Xuj<8R>JFFsQdP*nRQcx z2vgr#lg9_{Z_<;ijIc(aeu0cFt)-VqJk z6_?MNCp_5piX9#jr1bN~`xm_Z14wQ!*sc;W-|WjBN>n}4l2r1B?N#2=yFGg%->sHa z_>F=mcS6%0fE%p$$4JxM0h1~xN=`)1N0cV5)fscVP|-*gmBL;$kmXH+aU(?4 z%v8={?IycVHE?qVWoEt6m8iiS%E2m-iuM(3I9C+2P+2uk%SpGeXqYyS{+Jd2oArYw zkR_Y6lPycld%Rrm@;iW4m6DmQQ-hNWs0tX~v$QmWUb2x@gHZFZh?z7qSg+nIu71IW zT+CfOLWJH>0*QVBfIMLiGwz=h{n3r6#5}Y)`c<^A=di*&)L)>9aV+8*%ys=i?E+}2 z#OYx*RTGP~?4kVy{le(-UKXhW$aY;_K~rg*La`E6g=zD|Gnww!YC1g;;t3Mpsok_d zLRr|{_CSyyg+Cry!sgt=!W}Sct@Ls(qCG&M8Fx}x(`=NGQYuQ=ojc~w_cN^@se9=x zbmK;CZf@f33vWL?Jg65NN2s=|Uqwfyo$rVZZiwCTM9r$2-V32vmOQc^qvki5%$suy67ZT< zLu@na%!F;mP91LHWcii?=oXtr^PH?974yXXZK;dh+_VqfRaGi83&NJVxL?v*(zTq- zHD?ay1iZ$``Hp^7+klyH%1on;n`^pc=N;x6z061pZ>S*!ycfC0w{0cfZO6;S079g^ z(tskhvZG0umEeTuwDFFd(EPL8dBVyX`sXlubU}~`sH*#zIq#?fneHT0APr{j(d{&V z?vhx^k3XUc(HhB28seyWQ{1mN~r`;@WACWXqrQniw>|P zd#Ge$F`)8z=XzRI7FgC87rXpGQp-t@zkme$WH)&ifYwLb}0kQHpjVx&j25e3zFh@y{oRqhFfk1df z><)>RfP|ESY|eA)eb!k<+cswy+Y6mQrKx0b6ACE7OE^E6!#%!ruNKM535mo6p%P%x zXp~@*RhD#!KrniiMk$PqG8J-ECgscz=9H52bm_$$D>&L4tn1;ARb2U@#|O?2kZgN- zN4tWc`Lf$WO^yTez&zl=wzcT6z8na+`-_KfB@GelP z25fP4$Orw}^H2XTma!cTIY8n(V1~9SHmG>s zKwx`q`{!I&tn(AIBxOS2*bTYB`gJyPLJr!@#xM~V%~Ay zZJi#>ARwA7kc0O(5{OOxiW26~c}GsWd{VXo%)=>bTUAhH;9j{i*G1w;)SYuIt87nQ{FDiC?2u!~M-Rm8fJ6N5OnlrSI5wUvwan zq*17%v2sueZ|8Z`JStH`PIxz%Hi%k2-d_LrV-Js?dC~R-bykEDpd`}SxD9H7TqITga7~_07*naR7MHz z7C2cGbR;lQBm}|A`zfYm#MZje3Yy-aqRPxRK{+*tnOXEeR;fxbH}k06&p%<@mrzeY zMki#f#VaiuL7pcc&3aec;ZE=R7D$km0_U;JWtV~)ZG$(c;I9=IsA>+VXx<}O$#H{) z%qih`M-D`1yTD9UJU?pOl~ZKGWo8985|lJ$r~DAkRBAfeooz*%(gEkz-RLN*G@}rx z1|!&y zR#nvuP&rt`RQ_Z)eYes-pJ6-^;t3Mp=Q^VU`1s+!1Iwqo!YnQBDS}}jVE`$HOEzIy zRn~3qB!kwV(3)Yapo9}Cc&J~>d`ZB{d;!DiaEo4WH@I-7{xA|kb8gONm)_V&saA%X zS4r7)UZMjKnVClwXhF0*Ya9aT5oU6e#h~3LN0rqi(o8M9U4Q3F%fTF+r&nri*fXIt z8a%2>DlVVx9HP&07QUgAnBLDUS@`88B>~;68El@YS>7N_*zkP`+F7U~<1%V$0mA?8q2sRnOfaJ~cPv<>yC3VA|>*s#5z?J}dqIyq@fhpZA0yVexI zc2&Qa68Cph0zzzP#wzd);{XbhEC_?j?mtJ4WkpV`CRY=*A}ip5wikW*IH}6#(U)YM zlsC{gkLO+Xz1mGrPU`r}c@R2VNoHzVLA%p{eNr4l4= z-nX#AvdZAHzX-xV{uJjsN>Iv!?V@>de^KlpU@d^FQVu{gleZE`&SmXNb0zZxP&sSd z>0y^B%G$1KfKro_wZ z<=WO`?s(^U^VYdvzOjat-5xIH&3&mYj;SCBJLl46jHbF!UP6`46Z4RYH1wu`i3gQ)jVVGC zIaR45;6XAPE0I$wRzj8iWr#HgRhZKXc6+DYNs2_fWWSyz2^2o=`7ugZQQLH5cLsMt z=GYp7n&1h`EYd8Ge*O{XZOoZMY&-W?^p{ymeN|Rh**M)e#Jl3{%=;YB5)9f)vx{SM zyJ$iK5N-nyqv!TI`zrzaR>R~yfqCzy=I*OOW(IeVsEiztI1g0H8_Yx#$mmq9X*1sr zN-D{tT7QI}LV3I+6VceO@~|pX@hjax63o34dFptlH@y6)wkJ%GRr1lol(5! zZ~p5qnyo%5u)nBll=ErB{sf6%V_(aVAWR8cvF2?BOJ1b3JvCn(~qARIL_yZL^JfRKxuZ!_se(vtRN zmI2L;Ml64*lSvPg?jI!j}!fx(~~ zEmAbdrA-qS!Z+AWyW6lW0g;=Ni@=`Kl$MhX(WRd;(YAUly%kXQ^fttgN^F z>Vz9@WzUh4m?x^rxXyR1!TSgDKy=h}l~=W#n8(8`mXJ3tTfnxDwvQrF0s481^W%A! zJ?jY)f6Z-8I)H!Je`nxMG)P%abq&;%hUhX^^eN0j!R}zZ{B1Xl^FU3bhZ)1BkjEX8 zZC6AorO`gp&Au+ zM`eTltXCF^s?BiKgp>UuQk6wdZ!-%j&J=5wSV<+#EW&aihe@oIQJI{B;~Orpql%RV zHBAl~Y1Y)NJqKO6)ZBJ`3FFFm4BxFD!i=NV>@%3w=bAOAl%E`qlbaxP+~d5Kku^d)du*QJEedAhi5%O;y=Ew2K)G9 zNyFTtW51U7Syg&8?wQq{o9>unrI}XM@QrPg`!ombOx0ySvPL04#uC1rsZkoK9{h3h zPhs8ZD%BLFdE&f@M5fv{<5J$kMDaFiP?xZ7G!(0>%I7q*2JPnZri4{;9;#$cwoTiM zRG4SXJ80^cWgWOw%9e-U{?z9AxS85ku_qTR2+Oc2+e?}o6yt*!Qn9`v2YdbayOmJH zoXUgknwQU%%6w*JPUWQJnl|5Av(@M|5j*ym*{(?|I?NNGWL2sxVVW%gxs&WK1ezwt zK?o8c*2L1KulzR^D0r9m)vOXXdI-cgnm#0%&>+%8T6DD?Mh8)unzcp_04!*t#CUnk zs3C(a?=2_IyzDlx}AM@fYstr<3dT7`cn7jqY_q{`fl2E3rsF&Qbe8sP)WEU6M@o=s(Q zwI<9DHfyg&%+eG_2~(-M%?i@U`>Zn+Mh60Hv4b|NvcN2J2mSOusB+AdZX%4_Q@fLG zVsi!&RW@#_oOZ$fiP1lbw^2c>RXK-+7FH!%QmrRv_nz zXvk@m=FWC8CC?AC3k}=fRBZKdyh?*ur)H97s;CoH=vS4v6cRv*k1)9V7tDd^^bYe8 zmxFBr?$LY&RG7%n42qEExn}fY)7P^CEJ}Dh=xGyHuqEQ|Mq949LLoJ$LFNHk=42(k z$(&>rkjcC?sMSj27VdAD10*~U8>XHHf6sb?#9w;}fZC-*%Rw`mZ_#FKLxMGfB+jZl zPp@*{JTMK|=&b9G3BQ8HYgo?{W!~8Wu%TJI6 z3CGXOA(HdJ@s8NguZj*Mk2lsZK{dS!t%F3Sd#GJyj(#C~fhJQFzu z4h{K4+wJvp!KTzmqHN3;Oqvn>0L>iWne{%4z}H|^USr!#Xas2H`AF zISLfb%*_MlpFu*X!7&~Pr-C5b#SCq)e#N(p*8kat<;iaPCG4grQ}ziGzecU6@73uk zdME;yA8xXbiIE92rftq%>Y6iiz&)b7Who1J{{U#JFowIkD^Dz)aNEE@+Zb)_jsV3x zC8f6%Ti&n`;yjdyOMx;j7%|b|_G3QxsuqLY(EopW6VY!_zpO36!vA36?8qLL$Fo*7M9p&HZs#m+R!DxU| zfDrsDLd-cS(F$S}&YROrwNz}{ehZqU6p}U;)d`@G0#!RJOsX<1>X9ccE9aO+uH;i= zgt1d(Q4=c~h=#BBi)#VVFN#)|9}ba~p>(XV{DI?5zKz&45A$Zem2W8~IAH=dRu~~5 zPpg#qut6CtC0cPs(viXQuGBd9VZ#!)2NrM4K-+Rt)X6_sQL0BkTzK@hz2+OWM;m1s^glqo@n zFZvE(ft*zdZ*~07yr*~56C{2;!1!+8{H*`L-^Fv~pY`=5@mzy{Z`pGR z{^Jf7{0pD{XZVKyD=+D}fWOWHK3DI5vG;zjwr*Q?P;0&SF}^wHTKoLC_2X)asF74f z(XvAPfd+!0z7$5WQ1Hzse}G67G*CoPH2UC!3KbA6{09`ofRrK;6huL^Bo7Hyslw7A z##~c%bI(3|uQ|VOjNY3MWA0P8%6reQo#LESboQsUCTq9`T5;{ha$)g0DF4(oGL`(*q9UJC^P`rl9fNOMKUpu%If{ zyJs-Mcps4dLKiuOl8ht?+?AT3BA_)d_U@g~d}+bjyLa$K%TMp#YY8RsUCvJ2N2Y)M zV}0q7+3>~a9(7k~1(sIccX3v~SfBetD$>5|*#(K~=70Bpr0F*=plN+H2{fv-mifEB zj_>{l{f1W*Ra&zdTz|-SLs&v4RWQ?9X4Myk40(VCu+|4#)0FR6n8x)jzq^dSSYg!% z70w^pP56+RxCcZ$K;r95SyeOPy9A*b+S(uUfH?siFPaByR#wgF1W7wyfP!!6Cz)3} zPv7>etSq5Lgu59XatTC%bLrTTx6~{dgc{B19<_#eQSZbp1b{hIGNR1kP6@P>N*Glo z=}H^jRYB*b_Clzg;e*AZQH`#trkhI|x~zKdE(iQ`^?qIp=== zgJ^eOirCVOFacF)gj5r(1&1ntRI`?Kre@JZ z158FI4HfgiyupIoQ+X3zQlYF;D#f1J!2I5Rf^SB5Fk`miaC=S|APTNw$4gU534s#KKr?e#5K>Og zLp9-z-r#}do@4|AIk|tE&>aFLEPEmgK%m1Lt8jddO5iTNrS%o$L`|6^I?Yu{k`V=` zEh*s1{VnG0G5Pn12T1&X03`sx`iW4>ff^}S@}L`IH-F0p;RHM7jM^i*%n!3FA(xmo zI+7;SK+USEA}pwNt~HAWchX2DV@f4ABj%8l(w;TtGWSID#yIU+2Nds0Ev@*}Y}JuW zYUZ;PL=SA5mSb|O;uMlgU>t5ZlihJDE=!y#U8jbrgd;UeB^bRsjX=T3@J4`%0!Lym zo27c+U~9r++|CyAkYGx#Q~Y?*+?f;R?%|cF0uAQ!E&xh`vc~8+4qV^Z-TWbK4yZh~ z*0xe%PEBJ!N83hm=9raLM44a&f)!PUNsx7{EM|hGOn^W5D4p=!Ts9EG<967ZESNFtN&hNV4M)H1$wr<)rg ziwPcOB^)(p0m2sCVndE`9CHpQox+?w%b`uMXkJy`cR@*j=3#kY+)%mEQ3JO($i#MX z8obFG+Lo)0QOO*rQZ)6`U`vp=SEycfN}8pGA7hNH6fo)TehO=6 z-svW}<`P_#3OT7n74l$Bhsp0chK53^+}WQ;-RJ>mSZK13?~5g%A8ehB&UZm?DWV12kvuRm;>NoB$_%6|=0J<`Pt`BpYt8kyUNWc%r%Y6G5V82@M7j0^K18 z5@rzcsF78Ladb`dc=BNPIY#9R(ZNP@v`yxvRowrwxV5L{A3E)#E;DYFtxk+Upv)z# z)uc)}ldia=D9DTr3X`s{bB>}B3?lqp>3>P?_FnFA&(f^Ba;_0&OGdC%Rf6E4$=#ZJ zYbh3hdgp^Dg$1k3Td2H-wkNa==BUEl2@wSgG{d;z`Whgk7pN*#!bl5iJuU8i_#CFR zWitZcNVI@An4_k6dfa7S161Hac6xxsS9XaNfVXd6PgqBG-5RFVw6@8E;YHWD0Y*)l z+xep;Q;K=>H{XGI^=Fx}ZL+u(kCGE4j*^2AR5H}&ZL6{EuW6yvlf3V#JvFkBXvQhb zs+TcKa^vPahlN`LCsrRXQu4TA4l@G{(dBlWKbchps=%6tow1G5o*E^BqtL8A>O74% zo8;KmS5;;z6Ev6{+<=Kl0IQiw86ntbhf*H>8%8j}s%AU|H#vbY zR%MFc=rO=|WiWK3)zI}#<&<~EhV6;w6MlfMa-xG%ID}f;pEL@iG~P9U_tdZ5U_688 zjXXOWVW3I-tSlVHFzfviDk=#k%tWY6biIe&dEH6_TLG{)JC1}cY?v>=E|&0WV1l|`dD z#*HY@&`zR*1{I>+8MHO)UK~p(%>&+Hh7y(Gv1qSBtD0Grr;ptjHIY+FO7fsR%L3Mr z*|l$?Yy(Z;-K>HiFfZ|7H$4)92T1&mizxv3wmp+b!(zgh;PkMNVe4#~kaFH?pLX2J ze75ruXTe04-LLAI8U-iLfwL=&d+|t>G)e%%c#743))ZFjSkUT%bYvShj$5|?Bo!s7 zqRw57Nv~h#?WH{h;U5ul9xsZf*%wzF=**2JA9*8avv0Gol#(KBm2%qvqfM9PDbov-~3Oooo;cgveDw-)L#}!HW z(EnHg=q!(JzQDZ(Ltz+n_=ou?8kA z?;F_2TD9Z;_C(6M>AKHMM7SCEtfL^quwL<8 z^jnJL2A*1Lt-v)H%n6gVYwBgl$TQTagoseIl0a;Yk`gSbW)gB^c-I_Nv$DL>a>!im zTo!jL)v6*BzNcorb7VCWy`a6s$uK!F>B%z%%=hp(`+OmYnov#93FWNo8=eBQ^T3=Suqs_^%G#n%uV$8II(Fog2b5fYDc!kA1ZxHh1S)a70HSx7O2sM%=%IER zu*``{(RKR90u>~%GAr}PJ@(b!zz=rQ10=rExQkLOiH4l2L}nasK2a|7Wa}qw9~F(N z64HFaQn*d+saX}q=Gx3qbyETE-kdP=AZ!&(U`RsB$~g;F?%unf-9!pVVag$t;3@-A z)u87_qos5!q*&5s5M<=be)KwQ?5M-7k*uoWThT-kD7NgUgsF5wc2?v8Re1n>YMaai zn{yf}ma2pkI!Zv5#-3xJsoCDc&zZIjSlT^bF@m{M%Kh4o7q5vNpy56%2bjTKzR8SO z94LdwlHyP$1yy<-K3-ZCNX3>?RYeWXq&HaL_Ttw!UWuBh3GeV&gVr#=|Iiw|%N!_z zGKV*+`t@^=MHh_=7^1VEWr2BPrRIQHS*QwC*3Skg2al^k);66#l6Uind8m%NW=Fo@ zdW8xk`bFE59%TNn?&hr}j`D@Z%mX1FAn_aHFMjLoU-*k}e$#`WescOff8)m=l1B)@ zX}p>3;=Pf*N_cv9lyU;BXjEa2E20Qi5lPjVbqSvqBV`1M?gsi2K`Np*opq$zuI^YC$bzci&OTmx9jqL%w654vht=$DYrPNYNEr#hqSHFIr#0oPN;9XB zB{w!rR24ae3D447c<BxdT|T9NeB^ekWzEPh4d=Q9~jjj9nPbIFn7%z#}(f2 z^l6?y-gQ4hhO*DA&0T`F3oLAZgFG;ki>_9M{SC~~PFQLs1U%pl3#o9t&|J~cFO#vF zHxx+N>gc@E%oIp70Ua=NoIetvsi)Sf2Z%H7VZQ!GuJ={1s){{?%j>8rsgr`2uKph6ZR9ZdLr-1 zB>JTQRk^Lv#9o;`ceV{4qDz1o&1@bxURbIAbeG|a4OM{Dj4-XlOZsArS#Q3h9JYj# z+|zqm<7snB)@5O+ON~XAMGlMuIcN?PP9N3w1ilijXa$bch-Z{qi*AhZVz<{CH<}|h znS(?QjD%TngWYvL0Ay7`X6_z*r(8HIGht@o<|Z_gSn&V=AOJ~3K~z`ie!i7**x0vx zXg7Uj+D#8Ad4R;1$DjGdzx3%R+fVCKHeH}X&WsBQ>wtE9rC&#`eE)y-nURAGMUFGRs@%hLkdMV_Zti# zU_wF6C3K2F0m!A1H>=*1W@R&WyMOzKxj~=~THNQ)AfoouJOG8t zP&89J!#4?{6)@&-l+onv%U5vUcSC{HojS!ZLo~93W>w0)_MMg5E~FKOaa$^QTqPzt z+Bt!&l5ZeM<4Vv@uLz|uB`T4VG2Ov zVpUDw{QQZL=`BSleePBT702jas~NAn?_M0ca!`vkTd;`ps}ZNnlnk1%sMW*Bskw6w zfA~s#b>*f9NIXE|OE;$cmH+*-zyA;Z?tkPbfA4RvCqV$WSwk5lD$RICS`|pDpeopi zQ-V&D*%t&>n$h6V0Swp}bBX}Nx0++_Z&>M6xVbm$XE$G(tQCIP`35);Mna*&ab>An zNq1}!v?h+%F z-m+aRc6W0X%*z`jt)z(%7^L0RZY3q=L}inp!rYkyW5;&El4!NSd@DATqY6q^GN+=K zIW_t`B#B<$s02jF=u_MgboU7N1_;7n@c@ax8u1Ii^lO>=iNF1af4hf~RaJMM=5g%DO_tt0S~q!3qi39NWytif zFbl}?#(6l!@>+taAS&IOnF(-Zx8mk3DhF9Is*d88bXAVZgq0*l$=rS)l*W|}W8wMJ3*cxqP zVGiVk87*il|6!S%86?(FPR_wRP>Fu2(?{?|K;F0 zS~XxEBtVBsv;oUh7=7h_WI-ilRslh{MQtBD*$m79K~T*ybH;|)K$jVnD2P>p#TKf1 zkej};SQFO|cGCkSzIXiDU;Nee!yo_JNbCdaLol7kTQ3k>z zTyuTIV@gA9m%1P;=N4?H&&dE(lOPH z9VL(;udho*54H0+4rw}#%2iE*3g&Bq+9l+Wgt;q6`KHse8+lwU=N-yxQb5~q{&>mF zVqDEk7Hk)J6NH*JZe2h$2+Fd{^Xkx)3gc$`=K(4@Rk*!DO_<+dlBVr~oNK#*h0GYe z+Bw(cBW;a(uu3@$bhENkwTlRXR9OzreYJIxR%VgMV~6^Ri%t*irUyuTPmuV9zXafC ze)i}8;NSDRe*ceu^Ot|++yBX*{B!@spZb;m=x2WN@A%t(=(qkn>);r~7Iaz)C#M@m z*36>YC=|Ro0w}1fC=*bLhf}S2 za^q-JfKW0M^FU20F%QD5ovfe4HYL$uZt-k$=l((xY_JcwJs<3*4@w9gpzr{RFN>#3 z|9wCD>A(5Yf9S{GLBgN>xnKHYfBe7uqyPGU`(OUY|HLws`+#R-s?fFMJbQBM?q?SE z*L?YGG488v*)Fn3?>Dp}CM$;*I7t9*a;^;>gPcNDYL1c+8%aS~a~zt0k#2T!w53c( z`*?Fzy7?OE$~n^7Tpb6Xgi)yF(*SnI$$6Jr3O5F5W@bW430ibxA3&8(NKit&Am&(8 z833?D-ziBaCz@y|u$5E5QIvF@l-}=&kYo38jd4X4%rI^g%xsZCVZ=QA^KW@<*q#wx z?NqSrPdMLwnQBhBLyB=VG61WTxjd>}xY<%*wHnx8P(=u4oCn^12d%T61fWulgpp$;tUxCL1h>cGoUN_tbY2^JmZQqiLs zDB-vn_fAU1aN`v%QzJD-X5}e(j*s!`*>evly&dutt_M5JCLlg+fiL|(;_CrEBc?zE0x}hp{+@cPvDL^#^ zlQ)t}W#p4~+C||#+nf{drgqZhlffue&EaIYJH+D!<0cXy`Wfc*Ci4Ked`yqG7&~&{ z^o;(b2zggO57^9NmH{cBqFdXZpGvEmGb{$p%-oh&V84|29X?B8+;Vqi(A4`%cM62H z0z^YUsbA)DR8_IT=gzmkhS%SMigZM0oB%Nb7O2VV6&Bu4Gy?c8Y;nr zfWX)|$L?YMbOpkPhj3s#I~eD5GDf!dxjHVVNS04xk?c?cLn$}kRt+Ho_eJYWV@ zA_Q2R(at30T{KC|X*pYL<{_Ao4s33ohuvr=qc0vwpmyE4u zN+QF~+nVJTNys4N#Mo{1Db_^cBff%oXg57T;`_$upYMO-XaARvUTy!vKl=y1`|)r6 z-){l@@DD$KXiwrtp5jOVY6gcm56qfkdcY#x_exV)$@0*+%{dia+hroA)S+{;POx$r z?Wl%ps4x>nmp6BFiJGen@{<0>`YaiFlrnX4e7so*ZbtVKuUSXR2=_4O63a-iN6L=1}S@&hzgA{i=XFr)ylEg5$-Alvy zzB}>d{EaX0)&L{7fX~UfYwngwI=8bC1d0Z4rhMmZZ6a%#yLoezNm3~X#?{T~K?$oH z3@J{zJ@Gy)&7pfK&6RCld3|l$bA*4vDxwnO%CRr9EY_;Evp}i@s&!UjF|xq4pfx*x zgjW;Gth5sCT&L%qK@d5u4$H}$rer@SZ3@gZvb+nBH~PtPI124yI`q}XgWdE1iSONz z__;szzkdGa_^ChqqhHXO{+5hlA{-3}5M_&D{KlY6etpdM3sv9;;t5rA}q**_S zUZv3J(Ml#&_@-^6Y*eYTX@rndpJiLFL8D~ECHkeEy3vV7adkVr&3+j(XK~Fktm%i7 z6V4Le3?|Hpo@HbhUNu_-5RhipB6k`Pbx@hGt2}8C&%thPTezx#o$XdxhXfwk3%w>l zbTble2wzf#qVXv0S=S-Ag_`oh=Csu=elNQz_Y@huvrL7YP>F7V@t0Bk4p z3s$2d542Nl&y&td%Y$>b$}(q!=yK<{YTP6!Q>yZY=wQQkB7jQn*Av!Kh?)38Fly}9 zdNaoyxW1-J))1lXiQev*{fMt9^c#8@kEMQq#CIM4oqyz?`@8;)f9Jpdr~jq@>R5dbF#_Ll=Ni;`sB-K}IgT1``8UPpmu zMOSP?xF$x~C>YU=r?5|gf{)a^>oQ=^RqTgbbC4+`Uy|2ZSum54B{{LVh2iWha-S-o z8JbbRo~wCX1v|2gIJvdH1*OcI%F-CeI4Wq(8POc&*gtjnan;-zP5mtIDH#&x2fU;( z3UuR%G{AZHy;yICDgr&M?VrEr`s=4mU9(;U(xl#vXDhF1FWJFC=9KkvW&K9h7$g!8%mV zenG$J>C;()(v--YGt+um`ztsUf6rg>U^o3HjCeGzA0Y81@lXEL-x6*=^B?}tf8?kC z>-EU*`_WJTy?^^3{5yaDH$VI=f^WTKsUN8$OTZAGq3h%gvIiz4;}J-kp-b2eWM zf+f<&+m!LHb6Ubtchh4@Q|yLd-R4B;44C8GV~JjK9;}2ldN1196ey{tm?>Y5Z_upK zh%g2cvx;WsPh0dtHCRrPgYl9CXbcwGwy7fpBTkSbWnMG`0#c=5dE7k5+3aF2idC3J zusqo;$XANs+|U-!+Y-%eR`RDHJ3>&(pzf?B_#t8j6DZuT6j zacvT6?5Z@fxxqsgwTjxvRc0w7>9Y_{yPK!c%~I@ct}NOV3Oovm~1H_r{sj+ zSusp49Y8y~hX!)&nTpLlnwh{^CHTC%+~Cp>w3LoSRUKK^B%tBkFvFcJ&<>j54y2zw z&ZtxsJm>(ea#l{}besLXV-n!Vn!=VILa(5eSd9|yCb$~J_>K;N0rRt@^K4WTC^~8 zB1o&jN|{%cz#>s)q`VdB*jQ7?O_lfQIj#~BT3pDabrBLzYA8q;So0F}80<$z`nnqJa zYr*EAF(EEVrOaU#5mC~PfJNB`$w)Q{TzY{j05aZ9l1mzeOAtVo2o_+mjnr73Qb52g zjLa#NaA|C7OCk-F2hCNGu+Q9co-DTR28AX{h*n_2Cs?A^Q`Y2?pui9v9!Jsb?$q7e zcCVMcFTQ=qsFM-ft6aK(WR+6dj3-KMD{z+f63A9cV4nx)%_}WD%*@>wMM~nh_IaSj zGLoV0My%l7{|=xncM5k%*at}TGulZc=dqNPmN*FKAnI<5O{avH&u}bjAVWVhx_bi( z#~%CVprM}tVD0bG1fnL7D~^}dgn>7hV|%W)$u^iQDfJ$I_D_X(}QkAXg z>vo~JLuKaCxjl1DC(uB%=%@*sP@$dF&bWM<5&%bW4k;O1(Xb_f#U#ELl(tLtX929# zGvzT0$_dpnEtdr#o4eOEDJ9VjMHJ>ifc5aW{>pCNNB80Z5?>ogyiOB<#B;+r7-mjX z3Cf~doR-Zs0OSMuwui#5*3&Y_C2A3DtzXJ?itl3i`oQ zY{6y!aAc7$^wQZDmNJh1Jv@^@}^8hM{Iol=$La9W5$3;(Tfb z!AK>R!%)I{@68O*Ub-c8PlIaZD_Z7o;DLxFD|@|1DtwkoI)?>KbIwYtieAUgJaqT| zq_R+lM>~bBnUBgU3y&7*0MyQA<|@?09LTJkGUwvFwr(|j>|UcCS4i+s9c&k!pC@83 zEy)oAlU@M9Ip#jH1DE#H-9v-(Fb@YnO1#=O3rN7Mn|CAZTTQz zj$)X^m5bb`B4`8*vIx>s8tTf!b2NMaNIck0c#JzdK;m~?S3?Eh6Q2U<0dkf`C4i%p zg%ooiv(SvM8aiPpR?2YiTS8CGo_jbUVJ{t7BZa$Dg(UaPIHq~H(V=f_{DCM{Rn0s! zt;xKZrEq|;J>O5wbF$KFc20Pk^rWYs%cPt*4sevUbZC^OV9tVhZV|RJ52WzsmTyN= z3}g7xgCZHt+9|9Xmx!!X22?cBeAyGJsH(ApE{j9V!jMX#5;I!~rsc_O!VvaD!VDs; znYR?GuvA8z)ty1k!d{vMd#}HIzq~D#)*J&jCkRRWf7pAUnA@`Lx@(L%=URK8^W9rj z?>)aHNMJhxCz!rNBc>GxH;9N83v48mV7Z4J2nuw727eUEc@7dHCXOA_3xC8PrGZ4^ zh`1jbF;d)1gq?{qae938@#_!G?=%V%>o{zLtgVlPDq5jU!G!vEoHJv5E3YOBOUWx z)U2eHSn32EbgZm!8bL5KryvB{Hk|XZlRer^k0SAPy%uxg%fm|SqXan##FT<+Ml&^< zj~gte#T3PUw>DEe=_X%77a@i2EZ_}#JpJz7Y3GgeWZk=NA;CKs^e~SE&nyWmo3t6d z`(`hb?ak3@n5|fz1BXs&!YbAT7*3?piB1uknT(5(1{g@nL{MzKq*H)kwIa9mRtMruO0~?jMrc&Jq4vICu3M&Dgat1;7O}oNv?Gs zrfe(yjU4RhJ;f3XXeI*1sFj2bV4i&b3T_{990suMvcPslxkZ!5(szjlBFGn09znos zASV}-9fS%ws zspUf?Df7oZ_E?W1@pXS1!Lm2IH6z4xaW%}Gt649J*k2n;v`&WE)how=DvM6DQ-oxd zjRgQ^5srDnz2cgs8i#7uJTWKCmx=D`Mo4oOS=L(Rw!$Uc&^9ZF1(l*JCjmnNcSzc< zA`9!NTUCIE=HR%y!P+M4pfHSUB-2r-yK5hxZTb(s?4zSE7 zjPJThd>;2<4c=aWhlGJN?`GX}agM^9p;L0D*Ju#hc3Qtpt$o{s<_sYWI}!8FaRNwK z(Vz-V)&vZf_py~cv^}A109RUHExgCLD~ED2M~pk}Z&wPdR(>3`k~5aO1^pT-%sb3Q z8~vJNEQ3n=cBG^jP~v&Ryt9g*#!UBEpYGj# zB-1^L#MfZC5x`TkBXye^sgk<$meG!hMp2-alYaLn#8=>;|c<6fB= zy<&HYIVEJjica9jD#4AL6B;=0v=CX*57}yJ+Zuf$YE;dsN~$D5StXid+}L)bNZztW zNBZ4Kl>Vh)Tup_hGp++eQ$B$}xZO&+T$_o~Ca zkzP`kmJv{yW@hGOqZuka?-(cMfgG?v-w@ZLWxLKf9P)U)o?oM;)1yK>io|EKmS^+l z-;96o=IqYTUwRk{xVUv^nytuzYcncICU{KU0l-3`tcG%d?q;4f;TxMhSggH9?BT3DXo(Z5~wLFi3nlf{{Fi93vVwp|J>D^Z=U!_Xet$0^&wr$Q%0+6|gSsM4M zInCYNOZsGchmm30-AG8-4VL%H)SOncK`l0TBsbB5iq=vxDdu@`9En405zXC+QF@AS zgBxd|B%=ukf(uy=9R;e=t;G(NtgFAgTFRQ>36)-oB_TJYw0ziE0`N|(#Pj!At`o;)h9vA~2q&dZY)%LWUmB^v<+456hIUedJ{1a6-Rn`CeKmJeu z?O*vTKl`))mz#gbzxW6K^uPZf{QiIb_dklnH~3A00FEqxXgj1Tl~B>TW>cZHNvD+3 z+aZzw6P$&!>P)>IRnn3A=ss^Fn{y9)YX06Hug$_ROQR%E!t^E^joWo!aP&8!le_b^7FFNbvLmKrGlyV+*EItBSWIS;ixEd+QKYrxwi=bS@u zAXr=yDca`Y1TxEb$VOqLstT%&buqXbeEapk!w>h*Rmsocnn83UThLoAyY!2x8(x`} zXJ$cZ?naPmJLZAPk`jbzjeOk<(FGy}zuS(18O2oLC`&Su$0lqK0yyisucLfV{ry3*fO`Gj>7D ziM%6+#yO>`s_Yi`F zH}95%uIhEz?IYzV-)7rMr$k!S#7J3K zgu4|iEnr^KZE6(4xY9{K9SmN`POE{M=ue>Kg4{#S{#<-xL}P(vZP4Wx?MveI zpjm&GZGZxP>m;z>@dv)+ul_7Q6#>>s|0~{?k*$UP|{iK z29gPXPJQ+05x?uQ)5uX;!PGNFVrvXzmc~FzvkIs%LJ)Bz!Wcx5g3d9Ac$7-${-Q($ zxH$?q8Mkx{8213`T*6j1gA21XMWxG@dz6 zRH1EZn*`F_X!kc#S#*$=Q*`$x_ktDu;?D8*)BG|%)J>myumArqf&KEAzkD3WuYTTJ z`(3~L9}`ygBY*bK9>?*0-~Vqsio~O>iSzcHps_Zy!?ydZHzi`lHeg#ewvns(m87wx@s6r+0Z|JSIR|9Qc`U(Yc(%e8NWaAe1Hy8&9 z^rzpze)ntbdJlEeZ)W|wKlCU6kH7V|e)aQj|MqYHU;oj?3aDaob&`Y>KZ;vDNLywUwh>|Q*!fg2Mgu`y@uw1ZD~$u9dF%e zWECcnjLOr-`LuHByp_kac4TECJoZC=6EsD)(hH=BFoGVU3$oa#!Z>ih1A;e_22|UJZw2UG zBG~&Z)G3VeHU(OEYXMl5p;!Z@!6?7TuP}=jWiU(1suNz|0wz^KnZ&w5^cC`BKwp=n zapR(En6U~uX@+1M|SRndCW8DJe5W zGJ2Po2k2Bn;{ICO6CmWQO5Q)-=Gk*B$?Vc&%Hu_1i;};PJRUFEXLZ7R7sUQotbhB5 ze(3wY|NDRS^Y=e^|5sG0Fa7Wj|D_-Qi9h;1-}9gUnLqP8JZ|w-YcA zcOTwvvzC!T!YGBcwzsP>t3aEjd)9r{^TeCe?(=>L-@{gU0G78|ZX_7Cvk3sf`=~rK z?4^lvq)OOb9n~vk25)EKhDM@;okgm^Fe~9MYvMXYmpAi3DJ83^9GIuZVRS{GZ7)&~ ze1~r!;cW?z0L{!(ENl0y506CZsd?Y7+F&oVa5Xb0W-7<+od>&1@5lj~<{Q9jl!h6p zN>-92tIW_%wdpdq8E_IK&2adtjmNI?GuG-Q%=@Y&1~0GtV-q#qr1zaYAUA_Hc!lxkovWv z55`E@&JD$y1*U+Sp$r1^#5jmaN!=eW*>98eo&VBzzVq+g@Ap6br~bX4{Of=H2Y&De z|HJ?IKO*@k65sF_2?#*zy-D&WGPMHC&<&bX-cq>dI$+vand_uTyx0AUmmroj2q|^9 zX6P%x0jMg{VZIJL*WeUVQlWBkWVQY*9%i$ciE&I7+!5q7b>jkJ6YRbkE(KMNVaD|S zTq?+Xvw*f2Lk3^ex;U~v`A8&S#b(&uyBWbbPS5joH<4Lc<#+g-S@&5WgVmkycYpnK zt#_%L%3Smn7GzMh-4+;X&3me53Fpmfn&f#zO%NEzVzq+QIN*(KBj`{AuF?4t_+9W& ze^S3J?X1RuaaRsh8VxF9;a+JFDy=3wXbwtdYE2d^)=uNV92N~Vk*UflOgPc}c-u(D z#_QG1L7RnX9f2WLgAr}9el4tOGng3wq6g$)Rb^=sYQkQI;(`o6)@OCX`z`)?&u^c9 z;7|OC|MRDR`ak*4{?mW+kN@%CNnh2YNc?7g&4?A7<82maE&CVlb8RY)%wvkgCCvB< z^A&XB%o=O_OIr_D(`SfoW_j8iaId5j^q#cU-*;p4mWo+8rc$*zjSPrX!PgWZE1m32 zGisLQ$weh1tftj`-`ipBOqDQ8V^M}cH_ZaDN&*NO%~UqWa#71-($981bLofFsMk0@ zX9K$ra77OZnCH7QbIzj73#7YffaNi>vVg`#+%9*Qd(uu=S_ou&k3cg7U-JE?C}{C5 zB8TO{N(z{hyopz_Z1sp#RtZeZp{nTnyu6=6o;MyhsGuYGF=(nXq~%1vVtWEus;V@S zN}FdVTffM=_RptSfC0$K<14MIRdSvf$7;kO2j&UM&CzzaBX&g-DDUZ=X0CKi5@KTqJ%A0e^q$-}#e2{kQ-2kN((S_?N%?yMKp$RgWU^8(-^;Kdd{nyDZF&RW&n9 zNa!qFFni6Y*qS#Z=t&lQ#c-afS?X>ic4t#sC8yFn`(?s!S;y2STwL#UvvKFR@py(x zuf9;13(YhRN-`Y2jnbJ#FvTI9w44I0*`<@Of~uV5NtSF0btQ!{z@$hv$L?m(6z?;K zh*W_@A6!%G@*LM1JDAqs0s1X{*p^ZOomd_~B93=8emCTlrjT$CGinQ_r8Sa=T^Mp0M`k(;NrucT`eF(t& z`|IoVH6&HSJS`R}T~bxbT!lU8tKSDCAix3EU`|NQgDQ+0BwRn3)>3lPl*@?65N+eJ{N7^Q^l8j=4|NkhOLfz)zy8Kg{^U>n&7b<#-}|jU^LKvc zXa3I5{L=H!eeQ!F_`x516p3%_h7%BVTI(f272t*f>YfSVm2>M2@|xp3=B-2zZ;gN~ zhy~uLkM5ZOz%Uv^z-?4%Hh&S!WYOtTR(WBkTh#F5L;r{(X4DLb=H~6~tP)~@ zRf$phaOgOv*9>Kug;_^6DM1oX%k*op&`nuoP**}Qcc+33Oy1u>rPwCTYJ?7}ya?4c znu8|VB#%@|<6TmJs-j=Qi1W^I%B*55bE-5o0I|h5eBN>Un0dZZp%?X-S_IY3&KtVzl2)_M_MI+tkv6-u16`kBchl-@ktOh~SXl7xogb_%< zIfrVJW;r=-$boUVfbAl0icRgJ`&)sMMov{}9DxdV>rbo%fu+cbZB2`Cc|{2|)h=uo z2$%Ke8>`Z-R^d1-xGIH*W& z26L^gFIq&ieFrdvELCA+5%Iv~!|bD{?3T--m9x!jXVN`$zi2IByU?FlrPQN{bm7^{3Bob;UD?Z@6`XgN0IoA zuO&VCJ$x1ea#^3k9bMi>3RBG?^*Q9NkM~DUs^j(+t5LA0L*8+u1qSClgCX}Ll7C5!3lOnubdhK=B`=C zvsCnE-l(eEhbCD~ESsCzOTv$LdCXFoF?Mau0Lzn=E0i2)i!Y1V1SvKEB~6ju0C8(& zQFs~IlW3Hm&m1Q*p{VH7+##YSQ1dJms@%*OL1b+6y)O#nZ|Q0Gu^#JDB)<0d2m*N1 zUaf;F3#G!cQ#oeoOr_R8xX%>$-sYcg-cW%Wup!*fxvLnAi0}(Y7-}VG<}_jfL=las zEEP?{kd;h;6COl+B47|zhO1pZsQ2d~PsXSM=<{@xo4slj>x7>rr(eTJl`w$9LN2|a z!jD zO9n?Wx<%LZgOVIlO<5F;IW-RIUSnW&{Akn%~Z6xr2!K}PIGAI~~Z zpLeUY2=pD^V4=2`q@2Nlz9RfMgkifG17${o*!GoMUZ7f3rREGbU&f0Z$UF0t3Je(` zr3Aogk<^LiWd?JARaJAkS6WPSDm_QfqcSze<1PEl-rfiE(MtAQYSx;O zBVGu1ahKhv0L-jFbtb(Iot=~DE)wZJEcAqap8TA)A!n%l))sw|zbm6fz6BAp=Z zDBa5hIUUg<6cj}_$if_9+@Vpp=ZoPyP~y9067Hb0N-B8+40%Q_Uk8&ex0iHjiSzD& zEXsqGeKP`Ba}>g=R3%_k)w~x#vPne~0+107d8Qe7c_N-@E)w1aVGh=`oFLIJ={*I5 zy5=@+G_UANAx}sXFRnVP384T?Om8Vx4g)RR+HTPo)`<(ZD9T)*p_J26 zddvxL7LEQ8!G5;u5nuW!5})mQ*+aLz=CJeGDjM|zTkd<3Er%{vh9E^fP zn6Ozd$u<&>)W|xrj;xDex7ylfu}|rky503WrW?ES8urxU;=~;1oYQR3N+`+QOLj0i z?JNxh%wILL^R1o9d4~$)@V6gcbI?QHczvzQ`?bHuiggRC#GARI@X*cD*~nMHYaoS@ zb(D-)@p&Z#(GAq(isEq*Btaqh4m;S#+vkU5prir;6|d75;2YzRF!!)#Y_R50%Pf*< zuz*z4GN(@SR%>oKj;iVAtu^z;*g!G|kDDNxD|-1wq;g_qKbYG%Fz(2)!t8k7VjeM0 zklHS6yI_`6(KDWo!Ypn6LiXcgOaXyv^F)|xN+lJQCZSUIHyj7Hi?-L(j5H^}Ho;uH z-Ze4tu()=E<-mE<`TQH$@BXp>iif)Cm#>$}+y85qcvOf-k@yVO`ZfE%-wewW3Dszx zJq{<$9DO^*rOLNFEsrdfH5r=*p$RWS}4Jy>oxMikdGVW&$X)&Fyji1|^8=Y8K zz-M`qX=~%oW0o63%z}U$(hZ&5n021T{*n91R}#>`r+;SCxMBv9(P8eiWd@wHo)fqE zlI#4@F>kZZsxV%{uFadVN~Rnom=oB-5|pfjnNnp{imUPSPIXgmP)CL_=|uws!5|}w zZUiN0E>E>8dre?kPHLhGH97-%hdBVS)S_qtloOe@G9lLiS3q3!3$e~&?t?>nQJ}{Nn5aokF?vY zFF%hn4=3N-+BaRo10^__Le6sIwV5|Los!1ANWBa2x96QC$Bp+lv7}%2@-@nx7UwD% z-n@!Z5Q4@W$k~yc2fQJ=+9jhO;!4~Ls!;(^38*a6VkO8S$C?ko92R94Ny(T1i6Gb4 zK2jk%!S)ofHwvVxidG=VQ9KY4p?F$jYG0^6Ku`(=eDXhwvjo8NbR~(ZI^h!}7y##Z zK{(LV_GOQF2~T~j&$LQ<&#d<$Ib=Mcas% ztuV!VDk*n!Vtx{p1^{zt90pxlydNM9Z5Lj$3r0?oPM}QMO(pZ`?KbNy9jCG`O|&W} z+)%>vx#9_$yLa)t&z1Kesk^0co8?4zdvf@B1Ay%+SgNL8?o8lD3G=jZGnxFNsxX8S z$|{=&B%J2c`oLy@**l6v)KC>Gu{|NWVpH2!_D=~@n4nXpobUuxFbliv1Ww3QtXzQ< z6dZspuBtg@q!j5*rJQGGi8OkIm&fzOl)AWS^m^`@rZjVS6in^_OB&wp6>o)^A`oOZ zI_W5?SehlM3`*c&OqegmyRn&8WnVO^1Vj&%q|I@Opo%p)57h+l(kofKSP3;B@7QNm zBOZ5-N0IoNokivtJH z`-ICx2$}BQ-B4Lo=^H)Ppcvy8IrqL-zn)?O(Ym`qWtxNtl*Q?LfvBuG3SLrGiFCbV zo73ezWhxryiFxPkLw@{anY%g2ZJwg7{DsBBgEvN7gYNQBe;O83ND-;UMs%ase36;~ zrX(%;CQ`8Z5(%aEH%giXq6rP5NlIuGCCpGOX!6Fs(;Q~ui-Z7t zlm@BUW!ZI=^>!A3?$#}onl%Y@jZHbGon%>@X=CK>yf~VHnRxs0oU>x%_9VecGkZSs zo)yLqws`9Ml+MyDiL_X0LfDMEb0;0LZcb7SfXpRLaF$A_oO8?x4u+$Ap3SYfgQ(t^ z;~aAoN9o9d#;$qs3bW>o$6LRBy!DIr*Aq7Br{Y|}e7OSD^ofb1L+HlMDf*f3(C5@~ zGYaQ3EYL2nmh+UkGBNHUuqMnQ3MN3&yQXayVeAe;-x zWmQF$=YjikS)_NV4BAN0SYj2GRcSQ|tw!TY*nYfapXp8Fp>BEpHc=!jCN~oO_;UuXrzA^`Jn{{Sg!dG_m z${kqYoM-BGKN`v-g4`U@TF^*L@R)UGr68ERHzS1-EyA3dW1BagH{?X$75yOZ<`zNU zTbKi*^6k9l7zX&PNxM&x+MRBk#qq*FS2JFMoAVmh2+_v7Sl5;ZJg`5(T&1Bb>qWQD zXd6k9vH&33sG4(HS?^EG6H?3rl~BV9C7lOI?XO8d)yM)%f*HUuXNndVMl+?Ix9%La zov^cXOI+g0b|nz=ZpUCv$W?_(JMT|sh^~H}nH-be3}T)*Zs@zVr?h>f&eD?;O3rEX z&MMImamIddGgUw>0%io1(@6zkQPKg95>{!H44=YG_fR+CpB%gCQ6wJg*PciKCJ~Ue zLHgwb0;Ph=Re`*fJ&(H0I#WhGHGgX43Wz3xn3Xk)uxl_-p=<`y2IF3QbLKy~PXX8F z7w4JvGT;P^T-iEjs-n^8Ml-@t=N(EyR&}9W&E&0UGb?E@a}wk%+!e`JZ+S&%H@_G+ z=PT4oVnw<hfNKl@kK`9?`=>X5|f^a<=+VH$C?HN0In#w^k?R zy?lehqJ&Rcd6zdgD&OV1yGk?yvIfoI@69 z-S=h92;(d*Tfiue^+QH&VOARCRDT|YUvhGQ9VTEFg@yb>slq5oLKp#ztnThci7FXQ z9wb#Y<}k>j53njV538)!NAy`bQg27zmx2c-?AOK}cHRnj2gkG#RE{ZG%uG6i2$XB; z952bBeQ&<(%HVkGZ*Q)|%76ePM|gnLyh)=mXvR61sRiw*e1Ub-KtsP&+bBp?;1FlQ zRBqLYPXa#}HQ(bjH^AiEgiVQ(*I2Nu65wI(CoQ%o!?lsYf`r(htf~U7k`~%uY57OY zwP@$6B^H*TZptYYQ&81Rv)l}(N4x1WYd1ZJCyyfWHCQWAhfg1*aGx~`qjVwmdAv-R z+oimxaD^O2+K``;0Z=)VG$%HPO2$fl(`Rjn2SKG=wMK=h1J5mKBm(KE> zHA-iR#5HU)d|?kWl(hW71XF58H|!cl!kcRvxVloan59Ck;H1;~nORvWjM7;~V9RPo zqoG|2xJfw`hTYlSQCxzlP&rXyX^}RE(M`)Yw>db@ zs#>J$BkMi|A_!Q3Y(yx{h;i_E3zhe)ZBNQMMwZkpHq^*6;L`f`v~`cgc9Jq_rGYW$ zoCB8Y1REjnOnX)wvyL2R)+Owzxn3?tB=Ke{s8K61 zGgB2F%(H<#uycEWD$FcGZv|9k1tQ%|%~VC?6D$J?IAK}AN>J-ZWI7yg2HcJ^YCjH0 z+QkdXPHfp&yWW4w3sr92iz~BJrJ&jt1`9?)Y6+y7j%8T^#Wu>R3MAA}8BQCGrDz0L zt1|$WV2BZ0_4KF$aD*E0D5QlF*ChZHp?(|@fy%X3<^qF?(WIg`?`~sk)n?zG61Q49 zzj=PxX1{TMpc2?}-3HKt+5xJ-{A67Jb~n8I987&SiQi$|L;?u%)}sYi0>r)P7Tg0I z5km}m`Uw-YvC2WIzu3ttudAuOG$t_9HhRE7(~t)HOT7Lg0lI2kj_7{G`Hhgr%W)i+ zIn9rm->&Mc*r>Zuh@+2NErUr-GwuBYSJfn<`#?6&WgIQIPJ_8tG0<;k^#^8=oB!fXjL>h+;azpoasBP|Jn?bRM1J#($W!vSflHIo+ zfHXugq7|R6aZ?#1)e9JOt81Mfmu+<@5KUx+2p3gli)MhJ5pYAT>w07Yq484?h*r0s zccTJ8m@WcUncw~l7x~G!{%z}1-SpWcevf*^`PPTjn$U>mWK9E=^_XiRIF9E8i7-%Q z)=F@iAIUPZ@{#VrA&%e(HCj%=0gw%OaZN>=(a#teFFVQ3iG+G+tC+sIp#Zq{1{T!? z06ko;eMJvq1dkRl&6W`X*SZWGhMa9p=0v|$zwLazm?v@)?5HMT3{y2%t_!ZPn`-nnxx4{^tI9JXpgHZGBA3oCc zd2IdGn~6_#(`S?TJ${47y%Rlzb)_}c6D2tegRX2%L=)N13v?d_3HYi0qk zpUVj&9<$c90L;|;EOPu+!+L9c$;&&uNHQah)UhvID>sgU`&K?s4Fx1}@%m~f*TnhF zfBqx%gS&8l|2LlB@a<1{eA_H0^cz}_*MErHEBf8hF>VH-0CkqnRabSWm7mI`TkzHb zFTVinwAKk~8>g4OncEQTUZB692L(V)M63q^M>9f%BwWeXq}D^o^!3iiH>?W^ldOW| z@k&4+e>Q}Epx>N}E<}qud49vXaJ;zP%R8h?(O*`7omrk|_tjx+I}1S9EpXe9%e;X0 zg(&|WjO$Mc?BDeu`0NUwP2%?%Hvzz}=L)F{O`SvsCG7ik0weG~>&kj8?5sDyB#$Nn zt9&jPdSA7wY;4YG*;l%Z5o)C2ThlMMwk^|NXI+o#q1%RIHy+5Am-^w+3d2B<$W^&~ ze%xwNY|&JUid0*fixIt@$spAE54UF)DS);!Kl-h)_GEolm9<Bn6^V9B#lxC0)^V@# zi};Kusqz+v9rVqM8%S3R(Vh<|mv67A7e<33fH;4}U*6G=O+5m&A3#{AvblBQNz=xf z+k76bXnzNp?o$H$dGvoaiT`l5rvZO_)V*WKO+1=ZtLG!g#YT;n;GH(K7*(E`->w|3 zzce**Hv<4KO&!(5hQ#$S-d?yYj}8Gix$J(NHNeApl2Hla^6- zLus9?sk0bA_<&7|PE%g1fTln$F$IrGMhBUU6}Jiy%(Xhsm(gD$3b?8+a}a?d_*Vvz z6^e*x`*u0)tG{Wy*;reEM7WPBEIY&@9#~bGRuj6|1m$&`=g|&FHwE%4%(VzB%j;Ad zs}@|K42QGR1U+81EGoTut4WIYFOI$ti-MY*5fS4KZWYa$RYLlvmf9?RFJs7KnW={PKDy!V_*nk7@-JW0 zt|tEBcD!~qqLHtS&55eW6S*K&Zw48W8fh-$qbkem>H3C%mdvb`PCH0rblrLb>jy81 z@%~3dSOFVqEP={?d(2FP6N)gRjE$`>wQpryhF4`G+F*(WdqYEm?6%(jL?_fM2DV0M ztD&MbvV%maiY(ZsoQtT%u*+tuCmDTkyb{PV;07G3TUU{p1-W^#$?PN%kuk1v?X?rB zK!|#pD=m>=xL{;?Ax>jQnkYn2sOIVUvP2xXvg$UqnD9CTKY?FbA z)c7`wKnHJD1X{#0Y%Tk7mEl{XDph$W5Rr^8Vi#Fyr=;L+IX2N1sd(avfFt4v4iuhe zHQ74gxmv1S>8td9t^G{dVYCJWf;fUB6v8h@`>(HEKmk`ejp=8w_XPne^&$YbP41** zG_Rg>tXXR8Mpx%V$J)FKHc?~%>Y^P~?BMRIDkNaw z9&BQ8gI=>T4G0Oa_IyU8+AjdsMo$CZ4e(Z8ke~)?Gbf(OyV2)bCVL=Ypj3rQyG+_D zaza$AO2C~^zfH!z>@Raw&6Na3kT!vx?^OGx=VYR&38rbgp$=_-M%b_mj6!@AcKTBa z<1;J#vp$=|{{%0IE8U1eKdNAu0&oOpVWuA|v%Kskj^Hiy+SP=62+*VYmDQz};GQxR zH6643QLbvs&VmYLVPA=j0zR@fo2Q8c&X3G;i1#Li?>WD;8mv~i*#@&}v1PxL0b&&l zY*K}YGDK9-zzz@u(8Ud|*k}vZO0|VZDch08D0aD#LBa{!>p>!8q*@uuQ|kuOL7>ykL0A;1;$(5hqvfu2>`#Emo(zjU2(Bh7M2GN+XRA-QHL2rSxAee5|#~ubsE1be)Mk8Shf3SyhmQ12jC#X`Cy| z*mvzFbP4b(ta1o1L-!s*h7*05`Z_CxRsNWjzz`3x1FrJCphktnP8@QN*k2q2$mb3= zu6NFlGCv&e2y3Y|Rkry}VD&rtIE%|@mL0!KYTr;4pDsKMi65n z%D(30nq{yZ5shkAOA^M+vN`&Fe5#v% zAgTe9Sk(yT#QXrs`%i910aYcK+o?cB1lAQm?Np5G162#UR<2wj_112qy?NsL71zu; zriKBwQH)2S*`d@rN7W7W4|QQ(AZy&A!(fFdCnDq{y-1kswBT-Iij-jCK%Yo4f*82wm?_f`Mz`~1tfdg!Mks(hwfFvu>R zg+|^3#kize({+XTN-%L#3?$K}#dKt1ekGfTw7`2}K=UgDINYLlQ z^8+Aj$?0g!Mf@c)1IFVk&Ug1C<2cnxGMebf$*O2A+Hv$d?r$KuCcKb|e$?APF2tF( zy$#wT7l*+>fhB@ap(UB_>&$Dd(V|C+pmaFzYT8+Tc#`R?poVC|1~ONmMnvSq<1f5E zPzw~IJ31uhrf7Vsn?A=)pH1RFbMgCKc<+Q&rR%-Bra3{9YOT%pw>Hc;4I3i}^6M-S zFw)yRVG$zE!uyris<)^EWw_WfZTSfPuP^-HZoz0rkiEk*%UC)dKqugK+SMCs$#TR(2m&~F)I zAzX(BaZ692htOIQD|U;i3N%22-rkI)E+SRh)<@`#=H=BvC9wI})* z+%t+JB;p8u>Cv=-MBU$qHFM?4JdM~BZX*lJb*}n4>q-Oh+IyJiWih*O3x4T+*#rtW zS9QhPGhN&^(x`q6@kShhvLDxaYi!ZBHaEl|2>v`sG^{{nQdL!yh-H^CgnMj9g-H;+*LcEk-bP$c27+Noyak04TvbL~WqSJbt5qAVYbYj^+!~B3#YwG<^bX5$tu5m-_ zh@)y{T~}3t*wR`zL_;()MDzlqrID4Q+HHJ(%YNgp@Mpl^XOs9XYpWW+41J_w^rkaw z6~vtvge<&Q5jf)L?e?vlX zL6l+R-yWGR0wHygB!ID>9JYZWeHpq5LUKN;zdnStuky#LGDfh87voCVz(sH`THU~J z#MZ@fXJiX@?yK0$zN+=$9ekm>=&FS2e5vcpj|L`l;eyFdq7p`*(`np-_s)CMA&ddm z;`t5NJ7yvV>Z}^c7%Nk#AVjU+%805!H(BcP`sw`Y`QSWJ!~z}#7f@gzIx6Yn zez{e#A9TigAJm1$XpV!DGBYn%_2@4wtdFX)^bFhRfp|3uwROHfa?@$ubN0FvtGQaG zBXD~uHJ5=hHS3v)vVbTwT6Q|?@A-Ous+<14v)=#RX5zC$d^U;S=EZ6NNZ=L{Q9zkj z7Jw#Pi6*~wbuqX*cx0m%u7tt7hghj}`;-F29W4 z7>qW{Zyi64p}btFy7rm%q%4p^K~Z3uSD9cSG(Wmp6>bqn#J1X%{YYPF1Dlp}uKLJY z<-Hz1nvU2STmbxTr+}z?(-FMVUuUf}h^%P3j~_vYe(vR5s-z-Di&{j%MF=Z#EnFXP z;drg_QujaDK+UQuwP~(dWpuHzDL|1`y)J+WW1T$TTP?Ki;|=Y=QO*mw05H18ji8@; zS-KW%udAx6FxgzTcqKe9v6@;$Q-H2T>3G}yxQuiadhQm!FnQ~P_W&!wyCriQVbWxp z%q5akR;jA0Vvm?AK|tz^SnvPipTCh_}?o8o*AV)W>=dw*?l*7KUO z3V%8CPahYEkb3A#k9*h5I#VRLJnQ@}b7BwPn>vk3Nz2?KqA`Muqv=2qM==t(>@~9t zk)owO-6pY(-Szl3%T&1J0F(0>RYAssq%>;e~9U7r!!eC{slP=jMfeI4i#`{k@!-|`L zL@q?-WaYi}pq~;T14TLjSZ#ro<+%CnwV)uHmvdDnX1a~Zern7MO>F8-?1Gd4A`VrC zLXvU<?y{`u(4 znNqS{#$#0wKs~1SQsEGk*HKp>qu2;5NHbJ8E|XOB<-W}r{S3I_5MHvju*EZ zV9!(6IjYoqv>VmF;a+wX=OfcTq+9zzlc;$$$^8bY?8*2x>wVSQ8L$&g4%Ub&aJxN% zXwfNITKfg?^sKn-Y0g!ZtEy%hbq!iLNGKWaUous-pnzgd00BtDzO?@-GG@PFn{K7I@dyVMe(`p@qY8TvWkX&ADADYJYF7%N1C>vAO?Nw zXt$8`$Za^lE44vA_r{&wG;$G%O3f7n`+?{a{3v{zUR56}#U0OwF5ZQkC)Ha2L6i78 z>)XUmwQ35YXo4^bCBe(}$Xo{5*@nnk775o*vPv+30ALr9&#WoQB_yFnEb}jkRS^U# zv9d))Ya(n2n3T9=;9EX6QJYp+dnyH+3{%${>`dt0}VgbO`lETH*FHYzH1M~ z1+8*rfe2z6=jA^==2qNidE>8x?84lRFOY`*Hu2u{($&Z_Au^ZkyW9N;29fqfi@bLo;x+(lo6}eZwc~^Q)KCq& z(Hx_|w6pvuzb{Amt<@itKeb9Qk0`Y?w!5Ni=CCt~>Gn{ITYW2NC&$3`73hp~1$zI+nc#_%(P_Jv5MO{^@>_}EN4ECWOyx!@m@mgR! zH3f_IcF0v#r(m0OlUziB-PGkB>59koaj$b+zbX@U++NHVI1dE@ALDW_!>+W-CE}$q zh%R7TE4behcpBXMQRVgb99y62rhms-|EX^JY!bgm{oh|#*K)=^lI=Auq2Ls3UL>Nz5_+>3&@4 z^bU7&h%h^mM3!gy^hP7ls9E*eqS1g^$;VeX6)pNu8x2H@f>!z5JLxLBSlLm3hya{f z?~u)MeO$AsaU6D>@UvI)X_WpOHQQZz2F1E6)1;$o+(=>Ei>gXML&%6(b~@k)1<~L; zt-O$vYSu7hlG3UoImGQ>nd}FuNn$IPjRF^7L#tZ5Q>^l;`lw3is(vn~`z_dlBJY8b zCv&2b{cv=HjYM(U?zfDW_4bRm#nO(N;bf&@Ob>}vk_*}8fE$X}JJxg?h+ff2@_JV; z)LVhZu;;4%g>|hvq}68FIF4C&-l0nT0|2o`egf9-iNhFp^(NZR&Pfrg~^UN5Zwt>9$w&msxOD_L`~{ zEf8V0qB!j}QAJYojO+bSxF4{~K);F2wpj(c3icRxihTUKk728E`vDq0;N* zx&UT0kFl%;GUA8vh@bWEE`K_%KbyqwvXcOSKjZeN!T?pw>2it~!5*~nK%DKZk1y%^ zR`u(N|L0%dujO0UYuDSry~U9Bzl;s5A)5?fD`|r`LN9?h-*-k)vE4_19rr6;c7sRo zh=89{nC(3-dnMBT^O^tc+u1@tjaIP8ThnWgd*i(k(8sC^ImBJ{{YF;C$E<=0-kQFQ z*jeHQ5RQ4WmZK@g5h(M5*K-xj9g+85KiEmU>vjl&8yLBm4_*n_^TIk0;!a>)PfK}p zzx<*4-9TQCSuO@8MdxuZqbk)~8?O!io=%to8Wx0%!`x6;?WxXn`@=He3bMh>i!QE- zS|nS9$J^BSNUsvw&#ePH$%6|S(urWa zbp9W|+~0ca2&q*TN~FLAUg;}c#>M^fc=w5O+4d3aI~NvM-tc8#iF4Jr=w$Z-(*$Q# zR&8Zrh|@fRug4EQU|;5+5l2x$RJ4mnnUGfh-tnHl;e9AG_-xLl@w^OHHYcCaegy#3 z2cmX(qQJj8TEI?(OLaLXs}8k6LaNNX&RLalpxxaY2pcwHt>MI4s2W1=1JMn5)Ava4 zT|&Pj7VG)anuS?UUD+Yrgcb@U*QI&M>F6d|MFP<$`XX zY!bgi?ODLTy!1fj`CjKql-1tGV2pz5@osU&%f)!?B)@$68$$5+6|Jaj$I6;l*%mn> zhA2G2a0!rJ7EGs+wQ*>Fo_VJCAGH-tuVLmY1r-HF=#{=l3voDA8I=(o(O2QhRSW|6 zrp>{AHaz>a#ZTRpkKE%igB)y~4Qvz}Yr{SbK#Hgf&wGW<1OC!z{z zmqB14n=-H&e;h)WlvmBGKmkz+zzRfE`Q3WNkQqd@5NYE8R5P3asuC1HI;}{kK(w1A zxL_9}byVCcbBN)@`o?t@U^S|tA7k9$G>}F;X>?3dz_xTWxEb6|I-^`JFFPXS8sd!t zQl3udxL@q6>a@UHj9b8+meY;jl{e}wKEGwZS(EthL`|RSrq3qv8;zT|heB6z#>+Ww zJ5p(iJ8)a$t;%II;TpQ95Vxt|$H?VnUh&l_G-Qy{N5_xaW@$~z`*DDJc z;zprKJQ{=4-o`~cgdopy6;2TFx%{W1(9+?F$C_7Vlg?Z#{nF!+CE^GLd1d8+FFi?6xY#p&!}7TI(G? zYT8A`R5uXhhAzyNGrd|P#}#8IlZWuqHN-SdR|0KkgzPK(X87!V5gTkgy&4?Rn)wnO z#71M&fZ9j8TwRRT3XDyIAXtmhtKTluYgQI&x)L_k*0}G-O4jpIDoDB?Vy~;-zv248 z`Jgj;kC#_|k4FR?sJQ>UqHhUPl?zymh~8+d3u_U{HvXrR79{s=X z*|9M~f-%nz$Z8uFA#n?eB(Lv~&U@F2Ft-aqAkP zA-;9(T#c)I+o|K_bKgFJ5YJ?nU%Gl{6R+}PxyknsfP}N$*Z|K$0bOij`8fg0@-miv z6JI-z=x6#bSN?h~aVI#X$ZhffT6o{SueHvsq&-@=^_5oWhr_xq0mSmm%#~QP6g6(s zf)ql)TkLD#OMha$33PaLfna53?qnp`h!Be|NLDvhYid2bgUI`Fwu5;EtbR~&7cMi) zr=0~5Vh?r8voIfCRV0GZ)p~pOFaj@)%4JU4as_M-Lx^avKh^8c#RxiJy6}7{*;S@s zAM5cWF5Xr*Fs#R{{Ygc8iIcdMO_IB6*G8&|$ z&gGf@SkKV%vU{|bF>Wu)HCeS=15tQ<``f?6yIkNzJVRL{)NflDb{86|sze;F*Je<5 zmW~|?PFF%-r@vk%6ym-0LH9gG1dQtgE$j9r6)Sq>BB0iav7#@a04((N(dWlY>s}Aq zR=A4M*bYZjL;-Mlomk~Hn?%LMSl;=4R5Tnfiy?xpAfTq4%oFQcYgQXWTIk}UFUn*Bo<``;{N$9`>f9<@t=FH3E<28bsRTH5=p#<0PGR}2);aBy%Y+r zy~Bj7)DkkxW0a8qZB&9$Ow9`aOSL=R$bvyVVI9_cKMXEZFc zGPd9dh?;F9_x|>MZl?%B6&zxOA|<1o3d(i%~b4249v&dT5p2wg|;#- zdl{!IBGBGaEwAcg1KPL|dq7kh>eshWw;eU^ld#`hB^nHD1glM;IWZs11;Do()sX8T zq2~5d5Gyf1Xd^GplQn6h-`o!ZXw7vYUG1>i2(((vwdZ1+PbW1~7Gv91xFe}PZ@a(k zPU5pZo5XKh1p@dMud8xph7`gzr<~D_7ApJKE7PudW|_4PR&Tw=eJzGC6IazN3m8E_ z?<+S@XoEQcG;P=eR!-HDxe#BkwUaZN*u}RI_a?dQhZPW#q$L{srfKa%Y^YWrKY z*4kTOt0fzZq$+C`_Lf1wR&f25^E#p(DCP9Jc2^^r3dQJ(4bLFqHQ{RFX`bbGLzz1` zM8qvv<~FxCZK)STEXG+yvmv)O$-s2!c!PGnlxMlxNXxL2LC7o}Wial##fC$`&dRmY zF1leFbG7E9h19~u^Bd-0aD5Q)?Mw7qL`(28FDqc`(eoi0+BXrC4CvO+4gLmzY4zxmKpB7J{GuI^CatUSxqF28eBGJiC z!R2*9p=cz{a3%5rBWm?^6_x!~8k^g?iqp8V2)y*VH#KgZ7~C896fBY2q(9IxUUj^& z(s>!mHqLy4oSGQKDqQ(_kp0FJ<4<+dXOs9H>Q850>01-NE0IPp%d7COAM-C~9>IH4 z6HU%IN*o~+R#ui*xe+fT1e0iD<39E9>#Ve|$CH2h%%V4YMTx#Gfwx+S@VnnEv^gA&&AI-@oC$eS2-pZAL>p&%0OHfRwuyV_ za}UF3SzsWy;MSU-S*Z}QaB{oMnl;PR8}a!TE3mFyRV8^M3SpT27Ta~Nv9BN_&O})o zC~wzcXQ5C}egh~I+G@@`A8DROB9bE6ziM*{!x>Bdw7+#&H93xd`5OM}MtFtWk=%tC zcjf~wP{dxX7o#8%y%FS(FkF*N)=WCuE%XBl=iQY1{xGtzhq};e^znhmkvYq#ewqEs znm8XO2Cr$2qo!-tfMV~9fI$-VqWy>?Q0?EB!9ZkF0-upU15AVE)skecIwJp5rV7 zvpfoWNQBUu=uA`QlO(!gmmW#7jj#A=C4%|YIm{;Rq1G_VASpgFrm-yI_gNpu0%Ch4 zny}iMl|8;b-<8^kEqE0QLUcM65(TWOOD*R|&C|=m)^FdshPHv4fQ5R1)}Grn2*J#= zWi_EKKedbVFlCb5>$=>oMz40#7=IY#s`NXVLbQA z70p$hX#1xLjWOq(b^-M*<`9nKK}J#r15!Mx3I%VTL0Iijq>;;&&Ccy@6Fb?&H+jq| z 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

|4_cYXO{w$rbMV8@=vd-PgXc)Tfn;YSNYbL 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 D(b~3R literal 0 HcmV?d00001 From 3c238cab75df335e7978ed505310232ae05df551 Mon Sep 17 00:00:00 2001 From: LeilyR Date: Wed, 29 Jan 2020 16:28:59 +0100 Subject: [PATCH 12/13] Readme (#32) * updated readme, added an image * changed the image's extension * added the png image * removed the pdf image * changed the place of the image in readme * added caption for the image * center image * removed the other image. resized the center image * fixed the image caption * more on caption * firxed partitions * typo * corrected readme text --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c5c0843..ecc1eba 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ genomic heatmap by selected samples in just one single command-line call.

-This figure is generated by the ultraheatmap on real data. The first two columns show the ChIPs signal while the last column shows the gene expression of the closest gene to each region of any cluster. + +This figure has been generated by the ultraheatmap on real data. The first two columns show the ChIPs signal while the last column shows the gene expression of the closest gene to each region of any cluster. ## Getting Started @@ -243,4 +244,4 @@ example The above command adds extra columns to the input matrix. The output will be a matrix with `deeptools` format which can be visualized by `deeptools plotHeatmap`. The extra columns could be gene expression. If annotation file is provided, program finds the closest gene for each region of the input matrix and looks for the gene expression of that gene from the given feature tables. -If no annotation file is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. The above image presents a matrix has been generated by this module after mapping genes to peaks on real data. +If no annotation file is given, program checks for the exact match between regions name from the input matrix and finds the same name on the given feature tables. The above image presents a matrix which has been generated by this module after mapping genes to peaks on real data. From 90a88e28798e419d0fe6bfaf1addffb19cd4ab46 Mon Sep 17 00:00:00 2001 From: LeilyR Date: Tue, 23 Feb 2021 11:07:26 +0100 Subject: [PATCH 13/13] bug_fix in requirements and adding tables to matrix (#35) --- requirements.yaml | 1 + ultraheatmap/addFeatureToMatrix.py | 1 - ultraheatmap/mapClosestGenes.py | 38 +++++++++++++++++++++--------- ultraheatmap/parseTables.py | 19 +++++++++++---- 4 files changed, 43 insertions(+), 16 deletions(-) mode change 100644 => 100755 requirements.yaml mode change 100644 => 100755 ultraheatmap/addFeatureToMatrix.py mode change 100644 => 100755 ultraheatmap/mapClosestGenes.py mode change 100644 => 100755 ultraheatmap/parseTables.py diff --git a/requirements.yaml b/requirements.yaml old mode 100644 new mode 100755 index f54b800..a209566 --- a/requirements.yaml +++ b/requirements.yaml @@ -10,3 +10,4 @@ dependencies: - pybedtools=0.7.10 - pybigwig=0.3.10 - pyyaml >= 5.1 + - pysam >= 0.16.0.1 diff --git a/ultraheatmap/addFeatureToMatrix.py b/ultraheatmap/addFeatureToMatrix.py old mode 100644 new mode 100755 index a4fe63c..c729f01 --- a/ultraheatmap/addFeatureToMatrix.py +++ b/ultraheatmap/addFeatureToMatrix.py @@ -127,7 +127,6 @@ def main(): args.annotationOutput, args.referencePoint, args.closestGenesOutput) # XXX instead of all these arguments i can simply add args. - # paste an extra column per table to the input matrix extract_ge_folchange_per_peak(regions, args.tables, closestMapping, args.Features, args.idcolumn, hm) diff --git a/ultraheatmap/mapClosestGenes.py b/ultraheatmap/mapClosestGenes.py old mode 100644 new mode 100755 index 3b42735..ff467ad --- a/ultraheatmap/mapClosestGenes.py +++ b/ultraheatmap/mapClosestGenes.py @@ -2,25 +2,41 @@ from collections import defaultdict def __splitClosestMapping(closestMapping, col_split): - aInterval = [str(x).split('\t')[0:col_split] for x in closestMapping] + aInterval = [] + bInterval = [] + + for x in closestMapping: + a = str(x).split('\t')[0:col_split] + b = str(x).split('\t')[col_split:] + if '-1' not in b: + aInterval.append(';'.join(str(v) for v in a)) + bInterval.append(b) + else: + print("region ", a , "got no gene to be found as its closest gene.") - bInterval = [str(x).split('\t')[col_split:] for x in closestMapping] #XXX what if there is no closest gene for a peak? the current code crashes if there is such a peak gff = [pybedtools.create_interval_from_list(i) for i in bInterval] return({'A': aInterval,'B': gff}) -def __keymap_from_bed_and_gff(peaks, gff, key_definition = 'gene_id'): - assert (len(peaks) == len(gff)), ("{} and {} are not the same size").format(len(peaks), len(gff)) + +def __keymap_from_bed_and_gff(peaks, aInterval, gff, key_definition = 'gene_id'): + count = 0 keyMap = defaultdict(lambda: []) - for i in range(0,len(peaks)): - ckey = ';'.join(peaks[i][0:7]) ##XXX shall we keep the number hard coded?? - cval = gff[i][key_definition] + + for peak in peaks: + ckey = ';'.join(str(v) for v in peak) + if ckey in aInterval: + i = aInterval.index(ckey) + cval = gff[i][key_definition] + else: + cval = "no_gene" + count += 1 keyMap[ckey] = cval return(keyMap) -def keymap_from_closest_genes(closestMapping, peaks): - assert (type(peaks) is type(pybedtools.BedTool())), ("{} is not class {}").format(type(peaks), type(pybedtools.BedTool())) - splitDict = __splitClosestMapping(closestMapping, peaks.field_count()) - keyMap_closest = __keymap_from_bed_and_gff(splitDict['A'], splitDict['B']) + +def keymap_from_closest_genes(closestMapping, peaks, field_count): + splitDict = __splitClosestMapping(closestMapping, field_count) + keyMap_closest = __keymap_from_bed_and_gff(peaks, splitDict['A'], splitDict['B']) return(keyMap_closest) diff --git a/ultraheatmap/parseTables.py b/ultraheatmap/parseTables.py old mode 100644 new mode 100755 index 46c54fa..ceb7ccf --- a/ultraheatmap/parseTables.py +++ b/ultraheatmap/parseTables.py @@ -83,13 +83,15 @@ def extract_ge_folchange_per_peak(peaks, tables, closestMapping, features, ## peak_keys: cols 1-7 from bed format (1-based index) Peaks = BedTool(peaks) Peaks=Peaks.sort() - keyMap_closest = keymap_from_closest_genes(closestMapping, Peaks) + field_count = Peaks.field_count() + keyMap_closest = keymap_from_closest_genes(closestMapping, peaks, field_count) __update_matrix_values(peaks, keyMap_closest, tables,features,IdColumn,hm) def __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn): """ """ + count = 0 v = np.empty((len(peaks), len(features)), dtype=float) for i, peak in enumerate(peaks): key = ';'.join(map(str,peak)) @@ -99,9 +101,12 @@ def __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn): x = float(table[table[IdColumn] == value][feature]) if np.isnan(x): x = np.nan + else: + count = count + 1 v[i,j] = x else: v[i] = [ np.nan ]*len(features) + return v @@ -129,10 +134,11 @@ def __update_matrix_values(peaks, keyMap_closest, tables, features, IdColumn, hm have been found. """ assert len(keyMap_closest) == len(peaks) - valuesTab = np.empty((len(peaks), len(tables)*len(features)), dtype=float) + valuesTab = np.empty([len(peaks),len(tables)*len(features)], dtype= float) for i, table in enumerate(tables): table = parseTable(table) values = __getValuesFromGETable(peaks, keyMap_closest, table, features, IdColumn) + valuesTab[:,i*len(features):(i*len(features)+len(features))] = values for feature in features: hm.matrix.sample_labels = hm.matrix.sample_labels + ["table"+str(i)+"_"+feature] @@ -142,11 +148,13 @@ def __update_matrix_values(peaks, keyMap_closest, tables, features, IdColumn, hm __update_parameters(hm,len(tables)*len(features)) - - def parseTable(table_file): + """ + + """ return(pd.read_csv(table_file, sep ='\t')) + def parseMatrixRegions(regions): all_regions = [] for group in regions: @@ -155,6 +163,7 @@ def parseMatrixRegions(regions): all_regions.append([region[0],start, end, region[2], region[3], region[4], region[5]]) return all_regions + def __update_parameters(hm,length): """ Updates matrix parameters @@ -168,6 +177,7 @@ def __update_parameters(hm,length): hm.parameters['ref point'].append(None) hm.parameters['bin size'].append(10) + def update_matrix_values(peaks, tables,features, IdColumn,hm): """ The function is used for the one to one mapping between the name of the enriched regions @@ -186,6 +196,7 @@ def update_matrix_values(peaks, tables,features, IdColumn,hm): hm.matrix.sample_boundaries = hm.matrix.sample_boundaries +[x+1+current_last_col for x in range(len(tables)*len(features))] __update_parameters(hm,len(tables)*len(features)) + def __read_tables_columns(tables, features): for table in tables: df = parseTable(table)