diff --git a/.gitignore b/.gitignore index b56c81e..b291312 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +*.png +*random*.fits +*.DS_Store *.pyc .ipynb_checkpoints/ diff --git a/flystar/align.py b/flystar/align.py index 35156a2..db37954 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -4,6 +4,7 @@ from flystar import plots from flystar.starlists import StarList from flystar.startables import StarTable +from flystar import motion_model from astropy.table import Table, Column, vstack import datetime import copy @@ -11,26 +12,25 @@ import pdb import time import warnings +import pickle from astropy.utils.exceptions import AstropyUserWarning -# Keep a list of columns that are "aggregated" motion model terms. -motion_model_col_names = ['x0', 'x0e', 'y0', 'y0e', - 'vx', 'vxe', 'vy', 'vye', - 'ax', 'axe', 'ay', 'aye', - 't0', 'm0', 'm0e', 'use_in_trans'] - class MosaicSelfRef(object): def __init__(self, list_of_starlists, ref_index=0, iters=2, dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=[None, None], trans_args=[{'order': 2}, {'order': 2}], init_order=1, - mag_trans=True, mag_lim=None, weights=None, + mag_trans=True, mag_lim=None, trans_weights=None, vel_weights='var', trans_input=None, trans_class=transforms.PolyTransform, - use_vel=False, calc_trans_inverse=False, + calc_trans_inverse=False, init_guess_mode='miracle', iter_callback=None, + default_motion_model='Fixed', + motion_model_dict = {}, + use_scipy=True, + absolute_sigma=False, + save_path=None, verbose=True): - """ Make a mosaic object by passing in a list of starlists and then running fit(). @@ -50,8 +50,7 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, star_list['w'] * ref_list['w'] * weight_from_keyword (see the weights parameter) - for those stars not trimmed out by the other criteria. - + for those stars not trimmed out by the other criteria. Optional Parameters ---------- @@ -80,7 +79,7 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, magnitudes in each list to bring them into a common magnitude system. This is essential for matching (with finite dm_tol) starlists of different filters or starlists that are not photometrically calibrated. Note that the final_table columns - of 'm', 'm0', and 'm0e' will contain the transformed magnitudes while the + of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the final_table column 'm_orig' will contain the original un-transformed magnitudes. If mag_trans = False, then no such zeropoint offset it applied at any point. @@ -90,11 +89,15 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, separately for each list and each iteration, you need to pass in a 2D array that has shape (N_lists, 2). - weights : str + trans_weights : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want to weight by the positional uncertainties (variances) in the individual starlists, or also with the uncertainties in the reference frame itself. Note weighting only works when there are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. + + vel_weights : str + Either 'var' (def) or 'std', depending on whether you want to weight the motion model + fits by the variance or standard deviation of the position data trans_input : array or list of transform objects def = None. If not None, then this should contain an array or list of transform @@ -110,12 +113,6 @@ def = None. If not None, then this should contain an array or list of transform then the transformation argument (i.e. order) will be changed for every iteration in iters. - use_vel : boolean - If velocities are present in the reference list and use_vel == True, then during - each iteration of the alignment, the reference list will be propogated in time - using the velocity information. So all transformations will be derived w.r.t. - the propogated positions. See also update_vel. - calc_trans_inverse: boolean If true, then calculate the inverse transformation (from reference to starlist) in addition to the normal transformation (from starlist to reference). The inverse @@ -131,8 +128,25 @@ def = None. If not None, then this should contain an array or list of transform iter_callback : None or function A function to call (that accepts a StarTable object and an iteration number) - at the end of every iteration. This can be used for plotting or printing state. + at the end of every iteration. This can be used for plotting or printing state. + + default_motion_model : string + Name of motion model to use for new or unassigned stars + + motion_model_dict : None or dict + Dict of motion model name keys (strings) and corresponding MotionModel object values + + use_scipy : bool, optional + If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear + algebra fitting of posible, by default True. + absolute_sigma : bool, optional + If True, the velocity fit will use absolute errors in the data. If False, relative + errors will be used, by default False. + + save_path : str, optional + Path to save the MosaicSelfRef object as a pickle file. + verbose : int (0 to 9, inclusive) Controls the verbosity of print statements. (0 least, 9 most verbose). For backwards compatibility, 0 = False, 9 = True. @@ -178,13 +192,18 @@ def = None. If not None, then this should contain an array or list of transform self.init_order = init_order self.mag_trans = mag_trans self.mag_lim = mag_lim - self.weights = weights + self.trans_weights = trans_weights + self.vel_weights = vel_weights self.trans_input = trans_input self.trans_class = trans_class - self.calc_trans_inverse = calc_trans_inverse - self.use_vel = use_vel + self.calc_trans_inverse = calc_trans_inverse + self.motion_model_dict = motion_model_dict + self.use_scipy = use_scipy + self.absolute_sigma = absolute_sigma + self.default_motion_model = default_motion_model self.init_guess_mode = init_guess_mode self.iter_callback = iter_callback + self.save_path = save_path self.verbose = verbose # For backwards compatibility. @@ -214,6 +233,10 @@ def = None. If not None, then this should contain an array or list of transform # is passed in, replicate for all star lists, all loop iterations. ########## self.setup_trans_info() + + # Make sure the motion models are ready + self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, + StarTable(), self.default_motion_model) return @@ -257,10 +280,7 @@ def fit(self): x0e y0e m0e - vx (only if use_vel=True) - vy (only if use_vel=True) - vxe (only if use_vel=True) - vye (only if use_vel=True) + additional motion_model columns """ ########## @@ -270,8 +290,7 @@ def fit(self): # x_orig, y_orig, m_orig, (opt. errors) -- the transformed errors for the lists: 2D # w, w_orig (optiona) -- the input and output weights of stars in transform: 2D ########## - self.ref_table = self.setup_ref_table_from_starlist(self.star_lists[self.ref_index]) - + self.ref_table = self.setup_ref_table_from_starlist(self.star_lists[self.ref_index],motion_model_used='Fixed') # Save the reference index to the meta data on the reference list. self.ref_table.meta['ref_list'] = self.ref_index @@ -306,7 +325,7 @@ def fit(self): self.ref_table.detections() ### Drop all stars that have 0 detections. - idx = np.where(self.ref_table['n_detect'] == 0)[0] + idx = np.where((self.ref_table['n_detect'] == 0))[0] print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) @@ -328,6 +347,7 @@ def fit(self): print("**********") self.match_lists(self.dr_tol[-1], self.dm_tol[-1]) + # Hard-coded not to keep ref values for MosaicSelfRef self.update_ref_table_aggregates() ########## @@ -342,13 +362,16 @@ def fit(self): self.ref_table.detections() ### Drop all stars that have 0 detections. - idx = np.where(self.ref_table['n_detect'] == 0)[0] + idx = np.where((self.ref_table['n_detect'] == 0))[0] print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) if self.iter_callback != None: self.iter_callback(self.ref_table, nn) + if self.save_path: + with open(self.save_path, 'wb') as file: + pickle.dump(self, file) return def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args): @@ -386,7 +409,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Only use "use_in_trans" reference stars, even for initial guessing. keepers = np.where(ref_list['use_in_trans'] == True)[0] - trans = trans_initial_guess(ref_list[keepers], star_list_orig_trim, self.trans_args[0], + trans = trans_initial_guess(ref_list[keepers], star_list_orig_trim, self.trans_args[0], self.motion_model_dict, mode=self.init_guess_mode, order=self.init_order, verbose=self.verbose, @@ -396,7 +419,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar star_list_T.transform_xym(trans) # trimmed, transformed else: star_list_T.transform_xy(trans) - + # Match stars between the transformed, trimmed lists. idx1, idx2, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], ref_list['x'], ref_list['y'], ref_list['m'], @@ -495,14 +518,22 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ## Make plot, if desired plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], fileName='{0}'.format(star_list_T['t'][0])) - + ### Update the observed (but transformed) values in the reference table. self.update_ref_table_from_list(star_list, star_list_T, ii, idx_ref, idx_lis, idx2) - - ### Update the "average" values to be used as the reference frame for the next list. - if self.update_ref_orig != 'periter': - self.update_ref_table_aggregates() + ### Update the "average" values to be used as the reference frame for the next list. + keep_ref_orig = (self.update_ref_orig==False) or (self.update_ref_orig=='atend') or (self.update_ref_orig=='periter' and ii<(len(self.star_lists)-1)) + if keep_ref_orig and ii<(len(self.star_lists)-1): + keep_orig = np.where(self.ref_table['ref_orig'] | np.isnan(self.ref_table['x'][:,ii]))[0] + elif keep_ref_orig: + keep_orig = np.where(self.ref_table['ref_orig'])[0] + elif ii<(len(self.star_lists)-1): + keep_orig = np.where(np.isnan(self.ref_table['x'][:,ii]))[0] + else: + keep_orig=None + self.update_ref_table_aggregates(keep_orig=keep_orig) + # Print out some metrics if self.verbose > 0: msg1 = ' {0:2s} (mean and std) for {1:10s}: {2:8.5f} +/- {3:8.5f}' @@ -557,14 +588,15 @@ def setup_trans_info(self): return - def setup_ref_table_from_starlist(self, star_list): + def setup_ref_table_from_starlist(self, star_list, motion_model_used=None): """ Start with the reference list.... this will change and grow over time, so make a copy that we will keep updating. - The reference table will contain one columne for every named + The reference table will contain one column for every named array in the original reference star list. """ col_arrays = {} + motion_model_col_names = motion_model.get_all_motion_model_param_names(with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -617,7 +649,7 @@ def setup_ref_table_from_starlist(self, star_list): # just fill these tables with zeros. We need something # in these columns in order for the error propagation to # work later on. - new_err_cols = ['x0e', 'y0e', 'm0e'] + new_err_cols = ['x0_err', 'y0_err', 'm0_err'] orig_err_cols = ['xe', 'ye', 'me'] for ii in range(len(new_err_cols)): # If the orig col name (e.g. xe) is in the ref_table, but the new col name @@ -626,7 +658,6 @@ def setup_ref_table_from_starlist(self, star_list): # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols vals = np.transpose(np.array(ref_table[orig_err_cols[ii]]))[0] - # Now add to ref_table new_col = Column(vals, name=new_err_cols[ii]) ref_table.add_column(new_col) @@ -658,13 +689,20 @@ def setup_ref_table_from_starlist(self, star_list): # Keep track of whether this is an original reference star. col_ref_orig = Column(np.ones(len(ref_table), dtype=bool), name='ref_orig') ref_table.add_column(col_ref_orig) - # Now reset the original values to invalids... they will be filled in # at later times. Preserve content only in the columns: name, x0, y0, m0 (and 0e). # Note that these are all the 1D columsn. for col_name in ref_table.colnames: if len(ref_table[col_name].data.shape) == 2: # Find the 2D columns - ref_table._set_invalid_list_values(col_name, -1) + ref_table._set_invalid_list_values(col_name, -1) + + if 'motion_model_input' not in ref_table.colnames: + ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_input')) + if 'motion_model_used' not in ref_table.colnames: + if motion_model_used is None: + ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_used')) + else: + ref_table.add_column(Column(np.repeat(motion_model_used, len(ref_table)), name='motion_model_used')) return ref_table @@ -771,7 +809,8 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li self.ref_table['used_in_trans'][idx_ref_in_trans, ii] = True ### Add the unmatched stars and grow the size of the reference table. - self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars(self.ref_table, star_list, idx_lis) + self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars(self.ref_table, star_list, idx_lis, + default_motion_model=self.default_motion_model) if len(idx_ref_new) > 0: if self.verbose > 0: print(' Adding {0:d} new stars to the reference table.'.format(len(idx_ref_new))) @@ -792,66 +831,62 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li return - def update_ref_table_aggregates(self, n_boot=0, weighting='var', use_scipy=True, absolute_sigma=False, show_progress=True): + def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): """ Average positions or fit velocities. Average magnitudes. Calculate bootstrap errors if desired. - Update the use_in_trans values as needed. + Update the use_in_trans values as needed. TODO: ???? Updates aggregate columns in self.ref_table in place. """ # Keep track of the original reference values. # In certain cases, we will NOT update these. - if not self.update_ref_orig: - ref_orig_idx = np.where(self.ref_table['ref_orig'] == True)[0] - x0_orig = self.ref_table['x0'][ref_orig_idx] - y0_orig = self.ref_table['y0'][ref_orig_idx] - m0_orig = self.ref_table['m0'][ref_orig_idx] - x0e_orig = self.ref_table['x0e'][ref_orig_idx] - y0e_orig = self.ref_table['y0e'][ref_orig_idx] - m0e_orig = self.ref_table['m0e'][ref_orig_idx] - - if self.use_vel: - vx_orig = self.ref_table['vx'][ref_orig_idx] - vy_orig = self.ref_table['vy'][ref_orig_idx] - vxe_orig = self.ref_table['vxe'][ref_orig_idx] - vye_orig = self.ref_table['vye'][ref_orig_idx] - t0_orig = self.ref_table['t0'][ref_orig_idx] - - if self.use_vel: + if keep_orig is not None: + vals_orig = {} + vals_orig['m0'] = self.ref_table['m0'][keep_orig] + vals_orig['m0_err'] = self.ref_table['m0_err'][keep_orig] + motion_model_class_names = self.ref_table['motion_model_input'].tolist() + if 'motion_model_used' in self.ref_table.keys(): + motion_model_class_names += self.ref_table['motion_model_used'][keep_orig].tolist() + vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] + motion_model_col_names = motion_model.get_list_motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) + for mm in motion_model_col_names: + if mm in self.ref_table.keys(): + vals_orig[mm] = self.ref_table[mm][keep_orig] + fit_star_idxs = [idx for idx in range(len(self.ref_table)) if idx not in keep_orig] + else: + fit_star_idxs = None + #pdb.set_trace() + # Figure out whether motion fits are necessary + all_fixed = np.all(self.ref_table['motion_model_input']=='Fixed') + if all_fixed: + weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) + weighted_m = ('me' in self.ref_table.colnames) + self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) + else: # Combine positions with a velocity fit. - self.ref_table.fit_velocities(weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, bootstrap=n_boot, verbose=self.verbose, show_progress=show_progress) - + self.ref_table.fit_velocities(bootstrap=n_boot, + verbose=self.verbose, + show_progress=(self.verbose>0), + default_motion_model=self.default_motion_model, + select_stars=fit_star_idxs, + motion_model_dict=self.motion_model_dict, + weighting=self.vel_weights, + use_scipy=self.use_scipy, + absolute_sigma=self.absolute_sigma) + # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: weights_col = None else: weights_col = 'me' - self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) - else: - weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) - weighted_m = ('me' in self.ref_table.colnames) - - self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) - # Replace the originals if we are supposed to keep them fixed. - if not self.update_ref_orig: - self.ref_table['x0'][ref_orig_idx] = x0_orig - self.ref_table['y0'][ref_orig_idx] = y0_orig - self.ref_table['m0'][ref_orig_idx] = m0_orig - self.ref_table['x0e'][ref_orig_idx] = x0e_orig - self.ref_table['y0e'][ref_orig_idx] = y0e_orig - self.ref_table['m0e'][ref_orig_idx] = m0e_orig - - if self.use_vel: - self.ref_table['vx'][ref_orig_idx] = vx_orig - self.ref_table['vy'][ref_orig_idx] = vy_orig - self.ref_table['vxe'][ref_orig_idx] = vxe_orig - self.ref_table['vye'][ref_orig_idx] = vye_orig - self.ref_table['t0'][ref_orig_idx] = t0_orig + if keep_orig is not None: + for val in vals_orig.keys(): + self.ref_table[val][keep_orig] = vals_orig[val] return @@ -870,18 +905,18 @@ def get_weights_for_lists(self, ref_list, star_list): var_xlis = 0.0 var_ylis = 0.0 - if self.weights != None: - if self.weights == 'both,var': + if self.trans_weights != None: + if self.trans_weights == 'both,var': weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) - if self.weights == 'both,std': + if self.trans_weights == 'both,std': weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) - if self.weights == 'ref,var': + if self.trans_weights == 'ref,var': weight = 1.0 / (var_xref + var_yref) - if self.weights == 'ref,std': + if self.trans_weights == 'ref,std': weight = 1.0 / np.sqrt(var_xref + var_yref) - if self.weights == 'list,var': + if self.trans_weights == 'list,var': weight = 1.0 / (var_xlis + var_ylis) - if self.weights == 'list,std': + if self.trans_weights == 'list,std': weight = 1.0 / np.sqrt(var_xlis, var_ylis) else: weight = None @@ -923,12 +958,13 @@ def match_lists(self, dr_tol, dm_tol): else: star_list_T.transform_xy(self.trans_list[ii]) - xref, yref = get_pos_at_time(star_list_T['t'][0], self.ref_table, use_vel=self.use_vel) # optional velocity propogation. + xref, yref = get_pos_at_time(star_list_T['t'][0], self.ref_table, self.motion_model_dict) mref = self.ref_table['m0'] idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], xref, yref, mref, dr_tol=dr_tol, dm_tol=dm_tol, verbose=self.verbose) + if self.verbose > 0: fmt = 'Matched {0:5d} out of {1:5d} stars in list {2:2d} [dr = {3:7.4f} +/- {4:6.4f}, dm = {5:5.2f} +/- {6:4.2f}' print(fmt.format(len(idx_lis), len(star_list_T), ii, dr.mean(), dr.std(), dm.mean(), dm.std())) @@ -955,36 +991,24 @@ def get_ref_list_from_table(self, epoch): # Reference stars will be named. name = self.ref_table['name'] - if self.use_vel and ('vx' in self.ref_table.colnames): - # First check if we should use velocities and if they exist. - dt = epoch - self.ref_table['t0'] - x = self.ref_table['x0'] + (self.ref_table['vx'] * dt) - y = self.ref_table['y0'] + (self.ref_table['vy'] * dt) - - xe = np.hypot(self.ref_table['x0e'], self.ref_table['vxe']*dt) - ye = np.hypot(self.ref_table['y0e'], self.ref_table['vye']*dt) - - idx = np.where(np.isfinite(self.ref_table['vx']) == False)[0] - x[idx] = self.ref_table['x0'][idx] - y[idx] = self.ref_table['y0'][idx] - xe[idx] = self.ref_table['x0e'][idx] - ye[idx] = self.ref_table['y0e'][idx] + if ('motion_model_used' in self.ref_table.colnames): + x,y,xe,ye = self.ref_table.get_star_positions_at_time(epoch, self.motion_model_dict, allow_alt_models=True) else: # No velocities... just used average positions. x = self.ref_table['x0'] y = self.ref_table['y0'] - if 'x0e' in self.ref_table.colnames: - xe = self.ref_table['x0e'] - ye = self.ref_table['y0e'] + if 'x0_err' in self.ref_table.colnames: + xe = self.ref_table['x0_err'] + ye = self.ref_table['y0_err'] else: xe = None ye = None m = self.ref_table['m0'] - if 'm0e' in self.ref_table.colnames: - me = self.ref_table['m0e'] + if 'm0_err' in self.ref_table.colnames: + me = self.ref_table['m0_err'] else: me = None @@ -1026,7 +1050,7 @@ def reset_ref_values(self, exclude=None): return - def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, weighting='var', use_scipy=True, absolute_sigma=False, show_progress=True): + def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, weighting='var', use_scipy=True, absolute_sigma=False, show_progress=True, update_errors=False): """ Function to calculate bootstrap errors for the transformations as well as the proper motions. For each iteration, this will: @@ -1071,25 +1095,21 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot 'var' or 'std' weighting for velocity fitting, by default 'var'. If 'var', use the variance of the residuals to weight the fit. If 'std', use the standard deviation of the residuals to weight the fit. - use_scipy: boolean - If True, use scipy.optimize.curve_fit to fit the velocity. If False, use flystar.fit_velocity.linear_fit, by default True. - absolute_sigma: boolean If True, use the absolute sigma in the velocity fitting. If False, use the relative sigma, by default False. + update_errors: boolean + If True, save the starlist errors as xe_list, bootstrap errors as xe_boot, and their quad sum as xe (and likewise for ye and me). If False (default), leave the starlist errors in place as xe and bootstrap errors as xe_boot. Output: ------ - Seven new columns will be added to self.ref_table: + New columns will be added to self.ref_table: 'xe_boot', 2D column: bootstrap x pos uncertainties due to transformation for each epoch 'ye_boot', 2D column: bootstrap y pos uncertainties due to transformation for each epoch 'me_boot', 2D column: bootstrap mag uncertainties due to transformation for each epoch If calc_vel_in_bootstrap: - 'x0e_boot', 1D column: bootstrap uncertainties in x0 for PM fit - 'y0e_boot', 1D column: bootstrap uncertainties in y0 for PM fit - 'vxe_boot', 1D column: bootstrap uncertainties in vx for PM fit - 'vye_boot', 1D column: bootstrap uncertainties in vy for PM fit + '_err_boot', 1D column: bootstrap uncertainties in for motion model fit For stars that fail boot_epochs_min criteria, np.nan is used """ @@ -1110,20 +1130,32 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot t0_arr = t0_arr[idx_good] else: idx_good = np.arange(0, len(ref_table), 1) - idx_ref = np.where(ref_table['use_in_trans'] == True) - - # Initialize output arrays - x_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 - y_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 - m_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 - xe_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 - ye_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 - me_trans_arr = np.ones((len(ref_table['x']), n_boot, n_epochs)) * -999 + + #idx_ref = np.where(ref_table['use_in_trans'] == True) + + # Initialize sums for output + x_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + x2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + y_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + y2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + m_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + m2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) + + # Set up motion model parameters + motion_model_list = ['Fixed', self.default_motion_model] + if 'motion_model_used' in ref_table.keys(): + motion_model_list += ref_table['motion_model_used'].tolist() + elif 'motion_model_input' in ref_table.keys(): + motion_model_list += ref_table['motion_model_input'].tolist() + motion_col_list = motion_model.get_list_motion_model_param_names(np.unique(motion_model_list).tolist(), with_errors=False, with_fixed=False) if calc_vel_in_bootstrap: - x0_arr = np.ones((len(ref_table['x']), n_boot)) * -999 - y0_arr = np.ones((len(ref_table['x']), n_boot)) * -999 - vx_arr = np.ones((len(ref_table['x']), n_boot)) * -999 - vy_arr = np.ones((len(ref_table['x']), n_boot)) * -999 + motion_boot_sum = {} + motion2_boot_sum = {} + for col in motion_col_list: + motion_boot_sum[col] = np.zeros((len(ref_table['x']))) + motion2_boot_sum[col] = np.zeros((len(ref_table['x']))) + motion_boot_min_epochs = np.max([self.motion_model_dict[mod].n_pts_req + for mod in np.unique(motion_model_list)]) ### IF MEMORY PROBLEMS HERE: ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY @@ -1135,44 +1167,58 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # reference stars. Use a loop for each epoch here, so we # can handle case where different reference stars are used # in different epochs + + # Initialize data arrays + x_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + y_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + m_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + xe_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + ye_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + me_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 + for jj in range(n_epochs): - # Extract bootstrap sample of matched reference stars - good = np.where(~np.isnan(ref_table['x_orig'][idx_ref][:,jj])) + # Extract bootstrap sample of matched reference stars for this epoch + #good = np.where(~np.isnan(ref_table['x_orig'][idx_ref][:,jj])) + good = np.where( (ref_table['used_in_trans'][:,jj] == True) & (~np.isnan(ref_table['x_orig'][:,jj])) ) samp_idx = np.random.choice(good[0], len(good[0]), replace=True) # Get reference star positions in particular epoch from ref_list. t_epoch = t_arr[jj] - ref_orig = self.get_ref_list_from_table(t_epoch) - - # Get idx of reference stars in bootstrap sample in the ref_orig. - # Then, use these to build reference starlist for the alignment - idx_tmp = [] - for ff in range(len(samp_idx)): - name_tmp = ref_table['name'][samp_idx[ff]] - foo = np.where(ref_orig['name'] == name_tmp)[0][0] - idx_tmp.append(foo) - - ref_boot = StarList(name=ref_orig['name'][idx_tmp], - x=ref_orig['x'][idx_tmp], - y=ref_orig['y'][idx_tmp], - m=ref_orig['m'][idx_tmp], - xe=ref_orig['xe'][idx_tmp], - ye=ref_orig['ye'][idx_tmp], - me=ref_orig['me'][idx_tmp]) + ref_orig = self.get_ref_list_from_table(t_epoch)[idx_good] + + ## Get idx of reference stars in bootstrap sample in the ref_orig. + ## Then, use these to build reference starlist for the alignment + #idx_tmp = [] + #for ff in range(len(samp_idx)): + # name_tmp = ref_table['name'][idx_ref][samp_idx[ff]] + # foo = np.where(ref_orig['name'] == name_tmp)[0][0] + # idx_tmp.append(foo) + + ref_boot = StarList(name=ref_orig['name'][samp_idx], + x=ref_orig['x'][samp_idx], + y=ref_orig['y'][samp_idx], + m=ref_orig['m'][samp_idx], + xe=ref_orig['xe'][samp_idx], + ye=ref_orig['ye'][samp_idx], + me=ref_orig['me'][samp_idx]) # Now build star list with original positions of the reference stars # in the bootstrap sample - starlist_boot = StarList(name=ref_table['name'][idx_ref][samp_idx], - x=ref_table['x_orig'][:,jj][idx_ref][samp_idx], - y=ref_table['y_orig'][:,jj][idx_ref][samp_idx], - m=ref_table['m_orig'][:,jj][idx_ref][samp_idx], - xe=ref_table['xe_orig'][:,jj][idx_ref][samp_idx], - ye=ref_table['ye_orig'][:,jj][idx_ref][samp_idx], - me=ref_table['me_orig'][:,jj][idx_ref][samp_idx]) - + starlist_boot = StarList(name=ref_table['name'][samp_idx], + x=ref_table['x_orig'][:,jj][samp_idx], + y=ref_table['y_orig'][:,jj][samp_idx], + m=ref_table['m_orig'][:,jj][samp_idx], + xe=ref_table['xe_orig'][:,jj][samp_idx], + ye=ref_table['ye_orig'][:,jj][samp_idx], + me=ref_table['me_orig'][:,jj][samp_idx]) + + # Sanity check: makes sure names match between ref_boot and starlist_boot, + # since they need to line up + assert np.all(ref_boot['name'] == starlist_boot['name']) + # Calculate weights based on weights keyword. If weights desired, will need to # make starlist objects for this - if self.weights != None: + if self.trans_weights != None: # In order for weights calculation to work, we need to apply a transformation # to the star_list_T so it is in the same units as ref_boot. So, we'll apply # the final transformation for the epoch to get close enough for the @@ -1193,6 +1239,8 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot self.trans_args[0]['order'], m=starlist_boot['m'], mref=ref_boot['m'], weights=weight, mag_trans=self.mag_trans) + #print(jj) + #pdb.set_trace() # Apply transformation to *all* orig positions in this epoch. Need to make a new # FLYSTAR starlist object with the original positions for this. We don't @@ -1211,13 +1259,21 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot starlist_T.transform_xy(trans) # Add output to pos arrays - x_trans_arr[:,ii,jj] = starlist_T['x'] - y_trans_arr[:,ii,jj] = starlist_T['y'] - m_trans_arr[:,ii,jj] = starlist_T['m'] - xe_trans_arr[:,ii,jj] = starlist_T['xe'] - ye_trans_arr[:,ii,jj] = starlist_T['ye'] - me_trans_arr[:,ii,jj] = starlist_T['me'] - + x_trans_arr[:,jj] = starlist_T['x'] + y_trans_arr[:,jj] = starlist_T['y'] + m_trans_arr[:,jj] = starlist_T['m'] + xe_trans_arr[:,jj] = starlist_T['xe'] + ye_trans_arr[:,jj] = starlist_T['ye'] + me_trans_arr[:,jj] = starlist_T['me'] + + x_boot_sum += x_trans_arr + x2_boot_sum += x_trans_arr**2 + y_boot_sum += y_trans_arr + y2_boot_sum += y_trans_arr**2 + if self.mag_trans: + m_boot_sum += m_trans_arr + m2_boot_sum += m_trans_arr**2 + t2 = time.time() #print('=================================================') #print('Time to do {0} epochs: {1}s'.format(n_epochs, t2-t1)) @@ -1228,26 +1284,35 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # for each star, and then run it through the startable fit_velocities machinery if calc_vel_in_bootstrap: boot_idx = np.random.choice(np.arange(0, n_epochs, 1), size=n_epochs) + while len(np.unique(boot_idx)) < motion_boot_min_epochs: + boot_idx = np.random.choice(np.arange(0, n_epochs, 1), size=n_epochs) t_boot = t_arr[boot_idx] star_table = StarTable(name=ref_table['name'], - x=x_trans_arr[:,ii,boot_idx], - y=y_trans_arr[:,ii,boot_idx], - m=m_trans_arr[:,ii,boot_idx], - xe=xe_trans_arr[:,ii,boot_idx], - ye=ye_trans_arr[:,ii,boot_idx], - me=me_trans_arr[:,ii,boot_idx], - t=np.tile(t_boot, (len(ref_table),1)) ) + x=x_trans_arr[:,boot_idx], + y=y_trans_arr[:,boot_idx], + m=m_trans_arr[:,boot_idx], + xe=xe_trans_arr[:,boot_idx], + ye=ye_trans_arr[:,boot_idx], + me=me_trans_arr[:,boot_idx], + t=np.tile(t_boot, (len(ref_table),1))) + if 'motion_model_used' in ref_table.columns: + star_table['motion_model_input'] = ref_table['motion_model_used'] # Now, do proper motion calculation, making sure to fix t0 to the # orig value (so we can get a reasonable error on x0, y0) - star_table.fit_velocities(weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, fixed_t0=t0_arr, show_progress=show_progress) + star_table.fit_velocities( + fixed_t0=t0_arr, + default_motion_model=self.default_motion_model, + motion_model_dict=self.motion_model_dict, + use_scipy=self.use_scipy, + absolute_sigma=self.absolute_sigma + ) # Save proper motion fit results to output arrays - x0_arr[:,ii] = star_table['x0'] - y0_arr[:,ii] = star_table['y0'] - vx_arr[:,ii] = star_table['vx'] - vy_arr[:,ii] = star_table['vy'] + for col in motion_col_list: + motion_boot_sum[col] += star_table[col] + motion2_boot_sum[col] += star_table[col]**2 # Quick check to make sure bootstrap calc was valid: output t0 should be # same as input t0_arr, since we used fixed_t0 option @@ -1259,27 +1324,29 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot #print('=================================================') # Calculate the bootstrap error values. - x_err_b = np.std(x_trans_arr, ddof=1, axis=1) - y_err_b = np.std(y_trans_arr, ddof=1, axis=1) - m_err_b = np.std(m_trans_arr, ddof=1, axis=1) - + x_boot_mean = x_boot_sum/n_boot + x_err_b = np.sqrt((x2_boot_sum - 2*x_boot_mean*x_boot_sum + n_boot*x_boot_mean**2)/n_boot) + y_boot_mean = y_boot_sum/n_boot + y_err_b = np.sqrt((y2_boot_sum - 2*y_boot_mean*y_boot_sum + n_boot*y_boot_mean**2)/n_boot) + m_boot_mean = m_boot_sum/n_boot + m_err_b = np.sqrt((m2_boot_sum - 2*m_boot_mean*m_boot_sum + n_boot*m_boot_mean**2)/n_boot) + + motion_data_err = {} if calc_vel_in_bootstrap: - x0_err_b = np.std(x0_arr, ddof=1, axis=1) - y0_err_b = np.std(y0_arr, ddof=1, axis=1) - vx_err_b = np.std(vx_arr, ddof=1, axis=1) - vy_err_b = np.std(vy_arr, ddof=1, axis=1) + for col in motion_col_list: + mot_boot_mean = motion_boot_sum[col]/n_boot + motion_data_err[col] = np.sqrt((motion2_boot_sum[col] - + 2*mot_boot_mean*motion_boot_sum[col] + n_boot*mot_boot_mean**2)/n_boot) else: - x0_err_b = np.nan - y0_err_b = np.nan - vx_err_b = np.nan - vy_err_b = np.nan + for col in motion_col_list: + motion_data_err[col] = np.nan # Add summary statistics to *original* ref_table, i.e. ref_table # hanging off of mosaic object. col_heads_2D = ['xe_boot', 'ye_boot', 'me_boot'] - data_dict = {'xe_boot': x_err_b, 'ye_boot': y_err_b, 'me_boot': m_err_b, - 'x0e_boot': x0_err_b, 'y0e_boot': y0_err_b, - 'vxe_boot': vx_err_b, 'vye_boot': vy_err_b} + data_dict = {'xe_boot': x_err_b, 'ye_boot': y_err_b, 'me_boot': m_err_b} + for col in motion_col_list: + data_dict[col+'_err_boot'] = motion_data_err[col] for ff in col_heads_2D: col = Column(np.ones((len(self.ref_table), n_epochs)), name=ff) @@ -1287,10 +1354,23 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot col[idx_good] = data_dict[ff] self.ref_table.add_column(col) + + # Calculate chi^2 with bootstrap positional errors + x_pred, y_pred, _, _ = self.ref_table.get_star_positions_at_time(t_arr, self.motion_model_dict, allow_alt_models=True) + xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) + ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) + data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x']-x_pred)**2/(xe_comb)**2,axis=1) + data_dict['chi2_y_boot'] = np.nansum((self.ref_table['y']-y_pred)**2/(ye_comb)**2,axis=1) + for ff in ['chi2_x_boot', 'chi2_y_boot']: + col = Column(np.ones(len(self.ref_table)), name=ff) + col.fill(np.nan) + + col[idx_good] = data_dict[ff][idx_good] + self.ref_table.add_column(col) # Now handle the velocities, if they were calculated if calc_vel_in_bootstrap: - col_heads_1D = [ 'x0e_boot', 'y0e_boot', 'vxe_boot', 'vye_boot'] + col_heads_1D = [col+'_err_boot' for col in motion_col_list] for ff in col_heads_1D: col = Column(np.ones(len(self.ref_table)), name=ff) @@ -1298,11 +1378,23 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - + #pdb.set_trace() + print('===============================') print('Done with bootstrap') print('===============================') + if update_errors: + self.ref_table['xe_list'] = self.ref_table['xe'] + self.ref_table['ye_list'] = self.ref_table['ye'] + self.ref_table['me_list'] = self.ref_table['me'] + self.ref_table['xe'] = np.hypot(self.ref_table['xe_list'], self.ref_table['xe_boot']) + self.ref_table['ye'] = np.hypot(self.ref_table['ye_list'], self.ref_table['ye_boot']) + self.ref_table['me'] = np.hypot(self.ref_table['me_list'], self.ref_table['me_boot']) + print("Saved starlist errors to xe_list and added xe_boot to xe in quadrature.") + print("The same was done for ye and me.") + + return @@ -1313,14 +1405,19 @@ def __init__(self, ref_list, list_of_starlists, iters=2, trans_args=[{'order': 2}, {'order': 2}], init_order=1, mag_trans=True, mag_lim=None, ref_mag_lim=None, - weights=None, + trans_weights=None, vel_weights='var', trans_input=None, trans_class=transforms.PolyTransform, calc_trans_inverse=False, use_ref_new=False, - use_vel=False, update_ref_orig=False, + update_ref_orig=False, init_guess_mode='miracle', iter_callback=None, + default_motion_model='Fixed', + motion_model_dict={}, + use_scipy=True, + absolute_sigma=False, + save_path=None, verbose=True): """ @@ -1368,7 +1465,7 @@ def __init__(self, ref_list, list_of_starlists, iters=2, magnitudes in each list to bring them into a common magnitude system. This is essential for matching (with finite dm_tol) starlists of different filters or starlists that are not photometrically calibrated. Note that the final_table columns - of 'm', 'm0', and 'm0e' will contain the transformed magnitudes while the + of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the final_table column 'm_orig' will contain the original un-transformed magnitudes. If mag_trans = False, then no such zeropoint offset it applied at any point. @@ -1382,11 +1479,15 @@ def __init__(self, ref_list, list_of_starlists, iters=2, If different from None, it indicates the minimum and maximum magnitude on the reference catalog for finding the transformations. - weights : str + trans_weights : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want to weight by the positional uncertainties (variances) in the individual starlists, or also with the uncertainties in the reference frame itself. Note weighting only works when there are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. + + vel_weights : str + Either 'var' (def) or 'std', depending on whether you want to weight the motion model + fits by the variance or standard deviation of the position data trans_input : array or list of transform objects def = None. If not None, then this should contain an array or list of transform @@ -1431,13 +1532,7 @@ def = None. If not None, then this should contain an array or list of transform necessarily want to use these in the reference frame in subsequent passes. If True, then the new stars will be used in later passes/iterations. If False, then the new stars will be carried, but not used in the transformation. - We determine which stars to use through setting a boolean use_in_trans flag. - - use_vel : boolean - If velocities are present in the reference list and use_vel == True, then during - each iteration of the alignment, the reference list will be propogated in time - using the velocity information. So all transformations will be derived w.r.t. - the propogated positions. See also update_vel. + We determine which stars to use through setting a boolean use_in_trans flag. init_guess_mode : string If no initial transformations are passed in via the trans_input keyword, then we have @@ -1446,7 +1541,22 @@ def = None. If not None, then this should contain an array or list of transform iter_callback : None or function A function to call (that accepts a StarTable object and an iteration number) - at the end of every iteration. This can be used for plotting or printing state. + at the end of every iteration. This can be used for plotting or printing state. + + default_motion_model : string + Name of motion model to use for new or unassigned stars + + motion_model_dict : None or dict + Dict of motion model name keys (strings) and corresponding MotionModel object values + + use_scipy : bool, optional + If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear algebra fitting, by default True. + + absolute_sigma : bool, optional + If True, the velocity fit will use absolute errors in the data. If False, relative errors will be used, by default False. + + save_path : str, optional + Path to save the MosaicToRef object as a pickle file. Example ---------- @@ -1455,7 +1565,6 @@ def = None. If not None, then this should contain an array or list of transform outlier_tol=[None], mag_lim=[13, 21], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], - use_vel=True, use_ref_new=False, update_ref_orig=False, mag_trans=False, @@ -1484,13 +1593,17 @@ def = None. If not None, then this should contain an array or list of transform dr_tol=dr_tol, dm_tol=dm_tol, outlier_tol=outlier_tol, trans_args=trans_args, init_order=init_order, - mag_trans=mag_trans, mag_lim=mag_lim, weights=weights, + mag_trans=mag_trans, mag_lim=mag_lim, + trans_weights=trans_weights, vel_weights=vel_weights, trans_input=trans_input, trans_class=trans_class, - calc_trans_inverse=calc_trans_inverse, use_vel=use_vel, + calc_trans_inverse=calc_trans_inverse, + default_motion_model = default_motion_model, init_guess_mode=init_guess_mode, iter_callback=iter_callback, - verbose=verbose) - + motion_model_dict=motion_model_dict, + verbose=verbose, use_scipy=use_scipy, + absolute_sigma=absolute_sigma, save_path=save_path) + self.ref_list = copy.deepcopy(ref_list) self.ref_mag_lim = ref_mag_lim self.update_ref_orig = update_ref_orig @@ -1500,15 +1613,19 @@ def = None. If not None, then this should contain an array or list of transform if ('x' not in self.ref_list.colnames) and ('x0' in self.ref_list.colnames): self.ref_list['x'] = self.ref_list['x0'] self.ref_list['y'] = self.ref_list['y0'] - if ('xe' not in self.ref_list.colnames) and ('x0e' in self.ref_list.colnames): - self.ref_list['xe'] = self.ref_list['x0e'] - self.ref_list['ye'] = self.ref_list['y0e'] + if ('xe' not in self.ref_list.colnames) and ('x0_err' in self.ref_list.colnames): + self.ref_list['xe'] = self.ref_list['x0_err'] + self.ref_list['ye'] = self.ref_list['y0_err'] if ('m' not in self.ref_list.colnames) and ('m0' in self.ref_list.colnames): self.ref_list['m'] = self.ref_list['m0'] - if ('me' not in self.ref_list.colnames) and ('m0e' in self.ref_list.colnames): - self.ref_list['me'] = self.ref_list['m0e'] + if ('me' not in self.ref_list.colnames) and ('m0_err' in self.ref_list.colnames): + self.ref_list['me'] = self.ref_list['m0_err'] if ('t' not in self.ref_list.colnames) and ('t0' in self.ref_list.colnames): self.ref_list['t'] = self.ref_list['t0'] + + # Make sure the motion models are ready + self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, + self.ref_list, self.default_motion_model) return @@ -1531,10 +1648,7 @@ def fit(self): x0e y0e m0e - vx (only if use_vel=True) - vy (only if use_vel=True) - vxe (only if use_vel=True) - vye (only if use_vel=True) + addl. motion_model parameters """ # Create a log file of the parameters used in the fit. @@ -1548,12 +1662,13 @@ def fit(self): logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) - logger(_log, ' weights = ' + str(self.weights), self.verbose) + logger(_log, ' trans_weights = ' + str(self.trans_weights), self.verbose) + logger(_log, ' vel_weights = ' + str(self.vel_weights), self.verbose) logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) - logger(_log, ' use_vel = ' + str(self.use_vel), self.verbose) + logger(_log, ' default_motion_model = ' + str(self.default_motion_model), self.verbose) logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) @@ -1568,16 +1683,6 @@ def fit(self): # w, w_orig (optiona) -- the input and output weights of stars in transform: 2D ########## self.ref_table = self.setup_ref_table_from_starlist(self.ref_list) - - # copy over velocities if they exist in the reference list - if 'vx' in self.ref_list.colnames: - self.ref_table['vx'] = self.ref_list['vx'] - self.ref_table['vy'] = self.ref_list['vy'] - self.ref_table['t0'] = self.ref_list['t0'] - if 'vxe' in self.ref_list.colnames: - self.ref_table['vxe'] = self.ref_list['vxe'] - self.ref_table['vye'] = self.ref_list['vye'] - ########## # @@ -1604,13 +1709,13 @@ def fit(self): self.match_and_transform(self.ref_mag_lim, self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], self.trans_args[nn]) - + # Clean up the reference table # Find where stars are detected. self.ref_table.detections() ### Drop all stars that have 0 detections. - idx = np.where((self.ref_table['n_detect'] == 0) & (self.ref_table['ref_orig'] == False))[0] + idx = np.where((self.ref_table['n_detect'] == 0))[0] # & (self.ref_table['ref_orig'] == False))[0] if self.verbose > 0: print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) @@ -1622,7 +1727,7 @@ def fit(self): # # Re-do all matching given final transformations. # No trimming this time. - # First rest the reference table 2D values. + # First reset the reference table 2D values. ########## self.reset_ref_values(exclude=['used_in_trans']) @@ -1632,7 +1737,12 @@ def fit(self): print("**********") self.match_lists(self.dr_tol[-1], self.dm_tol[-1]) - self.update_ref_table_aggregates() + keep_ref_orig = (self.update_ref_orig==False) + if keep_ref_orig: + keep_orig = np.where(self.ref_table['ref_orig'])[0] + else: + keep_orig=None + self.update_ref_table_aggregates(keep_orig=keep_orig) ########## # Clean up output table. @@ -1646,12 +1756,16 @@ def fit(self): self.ref_table.detections() ### Drop all stars that have 0 detections. - idx = np.where(self.ref_table['n_detect'] == 0)[0] + idx = np.where((self.ref_table['n_detect'] == 0) & (self.ref_table['ref_orig'] == False))[0] print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) if self.iter_callback != None: self.iter_callback(self.ref_table, nn) + + if self.save_path: + with open(self.save_path, 'wb') as file: + pickle.dump(self, file) return def get_all_epochs(t): @@ -1686,6 +1800,7 @@ def setup_ref_table_from_starlist(star_list): array in the original reference star list. """ col_arrays = {} + motion_model_col_names = motion_model.get_all_motion_model_param_names(with_errors=True) for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -1720,7 +1835,7 @@ def setup_ref_table_from_starlist(star_list): # Make sure ref_table has the necessary x0, y0, m0 and associated # error columns. If they don't exist, then add them as a copy of # the original x,y,m etc columns. - new_cols_arr = ['x0', 'x0e', 'y0', 'y0e', 'm0', 'm0e'] + new_cols_arr = ['x0', 'x0_err', 'y0', 'y0_err', 'm0', 'm0_err'] orig_cols_arr = ['x', 'xe', 'y', 'ye', 'm', 'me'] assert len(new_cols_arr) == len(orig_cols_arr) ref_cols = ref_table.keys() @@ -1738,7 +1853,7 @@ def setup_ref_table_from_starlist(star_list): if 'use_in_trans' not in ref_table.colnames: new_col = Column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') ref_table.add_column(new_col) - + # Now reset the original values to invalids... they will be filled in # at later times. Preserve content only in the columns: name, x0, y0, m0 (and 0e). # Note that these are all the 1D columsn. @@ -1769,7 +1884,7 @@ def copy_over_values(ref_table, star_list, star_list_T, idx_epoch, idx_ref, idx_ idx_ref : list or array The indices into the ref_table where values are copied to. idx_lis : list or array - The indices into the star_list or star_lsit_T where values are copied from. + The indices into the star_list or star_list_T where values are copied from. """ for col_name in ref_table.colnames: if col_name in star_list_T.colnames: @@ -1799,7 +1914,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_lis): +def add_rows_for_new_stars(ref_table, star_list, idx_lis, default_motion_model='Fixed'): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -1843,6 +1958,10 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis): new_col_empty = -1 elif ref_table[col_name].dtype == np.dtype('bool'): new_col_empty = False + elif col_name=='motion_model_input': + new_col_empty = default_motion_model + elif col_name=='motion_model_used': + new_col_empty = 'Fixed' else: new_col_empty = np.nan @@ -1866,372 +1985,9 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis): return ref_table, idx_lis_new, idx_ref_new - -def run_align_iter(catalog, trans_order=1, poly_deg=1, ref_mag_lim=19, ref_radius_lim=300): - # Load up data with matched stars. - d = Table.read(catalog) - - # Determine how many epochs there are. - N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) - - # Determine how many stars there are. - N_stars = len(d) - - # Determine the reference epoch - ref = d.meta['L_REF'] - - # Figure out the number of free parameters for the specified - # poly2d order. - poly2d = models.Polynomial2D(trans_order) - N_par_trans_per_epoch = 2.0 * poly2d.get_num_coeff(2) # one poly2d for each dimension (X, Y) - N_par_trans = N_par_trans_per_epoch * N_epochs - - ########## - # First iteration -- align everything to REF epoch with zero velocities. - ########## - print('ALIGN_EPOCHS: run_align_iter() -- PASS 1') - ee_ref = d.meta['L_REF'] - - target_name = 'OB120169' - - trans1, used1 = calc_transform_ref_epoch(d, target_name, ee_ref, ref_mag_lim, ref_radius_lim) - - ########## - # Derive the velocity of each stars using the round 1 transforms. - ########## - calc_polyfit_all_stars(d, poly_deg, init_fig_idx=0) - - calc_mag_avg_all_stars(d) - - tdx = np.where((d['name_0'] == 'OB120169') | (d['name_0'] == 'OB120169_L'))[0] - print(d[tdx]['name_0', 't0', 'mag', 'x0', 'vx', 'x0e', 'vxe', 'chi2x', 'y0', 'vy', 'y0e', 'vye', 'chi2y', 'dof']) - - ########## - # Second iteration -- align everything to reference positions derived from iteration 1 - ########## - print('ALIGN_EPOCHS: run_align_iter() -- PASS 2') - target_name = 'OB120169' - - trans2, used2 = calc_transform_ref_poly(d, target_name, poly_deg, ref_mag_lim, ref_radius_lim) - - ########## - # Derive the velocity of each stars using the round 1 transforms. - ########## - calc_polyfit_all_stars(d, poly_deg, init_fig_idx=4) - - ########## - # Save output - ########## - d.write(catalog.replace('.fits', '_aln.fits'), overwrite=True) - - return - -def calc_transform_ref_epoch(d, target_name, ee_ref, ref_mag_lim, ref_radius_lim): - # Determine how many epochs there are. - N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) - - # output array - trans = [] - used = [] - - # Find the target - tdx = np.where(d['name_0'] == 'OB120169')[0][0] - - # Reference values - t_ref = d['t_{0:d}'.format(ee_ref)] - m_ref = d['m_{0:d}'.format(ee_ref)] - x_ref = d['x_{0:d}'.format(ee_ref)] - y_ref = d['y_{0:d}'.format(ee_ref)] - xe_ref = d['xe_{0:d}'.format(ee_ref)] - ye_ref = d['ye_{0:d}'.format(ee_ref)] - - # Calculate some quanitites we use for selecting reference stars. - r_ref = np.hypot(x_ref - x_ref[tdx], y_ref - y_ref[tdx]) - - # Loop through and align each epoch to the reference epoch. - for ee in range(N_epochs): - # Pull out the X, Y positions (and errors) for the two - # starlists we are going to align. - x_epo = d['x_{0:d}'.format(ee)] - y_epo = d['y_{0:d}'.format(ee)] - t_epo = d['t_{0:d}'.format(ee)] - xe_epo = d['xe_{0:d}'.format(ee)] - ye_epo = d['ye_{0:d}'.format(ee)] - - # Figure out the set of stars detected in both epochs. - idx = np.where((t_ref != 0) & (t_epo != 0) & (xe_ref != 0) & (xe_epo != 0))[0] - - # Find those in both epochs AND reference stars. This is [idx][rdx] - rdx = np.where((r_ref[idx] < ref_radius_lim) & (m_ref[idx] < ref_mag_lim))[0] - - # Average the positional errors together to get one weight per star. - xye_ref = (xe_ref + ye_ref) / 2.0 - xye_epo = (xe_epo + ye_epo) / 2.0 - xye_wgt = (xye_ref**2 + xye_epo**2)**0.5 - - # Calculate transform based on the matched stars - trans_tmp = transforms.PolyTransform(x_epo[idx][rdx], y_epo[idx][rdx], x_ref[idx][rdx], y_ref[idx][rdx], - weights=xye_wgt[idx][rdx], order=2) - - trans.append(trans_tmp) - - - # Apply thte transformation to the stars positions and errors: - xt_epo = np.zeros(len(d), dtype=float) - yt_epo = np.zeros(len(d), dtype=float) - xet_epo = np.zeros(len(d), dtype=float) - yet_epo = np.zeros(len(d), dtype=float) - - xt_epo[idx], xet_epo[idx], yt_epo[idx], yet_epo[idx] = trans_tmp.evaluate_errors(x_epo[idx], xe_epo[idx], - y_epo[idx], ye_epo[idx], - nsim=100) - - d['xt_{0:d}'.format(ee)] = xt_epo - d['yt_{0:d}'.format(ee)] = yt_epo - d['xet_{0:d}'.format(ee)] = xet_epo - d['yet_{0:d}'.format(ee)] = yet_epo - - # Record which stars we used in the transform. - used_tmp = np.zeros(len(d), dtype=bool) - used_tmp[idx[rdx]] = True - - used.append(used_tmp) - - if True: - plot_quiver_residuals(xt_epo, yt_epo, x_ref, y_ref, idx, rdx, 'Epoch: ' + str(ee)) - - used = np.array(used) - - return trans, used - - -def calc_transform_ref_poly(d, target_name, poly_deg, ref_mag_lim, ref_radius_lim): - # Determine how many epochs there are. - N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) - - # output array - trans = [] - used = [] - - # Find the target - tdx = np.where(d['name_0'] == 'OB120169')[0][0] - - # Temporary Reference values - t_ref = d['t0'] - m_ref = d['mag'] - x_ref = d['x0'] - y_ref = d['y0'] - xe_ref = d['x0e'] - ye_ref = d['y0e'] - - # Calculate some quanitites we use for selecting reference stars. - r_ref = np.hypot(x_ref - x_ref[tdx], y_ref - y_ref[tdx]) - - for ee in range(N_epochs): - # Pull out the X, Y positions (and errors) for the two - # starlists we are going to align. - x_epo = d['x_{0:d}'.format(ee)] - y_epo = d['y_{0:d}'.format(ee)] - t_epo = d['t_{0:d}'.format(ee)] - xe_epo = d['xe_{0:d}'.format(ee)] - ye_epo = d['ye_{0:d}'.format(ee)] - - # Shift the reference position by the polyfit for each star. - dt = t_epo - t_ref - if poly_deg >= 0: - x_ref_ee = x_ref - y_ref_ee = y_ref - xe_ref_ee = x_ref - ye_ref_ee = y_ref - - if poly_deg >= 1: - x_ref_ee += d['vx'] * dt - y_ref_ee += d['vy'] * dt - xe_ref_ee = np.hypot(xe_ref_ee, d['vxe'] * dt) - ye_ref_ee = np.hypot(ye_ref_ee, d['vye'] * dt) - - if poly_deg >= 2: - x_ref_ee += d['ax'] * dt - y_ref_ee += d['ay'] * dt - xe_ref_ee = np.hypot(xe_ref_ee, d['axe'] * dt) - ye_ref_ee = np.hypot(ye_ref_ee, d['aye'] * dt) - - # Figure out the set of stars detected in both. - idx = np.where((t_ref != 0) & (t_epo != 0) & (xe_ref != 0) & (xe_epo != 0))[0] - - # Find those in both AND reference stars. This is [idx][rdx] - rdx = np.where((r_ref[idx] < ref_radius_lim) & (m_ref[idx] < ref_mag_lim))[0] - - # Average the positional errors together to get one weight per star. - xye_ref = (xe_ref_ee + ye_ref_ee) / 2.0 - xye_epo = (xe_epo + ye_epo) / 2.0 - xye_wgt = (xye_ref**2 + xye_epo**2)**0.5 - - # Calculate transform based on the matched stars - trans_tmp = transforms.PolyTransform(x_epo[idx][rdx], y_epo[idx][rdx], x_ref_ee[idx][rdx], y_ref_ee[idx][rdx], - weights=xye_wgt[idx][rdx], order=2) - trans.append(trans_tmp) - - # Apply thte transformation to the stars positions and errors: - xt_epo = np.zeros(len(d), dtype=float) - yt_epo = np.zeros(len(d), dtype=float) - xet_epo = np.zeros(len(d), dtype=float) - yet_epo = np.zeros(len(d), dtype=float) - - xt_epo[idx], xet_epo[idx], yt_epo[idx], yet_epo[idx] = trans_tmp.evaluate_errors(x_epo[idx], xe_epo[idx], - y_epo[idx], ye_epo[idx], - nsim=100) - d['xt_{0:d}'.format(ee)] = xt_epo - d['yt_{0:d}'.format(ee)] = yt_epo - d['xet_{0:d}'.format(ee)] = xet_epo - d['yet_{0:d}'.format(ee)] = yet_epo - - # Record which stars we used in the transform. - used_tmp = np.zeros(len(d), dtype=bool) - used_tmp[idx[rdx]] = True - - used.append(used_tmp) - - if True: - plot_quiver_residuals(xt_epo, yt_epo, x_ref_ee, y_ref_ee, idx, rdx, 'Epoch: ' + str(ee)) - - used = np.array(used) - - return trans, used - -def calc_polyfit_all_stars(d, poly_deg, init_fig_idx=0): - # Determine how many stars there are. - N_stars = len(d) - - # Determine how many epochs there are. - N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) - - # Setup some variables to save the results - t0_all = [] - px_all = [] - py_all = [] - pxe_all = [] - pye_all = [] - chi2x_all = [] - chi2y_all = [] - dof_all = [] - - # Get the time array, which is the same for all stars. - # Also, sort the time indices. - t = np.array([d['t_{0:d}'.format(ee)][0] for ee in range(N_epochs)]) - tdx = t.argsort() - t_sorted = t[tdx] - - # Run polyfit on each star. - for ss in range(N_stars): - # Get the x, y, xe, ye, and t arrays for this star. - xt = np.array([d['xt_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) - yt = np.array([d['yt_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) - xet = np.array([d['xet_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) - yet = np.array([d['yet_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) - t_tmp = np.array([d['t_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) - - # Sort these arrays. - xt_sorted = xt[tdx] - yt_sorted = yt[tdx] - xet_sorted = xet[tdx] - yet_sorted = yet[tdx] - t_tmp_sorted = t_tmp[tdx] - - # Get only the detected epochs. - edx = np.where(t_tmp_sorted != 0)[0] - - # Calculate the weighted t0 (using the transformed errors). - weight_for_t0 = 1.0 / np.hypot(xet_sorted, yet_sorted) - t0 = np.average(t_sorted[edx], weights=weight_for_t0[edx]) - - # for ee in edx: - # print('{0:8.3f} {1:10.5f} {2:10.5f} {3:8.5f} {4:8.5f}'.format(t[ee], xt[ee], yt[ee], xet[ee], yet[ee])) - # pdb.set_trace() - - # Run polyfit - dt = t_sorted - t0 - px, covx = np.polyfit(dt[edx], xt_sorted[edx], poly_deg, w=1./xet_sorted[edx], cov=True) - py, covy = np.polyfit(dt[edx], yt_sorted[edx], poly_deg, w=1./yet_sorted[edx], cov=True) - - pxe = np.sqrt(np.diag(covx)) - pye = np.sqrt(np.diag(covy)) - - - x_mod = np.polyval(px, dt[edx]) - y_mod = np.polyval(py, dt[edx]) - chi2x = np.sum( ((x_mod - xt_sorted[edx]) / xet_sorted[edx])**2 ) - chi2y = np.sum( ((y_mod - yt_sorted[edx]) / yet_sorted[edx])**2 ) - dof = len(edx) - (poly_deg + 1) - - # Save results: - t0_all.append(t0) - px_all.append(px) - py_all.append(py) - pxe_all.append(pxe) - pye_all.append(pye) - chi2x_all.append(chi2x) - chi2y_all.append(chi2y) - dof_all.append(dof) - - if d[ss]['name_0'] in ['OB120169', 'OB120169_L']: - gs = GridSpec(3, 2) # 3 rows, 1 column - fig = plt.figure(ss + 1 + init_fig_idx, figsize=(12, 8)) - a0 = fig.add_subplot(gs[0:2, 0]) - a1 = fig.add_subplot(gs[2, 0]) - a2 = fig.add_subplot(gs[0:2, 1]) - a3 = fig.add_subplot(gs[2, 1]) - - a0.errorbar(t_sorted[edx], xt_sorted[edx], yerr=xet_sorted[edx], fmt='ro') - a0.plot(t_sorted[edx], x_mod, 'k-') - a0.set_title(d[ss]['name_0'] + ' X') - a1.errorbar(t_sorted[edx], xt_sorted[edx] - x_mod, yerr=xet_sorted[edx], fmt='ro') - a1.axhline(0, linestyle='--') - a1.set_xlabel('Time (yrs)') - a2.errorbar(t_sorted[edx], yt_sorted[edx], yerr=yet_sorted[edx], fmt='ro') - a2.plot(t_sorted[edx], y_mod, 'k-') - a2.set_title(d[ss]['name_0'] + ' Y') - a3.errorbar(t_sorted[edx], yt_sorted[edx] - y_mod, yerr=yet_sorted[edx], fmt='ro') - a3.axhline(0, linestyle='--') - a3.set_xlabel('Time (yrs)') - - - - t0_all = np.array(t0_all) - px_all = np.array(px_all) - py_all = np.array(py_all) - pxe_all = np.array(pxe_all) - pye_all = np.array(pye_all) - chi2x_all = np.array(chi2x_all) - chi2y_all = np.array(chi2y_all) - dof_all = np.array(dof_all) - - # Done with all the stars... recast as numpy arrays and save to output table. - d['t0'] = t0_all - d['chi2x'] = chi2x_all - d['chi2y'] = chi2y_all - d['dof'] = dof_all - if poly_deg >= 0: - d['x0'] = px_all[:, -1] - d['y0'] = py_all[:, -1] - d['x0e'] = pxe_all[:, -1] - d['y0e'] = pye_all[:, -1] - - if poly_deg >= 1: - d['vx'] = px_all[:, -2] - d['vy'] = py_all[:, -2] - d['vxe'] = pxe_all[:, -2] - d['vye'] = pye_all[:, -2] - - if poly_deg >= 2: - d['ax'] = px_all[:, -3] - d['ay'] = py_all[:, -3] - d['axe'] = pxe_all[:, -3] - d['aye'] = pye_all[:, -3] - - pdb.set_trace() - - return +""" +Functions specific to OB120169 moved to align_old_functions,py +""" def calc_mag_avg_all_stars(d): # Determine how many stars there are. @@ -2383,7 +2139,6 @@ def transform_and_match(table1, table2, transform, dr_tol=1.0, dm_tol=None, verb y2 = table2['y'] m2 = table2['m'] - # Transform x, y coordinates from starlist 1 into starlist 2 x1t, y1t = transform.evaluate(x1, y1) @@ -2464,7 +2219,7 @@ def find_transform(table1, table1_trans, table2, transModel=transforms.PolyTrans # calculate weights from *transformed* coords. This is where we use the # transformation object - if (table1_trans != None) and ('xe' in table1_trans.colnames): + if (table1_trans is not None) and ('xe' in table1_trans.colnames): x1e = table1_trans['xe'] y1e = table1_trans['ye'] @@ -2707,6 +2462,8 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric return +# Transform_from_file original version moved to align_old_functions.py +# This version makes the transFile an object and uses transform_from_object def transform_from_file(starlist, transFile): """ Apply transformation from transFile to starlist. Returns astropy table with @@ -2714,8 +2471,7 @@ def transform_from_file(starlist, transFile): positions/position errors, plus velocities and velocity errors if they are present in starlist. - WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL - TRANSFORMS + WARNING: THIS CODE WORKS FOR POLYTRANSFORM Parameters: ---------- @@ -2731,153 +2487,31 @@ def transform_from_file(starlist, transFile): ------ Copy of starlist astropy table with transformed coordinates. """ - # Make a copy of starlist. This is what we will eventually modify with - # the transformed coordinates - starlist_f = copy.deepcopy(starlist) - - # Check to see if velocities are present in starlist. If so, we will - # need to transform these as well as positions - vel = False - keys = list(starlist.keys()) - if 'vx' in keys: - vel = True - - # Extract needed information from starlist - x_orig = starlist['x'] - y_orig = starlist['y'] - xe_orig = starlist['xe'] - ye_orig = starlist['ye'] - - if vel: - x0_orig = starlist['x0'] - y0_orig = starlist['y0'] - x0e_orig = starlist['x0e'] - y0e_orig = starlist['y0e'] - - vx_orig = starlist['vx'] - vy_orig = starlist['vy'] - vxe_orig = starlist['vxe'] - vye_orig = starlist['vye'] - - # Read transFile - trans = Table.read(transFile, format='ascii.commented_header', header_start=-1) - Xcoeff = trans['Xcoeff'] - Ycoeff = trans['Ycoeff'] - - #-----------------------------------------------# - # General equation for applying the transform - #-----------------------------------------------# - #""" + # Make transform object + trans_table = Table.read(transFile, format='ascii.commented_header', header_start=-1) + Xcoeff = trans_table['Xcoeff'] + Ycoeff = trans_table['Ycoeff'] # First determine the order based on the number of terms # Comes from Nterms = (N+1)*(N+2) / 2. order = (np.sqrt(1 + 8*len(Xcoeff)) - 3) / 2. - if order%1 != 0: print( 'Incorrect number of coefficients for polynomial') print( 'Stopping') return order = int(order) - - # Position transformation - x_new, y_new = transform_pos_from_file(Xcoeff, Ycoeff, order, x_orig, - y_orig) + # Do transform + transform = transforms.PolyTransform(order, Xcoeff, Ycoeff) + return transform_from_object(starlist, transform) - if vel: - x0_new, y0_new = transform_pos_from_file(Xcoeff, Ycoeff, order, x0_orig, - y0_orig) - - # Position error transformation - xe_new, ye_new = transform_poserr_from_file(Xcoeff, Ycoeff, order, xe_orig, - ye_orig, x_orig, y_orig) - - if vel: - x0e_new, y0e_new = transform_poserr_from_file(Xcoeff, Ycoeff, order, x0e_orig, - y0e_orig, x0_orig, y0_orig) - - if vel: - # Velocity transformation - vx_new, vy_new = transform_vel_from_file(Xcoeff, Ycoeff, order, vx_orig, - vy_orig, x_orig, y_orig) - - # Velocity error transformation - vxe_new, vye_new = transform_velerr_from_file(Xcoeff, Ycoeff, order, - vxe_orig, vye_orig, - vx_orig, vy_orig, - xe_orig, ye_orig, - x_orig, y_orig) - - #----------------------------------------# - # Hard coded example: old but functional - #----------------------------------------# - """ - # How the transformation is applied depends on the type of transform. - # This can be determined by the length of Xcoeff, Ycoeff - if len(Xcoeff) == 3: - x_new = Xcoeff[0] + Xcoeff[1] * x_orig + Xcoeff[2] * y_orig - y_new = Ycoeff[0] + Ycoeff[1] * x_orig + Ycoeff[2] * y_orig - xe_new = np.sqrt( (Xcoeff[1] * xe_orig)**2 + (Xcoeff[2] * ye_orig)**2 ) - ye_new = np.sqrt( (Ycoeff[1] * xe_orig)**2 + (Ycoeff[2] * ye_orig)**2 ) - - if vel: - vx_new = Xcoeff[1] * vx_orig + Xcoeff[2] * vy_orig - vy_new = Ycoeff[1] * vx_orig + Ycoeff[2] * vy_orig - vxe_new = np.sqrt( (Xcoeff[1] * vxe_orig)**2 + (Xcoeff[2] * vye_orig)**2 ) - vye_new = np.sqrt( (Ycoeff[1] * vxe_orig)**2 + (Ycoeff[2] * vye_orig)**2 ) - - elif len(Xcoeff) == 6: - x_new = Xcoeff[0] + Xcoeff[1]*x_orig + Xcoeff[3]*x_orig**2 + Xcoeff[2]*y_orig + \ - Xcoeff[5]*y_orig**2. + Xcoeff[4]*x_orig*y_orig - - y_new = Ycoeff[0] + Ycoeff[1]*x_orig + Ycoeff[3]*x_orig**2 + Ycoeff[2]*y_orig + \ - Ycoeff[5]*y_orig**2. + Ycoeff[4]*x_orig*y_orig - - xe_new = np.sqrt( (Xcoeff[1] + 2*Xcoeff[3]*x_orig + Xcoeff[4]*y_orig)**2 * xe_orig**2 + \ - (Xcoeff[2] + 2*Xcoeff[5]*y_orig + Xcoeff[4]*x_orig)**2 * ye_orig**2 ) - - ye_new = np.sqrt( (Ycoeff[1] + 2*Ycoeff[3]*x_orig + Ycoeff[4]*y_orig)**2 * xe_orig**2 + \ - (Ycoeff[2] + 2*Ycoeff[5]*y_orig + Ycoeff[4]*x_orig)**2 * ye_orig**2 ) - - if vel: - vx_new = Xcoeff[1]*vx_orig + 2*Xcoeff[3]*x_orig*vx_orig + Xcoeff[2]*vy_orig + \ - 2.*Xcoeff[5]*y_orig*vy_orig + Xcoeff[4]*(x_orig*vy_orig + vx_orig*y_orig) - - vy_new = Ycoeff[1]*vx_orig + 2*Ycoeff[3]*x_orig*vx_orig + Ycoeff[2]*vy_orig + \ - 2.*Ycoeff[5]*y_orig*vy_orig + Ycoeff[4]*(x_orig*vy_orig + vx_orig*y_orig) - - vxe_new = np.sqrt( (Xcoeff[1] + 2*Xcoeff[3]*x_orig + Xcoeff[4]*y_orig)**2 * vxe_orig**2 + \ - (Xcoeff[2] + 2*Xcoeff[5]*y_orig + Xcoeff[4]*x_orig)**2 * vye_orig**2 + \ - (2*Xcoeff[3]*vx_orig + Xcoeff[4]*vy_orig)**2 * xe_orig**2 + \ - (2*Xcoeff[5]*vy_orig + Xcoeff[4]*vx_orig)**2 * ye_orig**2 ) - - vye_new = np.sqrt( (Ycoeff[1] + 2*Ycoeff[3]*x_orig + Ycoeff[4]*y_orig)**2 * vxe_orig**2 + \ - (Ycoeff[2] + 2*Ycoeff[5]*y_orig + Ycoeff[4]*x_orig)**2 * vye_orig**2 + \ - (2*Ycoeff[3]*vx_orig + Ycoeff[4]*vy_orig)**2 * xe_orig**2 + \ - (2*Ycoeff[5]*vy_orig + Ycoeff[4]*vx_orig)**2 * ye_orig**2 ) - """ - #Update transformed coords to copy of astropy table - starlist_f['x'] = x_new - starlist_f['y'] = y_new - starlist_f['xe'] = xe_new - starlist_f['ye'] = ye_new - if vel: - starlist_f['x0'] = x0_new - starlist_f['y0'] = y0_new - starlist_f['x0e'] = x0e_new - starlist_f['y0e'] = y0e_new - starlist_f['vx'] = vx_new - starlist_f['vy'] = vy_new - starlist_f['vxe'] = vxe_new - starlist_f['vye'] = vye_new - - return starlist_f - def transform_from_object(starlist, transform): """ Apply transformation to starlist. Returns astropy table with transformed positions/position errors, velocities and velocity errors - if they are present in starlits + if they are present in starlits. If a more complex motion_model is + implemented, the motion parameters are set to nan, as we need the full time + series to refit. Parameters: ---------- @@ -2899,9 +2533,22 @@ def transform_from_object(starlist, transform): starlist_f = copy.deepcopy(starlist) keys = list(starlist.keys()) - # Check to see if velocities are present in starlist. If so, we will - # need to transform these as well as positions - vel = 'vx' in keys + # Check to see if velocities or motion_model are present in starlist. + vel = ('vx' in keys)and ~("motion_model_input" in keys) + mot = ("motion_model_input" in keys) + # If the only motion models used are Fixed and Linear, we can still transform velocities. + if mot: + motion_models_unique = list(np.unique(starlist_f['motion_model_input'])) + if 'Linear' in motion_models_unique: + motion_models_unique.remove('Linear') + if 'Fixed' in motion_models_unique: + motion_models_unique.remove('Fixed') + if len(motion_models_unique)==0: + vel=True + mot=False + + # Prior code before motion_model implementation + # Can still be used as shortcut for Linear+Fixed motion_model only err = 'xe' in keys # Extract needed information from starlist @@ -2911,27 +2558,25 @@ def transform_from_object(starlist, transform): if err: xe = starlist_f['xe'] ye = starlist_f['ye'] + else: + xe = np.zeros(len(starlist_f)) + ye = np.zeros(len(starlist_f)) if vel: x0 = starlist_f['x0'] y0 = starlist_f['y0'] - x0e = starlist_f['x0e'] - y0e = starlist_f['y0e'] + x0e = starlist_f['x0_err'] + y0e = starlist_f['y0_err'] vx = starlist_f['vx'] vy = starlist_f['vy'] - vxe = starlist_f['vxe'] - vye = starlist_f['vye'] - + vxe = starlist_f['vx_err'] + vye = starlist_f['vy_err'] + # calculate the transformed position and velocity - - # (x_new, y_new, xe_new, ye_new) in (x,y) x_new, y_new, xe_new, ye_new = position_transform_from_object(x, y, xe, ye, transform) - if vel: - # (x0_new, y0_new, x0e_new, y0e_new) in (x0, y0, x0e, y0e) x0_new, y0_new, x0e_new, y0e_new = position_transform_from_object(x0, y0, x0e, y0e, transform) - # (vx_new, vy_new, vxe_new, vye_new) in (x0, y0, x0e, y0e, vx, vy, vxe, vye) vx_new, vy_new, vxe_new, vye_new = velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform) # update transformed coords to copy of astropy table @@ -2943,19 +2588,24 @@ def transform_from_object(starlist, transform): if vel: starlist_f['x0'] = x0_new starlist_f['y0'] = y0_new - starlist_f['x0e'] = x0e_new - starlist_f['y0e'] = y0e_new + starlist_f['x0_err'] = x0e_new + starlist_f['y0_err'] = y0e_new starlist_f['vx'] = vx_new starlist_f['vy'] = vy_new - starlist_f['vxe'] = vxe_new - starlist_f['vye'] = vye_new + starlist_f['vx_err'] = vxe_new + starlist_f['vy_err'] = vye_new + + # For more complicated motion_models, + # we can't easily transform them, set the values to nans and refit later. + if mot: + motion_model_params = motion_model.get_all_motion_model_param_names() + for param in motion_model_params: + if param in keys: + starlist_f[param] = np.nan return starlist_f - - - def position_transform_from_object(x, y, xe, ye, transform): """ given the orginal position and position error, calculate the transformed @@ -3007,10 +2657,9 @@ def position_transform_from_object(x, y, xe, ye, transform): for j in range(1, N+2-i): sub = int(2*N + 2 + j + (2*N+2-i) * (i-1)/2.) y_new += Ycoeff[sub] * (x**i) * (y**j) - """ - THIS IS WRONG BELOW! + THIS IS WRONG BELOW! - NOTE: I don't think this is wrong any more Currently doing: ((A + B + C) * xe)**2 @@ -3155,7 +2804,6 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform vxe_new = np.sqrt((temp1*x0e)**2 + (temp2*y0e)**2 + (temp3*vxe)**2 + (temp4*vye)**2) - vye_new = 0 temp1 = 0 temp2 = 0 @@ -3202,291 +2850,6 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform return vx_new, vy_new, vxe_new, vye_new -def transform_pos_from_file(Xcoeff, Ycoeff, order, x_orig, y_orig): - """ - Given the read-in coefficients from transform_from_file, apply the - transformation to the observed positions. This is generalized to - work with any order polynomial transform. - - WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL - TRANSFORMS - - Parameters: - ---------- - Xcoeff: Array - Array with the coefficients of the X pos transformation - - Ycoeff: Array - Array with the coefficients of the Y pos transformation - - order: int - Order of transformation - - x_orig: array - Array with the original X positions - - y_orig: array - Array with the original Y positions - - Output: - ------ - x_new: array - Transformed X positions - - y_new: array - Transformed Y positions - - """ - idx = 0 # coeff index - x_new = 0.0 - y_new = 0.0 - for i in range(order+1): - for j in range(i+1): - x_new += Xcoeff[idx] * x_orig**(i-j) * y_orig**j - y_new += Ycoeff[idx] * x_orig**(i-j) * y_orig**j - - idx += 1 - - return x_new, y_new - -def transform_poserr_from_file(Xcoeff, Ycoeff, order, xe_orig, ye_orig, x_orig, y_orig): - """ - Given the read-in coefficients from transform_from_file, apply the - transformation to the observed position errors. This is generalized to - work with any order transform. - - WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL - TRANSFORMS - - Parameters: - ---------- - Xcoeff: Array - Array with the coefficients of the X pos transformation - - Ycoeff: Array - Array with the coefficients of the Y pos transformation - - order: int - Order of transformation - - xe_orig: array - Array with the original X position errs - - ye_orig: array - Array with the original Y position errs - - x_orig: array - Array with the original X positions - - y_orig: array - Array with the original Y positions - - Output: - ------ - xe_new: array - Transformed X position errs - - ye_new: array - Transformed Y position errs - """ - idx = 0 # coeff index - xe_new_tmp1 = 0.0 - ye_new_tmp1 = 0.0 - xe_new_tmp2 = 0.0 - ye_new_tmp2 = 0.0 - - # First loop: dx'/dx - for i in range(order+1): - for j in range(i+1): - xe_new_tmp1 += Xcoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j - ye_new_tmp1 += Ycoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j - - idx += 1 - - # Second loop: dy'/dy - idx = 0 # coeff index - for i in range(order+1): - for j in range(i+1): - xe_new_tmp2 += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) - ye_new_tmp2 += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) - - idx += 1 - # Take square root for xe/ye_new - xe_new = np.sqrt((xe_new_tmp1 * xe_orig)**2 + (xe_new_tmp2 * ye_orig)**2) - ye_new = np.sqrt((ye_new_tmp1 * ye_orig)**2 + (ye_new_tmp2 * ye_orig)**2) - - return xe_new, ye_new - -def transform_vel_from_file(Xcoeff, Ycoeff, order, vx_orig, vy_orig, x_orig, y_orig): - """ - Given the read-in coefficients from transform_from_file, apply the - transformation to the observed proper motions. This is generalized to - work with any order transform. - - WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL - TRANSFORMS - - Parameters: - ---------- - Xcoeff: Array - Array with the coefficients of the X pos transformation - - Ycoeff: Array - Array with the coefficients of the Y pos transformation - - order: int - Order of transformation - - vx_orig: array - Array with the original X proper motions - - vy_orig: array - Array with the original Y proper motions - - x_orig: array - Array with the original X positions - - y_orig: array - Array with the original Y positions - - Output: - ------ - vx_new: array - Transformed X proper motions - - vy_new: array - Transformed Y proper motions - """ - idx = 0 # coeff index - vx_new = 0.0 - vy_new = 0.0 - # First loop: dx'/dx - for i in range(order+1): - for j in range(i+1): - vx_new += Xcoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j * vx_orig - vy_new += Ycoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j * vx_orig - - idx += 1 - # Second loop: dy'/dy - idx = 0 # coeff index - for i in range(order+1): - for j in range(i+1): - vx_new += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) * vy_orig - vy_new += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) * vy_orig - - idx += 1 - - return vx_new, vy_new - -def transform_velerr_from_file(Xcoeff, Ycoeff, order, vxe_orig, vye_orig, vx_orig, - vy_orig, xe_orig, ye_orig, x_orig, y_orig): - """ - Given the read-in coefficients from transform_from_file, apply the - transformation to the observed proper motion errors. This is generalized to - work with any order transform. - - WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL - TRANSFORMS - - Parameters: - ---------- - Xcoeff: Array - Array with the coefficients of the X pos transformation - - Ycoeff: Array - Array with the coefficients of the Y pos transformation - - order: int - Order of transformation - - vxe_orig: array - Array with the original X proper motion errs - - vye_orig: array - Array with the original Y proper motion errs - - vx_orig: array - Array with the original X proper motions - - vy_orig: array - Array with the original Y proper motions - - xe_orig: array - Array with the original X position errs - - ye_orig: array - Array with the original Y position errs - - x_orig: array - Array with the original X positions - - y_orig: array - Array with the original Y positions - - Output: - ------ - vxe_new: array - Transformed X proper motion errs - - vye_new: array - Transformed Y proper motion errs - """ - idx = 0 - vxe_new_tmp1 = 0.0 - vye_new_tmp1 = 0.0 - vxe_new_tmp2 = 0.0 - vye_new_tmp2 = 0.0 - vxe_new_tmp3 = 0.0 - vye_new_tmp3 = 0.0 - vxe_new_tmp4 = 0.0 - vye_new_tmp4 = 0.0 - - - # First loop: dvx' / dx - for i in range(order+1): - for j in range(i+1): - vxe_new_tmp1 += Xcoeff[idx] * (i-j) * (i-j-1) * x_orig**(i-j-2) * y_orig**j * vx_orig - vxe_new_tmp1 += Xcoeff[idx] * (j) * (i-j) * x_orig**(i-j-1) * y_orig**(j-1) * vy_orig - vye_new_tmp1 += Ycoeff[idx] * (i-j) * (i-j-1) * x_orig**(i-j-2) * y_orig**j * vx_orig - vye_new_tmp1 += Ycoeff[idx] * (j) * (i-j) * x_orig**(i-j-1) * y_orig**(j-1) * vy_orig - - idx += 1 - - # Second loop: dvx' / dy - idx = 0 - for i in range(order+1): - for j in range(i+1): - vxe_new_tmp2 += Xcoeff[idx] * (i-j) * (j) * x_orig**(i-j-1) * y_orig**(j-1) * vx_orig - vxe_new_tmp2 += Xcoeff[idx] * (j) * (j-1) * x_orig**(i-j-1) * y_orig**(j-2) * vy_orig - vye_new_tmp2 += Ycoeff[idx] * (i-j) * (j) * x_orig**(i-j-1) * y_orig**(j-1) * vx_orig - vye_new_tmp2 += Ycoeff[idx] * (j) * (j-1) * x_orig**(i-j-1) * y_orig**(j-2) * vy_orig - - idx += 1 - - # Third loop: dvx' / dvx - idx = 0 - for i in range(order+1): - for j in range(i+1): - vxe_new_tmp3 += Xcoeff[idx] * (i-j) * x_orig**(i-j-1) * y_orig**j - vye_new_tmp3 += Ycoeff[idx] * (i-j) * x_orig**(i-j-1) * y_orig**j - - idx += 1 - - # Fourth loop: dvx' / dvy - idx = 0 - for i in range(order+1): - for j in range(i+1): - vxe_new_tmp4 += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) - vye_new_tmp4 += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) - - idx += 1 - - vxe_new = np.sqrt((vxe_new_tmp1 * xe_orig)**2 + (vxe_new_tmp2 * ye_orig)**2 + \ - (vxe_new_tmp3 * vxe_orig)**2 + (vxe_new_tmp4 * vye_orig)**2) - vye_new = np.sqrt((vye_new_tmp1 * xe_orig)**2 + (vye_new_tmp2 * ye_orig)**2 + \ - (vye_new_tmp3 * vxe_orig)**2 + (vye_new_tmp4 * vye_orig)**2) - - return vxe_new, vye_new def check_iter_tolerances(iters, dr_tol, dm_tol, outlier_tol): @@ -3516,7 +2879,7 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): return -def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', +def trans_initial_guess(ref_list, star_list, trans_args, motion_model_dict, mode='miracle', ignore_contains='star', verbose=True, n_req_match=3, mag_trans=True, order=1): """ @@ -3554,7 +2917,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', # If there are velocities in the reference list, use them. # We assume velocities are in the same units as the positions. - xref, yref = get_pos_at_time(star_list['t'][0], ref_list) + xref, yref = get_pos_at_time(star_list['t'][0], ref_list, motion_model_dict) if 'm' in ref_list.colnames: mref = ref_list['m'] else: @@ -3637,13 +3000,13 @@ def copy_and_rename_for_ref(star_list): if 'xe' in star_list.colnames: old_cols += ['xe'] - new_cols += ['x0e'] + new_cols += ['x0_err'] if 'ye' in star_list.colnames: old_cols += ['ye'] - new_cols += ['y0e'] + new_cols += ['y0_err'] if 'me' in star_list.colnames: old_cols += ['me'] - new_cols += ['m0e'] + new_cols += ['m0_err'] if 'w' in star_list.colnames: old_cols += ['w'] new_cols += ['w'] @@ -3792,11 +3155,12 @@ def get_weighting_scheme(weights, ref_list, star_list): return weight -def get_pos_at_time(t, starlist, use_vel=True): +# TODO: This is sometimes run on a startable, not a starlist, at least as currently used +def get_pos_at_time(t, starlist, motion_model_dict): """ - Take a starlist, check to see if it has velocity columns. + Take a starlist, check to see if it has motion/velocity columns. If it does, then propogate the positions forward in time - to the desired epoch. If no velocities exist, then just + to the desired epoch. If no motion/velocities exist, then just use ['x0', 'y0'] or ['x', 'y'] Inputs @@ -3806,17 +3170,21 @@ def get_pos_at_time(t, starlist, use_vel=True): but it should be in the same units as the 't0' column in starlist. """ - if use_vel and ('vx' in starlist.colnames) and ('vy' in starlist.colnames): - dt = t - starlist['t0'] - x = starlist['x0'] + (starlist['vx'] * dt) - y = starlist['y0'] + (starlist['vy'] * dt) + # Check for motion model + if 'motion_model_used' in starlist.colnames: + x,y,xe,ye = starlist.get_star_positions_at_time(t, motion_model_dict, allow_alt_models=True) + # If no motion model, check for velocities + elif ('vx' in starlist.colnames) and ('vy' in starlist.colnames): + x = starlist['x0'] + starlist['vx']*(t-starlist['t0']) + y = starlist['y0'] + starlist['vy']*(t-starlist['t0']) + # If no velocities, try fitted positon + elif ('x0' in starlist.colnames) and ('y0' in starlist.colnames): + x = starlist['x0'] + y = starlist['y0'] + # Otherwise, use measured position else: - if ('x0' in starlist.colnames) and ('y0' in starlist.colnames): - x = starlist['x0'] - y = starlist['y0'] - else: - x = starlist['x'] - y = starlist['y'] + x = starlist['x'] + y = starlist['y'] return (x, y) diff --git a/flystar/align_old_functions.py b/flystar/align_old_functions.py new file mode 100755 index 0000000..9bae670 --- /dev/null +++ b/flystar/align_old_functions.py @@ -0,0 +1,828 @@ +""" +Old functions that are only referenced in examples and template +""" +def transform_from_file(starlist, transFile): + """ + Apply transformation from transFile to starlist. Returns astropy table with + added columns with the transformed coordinates. NOTE: Transforms + positions/position errors, plus velocities and velocity errors if they + are present in starlist. + + WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL + TRANSFORMS + + Parameters: + ---------- + starlist: astropy table + Starlist we want to apply the transformation too. Must already + have standard column headers + + transFile: ascii file + File with the transformation coefficients. Assumed to be output of + write_transform, with coefficients specified as code documents + + Output: + ------ + Copy of starlist astropy table with transformed coordinates. + """ + # Make a copy of starlist. This is what we will eventually modify with + # the transformed coordinates + starlist_f = copy.deepcopy(starlist) + + # Check to see if velocities are present in starlist. If so, we will + # need to transform these as well as positions + vel = False + keys = list(starlist.keys()) + if 'vx' in keys: + vel = True + + # Extract needed information from starlist + x_orig = starlist['x'] + y_orig = starlist['y'] + xe_orig = starlist['xe'] + ye_orig = starlist['ye'] + + if vel: + x0_orig = starlist['x0'] + y0_orig = starlist['y0'] + x0e_orig = starlist['x0_err'] + y0e_orig = starlist['y0_err'] + + vx_orig = starlist['vx'] + vy_orig = starlist['vy'] + vxe_orig = starlist['vx_err'] + vye_orig = starlist['vy_err'] + + # Read transFile + trans = Table.read(transFile, format='ascii.commented_header', header_start=-1) + Xcoeff = trans['Xcoeff'] + Ycoeff = trans['Ycoeff'] + + #-----------------------------------------------# + # General equation for applying the transform + #-----------------------------------------------# + #""" + # First determine the order based on the number of terms + # Comes from Nterms = (N+1)*(N+2) / 2. + order = (np.sqrt(1 + 8*len(Xcoeff)) - 3) / 2. + + if order%1 != 0: + print( 'Incorrect number of coefficients for polynomial') + print( 'Stopping') + return + order = int(order) + + # Position transformation + x_new, y_new = transform_pos_from_file(Xcoeff, Ycoeff, order, x_orig, + y_orig) + + if vel: + x0_new, y0_new = transform_pos_from_file(Xcoeff, Ycoeff, order, x0_orig, + y0_orig) + + # Position error transformation + xe_new, ye_new = transform_poserr_from_file(Xcoeff, Ycoeff, order, xe_orig, + ye_orig, x_orig, y_orig) + + if vel: + x0e_new, y0e_new = transform_poserr_from_file(Xcoeff, Ycoeff, order, x0e_orig, + y0e_orig, x0_orig, y0_orig) + + if vel: + # Velocity transformation + vx_new, vy_new = transform_vel_from_file(Xcoeff, Ycoeff, order, vx_orig, + vy_orig, x_orig, y_orig) + + # Velocity error transformation + vxe_new, vye_new = transform_velerr_from_file(Xcoeff, Ycoeff, order, + vxe_orig, vye_orig, + vx_orig, vy_orig, + xe_orig, ye_orig, + x_orig, y_orig) + + #----------------------------------------# + # Hard coded example: old but functional + #----------------------------------------# + """ + # How the transformation is applied depends on the type of transform. + # This can be determined by the length of Xcoeff, Ycoeff + if len(Xcoeff) == 3: + x_new = Xcoeff[0] + Xcoeff[1] * x_orig + Xcoeff[2] * y_orig + y_new = Ycoeff[0] + Ycoeff[1] * x_orig + Ycoeff[2] * y_orig + xe_new = np.sqrt( (Xcoeff[1] * xe_orig)**2 + (Xcoeff[2] * ye_orig)**2 ) + ye_new = np.sqrt( (Ycoeff[1] * xe_orig)**2 + (Ycoeff[2] * ye_orig)**2 ) + + if vel: + vx_new = Xcoeff[1] * vx_orig + Xcoeff[2] * vy_orig + vy_new = Ycoeff[1] * vx_orig + Ycoeff[2] * vy_orig + vxe_new = np.sqrt( (Xcoeff[1] * vxe_orig)**2 + (Xcoeff[2] * vye_orig)**2 ) + vye_new = np.sqrt( (Ycoeff[1] * vxe_orig)**2 + (Ycoeff[2] * vye_orig)**2 ) + + elif len(Xcoeff) == 6: + x_new = Xcoeff[0] + Xcoeff[1]*x_orig + Xcoeff[3]*x_orig**2 + Xcoeff[2]*y_orig + \ + Xcoeff[5]*y_orig**2. + Xcoeff[4]*x_orig*y_orig + + y_new = Ycoeff[0] + Ycoeff[1]*x_orig + Ycoeff[3]*x_orig**2 + Ycoeff[2]*y_orig + \ + Ycoeff[5]*y_orig**2. + Ycoeff[4]*x_orig*y_orig + + xe_new = np.sqrt( (Xcoeff[1] + 2*Xcoeff[3]*x_orig + Xcoeff[4]*y_orig)**2 * xe_orig**2 + \ + (Xcoeff[2] + 2*Xcoeff[5]*y_orig + Xcoeff[4]*x_orig)**2 * ye_orig**2 ) + + ye_new = np.sqrt( (Ycoeff[1] + 2*Ycoeff[3]*x_orig + Ycoeff[4]*y_orig)**2 * xe_orig**2 + \ + (Ycoeff[2] + 2*Ycoeff[5]*y_orig + Ycoeff[4]*x_orig)**2 * ye_orig**2 ) + + if vel: + vx_new = Xcoeff[1]*vx_orig + 2*Xcoeff[3]*x_orig*vx_orig + Xcoeff[2]*vy_orig + \ + 2.*Xcoeff[5]*y_orig*vy_orig + Xcoeff[4]*(x_orig*vy_orig + vx_orig*y_orig) + + vy_new = Ycoeff[1]*vx_orig + 2*Ycoeff[3]*x_orig*vx_orig + Ycoeff[2]*vy_orig + \ + 2.*Ycoeff[5]*y_orig*vy_orig + Ycoeff[4]*(x_orig*vy_orig + vx_orig*y_orig) + + vxe_new = np.sqrt( (Xcoeff[1] + 2*Xcoeff[3]*x_orig + Xcoeff[4]*y_orig)**2 * vxe_orig**2 + \ + (Xcoeff[2] + 2*Xcoeff[5]*y_orig + Xcoeff[4]*x_orig)**2 * vye_orig**2 + \ + (2*Xcoeff[3]*vx_orig + Xcoeff[4]*vy_orig)**2 * xe_orig**2 + \ + (2*Xcoeff[5]*vy_orig + Xcoeff[4]*vx_orig)**2 * ye_orig**2 ) + + vye_new = np.sqrt( (Ycoeff[1] + 2*Ycoeff[3]*x_orig + Ycoeff[4]*y_orig)**2 * vxe_orig**2 + \ + (Ycoeff[2] + 2*Ycoeff[5]*y_orig + Ycoeff[4]*x_orig)**2 * vye_orig**2 + \ + (2*Ycoeff[3]*vx_orig + Ycoeff[4]*vy_orig)**2 * xe_orig**2 + \ + (2*Ycoeff[5]*vy_orig + Ycoeff[4]*vx_orig)**2 * ye_orig**2 ) + """ + #Update transformed coords to copy of astropy table + starlist_f['x'] = x_new + starlist_f['y'] = y_new + starlist_f['xe'] = xe_new + starlist_f['ye'] = ye_new + + if vel: + starlist_f['x0'] = x0_new + starlist_f['y0'] = y0_new + starlist_f['x0_err'] = x0e_new + starlist_f['y0_err'] = y0e_new + starlist_f['vx'] = vx_new + starlist_f['vy'] = vy_new + starlist_f['vx_err'] = vxe_new + starlist_f['vy_err'] = vye_new + + return starlist_f + +def transform_pos_from_file(Xcoeff, Ycoeff, order, x_orig, y_orig): + """ + Given the read-in coefficients from transform_from_file, apply the + transformation to the observed positions. This is generalized to + work with any order polynomial transform. + + WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL + TRANSFORMS + + Parameters: + ---------- + Xcoeff: Array + Array with the coefficients of the X pos transformation + + Ycoeff: Array + Array with the coefficients of the Y pos transformation + + order: int + Order of transformation + + x_orig: array + Array with the original X positions + + y_orig: array + Array with the original Y positions + + Output: + ------ + x_new: array + Transformed X positions + + y_new: array + Transformed Y positions + + """ + idx = 0 # coeff index + x_new = 0.0 + y_new = 0.0 + for i in range(order+1): + for j in range(i+1): + x_new += Xcoeff[idx] * x_orig**(i-j) * y_orig**j + y_new += Ycoeff[idx] * x_orig**(i-j) * y_orig**j + + idx += 1 + + return x_new, y_new + +def transform_poserr_from_file(Xcoeff, Ycoeff, order, xe_orig, ye_orig, x_orig, y_orig): + """ + Given the read-in coefficients from transform_from_file, apply the + transformation to the observed position errors. This is generalized to + work with any order transform. + + WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL + TRANSFORMS + + Parameters: + ---------- + Xcoeff: Array + Array with the coefficients of the X pos transformation + + Ycoeff: Array + Array with the coefficients of the Y pos transformation + + order: int + Order of transformation + + xe_orig: array + Array with the original X position errs + + ye_orig: array + Array with the original Y position errs + + x_orig: array + Array with the original X positions + + y_orig: array + Array with the original Y positions + + Output: + ------ + xe_new: array + Transformed X position errs + + ye_new: array + Transformed Y position errs + """ + idx = 0 # coeff index + xe_new_tmp1 = 0.0 + ye_new_tmp1 = 0.0 + xe_new_tmp2 = 0.0 + ye_new_tmp2 = 0.0 + + # First loop: dx'/dx + for i in range(order+1): + for j in range(i+1): + xe_new_tmp1 += Xcoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j + ye_new_tmp1 += Ycoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j + + idx += 1 + + # Second loop: dy'/dy + idx = 0 # coeff index + for i in range(order+1): + for j in range(i+1): + xe_new_tmp2 += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) + ye_new_tmp2 += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) + + idx += 1 + # Take square root for xe/ye_new + xe_new = np.sqrt((xe_new_tmp1 * xe_orig)**2 + (xe_new_tmp2 * ye_orig)**2) + ye_new = np.sqrt((ye_new_tmp1 * ye_orig)**2 + (ye_new_tmp2 * ye_orig)**2) + + return xe_new, ye_new + +def transform_vel_from_file(Xcoeff, Ycoeff, order, vx_orig, vy_orig, x_orig, y_orig): + """ + Given the read-in coefficients from transform_from_file, apply the + transformation to the observed proper motions. This is generalized to + work with any order transform. + + WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL + TRANSFORMS + + Parameters: + ---------- + Xcoeff: Array + Array with the coefficients of the X pos transformation + + Ycoeff: Array + Array with the coefficients of the Y pos transformation + + order: int + Order of transformation + + vx_orig: array + Array with the original X proper motions + + vy_orig: array + Array with the original Y proper motions + + x_orig: array + Array with the original X positions + + y_orig: array + Array with the original Y positions + + Output: + ------ + vx_new: array + Transformed X proper motions + + vy_new: array + Transformed Y proper motions + """ + idx = 0 # coeff index + vx_new = 0.0 + vy_new = 0.0 + # First loop: dx'/dx + for i in range(order+1): + for j in range(i+1): + vx_new += Xcoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j * vx_orig + vy_new += Ycoeff[idx] * (i - j) * x_orig**(i-j-1) * y_orig**j * vx_orig + + idx += 1 + # Second loop: dy'/dy + idx = 0 # coeff index + for i in range(order+1): + for j in range(i+1): + vx_new += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) * vy_orig + vy_new += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) * vy_orig + + idx += 1 + + return vx_new, vy_new + +def transform_velerr_from_file(Xcoeff, Ycoeff, order, vxe_orig, vye_orig, vx_orig, + vy_orig, xe_orig, ye_orig, x_orig, y_orig): + """ + Given the read-in coefficients from transform_from_file, apply the + transformation to the observed proper motion errors. This is generalized to + work with any order transform. + + WARNING: THIS CODE WILL NOT WORK FOR LEGENDRE POLYNOMIAL + TRANSFORMS + + Parameters: + ---------- + Xcoeff: Array + Array with the coefficients of the X pos transformation + + Ycoeff: Array + Array with the coefficients of the Y pos transformation + + order: int + Order of transformation + + vxe_orig: array + Array with the original X proper motion errs + + vye_orig: array + Array with the original Y proper motion errs + + vx_orig: array + Array with the original X proper motions + + vy_orig: array + Array with the original Y proper motions + + xe_orig: array + Array with the original X position errs + + ye_orig: array + Array with the original Y position errs + + x_orig: array + Array with the original X positions + + y_orig: array + Array with the original Y positions + + Output: + ------ + vxe_new: array + Transformed X proper motion errs + + vye_new: array + Transformed Y proper motion errs + """ + idx = 0 + vxe_new_tmp1 = 0.0 + vye_new_tmp1 = 0.0 + vxe_new_tmp2 = 0.0 + vye_new_tmp2 = 0.0 + vxe_new_tmp3 = 0.0 + vye_new_tmp3 = 0.0 + vxe_new_tmp4 = 0.0 + vye_new_tmp4 = 0.0 + + + # First loop: dvx' / dx + for i in range(order+1): + for j in range(i+1): + vxe_new_tmp1 += Xcoeff[idx] * (i-j) * (i-j-1) * x_orig**(i-j-2) * y_orig**j * vx_orig + vxe_new_tmp1 += Xcoeff[idx] * (j) * (i-j) * x_orig**(i-j-1) * y_orig**(j-1) * vy_orig + vye_new_tmp1 += Ycoeff[idx] * (i-j) * (i-j-1) * x_orig**(i-j-2) * y_orig**j * vx_orig + vye_new_tmp1 += Ycoeff[idx] * (j) * (i-j) * x_orig**(i-j-1) * y_orig**(j-1) * vy_orig + + idx += 1 + + # Second loop: dvx' / dy + idx = 0 + for i in range(order+1): + for j in range(i+1): + vxe_new_tmp2 += Xcoeff[idx] * (i-j) * (j) * x_orig**(i-j-1) * y_orig**(j-1) * vx_orig + vxe_new_tmp2 += Xcoeff[idx] * (j) * (j-1) * x_orig**(i-j-1) * y_orig**(j-2) * vy_orig + vye_new_tmp2 += Ycoeff[idx] * (i-j) * (j) * x_orig**(i-j-1) * y_orig**(j-1) * vx_orig + vye_new_tmp2 += Ycoeff[idx] * (j) * (j-1) * x_orig**(i-j-1) * y_orig**(j-2) * vy_orig + + idx += 1 + + # Third loop: dvx' / dvx + idx = 0 + for i in range(order+1): + for j in range(i+1): + vxe_new_tmp3 += Xcoeff[idx] * (i-j) * x_orig**(i-j-1) * y_orig**j + vye_new_tmp3 += Ycoeff[idx] * (i-j) * x_orig**(i-j-1) * y_orig**j + + idx += 1 + + # Fourth loop: dvx' / dvy + idx = 0 + for i in range(order+1): + for j in range(i+1): + vxe_new_tmp4 += Xcoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) + vye_new_tmp4 += Ycoeff[idx] * (j) * x_orig**(i-j) * y_orig**(j-1) + + idx += 1 + + vxe_new = np.sqrt((vxe_new_tmp1 * xe_orig)**2 + (vxe_new_tmp2 * ye_orig)**2 + \ + (vxe_new_tmp3 * vxe_orig)**2 + (vxe_new_tmp4 * vye_orig)**2) + vye_new = np.sqrt((vye_new_tmp1 * xe_orig)**2 + (vye_new_tmp2 * ye_orig)**2 + \ + (vye_new_tmp3 * vxe_orig)**2 + (vye_new_tmp4 * vye_orig)**2) + + return vxe_new, vye_new + + + + + + +""" +Old functions with things hard-coded for OB120169 +""" + +def run_align_iter(catalog, trans_order=1, poly_deg=1, ref_mag_lim=19, ref_radius_lim=300): + # Load up data with matched stars. + d = Table.read(catalog) + + # Determine how many epochs there are. + N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) + + # Determine how many stars there are. + N_stars = len(d) + + # Determine the reference epoch + ref = d.meta['L_REF'] + + # Figure out the number of free parameters for the specified + # poly2d order. + poly2d = models.Polynomial2D(trans_order) + N_par_trans_per_epoch = 2.0 * poly2d.get_num_coeff(2) # one poly2d for each dimension (X, Y) + N_par_trans = N_par_trans_per_epoch * N_epochs + + ########## + # First iteration -- align everything to REF epoch with zero velocities. + ########## + print('ALIGN_EPOCHS: run_align_iter() -- PASS 1') + ee_ref = d.meta['L_REF'] + + target_name = 'OB120169' + + trans1, used1 = calc_transform_ref_epoch(d, target_name, ee_ref, ref_mag_lim, ref_radius_lim) + + ########## + # Derive the velocity of each stars using the round 1 transforms. + ########## + calc_polyfit_all_stars(d, poly_deg, init_fig_idx=0) + + calc_mag_avg_all_stars(d) + + tdx = np.where((d['name_0'] == 'OB120169') | (d['name_0'] == 'OB120169_L'))[0] + print(d[tdx]['name_0', 't0', 'mag', 'x0', 'vx', 'x0_err', 'vx_err', 'chi2x', 'y0', 'vy', 'y0_err', 'vy_err', 'chi2y', 'dof']) + + ########## + # Second iteration -- align everything to reference positions derived from iteration 1 + ########## + print('ALIGN_EPOCHS: run_align_iter() -- PASS 2') + target_name = 'OB120169' + + trans2, used2 = calc_transform_ref_poly(d, target_name, poly_deg, ref_mag_lim, ref_radius_lim) + + ########## + # Derive the velocity of each stars using the round 1 transforms. + ########## + calc_polyfit_all_stars(d, poly_deg, init_fig_idx=4) + + ########## + # Save output + ########## + d.write(catalog.replace('.fits', '_aln.fits'), overwrite=True) + + return + +def calc_transform_ref_epoch(d, target_name, ee_ref, ref_mag_lim, ref_radius_lim): + # Determine how many epochs there are. + N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) + + # output array + trans = [] + used = [] + + # Find the target + tdx = np.where(d['name_0'] == 'OB120169')[0][0] + + # Reference values + t_ref = d['t_{0:d}'.format(ee_ref)] + m_ref = d['m_{0:d}'.format(ee_ref)] + x_ref = d['x_{0:d}'.format(ee_ref)] + y_ref = d['y_{0:d}'.format(ee_ref)] + xe_ref = d['xe_{0:d}'.format(ee_ref)] + ye_ref = d['ye_{0:d}'.format(ee_ref)] + + # Calculate some quanitites we use for selecting reference stars. + r_ref = np.hypot(x_ref - x_ref[tdx], y_ref - y_ref[tdx]) + + # Loop through and align each epoch to the reference epoch. + for ee in range(N_epochs): + # Pull out the X, Y positions (and errors) for the two + # starlists we are going to align. + x_epo = d['x_{0:d}'.format(ee)] + y_epo = d['y_{0:d}'.format(ee)] + t_epo = d['t_{0:d}'.format(ee)] + xe_epo = d['xe_{0:d}'.format(ee)] + ye_epo = d['ye_{0:d}'.format(ee)] + + # Figure out the set of stars detected in both epochs. + idx = np.where((t_ref != 0) & (t_epo != 0) & (xe_ref != 0) & (xe_epo != 0))[0] + + # Find those in both epochs AND reference stars. This is [idx][rdx] + rdx = np.where((r_ref[idx] < ref_radius_lim) & (m_ref[idx] < ref_mag_lim))[0] + + # Average the positional errors together to get one weight per star. + xye_ref = (xe_ref + ye_ref) / 2.0 + xye_epo = (xe_epo + ye_epo) / 2.0 + xye_wgt = (xye_ref**2 + xye_epo**2)**0.5 + + # Calculate transform based on the matched stars + trans_tmp = transforms.PolyTransform(x_epo[idx][rdx], y_epo[idx][rdx], x_ref[idx][rdx], y_ref[idx][rdx], + weights=xye_wgt[idx][rdx], order=2) + + trans.append(trans_tmp) + + + # Apply thte transformation to the stars positions and errors: + xt_epo = np.zeros(len(d), dtype=float) + yt_epo = np.zeros(len(d), dtype=float) + xet_epo = np.zeros(len(d), dtype=float) + yet_epo = np.zeros(len(d), dtype=float) + + xt_epo[idx], xet_epo[idx], yt_epo[idx], yet_epo[idx] = trans_tmp.evaluate_errors(x_epo[idx], xe_epo[idx], + y_epo[idx], ye_epo[idx], + nsim=100) + + d['xt_{0:d}'.format(ee)] = xt_epo + d['yt_{0:d}'.format(ee)] = yt_epo + d['xet_{0:d}'.format(ee)] = xet_epo + d['yet_{0:d}'.format(ee)] = yet_epo + + # Record which stars we used in the transform. + used_tmp = np.zeros(len(d), dtype=bool) + used_tmp[idx[rdx]] = True + + used.append(used_tmp) + + if True: + plot_quiver_residuals(xt_epo, yt_epo, x_ref, y_ref, idx, rdx, 'Epoch: ' + str(ee)) + + used = np.array(used) + + return trans, used + +def calc_transform_ref_poly(d, target_name, poly_deg, ref_mag_lim, ref_radius_lim): + # Determine how many epochs there are. + N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) + + # output array + trans = [] + used = [] + + # Find the target + tdx = np.where(d['name_0'] == 'OB120169')[0][0] + + # Temporary Reference values + t_ref = d['t0'] + m_ref = d['mag'] + x_ref = d['x0'] + y_ref = d['y0'] + xe_ref = d['x0_err'] + ye_ref = d['y0_err'] + + # Calculate some quanitites we use for selecting reference stars. + r_ref = np.hypot(x_ref - x_ref[tdx], y_ref - y_ref[tdx]) + + for ee in range(N_epochs): + # Pull out the X, Y positions (and errors) for the two + # starlists we are going to align. + x_epo = d['x_{0:d}'.format(ee)] + y_epo = d['y_{0:d}'.format(ee)] + t_epo = d['t_{0:d}'.format(ee)] + xe_epo = d['xe_{0:d}'.format(ee)] + ye_epo = d['ye_{0:d}'.format(ee)] + + # Shift the reference position by the polyfit for each star. + dt = t_epo - t_ref + if poly_deg >= 0: + x_ref_ee = x_ref + y_ref_ee = y_ref + xe_ref_ee = x_ref + ye_ref_ee = y_ref + + if poly_deg >= 1: + x_ref_ee += d['vx'] * dt + y_ref_ee += d['vy'] * dt + xe_ref_ee = np.hypot(xe_ref_ee, d['vx_err'] * dt) + ye_ref_ee = np.hypot(ye_ref_ee, d['vy_err'] * dt) + + if poly_deg >= 2: + x_ref_ee += d['ax'] * dt + y_ref_ee += d['ay'] * dt + xe_ref_ee = np.hypot(xe_ref_ee, d['axe'] * dt) + ye_ref_ee = np.hypot(ye_ref_ee, d['aye'] * dt) + + # Figure out the set of stars detected in both. + idx = np.where((t_ref != 0) & (t_epo != 0) & (xe_ref != 0) & (xe_epo != 0))[0] + + # Find those in both AND reference stars. This is [idx][rdx] + rdx = np.where((r_ref[idx] < ref_radius_lim) & (m_ref[idx] < ref_mag_lim))[0] + + # Average the positional errors together to get one weight per star. + xye_ref = (xe_ref_ee + ye_ref_ee) / 2.0 + xye_epo = (xe_epo + ye_epo) / 2.0 + xye_wgt = (xye_ref**2 + xye_epo**2)**0.5 + + # Calculate transform based on the matched stars + trans_tmp = transforms.PolyTransform(x_epo[idx][rdx], y_epo[idx][rdx], x_ref_ee[idx][rdx], y_ref_ee[idx][rdx], + weights=xye_wgt[idx][rdx], order=2) + trans.append(trans_tmp) + + # Apply thte transformation to the stars positions and errors: + xt_epo = np.zeros(len(d), dtype=float) + yt_epo = np.zeros(len(d), dtype=float) + xet_epo = np.zeros(len(d), dtype=float) + yet_epo = np.zeros(len(d), dtype=float) + + xt_epo[idx], xet_epo[idx], yt_epo[idx], yet_epo[idx] = trans_tmp.evaluate_errors(x_epo[idx], xe_epo[idx], + y_epo[idx], ye_epo[idx], + nsim=100) + d['xt_{0:d}'.format(ee)] = xt_epo + d['yt_{0:d}'.format(ee)] = yt_epo + d['xet_{0:d}'.format(ee)] = xet_epo + d['yet_{0:d}'.format(ee)] = yet_epo + + # Record which stars we used in the transform. + used_tmp = np.zeros(len(d), dtype=bool) + used_tmp[idx[rdx]] = True + + used.append(used_tmp) + + if True: + plot_quiver_residuals(xt_epo, yt_epo, x_ref_ee, y_ref_ee, idx, rdx, 'Epoch: ' + str(ee)) + + used = np.array(used) + + return trans, used + +def calc_polyfit_all_stars(d, poly_deg, init_fig_idx=0): + # Determine how many stars there are. + N_stars = len(d) + + # Determine how many epochs there are. + N_epochs = len([n for n, c in enumerate(d.colnames) if c.startswith('name')]) + + # Setup some variables to save the results + t0_all = [] + px_all = [] + py_all = [] + pxe_all = [] + pye_all = [] + chi2x_all = [] + chi2y_all = [] + dof_all = [] + + # Get the time array, which is the same for all stars. + # Also, sort the time indices. + t = np.array([d['t_{0:d}'.format(ee)][0] for ee in range(N_epochs)]) + tdx = t.argsort() + t_sorted = t[tdx] + + # Run polyfit on each star. + for ss in range(N_stars): + # Get the x, y, xe, ye, and t arrays for this star. + xt = np.array([d['xt_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) + yt = np.array([d['yt_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) + xet = np.array([d['xet_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) + yet = np.array([d['yet_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) + t_tmp = np.array([d['t_{0:d}'.format(ee)][ss] for ee in range(N_epochs)]) + + # Sort these arrays. + xt_sorted = xt[tdx] + yt_sorted = yt[tdx] + xet_sorted = xet[tdx] + yet_sorted = yet[tdx] + t_tmp_sorted = t_tmp[tdx] + + # Get only the detected epochs. + edx = np.where(t_tmp_sorted != 0)[0] + + # Calculate the weighted t0 (using the transformed errors). + weight_for_t0 = 1.0 / np.hypot(xet_sorted, yet_sorted) + t0 = np.average(t_sorted[edx], weights=weight_for_t0[edx]) + + # for ee in edx: + # print('{0:8.3f} {1:10.5f} {2:10.5f} {3:8.5f} {4:8.5f}'.format(t[ee], xt[ee], yt[ee], xet[ee], yet[ee])) + # pdb.set_trace() + + # Run polyfit + dt = t_sorted - t0 + px, covx = np.polyfit(dt[edx], xt_sorted[edx], poly_deg, w=1./xet_sorted[edx], cov=True) + py, covy = np.polyfit(dt[edx], yt_sorted[edx], poly_deg, w=1./yet_sorted[edx], cov=True) + + pxe = np.sqrt(np.diag(covx)) + pye = np.sqrt(np.diag(covy)) + + + x_mod = np.polyval(px, dt[edx]) + y_mod = np.polyval(py, dt[edx]) + chi2x = np.sum( ((x_mod - xt_sorted[edx]) / xet_sorted[edx])**2 ) + chi2y = np.sum( ((y_mod - yt_sorted[edx]) / yet_sorted[edx])**2 ) + dof = len(edx) - (poly_deg + 1) + + # Save results: + t0_all.append(t0) + px_all.append(px) + py_all.append(py) + pxe_all.append(pxe) + pye_all.append(pye) + chi2x_all.append(chi2x) + chi2y_all.append(chi2y) + dof_all.append(dof) + + if d[ss]['name_0'] in ['OB120169', 'OB120169_L']: + gs = GridSpec(3, 2) # 3 rows, 1 column + fig = plt.figure(ss + 1 + init_fig_idx, figsize=(12, 8)) + a0 = fig.add_subplot(gs[0:2, 0]) + a1 = fig.add_subplot(gs[2, 0]) + a2 = fig.add_subplot(gs[0:2, 1]) + a3 = fig.add_subplot(gs[2, 1]) + + a0.errorbar(t_sorted[edx], xt_sorted[edx], yerr=xet_sorted[edx], fmt='ro') + a0.plot(t_sorted[edx], x_mod, 'k-') + a0.set_title(d[ss]['name_0'] + ' X') + a1.errorbar(t_sorted[edx], xt_sorted[edx] - x_mod, yerr=xet_sorted[edx], fmt='ro') + a1.axhline(0, linestyle='--') + a1.set_xlabel('Time (yrs)') + a2.errorbar(t_sorted[edx], yt_sorted[edx], yerr=yet_sorted[edx], fmt='ro') + a2.plot(t_sorted[edx], y_mod, 'k-') + a2.set_title(d[ss]['name_0'] + ' Y') + a3.errorbar(t_sorted[edx], yt_sorted[edx] - y_mod, yerr=yet_sorted[edx], fmt='ro') + a3.axhline(0, linestyle='--') + a3.set_xlabel('Time (yrs)') + + + + t0_all = np.array(t0_all) + px_all = np.array(px_all) + py_all = np.array(py_all) + pxe_all = np.array(pxe_all) + pye_all = np.array(pye_all) + chi2x_all = np.array(chi2x_all) + chi2y_all = np.array(chi2y_all) + dof_all = np.array(dof_all) + + # Done with all the stars... recast as numpy arrays and save to output table. + d['t0'] = t0_all + d['chi2x'] = chi2x_all + d['chi2y'] = chi2y_all + d['dof'] = dof_all + if poly_deg >= 0: + d['x0'] = px_all[:, -1] + d['y0'] = py_all[:, -1] + d['x0_err'] = pxe_all[:, -1] + d['y0_err'] = pye_all[:, -1] + + if poly_deg >= 1: + d['vx'] = px_all[:, -2] + d['vy'] = py_all[:, -2] + d['vx_err'] = pxe_all[:, -2] + d['vy_err'] = pye_all[:, -2] + + if poly_deg >= 2: + d['ax'] = px_all[:, -3] + d['ay'] = py_all[:, -3] + d['axe'] = pxe_all[:, -3] + d['aye'] = pye_all[:, -3] + + pdb.set_trace() + + return + diff --git a/flystar/analysis.py b/flystar/analysis.py index 953461b..3121458 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -18,10 +18,10 @@ ################################################## # New codes for velocity support in FlyStar and using -# the new StarTable and StarList format. +# the new StarTable and StarList format. ################################################## -def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr2'): +def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr3'): """ Query the Gaia database at the specified location and with the specified search radius @@ -57,8 +57,59 @@ def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr2'): return gaia +def check_gaia_parallaxes(ra,dec,search_radius=10.0,table_name='gaiadr3',target='(unnamed)', + file_ext=''): + """ + Query the Gaia database at the specified location + and with the specified search radius, and plot + parallaxes. + + Input + ---------- + ra : string + R.A. in hours in the format such as '17:45:40.3' + + dec : string + Dec. in degrees in the format such as '-29:00:28.0' + + search_radius : float + The search radius in arcseconds. -def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2): + Optional Input + -------------- + table_name : string + Options are 'gaiadr2' or 'gaiadr3' + """ + # Query Gaia + gaia = query_gaia(ra,dec,search_radius=search_radius,table_name=table_name) + # Set up reasonable histogram bins + plim0,plim1 = np.min(gaia['parallax']),np.max(gaia['parallax']) + pplim0,pplim1 = np.min(gaia['parallax']/gaia['parallax_error']),np.max(gaia['parallax']/gaia['parallax_error']) + binwidth = 1 + pbins = np.arange(np.floor(plim0),np.ceil(plim1)+binwidth,binwidth) + ppbins = np.arange(np.floor(pplim0),np.ceil(pplim1)+binwidth,binwidth) + # Find number where plx/plx_err>3 + p_perr = (gaia['parallax']/gaia['parallax_error']).compressed() + nppe3 = sum((p_perr>3).astype(int)) + nppen3 = sum((p_perr<-3).astype(int)) + print(table_name,'stars within',search_radius,'\" with plx/plx_err>3: ', nppe3, ' of ', len(gaia['parallax'])) + print(table_name,'stars within',search_radius,'\" with plx/plx_err<-3: ', nppen3, ' of ', len(gaia['parallax'])) + # Plot + plt.subplots(nrows=1,ncols=2,figsize=(12,6)) + plt.subplot(121) + plt.xlabel('parallax (mas)'); plt.ylabel('N stars') + plt.hist(gaia['parallax'],bins=pbins) + plt.yscale('log') + plt.title(table_name+' parallax histograms, '+str(search_radius)+'\" radius around '+target, loc='left') + plt.subplot(122) + plt.xlabel('parallax/parallax_error') + plt.hist(gaia['parallax']/gaia['parallax_error'],bins=ppbins) + plt.yscale('log') + plt.tight_layout() + plt.savefig('gaiaplx'+file_ext+'.png') + + +def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, pi_err_limit=0.4, default_motion_model='Linear'): """ Take a Gaia table (from astroquery) and produce a new table with a tangential projection and shift such that the origin is centered on the target of interest. @@ -90,14 +141,14 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2) gaia_new['x0'] = x * -1.0 gaia_new['y0'] = y - gaia_new['x0e'] = xe - gaia_new['y0e'] = ye + gaia_new['x0_err'] = xe + gaia_new['y0_err'] = ye # Also convert the velocities. Note that Gaia PM are already * cos(dec) gaia_new['vx'] = gaia['pmra'].data * -1.0 / 1e3 # asec/yr gaia_new['vy'] = gaia['pmdec'].data / 1e3 - gaia_new['vxe'] = gaia['pmra_error'].data / 1e3 - gaia_new['vye'] = gaia['pmdec_error'].data / 1e3 + gaia_new['vx_err'] = gaia['pmra_error'].data / 1e3 + gaia_new['vy_err'] = gaia['pmdec_error'].data / 1e3 gaia_new['t0'] = gaia['ref_epoch'].data gaia_new['source_id'] = gaia['source_id'].data.astype('S19') @@ -106,38 +157,78 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2) idx = np.where(gaia['pmdec'].mask == True)[0] gaia_new['vx'][idx] = 0.0 gaia_new['vy'][idx] = 0.0 - gaia_new['vxe'][idx] = 0.0 - gaia_new['vye'][idx] = 0.0 + gaia_new['vx_err'][idx] = 0.0 + gaia_new['vy_err'][idx] = 0.0 gaia_new['m'] = gaia['phot_g_mean_mag'] gaia_new['me'] = 1.09/gaia['phot_g_mean_flux_over_error'] - gaia_new['parallax'] = gaia['parallax'] - gaia_new['parallax_error'] = gaia['parallax_error'] + gaia_new['pi'] = gaia['parallax'].data*1e-3 + gaia_new['pi_err'] = gaia['parallax_error'].data*1e-3 # Set the velocities (and uncertainties) to zero if they aren't measured. idx = np.where(np.isnan(gaia_new['vx']) == True)[0] gaia_new['vx'][idx] = 0.0 - gaia_new['vxe'][idx] = 0.0 + gaia_new['vx_err'][idx] = 0.0 gaia_new['vy'][idx] = 0.0 - gaia_new['vye'][idx] = 0.0 + gaia_new['vy_err'][idx] = 0.0 + + # Cut out stars with high plx error and set motion models + idx = np.where((gaia_new['pi_err']>(pi_err_limit/1e3)) | (gaia['parallax'].mask == True))[0] + gaia_new['pi'][idx] = 0.0 + gaia_new['pi_err'][idx] = 0.0 + if default_motion_model=='Parallax': + gaia_new['motion_model_input'] = 'Parallax' + gaia_new['motion_model_used'] = 'Parallax' + gaia_new['motion_model_used'][idx] = 'Linear' + gaia_new['n_params'] = 3 + gaia_new['n_params'][idx] = 2 + elif default_motion_model=='Linear': + gaia_new['motion_model_input'] = 'Linear' + gaia_new['motion_model_used'] = 'Linear' + gaia_new['n_params'] = 2 + elif default_motion_model=='Fixed': + gaia_new['motion_model_input'] = 'Fixed' + gaia_new['motion_model_used'] = 'Fixed' + gaia_new['n_params'] = 1 + else: + print("Invalid motion model",default_motion_model,"- none assigned") + + #macy additions to try to fix wild magnitude values + #gaia_new['ruwe'] = gaia['ruwe'] + #try: + # gaia_new = gaia_new[~gaia_new['m'].mask] + #except: + # print('no invalig mags') gaia_new = gaia_new.filled() #convert masked colunms to regular columns if targets_dict != None: - for targ_name, targ_coo in targets_dict.items(): - dx = gaia_new['x0'] - (targ_coo[0] * -1.0) - dy = gaia_new['y0'] - targ_coo[1] +# for targ_name, targ_coo in targets_dict.items(): +# dx = gaia_new['x0'] - (targ_coo[0] * -1.0) +# dy = gaia_new['y0'] - targ_coo[1] +# dr = np.hypot(dx, dy) +# +# idx = dr.argmin() +# +# if dr[idx] < match_dr_max: +# gaia_new['name'][idx] = targ_name +# print('Found match for: ', targ_name, ' - ',gaia_new['source_id'][idx]) + targ_names = [x for x in targets_dict] + targ_xs = np.array([targets_dict[x][0] for x in targets_dict]) + targ_ys = np.array([targets_dict[x][1] for x in targets_dict]) + for i_gaia in range(len(gaia_new)): + dx = gaia_new['x0'][i_gaia] - (targ_xs * -1.0) + dy = gaia_new['y0'][i_gaia] - targ_ys dr = np.hypot(dx, dy) idx = dr.argmin() if dr[idx] < match_dr_max: - gaia_new['name'][idx] = targ_name - print('Found match for: ', targ_name) + gaia_new['name'][i_gaia] = targ_names[idx] + print('Found match for: ', targ_names[idx], ' - ',gaia_new['source_id'][i_gaia]) return gaia_new - def run_flystar(): test_file = '/u/jlu/work/microlens/OB150211/a_2018_10_19/a_ob150211_2018_10_19/lis/stars_matched2.fits' @@ -279,6 +370,9 @@ def rename_after_flystar(star_tab, label_dat_file, new_copy=True, dr_tol=0.05, d idx_lab, idx_star, dr, dm = match.match(x_lab, y_lab, m_lab, star_tab['x0'], star_tab['y0'], star_tab['m0'], dr_tol=dr_tol, dm_tol=dm_tol, verbose=verbose) + #print('idx_lab:') + #for iii in range(len(idx_lab)): + # print(label_tab["name"][idx_lab[iii]], star_tab["name"][idx_star[iii]]) print('Renaming {0:d} out of {1:d} stars'.format(len(idx_lab), len(star_tab))) @@ -317,12 +411,12 @@ def pick_good_ref_stars(star_tab, r_cut=None, m_cut=None, p_err_cut=None, pm_err print('pick_good_ref_stars: Use {0:d} stars after m<{1:.2f}.'.format(use.sum(), m_cut)) if p_err_cut is not None: - p_err = np.mean((star_tab['x0e'], star_tab['y0e']), axis=0) + p_err = np.mean((star_tab['x0_err'], star_tab['y0_err']), axis=0) use = use & (p_err < p_err_cut) print('pick_good_ref_stars: Use {0:d} stars after p_err<{1:.5f}.'.format(use.sum(), p_err_cut)) if pm_err_cut is not None: - pm_err = np.mean((star_tab['vxe'], star_tab['vye']), axis=0) + pm_err = np.mean((star_tab['vx_err'], star_tab['vy_err']), axis=0) use = use & (pm_err < pm_err_cut) print('pick_good_ref_stars: Use {0:d} stars after pm_err<{1:.5f}.'.format(use.sum(), pm_err_cut)) @@ -344,38 +438,18 @@ def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): combined astrometry + uncombined photometry table. """ # Multiples: ['x', 'y', 'm', 'name_in_list', 'xe', 'ye', 'me', 't', - # 'x_orig', 'y_orig', 'm_orig', 'xe_orig', 'ye_orig', 'me_orig', 'used_in_trans'] - # Single: ['name', 'm0', 'm0e', 'use_in_trans', 'ref_orig', 'n_detect', - # 'x0', 'vx', 'y0', 'vy', 'x0e', 'vxe', 'y0e', 'vye', 't0'] + # 'x_orig', 'y_orig', 'm_orig', 'xe_orig', 'ye_orig', 'me_orig', 'used_in_trans', + # 'xe_boot','ye_boot','me_boot'] + # Single: ['name', 'm0', 'm0_err', 'use_in_trans', 'ref_orig', 'n_detect', + # 'x0', 'vx', 'y0', 'vy', 'x0_err', 'vx_err', 'y0_err', 'vy_err', 't0'] # Don't include n_vfit - new_tab = startables.StarTable(name=tab['name'].data, - x=tab['x'][:,idx].data, - y=tab['y'][:,idx].data, - m=tab['m'][:,idx].data, - xe=tab['xe'][:,idx].data, - ye=tab['ye'][:,idx].data, - me=tab['me'][:,idx].data, - t=tab['t'][:,idx].data, - x_orig=tab['x_orig'][:,idx].data, - y_orig=tab['y_orig'][:,idx].data, - m_orig=tab['m_orig'][:,idx].data, - xe_orig=tab['xe_orig'][:,idx].data, - ye_orig=tab['ye_orig'][:,idx].data, - me_orig=tab['me_orig'][:,idx].data, - used_in_trans=tab['used_in_trans'][:,idx].data, - m0=tab['m0'].data, - m0e=tab['m0e'].data, - use_in_trans=tab['use_in_trans'].data, - x0=tab['x0'].data, - vx=tab['vx'].data, - y0=tab['y0'].data, - vy=tab['vy'].data, - x0e=tab['x0e'].data, - vxe=tab['vxe'].data, - y0e=tab['y0e'].data, - vye=tab['vye'].data, - t0=tab['t0'].data) + new_tab = copy.deepcopy(tab) + #new_tab.remove_column('n_fit') + new_tab.remove_column('n_detect') + for col in ['x','y','m','name_in_list','xe','ye','me','t','x_orig','y_orig','m_orig', + 'xe_orig','ye_orig','me_orig','used_in_trans','xe_boot','ye_boot','me_boot']: + new_tab[col] = tab[col][:,idx] new_tab.combine_lists('m', weights_col='me', sigma=3, ismag=True) diff --git a/flystar/conftest.py b/flystar/conftest.py index 672b273..da164b5 100644 --- a/flystar/conftest.py +++ b/flystar/conftest.py @@ -31,9 +31,9 @@ def pytest_configure(config): PYTEST_HEADER_MODULES.pop('Pandas', None) PYTEST_HEADER_MODULES['scikit-image'] = 'skimage' - from . import __version__ + #from . import __version__ packagename = os.path.basename(os.path.dirname(__file__)) - TESTED_VERSIONS[packagename] = __version__ + #TESTED_VERSIONS[packagename] = __version__ # Uncomment the last two lines in this block to treat all DeprecationWarnings as # exceptions. For Astropy v2.0 or later, there are 2 additional keywords, diff --git a/flystar/fit_velocity.py b/flystar/fit_velocity.py deleted file mode 100755 index 0317322..0000000 --- a/flystar/fit_velocity.py +++ /dev/null @@ -1,205 +0,0 @@ -from tqdm import tqdm -import numpy as np -import pandas as pd - -def linear(x, k, b): - return k*x + b - -def linear_fit(x, y, sigma=None, absolute_sigma=True): - """Weighted linear regression (See https://en.wikipedia.org/wiki/Weighted_least_squares#Solution). Recommended for low-dimension, non-degenerate data. Otherwise, please use scipy.curve_fit. - - Parameters - ---------- - x : array-like - x data - y : array-like - y data - sigma : array-like, optional - Weighted by 1/sigma**2. If not provided, weight = 1, by default None - absolute_sigma : bool, optional - If True (default), sigma is used in an absolute sense and the estimated parameter uncertainty reflects these absolute values. If False, only the relative magnitudes of the sigma values matter, by default True - - Returns - ------- - result : dictionary - Dictionary with keys 'slope', 'e_slope', 'intercept', 'e_intercept', and 'chi2' if return_chi2=True. - """ - x = np.array(x) - y = np.array(y) - if sigma is None: - sigma = np.ones_like(x) - else: - sigma = np.array(sigma) - - X = np.vander(x, 2) - W = np.diag(1/sigma**2) - XTWX = X.T @ W @ X - pcov = np.linalg.inv(XTWX) # Covariance Matrix - popt = pcov @ X.T @ W @ y # Linear Solution - perr = np.sqrt(np.diag(pcov)) # Uncertainty of Linear Solution - - residual = y - X @ popt - chi2 = residual.T @ W @ residual - - if not absolute_sigma: - reduced_chi2 = chi2/(len(x) - 2) - perr *= reduced_chi2**0.5 - - result = { - 'slope': popt[0], - 'intercept': popt[1], - 'e_slope': perr[0], - 'e_intercept': perr[1], - 'chi2': chi2 - } - - return result - - -def calc_chi2(x, y, sigma, slope, intercept): - popt = np.array([slope, intercept]) - X = np.vander(x, 2) - W = np.diag(1/sigma**2) - residual = y - X @ popt - return residual.T @ W @ residual - - -def fit_velocity(startable, weighting='var', use_scipy=False, absolute_sigma=True, epoch_cols='all', art_star=False): - """Fit proper motion with weighted linear regression equations (see https://en.wikipedia.org/wiki/Weighted_least_squares#Solution). - Assumes that all data are valid. - - Parameters - ---------- - startable : StarTable - StarTable object - weighting : str, optional - Weighting by variance (1/ye**2) or standard deviation (1/ye), by default 'var' - use_scipy : bool, optional - Use scipy.curve_fit or flystar.fit_velocity.linear_fit, by default False - absolute_sigma : bool, optional - If True (default), sigma is used in an absolute sense and the estimated parameter uncertainty reflects these absolute values. If False, only the relative magnitudes of the sigma values matter, by default True - epoch_cols : str or list of intergers, optional - List of indicies of columns to use. If 'all', use all columns, by default 'all' - art_star : bool, optional - Artificial star catalog or not. If True, use startable['x'][:, epoch_ols, 1] as the location, by default False. - - Returns - ------- - result : pd.DataFrame - Proper motion dataframe with keys vx, vxe, vy, vye, x0, x0e, y0, y0e - - Raises - ------ - ValueError - If weighting is neither 'std' nor 'var' - """ - if weighting not in ['std', 'var']: - raise ValueError(f"Weighting must be either 'std' or 'var', not '{weighting}'.") - if epoch_cols is None: - epoch_cols = np.arange(len(startable.meta['YEARS'])) # use all cols if not specified - - N = len(startable) - vx = np.zeros(N) - vy = np.zeros(N) - vxe = np.zeros(N) - vye = np.zeros(N) - x0 = np.zeros(N) - y0 = np.zeros(N) - x0e = np.zeros(N) - y0e = np.zeros(N) - chi2_vx = np.zeros(N) - chi2_vy = np.zeros(N) - t0 = np.zeros(N) - - time = np.array(startable.meta['YEARS'])[epoch_cols] - - if not art_star: - x_arr = startable['x'][:, epoch_cols] - y_arr = startable['y'][:, epoch_cols] - else: - x_arr = startable['x'][:, epoch_cols, 1] - y_arr = startable['y'][:, epoch_cols, 1] - - xe_arr = startable['xe'][:, epoch_cols] - ye_arr = startable['ye'][:, epoch_cols] - - if weighting=='std': - sigma_x_arr = np.abs(xe_arr)**0.5 - sigma_y_arr = np.abs(ye_arr)**0.5 - elif weighting=='var': - sigma_x_arr = xe_arr - sigma_y_arr = ye_arr - - # For each star - for i in tqdm(range(len(startable))): - x = x_arr[i] - y = y_arr[i] - xe = xe_arr[i] - ye = ye_arr[i] - sigma_x = sigma_x_arr[i] - sigma_y = sigma_y_arr[i] - - t_weight = 1. / np.hypot(xe, ye) - t0[i] = np.average(time, weights=t_weight) - dt = time - t0[i] - - if use_scipy: - p0x = np.array([0., x.mean()]) - p0y = np.array([0., y.mean()]) - - # Use scipy.curve_fit to fit for velocity - vx_opt, vx_cov = curve_fit(linear, dt, x, p0=p0x, sigma=sigma_x, absolute_sigma=absolute_sigma) - vy_opt, vy_cov = curve_fit(linear, dt, y, p0=p0y, sigma=sigma_y, absolute_sigma=absolute_sigma) - - vx[i] = vx_opt[0] - vy[i] = vy_opt[0] - x0[i] = vx_opt[1] - y0[i] = vy_opt[1] - vxe[i], x0e[i] = np.sqrt(vx_cov.diagonal()) - vye[i], y0e[i] = np.sqrt(vy_cov.diagonal()) - chi2_vx[i] = calc_chi2(dt, x, sigma_x, *vx_opt) - chi2_vy[i] = calc_chi2(dt, y, sigma_y, *vy_opt) - - else: - vx_result = linear_fit(dt, x, sigma=sigma_x, absolute_sigma=absolute_sigma) - vy_result = linear_fit(dt, y, sigma=sigma_y, absolute_sigma=absolute_sigma) - - vx[i] = vx_result['slope'] - vxe[i] = vx_result['e_slope'] - x0[i] = vx_result['intercept'] - x0e[i] = vx_result['e_intercept'] - chi2_vx[i] = vx_result['chi2'] - - vy[i] = vy_result['slope'] - vye[i] = vy_result['e_slope'] - y0[i] = vy_result['intercept'] - y0e[i] = vy_result['e_intercept'] - chi2_vy[i] = vy_result['chi2'] - - result = pd.DataFrame({ - 'vx': vx, 'vy': vy, - 'vxe': vxe, 'vye': vye, - 'x0': x0, 'y0': y0, - 'x0e': x0e, 'y0e': y0e, - 'chi2_vx': chi2_vx, - 'chi2_vy': chi2_vy, - 't0': t0 - }) - return result - - -# Test -if __name__=='__main__': - from scipy.optimize import curve_fit - - x = np.array([1,2,3,4]) - y = np.array([1,2,5,6]) - sigma = np.array([.4,.2,.1,.3]) - - for absolute_sigma in [True, False]: - result = linear_fit(x, y, sigma=sigma, absolute_sigma=absolute_sigma) - popt, pcov = curve_fit(linear, x, y, sigma=sigma, absolute_sigma=absolute_sigma) - perr = np.sqrt(np.diag(pcov)) - print(f'Absolute Sigma = {absolute_sigma}') - print(f"linear_fit: slope = {result['slope']:.3f} ± {result['e_slope']:.3f}, intercept = {result['intercept']:.3f} ± {result['e_intercept']:.3f}, chi2={result['chi2']:.3f}") - print(f'curve_fit: slope = {popt[0]:.3f} ± {perr[0]:.3f}, intercept = {popt[1]:.3f} ± {perr[1]:.3f}, chi2={calc_chi2(x, y, sigma, *popt):.3f}\n') \ No newline at end of file diff --git a/flystar/match.py b/flystar/match.py index d40ccdb..d7c391e 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -15,7 +15,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, Nbins_vmax=200, Nbins_angle=360,verbose=False): """ Take two input starlists and select the brightest stars from - each. Then performa a triangle matching algorithm along the lines of + each. Then perform a triangle matching algorithm along the lines of Groth 1986. For every possible triangle (combination of 3 stars) in a starlist, @@ -279,8 +279,11 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): idxs2 = np.ones(x1.size, dtype=int) * -1 # The matching will be done using a KDTree. - kdt = KDT(coords2, balanced_tree=False) - + #kdt = KDT(coords2, balanced_tree=False) + #KDTree handling of NaNs throws error in scipy v1.10.1 and newer. + #Replace NaNs in coords2 with zero (0). -SKT + kdt = KDT(np.where(np.isfinite(coords2), coords2, 0), balanced_tree=False) + # This returns the number of neighbors within the specified # radius. We will use this to find those stars that have no or one # match and deal with them easily. The more complicated conflict @@ -342,7 +345,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): # Double check that "min" choice is still within our # detla-mag tolerence. - dm_tmp = np.array([dm.T[dm_min[I]][I] for I in np.lib.index_tricks.ndindex(dm_min.shape)]) + dm_tmp = np.array([dm.T[dm_min[I]][I] for I in np.ndindex(dm_min.shape)]) keep = (dm_min == dr_min) & (dm_tmp < dm_tol) else: @@ -389,7 +392,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): keep[dups[dm_min]] = True else: if verbose: - print(' confused, dropping') + print(' confused, dropping star at',x2[idxs2[dups]][0],y2[idxs2[dups]][0]) # Clean up the duplicates diff --git a/flystar/motion_model.py b/flystar/motion_model.py new file mode 100644 index 0000000..0b86d07 --- /dev/null +++ b/flystar/motion_model.py @@ -0,0 +1,561 @@ +import numpy as np +from abc import ABC +import pdb +from flystar import parallax +from astropy.time import Time +from scipy.optimize import curve_fit +import warnings + +class MotionModel(ABC): + # Number of data points required to fit model + n_pts_req = 0 + # Degrees of freedom for model + n_params = 0 + + # Fit paramters: Shared fit parameters + fitter_param_names = [] + + # Fixed parameters: These are parameters that are required for the model, but are not + # fit quantities. For example, RA and Dec in a parallax model. + fixed_param_names = [] + fixed_meta_data = [] + + # Non-fit paramters: Custom paramters that will not be fit. + # These parameters should be derived from the fit parameters and + # they must exist as a variable on the model object + optional_param_names = [] + + def __init__(self, *args, **kwargs): + """ + Make a motion model object. This object defines the fitter and fixed parameters, + and if needed stores metadata such as RA and Dec for Parallax, + for the given motion model and contains functions to fit these values to data + and apply the values to compute expected positions at given times. Each instance + corresponds to a given motion model, not an individual star, and thus the fit + values are only input/returned in functions and not stored in the object. + """ + return + + def get_pos_at_time(self, params, t): + """ + Position calculator for a single star using a given motion model and input + model parameters and times. + """ + #return x, y + pass + + def get_batch_pos_at_time(self, t): + """ + Position calculator for a set of stars using a given motion model and input + model parameters and times. + """ + #return x, y, x_err, y_err + pass + + def run_fit(self, t, x, y, xe, ye, t0, weighting='var', + use_scipy=True, absolute_sigma=True): + """ + Run a single fit of the data to the motion model and return the best parameters. + This function is used by the overall fit_motion_model function once for a basic fit + or several times for a bootstrap fit. + """ + # Run a single fit (used both for overall fit + bootstrap iterations) + pass + + def get_weights(self, xe, ye, weighting='var'): + """ + Get the weights for each data point for fitting. Options are 'var' (default) + and 'std'. + """ + if weighting=='std': + return 1./xe, 1./ye + elif weighting=='var': + return 1./xe**2, 1./ye**2 + else: + warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) + return 1./xe**2, 1./ye**2 + + def scale_errors(self, errs, weighting='var'): + """ + Rescale the fit result errors as needed, according to the weighting scheme used. + """ + if weighting=='std': + return np.array(errs)**2 + elif weighting=='var': + return errs + else: + warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) + return errs + + def fit_motion_model(self, t, x, y, xe, ye, t0, bootstrap=0, weighting='var', + use_scipy=True, absolute_sigma=True): + """ + Fit the input positions on the sky and errors + to determine new parameters for this motion model (MM). + Best-fit parameters will be returned along with uncertainties. + Optionally, bootstrap error estimation can be performed. + """ + params, param_errs = self.run_fit(t, x, y, xe, ye, t0=t0, weighting=weighting, + use_scipy=use_scipy, absolute_sigma=absolute_sigma) + + if bootstrap>0 and len(x)>(self.n_pts_req): + edx = np.arange(len(x), dtype=int) + bb_params = [] + bb_params_errs = [] + for bb in range(bootstrap): + bdx = np.random.choice(edx, len(x)) + while len(np.unique(bdx))2: # Catch case where bootstrap sends only 2 unique epochs + _,idx=np.unique(dt, return_index=True) + dt = dt[idx] + x = x[idx] + y = y[idx] + xe = xe[idx] + ye = ye[idx] + dx = np.diff(x)[0] + dy = np.diff(y)[0] + dt_diff = np.diff(dt)[0] + vx = dx / dt_diff + vy = dy / dt_diff + # TODO: still not sure about the error handling here + x0 = x[0] - dt[0]*vx # np.average(x, weights=x_wt) # + y0 = y[0] - dt[0]*vy # np.average(y, weights=y_wt) # + x0e = np.abs(dx) / 2**0.5 # np.sqrt(np.sum(xe**2)/2) # + y0e = np.abs(dy) / 2**0.5 # np.sqrt(np.sum(ye**2)/2) # + vxe = 0.0 #np.abs(vx) * np.sqrt(np.sum(xe**2/x**2)) + vye = 0.0 #np.abs(vy) * np.sqrt(np.sum(ye**2/y**2)) + + else: + if use_scipy: + def linear(t, c0, c1): + return c0 + c1*t + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) + x0, vx = x_opt + y0, vy = y_opt + x0e, vxe = np.sqrt(x_cov.diagonal()) + y0e, vye = np.sqrt(y_cov.diagonal()) + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + else: + # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme + x = np.array(x) + y = np.array(y) + dt = np.array(dt) + X_mat_t = np.vander(dt, 2) + # x calculation + W_mat_x = np.diag(x_wt) + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t + pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation + W_mat_y = np.diag(y_wt) + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t + pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return + x0, vx = popt_x[1], popt_x[0] + y0, vy = popt_y[1], popt_y[0] + x0e, vxe = perr_x[1], perr_x[0] + y0e, vye = perr_y[1], perr_y[0] + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + + params = [x0, vx, y0, vy] + param_errors = [x0e, vxe, y0e, vye] + return params, param_errors + + +class Acceleration(MotionModel): + """ + A 2D accelerating motion model for a star on the sky. + """ + n_pts_req = 4 # TODO: consider special case for 3 pts + n_params=3 + fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] + fixed_param_names = ['t0'] + + def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, + x0_err=0, vx0_err=0, ax_err=0, y0_err=0, vy0_err=0, ay_err=0, **kwargs): + # Must call after setting parameters. + # This checks for proper parameter formatting. + super().__init__() + return + + def get_pos_at_time(self, fit_params, fixed_params, t): + fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) + fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) + dt = t-fixed_params_dict['t0'] + x = fit_params_dict['x0'] + fit_params_dict['vx0']*dt + 0.5*fit_params_dict['ax']*dt**2 + y = fit_params_dict['y0'] + fit_params_dict['vy0']*dt + 0.5*fit_params_dict['ay']*dt**2 + return x, y + + def get_batch_pos_at_time(self,t, + x0=[],vx0=[],ax=[], y0=[],vy0=[],ay=[], t0=[], + x0_err=[],vx0_err=[],ax_err=[], y0_err=[],vy0_err=[],ay_err=[], **kwargs): + if hasattr(t, "__len__"): + dt = t-t0[:,np.newaxis] + x = x0[:,np.newaxis] + dt*vx0[:,np.newaxis] + 0.5*dt**2*ax[:,np.newaxis] + y = y0[:,np.newaxis] + dt*vy0[:,np.newaxis] + 0.5*dt**2*ay[:,np.newaxis] + x_err = np.sqrt(x0_err[:,np.newaxis]**2 + (vx0_err[:,np.newaxis]*dt)**2 + (0.5*ax_err[:,np.newaxis]*dt**2)**2) + y_err = np.sqrt(y0_err[:,np.newaxis]**2 + (vy0_err[:,np.newaxis]*dt)**2 + (0.5*ay_err[:,np.newaxis]*dt**2)**2) + else: + dt = t-t0 + x = x0 + dt*vx0 + 0.5*dt**2*ax + y = y0 + dt*vy0 + 0.5*dt**2*ay + x_err = np.sqrt(x0_err**2 + (vx0_err*dt)**2 + (0.5*ax_err*dt**2)**2) + y_err = np.sqrt(y0_err**2 + (vy0_err*dt)**2 + (0.5*ay_err*dt**2)**2) + return x,y,x_err,y_err + + def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, + use_scipy=True, absolute_sigma=True): + if not use_scipy: + Warning("Acceleration model has no non-scipy fitter option. Running with scipy.") + dt = t-t0 + x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) + if params_guess is None: + params_guess = [x.mean(),0.0,0.0,y.mean(),0.0,0.0] + + def accel(t, c0,c1,c2): + return c0 + c1*t + 0.5*c2*t**2 + + x_opt, x_cov = curve_fit(accel, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=True) + y_opt, y_cov = curve_fit(accel, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=True) + x0 = x_opt[0] + y0 = y_opt[0] + vx0 = x_opt[1] + vy0 = y_opt[1] + ax = x_opt[2] + ay = y_opt[2] + + x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) + y0e, vy0e, aye = np.sqrt(y_cov.diagonal()) + x0e, vx0e, axe, y0e, vy0e, aye = self.scale_errors([x0e, vx0e, axe, y0e, vy0e, aye], weighting=weighting) + + params = [x0, vx0, ax, y0, vy0, ay] + param_errors = [x0e, vx0e, axe, y0e, vy0e, aye] + + return params, param_errors + +class Parallax(MotionModel): + """ + Motion model for linear proper motion + parallax + + Requires RA & Dec (J2000) for parallax calculation. + Optional PA is counterclockwise offset of the image y-axis from North. + Optional obs parameter describes observer location, default is 'earth'. + """ + n_pts_req = 4 + n_params=3 + fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] + fixed_param_names = ['t0'] + fixed_meta_data = ['RA','Dec','PA','obs'] + + def __init__(self, RA, Dec, PA=0.0, obs='earth', **kwargs): + self.RA = RA + self.Dec = Dec + self.PA = PA + self.obs = obs + self.plx_vector_cached = None + return + + def get_parallax_vector(self, t_mjd): + recalc_plx = True + if self.plx_vector_cached is not None: + if hasattr(t_mjd, "__len__"): + if list(t_mjd) == list(self.plx_vector_cached[0]): + pvec = self.plx_vector_cached[1:] + recalc_plx = False + elif all([t_mjd_i in self.plx_vector_cached[0] for t_mjd_i in t_mjd]): + pvec_idxs = [np.argwhere(self.plx_vector_cached[0]==t_mjd_i)[0][0] for t_mjd_i in t_mjd] + pvec = [self.plx_vector_cached[1][pvec_idxs], self.plx_vector_cached[2][pvec_idxs]] + recalc_plx = False + elif t_mjd in self.plx_vector_cached[0]: + idx = np.where(t_mjd==self.plx_vector_cached[0])[0][0] + pvec = np.array([self.plx_vector_cached[1][idx], self.plx_vector_cached[2][idx]]) + recalc_plx = False + if recalc_plx: + pvec = parallax.parallax_in_direction(self.RA, self.Dec, t_mjd, obsLocation=self.obs, PA=self.PA).T + if hasattr(t_mjd, "__len__"): + self.plx_vector_cached = [t_mjd, pvec[0], pvec[1]] + return pvec + + def get_pos_at_time(self, fit_params, fixed_params, t): + fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) + fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) + dt = t-fixed_params_dict['t0'] + + t_mjd = Time(t, format='decimalyear', scale='utc').mjd + pvec = self.get_parallax_vector(t_mjd) + pvec_x = np.reshape(pvec[0], t.shape) + pvec_y = np.reshape(pvec[1], t.shape) + x = fit_params_dict['x0'] + fit_params_dict['vx']*dt + fit_params_dict['pi']*pvec_x + y = fit_params_dict['y0'] + fit_params_dict['vy']*dt + fit_params_dict['pi']*pvec_y + return x, y + + def get_batch_pos_at_time(self, t, + x0=[],vx=[], y0=[],vy=[], pi=[], t0=[], + x0_err=[],vx_err=[], y0_err=[],vy_err=[], pi_err=[], **kwargs): + t_mjd = Time(t, format='decimalyear', scale='utc').mjd + pvec = self.get_parallax_vector(t_mjd) + if hasattr(t, "__len__"): + dt = t-t0[:,np.newaxis] + x = x0[:,np.newaxis] + dt*vx[:,np.newaxis] + pi[:,np.newaxis]*pvec[0].T + y = y0[:,np.newaxis] + dt*vy[:,np.newaxis] + pi[:,np.newaxis]*pvec[1].T + try: + x_err = np.sqrt(x0_err[:,np.newaxis]**2 + (vx_err[:,np.newaxis]*dt)**2 + (pi_err[:,np.newaxis]*pvec[0].T)**2) + y_err = np.sqrt(y0_err[:,np.newaxis]**2 + (vy_err[:,np.newaxis]*dt)**2 + (pi_err[:,np.newaxis]*pvec[1].T)**2) + except: + x_err,y_err = [],[] + else: + dt = t-t0 + x = x0 + dt*vx + pi*pvec[0] + y = y0 + dt*vy + pi*pvec[1] + try: + x_err = np.sqrt(x0_err**2 + (vx_err*dt)**2 + (pi_err*pvec[0])**2) + y_err = np.sqrt(y0_err**2 + (vy_err*dt)**2 + (pi_err*pvec[1])**2) + except: + x_err,y_err = [],[] + return x,y,x_err,y_err + + def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, + use_scipy=True, absolute_sigma=True): + if not use_scipy: + Warning("Parallax model has no non-scipy fitter option. Running with scipy.") + t_mjd = Time(t, format='decimalyear', scale='utc').mjd + pvec = self.get_parallax_vector(t_mjd) + x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) + def fit_func(use_t, x0,vx, y0,vy, pi): + x_res = x0 + vx*(use_t-t0) + pi*pvec[0] + y_res = y0 + vy*(use_t-t0) + pi*pvec[1] + return np.hstack([x_res, y_res]) + # Initial guesses, x0,y0 as x,y averages; + # vx,vy as average velocity if first and last points are perfectly measured; + # pi for 10 pc disance + if params_guess is None: + idx_first, idx_last = np.argmin(t), np.argmax(t) + params_guess = [x.mean(),(x[idx_last]-x[idx_first])/(t[idx_last]-t[idx_first]), + y.mean(),(y[idx_last]-y[idx_first])/(t[idx_last]-t[idx_first]), 0.1] + res = curve_fit(fit_func, t, np.hstack([x,y]), + p0=params_guess, sigma = 1.0/np.hstack([x_wt,y_wt])) + x0,vx,y0,vy,pi = res[0] + x0_err,vx_err,y0_err,vy_err,pi_err = self.scale_errors(np.sqrt(np.diag(res[1])), weighting=weighting) + + params = [x0, vx, y0, vy, pi] + param_errors = [x0_err, vx_err, y0_err, vy_err, pi_err] + return params, param_errors + + +def validate_motion_model_dict(motion_model_dict, startable, default_motion_model): + """ + Check that everything is set up properly for motion models to run and their + required metadata. + """ + + # Collect names of all motion models that might get used. + all_motion_model_names = ['Fixed'] + if default_motion_model is not None: + all_motion_model_names.append(default_motion_model) + if 'motion_model_input' in startable.columns: + all_motion_model_names += np.unique(startable['motion_model_input']).tolist() + if 'motion_model_used' in startable.columns: + all_motion_model_names += np.unique(startable['motion_model_used']).tolist() + all_motion_model_names = np.unique(all_motion_model_names) + + # Check whether all motion models are in the dict, and if not, try to add them + # here or raise an error. + for mm in all_motion_model_names: + if mm not in motion_model_dict: + mm_obj = eval(mm) + if len(mm_obj.fixed_meta_data)>0: + raise ValueError(f"Cannot use {mm} motion model without required metadata. Please initialize with required metadata and provide in motion_model_dict.") + else: + motion_model_dict[mm] = mm_obj() + warnings.warn(f"Using default model/fitter for {mm}.", UserWarning) + + return motion_model_dict + + +def get_one_motion_model_param_names(motion_model_name, with_errors=True, with_fixed=True): + """ + Get all the motion model parameters for a given motion_model_name. + Optionally, include fixed and error parameters (included by default). + """ + mod = eval(motion_model_name) + list_of_parameters = [] + list_of_parameters += getattr(mod, 'fitter_param_names') + if with_fixed: + list_of_parameters += getattr(mod, 'fixed_param_names') + if with_errors: + list_of_parameters += [par+'_err' for par in getattr(mod, 'fitter_param_names')] + return list_of_parameters + + +def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_fixed=True): + """ + Get all the motion model parameters for all models given in motion_model_list. + Optionally, include fixed and error parameters (included by default). + """ + list_of_parameters = [] + all_motion_models = [eval(mm) for mm in np.unique(motion_model_list).tolist()] + for aa in range(len(all_motion_models)): + param_names = getattr(all_motion_models[aa], 'fitter_param_names') + param_fixed_names = getattr(all_motion_models[aa], 'fixed_param_names') + param_err_names = [par+'_err' for par in param_names] + + list_of_parameters += param_names + if with_fixed: + list_of_parameters += param_fixed_names + if with_errors: + list_of_parameters += param_err_names + + return np.unique(list_of_parameters).tolist() + + +def get_all_motion_model_param_names(with_errors=True, with_fixed=True): + """ + Get all the motion model parameters for all models defined in this module. + Optionally, include fixed and error parameters (included by default). + """ + list_of_parameters = [] + all_motion_models = MotionModel.__subclasses__() + for aa in range(len(all_motion_models)): + param_names = getattr(all_motion_models[aa], 'fitter_param_names') + param_fixed_names = getattr(all_motion_models[aa], 'fixed_param_names') + param_err_names = [par+'_err' for par in param_names] + + list_of_parameters += param_names + if with_fixed: + list_of_parameters += param_fixed_names + if with_errors: + list_of_parameters += param_err_names + + return np.unique(list_of_parameters).tolist() + diff --git a/flystar/parallax.py b/flystar/parallax.py new file mode 100755 index 0000000..4792ec6 --- /dev/null +++ b/flystar/parallax.py @@ -0,0 +1,149 @@ +# Parallax calculation module for motion models involving parallax +# Adapted from BAGLE's parallax.py + +import math + +import numpy as np +from joblib import Memory +import os +from astropy import units, units as u +from astropy.coordinates import SkyCoord, get_body_barycentric, get_body_barycentric_posvel, solar_system_ephemeris, \ + CartesianRepresentation +from astropy.time import Time + +# Use the JPL ephemerides. +solar_system_ephemeris.set('jpl') + +# Setup a parallax cache +try: + cache_dir = os.environ['PARALLAX_CACHE_DIR'] +except: + cache_dir = os.path.dirname(__file__) + '/parallax_cache/' +cache_memory = Memory(cache_dir, verbose=0) +# Default cache size is 1 GB +cache_memory.reduce_size() + +@cache_memory.cache() +def parallax_in_direction(RA, Dec, mjd, obsLocation='earth', PA=0): + """ + | R.A. in degrees. (J2000) + | Dec. in degrees. (J2000) + | MJD + | PA in degrees. (counterclockwise offset of the image y-axis from North) + + Equations following MulensModel. + """ + #print('parallax_in_direction: len(t) = ', len(mjd)) + + # Munge inputs into astropy format. + times = Time(mjd + 2400000.5, format='jd', scale='tdb') + coord = SkyCoord(RA, Dec, unit=(units.deg, units.deg)) + + direction = coord.cartesian.xyz.value + north = np.array([0., 0., 1.]) + _east_projected = np.cross(north, direction) / np.linalg.norm(np.cross(north, direction)) + _north_projected = np.cross(direction, _east_projected) / np.linalg.norm(np.cross(direction, _east_projected)) + + obs_pos = get_observer_barycentric(obsLocation, times) + sun_pos = get_body_barycentric(body='sun', time=times) + + sun_obs_pos = sun_pos - obs_pos + + pos = sun_obs_pos.xyz.T.to(units.au) + + e = np.dot(pos, _east_projected) + n = np.dot(pos, _north_projected) + + # Rotate frame e,n->x,y accounting for PA + PA_rad = np.pi/180.0 * PA + x = -e.value*np.cos(PA_rad) + n.value*np.sin(PA_rad) + y = e.value*np.sin(PA_rad) + n.value*np.cos(PA_rad) + + pvec = np.array([x, y]).T + + return pvec + + +def get_observer_barycentric(body, times, min_ephem_step=1, velocity=False): + """ + Get the barycentric position of a satellite or other Solar System body + using JPL emphemerides through the Horizon app. + + The ephemeris is queried at a decimated time step set by min_ephem_step + (def=1 day) that must be 1 day or larger. The positions + (and optionally velocities) are then interpolated onto the desired + time array. + + Inputs + ------ + body : str + The name of the Solar System body. Must use the JPL Horizon + naming scheme. + + times : astropy.time.Time array + Array of times (astropy.time.core.Time) objects at which to + fetch the position of the specified Solar System body. + + Optional Inputs + --------------- + min_ephem_step : int + Minimum time step to query JPL in days. Must not be <1 and must + be in integer days. + + veloctiy : bool + If true, return both position and velocity vectors over time. + + Return + ------ + coord : astropy.coordinates.CartesianRepresentation + The xyz coordinates in the plane of the Solar System at the + input times. + """ + + if body in solar_system_ephemeris.bodies: + if velocity: + obs_pos, obs_vel = get_body_barycentric_posvel(body=body, time=times) + else: + obs_pos = get_body_barycentric(body=body, time=times) + else: + # Figure out a cadence for the ephemerides, not smaller than 1 day. + dt = np.median(np.diff(times)).jd + if dt < min_ephem_step: + dt = min_ephem_step + + # Get the date range, add some padding on each side. + t_min = times.min() + t_max = times.max() + t_min.format = 'iso' + t_max.format = 'iso' + t_min = str(t_min - dt*u.day).split()[0] + t_max = str(t_max + dt*u.day).split()[0] + step = f'{dt:.0f}d' + + # Fetch the Horizons ephemeris. + from astroquery.jplhorizons import Horizons + obj = Horizons(id=body, epochs={'start':t_min, 'stop':t_max, 'step':step}) + obj_data = obj.vectors() + + ephem_jd = obj_data['datetime_jd'] + + # Interpolate to the actual time array. + obj_x_at_t = np.interp(times.jd, ephem_jd, obj_data['x'].to('km')) * u.km + obj_y_at_t = np.interp(times.jd, ephem_jd, obj_data['y'].to('km')) * u.km + obj_z_at_t = np.interp(times.jd, ephem_jd, obj_data['z'].to('km')) * u.km + + if velocity: + obj_vx_at_t = np.interp(times.jd, ephem_jd, obj_data['vx'].to('km/s')) * u.km / u.s + obj_vy_at_t = np.interp(times.jd, ephem_jd, obj_data['vy'].to('km/s')) * u.km / u.s + obj_vz_at_t = np.interp(times.jd, ephem_jd, obj_data['vz'].to('km/s')) * u.km / u.s + + obs_vel = CartesianRepresentation(obj_vx_at_t, obj_vy_at_t, obj_vz_at_t) + + obs_pos = CartesianRepresentation(obj_x_at_t, obj_y_at_t, obj_z_at_t) + + if velocity: + return (obs_pos, obs_vel) + else: + return obs_pos + + diff --git a/flystar/plots.py b/flystar/plots.py index c675170..2d65b2c 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -1,4 +1,4 @@ -from flystar import analysis +from flystar import analysis, motion_model, startables import pylab as py import pylab as plt import numpy as np @@ -14,6 +14,8 @@ import astropy from astropy.table import Table from astropy.io import ascii +from astropy.coordinates import SkyCoord +from astropy import units as u #################################################### # Code for making diagnostic plots for astrometry @@ -518,8 +520,8 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non diff_vx = ref_mat['vx'] - starlist_mat['vx'] diff_vy = ref_mat['vy'] - starlist_mat['vy'] - vx_err = np.hypot(ref_mat['vxe'], starlist_mat['vxe']) - vy_err = np.hypot(ref_mat['vye'], starlist_mat['vye']) + vx_err = np.hypot(ref_mat['vx_err'], starlist_mat['vx_err']) + vy_err = np.hypot(ref_mat['vy_err'], starlist_mat['vy_err']) ratio_vx = diff_vx / vx_err ratio_vy = diff_vy / vy_err @@ -589,10 +591,10 @@ def residual_vpd(ref_mat, starlist_trans_mat, pscale=None): # Error calculation depends on if we are converting to mas/yr if pscale != None: - xerr_frac = np.hypot((ref_mat['vxe'] / ref_mat['vx']), - (starlist_trans_mat['vxe'] / starlist_trans_mat['vx'])) - yerr_frac = np.hypot((ref_mat['vye'] / ref_mat['vy']), - (starlist_trans_mat['vye'] / starlist_trans_mat['vy'])) + xerr_frac = np.hypot((ref_mat['vx_err'] / ref_mat['vx']), + (starlist_trans_mat['vx_err'] / starlist_trans_mat['vx'])) + yerr_frac = np.hypot((ref_mat['vy_err'] / ref_mat['vy']), + (starlist_trans_mat['vy_err'] / starlist_trans_mat['vy'])) # Now apply the plate scale to convert to mas/yr diff_x *= pscale @@ -600,8 +602,8 @@ def residual_vpd(ref_mat, starlist_trans_mat, pscale=None): xerr = diff_x * xerr_frac yerr = diff_y * yerr_frac else: - xerr = np.hypot(ref_mat['vxe'], starlist_trans_mat['vxe']) - yerr = np.hypot(ref_mat['vye'], starlist_trans_mat['vye']) + xerr = np.hypot(ref_mat['vx_err'], starlist_trans_mat['vx_err']) + yerr = np.hypot(ref_mat['vy_err'], starlist_trans_mat['vy_err']) # Plotting py.figure(figsize=(10,10)) @@ -1044,8 +1046,8 @@ def plot_gaia(gaia): def plot_pm_error(tab): plt.figure(figsize=(6,6)) plt.clf() - plt.semilogy(tab['m0'], tab['vxe']*1e3, 'r.', label=r'$\sigma_{\mu_{\alpha *}}$', alpha=0.4) - plt.semilogy(tab['m0'], tab['vye']*1e3, 'b.', label=r'$\sigma_{\mu_{\delta}}$', alpha=0.4) + plt.semilogy(tab['m0'], tab['vx_err']*1e3, 'r.', label=r'$\sigma_{\mu_{\alpha *}}$', alpha=0.4) + plt.semilogy(tab['m0'], tab['vy_err']*1e3, 'b.', label=r'$\sigma_{\mu_{\delta}}$', alpha=0.4) plt.legend() plt.xlabel('Mag') plt.ylabel('PM Error (mas/yr)') @@ -1055,24 +1057,24 @@ def plot_pm_error(tab): def plot_mag_error(tab): plt.figure(figsize=(6,6)) plt.clf() - plt.semilogy(tab['m0'], tab['m0e'], 'r.', alpha=0.4) + plt.semilogy(tab['m0'], tab['m0_err'], 'r.', alpha=0.4) plt.legend() plt.xlabel('Mag') plt.ylabel('Mag Error (mag)') return -def plot_mean_residuals_by_epoch(tab): +def plot_mean_residuals_by_epoch(tab, motion_model_dict={}): """ Plot mean position and magnitude residuals vs. epoch. Note we are plotting the mean( |dx} ) to see the size of the mean residual. """ # Predicted model positions at each epoch - dt = tab['t'] - tab['t0'][:, np.newaxis] - xt_mod = tab['x0'][:, np.newaxis] + tab['vx'][:, np.newaxis] * dt - yt_mod = tab['y0'][:, np.newaxis] + tab['vy'][:, np.newaxis] * dt - + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod, yt_mod, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # Residuals dx = tab['x'] - xt_mod dy = tab['y'] - yt_mod @@ -1120,18 +1122,21 @@ def plot_mean_residuals_by_epoch(tab): return -def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=None): +def plot_quiver_residuals_all_epochs(tab, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) n_good = np.zeros(len(tab), dtype=int) dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + complete_times = np.array([np.unique(col[~np.isnan(col)])[0] for col in tab['t'].T]) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(complete_times, motion_model_dict, allow_alt_models=True) for ee in range(tab['x'].shape[1]): - dt = tab['t'][:, ee] - tab['t0'] - xt_mod = tab['x0'] + tab['vx'] * dt - yt_mod = tab['y0'] + tab['vy'] * dt + xt_mod = xt_mod_all[:,ee] + yt_mod = yt_mod_all[:,ee] good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] @@ -1184,18 +1189,22 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non return -def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15): +def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) n_good = np.zeros(len(tab), dtype=int) dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) - + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] - xt_mod = tab['x0'] + tab['vx'] * dt - yt_mod = tab['y0'] + tab['vy'] * dt + xt_mod = xt_mod_all[ee] + yt_mod = yt_mod_all[ee] good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] @@ -1216,7 +1225,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s scale=scale_orig, plotlim=plotlim) plot_mag_scatter(tab['m'][:, ee], - tab['m0'], tab['m0e'], + tab['m0'], tab['m0_err'], tab['x'][:, ee], tab['y'][:, ee], tab['xe'][:, ee], tab['ye'][:, ee], xt_mod, yt_mod, @@ -1226,7 +1235,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s cte_fit=cte_fit, mlim=mlim) plot_y_scatter(tab['m'][:, ee], - tab['m0'], tab['m0e'], + tab['m0'], tab['m0_err'], tab['x'][:, ee], tab['y'][:, ee], tab['xe'][:, ee], tab['ye'][:, ee], xt_mod, yt_mod, @@ -1287,7 +1296,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s return -def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None): +def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, scale_orig=None): m_t_list = [] x_t_list = [] y_t_list = [] @@ -1300,14 +1309,17 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arc da_list = [] ntrans = len(tab_list) - + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + for mm in range(ntrans): tab = tab_list[mm] trans_list = trans_list_list[mm] for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] - xt_mod = tab['x0'] + tab['vx'] * dt - yt_mod = tab['y0'] + tab['vy'] * dt + xt_mod = xt_mod_all[ee] + yt_mod = yt_mod_all[ee] good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] @@ -1842,7 +1854,7 @@ def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, return (dx, dy) -def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, lower_mag=18, upper_mag=13): +def plot_quiver_residuals_magcolor_all_epochs(tab, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, lower_mag=18, upper_mag=13): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) n_good = np.zeros(len(tab), dtype=int) @@ -1852,11 +1864,14 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, pl idx = np.where((tab['m0'] < lower_mag) & (tab['m0'] > upper_mag))[0] tab = tab[idx] - + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] - xt_mod = tab['x0'] + tab['vx'] * dt - yt_mod = tab['y0'] + tab['vy'] * dt + xt_mod = xt_mod_all[ee] + yt_mod = yt_mod_all[ee] mag = tab['m0'] good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] @@ -2149,7 +2164,7 @@ def plot_quiver_residuals_orig_angle_xy(x_t, y_t, x_ref, y_ref, good_idx, ref_id return -def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50): +def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2157,21 +2172,27 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50): chi2_x_list = [] chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) for ii in range(len(tab)): # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) -# fnd = np.where(tab['xe'][ii, :] > 0)[0] fnd_list.append(len(fnd)) x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] - xerr = tab['xe'][ii, fnd] - yerr = tab['ye'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe_boot'][ii, fnd], tab['xe'][ii, fnd]) + yerr = np.hypot(tab['ye_boot'][ii, fnd], tab['ye'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] - dt = tab['t'][ii, fnd] - tab['t0'][ii] - fitLineX = tab['x0'][ii] + (tab['vx'][ii] * dt) - fitLineY = tab['y0'][ii] + (tab['vy'][ii] * dt) + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii,fnd] diffX = x - fitLineX diffY = y - fitLineY @@ -2189,7 +2210,14 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50): idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract 2 to get Ndof - Ndof = Ndetect - 2 + n_params = np.nanmean(tab['n_params'][idx]) + Ndof = Ndetect - n_params + if len(np.unique(tab['n_params'][idx]))>1: + print("** Warning: using average Ndof for multiple motion models. **") + print("** Consider using plot_chi2_reduced_dist. **") + print(f"Ndof={Ndof:.2f}, Ndetect={Ndetect}, Nparams={n_params:.2f}") + else: + print(f"Ndof={Ndof}, Ndetect={Ndetect}, Nparams={n_params}") chi2_xaxis = np.linspace(0, xlim, xlim*3) chi2_bins = np.linspace(0, xlim, n_bins) @@ -2197,15 +2225,93 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50): plt.clf() plt.hist(x[idx], bins=chi2_bins, histtype='step', label='X', density=True) plt.hist(y[idx], bins=chi2_bins, histtype='step', label='Y', density=True) - plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(Ndof) + ' dof') - plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) + plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, + label='$\chi^2$ ' + str(round(Ndof,2)) + ' dof') + plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(round(Ndof,2))) + plt.xlim(0, xlim) + plt.legend() + + chi2red_x = x / Ndof + chi2red_y = y / Ndof + chi2red_t = (x + y) / (2.0 * Ndof) + + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) + fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' + med_chi2red_x_f = np.median(chi2red_x[idx]) + med_chi2red_x_a = np.median(chi2red_x) + med_chi2red_y_f = np.median(chi2red_y[idx]) + med_chi2red_y_a = np.median(chi2red_y) + med_chi2red_t_f = np.median(chi2red_t[idx]) + med_chi2red_t_a = np.median(chi2red_t) + print(fmt.format(' X', med_chi2red_x_f, med_chi2red_x_a)) + print(fmt.format(' Y', med_chi2red_y_f, med_chi2red_y_a)) + print(fmt.format('Tot', med_chi2red_t_f, med_chi2red_t_a)) + + return + +def plot_chi2_reduced_dist(tab, Ndetect, motion_model_dict={}, xlim=8, n_bins=50, boot_err=False): + """ + tab = flystar table + Ndetect = Number of epochs star detected in + """ + chi2_x_list = [] + chi2_y_list = [] + fnd_list = [] # Number of non-NaN error measurements + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + + for ii in range(len(tab)): + # Ignore the NaNs + fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) + fnd_list.append(len(fnd)) + + x = tab['x'][ii, fnd] + y = tab['y'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe_boot'][ii, fnd], tab['xe'][ii, fnd]) + yerr = np.hypot(tab['ye_boot'][ii, fnd], tab['ye'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] + + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii,fnd] + + diffX = x - fitLineX + diffY = y - fitLineY + sigX = diffX / xerr + sigY = diffY / yerr + + chi2_x = np.sum(sigX**2) + chi2_y = np.sum(sigY**2) + chi2_x_list.append(chi2_x) + chi2_y_list.append(chi2_y) + + x = np.array(chi2_x_list) + y = np.array(chi2_y_list) + fnd = np.array(fnd_list) + + idx = np.where(fnd == Ndetect)[0] + n_params = tab['n_params'] + Ndof = Ndetect - n_params + print("Reduced chi2 for Ndetect="+str(Ndetect)) + chi2_bins = np.linspace(0, xlim, n_bins) + + plt.figure(figsize=(6,4)) + plt.clf() + plt.hist(x[idx]/Ndof[idx], bins=chi2_bins, histtype='step', label='X', density=True) + plt.hist(y[idx]/Ndof[idx], bins=chi2_bins, histtype='step', label='Y', density=True) + plt.axvline(np.median(x[idx]/Ndof[idx]), color='C0', linestyle='--', label='X median') + plt.axvline(np.median(y[idx]/Ndof[idx]), color='C1', linestyle='--', label='Y median') + plt.title('Reduced chi2, $N_{epoch} = $' + str(Ndetect)) plt.xlim(0, xlim) plt.legend() - chi2red_x = x / (fnd - 2) - chi2red_y = y / (fnd - 2) - chi2red_t = (x + y) / (2.0 * (fnd - 2)) + chi2red_x = x / Ndof + chi2red_y = y / Ndof + chi2red_t = (x + y) / (2.0 * Ndof + 1*(tab['motion_model_used']=='Parallax')) print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' @@ -2222,34 +2328,133 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50): return -def plot_chi2_dist_per_epoch(tab, Ndetect, xlim, ylim = [-1, 1], target_idx = 0): +def plot_chi2_dist_per_filter(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, filter=None, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in """ - diffX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - diffY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - errX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - errY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - sigX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - sigY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - m_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + chi2_x_list = [] + chi2_y_list = [] + fnd_list = [] # Number of non-NaN error measurements + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + + for ii in range(len(tab)): + # Ignore the NaNs + fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) + fnd_list.append(len(fnd)) + + x = tab['x'][ii, fnd] + y = tab['y'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe_boot'][ii, fnd], tab['xe'][ii, fnd]) + yerr = np.hypot(tab['ye_boot'][ii, fnd], tab['ye'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] + + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii,fnd] + diffX = x - fitLineX + diffY = y - fitLineY + sigX = diffX / xerr + sigY = diffY / yerr + + chi2_x = np.sum(sigX**2) + chi2_y = np.sum(sigY**2) + chi2_x_list.append(chi2_x) + chi2_y_list.append(chi2_y) + #print(fitLineX, x, xerr) + #pdb.set_trace() + + x = np.array(chi2_x_list) + y = np.array(chi2_y_list) + fnd = np.array(fnd_list) + + + idx = np.where(fnd == Ndetect)[0] + # Fitting position and velocity... so subtract n_params to get Ndof + n_params = np.nanmean(tab['n_params'][idx]) + Ndof = Ndetect - n_params + print(f"Ndof={Ndof}, Ndetect={Ndetect}, Nparams={n_params}") + chi2_xaxis = np.linspace(0, xlim, xlim*3) + chi2_bins = np.linspace(0, xlim, n_bins) + print(x[idx]) + #pdb.set_trace() + + plt.figure(figsize=(6,4)) + plt.clf() + plt.hist(x[idx], bins=chi2_bins, histtype='stepfilled', label='RA', density=True, color='skyblue', alpha=0.8, edgecolor='k') + plt.hist(y[idx], bins=chi2_bins, histtype='stepfilled', label='DEC', density=True, color='orange', alpha=0.8, edgecolor='k') + plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, + label='$\chi^2$ ' + str(Ndof) + ' dof') + #plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) + plt.title(str(filter)+' (N = '+str(len(chi2_x_list))+')', fontsize=22) + plt.xlim(0, xlim) + plt.ylabel(r'PDF', fontsize=28) + plt.legend(fontsize=20) + + plt.tick_params(labelsize=20, direction='in', right=True, top=True) + + plt.savefig(str(filter)+'_chi2_dist.png', dpi=400) + + chi2red_x = x / Ndof + chi2red_y = y / Ndof + chi2red_t = (x + y) / (2.0 * Ndof) + + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) + fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' + med_chi2red_x_f = np.median(chi2red_x[idx]) + med_chi2red_x_a = np.median(chi2red_x) + med_chi2red_y_f = np.median(chi2red_y[idx]) + med_chi2red_y_a = np.median(chi2red_y) + med_chi2red_t_f = np.median(chi2red_t[idx]) + med_chi2red_t_a = np.median(chi2red_t) + print(fmt.format(' X', med_chi2red_x_f, med_chi2red_x_a)) + print(fmt.format(' Y', med_chi2red_y_f, med_chi2red_y_a)) + print(fmt.format('Tot', med_chi2red_t_f, med_chi2red_t_a)) + + return + + +def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14,21], ylim = [-1, 1], target_idx = 0, motion_model_dict={}, boot_err=False): + """ + tab = flystar table + Ndetect = Number of epochs star detected in + """ + diffX_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + diffY_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + errX_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + errY_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + sigX_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + sigY_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + m_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + for ii in range(len(tab['xe'])): # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) - if len(fnd) == Ndetect: + if len(fnd) == Ndetect and tab['use_in_trans'][ii]: time = tab['t'][ii, fnd] x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] m = tab['m'][ii, fnd] - xerr = tab['xe'][ii, fnd] - yerr = tab['ye'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe_boot'][ii, fnd], tab['xe'][ii, fnd]) + yerr = np.hypot(tab['ye_boot'][ii, fnd], tab['ye'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] - dt = tab['t'][ii, fnd] - tab['t0'][ii] - fitLineX = tab['x0'][ii] + (tab['vx'][ii] * dt) - fitLineY = tab['y0'][ii] + (tab['vy'][ii] * dt) + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii, fnd] diffX = x - fitLineX diffY = y - fitLineY @@ -2281,14 +2486,17 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, xlim, ylim = [-1, 1], target_idx = 0) if target_idx is not None: ax2.plot(m_arr[target_idx, ii], sigX_arr[target_idx, ii], 's', color='black', ms=5) ax2.plot(m_arr[target_idx, ii], sigY_arr[target_idx, ii], 'o', color='black', ms=5) - ax2.set_xlim(xlim[0], xlim[1]) + ax2.set_xlim(mlim[0], mlim[1]) ax2.set_ylim(-5, 5) ax2.axhline(y=0, color='black', alpha=0.9, zorder=1000) + ax2.axhline(y=np.nanmean(sigX_arr[:, ii]), color='tab:blue', alpha=0.9,linestyle='dotted', zorder=1001) + ax2.axhline(y=np.nanmean(sigY_arr[:, ii]), color='tab:orange', alpha=0.9,linestyle='dotted', zorder=1002) ax2.set_xlabel('mag') ax2.set_ylabel('sigma') ax2.set_title('Epoch {0}'.format(ii)) ax2.legend() + #print(errX_arr[:, ii]) ax3.errorbar(m_arr[:, ii], diffX_arr[:, ii]*1E3, yerr=errX_arr[:, ii]*1E3, marker='s', label = 'X', ls='none', color='tab:blue', alpha=0.4, ms=5) ax3.errorbar(m_arr[:, ii], diffY_arr[:, ii]*1E3, yerr=errY_arr[:, ii]*1E3, @@ -2298,15 +2506,137 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, xlim, ylim = [-1, 1], target_idx = 0) marker='s', ls='none', color='black', ms=5) ax3.errorbar(m_arr[target_idx, ii], diffY_arr[target_idx, ii]*1E3, yerr=errY_arr[target_idx, ii]*1E3, marker='o', ls='none', color='black', ms=5) - ax3.set_xlim(xlim[0], xlim[1]) + ax3.set_xlim(mlim[0], mlim[1]) ax3.set_ylim(ylim[0], ylim[1]) ax3.axhline(y=0, color='black', alpha=0.9, zorder=1000) + ax3.axhline(y=np.nanmean(diffX_arr[:, ii]*1E3), color='tab:blue', alpha=0.9,linestyle='dotted', zorder=1001) + ax3.axhline(y=np.nanmean(diffY_arr[:, ii]*1E3), color='tab:orange', alpha=0.9,linestyle='dotted', zorder=1002) ax3.set_xlabel('mag') ax3.set_ylabel('residual (mas)') return + +# TODO: update for motion model +def plot_chi2_ecliptic_per_epoch(tab, Ndetect,ra,dec, mlim=[14,21], ylim = [-1, 1], target_idx = 0): + """ + tab = flystar table + Ndetect = Number of epochs star detected in + """ + diffX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + diffY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + errX_arr = 99 * np.ones((len(tab['xe']), Ndetect)) + errY_arr = 99 * np.ones((len(tab['xe']), Ndetect)) + sigX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + sigY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + m_arr = -99 * np.ones((len(tab['xe']), Ndetect)) + + rad_to_as = 180/np.pi * 60 * 60 + deg_to_as = 60 * 60 + def eq_to_ec(ra,dec): + e = 23.446 * np.pi/180 + sinb = np.sin(dec)*np.cos(e) - np.cos(dec)*np.sin(e)*np.sin(ra) + cosb = np.cos(np.arcsin(sinb)) + cosg = np.cos(ra)*np.cos(dec)/cosb + sing = (np.sin(dec)*np.sin(e) + np.cos(dec)*np.cos(e)*np.sin(ra))/cosb + g,b = np.arctan2(sing,cosg)*180/np.pi,np.arcsin(sinb)*180/np.pi + g = 360+g + return g*deg_to_as,b*deg_to_as + coord0 = SkyCoord(ra=ra,dec=dec,unit=(u.hourangle, u.deg),frame='icrs') -def plot_chi2_dist_mag(tab, Ndetect, mlim=40, n_bins=30): + for ii in range(len(tab['xe'])): + # Ignore the NaNs + fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) + if len(fnd) == Ndetect and tab['use_in_trans'][ii]: + time = tab['t'][ii, fnd] + x = tab['x'][ii, fnd] + y = tab['y'][ii, fnd] + m = tab['m'][ii, fnd] + vx = tab['vx'][ii] + vy = tab['vy'][ii] + lambda_0,beta_0 = eq_to_ec((coord0.ra - tab['x0'][ii]*u.arcsec).radian, + (coord0.dec + tab['y0'][ii]*u.arcsec).radian) + x1 = coord0.ra - u.arcsec*x + y1 = coord0.dec + u.arcsec*y + ra_rad,dec_rad = x1.radian, y1.radian + lambda_obs,beta_obs = eq_to_ec(ra_rad,dec_rad) + x2 = coord0.ra - tab['x0'][ii]*u.arcsec - (time-tab['t0'][ii])*vx*u.arcsec + y2 = coord0.dec + tab['y0'][ii]*u.arcsec + (time-tab['t0'][ii])*vy*u.arcsec + ra_rad,dec_rad = x2.radian, y2.radian + lambda_pm,beta_pm = eq_to_ec(ra_rad,dec_rad) + + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] + + dt = tab['t'][ii, fnd] - tab['t0'][ii] + fitLineX = lambda_pm + fitLineY = beta_pm + + diffX = lambda_obs - fitLineX + diffY = beta_obs - fitLineY + sigX = diffX / xerr + sigY = diffY / yerr + + diffX_arr[ii] = diffX.reshape(Ndetect,) + diffY_arr[ii] = diffY.reshape(Ndetect,) + errX_arr[ii] = xerr.reshape(Ndetect,) + errY_arr[ii] = yerr.reshape(Ndetect,) + sigX_arr[ii] = sigX.reshape(Ndetect,) + sigY_arr[ii] = sigY.reshape(Ndetect,) + m_arr[ii] = m.reshape(Ndetect,) + + ts_folded = tab['t'][0]%1 + i_sort = np.argsort(ts_folded) + print(ts_folded,i_sort) + for ii in i_sort: +# fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 4), +# gridspec_kw={'width_ratios': [1, 2, 2]}) +# plt.subplots_adjust(wspace=0.5) +# ax1.hist(sigX_arr[:, ii], label = 'X', histtype='step', bins=np.linspace(-10, 10)) +# ax1.hist(sigY_arr[:, ii], label = 'Y', histtype='step', bins=np.linspace(-10, 10)) +# ax1.set_xlabel('sigma') +# ax1.legend() + + fig, (ax2, ax3) = plt.subplots(1, 2, figsize=(14, 4)) + plt.subplots_adjust(wspace=0.25) + + '''ax2.plot(m_arr[:, ii], sigX_arr[:, ii], 's', label = 'lambda', color='tab:blue', alpha=0.4, ms=5) + ax2.plot(m_arr[:, ii], sigY_arr[:, ii], 'o', label = 'beta', color='tab:orange', alpha=0.4, ms=5) + if target_idx is not None: + ax2.plot(m_arr[target_idx, ii], sigX_arr[target_idx, ii], 's', color='black', ms=5) + ax2.plot(m_arr[target_idx, ii], sigY_arr[target_idx, ii], 'o', color='black', ms=5) + ax2.set_xlim(mlim[0], mlim[1]) + ax2.set_ylim(-5, 5) + ax2.axhline(y=0, color='black', alpha=0.9, zorder=1000) + ax2.set_xlabel('mag') + ax2.set_ylabel('sigma')''' + ax2.set_title('Epoch {0}'.format(ii)+', phase='+str(tab['t'][0][ii]%1)[:5]) + + #print(errX_arr[:, ii]) + ax2.errorbar(m_arr[:, ii], diffX_arr[:, ii]*1E3, yerr=errX_arr[:, ii]*1E3, + marker='s', label = 'lambda', ls='none', color='tab:blue', alpha=0.4, ms=5) + ax3.errorbar(m_arr[:, ii], diffY_arr[:, ii]*1E3, yerr=errY_arr[:, ii]*1E3, + marker='o', label = 'beta', ls='none', color='tab:orange', alpha=0.4, ms=5) + if target_idx is not None: + #print('target',m_arr[target_idx, ii],diffX_arr[target_idx, ii]*1E3,diffY_arr[target_idx, ii]*1E3) + ax2.errorbar(m_arr[target_idx, ii], diffX_arr[target_idx, ii]*1E3, yerr=errX_arr[target_idx, ii]*1E3, + marker='s', ls='none', color='black', ms=5) + ax3.errorbar(m_arr[target_idx, ii], diffY_arr[target_idx, ii]*1E3, yerr=errY_arr[target_idx, ii]*1E3, + marker='o', ls='none', color='black', ms=5) + ax2.legend() + ax3.legend() + ax2.set_xlim(mlim[0], mlim[1]) + ax3.set_xlim(mlim[0], mlim[1]) + ax2.set_ylim(ylim[0], ylim[1]) + ax3.set_ylim(ylim[0], ylim[1]) + ax2.axhline(y=0, color='black', alpha=0.9, zorder=1000) + ax3.axhline(y=0, color='black', alpha=0.9, zorder=1000) + ax2.set_xlabel('mag') + ax2.set_ylabel('residual (mas)') + ax3.set_xlabel('mag') + ax3.set_ylabel('residual (mas)') + return + +def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2320,9 +2650,12 @@ def plot_chi2_dist_mag(tab, Ndetect, mlim=40, n_bins=30): fnd_list.append(len(fnd)) m = tab['m'][ii, fnd] - merr = tab['me'][ii, fnd] + if boot_err: + merr = np.hypot(tab['me_boot'][ii, fnd], tab['me'][ii, fnd]) + else: + merr = tab['me'][ii, fnd] m0 = tab['m0'][ii] - m0err = tab['m0e'][ii] + m0err = tab['m0_err'][ii] diff_m = m0 - m sig_m = diff_m/merr @@ -2337,16 +2670,16 @@ def plot_chi2_dist_mag(tab, Ndetect, mlim=40, n_bins=30): # Fitting mean magnitude... so subtract 1 to get Ndof Ndof = Ndetect - 1 - chi2_maxis = np.linspace(0, mlim, mlim*3) - chi2_bins = np.linspace(0, mlim, n_bins) + chi2_maxis = np.linspace(0, xlim, xlim*3) + chi2_bins = np.linspace(0, xlim, n_bins) plt.figure(figsize=(6,4)) plt.clf() - plt.hist(chi2_m[idx], bins=np.arange(mlim*10), histtype='step', density=True) + plt.hist(chi2_m[idx], bins=np.arange(xlim*10), histtype='step', density=True) plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, label='$\chi^2$ ' + str(Ndof) + ' dof') plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) - plt.xlim(0, mlim) + plt.xlim(0, xlim) plt.legend() print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) @@ -2355,13 +2688,72 @@ def plot_chi2_dist_mag(tab, Ndetect, mlim=40, n_bins=30): return -def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), color_time=False): +def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, file_name=None, filter=None): + """ + tab = flystar table + Ndetect = Number of epochs star detected in + """ + chi2_m_list = [] + fnd_list = [] # Number of non-NaN error measurements + + for ii in range(len(tab['me'])): + # Ignore the NaNs + fnd = np.argwhere(~np.isnan(tab['me'][ii,:])) + fnd_list.append(len(fnd)) + + m = tab['m'][ii, fnd] + merr = tab['me'][ii, fnd] + m0 = tab['m0'][ii] + m0err = tab['m0_err'][ii] + + diff_m = m0 - m + sig_m = diff_m/merr + + chi2_m = np.sum(sig_m**2) + chi2_m_list.append(chi2_m) + + chi2_m = np.array(chi2_m_list) + fnd = np.array(fnd_list) + + idx = np.where(fnd == Ndetect)[0] + + # Fitting mean magnitude... so subtract 1 to get Ndof + Ndof = Ndetect - 1 + chi2_maxis = np.linspace(0, xlim, xlim*3) + chi2_bins = np.linspace(0, xlim, n_bins) + + plt.figure(figsize=(6,4)) + plt.clf() + plt.hist(chi2_m[idx], bins=np.arange(xlim*10), label='mag', histtype='stepfilled', density=True, color='green', alpha=0.7, edgecolor='k') + plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, + label='$\chi^2$ ' + str(Ndof) + ' dof') + #plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) + plt.xlim(0, xlim) + plt.xlabel(r'$\chi^{2}$', fontsize=28) + plt.ylabel(r'PDF', fontsize=28) + plt.legend(fontsize=20) + + plt.tick_params(labelsize=20, direction='in', right=True, top=True) + + plt.savefig(str(filter)+'_chi2_dist_mag.png', dpi=400) + + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) + fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' + print(fmt.format('M', np.median(chi2_m[idx] / (fnd[idx] - 2)), np.median(chi2_m / (fnd - 2)))) + + return + +def plot_stars(tab, star_names, motion_model_dict={}, NcolMax=2, epoch_array = None, figsize=(15,25), color_time=False, boot_err=False): """ Plot a set of stars positions, flux and residuals over time. epoch_array : None, array Array of the epoch indicies to plot. If None, plots all epochs. """ + + def rs(x): + return x.reshape(len(x)) + print( 'Creating residuals plots for star(s):' ) print( star_names ) @@ -2379,6 +2771,11 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), x = tab['x0'] y = tab['y0'] r = np.hypot(x, y) + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + cont_times = np.arange(np.min(tab['t'][i_all_detected]), np.max(tab['t'][i_all_detected]), 0.01) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) for i in range(Nstars): starName = star_names[i] @@ -2402,19 +2799,25 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), y = tab['y'][ii, fnd] m = tab['m'][ii, fnd] - xerr = tab['xe'][ii, fnd] - yerr = tab['ye'][ii, fnd] - merr = tab['me'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe'][ii, fnd], tab['xe_boot'][ii, fnd]) + yerr = np.hypot(tab['ye'][ii, fnd], tab['ye_boot'][ii, fnd]) + merr = np.hypot(tab['me'][ii, fnd], tab['me_boot'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] + merr = tab['me'][ii, fnd] dt = tab['t'][ii, fnd] - tab['t0'][ii] - fitLineX = tab['x0'][ii] + (tab['vx'][ii] * dt) - fitLineY = tab['y0'][ii] + (tab['vy'][ii] * dt) + + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii, fnd] - fitSigX = np.hypot(tab['x0e'][ii], tab['vxe'][ii]*dt) - fitSigY = np.hypot(tab['y0e'][ii], tab['vye'][ii]*dt) + fitSigX = xt_mod_err[ii, fnd] + fitSigY = yt_mod_err[ii, fnd] fitLineM = np.repeat(tab['m0'][ii], len(dt)).reshape(len(dt),1) - fitSigM = np.repeat(tab['m0e'][ii], len(dt)).reshape(len(dt),1) + fitSigM = np.repeat(tab['m0_err'][ii], len(dt)).reshape(len(dt),1) diffX = x - fitLineX diffY = y - fitLineY @@ -2437,7 +2840,7 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), chi2_y = np.sum(sigY**2) chi2_m = np.sum(sigM**2) - dof = len(x) - 2 + dof = (len(tab['x'][ii])-tab['n_params'][ii]).astype(int) dofM = len(m) - 1 chi2_red_x = chi2_x / dof @@ -2452,6 +2855,8 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), (chi2_red_y, chi2_y, dof)) print( '\tM Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_m, chi2_m, dofM)) + if 'motion_model_used' in tab.keys(): + print('\tMotion model:', tab['motion_model_used'][ii]) tmin = time.min() tmax = time.max() @@ -2502,11 +2907,16 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), ind = int((row-1)*Ncols + col) paxes = plt.subplot(Nrows, Ncols, ind) - plt.plot(time, fitLineX, 'b-') - plt.plot(time, fitLineX + fitSigX, 'b--') - plt.plot(time, fitLineX - fitSigX, 'b--') + plt.plot(cont_times, xt_cont_all[ii], 'b-') + plt.plot(cont_times, xt_cont_all[ii] + xt_cont_err[ii], 'b--') + plt.plot(cont_times, xt_cont_all[ii] - xt_cont_err[ii], 'b--') if not color_time: - plt.errorbar(time, x, yerr=xerr.reshape(len(xerr),), fmt='k.') + #print('x:',x) + #print('xerr:',xerr) + #print('xerr_reshaped:', xerr.reshape(len(xerr),)) + #plt.errorbar(time, x, yerr=xerr.reshape(len(xerr)), fmt='k.') + plt.errorbar(rs(time), rs(x), yerr=rs(xerr), fmt='k.') + #plt.errorbar(time, x, yerr=xerr, fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2534,11 +2944,11 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), ind = int((row-1)*Ncols + col) paxes = plt.subplot(Nrows, Ncols, ind) - plt.plot(time, fitLineY, 'b-') - plt.plot(time, fitLineY + fitSigY, 'b--') - plt.plot(time, fitLineY - fitSigY, 'b--') + plt.plot(cont_times, yt_cont_all[ii], 'b-') + plt.plot(cont_times, yt_cont_all[ii] + yt_cont_err[ii], 'b--') + plt.plot(cont_times, yt_cont_all[ii] - yt_cont_err[ii], 'b--') if not color_time: - plt.errorbar(time, y, yerr=yerr.reshape(len(yerr),), fmt='k.') + plt.errorbar(rs(time), rs(y), yerr=rs(yerr), fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2568,7 +2978,7 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), plt.plot(time, fitLineM + fitSigM, 'g--') plt.plot(time, fitLineM - fitSigM, 'g--') if not color_time: - plt.errorbar(time, m, yerr=merr.reshape(len(merr),), fmt='k.') + plt.errorbar(rs(time), rs(m), yerr=rs(merr), fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2597,10 +3007,10 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') - plt.plot(time, fitSigX*1e3, 'b--') - plt.plot(time, -fitSigX*1e3, 'b--') + plt.plot(cont_times, xt_cont_err[ii]*1e3, 'b--') + plt.plot(cont_times, -xt_cont_err[ii]*1e3, 'b--') if not color_time: - plt.errorbar(time, (x - fitLineX)*1e3, yerr=xerr.reshape(len(xerr),)*1e3, fmt='k.') + plt.errorbar(rs(time), rs(x - fitLineX)*1e3, yerr=rs(xerr)*1e3, fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2625,10 +3035,10 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') - plt.plot(time, fitSigY*1e3, 'b--') - plt.plot(time, -fitSigY*1e3, 'b--') + plt.plot(cont_times, yt_cont_err[ii]*1e3, 'b--') + plt.plot(cont_times, -yt_cont_err[ii]*1e3, 'b--') if not color_time: - plt.errorbar(time, (y - fitLineY)*1e3, yerr=yerr.reshape(len(yerr),)*1e3, fmt='k.') + plt.errorbar(rs(time), rs(y - fitLineY)*1e3, yerr=rs(yerr)*1e3, fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2656,7 +3066,7 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), plt.plot(time, fitSigM*1e3, 'g--') plt.plot(time, -fitSigM*1e3, 'g--') if not color_time: - plt.errorbar(time, (m - fitLineM), yerr=merr.reshape(len(merr),), fmt='k.') + plt.errorbar(rs(time), rs(m - fitLineM), yerr=rs(merr), fmt='k.') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2683,8 +3093,8 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), paxes = plt.subplot(Nrows, Ncols, ind) if not color_time: - plt.errorbar(x,y, xerr=xerr.reshape(len(xerr),), - yerr=yerr.reshape(len(yerr),), fmt='k.') + plt.errorbar(rs(x),rs(y), xerr=rs(xerr), + yerr=rs(yerr), fmt='k.') else: sc = plt.scatter(x, y, s=0, c=dtime, vmin=0, vmax=1, cmap='hsv') clb = plt.colorbar(sc) @@ -2701,8 +3111,8 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), paxes.xaxis.set_major_formatter(FormatStrFormatter('%.3f')) plt.xlabel('X (asec)', fontsize=fontsize1) plt.ylabel('Y (asec)', fontsize=fontsize1) - plt.plot(fitLineX, fitLineY, 'b-') - + plt.plot(xt_cont_all[ii], yt_cont_all[ii], 'b-') + ########## # X, Y Histogram of Residuals ########## @@ -2752,10 +3162,8 @@ def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), return - - -def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_list = None, - figsize=(15,25), color_time=False, resTicRng=None): +def plot_stars_nfilt(tab, star_names, motion_model_dict={}, NcolMax=2, epoch_array_list = None, color_list = None, + figsize=(15,25), color_time=False, resTicRng=None, save_name=None, boot_err=False): """ Plot a set of stars positions, flux and residuals over time. @@ -2767,6 +3175,12 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ """ print( 'Creating residuals plots for star(s):' ) print( star_names ) + def rs(x): + return x.reshape(len(x)) + + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) Nstars = len(star_names) Ncols = 3 * np.min([Nstars, NcolMax]) @@ -2782,6 +3196,11 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ x = tab['x0'] y = tab['y0'] r = np.hypot(x, y) + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] + cont_times = np.arange(np.min(tab['t'][i_all_detected]), np.max(tab['t'][i_all_detected]), 0.01) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) for i in range(Nstars): for ea, epoch_array in enumerate(epoch_array_list): @@ -2807,19 +3226,23 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ y = tab['y'][ii, fnd] m = tab['m'][ii, fnd] - xerr = tab['xe'][ii, fnd] - yerr = tab['ye'][ii, fnd] - merr = tab['me'][ii, fnd] + if boot_err: + xerr = np.hypot(tab['xe'][ii, fnd], tab['xe_boot'][ii, fnd]) + yerr = np.hypot(tab['ye'][ii, fnd], tab['ye_boot'][ii, fnd]) + merr = np.hypot(tab['me'][ii, fnd], tab['me_boot'][ii, fnd]) + else: + xerr = tab['xe'][ii, fnd] + yerr = tab['ye'][ii, fnd] + merr = tab['me'][ii, fnd] - dt = tab['t'][ii, fnd] - tab['t0'][ii] - fitLineX = tab['x0'][ii] + (tab['vx'][ii] * dt) - fitLineY = tab['y0'][ii] + (tab['vy'][ii] * dt) + fitLineX = xt_mod_all[ii, fnd] + fitLineY = yt_mod_all[ii, fnd] - fitSigX = np.hypot(tab['x0e'][ii], tab['vxe'][ii]*dt) - fitSigY = np.hypot(tab['y0e'][ii], tab['vye'][ii]*dt) + fitSigX = xt_mod_err[ii, fnd] + fitSigY = yt_mod_err[ii, fnd] - fitLineM = np.repeat(tab['m0'][ii], len(dt)).reshape(len(dt),1) - fitSigM = np.repeat(tab['m0e'][ii], len(dt)).reshape(len(dt),1) + fitLineM = np.repeat(tab['m0'][ii], len(time)).reshape(len(time),1) + fitSigM = np.repeat(tab['m0_err'][ii], len(time)).reshape(len(time),1) diffX = x - fitLineX diffY = y - fitLineY @@ -2908,11 +3331,12 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ ind = int((row-1)*Ncols + col) paxes = plt.subplot(Nrows, Ncols, ind) - plt.plot(time, fitLineX, 'b-') - plt.plot(time, fitLineX + fitSigX, 'b--') - plt.plot(time, fitLineX - fitSigX, 'b--') + plt.plot(cont_times, xt_cont_all[ii], 'b-') + plt.plot(cont_times, xt_cont_all[ii] + xt_cont_err[ii], 'b--') + plt.plot(cont_times, xt_cont_all[ii] - xt_cont_err[ii], 'b--') + print(np.shape(xerr.reshape(len(xerr),))) if not color_time: - plt.errorbar(time, x, yerr=xerr.reshape(len(xerr),), marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(x), yerr=rs(xerr), marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2940,11 +3364,11 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ ind = int((row-1)*Ncols + col) paxes = plt.subplot(Nrows, Ncols, ind) - plt.plot(time, fitLineY, 'b-') - plt.plot(time, fitLineY + fitSigY, 'b--') - plt.plot(time, fitLineY - fitSigY, 'b--') + plt.plot(cont_times, yt_cont_all[ii], 'b-') + plt.plot(cont_times, yt_cont_all[ii] + yt_cont_err[ii], 'b--') + plt.plot(cont_times, yt_cont_all[ii] - yt_cont_err[ii], 'b--') if not color_time: - plt.errorbar(time, y, yerr=yerr.reshape(len(yerr),), marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(y), yerr=rs(yerr), marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -2974,7 +3398,7 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ plt.plot(time, fitLineM + fitSigM, 'g--') plt.plot(time, fitLineM - fitSigM, 'g--') if not color_time: - plt.errorbar(time, m, yerr=merr.reshape(len(merr),), marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(m), yerr=rs(merr), marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -3003,10 +3427,10 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') - plt.plot(time, fitSigX*1e3, 'b--') - plt.plot(time, -fitSigX*1e3, 'b--') + plt.plot(cont_times, xt_cont_err[ii]*1e3, 'b--') + plt.plot(cont_times, -xt_cont_err[ii]*1e3, 'b--') if not color_time: - plt.errorbar(time, (x - fitLineX)*1e3, yerr=xerr.reshape(len(xerr),)*1e3, marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(x - fitLineX)*1e3, yerr=rs(xerr)*1e3, marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -3031,10 +3455,10 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') - plt.plot(time, fitSigY*1e3, 'b--') - plt.plot(time, -fitSigY*1e3, 'b--') + plt.plot(cont_times, yt_cont_err[ii]*1e3, 'b--') + plt.plot(cont_times, -yt_cont_err[ii]*1e3, 'b--') if not color_time: - plt.errorbar(time, (y - fitLineY)*1e3, yerr=yerr.reshape(len(yerr),)*1e3, marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(y - fitLineY)*1e3, yerr=rs(yerr)*1e3, marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -3062,7 +3486,7 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ plt.plot(time, fitSigM*1e3, 'g--') plt.plot(time, -fitSigM*1e3, 'g--') if not color_time: - plt.errorbar(time, (m - fitLineM), yerr=merr.reshape(len(merr),), marker='.', color=color, ls='none') + plt.errorbar(rs(time), rs(m - fitLineM), yerr=rs(merr), marker='.', color=color, ls='none') else: norm = colors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') @@ -3089,8 +3513,8 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ paxes = plt.subplot(Nrows, Ncols, ind) if not color_time: - plt.errorbar(x,y, xerr=xerr.reshape(len(xerr),), - yerr=yerr.reshape(len(yerr),), marker='.', color=color, ls='none') + plt.errorbar(rs(x),rs(y), xerr=rs(xerr), + yerr=rs(yerr), marker='.', color=color, ls='none') else: sc = plt.scatter(x, y, s=0, c=dtime, vmin=0, vmax=1, cmap='hsv') clb = plt.colorbar(sc) @@ -3153,7 +3577,8 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) # plt.savefig(rootDir+'plots/plotStar_all.png') plt.show() - + if save_name is not None: + plt.savefig(save_name + '.png') plt.show() return @@ -3166,8 +3591,8 @@ def plot_errors_vs_r_m(star_tab, vmax_perr=0.75, vmax_pmerr=0.75): two axis (as is used in pick_good_ref_stars()). """ r = np.hypot(star_tab['x0'], star_tab['y0']) - p_err = np.mean((star_tab['x0e'], star_tab['y0e']), axis=0) * 1e3 - pm_err = np.mean((star_tab['vxe'], star_tab['vye']), axis=0) * 1e3 + p_err = np.mean((star_tab['x0_err'], star_tab['y0_err']), axis=0) * 1e3 + pm_err = np.mean((star_tab['vx_err'], star_tab['vy_err']), axis=0) * 1e3 plt.figure(figsize=(12, 6)) plt.clf() @@ -3186,7 +3611,20 @@ def plot_errors_vs_r_m(star_tab, vmax_perr=0.75, vmax_pmerr=0.75): plt.ylabel('Radius (")') return - + +def plot_plxs(star_tab, target_idx=0): + fig,ax = plt.subplots(nrows=1,ncols=2,figsize=(10,5)) + ax[0].errorbar(star_tab['m0'],star_tab['pi']*1e3, yerr=star_tab['pi_err']*1e3,marker='.',linestyle='none') + if target_idx is not None: + ax[0].errorbar(star_tab['m0'][target_idx],star_tab['pi'][target_idx]*1e3, yerr=star_tab['pi_err'][target_idx]*1e3,marker='*',linestyle='none', color='orange', markersize=10) + ax[0].axhline(0, c='gray') + ax[0].set_ylabel('Plx (mas)') + ax[0].set_xlabel('Mag') + ax[1].hist(star_tab['pi']/star_tab['pi_err'], bins=range(-10,10)) + ax[1].set_ylabel('N stars') + ax[1].set_xlabel('Plx/Plx_err') + plt.tight_layout() + ax[0].set_ylim(-5,5) def plot_sky(stars_tab, plot_errors=False, center_star=None, range=0.4, diff --git a/flystar/starlists.py b/flystar/starlists.py index be49458..23df44f 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -209,12 +209,12 @@ def read_label(labelFile, prop_to_time=None, flipX=True): t_label.rename_column('col2', 'm') t_label.rename_column('col3', 'x0') t_label.rename_column('col4', 'y0') - t_label.rename_column('col5', 'x0e') - t_label.rename_column('col6', 'y0e') + t_label.rename_column('col5', 'x0_err') + t_label.rename_column('col6', 'y0_err') t_label.rename_column('col7', 'vx') t_label.rename_column('col8', 'vy') - t_label.rename_column('col9', 'vxe') - t_label.rename_column('col10','vye') + t_label.rename_column('col9', 'vx_err') + t_label.rename_column('col10','vy_err') t_label.rename_column('col11','t0') t_label.rename_column('col12','use') t_label.rename_column('col13','r0') @@ -222,23 +222,23 @@ def read_label(labelFile, prop_to_time=None, flipX=True): # Convert velocities from mas/yr to arcsec/year # t_label['vx'] *= 0.001 # t_label['vy'] *= 0.001 -# t_label['vxe'] *= 0.001 -# t_label['vye'] *= 0.001 +# t_label['vx_err'] *= 0.001 +# t_label['vy_err'] *= 0.001 t_label['vx'] = t_label['vx'] * 0.001 t_label['vy'] = t_label['vy'] * 0.001 - t_label['vxe'] = t_label['vxe'] * 0.001 - t_label['vye'] = t_label['vye'] * 0.001 + t_label['vx_err'] = t_label['vx_err'] * 0.001 + t_label['vy_err'] = t_label['vy_err'] * 0.001 # propogate to prop_to_time if prop_to_time is given if prop_to_time != None: x0 = t_label['x0'] - x0e = t_label['x0e'] + x0e = t_label['x0_err'] vx = t_label['vx'] - vxe = t_label['vxe'] + vxe = t_label['vx_err'] y0 = t_label['y0'] - y0e = t_label['y0e'] + y0e = t_label['y0_err'] vy = t_label['vy'] - vye = t_label['vye'] + vye = t_label['vy_err'] t0 = t_label['t0'] t_label['x'] = x0 + vx*(prop_to_time - t0) t_label['y'] = y0 + vy*(prop_to_time - t0) @@ -316,12 +316,12 @@ def read_label_accel(labelFile, prop_to_time=None, flipX=True): t_label.rename_column('col2', 'm') t_label.rename_column('col3', 'x0') t_label.rename_column('col4', 'y0') - t_label.rename_column('col5', 'x0e') - t_label.rename_column('col6', 'y0e') + t_label.rename_column('col5', 'x0_err') + t_label.rename_column('col6', 'y0_err') t_label.rename_column('col7', 'vx') t_label.rename_column('col8', 'vy') - t_label.rename_column('col9', 'vxe') - t_label.rename_column('col10','vye') + t_label.rename_column('col9', 'vx_err') + t_label.rename_column('col10','vy_err') t_label.rename_column('col11', 'ax') t_label.rename_column('col12', 'ay') t_label.rename_column('col13', 'axe') @@ -333,12 +333,12 @@ def read_label_accel(labelFile, prop_to_time=None, flipX=True): # Convert velocities from mas/yr to arcsec/year # t_label['vx'] *= 0.001 # t_label['vy'] *= 0.001 -# t_label['vxe'] *= 0.001 -# t_label['vye'] *= 0.001 +# t_label['vx_err'] *= 0.001 +# t_label['vy_err'] *= 0.001 t_label['vx'] = t_label['vx'] * 0.001 t_label['vy'] = t_label['vy'] * 0.001 - t_label['vxe'] = t_label['vxe'] * 0.001 - t_label['vye'] = t_label['vye'] * 0.001 + t_label['vx_err'] = t_label['vx_err'] * 0.001 + t_label['vy_err'] = t_label['vy_err'] * 0.001 t_label['ax'] = t_label['ax'] * 0.001 t_label['ay'] = t_label['ay'] * 0.001 @@ -348,15 +348,15 @@ def read_label_accel(labelFile, prop_to_time=None, flipX=True): # propogate to prop_to_time if prop_to_time is given if prop_to_time != None: x0 = t_label['x0'] - x0e = t_label['x0e'] + x0e = t_label['x0_err'] vx = t_label['vx'] - vxe = t_label['vxe'] + vxe = t_label['vx_err'] ax = t_label['ax'] axe = t_label['axe'] y0 = t_label['y0'] - y0e = t_label['y0e'] + y0e = t_label['y0_err'] vy = t_label['vy'] - vye = t_label['vye'] + vye = t_label['vy_err'] ay = t_label['ay'] aye = t_label['aye'] t0 = t_label['t0'] @@ -535,6 +535,8 @@ def __init__(self, *args, **kwargs): # Check all the arrays. arg_tab = ('x', 'y', 'm', 'xe', 'ye', 'me', 'corr') + #print(kwargs) + for arg_test in arg_tab: if arg_test in kwargs: if not isinstance(kwargs[arg_test], np.ndarray): diff --git a/flystar/startables.py b/flystar/startables.py index 84953a9..d75fca9 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -1,7 +1,7 @@ -from astropy.table import Table, Column, hstack +from astropy.table import Table, Column, MaskedColumn, hstack from astropy.stats import sigma_clipping +from astropy.time import Time from scipy.optimize import curve_fit -from flystar.fit_velocity import linear_fit, calc_chi2, linear, fit_velocity from tqdm import tqdm import numpy as np import warnings @@ -9,7 +9,8 @@ import pdb import time import copy - +from flystar import motion_model +import pandas as pd class StarTable(Table): """ @@ -31,6 +32,9 @@ class StarTable(Table): Optional table columns (input as keywords): ------------------------- + motion_model : 1D numpy.array with shape = N_stars + string indicating motion model type for each star + xe : 2D numpy.array with shape = (N_stars, N_lists) Position uncertainties of N_stars in each of N_lists in the x dimension. @@ -58,7 +62,6 @@ class StarTable(Table): ref_list : int Specify which list is the reference list (if any). - Examples -------------------------- @@ -126,7 +129,7 @@ def __init__(self, *args, ref_list=0, **kwargs): # We have to have special handling of meta-data (i.e. info that has # dimensions of n_lists). - meta_tab = ('LIST_TIMES', 'LIST_NAMES') + meta_tab = ('list_times', 'list_names') meta_type = ((float, int), str) for mm in range(len(meta_tab)): meta_test = meta_tab[mm] @@ -153,6 +156,9 @@ def __init__(self, *args, ref_list=0, **kwargs): if meta_arg in kwargs: self.meta[meta_arg] = kwargs[meta_arg] del kwargs[meta_arg] + elif meta_arg.upper() in kwargs: + self.meta[meta_arg] = kwargs[meta_arg.upper()] + del kwargs[meta_arg] for arg in kwargs: if arg in ['name', 'x', 'y', 'm']: @@ -161,6 +167,12 @@ def __init__(self, *args, ref_list=0, **kwargs): self.add_column(Column(data=kwargs[arg], name=arg)) if arg == 'name_in_list': self['name_in_list'] = self['name_in_list'].astype('U20') + if arg == 'motion_model_input': + self['motion_model_input'] = self['motion_model_input'].astype('U20') + if arg == 'motion_model_used': + self['motion_model_used'] = self['motion_model_used'].astype('U20') + #if 'motion_model_input' not in kwargs: + # self['motion_model_input'] = np.repeat(self.default_motion_model, len(self['name'])) return @@ -228,7 +240,7 @@ def _add_list_data_from_starlist(self, starlist): # Meta table entries with a size that matches the n_lists size are the ones # that need a new value. We have to add something... whatever was passed in or None - if isinstance(self.meta[tab_key], collections.abc.Iterable) and (len(self.meta[tab_key]) == self.meta['n_lists']): + if isinstance(self.meta[tab_key], collections.abc.Iterable) and (len(self.meta[tab_key]) == self.meta['n_lists']) and (not isinstance(self.meta[tab_key], str)): # If we find the key in the starlists' meta argument, then add the new values. # Otherwise, add "None". @@ -285,7 +297,7 @@ def _add_list_data_from_keywords(self, **kwargs): for key in self.meta.keys(): # Meta table entries with a size that matches the n_lists size are the ones # that need a new value. We have to add something... whatever was passed in or None - if isinstance(self.meta[key], collections.abc.Iterable) and (len(self.meta[key]) == self.meta['n_lists']): + if isinstance(self.meta[key], collections.abc.Iterable) and (len(self.meta[key]) == self.meta['n_lists']) and (not isinstance(self.meta[key], str)): # If we find the key is the passed in meta argument, then add the new values. # Otherwise, add "None". if 'meta' in kwargs: @@ -500,7 +512,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, # Save off our new AVG and STD into new columns with shape (N_stars). col_name_avg = col_name_in + '0' - col_name_std = col_name_in + '0e' + col_name_std = col_name_in + '0_err' if ismag: std = (2.5 / np.log(10)) * std / avg @@ -526,22 +538,18 @@ def detections(self): self.add_column(Column(n_detect), name='n_detect') return - - def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=0, fixed_t0=False, verbose=False, - mask_val=None, mask_lists=False, show_progress=True): + def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=0, + fixed_t0=False, verbose=False, mask_val=None, mask_lists=False, show_progress=True, + default_motion_model='Linear', reassign_motion_model=False, select_stars=None, motion_model_dict={}): """Fit velocities for all stars in the table and add to the columns 'vx', 'vxe', 'vy', 'vye', 'x0', 'x0e', 'y0', 'y0e'. Parameters ---------- weighting : str, optional Weight by variance 'var' or standard deviation 'std', by default 'var' - use_scipy : bool, optional - Use scipy.curve_fit (recommended for large number of epochs, but may return inf or nan) or analytic fitting from flystar.fit_velocity.linear_fit (recommended for a few epochs), by default True - absolute_sigma : bool, optional - Absolute sigma or not. See https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html for details, by default True bootstrap : int, optional - Calculate uncertain using bootstraping or not, by default 0 + Calculate uncertainty using bootstraping or not, by default 0 fixed_t0 : bool or array-like, optional Fix the t0 in dt = time - t0 if user provides an array with the same length of the table, or automatically calculate t0 = np.average(time, weights=1/np.hypot(xe, ye)) if False, by default False verbose : bool, optional @@ -563,8 +571,8 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b if weighting not in ['var', 'std']: raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") - if ('t' not in self.colnames) and ('LIST_TIMES' not in self.meta): - raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'LIST_TIMES' in meta.") + if ('t' not in self.colnames) and ('list_times' not in self.meta): + raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'list_times' in meta.") # Check if we have the required columns if not all([_ in self.colnames for _ in ['x', 'y']]): @@ -577,93 +585,103 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b msg = 'Starting startable.fit_velocities for {0:d} stars with n={1:d} bootstrap' print(msg.format(N_stars, bootstrap)) - # Clean/remove up old arrays. - if 'x0' in self.colnames: self.remove_column('x0') - if 'vx' in self.colnames: self.remove_column('vx') - if 'y0' in self.colnames: self.remove_column('y0') - if 'vy' in self.colnames: self.remove_column('vy') - if 'x0e' in self.colnames: self.remove_column('x0e') - if 'vxe' in self.colnames: self.remove_column('vxe') - if 'y0e' in self.colnames: self.remove_column('y0e') - if 'vye' in self.colnames: self.remove_column('vye') - if 'chi2_vx' in self.colnames: self.remove_column('chi2_vx') - if 'chi2_vy' in self.colnames: self.remove_column('chi2_vy') - if 't0' in self.colnames: self.remove_column('t0') - if 'n_vfit' in self.colnames: self.remove_column('n_vfit') + # Set all to default_motion_model if none assigned already. + # Reset motion_model_used to the inputs for now -> will change as fits run + if ('motion_model_input' not in self.colnames) or reassign_motion_model: + self['motion_model_input'] = default_motion_model + self['motion_model_used'] = self['motion_model_input'] + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, self, default_motion_model) + + # + # Fill table with all possible motion model parameter names as new + # columns. Make everything empty for now. + # + all_motion_models = np.unique(self['motion_model_input'].tolist() + ['Fixed']+[default_motion_model]).tolist() + new_col_list = motion_model.get_list_motion_model_param_names(all_motion_models, with_errors=True) + # Append goodness of fit metrics and t0. + new_col_list += ['chi2_x', 'chi2_y', 'n_params'] + if 't0' not in new_col_list: + new_col_list.append('t0') + # Define output arrays for the best-fit parameters. - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'x0')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'vx')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'y0')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'vy')) - - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'x0e')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'vxe')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'y0e')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'vye')) + for col in new_col_list: + # Clean/remove up old arrays. + if col in self.colnames: self.remove_column(col) + # Add column #TODO: is this good for filling??? + self.add_column(Column(data = np.full(N_stars, np.nan, dtype=float), name = col)) + + # Add a column to keep track of the number of points used in a fit. + self['n_fit'] = 0 - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'chi2_vx')) - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 'chi2_vy')) + # Preserve the number of bootstraps that will be run (if any). + self.meta['n_fit_bootstrap'] = bootstrap - self.add_column(Column(data = np.zeros(N_stars, dtype=float), name = 't0')) - self.add_column(Column(data = np.zeros(N_stars, dtype=int), name = 'n_vfit')) - - self.meta['N_VFIT_BOOTSTRAP'] = bootstrap - # (FIXME: Do we need to catch the case where there's a single *unmasked* epoch?) # Catch the case when there is only a single epoch. Just return 0 velocity # and the same input position for the x0/y0. if len(self['x'].shape) == 1: + self['motion_model_used'] = 'Fixed' self['x0'] = self['x'] self['y0'] = self['y'] if 't' in self.colnames: self['t0'] = self['t'] else: - self['t0'] = self.meta['LIST_TIMES'][0] + self['t0'] = self.meta['list_times'][0] if 'xe' in self.colnames: - self['x0e'] = self['xe'] - self['y0e'] = self['ye'] - self['n_vfit'] = 1 - + self['x0_err'] = self['xe'] + self['y0_err'] = self['ye'] + self['n_fit'] = 1 + self['n_params'] = 1 return - if self['x'].shape[1] == 1: + if (self['x'].shape[1] == 1): + self['motion_model_used'] = 'Fixed' self['x0'] = self['x'][:,0] self['y0'] = self['y'][:,0] - if 't' in self.colnames: self['t0'] = self['t'][:, 0] else: - self['t0'] = self.meta['LIST_TIMES'][0] - + self['t0'] = self.meta['list_times'][0] if 'xe' in self.colnames: - self['x0e'] = self['xe'][:,0] - self['y0e'] = self['ye'][:,0] - - self['n_vfit'] = 1 - + self['x0_err'] = self['xe'][:,0] + self['y0_err'] = self['ye'][:,0] + self['n_fit'] = 1 + self['n_params'] = 1 return - + + # Only fit selected stars, if list given + fit_star_idxs = range(N_stars) + if select_stars is not None: + fit_star_idxs = select_stars # STARS LOOP through the stars and work on them 1 at a time. # This is slow; but robust. if show_progress: - for ss in tqdm(range(N_stars)): - self.fit_velocity_for_star(ss, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, bootstrap=bootstrap, fixed_t0=fixed_t0, - mask_val=mask_val, mask_lists=mask_lists) + for ss in tqdm(fit_star_idxs): + self.fit_velocity_for_star(ss, motion_model_dict, weighting=weighting, bootstrap=bootstrap, + use_scipy=use_scipy, absolute_sigma=absolute_sigma, + fixed_t0=fixed_t0, default_motion_model=default_motion_model, + mask_val=mask_val, mask_lists=mask_lists) else: - for ss in range(N_stars): - self.fit_velocity_for_star(ss, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, bootstrap=bootstrap, fixed_t0=fixed_t0, - mask_val=mask_val, mask_lists=mask_lists, ) + for ss in fit_star_idxs: + self.fit_velocity_for_star(ss, motion_model_dict, weighting=weighting, bootstrap=bootstrap, + use_scipy=use_scipy, absolute_sigma=absolute_sigma, + fixed_t0=fixed_t0, default_motion_model=default_motion_model, + mask_val=mask_val, mask_lists=mask_lists) if verbose: stop_time = time.time() print('startable.fit_velocities runtime = {0:.0f} s for {1:d} stars'.format(stop_time - start_time, N_stars)) return - def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=False, fixed_t0=False, - mask_val=None, mask_lists=False): - + def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scipy=True, absolute_sigma=True, + bootstrap=False, fixed_t0=False, mask_val=None, mask_lists=False, + default_motion_model='Linear'): + # TODO: "weighting" is not used + # # Make a mask of invalid (NaN) values and a user-specified invalid value. + # + x = np.ma.masked_invalid(self['x'][ss, :].data) y = np.ma.masked_invalid(self['y'][ss, :].data) if mask_val: @@ -675,7 +693,6 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si if not np.ma.is_masked(y): y.mask = np.zeros_like(y.data, dtype=bool) - if mask_lists is not False: # Remove a list if isinstance(mask_lists, list): @@ -686,7 +703,9 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si # Throw a warning if mask_lists is not a list if not isinstance(mask_lists, list): raise RuntimeError('mask_lists needs to be a list.') - + # + # Assign the appropriate positional errors + # if 'xe' in self.colnames: # Make a mask of invalid (NaN) values and a user-specified invalid value. xe = np.ma.masked_invalid(self['xe'][ss, :].data) @@ -734,11 +753,13 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si if not isinstance(mask_lists, list): raise RuntimeError('mask_lists needs to be a list.') + # # Make a mask of invalid (NaN) values and a user-specified invalid value. + # if 't' in self.colnames: t = np.ma.masked_invalid(self['t'][ss, :].data) else: - t = np.ma.masked_invalid(self.meta['LIST_TIMES']) + t = np.ma.masked_invalid(self.meta['list_times']) if mask_val: t = np.ma.masked_values(t, mask_val) @@ -750,14 +771,17 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si if isinstance(mask_lists, list): if all(isinstance(item, int) for item in mask_lists): t.mask[mask_lists] = True - + # Throw a warning if mask_lists is not a list if not isinstance(mask_lists, list): raise RuntimeError('mask_lists needs to be a list.') - + # For inconsistent masks, mask the star if any of the values are masked. new_mask = np.logical_or.reduce((t.mask, x.mask, y.mask, xe.mask, ye.mask)) + + # # Figure out where we have detections (as indicated by error columns) + # good = np.where((xe != 0) & (ye != 0) & np.isfinite(xe) & np.isfinite(ye) & np.isfinite(x) & np.isfinite(y) & ~new_mask)[0] @@ -766,6 +790,9 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si # Catch the case where there is NO good data. if N_good == 0: + #self['motion_model_used'][ss] = 'None' + self['n_fit'][ss] = N_good + self['n_params'][ss] = 0 return # Everything below has N_good >= 1 @@ -775,185 +802,133 @@ def fit_velocity_for_star(self, ss, weighting='var', use_scipy=True, absolute_si xe = xe[good] ye = ye[good] - # slope, intercept - p0x = np.array([0., x.mean()]) - p0y = np.array([0., y.mean()]) - + # # Unless t0 is fixed, calculate the t0 for the stars. + # if fixed_t0 is False: t_weight = 1.0 / np.hypot(xe, ye) t0 = np.average(t, weights=t_weight) + elif fixed_t0 is True: + t0 = self.t0 else: t0 = fixed_t0[ss] - dt = t - t0 - self['t0'][ss] = t0 - self['n_vfit'][ss] = N_good - - # Catch the case where all the times are identical - if (dt == dt[0]).all(): - if weighting == 'var': - wgt_x = (1.0/xe)**2 - wgt_y = (1.0/ye)**2 - elif weighting == 'std': - wgt_x = 1./np.abs(xe) - wgt_y = 1./np.abs(ye) - - self['x0'][ss] = np.average(x, weights=wgt_x) - self['y0'][ss] = np.average(y, weights=wgt_y) - self['x0e'][ss] = np.sqrt(np.average((x - self['x0'][ss])**2, weights=wgt_x)) - self['y0e'][ss] = np.sqrt(np.average((y - self['y0'][ss])**2, weights=wgt_x)) - - self['vx'][ss] = 0.0 - self['vy'][ss] = 0.0 - self['vxe'][ss] = 0.0 - self['vye'][ss] = 0.0 - - return - - # Catch the case where we have enough measurements to actually - # fit a velocity! - if N_good > 2: - if weighting == 'var': - sigma_x = xe - sigma_y = ye - elif weighting == 'std': - sigma_x = np.abs(xe)**0.5 - sigma_y = np.abs(ye)**0.5 - - if use_scipy: - vx_opt, vx_cov = curve_fit(linear, dt, x, p0=p0x, sigma=sigma_x, absolute_sigma=absolute_sigma) - vy_opt, vy_cov = curve_fit(linear, dt, y, p0=p0y, sigma=sigma_y, absolute_sigma=absolute_sigma) - vx = vx_opt[0] - x0 = vx_opt[1] - vy = vy_opt[0] - y0 = vy_opt[1] - chi2_vx = calc_chi2(dt, x, sigma_x, *vx_opt) - chi2_vy = calc_chi2(dt, y, sigma_y, *vy_opt) - - else: - result_vx = linear_fit(dt, x, sigma_x, absolute_sigma=absolute_sigma) - result_vy = linear_fit(dt, y, sigma_y, absolute_sigma=absolute_sigma) - vx = result_vx['slope'] - x0 = result_vx['intercept'] - vy = result_vy['slope'] - y0 = result_vy['intercept'] - chi2_vx = result_vx['chi2'] - chi2_vy = result_vy['chi2'] - - self['vx'][ss] = vx - self['x0'][ss] = x0 - self['vy'][ss] = vy - self['y0'][ss] = y0 - self['chi2_vx'][ss] = chi2_vx - self['chi2_vy'][ss] = chi2_vy + self['n_fit'][ss] = N_good + + # + # Decide which motion_model to fit. + # + motion_model_use = self['motion_model_input'][ss] + # Go to default model if not enough points for assigned but enough for default + # TODO: think about whether we want other fallbacks besides the singular default and Fixed + if (N_good < motion_model_dict[motion_model_use].n_pts_req) and \ + (N_good >= motion_model_dict[default_motion_model].n_pts_req): + motion_model_use = default_motion_model + # If not enough points for either, go to a fixed model + elif (N_good < motion_model_dict[motion_model_use].n_pts_req) and \ + (N_good < motion_model_dict[default_motion_model].n_pts_req): + motion_model_use = 'Fixed' + # If the points do not cover multiple times, go to a fixed model + if (t == t[0]).all(): + motion_model_use = 'Fixed' - # Run the bootstrap - if bootstrap > 0: - edx = np.arange(N_good, dtype=int) - - vx_b = np.zeros(bootstrap, dtype=float) - x0_b = np.zeros(bootstrap, dtype=float) - vy_b = np.zeros(bootstrap, dtype=float) - y0_b = np.zeros(bootstrap, dtype=float) - - for bb in range(bootstrap): - bdx = np.random.choice(edx, N_good) - if weighting == 'var': - sigma_x_b = xe[bdx] - sigma_y_b = ye[bdx] - elif weighting == 'std': - sigma_x_b = xe[bdx]**0.5 - sigma_y_b = ye[bdx]**0.5 - - if use_scipy: - vx_opt_b, vx_cov_b = curve_fit(linear, dt[bdx], x[bdx], p0=vx_opt, sigma=sigma_x_b, - absolute_sigma=absolute_sigma) - vy_opt_b, vy_cov_b = curve_fit(linear, dt[bdx], y[bdx], p0=vy_opt, sigma=sigma_y_b, - absolute_sigma=absolute_sigma) - vx_b[bb] = vx_opt_b[0] - x0_b[bb] = vx_opt_b[1] - vy_b[bb] = vy_opt_b[0] - y0_b[bb] = vy_opt_b[1] - - else: - result_vx_b = linear_fit(dt[bdx], x[bdx], sigma=sigma_x_b, absolute_sigma=absolute_sigma) - result_vy_b = linear_fit(dt[bdx], y[bdx], sigma=sigma_y_b, absolute_sigma=absolute_sigma) - vx_b[bb] = result_vx_b['slope'] - x0_b[bb] = result_vx_b['intercept'] - vy_b[bb] = result_vy_b['slope'] - y0_b[bb] = result_vy_b['intercept'] - - # Save the errors from the bootstrap - self['vxe'][ss] = vx_b.std() - self['x0e'][ss] = x0_b.std() - self['vye'][ss] = vy_b.std() - self['y0e'][ss] = y0_b.std() + self['motion_model_used'][ss] = motion_model_use + +# # Get the motion model object. +# modClass = motion_model_dict[motion_model_use] +# +# # Load up any prior information on parameters for this model. +# param_dict = {} +# for par in modClass.fitter_param_names+modClass.fixed_param_names: +# if ~np.isnan(self[par][ss]): +# param_dict[par] = self[par][ss] + + # Model object + mod = motion_model_dict[motion_model_use] + fixed_params = [self[par][ss] for par in mod.fixed_param_names] + + # Fit for the best parameters + params, param_errs = mod.fit_motion_model(t, x, y, xe, ye, t0, bootstrap=bootstrap, + weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma) + chi2_x,chi2_y = mod.get_chi2(params,fixed_params, t,x,y,xe,ye) + self['chi2_x'][ss]=chi2_x + self['chi2_y'][ss]=chi2_y + self['n_params'][ss] = mod.n_params - else: - if use_scipy: - vxe, x0e = np.sqrt(vx_cov.diagonal()) - vye, y0e = np.sqrt(vy_cov.diagonal()) - else: - vxe = result_vx['e_slope'] - x0e = result_vx['e_intercept'] - vye = result_vy['e_slope'] - y0e = result_vy['e_intercept'] - - self['vxe'][ss] = vxe - self['x0e'][ss] = x0e - self['vye'][ss] = vye - self['y0e'][ss] = y0e - - elif N_good == 2: - # Not enough epochs to fit a velocity. - dx = np.diff(x)[0] - dy = np.diff(y)[0] - dt_diff = np.diff(dt)[0] - - if weighting == 'var': - sigma_x = 1./xe**2 - sigma_y = 1./ye**2 - elif weighting == 'std': - sigma_x = 1./np.abs(xe) - sigma_y = 1./np.abs(ye) - - self['x0'][ss] = np.average(x, weights=sigma_x) - self['y0'][ss] = np.average(y, weights=sigma_y) - self['x0e'][ss] = np.abs(dx) / 2**0.5 - self['y0e'][ss] = np.abs(dy) / 2**0.5 - self['vx'][ss] = dx / dt_diff - self['vy'][ss] = dy / dt_diff - self['vxe'][ss] = 0.0 - self['vye'][ss] = 0.0 - self['chi2_vx'][ss] = calc_chi2(dt, x, sigma_x, self['vx'][ss], self['x0'][ss]) - self['chi2_vy'][ss] = calc_chi2(dt, y, sigma_y, self['vy'][ss], self['y0'][ss]) + # Save parameters and errors to table. + for pp in range(len(mod.fitter_param_names)): + par = mod.fitter_param_names[pp] + par_err = par + '_err' + self[par][ss] = params[pp] + self[par_err][ss] = param_errs[pp] + return + + # New function, to use in align + def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True): + """ Get current x,y positions of each star according to its motion_model + """ + # Start with empty arrays so we can fill them in batches + N_stars = len(self) + if hasattr(t, "__len__"): + x = np.full((N_stars,len(t)), np.nan, dtype=float) + y = np.full((N_stars,len(t)), np.nan, dtype=float) + xe = np.full((N_stars,len(t)), np.nan, dtype=float) + ye = np.full((N_stars,len(t)), np.nan, dtype=float) else: - # N_good == 1 case - self['n_vfit'][ss] = 1 - self['x0'][ss] = x - self['y0'][ss] = y - - if 'xe' in self.colnames: - self['x0e'] = xe - self['y0e'] = ye + x = np.full(N_stars, np.nan, dtype=float) + y = np.full(N_stars, np.nan, dtype=float) + xe = np.full(N_stars, np.nan, dtype=float) + ye = np.full(N_stars, np.nan, dtype=float) + + # TODO: probably worth some additional testing here + # Check which motion models we need + # use complex_mms to collect models besides Fixed and Linear + unique_mms = np.unique(self['motion_model_input']).tolist() + # Calculate current position in batches by motion model + for mm in unique_mms: + try: + # Identify stars with this model & get class + idx = np.where(self['motion_model_input']==mm)[0] + mod = motion_model_dict[mm] + # Set up parameters + param_dict = {} + for par in mod.fitter_param_names + mod.fixed_param_names + [pm+'_err' for pm in mod.fitter_param_names]: + param_dict[par] = self[par][idx] + x[idx],y[idx],xe[idx],ye[idx] = mod.get_batch_pos_at_time(t,**param_dict) + except: + pass + if np.isnan(x).any() and allow_alt_models: + re_calc = np.where(np.isnan(x))[0] + unique_mms = np.unique(self['motion_model_used'][re_calc]).tolist() + # Calculate current position in batches by motion model + for mm in unique_mms: + # Identify stars with this model & get class + idx_0 = np.where(self['motion_model_used']==mm)[0] + idx = np.intersect1d(re_calc, idx_0) + mod = motion_model_dict[mm] + # Set up parameters + param_dict = {} + for par in motion_model.get_one_motion_model_param_names(mm,with_errors=True,with_fixed=True): + param_dict[par] = self[par][idx] + x[idx],y[idx],xe[idx],ye[idx] = mod.get_batch_pos_at_time(t,**param_dict) + + return x,y,xe,ye + - return - - - def fit_velocities_all_detected(self, weighting='var', use_scipy=False, absolute_sigma=False, epoch_cols='all', mask_val=None, art_star=False, return_result=False): + def fit_velocities_all_detected(self, motion_model_to_fit, weighting='var', use_scipy=True, absolute_sigma=True, times=None, + select_stars=None, epoch_cols='all', mask_val=None, art_star=False, return_result=False): """Fit velocities for stars detected in all epochs specified by epoch_cols. Criterion: xe/ye error > 0 and finite, x/y not masked. Parameters ---------- + motion_model_to_fit : MotionModel + Motion model object to use for fitting all stars weighting : str, optional Variance weighting('var') or standard deviation weighting ('std'), by default 'var' - use_scipy : bool, optional - Use scipy.curve_fit or flystar.fit_velocity.fit_velocity, by default False - absolute_sigma : bool, optional - Absolute sigma or rescaled sigma, by default False + select_idx : array-like, optional + Indices of stars to select for fitting, by default None (fit all detected stars) epoch_cols : str or list of intergers, optional List of epoch column indices used for fitting velocity, by default 'all' mask_val : float, optional @@ -970,61 +945,182 @@ def fit_velocities_all_detected(self, weighting='var', use_scipy=False, absolute """ N_stars = len(self) - + if select_stars is None: + select_stars = np.arange(N_stars) + else: + select_stars = np.asarray(select_stars) + if epoch_cols == 'all': epoch_cols = np.arange(np.shape(self['x'])[1]) - + # Artificial Star if art_star: - detected_in_all_epochs = np.all(self['det'][:, epoch_cols], axis=1) - + detected_in_all_epochs = np.all(self['det'][select_stars, :][:, epoch_cols], axis=1) + # Observation Star else: - valid_xe = np.all(self['xe'][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['xe'][:, epoch_cols]), axis=1) - valid_ye = np.all(self['ye'][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['ye'][:, epoch_cols]), axis=1) - + valid_xe = np.all(self['xe'][select_stars, :][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['xe'][select_stars, :][:, epoch_cols]), axis=1) + valid_ye = np.all(self['ye'][select_stars, :][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['ye'][select_stars, :][:, epoch_cols]), axis=1) + if mask_val: - x = np.ma.masked_values(self['x'][:, epoch_cols], mask_val) - y = np.ma.masked_values(self['y'][:, epoch_cols], mask_val) - + x = np.ma.masked_values(self['x'][select_stars, :][:, epoch_cols], mask_val) + y = np.ma.masked_values(self['y'][select_stars, :][:, epoch_cols], mask_val) + # If no mask, convert x.mask to list if not np.ma.is_masked(x): - x.mask = np.zeros_like(self['x'][:, epoch_cols].data, dtype=bool) + x.mask = np.zeros_like(self['x'][select_stars, :][:, epoch_cols].data, dtype=bool) if not np.ma.is_masked(y): - y.mask = np.zeros_like(self['y'][:, epoch_cols].data, dtype=bool) - + y.mask = np.zeros_like(self['y'][select_stars, :][:, epoch_cols].data, dtype=bool) + valid_x = ~np.any(x.mask, axis=1) valid_y = ~np.any(y.mask, axis=1) detected_in_all_epochs = np.logical_and.reduce(( - valid_x, valid_y, valid_xe, valid_ye - )) + valid_x, valid_y, valid_xe, valid_ye)) else: detected_in_all_epochs = np.logical_and(valid_xe, valid_ye) + + N = len(self['x'][select_stars, :]) + fit_params = motion_model_to_fit.fitter_param_names + param_data = {p: np.zeros(N) for p in fit_params} + param_data.update({p+'_err': np.zeros(N) for p in fit_params}) + param_data.update({p: np.zeros(N) for p in motion_model_to_fit.fixed_param_names}) + param_data['chi2_x'] = np.zeros(N) + param_data['chi2_y'] = np.zeros(N) + + if times is None: + if 'YEARS' in self.meta: + times = np.array(self.meta['YEARS'])[epoch_cols] + elif 't' in self.colnames: + times = self['t'][0, epoch_cols] + else: + raise ValueError("No valid time column found.") + if not art_star: + x_arr = self['x'][select_stars, :][:, epoch_cols] + y_arr = self['y'][select_stars, :][:, epoch_cols] + else: + x_arr = self['x'][select_stars, :][:, epoch_cols, 1] + y_arr = self['y'][select_stars, :][:, epoch_cols, 1] + + xe_arr = self['xe'][select_stars, :][:, epoch_cols] + ye_arr = self['ye'][select_stars, :][:, epoch_cols] - # Fit velocities - vel_result = fit_velocity(self[detected_in_all_epochs], weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, epoch_cols=epoch_cols, art_star=art_star) - vel_result = Table.from_pandas(vel_result) - - + # Only fit for >1 epochs, otherwise all velocities will be 0 + if len(epoch_cols) > 1: + # For each star + for i in tqdm(range(N)): + x = x_arr[i] + y = y_arr[i] + xe = xe_arr[i] + ye = ye_arr[i] + t0 = np.average(times, weights=1. / np.hypot(xe, ye)) + + # Run fit and record results + params, param_errs = motion_model_to_fit.fit_motion_model( + times, x, y, xe, ye, t0, weighting=weighting, + use_scipy=use_scipy, absolute_sigma=absolute_sigma + ) + if 't0' in motion_model_to_fit.fixed_param_names: + param_data['t0'][i] = t0 + for j, param in enumerate(fit_params): + param_data[param][i] = params[j] + param_data[f'{param}_err'][i] = param_errs[j] + chi2x, chi2y = motion_model_to_fit.get_chi2(params, [t0], times, x, y, xe, ye) + param_data['chi2_x'][i] = chi2x + param_data['chi2_y'][i] = chi2y + + vel_result = Table.from_pandas(pd.DataFrame(param_data)) + # Add n_vfit - n_vfit = len(epoch_cols) - vel_result['n_vfit'] = n_vfit - + n_fit = len(epoch_cols) + vel_result['n_fit'] = n_fit + # Clean/remove up old arrays. - columns = [*vel_result.keys(), 'n_vfit'] + columns = [*vel_result.keys(), 'n_fit'] for column in columns: if column in self.colnames: self.remove_column(column) - + # Update self for column in columns: - column_array = np.ma.zeros(N_stars) - column_array[detected_in_all_epochs] = vel_result[column] - column_array[~detected_in_all_epochs] = np.nan - column_array.mask = ~detected_in_all_epochs + column_array = MaskedColumn(np.ma.zeros(N_stars), dtype=float, name=column) + column_array[select_stars] = vel_result[column] + column_array[select_stars][~detected_in_all_epochs] = np.nan + column_array.mask[select_stars] = ~detected_in_all_epochs + # Mask unselected indices + column_array.mask[~np.isin(np.arange(N_stars), select_stars)] = True self[column] = column_array - + if return_result: return vel_result else: - return \ No newline at end of file + return + + def shift_reference_frame(self, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, + motion_model_dict={}): + """ + After completing an alignment, shift from your relative reference frame to + the absolute frame using either Gaia or a Galactic model. This modified the + motion model fit parameters as well as the time series astrometry, assuming + zero error on the shift values. + + Parameters + ---------- + delta_vx : float, optional + velocity shift in x-direction (as/yr) + delta_vy : float, optional + velocity shift in y-direction (as/yr) + delta_pi : float, optional + parallax shift (as) + """ + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, self, None) + if delta_vx==0.0 and delta_vy==0.0 and delta_pi==0.0: + print("No shifts input, reference frame unchanged.") + print("Specify delta_vx, delta_vy, and/or delta_pi to perform a reference frame shift.") + return + self['vx'] += delta_vx + self['x'] += delta_vx*(self['t']-self['t0'][:, np.newaxis]) + self['vy'] += delta_vy + self['y'] += delta_vy*(self['t']-self['t0'][:, np.newaxis]) + if delta_pi!=0.0: + t_all = self['t'][np.where(~np.any(np.isnan(self['t']), axis=1))[0][0]] + t_mjd = Time(t_all, format='decimalyear', scale='utc').mjd + pvec = motion_model_dict['Parallax'].get_parallax_vector(t_mjd) + self['pi'] += delta_pi + self['x'] += delta_pi*pvec[0] + self['y'] += delta_pi*pvec[1] + return + +def shift_reference_frame(table, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, + motion_model_dict={}): + """ + After completing an alignment, shift from your relative reference frame to + the absolute frame using either Gaia or a Galactic model. This modified the + motion model fit parameters as well as the time series astrometry, assuming + zero error on the shift values. + + Parameters + ---------- + delta_vx : float, optional + velocity shift in x-direction (as/yr) + delta_vy : float, optional + velocity shift in y-direction (as/yr) + delta_pi : float, optional + parallax shift (as) + """ + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, table, None) + if delta_vx==0.0 and delta_vy==0.0 and delta_pi==0.0: + print("No shifts input, reference frame unchanged.") + print("Specify delta_vx, delta_vy, and/or delta_pi to perform a reference frame shift.") + return + table['vx'] += delta_vx + table['x'] += delta_vx*(table['t']-table['t0'][:, np.newaxis]) + table['vy'] += delta_vy + table['y'] += delta_vy*(table['t']-table['t0'][:, np.newaxis]) + if delta_pi!=0.0: + t_all = table['t'][np.where(~np.any(np.isnan(table['t']), axis=1))[0][0]] + t_mjd = Time(t_all, format='decimalyear', scale='utc').mjd + pvec = motion_model_dict['Parallax'].get_parallax_vector(t_mjd) + table['pi'] += delta_pi + table['x'] += delta_pi*pvec[0] + table['y'] += delta_pi*pvec[1] + return table diff --git a/flystar/tests/ref_vel.lis b/flystar/tests/ref_vel.lis index 4d223b0..fc191bb 100644 --- a/flystar/tests/ref_vel.lis +++ b/flystar/tests/ref_vel.lis @@ -1,4 +1,4 @@ -name x y m xe ye me t0 vx vy vxe vye +name x y m xe ye me t0 vx vy vx_err vy_err gaia_1150 -63.98457260029581 -30.67278228118061 13.628200000000001 0.00014609621924194742 0.00014585407086906515 0.0115 2010.5 0.0 0.0 0.1 0.1 gaia_1162 0.47637231898572985 -79.79611824529178 14.6439 0.00011419811781207949 0.00011415029792639667 0.0084 2010.5 0.0 0.0 0.1 0.1 gaia_1166 8.546170748636236 -47.35893234401765 14.696900000000001 0.00013283068515276605 0.00013260913293195234 0.0041 2010.5 0.0 0.0 0.1 0.1 diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 026a8b1..2d6b0dc 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -3,12 +3,13 @@ from flystar import startables from flystar import transforms from flystar import analysis +from flystar import motion_model from astropy.table import Table import numpy as np import pylab as plt import pdb import datetime - +import pytest def test_MosaicSelfRef(): """ @@ -30,11 +31,11 @@ def test_MosaicSelfRef(): # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames - assert 'x0e' in msc.ref_table.colnames + assert 'x0_err' in msc.ref_table.colnames assert 'y0' in msc.ref_table.colnames - assert 'y0e' in msc.ref_table.colnames + assert 'y0_err' in msc.ref_table.colnames assert 'm0' in msc.ref_table.colnames - assert 'm0e' in msc.ref_table.colnames + assert 'm0_err' in msc.ref_table.colnames assert 'use_in_trans' in msc.ref_table.colnames assert 'used_in_trans' in msc.ref_table.colnames assert 'ref_orig' in msc.ref_table.colnames @@ -46,41 +47,41 @@ def test_MosaicSelfRef(): # Check that we have some matched stars... should be at least 35 stars # that are detected in all 4 starlists. idx = np.where(msc.ref_table['n_detect'] == 4)[0] - assert len(idx) > 35 + assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0e'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0e'] < 3.0).all() - #assert (msc.ref_table['m0e'] < 1.0).all() # less than 0.5 mag - assert (msc.ref_table['m0e'] < 1.5).all() # less than 0.5 mag + assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'] < 3.0).all() + #assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag + assert (msc.ref_table['m0_err'] < 1.5).all() # less than 0.5 mag # Check that the transformation lists aren't too wacky for ii in range(4): - np.testing.assert_almost_equal(msc.trans_list[ii].px.c1_0, 1.0, 2) - np.testing.assert_almost_equal(msc.trans_list[ii].py.c0_1, 1.0, 2) - + np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) + np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) # We didn't do any velocity fitting, so make sure nothing got created. assert 'vx' not in msc.ref_table.colnames assert 'vy' not in msc.ref_table.colnames - assert 'vxe' not in msc.ref_table.colnames - assert 'vye' not in msc.ref_table.colnames + assert 'vx_err' not in msc.ref_table.colnames + assert 'vy_err' not in msc.ref_table.colnames plt.clf() plt.plot(msc.ref_table['x'][:, 0], msc.ref_table['y'][:, 0], - 'k+', color='red', mec='red', mfc='none') + '+', color='red', mec='red', mfc='none') plt.plot(msc.ref_table['x'][:, 1], msc.ref_table['y'][:, 1], - 'kx', color='blue', mec='blue', mfc='none') + 'x', color='blue', mec='blue', mfc='none') plt.plot(msc.ref_table['x'][:, 2], msc.ref_table['y'][:, 2], - 'ko', color='cyan', mec='cyan', mfc='none') + 'o', color='cyan', mec='cyan', mfc='none') plt.plot(msc.ref_table['x'][:, 3], msc.ref_table['y'][:, 3], - 'k^', color='green', mec='green', mfc='none') + '^', color='green', mec='green', mfc='none') plt.plot(msc.ref_table['x0'], msc.ref_table['y0'], - 'k.', color='black', alpha=0.2) + '.', color='black', alpha=0.2) + return @@ -100,22 +101,23 @@ def test_MosaicSelfRef_vel_tconst(): msc = align.MosaicSelfRef(lists, ref_index=0, iters=2, dr_tol=[3, 3], dm_tol=[1, 1], trans_class=transforms.PolyTransform, - trans_args={'order': 2}, use_vel=True, + trans_args={'order': 2}, + default_motion_model='Linear', verbose=False) msc.fit() # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames - assert 'x0e' in msc.ref_table.colnames + assert 'x0_err' in msc.ref_table.colnames assert 'y0' in msc.ref_table.colnames - assert 'y0e' in msc.ref_table.colnames + assert 'y0_err' in msc.ref_table.colnames assert 'm0' in msc.ref_table.colnames - assert 'm0e' in msc.ref_table.colnames + assert 'm0_err' in msc.ref_table.colnames assert 'vx' in msc.ref_table.colnames - assert 'vxe' in msc.ref_table.colnames + assert 'vx_err' in msc.ref_table.colnames assert 'vy' in msc.ref_table.colnames - assert 'vye' in msc.ref_table.colnames + assert 'vy_err' in msc.ref_table.colnames assert 't0' in msc.ref_table.colnames # Check that we have some matched stars... should be at least 35 stars @@ -124,24 +126,21 @@ def test_MosaicSelfRef_vel_tconst(): assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0e'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0e'] < 3.0).all() - assert (msc.ref_table['m0e'] < 1.0).all() # less than 0.5 mag + assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'] < 3.0).all() + assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag # Check that the transformation lists aren't too wacky for ii in range(4): - np.testing.assert_almost_equal(msc.trans_list[ii].px.c1_0, 1.0, 2) - np.testing.assert_almost_equal(msc.trans_list[ii].py.c0_1, 1.0, 2) + np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) + np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) # Check that the velocities aren't crazy... - # they should be zero (since there is no time difference) - np.testing.assert_almost_equal(msc.ref_table['vx'], 0, 1) - np.testing.assert_almost_equal(msc.ref_table['vy'], 0, 1) - - assert (msc.ref_table['vx'] == 0).all() - assert (msc.ref_table['vy'] == 0).all() - assert (msc.ref_table['vxe'] == 0).all() - assert (msc.ref_table['vye'] == 0).all() + # they should be non-existent (since there is no time difference) + assert np.isnan(msc.ref_table['vx']).all() + assert np.isnan(msc.ref_table['vy']).all() + assert np.isnan(msc.ref_table['vx_err']).all() + assert np.isnan(msc.ref_table['vy_err']).all() return @@ -173,39 +172,38 @@ def test_MosaicSelfRef_vel(): msc = align.MosaicSelfRef(lists, ref_index=0, iters=3, dr_tol=[5, 3, 3], dm_tol=[1, 1, 0.5], outlier_tol=None, trans_class=transforms.PolyTransform, - trans_args={'order': 2}, use_vel=True, + trans_args={'order': 2}, default_motion_model='Linear', verbose=False) msc.fit() # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames - assert 'x0e' in msc.ref_table.colnames + assert 'x0_err' in msc.ref_table.colnames assert 'y0' in msc.ref_table.colnames - assert 'y0e' in msc.ref_table.colnames + assert 'y0_err' in msc.ref_table.colnames assert 'm0' in msc.ref_table.colnames - assert 'm0e' in msc.ref_table.colnames + assert 'm0_err' in msc.ref_table.colnames assert 'vx' in msc.ref_table.colnames - assert 'vxe' in msc.ref_table.colnames + assert 'vx_err' in msc.ref_table.colnames assert 'vy' in msc.ref_table.colnames - assert 'vye' in msc.ref_table.colnames + assert 'vy_err' in msc.ref_table.colnames assert 't0' in msc.ref_table.colnames # Check that we have some matched stars... should be at least 35 stars # that are detected in all 4 starlists. idx = np.where(msc.ref_table['n_detect'] == 4)[0] - assert len(idx) > 35 + assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0e'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0e'] < 3.0).all() - assert (msc.ref_table['m0e'] < 1.0).all() # less than 0.5 mag + assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'] < 3.0).all() + assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag # Check that the transformation lists aren't too wacky for ii in range(4): - np.testing.assert_almost_equal(msc.trans_list[ii].px.c1_0, 1.0, 2) - np.testing.assert_almost_equal(msc.trans_list[ii].py.c0_1, 1.0, 2) - + np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) + np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) plt.clf() plt.plot(msc.ref_table['vx'], @@ -215,6 +213,129 @@ def test_MosaicSelfRef_vel(): return def test_MosaicToRef(): + make_fake_starlists_poly1(seed=42) + + ref_file = 'random_ref.fits' + list_files = ['random_0.fits', + 'random_1.fits', + 'random_2.fits', + 'random_3.fits', + 'random_4.fits', + 'random_5.fits', + 'random_6.fits', + 'random_7.fits'] + + ref_list = Table.read(ref_file) + + # Switch our list to a "increasing to the West" list. + ref_list['x0'] *= -1.0 + + lists = [starlists.StarList.read(lf) for lf in list_files] + + msc = align.MosaicToRef(ref_list, lists, iters=2, + dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], + trans_class=transforms.PolyTransform, + trans_args={'order': 2}, default_motion_model='Fixed', + update_ref_orig=False, verbose=False) + + msc.fit() + + # Check our status columns + assert 'use_in_trans' in msc.ref_table.colnames + assert 'used_in_trans' in msc.ref_table.colnames + assert 'ref_orig' in msc.ref_table.colnames + assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape + assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape + + # The velocities should be almost the same as the input + # velocities since update_ref_orig == False. + np.testing.assert_allclose(msc.ref_table['x0'], ref_list['x0'], rtol=1e-5) + np.testing.assert_allclose(msc.ref_table['y0'], ref_list['y0'], rtol=1e-5) + + ########## + # Align and let velocities be free. + ########## + msc.update_ref_orig = 'periter' + msc.fit() + + # The velocities should be almost the same (but not as close as before) + # as the input velocities since update_ref == False. + np.testing.assert_allclose(msc.ref_table['x0'], ref_list['x0'], rtol=1e-1) + np.testing.assert_allclose(msc.ref_table['y0'], ref_list['y0'], rtol=1e-1) + + # Also double check that they aren't exactly the same for the reference stars. + assert np.not_equal(msc.ref_table['x0'], ref_list['x0']).all() + assert np.not_equal(msc.ref_table['y0'], ref_list['y0']).all() + + return msc + +def test_MosaicToRef_p0_vel(): + make_fake_starlists_poly0_vel(seed=42) + + ref_file = 'random_vel_ref.fits' + list_files = ['random_vel_p0_0.fits', + 'random_vel_p0_1.fits', + 'random_vel_p0_2.fits', + 'random_vel_p0_3.fits'] + #'random_vel_4.fits', + #'random_vel_5.fits', + #'random_vel_6.fits', + #'random_vel_7.fits'] + + ref_list = Table.read(ref_file) + + # Convert velocities to arcsec/yr + ref_list['vx'] *= 1e-3 + ref_list['vy'] *= 1e-3 + ref_list['vx_err'] *= 1e-3 + ref_list['vy_err'] *= 1e-3 + + # Switch our list to a "increasing to the West" list. + ref_list['x0'] *= -1.0 + ref_list['vx'] *= -1.0 + + lists = [starlists.StarList.read(lf) for lf in list_files] + + msc = align.MosaicToRef(ref_list, lists, iters=2, + dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], + outlier_tol=[None, None], + trans_class=transforms.PolyTransform, + trans_args={'order': 1}, default_motion_model='Linear', + update_ref_orig=False, verbose=False) + msc.fit() + + # Check our status columns + assert 'use_in_trans' in msc.ref_table.colnames + assert 'used_in_trans' in msc.ref_table.colnames + assert 'ref_orig' in msc.ref_table.colnames + assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape + assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape + + # The velocities should be almost the same as the input + # velocities since update_ref_orig == False. + assert (msc.ref_table['name']==ref_list['name']).all() + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-5) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-5) + + ########## + # Align and let velocities be free. + ########## + msc.update_ref_orig = 'periter' + msc.fit() + + # The velocities should be almost the same (but not as close as before) + # as the input velocities since update_ref == True. + assert (msc.ref_table['name']==ref_list['name']).all() + assert np.max(np.abs(msc.ref_table['vx']-ref_list['vx']))<3e-4 + assert np.max(np.abs(msc.ref_table['vy']-ref_list['vy']))<3e-4 + + # Also double check that they aren't exactly the same for the reference stars. + #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) + assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() + + return msc + +def test_MosaicToRef_vel(): make_fake_starlists_poly1_vel(seed=42) ref_file = 'random_vel_ref.fits' @@ -222,14 +343,18 @@ def test_MosaicToRef(): 'random_vel_1.fits', 'random_vel_2.fits', 'random_vel_3.fits'] + #'random_vel_4.fits', + #'random_vel_5.fits', + #'random_vel_6.fits', + #'random_vel_7.fits'] ref_list = Table.read(ref_file) # Convert velocities to arcsec/yr ref_list['vx'] *= 1e-3 ref_list['vy'] *= 1e-3 - ref_list['vxe'] *= 1e-3 - ref_list['vye'] *= 1e-3 + ref_list['vx_err'] *= 1e-3 + ref_list['vy_err'] *= 1e-3 # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 @@ -239,10 +364,10 @@ def test_MosaicToRef(): msc = align.MosaicToRef(ref_list, lists, iters=2, dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], + outlier_tol=[None, None], trans_class=transforms.PolyTransform, - trans_args={'order': 2}, use_vel=True, + trans_args={'order': 1}, default_motion_model='Linear', update_ref_orig=False, verbose=False) - msc.fit() # Check our status columns @@ -254,26 +379,111 @@ def test_MosaicToRef(): # The velocities should be almost the same as the input # velocities since update_ref_orig == False. - np.testing.assert_almost_equal(msc.ref_table['vx'], ref_list['vx'], 5) - np.testing.assert_almost_equal(msc.ref_table['vy'], ref_list['vy'], 5) + assert (msc.ref_table['name']==ref_list['name']).all() + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-5) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-5) + + ########## + # Align and let velocities be free. + ########## + msc.update_ref_orig = 'periter' + msc.fit() + + # The velocities should be almost the same (but not as close as before) + # as the input velocities since update_ref == True. + assert (msc.ref_table['name']==ref_list['name']).all() + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-1, atol=3e-4) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-1, atol=3e-4) + + # Also double check that they aren't exactly the same for the reference stars. + #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) + assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() + + return msc + +def test_MosaicToRef_acc(): + make_fake_starlists_poly1_acc(seed=42) + + ref_file = 'random_acc_ref.fits' + list_files = ['random_acc_0.fits', + 'random_acc_1.fits', + 'random_acc_2.fits', + 'random_acc_3.fits', + 'random_acc_4.fits', + 'random_acc_5.fits', + 'random_acc_6.fits', + 'random_acc_7.fits'] + + ref_list = Table.read(ref_file) + + # Convert velocities to arcsec/yr + ref_list['vx0'] *= 1e-3 + ref_list['vy0'] *= 1e-3 + ref_list['vx0_err'] *= 1e-3 + ref_list['vy0_err'] *= 1e-3 + + # Convert accelerations to arcsec/yr**2 + ref_list['ax'] *= 1e-3 + ref_list['ay'] *= 1e-3 + ref_list['ax_err'] *= 1e-3 + ref_list['ay_err'] *= 1e-3 + + # Switch our list to a "increasing to the West" list. + ref_list['x0'] *= -1.0 + ref_list['vx0'] *= -1.0 + ref_list['ax'] *= -1.0 + + lists = [starlists.StarList.read(lf) for lf in list_files] + + msc = align.MosaicToRef(ref_list, lists, iters=2, + dr_tol=[0.4, 0.2], dm_tol=[1, 0.5], + trans_class=transforms.PolyTransform, + trans_args={'order': 2}, + default_motion_model='Acceleration', + update_ref_orig=False, verbose=False) + + msc.fit() + + # Check our status columns + assert 'use_in_trans' in msc.ref_table.colnames + assert 'used_in_trans' in msc.ref_table.colnames + assert 'ref_orig' in msc.ref_table.colnames + assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape + assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape + # The velocities should be almost the same as the input + # velocities since update_ref_orig == False. + i_orig, i_fit = [],[] + for i,star in enumerate(ref_list["name"]): + if star in msc.ref_table["name"]: + i_fit.append(np.where(msc.ref_table["name"]==star)[0][0]) + i_orig.append(i) + np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], rtol=1e-5) + np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], rtol=1e-5) ########## # Align and let velocities be free. ########## - msc.update_ref_orig = True + msc.update_ref_orig = 'periter' msc.fit() # The velocities should be almost the same (but not as close as before) # as the input velocities since update_ref == False. - np.testing.assert_almost_equal(msc.ref_table['vx'], ref_list['vx'], 1) - np.testing.assert_almost_equal(msc.ref_table['vy'], ref_list['vy'], 1) + i_orig, i_fit = [],[] + for i,star in enumerate(ref_list["name"]): + if star in msc.ref_table["name"]: + ix_fit = np.where(msc.ref_table["name"]==star)[0][0] + if ~np.isnan(msc.ref_table['ax'][ix_fit]): + i_orig.append(i) + i_fit.append(ix_fit) + np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], rtol=1e-1, atol=3e-4) + np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], rtol=1e-1, atol=3e-4) # Also double check that they aren't exactly the same for the reference stars. - assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) + assert np.any(np.not_equal(msc.ref_table['ax'][:200], ref_list['ax'][:200])) return msc - + def make_fake_starlists_shifts(): N_stars = 200 @@ -328,51 +538,178 @@ def make_fake_starlists_poly1(seed=-1): np.random.seed(seed=seed) N_stars = 200 - x = np.random.rand(N_stars) * 1000 - y = np.random.rand(N_stars) * 1000 - m = (np.random.rand(N_stars) * 8) + 9 - - sdx = np.argsort(m) - x = x[sdx] - y = y[sdx] - m = m[sdx] + + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 + + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - # Save original positions as reference (1st) list. - fmt = '{0:10s} {1:5.2f} 2015.0 {2:9.4f} {3:9.4f} 0 0 0 0\n' - _out = open('random_0.lis', 'w') - for ii in range(N_stars): - _out.write(fmt.format(name[ii], m[ii], x[ii], y[ii])) - _out.close() + # Make an StarList + lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, t0], + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_ref.fits', overwrite=True) ########## # Shifts ########## # Make 4 new starlists with different shifts. - transforms = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], - [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[-30.0, 1.00, 1e-5], [-100.7, 2e-5, 0.999]], - [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix - for ss in range(len(shifts)): - #transforms.PolyTransform2D(1, transforms[ss]) - xnew = x - shifts[ss][0] - ynew = y - shifts[ss][1] + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + y = lis['y0'] + t = np.ones(N_stars) * times[ss] + + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale + + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) # Perturb with small errors (0.1 pix) - xnew += np.random.randn(N_stars) * 0.1 - ynew += np.random.randn(N_stars) * 0.1 + xd += np.random.randn(N_stars) * 0.1 + yd += np.random.randn(N_stars) * 0.1 + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] - mnew = m + np.random.randn(N_stars) * 0.05 + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - _out = open('random_shift_{0:d}.lis'.format(ss+1), 'w') - for ii in range(N_stars): - _out.write(fmt.format(name[ii], mnew[ii], xnew[ii], ynew[ii])) - _out.close() + new_lis.write('random_{0:d}.fits'.format(ss), overwrite=True) - return shifts + return (xy_trans,mag_trans) + +def make_fake_starlists_poly0_vel(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 + + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.ones(N_stars) * 0.05 # mas / yr + vye = np.ones(N_stars) * 0.05 # mas / yr + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 + + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + + # Make an StarList + lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] + + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_vel_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5], [ 10.1]], + [[100.3], [ 50.5]], + [[ 0.0], [ 0.0]], + [[250.0], [-250.0]], + [[ 50.0], [ -31.0]], + [[ 78.0], [ 45.0]], + [[-13.0], [ 150]], + [[ 94.0], [-182.0]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + (lis['vx']/1e3) * dt + y = lis['y0'] + (lis['vy']/1e3) * dt + t = np.ones(N_stars) * times[ss] + + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale + + # Distort the positions + trans = transforms.PolyTransform(0, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) + + # Perturb with small errors (0.1 pix) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] + + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + + new_lis.write('random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) + + return (xy_trans, mag_trans) def make_fake_starlists_poly1_vel(seed=-1): @@ -384,12 +721,12 @@ def make_fake_starlists_poly1_vel(seed=-1): x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) y0 = np.random.rand(N_stars) * 10.0 # arcsec - x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec - y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec vx = np.random.randn(N_stars) * 5.0 # mas / yr vy = np.random.randn(N_stars) * 5.0 # mas / yr - vxe = np.random.randn(N_stars) * 0.1 # mas / yr - vye = np.random.randn(N_stars) * 0.1 # mas / yr + vxe = np.ones(N_stars) * 0.05 # mas / yr + vye = np.ones(N_stars) * 0.05 # mas / yr m0 = (np.random.rand(N_stars) * 8) + 9 # mag m0e = np.random.randn(N_stars) * 0.05 # mag t0 = np.ones(N_stars) * 2019.5 @@ -405,8 +742,8 @@ def make_fake_starlists_poly1_vel(seed=-1): # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], - names = ('name', 'm0', 'm0e', 'x0', 'x0e', 'y0', 'y0e', - 'vx', 'vxe', 'vy', 'vye', 't0')) + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', 't0')) sdx = np.argsort(m0) lis = lis[sdx] @@ -419,12 +756,16 @@ def make_fake_starlists_poly1_vel(seed=-1): # Propogate to new times and distort. ########## # Make 4 new starlists with different epochs and transformations. - times = [2018.5, 2019.5, 2020.5, 2021.5] + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], - [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] - mag_trans = [0.1, 0.4, 0.0, -0.3] + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], + [[250.0, 1.01, 2e-5], [-250.0, 1e-5, 0.98]], + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix @@ -440,8 +781,226 @@ def make_fake_starlists_poly1_vel(seed=-1): # Convert into pixels xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) yp = (y / scale) + shift[1] - xpe = lis['x0e'] / scale - ype = lis['y0e'] / scale + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale + + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) + + # Perturb with small errors (0.1 mas) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] + + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + + new_lis.write('random_vel_{0:d}.fits'.format(ss), overwrite=True) + + return (xy_trans, mag_trans) + +def make_fake_starlists_poly1_acc(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 + + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.ones(N_stars) * 0.1 # mas / yr + vye = np.ones(N_stars) * 0.1 # mas / yr + ax = np.random.randn(N_stars) * 0.5 # mas / yr^2 + ay = np.random.randn(N_stars) * 0.5 # mas / yr^2 + axe = np.ones(N_stars) * 0.01 # mas / yr^2 + aye = np.ones(N_stars) * 0.01 # mas / yr^2 + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 + + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + axe = np.abs(axe) + aye = np.abs(aye) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + + # Make an StarList + lis = starlists.StarList([name, m0, m0e, + x0, x0e, y0, y0e, + vx, vxe, vy, vye, + ax, axe, ay, aye, + t0], + names = ('name', 'm0', 'm0_err', + 'x0', 'x0_err', 'y0', 'y0_err', + 'vx0', 'vx0_err', 'vy0', 'vy0_err', + 'ax', 'ax_err', 'ay', 'ay_err', + 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] + + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_acc_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + (lis['vx0']/1e3) * dt + 0.5*(lis['ax']/1e3) * dt**2 + y = lis['y0'] + (lis['vy0']/1e3) * dt + 0.5*(lis['ay']/1e3) * dt**2 + t = np.ones(N_stars) * times[ss] + + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale + + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) + + # Perturb with small errors (0.1 pix) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] + + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + + new_lis.write('random_acc_{0:d}.fits'.format(ss), overwrite=True) + + return (xy_trans, mag_trans) + +def make_fake_starlists_poly1_par(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 + + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.random.randn(N_stars) * 0.1 # mas / yr + vye = np.random.randn(N_stars) * 0.1 # mas / yr + pi = np.random.randn(N_stars) * 0.5 # mas + pie = np.random.randn(N_stars) * 0.01 # mas + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 + + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + pie = np.abs(pie) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + + # Make an StarList + lis = starlists.StarList([name, m0, m0e, + x0, x0e, y0, y0e, + vx, vxe, vy, vye, + pi, pie, + t0], + names = ('name', 'm0', 'm0_err', + 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', + 'pi', 'pi_err', + 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] + + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_par_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + '''times = [2018.5, 2019.5, 2020.5, 2021.5] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] + mag_trans = [0.1, 0.4, 0.0, -0.3]''' + + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], + [[ 50.0, 1.00, 0.0], [ -31.0, 0.0, 1.000]], + [[ 78.0, 1.00, 0.0 ], [ 45.0, 0.0, 1.00]], + [[-13.0, 1.00, 0.0], [ 150, 0.0, 1.00]], + [[ 94.0, 1.00, 0.0], [-182.0, 0.0, 1.00]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.0, 0.0, 0.0, 0.0] + + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + par_mod = motion_model.Parallax(PA=0,RA=18.0, Dec=-30.0) + par_mod_dat = par_mod.get_batch_pos_at_time(dt+lis['t0'], x0=lis['x0'],vx=lis['vx']/1e3, pi=lis['pi'], + y0=lis['y0'], vy=lis['vy']/1e3, t0=lis['t0']) + x,y = par_mod_dat[0], par_mod_dat[1] + t = np.ones(N_stars) * times[ss] + + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale # Distort the positions trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) @@ -454,15 +1013,16 @@ def make_fake_starlists_poly1_vel(seed=-1): md += np.random.randn(N_stars) * 0.02 xde = xpe yde = ype - mde = lis['m0e'] + mde = lis['m0_err'] # Save the new list as a starlist. new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_vel_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('random_par_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) + def test_MosaicToRef_hst_me(): """ @@ -509,11 +1069,11 @@ def test_MosaicToRef_hst_me(): outlier_tol=[None], mag_lim=[13, 21], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], - use_vel=False, + default_motion_model='Fixed', use_ref_new=False, update_ref_orig=False, mag_trans=False, - weights='both,std', + trans_weights='both,std', init_guess_mode='miracle', verbose=False) msc.fit() tab = msc.ref_table @@ -546,7 +1106,7 @@ def test_bootstrap(): outlier_tol = None mag_lim = None ref_mag_lim = None - weights = 'both,var' + trans_weights = 'both,var' mag_trans = False n_boot = 15 @@ -560,8 +1120,8 @@ def test_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - weights=weights, - use_vel=True, + trans_weights=trans_weights, + default_motion_model='Linear', use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -576,12 +1136,12 @@ def test_bootstrap(): # Run bootstrap: no boot_epochs_min match1.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min) - # Make sure columns exist, and none of them are nan values assert np.sum(np.isnan(match1.ref_table['xe_boot'])) == 0 assert np.sum(np.isnan(match1.ref_table['ye_boot'])) == 0 - assert np.sum(np.isnan(match1.ref_table['vxe_boot'])) == 0 - assert np.sum(np.isnan(match1.ref_table['vye_boot'])) == 0 + assert np.sum(np.isnan(match1.ref_table['vx_err_boot'])) == 0 + assert np.sum(np.isnan(match1.ref_table['vy_err_boot'])) == 0 + #pdb.set_trace() # Test 2: make sure boot_epochs_min is working # Eliminate some rows to list2, so some stars are only in 1 epoch. @@ -595,8 +1155,8 @@ def test_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - weights=weights, - use_vel=True, + trans_weights=trans_weights, + default_motion_model='Linear', use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -620,14 +1180,14 @@ def test_bootstrap(): # For "good" stars: all bootstrap vals should be present assert np.sum(np.isnan(out['xe_boot'][good])) == 0 assert np.sum(np.isnan(out['ye_boot'][good])) == 0 - assert np.sum(np.isnan(out['vxe_boot'][good])) == 0 - assert np.sum(np.isnan(out['vye_boot'][good])) == 0 + assert np.sum(np.isnan(out['vx_err_boot'][good])) == 0 + assert np.sum(np.isnan(out['vy_err_boot'][good])) == 0 # For "bad" stars, all bootstrap vals should be nans assert np.sum(np.isfinite(out['xe_boot'][bad])) == 0 assert np.sum(np.isfinite(out['ye_boot'][bad])) == 0 - assert np.sum(np.isfinite(out['vxe_boot'][bad])) == 0 - assert np.sum(np.isfinite(out['vye_boot'][bad])) == 0 + assert np.sum(np.isfinite(out['vx_err_boot'][bad])) == 0 + assert np.sum(np.isfinite(out['vy_err_boot'][bad])) == 0 return @@ -659,7 +1219,7 @@ def test_calc_vel_in_bootstrap(): outlier_tol = None mag_lim = None ref_mag_lim = None - weights = 'both,var' + trans_weights = 'both,var' mag_trans = False n_boot = 15 @@ -673,8 +1233,8 @@ def test_calc_vel_in_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - weights=weights, - use_vel=True, + trans_weights=trans_weights, + default_motion_model='Linear', use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -692,15 +1252,15 @@ def test_calc_vel_in_bootstrap(): assert 'xe_boot' in match_vel.ref_table.keys() assert np.sum(np.isnan(match_vel.ref_table['xe_boot'])) == 0 - assert 'vxe_boot' in match_vel.ref_table.keys() - assert np.sum(np.isnan(match_vel.ref_table['vxe_boot'])) == 0 + assert 'vx_err_boot' in match_vel.ref_table.keys() + assert np.sum(np.isnan(match_vel.ref_table['vx_err_boot'])) == 0 # Run without calc_vel_in_bootstrap, make sure velocities are NOT calculated match.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=False) assert 'xe_boot' in match.ref_table.keys() assert np.sum(np.isnan(match.ref_table['xe_boot'])) == 0 - assert 'vxe_boot' not in match.ref_table.keys() + assert 'vx_err_boot' not in match.ref_table.keys() return @@ -727,7 +1287,7 @@ def test_transform_xym(): outlier_tol = None mag_lim = None ref_mag_lim = None - weights = 'both,var' + trans_weights = 'both,var' n_boot = 15 mag_trans = False @@ -740,8 +1300,8 @@ def test_transform_xym(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - weights=weights, - use_vel=False, + trans_weights=trans_weights, + default_motion_model='Fixed', use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -775,8 +1335,8 @@ def test_transform_xym(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - weights=weights, - use_vel=False, + trans_weights=trans_weights, + default_motion_model='Fixed', use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -809,7 +1369,7 @@ def test_MosaicToRef_mag_bug(): """ make_fake_starlists_poly1_vel() - ref_list = starlists.StarList.from_lis_file('random_0.lis', error=False) + ref_list = starlists.StarList.read('random_vel_0.fits') lists = [ref_list] msc = align.MosaicToRef(ref_list, lists, @@ -819,7 +1379,7 @@ def test_MosaicToRef_mag_bug(): outlier_tol=None, trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], - use_vel=False, + default_motion_model='Fixed', use_ref_new=False, update_ref_orig=False, verbose=True) @@ -853,8 +1413,8 @@ def test_masked_cols(): # Coordinates are arcsecs offset +x to the East. targets_dict = {'ob150029': [0.0, 0.0], - 'S11_15_3.9': [ 1.13982, 3.73524], - 'S13_13_4.5': [-4.42878, 0.03100] + 'S005': [1.1416, 3.7405], + 'S002': [-4.421, 0.027] } # Get gaia catalog stars. Note that this produces a masked column table @@ -882,7 +1442,7 @@ def test_masked_cols(): dr_tol=[0.2, 0.1], dm_tol=[1, 1], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}, {'order': 1}], - use_vel=True, + default_motion_model='Linear', use_ref_new=False, update_ref_orig=False, mag_trans=True, diff --git a/flystar/tests/test_all_detected.fits b/flystar/tests/test_all_detected.fits new file mode 100644 index 0000000..ae56198 --- /dev/null +++ b/flystar/tests/test_all_detected.fits @@ -0,0 +1,2911 @@ +SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 632 / length of dimension 1 NAXIS2 = 2000 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 21 / number of table fields TTYPE1 = 'name ' TFORM1 = 'K ' TTYPE2 = 'x ' TFORM2 = '12D ' TDIM2 = '(2,6) ' TTYPE3 = 'y ' TFORM3 = '12D ' TDIM3 = '(2,6) ' TTYPE4 = 'm ' TFORM4 = '12D ' TDIM4 = '(2,6) ' TTYPE5 = 'xe ' TFORM5 = '6D ' TDIM5 = '(6) ' TTYPE6 = 'ye ' TFORM6 = '6D ' TDIM6 = '(6) ' TTYPE7 = 'me ' TFORM7 = '6D ' TDIM7 = '(6) ' TTYPE8 = 'n ' TFORM8 = '6D ' TDIM8 = '(6) ' TTYPE9 = 'det ' TFORM9 = '6D ' TDIM9 = '(6) ' TTYPE10 = 'vx ' TFORM10 = 'D ' TTYPE11 = 'vy ' TFORM11 = 'D ' TTYPE12 = 'vxe ' TFORM12 = 'D ' TTYPE13 = 'vye ' TFORM13 = 'D ' TTYPE14 = 'x0 ' TFORM14 = 'D ' TTYPE15 = 'y0 ' TFORM15 = 'D ' TTYPE16 = 'x0e ' TFORM16 = 'D ' TTYPE17 = 'y0e ' TFORM17 = 'D ' TTYPE18 = 'chi2_vx ' TFORM18 = 'D ' TTYPE19 = 'chi2_vy ' TFORM19 = 'D ' TTYPE20 = 't0 ' TFORM20 = 'D ' TTYPE21 = 'n_vfit ' TFORM21 = 'D ' EPNAMES = '2005_F814W_F1' EPNAMES = '2010_F125W_F3' EPNAMES = '2010_F139M_F2' EPNAMES = '2010_F160W_F1' EPNAMES = '2013_F160W_F1' EPNAMES = '2015_F160W_F1' ZPOINTS = 32.6783 ZPOINTS = 25.2305 ZPOINTS = 23.2835 ZPOINTS = 24.5698 ZPOINTS = 24.5698 ZPOINTS = 24.5698 YEARS = 2005.485 YEARS = 2010.652 YEARS = 2010.652 YEARS = 2010.652 YEARS = 2013.199 YEARS = 2015.148 HIERARCH DATE PRODUCED = '2025-06-30' HIERARCH INSTRUMENT = 'ACSWFC ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' END @ 1&y@ c+(@ 1&y@ 4U*@ 1&y@ OS@ 1&y@ŕ@ 1&y@ !@ 1&y@]H/@nzG@ns2ph@nzG@n:t@nzG@mI@nzG@mm@nzG@nb3@nzG@ns@8䎊@8m1@4S@3!d@3~"@3Q@䩤@2@2h4Z@2@2ĊRd@2@2&EK?hjaQ?*?iy?Û? +Ld?OU=6i?/nI|??`l??!g?'?χ1?# ?jo?/O?ޥe?.Eôv? [\@@"@@"@4@.???????Ek?mo?zS ?T 8O@@n?/?? Cs?9wZe`?3#@溦z@k%>@@`ě@\1'@`ě@Q4K@`ě@Mw1@`ě@G@`ě@:6@`ě@4j~@ۊ=p@ێV@ۊ=p@{lD@ۊ=p@۞Q@ۊ=p@ہTɅ@ۊ=p@ۙb@ۊ=p@۝cA@6=:@6:)^@4 hr@4SMj@3`A@3\(@3._o @3:L/|@3._o @3BC,@3._o @3G?Ol?.5?{?d`Xp?͵ ?>;? ?>%?:?Җhn?|9.)?@ ~? +B?7ly\?J鞤?Jf?8?J6Л@@@@@,@(??????C&Ԡ?*2iۂA?Y領~@OûZ@یc?D?tN'p?{Q( ?׺@bn{@@+.@+.@+.@+.@+@٦ @+@ k@(6E.@(6E.@(6E.@(6E.@(6E@)Q@(6E@!p<@8s.>@4S.Mm@3`A7.Qn@2YJ.NC,@2YJ@2>@2YJ@1E2a|@8J@8#@8:@8 >+?BxT?g{=@8J@8@8i@8?VYk ?Պu@8p@8 *@8p@8?Z?\@@ ??@zG@w@zG@rGF@zG@s@zG@=b@zG@*0@zG@X@շKƧ@ռ(Ž@շKƧ@7@շKƧ@շX@շKƧ@շ@շKƧ@նz@շKƧ@ո}H@8g l@8\N@4hr @4&@4"-V@4*͞&@3B@5@3GKƧ@3B@5@3G@3B@5@3H9Xb?q!U?+W?](s?A2x?wX?>V$?TU?[G,?ҌI?,#t?s?|[z?ӖO_?[ S? e?Za7?Us?DΊ@@@@@*@(???????VMB“x?QԬy!?Bex.@W.V@ոAA?nɢf?[~?u?+\t@oF5i@@EQ@9R4@EQ@G2@EQ@?'-9@EQ@DqN@EQ@D @EQ@FW@/j~#@/,l@/j~#@/i3ߢ@/j~#@/qjK>h@/j~#@/fX@/j~#@/m*@/j~#@/uA@8g l@8u@2r Ĝ@2QU|@2gKƧ@2l76@1&@1 "@1&@1[@1&@1} t?ڢ??b r}?N[x?},A? J?P*i?6 k?ZU?1O}?=е?zpY?i ?V0qRi?@&pp??~?zA?Ad`@@ @&@"@&@.???????gyG{G;T?DO?n@٨3@C{y"E@/p4}pE?g j?փ$,?g*u?8̷@oʛ@@V.@V@ܻf@V@@3@3ѹ wC@2A7K@2@2(@2DR@2(@24@2(@2":>Ff@8J?uPք +?}?]9t?fN= ?wp@8J?o!ȼ?@;?)? @?3f-? +]D@ҰǴ@xn@?SB!?8F?ؼxq ?|s]@fŞV@@ě@F$/@ě@CZ@ě@F@ě@rp;@ě@Dg8@ě@M:@=p +@j~@=p +@@4c.Mm@317Kƨ.Qn@3G k.NC,@3G k.NC,@3G k.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8  +@;C@;=L@;C@;=~@;C@;Qb@;C@;^ʷ@;C@;풟@;C@; @ʜ1'@ʕe@ʜ1'@ʗFo@ʜ1'@ʜZ +l@ʜ1'@ʟ-fU@ʜ1'@ʦ@ʜ1'@ʠM@7S&@7vU@3kS@3nesg'@2`A7L@26@2 [W?@2,$@2 [W?@22P@2 [W?@2 Tn?}xC@R$/@Ru\(@R$/@R;s@R$/@R0D@7v.>@4G+@43a@N@4~"@3kP@2xF^@2R<6@2xF^@2L_@2xF^@2a@@8J?5O}?^sx?I,?L!{?U A@8J?iCv?z/=?ըE?9?l @8p? $F)?S?D'?tgi?_@@@@,@*????? @1z@1z@1z@1 ^ @1z@1RT`@1z@1z@1z@1-@1z@1lC@ I@p@ I@L@ I@ I@ I@W@ I@Ƨ@ I@f@4`D@4`d7@1i+ @1iy @1,j~#@1-V@0O M@0r@0O M@0[W>@0O M@0v_ح?| ?x1? ?菁k?E@?C!?|O?Q_ڸFN?FN ?%_D?YF?Q(?7?7@@@@@*@,??????oX?x?I9l?oc2@1u@um?'!ŗ?@(61څ?\^s1Ȧ?7C&@fZ| @ @@ +=p@@y%@@ +=p@@2@@ +=p@@?@@ +=p@@Mj@@ +=p@@(@@ +=p@@z@{>vȴ9@{>"@{>vȴ9@{DJ@{>vȴ9@{DT@{>vȴ9@{B&I@{>vȴ9@{B@{>vȴ9@{B&J@4ks@4kk50@2J^5?|@2KQ@2 "`B@2 O;dZ@1xD*@1zY@1xD*@1yXbM@1xD*@1y_o?}xZw?< N ?}?8wx@@@@@(@,??????5?: a?@*z?)@@;_@{@%;?`D?7¦$%+?[&+@8I@8?+ I@8@8i@8@8S@8?s5r@8 *@8p@8@8 @8 @?@EKƧ@EQ&x@EKƧ.@EKƧ.@EKƧ.@EKƧ.@EKƧ.@G@tj@G.@G.@G.@G.@G.@7 D@7 +>B@3 hr.Mm@2`A7.Qn@1iB.NC,@1iB.NC,@1iB.NC,?1j@8#@8:@8 >+@8I@8?h?@8@8i@8@8S@8?Ú5BZ@8 *@8p@8@8 @8 @?@:V.@:V@:`d@:V@:@:V@:,<@:V@:@:V@:@$/.@$/@\@$/@\)@$/@H@$/@ݲ-V@$/@ȧ@8H.>@3n5?|@3d xF@3-V@3 [7@2!.I@2jf@2!.I@2#@2!.I@2#9@8J?V[u9??]`?k;?U A@8J?lV?J?5;7ĻM?Q?A8D@8p?Ov_ح? + l]?vI??g@@@@,@,?????@3E@/;dZ@3E@5\)@3E@33332@3E@3E@3E@3@3E@4!-w@E1&x@E.V@E1&x@E2@E1&x@E3*0U@E1&x@E49Xb@E1&x@E3@E1&x@E8W@6:@6YJ@1 I^@1|@1i"`@1i~($ @0‚@5@0Zc@0‚@5@0GE85@0‚@5@0vȴ:?NIɮ?t0?wk?Њ?Dj?#{׈?h?? +?}7.?M =?+!? # +?P7?c I??/X?=aw%?gϵ? +r@@@@@(@$???????@%+sT?^> +3F?5?d/?BZƦ@3@E4q?I\I;?_)T`l?:{?Rū\k@oy@@۩x@۩7Kƨ@۩x@ۯ*/@۩x@n+@8I@8?ɱb)Q@8@8i@8@8S@8?`S@8 *@8p@8@8 @8 @?@b%@bT@b%@buc@b%@b@b%@bߩ*@b%@bZVn@b%@b)oU@?|@E@?|@̤@?|@H@?|@q@?|@~=@?|@@4 xF@4U=@0&+ J@0&?1@/XF@/WI@.(ۋq @.(_n @.(ۋq @.(*@.(ۋq @.(&I?}@TΥ?n!?B?I?F B?*?}@TΥ? R? FO??b?nG$GI?]SXd?o,qV?k/?X ?Lx?1C? +9X@@,@$@*@4@7??????/ڇj ?.Kn?"详S?oi@b*l@Ca?BlKJ?(P3?hk?^rT?@gؿ @@u?|@r-V@u?|@qX@u?|@jڹZ@u?|@8Z@u?|@x_@u?|@|쿱@S@`B@S@l@S@ᰉ&@S@u@S@@S@6@7*0U2b@7oiD@4hr@4$tS@3Ƨ@3^5?}@3!.I@3u@3!.I@3$/@3!.I@3]cf?)T?05 [?Fw?gt>?ťBW?A!X?Ol? LP?O?tdE? ?AP0P?o\Z{?K)?+k?Z?<שN?8wx@@@@@$@(???????btZ?_L|HbK?Ej-M0@y4_@޻? /ذ?efб)?8ا?K{~@h,@@ěT@G@ěT@üZ@ěT@hی@ěT@Q@ěT@ں@ěT@@ +=@R@ +=@Mj@ +=@ I^@ +=@j~@ +=@*0@ +=@O;d@7įO M@7ơaf@3kS@3m@27KƧ@28Y@1_o @16@1_o @1\(@1_o @1nO?}ѿ,? ?IK?nii)?jF?ҸBz3?sD?8{:?%gǿ?Nw]6?r?m\@?x}?Эs_`?~}o_?{Cx?屘?zy@@@@@,@*???????i|?W?8"?Ufݸbzi@ q@j?Xw6O?r8G?P?n9@fQF$`@@=p +.@=p +@=qu@=p +@;:)@=p +@<L_@=p +@;P|@=p +@;@qm.@qm@gRT`@qm@cw@qm@ix@qm@g8}@qm@de@7䎊.>@2 I^@2ԕ*@2 -V@2 A@1a:S@1_iDg8@1a:S@1_U=@1a:S@1_As@8J?hX*?=?Kh?:Z2b?`?SJ@8J?4i?tP*?Җhn?C ;?]˙$>@8p?u/X?8*?ۮetZ?Cns?WZ@@@@*@*?????@!@%Q@!@$e@!@#e@!@$7@!@!TɅ@!@!TɅ@n@[@n@}U@n@g8~@n@u%F @n@n.@n@\(@7Q|Q@7Qn@1O|hr@1O@017Kƨ@01u!S@/fL/{K@/fIQ@/fL/{K@/fL/{K@/fL/{K@/f&J?E?$?,fC6?#t? 9?:?2}?)[+@8I@8? @8@8i@8@8S@8?X@8 *@8p@8@8 @8 @?@nzH@mV@nzH.@nzH.@nzH.@nzH@o-@nzH@mV@i@n@i:^5?}@i@n.@i@n.@i@n.@i@n@iC +=q@i@n@i?|h@8[~($@8WrH@2 ě.Mm@1`A7.Qn@1 k.NC,@1 k@1@@1 k@1Ϫ͟?ȉak@8#@8:@8 >+? f?/?Ol@8@8i@8? ?998?hJ@8 *@8p@8?&f?o@@@???@LC@LC@LC@LzH@LC@Lhr@LC@Lv_خ@LC@L˒;@LC@Ly@,`A7L@,`ě@,`A7L@,aaf@,`A7L@,_;dZ@,`A7L@,]ڹ@,`A7L@,c@,`A7L@,cn@3 ]ce@3 C\@/"`A@/#@/NO<@/C$@-Xy=@-B@-Xy=@-P{@-Xy=@-P{? ?J`Y?"?̒?+?Q`?| ?eCO?LE?@[*^?*v7?w8?s@a?=d??k,?o? .0v@@@@@,@,??????8Z?2?HT*?D)Z<@L7L@,a%?g !/?ct2?IN?щm&@fg`@@.@@(Z;@@ S@@w6@@xQ@@\&S@E49Xb.@E49Xb@E3i6@E49Xb@E g@E49Xb@D\8@E49Xb@E";Է@E49Xb@E7g@84m8.>@3hr @3{R!4@2t@2cN`@2 +0U2a|@1PX@2 +0U2a|@1ň@2 +0U2a|@1ܷ+@8J?Mt?sο?|v?N?e@8J?p&tC?s?Yg3?J](?Y@8p?Ŕs ? +Nr)?l-Q?I`N?up-z@&@"@*@.@0?????@C@}@C@:=@C@ȨV@C@B%@C@.@C@φ@(@@(@x[@(@@(@g@(@g^V@(@G@6*0U2b@6(E\@1+ I@1+{N@0"`@0mK@03&@0*SE@03&@0@03&@0lR?Z=?^ ‰?42`??7?L?F0^?}E?'?>?1ߔ?G +̾?PQ-2? ab?Tx??m p?:wB?Yf@@"@$@@2@2???????o?'8?YP;rq?d#@}@Ƞ߼x?zXXdW?ta%?\2e@.^F;!@h@ @ʍ@ʍhr@ʍ@ʌ!-@ʍ@ʋƧ@ʍ@ʍqu@ʍ@ʍC]@ʍ@ʌ@u@KƧ@u@@u@D@u@kP@u@}Vm@u@+j@6䎊@6ae@1 hr@1 wkP@0Vu@0쿱[@0&YJ@0&@0&YJ@0'@0&YJ@0'1?1j?q' +B?5$?Њ?% +?^?|O?4 "?;,?M =? ^??lINՄ?}?3I#i?!A +m?=aw%?ad|?ܑ @@@@@*@(??????Y&=3!@?J?zթ)@ʍcX@:?<)?:ej?G涟Fa?n A@g9.@!@WV.@WV@Wě@WV@Wq@WV@WOv@WV@W *@WV@WYJ@n.@n@w@n@.@n@q @n@@n@'/@8#g l.>@4!hr @3ߤ@@3lj~#@3[xF]@2@2qi@2@2-@2@2{J#9@8J?B?e?4M^?xs?9j@8J?Ɠ0f?`;9?'G_J?Fl}?:;@8p?G?N?.BZO?pO4I?/̽`@@@@(@*?????"@ΗO;@Ζȴ9X@ΗO;@Ζ+ @ΗO;@Θ}G@ΗO;@Γ@ΗO;@Λm@ΗO;@ΚC\@9XbN@9XbN@9XbN@6_ح@9XbN@2p:@9XbN@7X@9XbN@0D@9XbN@1iC@6*0U2b@6K]c@2ԛS@2TɅo@1j~@1GE85@1B@5@1;P{@1B@5@1F@1B@5@1DFs?1j?_?q +*?+YI?1,j?&Gf?sD?7fps??,ў?*?ω:hT?z"2(?Ol?]b?#ѧ? 1 D@?3@@@@@,@*???????Fٝ0[!x?COصC?:ݶFNc@ΘIC@5m$?enD`?[7Y?^dq? @i2О;@#@"E@,1&@"E@H`@"E@Z^-@"E@]&W@"E@-¼@"E@2-0@"v@% ě@"v@%y@"v@% @"v@%)3@"v@%]d*@"v@%1MY@6 xF@3Y@3I^5?@/24@2j~#@.l o@2iB@-WM4@2iB@-jVw)@2iB@-]`߈?}@TΥ?H%]^?,Q"?Q#?}xM?&C@=V?QS?EZJ@@ @"@$@,@0??????O-b, ww?@LU?# 㥐@-+,@[?_.?Cτ?dw"D?JE@gvY@%@hr@hr@hr@}n@hr@9@hr@"9@hr@ew@hr@b@@@@}I@@7@@6k@@W@@@3:qiC@3:kP|@-"`A@-?ÿ@-4E@-5F +L0@,=Vl"@,=\@,=Vl"@,=|@,=Vl"@,=?|h2:?˚]us?B?8?)>?T|/?|h2:?;*;h?w&?1 ?h1?Tq/G?nڨ8?w?uk=? ZE?7is\?@@*@,@&@;@;?????? +xJ?'@?"g?{k@bn@R?p?Bo{?2@C?f?r6@fN[@&@T5?|@T/@T5?|@T%@T5?|@TQ@T5?|@T6z@T5?|@Tѷ@T5?|@TVl@I^5?@L@I^5?@I7Kƨ@I^5?@I^5?@I^5?@JL@I^5?@I@I^5?@JW@6Q|Q@6O\(@0 I^5@0M@/rnO@/r{n@-p'RU@-p +=q@-p'RU@-p|@-p'RU@-p{?| ?{j?Gy??˅T?6r In?*WF?Br?›?ދ"?6)}?2&h?eDQQ? ?§d߱?YF?E 8?f_Ԋ?b/bJ@@@@@,@,???????%WۭCCW ?&.?",|x@T +@K?G>uT?Bah?|NRu?d;T0@hpID@'@ Ƨ@ Ƨ@ Ƨ@ a@ Ƨ@ "h @ Ƨ@ @ Ƨ@ cA @ Ƨ@ B@+u?|@+u$@+u?|@+tɅn@+u?|@+uXy>@+u?|@+uᰋ@+u?|@+tm:@+u?|@+tɅo@5-v@5-C\@1sS@1seN@0V@0IQ@0xF^@0jf@0xF^@0I^5@@0xF^@0C]? ? KG?O%c?l?n{K?\.:@?|O?CO?;,?߇O?l{9َ?Q\?ZaP?3I#i? ݎ8? mmsi?L8AS?@@@@@,@,???????1`ߐ#ZLw?AdAI?=!^@ aPP@+u9:?4-4L:??'mw?r1V0?Y[P@g%{ђ?@(@dS@dkŔ@dS.@dS.@dS.@dS.@dS.@@nQ@.@.@.@.@.@6]ce@6n*@2S.Mm@2ttj.Qn@2 [W?.NC,@2 [W?.NC,@2 [W?.NC,?Z=@8#@8:@8 >+@8I@8?Qp@8@8i@8@8S@8?Tʼ=@8 *@8p@8@8 @8 @?)@#Cn.@#Cn@#9#x@#Cn@#F?@#Cn@#5L_@#Cn@#,Vϫ@#Cn@#3 @5?|.@5?|@Ǡ m@5?|@ ě@5?|@B@5?|@ q@5?|@fA@9.>@5hr@55?|@4-V@4O;d@40@41$/@40@4$`d@40@4%Xy=@8J?J f?؋)?pW?U܈9?mZ@8J?k3~?ōɗ?˿ o?KN?H"#@8p?/őB??W?zoV?ЀIN@@@@,@(?????*@{dZ@x@{dZ@~҈p@{dZ@[W>@{dZ@ح@{dZ.@{dZ.@S_vȴ@Sg+ K@S_vȴ@S\1(@S_vȴ@SYJ@S_vȴ@S rG@S_vȴ.@S_vȴ.@64m8@6O M@4+@4@4R`A@4쿱[W@4 k@4 ~($@4 k.NC,@4 k.NC,?Ol?Ey?iX?, +d@8I@8??k3~?9؂?R(gF@8S@8?N?:?ȧu ? vrC@8 @8 @@@@????+@kP`A@kQm@kP`A@kEo@kP`A@k-@kP`A@k(eP@kP`A@kSg@kP`A@kݗ@Xtj@s@Xtj@3Mj@Xtj@W3@Xtj@s @Xtj@h>BZ@Xtj@0@95S&@9?v_ح@5@5P{@5lj~#@5usg@46z@4}Vl@46z@4@46z@4z0U2a|?W$B? +?9/?>5c??7?2d?xaz#?ռ2?P@?5OW?#U?̷~ ?m?:/ʼn?6?e8?馪C?Y')@@@@@$@(???????k{Ta}?hfz?yV"@kRp@nÏ^?S~?8@}c?lIߡ@l@,@>=E@>9"@>=E@>CZ@>=E@>F1@>=E@>Ik}@>=E@>B I_@>=E@>@n@55\)@56E@55\)@5:6@55\)@52@55\)@584֡@55\)@5/hی@55\)@5/V@4,<@4~($@1 I^@1bM@1,j~#@1(@0D*@0 '0@0D*@0Z@0D*@0S&?qv?U ?/͔p?Z.??;?봤G?qv?)[j=?V$f@>CƱ@53z?|Ml?qӇl?h<~5?$m@nG.@-@A7K.@A7K@A@A7K@B@@A7K@Ae@A7K@@4m@A7K@@4m@)x.@)x@(r @)x@(TɆ@)x@(u%@)x@)*0U2@)x@(TɅ@3įO M.>@0n5?|@0nvȴ9X@/@/oiDg@.PH@.@N@.PH@.Z@.PH@.sQ@8J? KG?\H{gX?ݶ\r?ǹT?{<@8J?0n=Q?Jj?7枪y7?A B{?SV.@8p?§d߱? SF?!ˠ*(??b/bJ@@@@&@&?????.@~vȴ9@~"@~vȴ9@U=@~vȴ9@}ce@~vȴ9@|?@~vȴ9@}!.I@~vȴ9@~Ov_@F,C@F,C@F,C@F+҈@F,C@F$ xH@F,C@F&,=@F,C@F)Dg8@F,C@F'K]@3cg l@3cS@0ԛS@0fA@0~"@0/V@0c@0eڹ@0c@0f$/@0c@0eS?| ?m0?BI{?{@?@@No9?봤G?| ?j%Ra?A +;?| ?A?:i?nwf?%_D?z_?p=J?GZ?A0)n@@@@@(@"??????5w"xQ(?-"S`?9zT@~%1@F*$h(^?M8M?Yw6?&YD!?G@f?%<@/@n@F@n@x@n@|@n@4.y@n@Vɡ@n@p:@tE@uPa$@tE@tԿ@tE@ud?q\^/?(#@@(@(@*@;@*??????q}o{?0tz?nAօ`?hk@y@uٵo?Bh?~,?cs{e?4~@^T@0@Z1@XQ@Z1@OV@Z1@U=@Z1@TzG@Z1@9"@Z1@@N@ ?|h@ 9"@ ?|h@ m8@ ?|h@ i^ @ ?|h@ Q2X@ ?|h@ Q@ ?|h@ ^Ov_@7 xF@7҈p;@4i+ @4QiB@3~"@3Q@2O M@2w1@2O M@2z@2O M@21?E@?Z]$?×DZ?XԠ#{?Xz=?\LTu?)T?*J?S]:?agf ?,<?(U?Ʉ?qlPg?e?a%?;ܔ?S![c@@@@@&@*??????tt ?ޒE?ij?P݀ ?@Qw@ M^^G?P}d?n7/?r@M?eI@h@1@=`A@=bM@=`A@="`B@=`A@=!@=`A@==@=`A@=LI^4@=`A@=_o@p +=@p +=@p +=@qm@p +=@m q@p +=@P`A@p +=@JڹZ@p +=@%zxl#@4]ce@4 q@2hr@2 ԕ*@2t@1H@2OO M@29ᰉ(@2OO M@20@2OO M@20|?~?J? w(?dl\?lsC^?Җ? G?|h2:?\?%c~??`c?r{?e?f)"?v'X?[?8N0?{=rK@@@@@(@,???????=x<?A:%^?<|d@= $@e#?Qv?Nb$h? o]?gu@]e䟽@2@Ǯz@`B@Ǯz@n.@Ǯz@Ϫ͟@Ǯz@n@Ǯz@Țu%@Ǯz@B@޸Q@@޸Q@α2@޸Q@յs@޸Q@<63@޸Q@<@޸Q@#@9[~($@9mC\@4}hr @4s%2@4lj~#@4g+j@3@3ϱ[W>@3@3Ӝߤ@3@3{J#9?@?}>?.O?1x?*bQt6?=B+?g;+t??B?:?o?Y{?n+?a,F?1?d&??S@Gd@@@@@$@(??????f6tM -@?pBa&\?a\r@zP'@},?#v u@m)\@3@KƧ@KƧ@KƧ@LVϫ@KƧ@L@KƧ@MM;@KƧ@KP}@KƧ@JL@vE@vE@vE@vOva@vE@v4@vE@usi@vE@v@vE@vz@2qiC@2xl"h +@/`A7@/D@.cnP@.cS&@-At@-Mj@-At@-v@-At@-'/W?^Q5P?_?@?eU!? f?ˡK?bM_x?f?'Q?4ډ3?ڂc?SV.?n|̲?§d߱??ʬv?j?@@@@@,@(??????U,$ ?>; ?.[}H?/YXu @KT;p@v'?=:|7v?>#},?tO ?s3u@s't@4@S@VE@S@*@S@FIR@S@c,zx@S@~@S@@.O@-@.O@*0@.O@ D@.O@&@.O@ye+@.O@mw1@8:@8䎊r@4S@4M@4tj@4҈p@3m8@3De@3m8@3>BZc @3m8@3Q??!?ʒK?Dc?aOD@@@@@*@(??????_mWFt??W8?@Ho4@%f?ӝ?…?#x@GF5@`17@5@r @@r @唯O@r @&@r @p:@r @+ J@r @Ov_@F@Cn@F@Cw@F@>@F@<n0@F@>@F@$?@8}:@8'R@3hr @3b}@3V@3JL@2䎊r@2}:@2䎊r@2|~($ x@2䎊r@2qae?Ol?#T?2+@8I@8?I~y@8@8i@8@8S@8?Is -@8 *@8p@8@8 @8 @?8@M@M@M@m@M@@M@ӳ@M@T@M@Q"ڻ@}r @}#x`@}r @}ZX\@}r @}tCx@}r @}hՅ@}r @} @}r @}*=@8 xF@8 L@3f+ J@3c@@2y7KƧ@2z }@1@1ߩs@1@1ߋ'ZE@1@1)5F?pV?}\\?~\ ?ە?W"/?h$[?o"? +~>i?O%?޿I\?qAx?/? kD?XM=nk?QW%;2?=\b +?'wCh? +)@@,@,@*@9@5????????x`x?V6K?6Sw?A5p@A@}?VTDm?a0x?YVF*v?ƹHqi@h+@9@j~#@ow@j~#.@j~#.@j~#.@j~#.@j~#.@j~@a/ @j~.@j~.@j~.@j~.@j~.@4䎊@4w1ث@2?|h.Mm@2KƧ.Qn@2O M.NC,@2O M.NC,@2O M.NC,?|>G3@8#@8:@8 >+@8I@8?P&x@8@8i@8@8S@8?n8@8 *@8p@8@8 @8 @?:@%@A7L@%@ I^@%@o@%@A \@%@e+@%@{J#:@qDT@qDZ@qDT@qCZ@qDT@qC,zx@qDT@qCA \@qDT@qDq@qDT@qDZ@7B䎊@7BZc@2!hr @2!n@0j~@0֡a@0O M@0b}V@0O M@0-w1@0O M@0H˒:?Y͍_?[e?iTC~t?ʳ_?=rE=?OO ? +t@@@@@,@,???????EB +t>-@?7Q m?@C@qDQ`?VFc/?0eos ?½?fZR@iL?@;@ @@ .@ .@ .@ .@ .@~mV@~TzG@~mV.@~mV.@~mV.@~mV.@~mV.@8*0U2b@8tj~@5 +^5?|.Mm@4~".Qn@4xD*.NC,@4xD*.NC,@4xD*.NC,?{QB@8#@8:@8 >+@8I@8?=,܊{g@8@8i@8@8S@8?KxMR@8 *@8p@8@8 @8 @?<@"@1@"@^5?}@"@lD@"@;dZ@"@-V@"@A7L@7K@@7K@@7K@"@7K@T@7K@`A7@7K@+ I@34m8@3'RT`@0@0e@/;dZ@/Y|@/#Z@/C,zy@/#Z@/5?|@/#Z@/]ce?|O? 1H?*"AaI?%?Dj?[2?|O?? :?qF?ni" ?tP*?'? J??m+&?XW~?O|q?<71@@@@@@???????TS8?PD?5hp8? ܱ@30@ ?TZ?2OR?cXZG?qjW`@f@=@ߝ-V@ߪ=p@ߝ-V@ߍw1@ߝ-V@ߠě@ߝ-V@ߠě@ߝ-V@ߚQ@ߝ-V.@@@[@@4֡b@@hۍ@@s@@{@@m]@tj@1&@tj@Y|@tj@ݗ+@tj@SM@tj@䎊r@tj@|@8B䎊@8C*0U2@3i+ @3jL_@2b-V@2a-@1䎊r@2hr @1䎊r@2C@1䎊r@2 [7?:-%?dY{?ՠΆ{?,OKu?n{K??2}?&uE@?mK?"6Wz?uvo4.?9?(L5}y@%~%@cn?!_G?9Ӣס?=F"W?fy@s @@@w@w@w@oiDg@w@$s@w@|@w@\@w@C]@@@@@@@.H@@\(@@u%F @@'@04m8@0:~@.MV@.L@.h1&x@.h1&x@.kjf@.k҈@.kjf@.k)^ @.kjf@.kjf?^Q5P?m0?Gy??뤽??Dj?F0?bM_x? ,C?'Q?>\?2&h?{L բD?bMky?3;?8*?xqC?M684?L@@@@@,@*??????S7L?B\ vS?"\{Y@@EƎ*?Q?1@?(+q:?Z4[@sY@A@ +=p@ +~#@ +=p@ +L@ +=p@ۋr@ +=p@ ^5?@ +=p@1@ +=p@r @qtj@q@qtj@qC@qtj@qbM@qtj@q_@qtj@q$@qtj@qs@3Y*0U2b@3Y+ @1?|h@1%1@1tj~@1ohی@0m8@0iB@0m8@02W@0m8@0GE85?|O?Kb?aR ?a_b?PY8~Qj?)'3?|O?V"y$R? +\?< /0?u$6?pN.>7E?u@>N ?9o?^&?˴C?7zE?ymcw\@@@@@,@*??????CGT?2Wy?1>`@ @3J@q]?Ro-'?QAfw?&?࣏ <@f;@B@ڟv@ٙ@ڟv@ٳ|@ڟv@ۋq@ڟv@t@ڟv@ڬ=@ڟv@A@P`A@Qhr!@P`A@P- @P`A@PbM@P`A@P:~@P`A@P )@P`A@P{@5!.@52a|@1S@1xF]@0ȓtj@0ȓtj@0?䎊r@0@{@0?䎊r@0@H@0?䎊r@0?;dZ?| ??"?:Z2b?% +?-/ge?}ѿ,? H?j?>\? ^??'+?oܧ?/?y8$?Gϵ'?ܑ ? Ğ@@@@@(@,???????r}M@([p?0a|ă?6Y @RO@PZ?PU&"?8? Cv??~`(@fè8@C@inP@inQ@inP.@inP.@inP.@inP.@inP.@=p@=p@=p.@=p.@=p.@=p.@=p.@4Y*0U2b@4X@@0I^5@.Mm@06-.Qn@/uXy=.NC,@/uXy=.NC,@/uXy=.NC,?}ѿ,@8#@8:@8 >+@8I@8?| @8@8i@8@8S@8?٤@8 *@8p@8@8 @8 @?D@MO;d@W +=p@MO;d.@MO;d.@MO;d.@MO;d.@MO;d.@o-@}-W@o-.@o-.@o-.@o-.@o-.@9 xF@8hr @3S.Mm@27KƧ.Qn@2ush.NC,@2ush.NC,@2ush.NC,?+-/@8#@8:@8 >+@8I@8?A[F@8@8i@8@8S@8?Ä`e@8 *@8p@8@8 @8 @?E@ܬ1'@ I@ܬ1'.@ܬ1'.@ܬ1'.@ܬ1'.@ܬ1'.@n@Q@n.@n.@n.@n.@n.@7]ce@7P{@30ěT.Mm@2U`A7L.Qn@2V!.I.NC,@2V!.I.NC,@2V!.I.NC,?| @8#@8:@8 >+@8I@8?xDž@8@8i@8@8S@8?' +}B@8 *@8p@8@8 @8 @?F@@;dZ@@xl"h@@a@@ȴ9X@@Xe@@rGE8@cW +=p@cdZ@cW +=p@cSMj@cW +=p@c["`@cW +=p@cRs@cW +=p@cV!.@cW +=p@cU!S@804m8@8.Vu@3hr@3͸@3lj~#@3l]ce@2[W?@2'RT`@2[W?@2U=@2[W?@2At?xDž?" ?\H{gX?,Z?z|?"eM?}ѿ,?lE0?)_?:u. ?4?⍄o?eo?)h?~/O?rsw?Ee,?8@@@@@,@,???????./0n) ?P6;?RH|@5l/@cWZJ?ak?y^*?׸ ?!M^#b@o̘:(@G@.O@5\(@.O@3Mj@.O@Aoh@.O@;q@.O@.;5@.O@)*0U2@>lD@?n@>lD@>xl"h@>lD@? w1@>lD@>/V@>lD@? [@>lD@>#@7䎊@7˒:)@5?|h@5>6z@4i"`@4k:)z@4O M@4?|i@4O M@4ᰉ@4O M@4- ?qv?d̺?oq u?\eú?h?oNR?3a=?4i?9]t`?Z.?8?ے|?#iN?KQ5?R ?AX|y?z"+;?ԤA]@@@@@,@(??????fH?{vo?eDF ,w?;ބ?/5@k@H@M@M@M@ xF@M@ح@M@oh@M@u"@M@ѷX@ƃn@ƃn@ƃn@Ɓs@ƃn@Ɖ7Kƨ@ƃn@Ƃ I^@ƃn@ƃ@ƃn@Ƃ&I@35S&@352a|@1kS@1kQ@1,j~#@1+lC@0ce@0N;@0ce@0?@0ce@0!.H?| ?W[?=?Kh?Q;}?a\?pf@iqu'@J@;"@;1@;"@;dZ@;"@;^5?}@;"@;v@;"@;YJ@;"@;4֡@ w@ +@ w@ \(@ w@ `A@ w@ -@ w@ hۍ@ w@ ;5@5~($@5m^@/tj@/A [@.Z1@.?@-z)_@-z)y@-z)_@-{"`B@-z)_@-z)_?|O?ߋb?*"AaI?eU5?2A?:?1j? aҹz?s8r?-I`K?إ<(?Uyu#?W?򯞼?֘>D?hB^?pk Y?B @@@@@@??????-U?(U?y? @; @ ޯ,?Hb3l?AJ-x+?֏[$?|@gJ@2 Ĝ@-@2 Ĝ@ qv@2 Ĝ@%1@2 Ĝ@r @2 Ĝ@qi@2 Ĝ@1@9Q|Q@9Bѷ@6+ J@8Qn@5t@6Fs@5a:S@7u!S@5a:S@5DɅoj@5a:S@5%+a?:%?̰C?Ђx6?VI?֤??CږF?ԥ(Щ?h2E?p?5Kؘ? +5?RP?➪U?*'n? 2,?݃?BXFzS@@@@@&@*???????T~| Pm4?~>?7@j]@ + ??Ýq^@ݧbF@8NE@mIY|@L@ I^@tj~@ I^@ :)@ I^@ +L@ I^@ @ I^@?@ I^@m\@\O;@\S@\O;@\S@\O;@\e@\O;@\[V@\O;@\ qw@\O;@\Zc!@7s@7!-w2@3 ě@34֡a@2-V@2xl"h +@1D*@1S&@1D*@1+ I@1D*@1??}?.jM?ub5?G?X?I?}ѿ,?rnc?9Y,?9~F?dLt??hE?=fA:?'#g?hSp]?=P|?TI@@@@@(@&???????y$?d~?ePEI?U7m@R @\e?,1\?uќ=@&;?}@g\H@M@X4j~@X4j~@X4j~@X5!@X4j~@X5?|@X4j~@X4D@X4j~@X4m:@X4j~@X4zG@(@j~@(@@(@@(@쿱@(@#@(@1'@2p4m8@2p- r@-Ƨ@-a@@-cnP@-b`A@,jf@,6z@,jf@,jf@,jf@,6z?^Q5P?°R;?>f?|*(? 9?/]?bV,?%F?~Q?; $?A B{?M\ٓ@?b@?3;?u@>N ?8 ^?a+?a+@@@@@*@ ??????, p>?ыGKx>b9ԇ@X4ѐ@ܑ?%? ) pn?Et? I j,@s +~@N@bl1&@bl1&@bl1&@bn@bl1&@bra|@bl1&@bw'@bl1&@bx}H@bl1&@bw +=p@-V@-V@-V@1@-V@12X@-V@6E@-V@7X@-V@6Fs@0B䎊@0Be+@-`A7@-B@-h1&x@-b @--C\@-#S&@--C\@-#@--C\@-#eN?^Q5P?? +tI?ׂa?~9n4?oNR?bM_x?&uE@?DP?j?4.? Ӻ^?bMky?.x? ݎ8?l?Rv?“y@@@@@,@*??????5u?WO?Cj=S?&PNkxO@bw}e@6 ?R[?5 /|B?W ?`I7"@rߓ@O@ dZ.@ dZ.@ dZ.@ dZ.@ dZ.@ dZ.@G{.@G{.@G{.@G{.@G{.@G{.@8*0U2b.>@4+.Mm@3V.Qn@2D*.NC,@2D*.NC,@2D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 P@4{lD@4{lE@4{lD@4x@4{lD@4}K^@4{lD@4@4{lD@4zc@4{lD@4|64@qm@o;dZ@qm@o@qm@nzH@qm@p)^@qm@t*@qm@tO @5 xF@5@3W+ I@3Vaf@2K"`B@2H*0@1u@1.H@1u@1D@1u@1m8? ?5{#? '?'$5?(+Zk?ʟ?1j?\?;~?{d?H<?U3p?{V?3a=???$?k!l@@@@@,@"???????'}}`?O?C[VZ?.]@4|>@q뭼 ?cP8Dj?Oj.M?6h?,.W@gs8a@Q@lglC@lk %@lglC@lm]j^@lglC@lxb)@lglC@lx+@lglC@l[@lglC@lz@u@ܶƍ@u@ꗵ<@u@@u@ۭh@u@,?@u@`@7@8D@3S@36a0@3lj~#@3k/+@2}ce@2qGg"@2}ce@2q +ӌ@2}ce@2p݁C?D6?E?קa?R=?l~?LeT?%t;?Z=?8?8Y?bڑ?`?KaOb?&?ipR? ݮ5?6 a"?=E8?,:@@*@(@&@7@3???????k(?a瑭"?`0ֲks@lx[8o@?{[Ds? +w?@`?Dž^<@l*r>@R@/.@/@o@/@iB@/@R@/@0U2b@/@s@(.@(@,zy@(@$e@(@?|h@(@m9@(@tj@0.>@) +~"@) +=p@(wO;d@(m^@&73@,;6@&73@&҈q@&73@&%1@8 +Ny??,Z@67U? +0ggk?4g9?aYZq? ?pN.>7E?no?[ș8?hE?{0?WZ? `@@@@@&@*??????Da2?JA?E*!@^l@?"k4?Z_2w?hsƈ?{R?ͨߔn@qV@T@ ě@;dZ@ ě@H@ ě@|@ ě@{@ ě@{@ ě@&x@dx@dx@dx@dXy=@dx@dL_@dx@dE86@dx@d9X@dx@d_o @4[~($@4[$@1c@1d!-w1@0Ͳ-V@0>@0Q@0(@0Q@0ce@0Q@05Xy>?|O?'? ??b?V^?w'?| ?p RN%?"a?j?=d^?U3p?=Ca?O?ʳ_?v_.^??\?k!l@@@@@,@,???????0jh`?+{P?vx$N?"|>@l}d@db6? cPG?C _=?LwzL?5Pg$@fbُ +@U@7Kƨ@;dZ@7Kƨ@eO@7Kƨ@@7Kƨ@@7Kƨ@-@7Kƨ@ۼZ@`(@`XbN@`(@`e+@`(@`s@`(@`<65@`(@`cB@`(@`dZ@7įO M@7nP@3|hr@3(\@3-@3}Vm@2._o @2)rGF@2._o @2'eں@2._o @2H˒? ?sp?Uy*>ǜL>$@h@(?~'b? F?Hu[9?DFLx0@gpa@X@O;@Ƨ@O;@@O;@a|@O;@͞@O;@N;@O;@䎊r@y4j~@y3E@y4j~@y:v@y4j~@y9b@y4j~@y:)y@y4j~@y;n@y4j~@y=@8g l@9d8@4+ @4F@3V@3ce@2:S@2jOv@2:S@2n@2:S@2ۅQ?}?Tے}?=5?niʢ?(i^?"X??@׮? ?,ў?$Z?\ũU?&-?xCZ?Aᆽ?q+U?HAY?Oh6c@@@@@,@&???????W,d?`"a?IO*(?(BӜ@w@y:%?/%-`?F32H(?E{YH$?|?q@p&q@Y@/@Q@/@&I@/@;dZ@/@ں@/@m\@/@@̠A7L@̡G{@̠A7L@̠҈@̠A7L@̥`A7@̠A7L@̣A [@̠A7L@̣,zx@̠A7L@̧#@5*0U2b@5_o@3.5?|@3-}H@2Htj@2GO;d@2(@2(1&x@2(@2(˒:*@2(@2&IQ?1j?`[?:?Њ?q?A!X?Br??xrI?2'?\d?6m)? 3W?oܧ?ѿ,?~$?bv{3dZ?P\?T@@@@@"@$??????"a?Q^̤?3};t$?7b|(kr@H@̣?SfQ +?W:Ks?ҟH|?h9l@g/e+@Z@(\@)^5?@(\@7sQ@(\@2p;@(\@?|h@(\@>iB@(\@fFt@71'@7lE@71'@7ڹ@71'@7Z@71'@7=L@71'@7&@71'@7}H@4@4-V@0 I^@0D@0'KƧ@0!R@0:,<@02@4n@0:,<@0&@0:,<@0'fA?|O?gˣ?ھ?؆{~? )?'t?|O?p RN%?tP*?j?5D?j^q?~/M?Ф?/X?bv{3dZ?a眷D?tl@@@@@ @,???????~#|KS{D?VVn?Fr\@47@7Bz?pWZ?a?S? wp?ʕZ{@ax@15d@[@j~#@h\@j~#.@j~#.@j~#.@j~#.@j~#.@zL@zN\2@zL.@zL.@zL.@zL.@zL.@7䎊@7XI@3S.Mm@3A7K.Qn@3&YJ.NC,@3&YJ.NC,@3&YJ.NC,?Hg @8#@8:@8 >+@8I@8?o"@8@8i@8@8S@8?Y,n@8 *@8p@8@8 @8 @?\@)g-.@)g-.@)g-.@)g-.@)g-.@)g-.@h(.@h(.@h(.@h(.@h(.@h(.@8qiC.>@5^5?|.Mm@5v-.Qn@4̿[W?.NC,@4̿[W?.NC,@4̿[W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 ]@p +@-@p +@`C@p +@ۋr@p +@6@p +@b}@p +@@F$/@I^5?@F$/@P ě@F$/@xe,@F$/@F&@F$/@pbM@F$/@lq @8YJ@86@45S@4!n.@3`A7L@3mjOw@3O M@2s@3O M@2\@3O M@2 M;?I~y??|JO?F?l?/߲^|@s @_@mV@a$/@mV.@mV.@mV.@mV.@mV.@;lD@A$/@;lD.@;lD.@;lD.@;lD.@;lD.@8?@88TɅ@5+.Mm@5"-V.Qn@4QiB.NC,@4QiB.NC,@4QiB.NC,?}@8#@8:@8 >+@8I@8?X@8@8i@8@8S@8?ʳ_@8 *@8p@8@8 @8 @?`@ I^.@ I^@xl"h@ I^@#@ I^@@N@ I^.@ I^.@YO;d.@YO;d@Y:)z@YO;d@Z ě@YO;d@YR<7@YO;d.@YO;d.@7O M.>@5S@4H˒:@47Kƨ@4!.I@3YJ@3;5Y@3YJ.NC,@3YJ.NC,@8J?;)ry/?Ɣد? @8I@8@8J?0?ċIVq?Eɨ@8S@8@8p?r +e&#?þسq?oQw@8 @8 @@@???a@"hr@"-@"hr@"B@"hr@"l@"hr@"n@"hr@"p +@"hr@"TɅ@ 7Kƨ@nP@ 7Kƨ@KƧ@ 7Kƨ@4֡b@ 7Kƨ@T@ 7Kƨ@w4m@ 7Kƨ@s@7*0U2b@7"h ԕ@4}hr @4v$/@4`A7@4iDg8~@3sh@3ۋq @3sh@3 @3sh@3\)?]?d^?;w{?ߦ>??XP#?]?&ژ?#fL +?f *N?QE?#?*wjs?XԠ#{?KxMR?q?VM?N;?@@@@&@,???????5ma?0{?U$+'?N1J@"ߞ: @*RX?e|kP?g#? ?8m?)-[@3{ I^.Mm@2`A7.Qn@2m8.NC,@2m8.NC,@2m8.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 c@n@y"@n@mhr@n@q[W>@n@gK]@n@ezxl#@n@f (@M@GlC@M@["_@M@P{@M@UXy>@M@Y~($@M@WsP@7`D@7au@1hr @1RT`d@0Vu@03@0 [W?@0 ^@0 [W?@0?@0 [W?@0'RT`? ?Ug@@@@@,@*??????vlYQ?q o?Qߛi ?Jʻ(@nN@O?m[_?h%8.?xc^?6V@dWr@d@}\1'@}]p +@}\1'@}n;5@}\1'@}o@}\1'@}$tS@}\1'@}'Q@}\1'@}bM@+ I@)^5?@+ I@!$/@+ I@)B@+ I@@+ I@hی@+ I@rGE9@5@@5 ԕ*@6hr @6&x@6V@5Xe@5(@4͞@5(@4`A7L@5(@4oiE?|O?+?q?T%?xTl?N*?|O?|Fef?7tg?&*N?gz?5t3w9?>Zw~?e?MB?U]^,?EL?ھ۲@@@@@(@(???????=̀?g˯N?|6z@2_o @2YJ??@@No9?B 'nr?U=K?bJֵ?F?g1?PuN?+l?M =?YNژ?H? +eKs?8A?]b?bv{3dZ?I$? {t@@@@@"@(??????\“^rC6?nS l?S~Ȇ@sI@·rd?}jo?`fe@/sD36?XTW@p/%Æ5@g@nO@w@nO@ov_خ@nO@p +=@nO@m q@nO@pD@nO@p )@kI^5@k1&@kI^5@kУ +>@kI^5@k)^@kI^5@kЖ@kI^5@k˒:)@kI^5@k I@7䎊@6v_ح@2ahr @2cS&@1-@1fB@1a:S@1g&@1a:S@1cn.3@1a:S@1dFs?Ol?: ?jhq9?,Z?o?P??#?Y͍_?uie?i?V\F?SY?to(?C ?]ivL?/X?[?{2?DV@@@@@,@,??????]ZP,?Kxn_?DA)Tل@r@kr@?kW:?d~#^?uP*K?o@h>>w@h@s-@s\(@s-@s@s-@s ě@s-@s@s-@shی@s-@s1@O@@O@w@O@{J"@O@hی@O@+@O@2@4*0U2b@4 @/"`@/>BZ@,;dZ@,|hs@+Ǔݗ,@+dž&@+Ǔݗ,@+Ǡ k@+Ǔݗ,@+Ǔݗ,?|O?GA?!!׋7?/? 9?2I/?|O? aҹz?A)N?7枪y7?֧QD?X78?m!?u?8*?ʬv?a+?@@@@@,@(??????ˀ?.V?Ǚ?@sY3r&@a2+?? ?5{^ކ1??wTC0@g[@i@;ě@;`A6@;ě@;\(@;ě@;G{@;ě@;ě@;ě@;@N@;ě@;oh@7-@7G@7-@7;5@7-@7L/@7-@7R@7-@7]c@7-@7͞@7Y*0U2b@7B<64@1 I^@1ڹY@1W-@1V '@1~($ @1kP@1~($ @1*0@1~($ @1y ?)T?J`Y?"?Rw#z?ԁ?4?F/P5?5CQ?ܿ?-I`K?W;zY?.8 +B?Z?Rii?],m=?v_.^??\??\@@@@@(@*??????OI=H?oK ?9> ׫?Q_Xe@;k@76E?W|oJ?qy .?r+p8?fٴk+@i!y@j@M@"`@M@fB@M@b}@M@`A6@M@b|@M@`A7@"`@-@"`@?@"`@@"`@]cf@"`@n@"`@n/@8>6z@8p:@3I^5?@3!.H@3W-@3ZS&@3m8@3&@3m8@31@3m8@3?|i? ?+!?XY?ׂa?yq?*Mis?(eI?6c?A +;?|lU?a]?Qʾ?p`D?*J?+ ?C SG?|)-}(@@@@@@???????_O:$RCu?Hw?Z-ʋ@P,{(@i?q_?kr +?ٺX?TbBO@r>:`@k@PE@P+ @PE@PE@PE@Pᰊ@PE@PwkP@PE@P '@PE@P҈@}E@y@}E@~Ov_@}E@K]e@}E@$ x@}E@xPH@}E@~҈p@8|Q@8R@3hr @3x@3PA7K@3LC@2xF^@2?@2xF^@2@2xF^@2}Vl?1j?Ѝ`Hh?K9\?㬱_?bC?#gh??j%Ra??íuA?W ??vk? ҇?[L?q' +B?a?"#?P^eNQ@@@@@,@*??????BC}?@oqI?`1Xk?c̽f,@PF@~?ryP?,A?."?~~-m@h V`@l@Stj@==}mq@Stj@@Stj@ :o@Stj@@Stj@+@Stj@W@!@8Q@!@/F@!@1T@!@2qI@!@Z@!@.H@7䎊@7tt@4?|h@4U@3~"@3J!"6@3fYJ@3Tf@3fYJ@3Cp~W@3fYJ@2lC?6]g?fA?QO&7*?5 +z?-T?H[ RC??'P?m'x?2"??NG +?d +Oe??{b?r7\?!N/p?ki?3s@@(@,@(@7@*??????Rԥi@f ?k#L4?s4@{@,Ż?9Q)Mf?x~?{0@ f0@dU @m@Ձ$@Լj~@Ձ$@ȴ9X@Ձ$@֔Fs@Ձ$@8YJ@Ձ$@՛=@Ձ$@`d@@KƧ@@+@@[W@@@n0@@)y@@_@7-v@7.2X@2+ @2=b@2"-V@2"T`d@1O M@1v@1O M@1!-w1@1O M@1쿱[X?us\?1?ՠΆ{?gk\0?״6z@9g3@4ٺ^5?}@4ߪ͞@4ttj@4y (@3D*@3쿱[X@3D*@3_o @3D*@3'RT?}?$? 1B?GZ0e;? ا ?!2f?1?GE?Hyq?)h?Z?2?W|DC?Cns@@@@@,@$??????6nۜP/:[?@$ ?S]^0_@O] @\#R,?U^.(?mHE?,xc?=?i&C?7PK?~7q?m?%aȲ?]k7?]m3ƌ?2X@@&@$@*@7@9???????UcFc ?clj?cC@1V@ao."?(ZN)?M@]KV?H:@c@r@>,1&@>> [@>,1&.@>,1&.@>,1&.@>,1&@@u@>,1&@=# +=q@)n@)V@)n.@)n.@)n.@)n@B I^@)n@.V+ @9|Q@9 +7?1k@5pěT.Mm@4-V.Qn@4_o .NC,@4_o @31@4_o @4֮}Vl?C I@8#@8:@8 >+?WTi?d?_o_d@8@8i@8?-Ci|?1=IL?-@8 *@8p@8?q2?]ws@@@???s@Ob`B@O`ě@Ob`B@Oa]K@Ob`B@OC@Ob`B@O`S@Ob`B@OHG@Ob`B@OR @ 7Kƨ@]y@ 7Kƨ@&@ 7Kƨ@[@ 7Kƨ@I@ 7Kƨ@r(@ 7Kƨ@c@8 _o@8 #59 @2E?|h@2#2Vi@1~Vu@1RzEn@0iB@0C@0iB@0b5@0iB@0z&W?]Ov?m@pZG?[?K;0?Ҧ?z9?/?)?!vqG_?(?qQ'?`R?e ND?HQaG?f-%l?V5?&X?E L@@ @$@(@2@3??????lE`?e65?qP~*h@OUJk@ю?X?I%?' f@" @nl.:C@t@}bM@}+@}bM.@}bM.@}bM.@}bM.@}bM.@ßvȴ@öȴ9W@ßvȴ.@ßvȴ.@ßvȴ.@ßvȴ.@ßvȴ.@8*0U2b@81@4hr .Mm@3t.Qn@3iB.NC,@3iB.NC,@3iB.NC,?@8#@8:@8 >+@8I@8?X@8@8i@8@8S@8?뼑:@8 *@8p@8@8 @8 @?u@+R@)^5?@+R@+C,@+R@ح@+R@Ce@+R@/w@+R@>쿱[@]eS@]glC@]eS@]>vȴ9@]eS@]J=p@]eS@]XbM@]eS@]Sg@]eS@]D+@5*0U2b@5@20ěT@2XTɅ@1KƧ@12W@1 +0U2a|@1":)y@1 +0U2a|@1\@1 +0U2a|@1 xF^?F/P5?Na~|>?%'^?OXi}i?p?p?| ?~;?Sw?u/?0?)?lBCk?],V?+>G?. ?"x?o(?8~,@@@@@,@&???????oQyZ?Y7?Ck}@/@]]̽?y_~? B[?5}'?eV?S)$?X?@?!2f?X?Oy?_?`ֆ?B*Z?y?y5?6?5"GW?sq?d?ҸBz4@@@@@(@&???????rSl?QZ`E3?PM.$@ +Mt@qiN4?e'?gbS? +X ,?ҜY@o @z@A7L@>70@A7L@y7@A7L@?@A7L@wo @A7L@Let@A7L@[@ +=@ I^@ +=@G@ +=@P@ +=@򌬑@ +=@n@ +=@PA@8zqiC@8+[@25?|@2=L@1j~@1s6z@10@11B@10@10~@10@10m?,(g? +׷?r+@8I@8?@8@8i@8@8S@8?p̺@8 *@8p@8@8 @8 @?|@%@%zH@%@%O,@%@%]/@%@%@%@%@%@%,v{@WI^5?@WI7Kƨ@WI^5?@W-H@WI^5?@W1"ۡy@WI^5?@WYSP@WI^5?@WaCUӈ@WI^5?@Wa'@1s@1;dZ@0 +^5?|@0 +T@/ΗO<@/9@.`d@.K+I@.`d@.E@.`d@.m]&?^ee?Ϧlۄ?{ͱϑ?@ Q?T) +K?ϡSbw>?bO;C?\ӯ?@?.G? ]?|5?&?bb˙?:(?[c? =?eˍ?@LD@ @,@$@*@7@7???????C?_{l?0 |3?C/nT\.@%qLw>@W^6 ?uVi?Ʈ#;@rғ\@}@7@Ižz@7@g/W@7@Y~@7@ߤ@@7@5W@7@rGE9@xQ@x?8Ie@xQ@v@xQ@wO;@xQ@wV8YL@xQ@v3@xQ@yp'R@9(YJ@9&qi@6pěT@57@6V@4u84֡@5_o @4 ě@5_o @39XbN@5_o @75??j |?ܡuk?NxZB?ľ}'0y?%Oܖ?uYdP?*Y*??Eʻ)?pQ$?OY?8?|[D?enUW?6h? ~?;ܔ?=ɧ@@@@@@"??????D(?5d?Yr@rs@wUrǒ?gΙtY?a}DG@mN}@J%SR3@i~f@~@LzH@LV@LzH@Lߤ@@LzH@LN;6@LzH@Lx@LzH@Lzxl@LzH@LƧ@fffff@f+ K@fffff@fx@fffff@f˒:@fffff@fe@fffff@f,<@fffff@fq@4Y*0U2b@4X\)@2f+ J@2f+ J@2-V@2H˒:@16z@1%@16z@1 @16z@1C]?|O?j‚?X~4w? +?,I ?WA?|O?c?ǀr?#X?إ<(?]˙$>?],mBZ@ɺ^5?@ۋp@-bM@-bM@-bM@-)^@-bM@-- @-bM@- @-bM@-@-bM@-$t@0YJ@0YJ@/j~@/ߥ@-n@-$tS@-Z@-:T@-Z@-n.@-Z@-'S?^Q5P?3i?4!p?̒? f?CXs?bM_x?u߿?['?6)}?M?lINՄ?bMky?/?2Y0?xqC?f_Ԋ?B @@@@@,@(??????,</Lm~?0IP?,EX@N@-F?>-]+?;'L%?wO6/ά?p{&AE@se +@@a@J=p@a@de@a@b7@a@d*@a@c +=q@a@f?@ ^5?@p +@ ^5?@K]@ ^5?@ )^@ ^5?@D@ ^5?@Mj@ ^5?@!-@9+s@9,~($ x@4)+ @4(73@3)"`@3(K]c@35sh@34g8}@35sh@33@35sh@30`A8?`m?Ѝ`Hh?X~4w?CF ?91?HAm?[Xxp?0?t-E?r?Op?q?rR? +tM?+-/?w%?6m?*:R}@@@@@(@(???????aer%UC?b?Q4@dh:@R?r0U?gS?ٙ?6ě@pH/Vz@@|h@\(@|h@Hˑ@|h@#{J#:@|h@Q@|h@/V@|h.@vȴ@-@vȴ@Y_p@vȴ@u=@vȴ@Mj@vȴ@kP@vȴ.@8۹~($@8As@4I^5?@4tZ1@4"-V@3ק&@3kxF^@3 P{@3kxF^@3@3kxF^.NC,?)T?ts3?%16?䌛%?Ԯ>@8?|O?rO?•0}|?E)p?A\"I @8?`Ƕ?a5?k@{?7h?'@8 @@@@@,?????@R@1&@R@*0@R@u%G@R@ M@R@ ҉@R@-V@ffff@x@ffff@;5@ffff@Z@ffff@p@ffff@@ffff@˒:*@4+s@4+S@1S@1e+a@16-@1,u"@0m8@0-@0m8@0~($ x@0m8@0p +>?}ѿ,?'Qp?b/?ѮvtQ?t/1 ?dkU?| ?@`WӐ?h?= 6?z&>?TS?n88?9WTW?US9?*Q_? +e?L.C-@@@@@*@*???????YK] ǀ?_p?[ς@@%?tט?qs0?1:X[?~|@_X@@&ffff@49Xb@&ffff@RT`@&ffff@s@&ffff@$t@&ffff@}H@&ffff@>6y@@u@@C@@̥zxk@@յs@@7KƩ@@=K@8䎊@8}p +>@3c@3PIQ@2~"@2)_@2&YJ@2 #x@2&YJ@1t@2&YJ@1˒:)?X?Ѝ`Hh?BI{?`ĉ55?,j +[?=c?h??[u?AuG1? 3լT?ɬ\?p=D?=c"?XԠ#{?q6tN6?k.A?Q?]?İ^@@@@@*@*??????k?sK?nC0U?Yu@:Ɲ@\@Xqx?D4Ii?u2v#6?+>F?0Q@e[:@@dZ@cS@dZ@g+s@dZ@lAp@dZ@[#5y@dZ@c +k@dZ@c@9Xb@9Xb@9Xb@ok@9Xb@3@9Xb@2q@9Xb@Ib@9Xb@@45S&@45L_@1 +^5?|@1Fn@0 "`B@0=KW@/-w1@/ת,@/-w1@/o@/-w1@/< +?|h2:?R?;"ٵ?S?/] ?&X=I?}@TΥ?DZ? =׿?J?^ ?Rnw?o,qV?2sFH?˄f?is?I.?Rq1@@$@&@ @:@8??????1p&?`3k?Bob?Fek@a_b@D?a<#O?e鈨g?U? q,C@f>uJ}@@ +=q@t@ +=q@䎊q@ +=q@e@ +=q@e@ +=q@ @ +=q@9@@b`B@@b`B@@b`B@@bM@@b`B@@a@@b`B@@` qu@@b`B@@bM@@b`B@@bZc!@1_o@1"`@-~"@-0U2a}@+wO;d@+w>6z@+L/{K@+@+L/{K@+ڹ@+L/{K@+?_\p)?m?@?ArU@?6r In??bM_x?)[M@s @@\M@\@\M@\7@\M@\7@\M@\t@\M@\7@\M@\!.@Dt@D/@Dt@C\@Dt@De@Dt@Cn.@Dt@Dt@Dt@@IQ@5S&@5tj@2ahr @2bn@1-@1 k~@1p@1qX@1p@1t2W@1p@1mC\?2}? KG?Z*C?nii)?j?^m*?|O?$i %h?qN?|}Յ?=W?f:[c#?m+&?rbT?`x?< N ?7?+`ȓ@@@@@(@*??????3OA0BL?TM?0PKW@\"QOh@Cv?tV lw?P>o +?'PŶ?` @fbs@@UۥS@U7KƧ@UۥS@U_ح@UۥS@U@UۥS@UIQ@UۥS@U}H@UۥS@Uޞ@+@O;d@+@$/@+@ɺ^5>@+@@+@#@+@ƍ@7H@7>BZ@3kS@3gsPH@2tj~@2-@2Eu@2҈p;?oC?m0??A|x?~9n4?EeX?)T?;N?5 ? ;q??I}?? ?E?WhQ? $4?$jB@@@@@,@(???????qnW|?[?6ȃn9@UBX@rӹ?yY?X/̕h?#<Д?v/@kj9l@@r .@r .@r .@r .@r .@r .@o/.@o/.@o/.@o/.@o/.@o/.@3YJ.>@2; I^.Mm@1`A7.Qn@0D*.NC,@0D*.NC,@0D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @-@Ƨ@-@w1@-@ @-@@-@sh@-@A@?m@?-V@?m@?n.@?m@?^5?~@?m@?Y@?m@?N;6@?m@?я@6!.@6R<6@3 I^@3Q@3tj~@3lD@3:S@3u%F +@3:S@3g8}@3:S@3?Y͍_?PƧ$?U%x?gk\0??X|? ?ڲt?+l?#q\-v?þ_.?/\Ӂ?+B?<{?@K/{? Y? ? g@@@@@&@"???????p=^'s<?^P~?t+@7 +@?&5?z8R ?c6ZG?m6c*4@b[@c(@@ow@n+@ow@n@ow@oiDg7@ow@ow@ow@mqu@ow@l@S@ffff@S@e@S@wj@S@&@S@\(@S@|Q@5:qiC@59y @35S@35sh@34tj@33ߤ@2u@2š@2u@2Fs@2u@2?1j?6 '8?a#mU?!#?<?K&?| ?ā?1ک! ?/:?qn?.?`w?`F?A'_^?#ѧ?3?<שN@@@@@*@(??????5@QីD?*-(?0n>4@nI*@zg?Ip/2?P ,Y?$?/ru2-@f'a@@Q@W@Q@Mf*@Q@I@Q@T4@Q@t@Q@N1?@Mn@Mb@Mn@M5L@Mn@MN@Mn@M?"@Mn@MG@Mn@Mg,qz@7uS&@7tn;%@23S@23QeP@1Htj@1H63@1Q@1Uł@1Q@1s@1Q@1Z?I'%?;",?y$?LHfX)?[p2?;>z?|Ί?Cb?N{BU?ňw@8RnP@8C +=q@8RnP@8DT@8RnP@8L@8RnP@8M(@@S@@`A7@@S@@q@@S@@҈@@S@@6@@S@@e+@@S@@N@7`D@7`|@2 I^5@2"h ԕ@1q7Kƨ@1l>@0iB@0L_@0iB@0C,zy@0iB@0hr?F/P5?). +?9a?^t -a?Nty"?m\Wq? ??cu%+?3?V i!?6 a@B?CK?O? ?_u@@@@@,@,??????O]bQ}V%?Q A?4e1@8MU v@@߶h?qQ?U ?ɑɚ?{ip +@g= 2@@O;d.@O;d@B @O;d@`NJ@O;d@ +@O;d@wq_@O;d@i(ш@:w.@:w@9MW@:w@9 4@:w@:` @:w@:_@:w@:@9S&.>@5{ I^@5b!]4>@517Kƨ@53y6@3m8@3vE@3m8@3АO$@3m8@3VW@8J?롕?^?ֳ ?iꚆ?bC3@8J?̹м?-Φn?nX?}BH?ҖP@8p?0UF?#!?Q?NA. ?u˾@@(@(@2@,?????@j~@Q@j~@J@j~@,*@j~@zL^@j~@d@j~@h@)l@(r @)l@(@)l@&$@)l@!trJ@)l@#;ZV@)l@!̑e@7 ]ce@7N@3kS@3m\@3~"@3=(,@20U2a|@2 @20U2a|@2\^u@20U2a|@2΍p߃?t?WB~&?6z/?_\?K-\?=?|b@?y?i"4?y? <@@??44]?m֩?Zn@@ @*@$@9@7??????@HsN?CL?(mnl@@$kcbv?bOUD?Kr%W+@8I@8?e@8@8i@8@8S@8?yAd@8 *@8p@8@8 @8 @?@S@F@S@Z@S@B@S@?@S@1u!@S@{@&x@ě@&x@m^@&x@ \@&x@Vl@&x@#n.@&x@#n@6s@6]p +>@4R I^5@4W_o@46-@4?iDg8@4Tm8@4A2W@4Tm8@4-K]@4Tm8@4Os?wVz?oNQ?70t_c?n?N?_]?r5]v?S?|? Jy ?%v[?ӽbȷ?>ҝ-?rIs?f8?B?Nka8?lb% @@@@@@*@,???????(4?Z핂?.?ݽa@I~@~?S"X?]sC ?ı=.G?[Æ@rżEf@@ -.@ -.@ -.@ -.@ -.@ -.@%j~.@%j~.@%j~.@%j~.@%j~.@%j~.@9%!..>@4^5?}.Mm@3`A.Qn@3:,<.NC,@3:,<.NC,@3:,<.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @N@N͞@N@Nw*@N@NQ?@N@Nލ@N@Nt@N@N'OG@R@r @R@V@R@[.t@R@qu@R@—@R@ߤ@7֚,<@7Uv@3 ě@3u@2"`B@2V@2=ce@270+hP@2=ce@25JW7@2=ce@25mĒ?|B &?ukB? aMP?.bs?@sM?Q荌?t ] ?i_??Rɐ?͡?N?㾉?v'G?fP6?𦒽L?jAr?t1? TO@@*@*@,@8@7??????I..Zk?G7Ը?V̆o@N\N@ՠXŃ?o?q6b?հ%@?r~H@mO@@$/@t@$/@˒:*@$/@m9@$/@̈́M<@$/@m\@$/@6@bM@~#@bM@ɭB@bM@9@bM@J@bM@_o @bM@ +L0@8(YJ@8#@5c@5g +=p@4-@4\(@4QiB@4*@4QiB@4[P{@4QiB@4Zݘ?ꯨT?o5?П?%W$?"y??V¹?ٛP?w? ?#Vz?!kD?6hC]?{Tä=?T?z?5 +: ?l?F@@@@@*@*??????1uMrR?P67?^vl@]*@?oP'Lf?}믏]`?T?յ @k!f|@@@@@҈@@d@@҈@@b}@@?@1m@1m@1m@1.@1m@1N;7@1m@2@1m@1N;@1m@2@0,<@0,<@,Ƨ@,Ƨ@,&x@, @+jf@+xF_@+jf@+C,{@+jf@+C$?^Q5P?{j?$C@?XQ>?Ot?ˡK?bM_x? ,C?qF?Hn?إ<(?SV.?bMky?u? SF?xqC?l&?B @@@@@(@(??????Bؽ?1+?ub@FOB@1?@'=H?!vȸN(?z%rd?:Kxf8@s +b@@E@v@E@1@E@_p@E@Q@E@,<@E@S@(@lE@(@ӶE@(@nP@(@C@(@JM@(@k}@5䎊@5l@2hr @2x@2'KƧ@2"GE85@1Ǡ k@1-w1@1Ǡ k@1U2a|@1Ǡ k@1*0V?|O?'?`כm?wX/8?2F0?P?|O?0n=Q?%8?ҧ?4.?F5?T0?Ϸ+?],m=?"a??*Z}?Tj@@@@@,@,???????V;<q읂=?IBH?F7~p@Oh@ңK Z?hJP͂?e[?`d>D?罜@eG"@@T-V@T-V@T-V@TJ@T-V@TD@T-V@T9Xb@T-V@T @T-V@Tu@C@C@C@xF@C@:)@C@f@C@:)@C@~#@3H@3c @/t@/ݗ+j@.x@.m\@-C\@-V@-C\@-M:@-C\@-M:? ?j‚?WD@?|*(??}?| ?,#?)_?Hn?,Y?{L բD?oܧ?˛͇q?W ?':?j?pk Y@@@@@&@&?????? ++ +E,@?7tw'6?RM@TRVPx@̃V?W@?9?2L?~[@gv!p@@ )x@ $d@ )x@ (*R@ )x@ 2@ )x@ %@ )x@ !>^S@ )x@ @\(@=p@\(@l@\(@;@@\(@ș@\(@w߽@\(@Kp@8䎊@8@@3S@3$0@3t@3 +Gvz@2s&@2wd"6@2s&@2uPy/@2s&@2qM5?Äp? P?/b?V黀?D. +r?Ұ(=?nDyB?O3?6'@ ?!2?zO?WX.?dvG݃?I_S?zb?bc?N^@p?5*[@@"@"@"@,@,??????U[&?_>`?JYAb,?CB@ "@2?g<=,?c٥z?Uq?.Ö*@kn3@@+ J.@+ J@@+ J@x@+ J@索3@+ J@捸@+ J@Fs@H!.@H!@H k@H!@H ě@H!@H!s@H!@H u!@H!@H!t@5`D.>@1I^5?@1@07Kƨ@0n.@0#@0# +=p@0#@0$?@0#@0#*0U2@8J?m?"?菁k?@ A2?w'@8J?I?#Gf?e[|(?֧QD?'+@8p?3I#i??E 8?L? +t@@@@ @*?????@M@S@M@捸@M@eO@M@G{@M@:@M@7@+ J@+ J@+ J@ĵ?@+ J@4m@+ J@n@+ J@@4@+ J@?@5]ce@5B@2S@2tj~@1-@1R<6@1@1rG@1@1k~(@1@1?}ѿ,?@k=[?Uy*@1u@1L_@1u@1ĵ?@1u@1tk?)T?4L?jhq9?)?״ ?_u@@@@@(@,???????H> ?#uw#ѷY@2tj~@2u!R@1~($ @1Vϫ@1~($ @1`d@1~($ @1qj?F/P5?@%:!?Р'?avfڵ?6?o@@@@@*@*???????Sb?ʉGl~?kBJa@il@@  I^@ ??@  I^@ @  I^@ }@  I^@ H4@  I^@ =p@  I^@ h@QXbM@Qcq@QXbM@Q+@QXbM@ST@QXbM@Q@QXbM@QxQ@QXbM@P)~@6Q|Q@6SJ,@3ahr @3Cj @2j~@2=c;$L@2iB@1D|@2iB@1ռn/@2iB@1=?| V?Y@T?W%W?VWD^?[q)?2}hJ?pV?n?K? #?Z.J?"4M? 1?-?lo?{iO?#.?]@@@ @$@@.??????\aM⹀?CX?^p@ k @Q-Rx?k?#Ɲ@]r{04@53[@aos@@| A7L@|@| A7L@|$/@| A7L@|@| A7L@|" I^@| A7L@|]cg@| A7L@|U=@ |h@ +x@ |h@ Vl @ |h@ $tT@ |h@ +M@ |h@ +4m@ |h@ +ě@7쿱[X@7=K^@3pěT@3s{J#9@2-@2r Ĝ@2J0U2a|@2FFs@2J0U2a|@2KC%@2J0U2a|@2I^5?}?}?;?K̃?eU5?ԁ?lP {?|O? l?J?1'7?X#?ua?~$?6?Q?.SM??*Q@@@@@@???????YV8XS\?SlD?)q,sl@|W@ +LeL?q?KP2s?Y6? +|@h5`@@J O;d@J-#@J O;d@J +|#@J O;d@Jߦ@J O;d@J%%@J O;d@J[aJ@J O;d@J SS@-@Tɇ@-@;@-@Q@-@˩}@-@:@-@Mк@8G>6z@8=\E$@3ԛS@3٢t@36-@3;j@2Q@26' @2Q@2g@2Q@2vJ#?Äp??a0{"Y?}o#? ? >Ǥ?|"<~~?Xq?Z5_?xC?UZ"?zS!Ń? F?%$ ? Ur?Gt?wOH]?8Ϝf@@(@$@&@$@.??????HT?Q?3m<?8H@J@q[N?,!bG`?[ʐ[?X9J*z?.@j<K@@:^5?}@8bM@:^5?}@;/V@:^5?}@4@:^5?}@5!T@:^5?}@.qk@:^5?}@.;5@(\@$Z@(\@v@(\@tj@(\@@(\@˒:*@(\@ - @6 _o@6A@3|hr@3 k~@2Vu@2!R@2@2r Ĝ@2@2C\@2@2jf?F/P5?.5?F}?gt>? QQ0?(?qn?iCv?CbNy?cgp?Fl}?6%6?E}?`F?Me_??$jB? N@@@@@,@*??????`R䑼Q?:?cT@37L@u&p?]LOB?ួ?e:?2!@iy@@o-@o;dZ@o-@p*/@o-@np:~@o-@q&x@o-@n1@o-@n*@KƧ@L@KƧ@KC@KƧ@KC@KƧ@Mqu@KƧ@L[W@KƧ@L<@5ks@5k:)z@0+@0_o@/O;dZ@/Vt@-N;6@-33334@-N;6@-m\@-N;6@-m\?2}?Z.?U#?ݶ\r?6r In?aX? ?`5a?90?@Cv?Ff$?+d?W?˛͇q?]?3{Z? +t?j@@@@@&@*??????!s>>&?1Trso?A<.@o{h@L?QAڡX?3&1?}H?qj@h&@@kR@k I@kR@l"h @kR@l1&@kR@lL_@kR@k I@kR@kC@ȻlD@ȼ(@ȻlD@ȼߤ@ȻlD@Ȼqu"@ȻlD@Ȼqu#@ȻlD@Ȼ6@ȻlD@Ȼm@4O M@4oh@,`A7K@,S&@) 1&y@) C]@&L/{K@&?@&L/{K@&?@&L/{K@&L/{K?Ol?°R;?"?eU!?Ot?*WF?|O?%F?90?1'7?%y*=?N`?2Y0?.+?q6tN7?avh?#.?#.@@@@@,@*???????~ap ?#CT^7? dw@ @kP8@Ȼ۾?BtM?-֪?'c<3d?eFX% @h 16@@\)@_@\)@d5@\)@h@\)@~@\)@ù.@\)@хD@\S@\S,"@\S@\M@A@\S@\JءK@\S@\l݊@U@\S@\Âw@\S@\Lˌ@6@6U2@3hr @3x@3"@3쌜q +@3u@3 ,@3u@3v@3u@3t' f?~Ov_ح?Hk7?9 /?83?\ǵ"5?/J?N7?q'?XA?jKf?\s?fLO?}t7?~^O0?`xb?- ?FRv.?6`%@@&@,@*@:@7???????s?|<%@?Q?SPGBf@Ke@\fN +?kQ)d?o?]?̚rZS@a3i q@@ +=p@KƧ@ +=p@ᰊ@ +=p@ȴ9Y@ +=p@$@ +=p@_ح@ +=p@ +=p@Q@^5?}@Q@ح@Q@5?|@Q@\O@Q@IQ@Q@R<@7֚,<@7т @3J^5?|@3KC,z@2-@2+@2a:S@2a|Q@2a:S@2aN;5@2a:S@2a:T?Q,Ě?:L +?S?9.?.Kn?=?=fA:?-NI`(?ދ"?.}$?*v7?lINՄ?Fp'?)Zw?Ol?__C?k!l?L@@@@@@???????4G,?U/X?5[X?8☈@%Ǥ@=6?Iݜ&?X#_?M}gK?b]@oza^@@q7@q/- @q7@qO@q7@qTJ@q7@qLI^4@q7@qH@q7@qG&@FT@F+ J@FT@E#@FT@Eح@FT@FN@FT@F@FT@F *0U3@7YJ@7҈@2hr @2n@2-V@21@10U2a|@1g8}@10U2a|@1@4n@10U2a|@1s?oC??b? {4?W?$?Ol?Ғ](+?ud?R?6?*?ʭ#г^?????>LR_5?x@@@@@$@$???????sf<3z?g1?P@qCy>@FG?ZI?rm9?gzOJ>?w`@kr @@sE@-@sE@jra@sE@k/1l@sE@kB[@sE@k>Q@sE@kU@E@8@E@30 @E@>eH@E@D9@E@I2@E@GENO@8`D@8XNU@2?|h@1>Y@1`A7@0KTk@0}ce@0z~o@0}ce@0|c*@0}ce@0jD?Z?1Q?[Ze6?G&̮?H?4,X?Z?̡Z?6?5) ?+2?4V?A?P?܇R?9??(?uRZIr@@,@$@$@:@2???????#L]?E|7?2HQ?C@k##@F}9?BdC;?R Ph?~Əet?~H +@sXlb@@I^5?@Ix@I^5?@Iԕ+@I^5?@Iy@I^5?@Iy@I^5?@I'RS@I^5?@Ix@u@E@u@Ov`@u@R<6@u@+ @u@z@u@u@/ @/ @*7KƧ@*7KƧ@*E@*R<6@)`d@)SMk@)`d@)SMk@)`d@)`d?^Dw'?+g߶?S?XQ>?/`?*WF?bV,? +?A)N?3.Yl?֧QD?SV.?b@? ?s@a?avh?O|q?O|q@@@@@,@*?????? p+P*>4Z?0,@II@\E?';&?$Y?KO?CTd5r@s@@.@.@.@.@.@.@3z.@3z.@3z.@3z.@3z.@3z.@8S&.>@48r Ĝ.Mm@3'KƧ.Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @}p +@o@}p +@ qv@}p +@Fs@}p +@ὥ@}p +@HK]c@}p +@- @Aݲ-V@AƧ@Aݲ-V@A C@Aݲ-V@A]/@Aݲ-V@BD%2@Aݲ-V@A#@Aݲ-V@AM;@8[~($@80@3?|h@3`d@2v-@2i k~@1D*@0@1D*@1ae@1D*@1}H?'[ V?ȔS?ƀvFd?T ?C7@O;@Xe@O;@l!@8w@@8or@3S@3E@2-V@2@1a:S@1bm@1a:S@1cZ@1a:S@1cnP?}?#T?=P?$? ?5@4@4S)@4b-V@4n٠+@35sh@37庭ά@35sh@35f@35sh@3n<@8J??1?oM"?W}8?pȭv?!k$_@8J?ܚ?g^}?G% ?9.? +`?Pa?nK/?`w?9o?ʳ_? ???\?Rv@@@@@(@,??????+AU 5?*k4??kJ@Bs#A@E+x?Jxu?5Yh5?-?v_á@f{@@Q'lC@Q'lC@Q'lC@QFYJ@Q'lC@Q-M;@Q'lC@Q#@Q'lC@Q&Ft@Q'lC@Q*ڹZ@I^5?@KS@I^5?@J͞@I^5?@V+j@I^5?@L@I^5?@QiC@I^5?@P ě@7[~($@7^$t@2+@2u%F +@24tj@2#&@1B@5@1:ڹY@1B@5@19|@1B@5@16 '?)T?Vjn?/T?zRU?BPbC?W4??;TMn?Z7?,ў?Hد[?)u%? uf?vv?6~A?< N ?w w?屘@@@@@,@*???????Lj`?S⛤?H7g?A"FS@Q',@N)Lf?hLd?^mzlj?lN D7?@i=H/`@@H9X@BM@H9X@JL@H9X@Iᰉ@H9X@GRT`@H9X@F@H9X@H@"@;dZ@"@4m@"@"@"@ k@"@@"@-@87@@823@3pěT@3r&IQ@2tj@2@2n_o @2ohۋ@2n_o @2p6@2n_o @2q4J?Y͍_?tH?~"?Rw#z?r {#&?Q`?K{O?PuN?kCnL?^W.?V?*%>g?&?)h? + l]?"a??|)-}(?`i2@@@@@*@,???????UlR>]2?4ds!?G}[ɭ@F¢@=Z?UƇ"?_vz? +g1?3w>@no@@q&x@o @q&x@E9g@q&x@kHĘ@q&x@k@q&x@cr@q&x@z?@.w@.v@@.w@.]ث7@.w@-l]@.w@-@.w@.gFd@.w@.h@7DO M@7@JK;@3; I^@3.c5u@27KƧ@2抝t@2z,<@23]@2z,<@2S20@2z,<@2U ?eXW? ?|i=? c??}?(_]?3?C#]?ѩ.?l3?lf|?ږَ? H3?y?yyȧ?*niC?W@@$@@(@;@8???????U4^c4~"?l;?lJ@qlj&@.lW+O+?}l[:?Xl@g ?sr(@e7@@@ow@@wKƧ@@ow@@oDG/P@@ow@@qFݗ@@ow@@p@@ow@@mFW@@ow@@ml@4V@4"M@4V@4"u@4V@4@4V@4 @4V@4 ?; @4V@4oJ@804m8@8=\(@3?|h@3T@2Ͳ-V@2|@23&@26@23&@2:Y@23&@2;?Z?P 6?N6?OO;V?-??Z?h)-?ɡ%?39M???A?-dʦ?>JM?t66?[!.?Vm3Y@@(@,@@<@:??????Wc?]&B?0D9\?L*z5S@@nv@4??[8 ?Z3?t}*>d?Bt@r8@@S I^5@S @S I^5@S 5Xy@S I^5@S &@S I^5@S U@S I^5@S ~)@S I^5@S a@t@\(@t@S@t@?@t@@t@?@t@%2@54m8@5u!@1n5?|@1nu@0]V@0]qu"@/b~@/"a@/b~@/ (@/b~@/6D?| ?%ñ?e +!C?ArU@?2A?7F?| ?0n=Q?LE?Y?=d^?m/w+@8I@8?ҸBz3@8@8i@8@8S@8?Aᆽ@8 *@8p@8@8 @8 @?@1&y@1&y@1&y@9X@1&y@ @1&y@ 7Kƨ@1&y@ݗ@1&y@ݗ@0zG@0zG@0zG@0Ʌo@0zG@0m9@0zG@0Լj~@0zG@0D@0zG@0[@0쿱[X@01@,\j~"@,\j~"@*|1&@*|?@*\ߤ@@*\Q@*\ߤ@@*\Q@*\ߤ@@*\(]?^Q5P??(? Y?/`?tJ?bM_x? +?90?0N:s?@?N`?bMky?~('?q6tN7?͓E'?Ѐ>(?l&@@@@@&@*??????HuG?4?0eL?{Y@=@0;å?>WM ?kMh?wRD2?!z"@@sU@@Jo@J~#@Jo@<#@Jo@,@Jo@)y@Jo@qu!@Jo@ xG@@XbM@@d@@ؓtj@@Cn@@P +>@@)^5?@6qiC@6ߤ?@2|hr@1ѷY@1b-V@1)lD@1iB@0m\@1iB@0y @1iB@0>BZc?ٛP?Q?F.?ʺd9.?qS=?y?Y͍_?1Q?c2M?A?,Q0b?r +?t +j?anñ?҃N%?<-V?&?Oh6c@@@@@,@*??????p' ?'l`?Ow?}Exw@8@ˇ?mb'PN?'| a?!ʶb?yAĈ@`""@@lC@-@lC@˒9@lC@ᨚu%@lC@TɆ@lC@YJ@lC@YJ@TF@U?|@TF@TɅo@TF@U*1@TF@TO @TF@U?|@TF@U%F +@+@+@&kƧ@&kƧ@$O;d@$O;d@$73@$73@$73@$73@$73@$D+?^Q5P? ?m?8v?DE?tJ?bV,? +?j?/Z?(T >?N`?b@? ?nwg?~\?h?#.@@@@@(@,??????R ?+t?7 +9n4?N@R@T^?F'>\?*pƮ?&CLAA?NaJ@s*)v@@n@;dZ@n@Xe@n@],@n@捸@n@8D@n@be+@;@;Q @;@`u?2ci?j8n?1'h +?Nϸ?(ƴ? \d?÷?o ?־c[@@@@@,@(???????؜DGKx ?[?{E[a@ē1u@;H???:2*Y?zZ@y?щ3@d|EgL@@zN+.@zN+@zPP?9@zN+@zO2!@zN+@zP@zN+@zMȊw@zN+@zMӾq@\Vu.@\Vu@\V@\Vu@\Y*@\Vu@\V:@\Vu@\UzO@\Vu@\U\;@/A'R.>@*$tj@*$}@(E@(4@( +#9@( 8@( +#9@( *R%@( +#9@(.])@8 +Ny?V?Σ1?.mA+?+?\XV@82r??=?|v*?3FNc$?~@#Z?OZQE@8L?T?q?懒nW?ҕ@?i= @(@,@2@=@9?????@|h@$K@|h@ @|h@fL<3@|h@ +Z(@|h@f~@|h@n@kR@$M{@kR@RN:@kR@u.МS@kR@vI@kR@oo@kR@t| =@8_o@7)s@5+S@539I@4A7K@4/@4ush@4"#*@4ush@4&7@4ush@4"&?@l#?׮ ?߱?y?\l5w? j?#{W?+21?(w?=#o?MZЮ?b4?K:q?0m +i?f?R]?.:N?eq+k?>┅@@$@$@,@<@8??????G.o?Ix ?n|NW?l7y]@P@r7?}j:?|^ʲ ?*7]?j@5)@s-5@@+1m@+2-V@+1m@+5!S@+1m@+1iC@+1m@+/o@+1m@+1@+1m@+4SM@8@9+@8@84֡@8@6z@8M:@4@ ě@4Ft@417Kƨ@4>5?|@3!.I@3"T`d@3!.I@3t@3!.I@3??_$?%ñ? 3з&?K?3;5??% ?u߿? q)?Z.?h?'qTrQ?*?ڱP?p?'w?cZ?K&?Us@@@@@,@&???????])T?bI?vjCUR?OBzWO@'uj@^1o?lY?q4@:?Ż @oݪz@@p ě.@p ě.@p ě.@p ě.@p ě.@p ě.@F.@F.@F.@F.@F.@F.@74m8.>@3S.Mm@3 "`B.Qn@1&.NC,@1&.NC,@1&.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @ěT@ěT@ěT@š@ěT@J@ěT@o@ěT@S@ěT@n.@&x@&x@&x@&ffff@&x@%84@&x@%ں@&x@%F +L@&x@%n@3۹~($@31&y@0!hr @0!n.@/mO;dZ@/m@.Vl"@."`B@.Vl"@.wkP@.Vl"@.C,zy?]??K]4?MA8??t?]?NۈV(?CXs?3.Yl?IM?ȏ'T?*wjs?l?֘>D?k,?SP?M684?@@@@&@&??????H+A!3?0ßݕ1?)0^j@@%!?@4^3?87,?xx?iUa@sB@@sE@v+@sE@{J#;@sE@l"h @sE@tm:@sE.@sE.@p@p @p@pV@p@p@p@p>6y@p.@p.@8,<@8I@5+@5҈p@4Ͳ-V@4- r@3,<@3($ x@3,<.NC,@3,<.NC,?$?"O.ڗ?E?yFc@8I@8?| V?,Z?is?*o@8S@8?5`b??E?"Ԛ@8 @8 @@@@????@1&@9X@1&@a@1&@˒:@1&@g@1&@l>B@1&@ush@dZ@S@dZ@a@dZ@ߤA@dZ@~'@dZ@v_د@dZ@`A7@7>6z@7eں@3hr@3]ce@36-@3qiC@2:S@2|Q@2:S@2z)y@2:S@2|!-x?us\?P񰦍?br !?~ +]z?HM?}}?1j?K26?(?vEB?>΀m?^U?ʳ_?5?ʭ#г_?O.ce??OONS@@@@@,@,??????R6ksT5?u.?JH<@i:@ +?n٤;?f(d?Z\?Q @c&Ѓ@@9V@9(@9V@9`[8@9V@9˒:*@9V@9V@9V@9e+@9V@9E@61'@6"M@61'@6@61'@7@61'@7 +o@61'@6[/V@61'@6U=@8 ]ce@8\(@3@3i k~@3 -V@2ƔFs@2 k@1а{@2 k@1Ͼvȴ:@2 k@1o?qv?ǩ2?(b?o]އ&??pt#??ҸBz3? W~?%i|?ѹ[0?<ՖEI?I2}?P@?!?; Ր?0eʪv??%d?aʕTI@@@@@ @*??????zc ?0?Y1/~|?7D@9 h@6X-u?s$etg?L ?ȋǧ"7@*o \#j@hh +@@dZ@00@dZ@@dZ@N!/@dZ@o5@dZ@@dZ@b@Kvȴ9@K3$@Kvȴ9@KD@Kvȴ9@K@Kvȴ9@K\yL@Kvȴ9@K$P@Kvȴ9@Kg^@8!.@8 @4|hr@4$wMp@2Vu@2p([@2!.I@2o@2!.I@2Չqm@2!.I@2Uc?2?3?YsN?V-TL?=?{?J\m?%?0{rw?m?$,3?]?._?- ?bs?4YQ?&N?mt +@@@"@&@3@*??????1`?>&8p?Kx~ҁ?Eeʓ@@K?`5Erx?e3]]?e{N?Zj64@p*܀@@ I^5.@ I^5.@ I^5.@ I^5.@ I^5.@ I^5.@nP.@nP.@nP.@nP.@nP.@nP.@6-v.>@2^5?|.Mm@1n".Qn@0‚@5.NC,@0‚@5.NC,@0‚@5.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @p +=@VE@p +=@L/|@p +=@8*0@p +=@S&@p +=@l@p +=@lcA@G{@F@G{@3@G{@5fA@G{@\(@G{@ ě@G{@+@8,<@8u!@55?|@5\(@4Ƨ@4c @4Y~($ @42<64@4Y~($ @4Jc @4Y~($ @4MVl"?K{O?'5?np?]\?|QS?6|Ob?ϱQm?%!{A?Z42?`ؤ?M#?¤n,i?NN7?ɚ?u?'D[?xfr?io+p@@@@@*@"???????thiD+?vh}?zGW@ae$@ ? ?h6E-y?t;@B#@l۠@@3E@3E@3E@4,<@3E@43@3E@4Fs@3E@3Mi@3E@3Z@Qhr!@Qhr!@Qhr!@PD@Qhr!@P|@Qhr!@Q_@Qhr!@Q4K@Qhr!@PD@05S&@05S&@*V@*V@*:1'@*9Y}@(@(vȴ:@(@([W>@(@(˒:)?^Q5P??&??eU!?/`?ˡK?bM_x? g?ܿ?6)}?A B{?PS2K?b@?~('?q6tN7?͓E'?O|q?Ѐ>(@@@@@,@*??????:s"?ї;?x@3튰@QY?$Hj?$ࡾ>?D/-ђ?C(ap@s_p@@xG+ J@xH1&y@xG+ J@xI @xG+ J@x)l@xG+ J@xHK]d@xG+ J@x7@xG+ J@x=+k@2 Ĝ@2-V@2 Ĝ@1N;@2 Ĝ@0$u@2 Ĝ@>m\@2 Ĝ@iy@2 Ĝ@dq@6,<@68YJ@3S@30 (@2"@2!-w2@2YJ@2_o@2YJ@28Z@2YJ@2eO?Ol?/)s?ƐW?ghT?=U?`~?| ?u߿?36G?%hF?XO?lN?q6tN6?ɅoiE?W+ ?WA:?Xk?Xk@@@@@,@(??????a-?M+o?W^ũ?eqT@xEW26d@=0?sI1Up?5?Fa?ȿ@alh@@D@Ds@D@Dc@D@D Vc@D@Dʘ4@D@D#'@D@D|jt@\)@@\)@@\)@L @\)@΁5@\)@5g@\)@HH@7V,<@7Yt@2+ I@2"P @1~"@1ڊ@1!.I@1@O%@1!.I@14&@1!.I@1n⻠?eXW?<?* rދ?w+?2U?ЈVi?ԧx?8~#?֋?`]Y-?03I?L?_wwo?0,i?p>?A?sCa?H@@"@$@(@0@,??????QBl0X?Cd]?0uz|@Diߍ1@?d=?PU;?Ҭ~?! +Ve@iyh @@NW +=p@N^"@NW +=p@Mv@NW +=p@Mu@NW +=p@NHeU0@NW +=p@NZb@NW +=p@N{$#@E@1\L]@E@r+@E@y +!@E@Ȕ?ߦ?kM@4 hr@4U@3V@3\>@2fYJ@2@2fYJ@2oiDh@2fYJ.NC,@8J? \?Dڰ*?>5c?i +@8@8J?ǛȦBS?ŀ&՗?S?@@8@8p?>UP?Uq(?yD ?MكN@8 @@@@,????@.S@."@.S@.b@.S@.vȳ@.S@.xl"h@.S@. +=p@.S@.@[$/@[G{@[$/@[{v@[$/@[~Ov_@[$/@[~6z@[$/@[o4֡c@[$/@[rs@6 ]ce@6 ~($ x@1+ @11@1A7K@1 Q@/@/ ě@/@/˅Q@/@/̲?|O?m0?JC?Uyu#?X?-! )m?|O?I`ӛ?mK??hY?V.H?z"2(?sq#?T?Gϵ'?fW?ܑ @@@@@,@*??????Wgh+?7:;H?O ?@.:ad@[{k?WTfUI?na%\g?742?g^@e(V@@]/@XJ@]/@XN@]/@W\r.@]/@Wi@]/@S +@]/@T@$/@vp@$/@P@$/@>0X@$/@;R&@$/@VX@$/@B@7䎊@7nii@2pěT@2hѪG@2tj~@1`,@1Tm8@1H!@1Tm8@1I@1Tm8@1HہL?}x?2uHA?3')ք?C I?Sw?!m +K?CQl?;l?b?ﻰWs?r?rn?i?jL?uE@@(@(@(@8@:??????MK@vY?4R:Kp?_M@Vֹ@_ ?S|*?~fC?_?~?S,2)@e0@@)x@)^5@@)x@2nP@)x@'lC@)x@&&@)x@%Q@)x@& (@x@-@x@|@x@9Xb@x@@x@bM@x@zxk@7@@7Ov`@3S@3Ϫ͞@2W-@2W3@2~($ @2N;@2~($ @26z@2~($ @2#?ٛP? )}o?RsW?6W=t?X?*?% ?-',?ԕ]I?DH?NM8/?ey?A\#?p-t?+QK?c^)?%d?8ϣ@@@@@$@&??????E_?SÌ?;E2?P}˅x@&-&@A:?Uc~™.?p"]S?B|?@mI@@t9Xb@xQ@t9Xb@xPH@t9Xb@rnP@t9Xb@sg@t9Xb@}c@@t9Xb@t,<@]@] ě@]@]я@]@]O;d@]@] '@]@]@]@]@8쿱[X@8?@3^5?}@3e@3t@3@N@2V!.I@2JڹY@2V!.I@2Iѷ@2V!.I@2F_ح?ꯨT?Čۨ1A? +tI?(D?|(?=)Jn??o ?D?9 ?O??B7?]FV?K|?7N?^':?@@@@@&@(???????(褠[\s?[H\?n>@wzp@]о?vi}@:?/'`?O\?/8@i @@9ěT@9Q@9ěT@9o@9ěT@9 ԕ@9ěT@9@9ěT@9œwk@9ěT@9M@1'@/@1'@"`@1'@}H@1'@v@1'@ (@1'@p;@5g l@5GE85@2^5?}@2lC@0tj@0?@0:S@04m9@0:S@0GE85@0:S@0E?}ѿ,?*|3N? ?W0 ?yq?Id6z@7 -V@2I^5?.Mm@217Kƨ.Qn@1ce.NC,@1ce.NC,@1ce.NC,?)T@8#@8:@8 >+@8I@8?qv@8@8i@8@8S@8?z@8 *@8p@8@8 @8 @?@U^5?}@U5o@U^5?}@U\Aǎ@U^5?}@UY@U^5?}@U@U^5?}@U[|@U^5?}@U@EH9X@Ez@f^m@@w^5?|@w^vȴ9@w^5?|@w^iB@w^5?|@w^5?|@w^5?|@w^m\@w^5?|@w]<64@w^5?|@w^Ov_@t@t@t@ xF@t@āoi@t@ěT@t@g8~@t@t@1쿱[X@11@. +~"@. +g @-E@-+jg@,a-w1@,a-w1@,a-w1@,aohی@,a-w1@,a?^Dw'?1?&??q@v?E{?$?bM_x?&uE@?['?Kd]?2&h?X78?b@?u?|׿pZ?hB^?pk Y?b/bJ@@@@@,@*??????3=9o+ﰈL?:7xH?R;s@w^0)@dy?I{9? bON?Y1 ?"UP@s +~i@@o-@f@o-@Ci@o-@_<@o-@]Dy@o-@T~j.@o-@@JQ@J\PeȦ@JQ@J8=@JQ@JGD8@JQ@Jgx.'@JQ@J@V@JQ@JXͻ-6@7zqiC@7dN@3|hr@3Nn@2Ft@28@1_o @1`XȎ@1_o @1h%@1_o @1޴G?Ҟ8A?@ E? KM?Ӿ?ݠ@?H_I($ x@SKƧ@Q״3@SKƧ@S`u"@SKƧ@Sݘ@bM@@bM@4֡b@bM@âw@bM@n.@bM@#x@bM@~$@8,<@8V@4!hr @4%@3`A7L@4s@2&@3C@2&@2Ʌoj@2&@2ߤ?E@?jK?Yo?ߤE?;p?"Px??V1,? G?{7?' ?q??j`cq?ek+?42?6m?Us@@@@@$@(??????kszG?ǃ Q?dLG4a#@Rȏ9M@s?в3?񓅣@q9u(K?)l0@iz@@M@P +<@M.@M.@M.@M.@M.@~vȴ9@|ht@~vȴ9.@~vȴ9.@~vȴ9.@~vȴ9.@~vȴ9.@704m8@7.҈p;@4 I^.Mm@4PA7K.Qn@4O M.NC,@4O M.NC,@4O M.NC,?}@8#@8:@8 >+@8I@8?Br@8@8i@8@8S@8?Fp'@8 *@8p@8@8 @8 @?@w&ffff.@w&ffff.@w&ffff.@w&ffff.@w&ffff.@w&ffff.@1&x.@1&x.@1&x.@1&x.@1&x.@1&x.@8,<.>@5+ J.Mm@4Vu.Qn@46z.NC,@46z.NC,@46z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @$@$@$@v[O@$@$*V@$@Tx@$@-@$@+, +@Fr @Fr @Fr @F攀M@Fr @F}@Fr @F>|@Fr @F-<@Fr @Fk@1|Q@1y @,-@,K@+ΗO;@+^b@+PH@+W@+PH@+`."R@+PH@+8T?ޖL I?Ԯm#?!,1 ?If4)? ǫO?Կ<?r-?Tշ?rh?ri?w?g!_'?M? ?ď?F"@@*@(@*@9@5??????E?2* ?9f/5?,(x&@2@F:Զ?H$N?:ڝBl?u#4?o?/8H@sm@@nzH@i^5?@nzH@kR@nzH@l"h @nzH@kC,@nzH@m:@nzH@jF@^Q@a$/@^Q@[5W@^Q@]ڹ@^Q@^5?|@^Q@^($ x@^Q@]ce@7p4m8@7nH@2r Ĝ@2#w@2PA7K@2R @10U2a|@1'/@10U2a|@1͞&@10U2a|@1ݘ?%?4$?ھ?iP?\7?)]\?}?D.x?8G?ݤ`h?7=^9?`@0k?}??,DP?T0?9XNu?&I?&I@@@@@&@(???????5 H=S?=? O @kU@^Vp^?T, ?@5I? +[T?H@m[@@+ @"`B@+ .@+ .@+ .@+ .@+ .@)o@)\3@)o.@)o.@)o.@)o.@)o.@7qiC@7ה8@3+.Mm@3tj~.Qn@2z,<.NC,@2z,<.NC,@2z,<.NC,?|b@@8#@8:@8 >+@8I@8?uGS:@8@8i@8@8S@8?,NN @8 *@8p@8@8 @8 @?@PN+@P_vȴ@PN+@PP ě@PN+@P;qu#@PN+@PY|@PN+@P]@PN+.@NO@N@NO@N?@NO@NQ@NO@NbM@NO@N?|@NO.@9Y*0U2b@9mVl!@5ahr @5ZD@4tj~@4Dg8~@3YJ@3l!.@3YJ@3]cf@3YJ.NC,?ꯨT?\?aBӌ?XvM?֩d@8?S?U(?Ê$?GuS?%"5@8?Vr?TWn?GLl?<05?ȩ@8 @@@@@&?????@@ I^5@@ ԕ@@ @@ C@@ U>@@ qu@!p +@!0@!p +@!G@!p +@!l!@!p +@!'RTa@!p +@!쿱[@!p +@!"`@7>6z@7ěT@2+ J@2@4@2'KƧ@2$Fs@1O M@1Vl"@1O M@1b@1O M@1zG?3a=?m0?פ?,OKu?+?OPl[?}?#maЀ?h_N%?.}$?J>?998?-]?e+?D(p?k3`E`-?HAY?I$@@@@@,@(??????? )@?Ch?(bi?JZl@ 3@!Ã?E֢^B?jY;?k?qW@jE@@w I^@w$/@w I^@vY͔@w I^@w @w I^@wLP@w I^@vW!@w I^@w;@V@;dY@V@{F@V@f_>b@V@$d@V@P,@V@WI@5v@5??X@2S@25e*N@2U`A7L@2*/@1Ǡ k@1#:`@1Ǡ k@1kf@1Ǡ k@1$q?}@TΥ?Ƈs3?]> >?6z@4&I@3° ě@0ěT@2-@0C\@2@/^($ x@2@/#(;@2@/\(?Z?j`cq? 3 *??~a?r#? % +?Z?-NI`(?*޺j?=Ei?ܜ?ORh?A?Cx}x%?(14z?W?2?]2@@@@@1@??????9?rE?yAXؕ?tme@-@ ?DB?zc_[5?҈m;?F/@sR@@\(.@\(@t xG@\(@ě@\(@@\(@F]@\(.@H+R.@H+R@H jg@H+R@H`A@H+R@H#{J#:@H+R@Gh ԕ@H+R.@8g l.>@5+@5zxl"h@5`A7@5{@5!:S@4ݿH˒@5!:S@4ȴ9Xc@5!:S.NC,@8J?VӋ?K+HN?ڡ?Н?@8@8J?C?•,X1?GLD3?_@8@8p??ܸIU,?p)Տ?[}?@8 @@@@(????@V.@V.@V.@V.@V.@V.@U-V.@U-V.@U-V.@U-V.@U-V.@U-V.@7DO M.>@3hr.Mm@3Ctj~.Qn@2,<.NC,@2,<.NC,@2,<.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @`B@\(@`B@T2@`B@KP@`B@@`B@@`B@<@^@^v!@^@^YR1}@^@^-#@^@_{K|@^@^V@^@_@8G>6z@8^6o@5E?|h@5Qj֘@47KƧ@431@4=ce@4Pa@4=ce@4Rэf@4=ce@4[?V ?(a??G>,)?? ?6]g?xSV?pCm?Ww??Oa'?ZY?)N!? +?|X.?hk?is^za@@&@*@$@8@9??????Up??ML?F'=*?:b{@ Y@_rt?e +?YQ^Y? 8@4@bT@d +P>5@@+T.@+T@/M @+T@/d/9@+T@/w@+T@/o_p6@+T@/Rs*@2-V.@2-V@@2-V@=>,@2-V@p/@2-V@p @2-V@Ì>@9N쿱[W.>@3 I^@1Z@3-V@1D=p?@2!.I@0ku@2!.I@0 W@2!.I@0˼U@8J?)kE5?7.C??vWW?e+@8J?Sl?uCcCO?@;+?cQ?"8@8p?td?'+M?v? 'S?[L @$@*@&@:@1?????@-hr!@-;~N@-hr!@-%`A6@-hr!@,/@-hr!@,qm@-hr!@,+ @-hr!@-12W@x@dZ@x@@x@N@x@G|@x@c@x@@7}:@7oK=@4^+@4 ě@3"`@3-@3^6z@3 +=q@3^6z@2~($ @3^6z@2d8?| V?b0Biŋ?/b?;Ϝ(? +Q?'i?gQ?W"?Ni?[3.?Wl4t ;? ={2?.)w?J>?6weN?s?6YkC?ʩDP2@@@@@*@*???????=??6@-do.@$$?i?C@2m>2@-Oc!@Zx;H@@|RnP@|7KƧ@|RnP@|TJ@|RnP@|T֡a@|RnP@|S @|RnP@|Q@|RnP@|Qu!@<n@6@`A@D=@`A@@`A@Х*Z@`A@ï2@7>6z@7!@1TS@1T[W>@0ttj@0t6@/QN;6@/Rr"@/QN;6@/Q~@/QN;6@/Q!?(?eqa?ۃ{?M?4sF ?KK$?wogl?@{?&Dd?26H?wh??iDby?[?;?s*զ?A&?"?I@@"@@(@1@1??????4Ըp.\?/1c?/l{q@4x?Ifx*???Iue@m!@@$/@`A@$/@\(@$/@ɺ^5@@$/@r @$/@;dZ@$/@عXbN@%|h@& x@%|h@&9X@%|h@& V@%|h@%S@%|h@%5?|@%|h@%+ @8@8ȴ9X@4#@4%`A7L@3`A7@3\N@2_o @24J@2_o @2@N@2_o @2wkQ?3a=?O9?go]?iP?#6_?6J?g;+t?? :?mK?{d?R?Q,Ě?c?{?Z $@b@%-?\{?n:x @eQN?@oqr@@$/@\?@$/@s@$/@t#@$/@Ƨ@$/.@$/.@B+@BڳQ|@B+@Bce@B+@B-@B+@Bќu@B+.@B+.@8 _o@8 k@5 I^5@5N;6@4"@4g8}@4!.I@4W@4!.I.NC,@4!.I.NC,?eM?iî7?%Lє?O#A@8I@8?)>}?U?J;.?!V@8S@8?-Iz?t ?7V/r?}2;@8 @8 @@@@????@`v@`^5?}@`v@`u@`v@`ߤ@`v@`ߣ@`v@`|@`v@`W>6@EQ@EQ@EQ@Gݗ@EQ@F$/@EQ@FYJ@EQ@F$/@EQ@GlC@2@2s@1E?|h@1Dqj@0-V@0C@/Ǔݗ,@/oi@/Ǔݗ,@/ xF@/Ǔݗ,@/84֢?^Dw'??,fC6?'$5?Z)?ʟ?bnl?`5a?NJ?Hn?&Tm?低NV? ?lo>?c?Z?]ߒ?6@@@@@*@*??????=L?<?DOƭ?2$H~ v?@`,z@F?S\?A'4??xx=lF@rf@@g-@n+@g-@'_@g-@֗0B@g-@i @g-@d71@g-@i[%@0 +=@4s%@0 +=@=@0 +=@-/n@0 +=@C*{@0 +=@ņ@0 +=@?ׂc@8-v@89Y}@4hr@4E3Op@497KƧ@34+֒@3z,<@3[QKN@3z,<@3=¤@3z,<@3IË2?R ?Y?JVX?!?L;G?腔?GP?F?\]?VkG?W-?H樑? +a?K?'*E?b(ق?ק{?SD2@@"@(@(@9@5??????]@'(?A*7?d;y[;@kDt@Ȍ?\]x5?u?QpR?޵OL@dӜp@@;lD@5?|@;lD@Hj(n@;lD@?_=@;lD@K.Q@;lD@<<@;lD@? ɶ_ ?}@TΥ?T!,?Mw @7H@7)详@4 ě@4Jّ@37Kƨ@3D=:@3iB@3<'`@3iB@3D|@3iB@3A;xv?'Z]&?8 w? +.` ?]x?ّlq?/Z?&??PY?=R?Mi?\/?'5b?wX '?R+r7?uk?e;Ƶ?1?T(U@@&@&@,@:@:??????Ws8TS2?S\1L.?>-tCX@Q@Q?p/$l?`R?fV?26"@k}5t@@-@@-@\(@-@>BZ@-@`A7@-@@-@q@4Ƨ@4I^5@4Ƨ@4iB@4Ƨ@4ߤ?@4Ƨ@4ރ%@4Ƨ@4ңS'@4Ƨ@4ѷX@6^H@6`)^@1^5?|@1@1i"`@1a @0h@0cS&@0h@0h@@0h@0hK]c?F/P5?"2?QaQR?(+Zk?% +? $4?2}?wi*?y?.pC?=.e1?äqY? ҇??o}?;B?gϵ?|)-}(@@@@@*@"??????8uK?LFj?D ?Lc w@Zib@4ѳd?6]?m ?s,Xf?5#@h{݆@@@1sh.NC,@1sh@1.H?1j?` ?E +?n@8I?= =F?M^?M\ٓ@?0W) [?j{X@8S?% mc?=!? ?JzUf?'{>@8 ?LiA@@@@@,?????@j~@Q@j~@ce@j~@@j~@ߤ@j~@QZ@j~@"L@y"@pb@y"@xl"h +@y"@w4m@y"@y#y@y"@w'@y"@vH@7e!.@7gƷ@0+@0;dZ@0`A7L@0`A7L@0Tm8@0Tj~@0Tm8@0Um]a@0Tm8@0U`B&?~?J?4$?,fC6?Rw#z?22$?G~?| V?u߿?LE?|}Յ?=Aq|?6??l?O?E 8?ܐ?g*6@@@@@.@,??????c_?JS??Όg%?3g(@l@lɵ@t%VP?_?w?S֮WG?kr?̣ 7@gRlj@@mhr@pmނY@mhr@qg@mhr@p8f@mhr@q*@mhr@w6B@mhr@x\@3vȴ9@3nd@3vȴ9@3Lo@3vȴ9@3@3vȴ9@3+o@3vȴ9@3k@3vȴ9@34J@7cg l@7iR§@2+@2~ݮ@1"@192@1kxF^@1gLs@1kxF^@1dWXnQ@1kxF^@1d_p?|0pJ?c?%`B`?@h?1?ױ4?r?Ԝ-4?\0.?*4f?vQ8?0C?'i?H?6ݞ}%?:r.;?0e?N @@*@"@,@7@6???????Wj?<;3 +?CkȠu?!kGϜ!\@sC@3u>x?c&8`+?A3-k\?^b?P=$@fܲZw@@S@1@S@Y@S@[ @S@CW@S@/@S@Zw@i"`B@i# +=r@i"`B@i&@i"`B@i/$@i"`B@i& +@i"`B@i%?*@i"`B@i#@5`D@5aR<6@0hr@0$5@0`A@0qB@/73@/ V@/73@/~@/73@/u;?Qp??Sպk?isi?RyUq?>/d?~?J?LN?b̼h?4Vr?1{f?jۻBF&?%?56#?$?t+$?p( @@ @"@@5@4??????[J?/"?TgG"?4 =@@i$?(ӭ@?UP J?Z&?ĠR@gT@@8@+p@8@ l@8@M@8@2Y@8@҈p@8@!7K@1&y@֊r@1&y@!@1&y@%F +@1&y@|Q@1&y@aG{@1&y@NV@9-v@90:"@3?|h@3n.@3Ft@3a|Q@2&@2~%@2&@2hr @2&@2W>6z?M:?SZ?~4F?D ?^&.?A:?|<~%>?!Z?On{-?;`Ε??-O?S?M'-?2W?5W? .0v?**Z@@@@@*@*??????grI?_ϒ?sM@'NO@;?w"i?_|?|/@ l@_ژ@@r .@r .@r .@r .@r .@r .@/-.@/-.@/-.@/-.@/-.@/-.@8@.>@3hr .Mm@3-.Qn@3Eu.NC,@3Eu.NC,@3Eu.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @@@@B@@&e@@Ҙ@@@ ѡ-@@=f@\(@<,t@\(@73E@\(@5҄@\(@@\(@]@\(@{h@8V,<@8?@2.5?|@1<"LR@1b-V@14q7@0Y~($ @0=OM@0Y~($ @0BxXd>@0Y~($ @0C ?Ҟ8A?2_?B?c'`?BDr?vkc??Xנ^?u+?pÇ?7kM=;?l1e? ?Q<(?]נ?I?(!My?n\V@@ @*@*@9@8??????Iƨp?D~E.NTw?J-<@۪@!f? Y?R`^?>?bMn?>`?A)N?-I`K?a?JU4?bM]f?2a?oܧ?~\?[J?@@@@@0@.??????SX?$m?0xj|?,~{@aW@???E&?:ߧ`P?xMPh?o[@s d @@֩x@֩l@֩x@֪͞@֩x@֪0 @֩x@֫ I@֩x@֨>BZ@֩x@֨Tɇ@iJ=p@iJ~#@iJ=p@iJd9@iJ=p@iJ=p@iJ=p@iK)^@iJ=p@iJڹZ@iJ=p@iJg@2>6z@2>6z@.a7Kƨ@.a7Kƨ@-1'@-C\@,ߤ@@,n.@,ߤ@@,5Xz@,ߤ@@,lC?^Q5P??&??eU5?b\?i{?bV,? ,C?A)N?3.Yl?B[@Y+@Zxl"h@Y+@W&@Y+@Wq@\(@\*Ak@\(@[u@\(@[@\(@["`@\(@[W>5@\(@\ߤ@/jL/|@/jLg@).Vt@).Vt@(&x@(&x@'#9@'Ov`@'#9@'lD@'#9@' ?^j?GA?m?XQ>?/`?O+y?bM7? g?j?3.Yl?@?J&d?k?bM]f? ?oܧ?~\?#.?h@@@@@,@*??????SzA?( X?=]QqX?$͘@XZD@[y?Lh?=;j? =?4Ӱ:@s @@7'lC.@7'lC@7#S@7'lC@7'H Zw@7'lC@7A@7'lC@7*\@7'lC@7$ +0 @V.@V@W@V@bs@V@]@V@bL@V@VK@7-v.>@2 ě@2ˀV @1tj@1G&@1䎊r@1aw@1䎊r@1}W@1䎊r@15b@8J?WDvg?%H9I@jlP,@<"'Q?W +mA?C2^? rVoL?N@mM=@@=p@O;d@=p@^ @=p@qi@=p@d8@=p@艭B@=p@@. +o@. R@. +o@.@. +o@. 7Kƨ@. +o@. +0@. +o@. +0U2a@. +o@.fA@4,<@4 @2+ I@2e+@2`A7@2 k@10@11.H@10@10IQ@10@1/H˒:?sD?_?>(lQ ?^:f?`?ʟ?1j?0n=Q?T֩E?ǧ?D6?u$6?jOI?]mZR? +?L?π9"?ĭ?_խW@@@@@,@*??????L/8B| 6l?cKs?&}vi@R@. +)y?:2*M2?Idpzt?v8p?|~V@i9+@@t}p +@t}p +@t}p +@t}@t}p +@t~$@t}p +@t~s@t}p +@t|O@t}p +@t|jcx@<$/@<$/@<$/@<$@<$/@<ں@<$/@<q@<$/@<J^|@<$/@<E@.}Vl @.}Vl @+`A@+»쪸@,4E@,5p +@*PH@*@N@*PH@*m$@*PH@*KU?^6P??YK6?I?Zj?Za?bMn?𕧌?~@?@/{?w. _ ?3'n}@s@@? ě@?!$/@? ě@?" @? ě@?"ѷ@? ě@?!af@? ě@?H@? ě@?!@;{dZ@;{dZ@;{dZ@;~@;{dZ@;u"@;{dZ@;yXbN@;{dZ@;~%@;{dZ@;z)@4T xF@4T`d@2+ I@2 k@1i"`@1k6z@16z@1U=@16z@1Mj@16z@1s?|O?ru?ě?U*?h|?C!?| ?$i %h?I??77?nK/?|׿pY?3XMV?+k?{B0?&I? +r@@@@@"@"??????$ ?`@?9renO??+r@? @;{9l?YO̴(I?_ Un?4ZW?CbQi@f0?@@[]/@[\1'@[]/@[Oi*O@[]/@[A- @[]/@[Hg1#@[]/@[Al"[@[]/@[@@E@\b@E@qz@E@B@E@ר@E@vM\@E@@4T xF@4Sv@1hr@1Ca@1Z~"@1S}!@00U2a|@0Ǥ@00U2a|@0ys P|@00U2a|@0}d} ?}@TΥ??nǾf?7Xt?&vo?腈V'?| V?æ?j :O?!?By?G县?K??`/@?gXk?dca?)?٤a@fd@@n@̋C@n@g@n@*0U2@n@u%F @n@"@n@Zc @Ghs@GA7M@Ghs@G+ J@Ghs@Gѷ@Ghs@G q@Ghs@G,@Ghs@GsP@8 D@8|hr@5{ I^@5sA [@47KƧ@4F +L0@4䎊r@41@4䎊r@4̋C@4䎊r@4BZc ?F^S?}_Z?'=DP?"?|QS?d?|O?k!?Q\?pe?g?L ֎?=Ca?*ŪZ[?\œ?rG?1 R?9^@@@@@,@$??????_pcUCBW?jXO\?X(@aς@Ga@H9X@H@H9X@>Q@8@@8{@3I^5?@3߾vȴ9@3q7Kƨ@3w/V@2^6z@2c$@2^6z@2^+@2^6z@2Z1'?ʎa]?@K/z?G)?A%?i]i?y%?A[F?@C?!b?>G]!?SY?Y@?9&?GA?+B\@dZ@S@dZ@@dZ@tS@dZ@$.@dZ@@dZ@p +@4mv@4mIQ@2?|h@2g8}@2`A@2ěT@1&@1҈p@1&@1- @1&@1 ?|O?`[?mGSq?5~pY5?[9,?.'?|O?A}?t(?#q\-v?4.?Qʾ?Ol?7}?],m=?9XNu?{2?*Q@@@@@(@ ???????@p ?E '?MfM?=]D޺@c@BZ=?l#?^k=6?#ZN? @f@@@\(@-V@\(@ +=p@\(@kP@\(@@\(@}Vl@\(@:)y@#vȴ@#$/@#vȴ@#:)z@#vȴ@#s@#vȴ@#쿲@#vȴ@#sQ@#vȴ@#ѷ@5|Q@5VϪ@15?|@1Ҷ}Vm@1PA7K@14?@0@0tj@0@0p:~@0@0kP?|O?|5z?.O?ׂa?g;+u?YLU?|O?y?]"?ޝ?z?6/?W ??H6?Za7?1 R?a]o@@@@@,@,???????7^?*>?Pp ?l=3ڳ@@#nNl?gȣ5b?u6Λ?օ66?򜿊@_Cw<%@@lC@&x@lC@橠'RT@lC@xF@lC@L^@lC@@lC@)`@7K@n,@7K@{J#:@7K@ qv@7K@H˒@7K@N@7K@A7M@7I_o@7x@2 +^5?|@2 ᰉ'@1"`@1˒:*@1 k@1$/@1 k@1@1 k@1l!.?ȉak?:L +?u*y?TnE?% +?nM?Hߝ_`?7fps???݄ ??y?)Zw?],m=??$?Cns@@@@@ @,??????`ج9?U7?(h=B?S5X#S@b`@X??~?d)?t`j?k@0@qIU@@#S@"@#S@$Z@#S@#@#S@!R<@#S@#\@#S@!G|@3S@3`A@3S@31'@3S@3m9@3S@3J@3S@37K@3S@3<64@8H@8L_@3S@3!-w1@317Kƨ@32 I^5@2YJ@2PH@2YJ@2F +L0@2YJ@2F +L0?>sN?B-?3Z?IW`g?>{~?.'?Zm?eCO?J?nca?Y:J?U3p?eS?]ivL?[?f?q' +B?C SG@@@@@*@???????Mn9WV T?LbFB?bV@"'&@3h*?_oF;?tb3?rH?Q%@r[]@@&7@&>Yۖ@&7@&9@&7@&8t@&7@&8@&7@&71@&7@&5%f@+@ P@+@;@+@S|]@+@$@+@4@+@f@8+s@8/҄7@2@ ě@2@YB-@0j~@0o@/At@/ 3W@/At@/e@/At@/-U?ڡG7@TF@dz|@TF.@TF.@ 7Kƨ@\@ 7Kƨ@*@ 7Kƨ@#%@ 7Kƨ@@ 7Kƨ.@ 7Kƨ.@6֚,<@6ԇ#@4S@3s@3-V@3c{J#9@3p@3%oi@3p.NC,@3p.NC,?}ѿ,?UG +?ѳՂM?@8I@8?us\?Sn\}?M1#?>b@8S@8?oܧ?0Uo(?)?S@8 @8 @@@@???? @Cv@C@Cv@C)kv@Cv@CG@Cv@C@@Cv@C-Q@Cv@CcI@v@v@v@@v@w@v@@v@;A@v@uT"\@5v@5XRv@1° ě@1_s@0]V@0\NhZ=@0:,<@09ڎUu@0:,<@09@0:,<@09'?| V?78?'Wc?\?n?NU?;%?}@TΥ?  A$??h?-$: ?vS?q箭?L|?_ ?z (?,H X?*?3NA@@$@*@@3@5?????? l0 ?7G#>?!uK@Cr=@r-?WЦ?AL/$?"?bs@fH@ @cS@c%@cS@f@cS@aG{@cS@b I^@cS@^"@cS@[S@%@1&z@%@@%@$/@%@x@%@~vȴ8@%@n@7,<@7sh@2@2%2@1"`@1+ @1xF^@1N;@1xF^@1S@1xF^@1jf?1j?Z.?ě?_?STS?<_?% ?? :??1'7?UBi?K#N ?tgi?§d߱?OW?8 ^?,a@k +Z)@@ +=@ڟv@ +=@ BZc@ +=@ y>B[@ +=@ S@ +=@ k҉@ +=@ s@@@@ Dg8@@?@@ŭ@@ŴD@@ſ$tT@7D@7֔Fs@5n5?|@4oiDg8@5-V@3p[6@5m8@2VϪ@5m8@2 +=p@5m8@2n.?Br?]]?Z{f?Jʮ?V?0 ?q!U?_*_'?H?,?|I +?*?a +?"M*?*\??c?5@@@@@,@*??????غ+\N<?!su-?\@ Kj1@ebd?Wd~m?F V@`v@qfyE@fH}@@z@?![$?PP]?|b@?:l?\?:G ?B{ $?_rd+?R?6?ʏF?g3#?͆? S@@&@,@,@9@:??????I K\?4d!L??12[>@;&@܀%"?TyQ?Qn?]e?D"@fZ8@@a.@a@a7K@a@b I^@a@Iԕ+@a@q@a.@V+ .@V+ @Z@V+ @}p @V+ @9Y@V+ @tj~@V+ .@9DO M.>@4S@4q @3-V@3zG@3ce@3Ƶ '@3ce@3R<6@3ce.NC,@8J?*U?S?+j?7@8@8J?39?ZH|:? ?K+Gq)@8@8p?7'nK?>{~?8zt?ԤA]@8 @@@@????@7KƧ@6u@7KƧ@64@7KƧ@5!S@7KƧ@8U@7KƧ@7X@7KƧ@12X@w@V@w@O L@w@iDg8@w@}H@w@{@w@KƧ@82@8hۋ@2ěT@2L/{@2t@2}/w@1_o @1`A@1_o @1wkQ@1_o @1s?F/P5?nqV?~"? 4? +0ggk? ا ?Zm?ā? yz?hJ?%3?C.NT?JTACG?Az? + l]?J]j?=P|?b@@@@@$@(??????5%<~?C N_.?i4@5,|(@?j{ά?{r_T?ݏ?~g<@pub[@@7T@7T@7T@7\@7T@7@7T@7$/@7T@7U@7T@77K@|hs@|G@|hs@|"@|hs@|@|hs@|ht@|hs@|<64@|hs@|6z@6]ce@6H˒@3+@31@26-@28K]c@2@5@2?@2@5@2wkQ@2@5@2{n?Ol?/)s?K]4?j6_?GBm?ʟ? ?uie?ܿ?ט??C ;?`w???"a??=P|?)@Jq@@@@@@ ??????34m?Gn?=rLv?5@7VT@|?]VH}?3a-A?ZO}?oΑޘ@h+!@@g +=p@g^5?}@g +=p@gY@g +=p@gܹ#@g +=p@gC@g +=p@g?|@g +=p@g+j@%S@ ě@%S@1 @%S@-qu@%S@,>B@%S@-jO@%S@*#9@6 xF@6"@2@2(@17Kƨ@1j~#@1B@5@1@ +? ?xu)?X/?ӑ@t)o@@4ow@4qI4 s@4ow@4[o@4ow@439H~@4ow@4`yx@4ow@4u}$@4ow@4wǠc@۸Q@۱I@۸Q@)G&@۸Q@@۸Q@~@۸Q@ۓ<{'@۸Q@۩Mh@8쿱[W@8ź@3ԛS@3fo @36-@3]@2Y~($ @2l5~@2Y~($ @2m[au@2Y~($ @2m?x.?0[?]?b}??.?&?[P~?!Nd?VwU?ʣ7?.׮3?iW?;z?ab?]M-?պ?gy?X3@@$@&@*@9@6???????mvg#6?rל-;N?r1`@4l/u@۰Ws?C͋/?&?M}_@WbF@n9@@8Q@8bM@8Q@8yV@8Q@8hFW@8Q@9LI@8Q@74@8Q@7e@wVu@wUϪ͟@wVu@wU) @wVu@wTfrH@wVu@wV sy@wVu@wU@TZ@wVu@wU" @4_o@4ɅoiD@0)+ @0) }@/O;dZ@/u@.(ۋq @.(PA@.(ۋq @.(I@.(ۋq @.(A h?|b@?xet?9Q&?g˄ ?g?u?|B &?'3 +k?x?4km?BNl?IXuj?pa?Ճ?u"7? +q?%9G?3eBp@@,@,@(@5@3??????7q?1S0% +?9\e|@88:@wUL?QAg%e\?5m;?@5J?wV@g=ނ@@/dZ@/G@/dZ@/"@/dZ@/;dZ@/dZ@/b@/dZ@/XbM@/dZ@/S@tև+ @tև+ @tև+ @tY|@tև+ @trGE9@tև+ @t$tS@tև+ @t!@tև+ @t\)@4įO M@4JL@2^5?|@2lD@26-@26@1̿[W?@1VϪ@1̿[W?@1:@1̿[W?@1̞쿱\?}ѿ,?u:|?RsW?,OKu?ҧ?X?| ?r5MS?CXs?aYZq?u$6??? uf?bv{3dZ?gϵ?wͶ@@@@@,@*??????? s`Z?>zZ?CN*@/X@t].+?]ob?>Z?ŰT&R?S@fz4.@@w.@w@trf@w@MHh@w@7@w@lU/@w@@%;@FH9X.@FH9X@FIE;s@FH9X@FJ̊@FH9X@FH@FH9X@FIvG@FH9X@FIQ@3~($.>@/V@/+~%@/Ix@/I"k@-#Z@-#rdR@-#Z@-#n.3@-#Z@-#@8J?qC ?(( D?p?éw?0N@8J?Cl?BVx?--?.$?MmUѽ@8p?$-a5[?g?V*?D#?@,@(@ @;@:?????@y"@|1'@y"@&@y"@f?@y"@m\@y"@{dZ@y"@t!-x@)@)O;@)@)`A6@)@),zx@)@) +L0@)@)"@)@)G@9T xF@9i>BZ@4kS@4t?@3-@3|@3u@3 "`@3u@3g@3u@3~($ ?/q*q:?UJ?u[>u@rjo@)B?{~vCP?J,_??vL? >Fwv@q*Sn@@n\(@n\j~@n\(@n\wkQ@n\(@n\1'@n\(@n\@n\(@n[qu"@n\(@n\C,z@lC@l@lC@mM<@lC@nzI@lC@l@lC@mV@lC@lcA@2@@2@0c@0dtj@0$j~@0%m\@.@.[6@.@.A7K@.@.[6?^Dw'?h?WD@?̒?Dj??bV,?#maЀ?qN?0N:s?֧QD?SV.?g)? +?]?=rE=?SP?@@@@@*@&??????'e*Zp?3dYa3?#ݼh@n\" ޒ@lLD?B +SҦ?2lɎ?Q4#?_a9$;@su@@-+ @-+ @-+ @-+ @-+ @-A@-+ @-C@-+ @-R<6@-+ @-!S@8G{@87K@8G{@8n.@8G{@8s@8G{@8ě@8G{@8&J@8G{@8e+@3:qiC@3:W&@.Vt@.}Vl@.&x@.$tT@--C\@-.!R=@--C\@-._o @--C\@--C\?| ?`?7[䭝?̒??װ*w?|O?j%Ra?'Q?-I`K?2&h?eDQQ?q6tN6?u?u@>N ?~\?a+?l&@@@@@*@,??????߻?~0@?'ќ?!O_.@-` @8ߖ?<?Aφ?$!9?#|д@f@@$ O;d.@$ O;d.@$ O;d.@$ O;d.@$ O;d.@$ O;d.@m49Xb.@m49Xb.@m49Xb.@m49Xb.@m49Xb.@m49Xb.@8DO M.>@3ěT.Mm@3b-V.Qn@2J0U2a|.NC,@2J0U2a|.NC,@2J0U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @.?|.@.?|@.\(@.?|@.iDg8@.?|@.@.?|.@.?|.@0 ě.@0 ě@dq@0 ě@G)_@0 ě@_F@0 ě.@0 ě.@1D.>@0.5?|@0Q@/Z1@/-V@/ +#9@.g l@/ +#9.NC,@/ +#9.NC,@8 +Ny?3"??Hyq@8I@8@82r?q?)(?Bݎ4@8S@8@8L?i--?<{?P )k@8 @8 @@@???@`t@`Z@`t@`&@`t@`A \@`t@`*@`t@`S@`t@`e+@)l@)l@)l@*Ov@)l@)Q@)l@,Vϫ@)l@)7Kƨ@)l@-U@3uS&@3u`A7L@1^+@1_iDg8@1i"`@1i^5?}@0@0Z@0@03@0@0ѷ?|O?3i?TS?<ݝ? g?P@*W?JԹ*j?Zxȿh?+dRַ?oQŋ@f ?S@@o-@nzH@o-@ql@o-@hp:@o-@h@o-@eoiD@o-@fIR@E@G-@E@B @E@<@E@=E@E@Ce@E@C9@6(YJ@6!TɅo@2+@2}H@2Vu@2rGE9@2 k@2 0 )@2 k@2S&@2 k@2KƧ?| ?PƧ$?3Z?,OKu??E?F/P5?l?O?P?v> ?>[Fh?#IӨ&?&Z#?*0x)??a#? P@@@@@,@*??????]M$X*?,@Wa?Pak;@jH.g@DNQd?K*( ?oO?2K?@fpȟ@f +As@ @2-V.@2-V@*~#@2-V@8PH@2-V@'K]@2-V@(@2-V@,1&@zG.@zG@@zG@Mj@zG@ ԕ@zG@q@zG@ +qi@97@.>@5 ě@43@4A7K@3qu"@3 k@3t9XbN@3 k@3s +=p@3 k@3w+@8J??q-*7?D?`FC:?VAg@8J?XSra1?To?Җhn?7c/?>/@8p?f1?ji?!??{%@@@@*@(?????!@+ @l@+ @@+ @@+ @*1@+ @D@+ @$@CzG@Cq^@CzG@C@CzG@CO:@CzG@C)l@CzG@C:)y@CzG@C$e@8쿱[W@8&-r@4#@4!l@3tj@3*0@2‚@5@2u@2‚@5@21@2‚@5@2:~?zM ?D?ub5?{y6?EE?*j?__`?_lWF_?Z;?%ja?Ng x? Ӻ^?Vʴ}?qv?GB?VED?܂N.?"#@@@@@,@???????s8-?a^E?hmg?dWa@l@C%??l_w5?9&T`?fxU@o d@"@daG{@db I^@daG{@dh9X@daG{@djg@daG{@dTF@daG{@dU!S@daG{@dZ>@uF@uԼj~@uF@u +=p@uF@uǓݗ@uF@u@uF@u +=r@uF@uR<@8YJ@8D@3hr @4nP@3t@3쿱[W@2‚@5@2A [@2‚@5@2K]@2‚@5@2Ƨ.?o 6}?:}T?go]?Hyq??S:Ъ;5?:-%??luOv_@.zH@E`A8@.zH@2 ě@.zH@(p:@.zH@<1'@.zH@0 ě@.zH@+xF@8v@8iB@5I^5?@5 ě@4j~#@4,<@4 [W?@3sh@4 [W?@44m9@4 [W?@4T`d?E@?K'B?mr?%?Ͻt/9? C@L(?F/P5?6S{?kCnL?#Vz?͋>?k?Z? h?7}?^FC}?Q?]?4\ɵ@@@@@*@&???????xۂte;?Y9id?>@.%t@8T?wl?bc-?!?8@jL֖B@$@#^5?.@#^5?.@#^5?.@#^5?.@#^5?.@#^5?@$Fs@KC.@KC.@KC.@KC.@KC.@KC@f@9V,<.>@4S.Mm@4~".Qn@3YJ.NC,@3YJ.NC,@3YJ@4B@8J@8#@8:@8 >+@8I?]@8J@8@8i@8@8S?b*@8p@8 *@8p@8@8 ?HucL@&?%@}E.@}E.@}E.@}E.@}E.@}E.@.@.@.@.@.@.@8,<.>@3.Mm@2`A7L.Qn@26z.NC,@26z.NC,@26z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 &@z^5?}@lI^5@z^5?}@[@z^5?}@j~@z^5?}@ٌL_@z^5?}@مQ@z^5?}@Fs@@\j~@@š@@W@@@@Q@@lVϫ@9hYJ@9Y#w@4^5?|@4ݗ+k@4t@4 P{@3u@3h ԕ@3u@3@3u@35\(?p"7?q?3}C?ʺd9.?*5>?D1 `?k|jʨ?f?$G"?ln<9?Iph?"v?o7\?JfA?wG?Gs#4I?*fd?C3`ow@@@@@(@"??????E?M n@?fOm?&@D@xGG:@E?0U?\7Y@$à@Î@m[@'@6z@8~%@5 ě.Mm@4'KƧ.Qn@3c.NC,@3c.NC,@3c.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??)@1&x@1hr"@1&x@1@1&x@2nP@1&x@12Y@1&x@0@1&x@0 )@T@/@T@Q@T@84@T@84@T@+a@T@o@2쿱[X@21@-\j~"@-\wkP@-]E@-^Ov_خ@+̲@+̲@+̲@+̿[W?@+̲@+̋C?^Dw'?°R;?=?Kh?G?6r In?}?bV,? +?NJ?6)}?A B{?_~t?cPQ?.+?y8$?XLL?a+?@@@@@,@,???????V?)j>?"@1@%N?8߯P? ?n_H?|8@s32v@*@Rt@R_@Rt.@Rt.@Rt.@Rt.@Rt.@hr@l@hr.@hr.@hr.@hr.@hr.@8V,<@8[AjZ C@40ěT.Mm@37Kƨ.Qn@2s&.NC,@2s&.NC,@2s&.NC,?7娠@8#@8:@8 >+@8I@8?!@8@8i@8@8S@8?i@8 *@8p@8@8 @8 @?+@u@ +@u.@u.@u.@u.@u.@r @[C@r .@r .@r .@r .@r .@6:@6I0<@3+ I.Mm@2KƧ.Qn@2 +0U2a|.NC,@2 +0U2a|.NC,@2 +0U2a|.NC,?| V@8#@8:@8 >+@8I@8?eXW@8@8i@8@8S@8?^$@8 *@8p@8@8 @8 @?,@LO;d@L`A@LO;d@L +=p@LO;d@Lr @LO;d@M O;d@LO;d@Ls@LO;d@L-V@u C@u`A@u C@u%@u C@u ^5?@u C@u;dZ@u C@tp +@u C@uhs@8p4m8@8t,<@5!hr @5=,<@4K"`B@4aN;5@4p@4?@4p@4|@4p@4o?{QB?}d?FB:?_B?M,?*j?Ol?dx/?Rs??tPYz?L "? ' %?fb?*wjs?,|?xb?+C@???@@???????.a@?a/9?Bz^ʉ?U0f@L2@ug5?Z?Va?b?YS?\U@rz26\@-@/\)@/v@/\)@/4@/\)@/Ov`@/\)@/+ @/\)@/Ʌo@/\)@/@fXtj@fX@fXtj@fX74@fXtj@fW3@fXtj@fY+@fXtj@fXD@fXtj@fWkP@0>6z@0>6z@0 I^5@0s@.dZ@.dZ@.@.vȴ:@.@.حV@.@.?^Dw'?3i?7[䭝?lDžN9?Dj?{+@8I@8?F @8@8i@8@8S@8?=@8 *@8p@8@8 @8 @?0@?x@?x@?x@?W@?x@?L/@?x@?C,@?x@?Q@?x@?ᰉ@P ě@PbM@P ě@PU2a|@P ě@Pv_خ@P ě@P@P ě@P'R@P ě@P@3T xF@3S\N@0 ě@/>BZ@.F@.&@.At@.t@.At@. M;@.At@.1?}ѿ,?jN ?O??!ˠ*(?B ?fW@@@@@$@,??????? /(@  ?, m?;@@?r@P!!?Kߵsq?9am,p?]? +@g@0@1@Jz^5?}@JwKƧ@Jz^5?}@JxV@Jz^5?}@Jw@Jz^5?}@J|wkQ@Jz^5?}@J{lD@Jz^5?}@J|1'@/@$/@/@Z @/@Q@/@fffg@/@@/@>BZ@7qiC@7 @3 I^5@3|@3Ctj~@3D?@2Q@2}H@2Q@2Ov_خ@2Q@2ڹZ?qv?m0?RsW?ҕV{?RXFf??=?F/P5?5CQ?Jj?L?n ?Us?+QK?`F?~/O?WhQ?t?`i=@@@@@*@&???????N2_8?@ݸ?;V[lE?'>w@J{E3@ `?VhCņ?Kz?q7V?=@l#s@2@*߾vȴ@*߾vȴ@*߾vȴ@*IQ@*߾vȴ@*j~@*߾vȴ@* [@*߾vȴ@*Z@*߾vȴ@*@ސbM@ސ ě@ސbM@ތ"h @ސbM@މ7Kƨ@ސbM@|(@ސbM@ޑhr!@ސbM@ގ}Vl@5S&@5F +L0@3ahr @3_;dZ@2Ƨ@2e+a@2YJ@2 k@2YJ@2U>@2YJ@2zxl"?| ?Čۨ1A?oq u?Hyq?R?0 +?F/P5?j%Ra?v@b? ?=M?J,?m!?3a=?,1'?k,??w w@@@@@*@(???????C>,`^ؚ$?/z?h1@*(@ފx*?M<(?wn?Fq|s@ +kY)@eFV@3@j~@$@j~@j@j~@.@j~@O9n)@j~@lgb@j~@S@w@V@w@՞@w@"P@w@fq@w@hXc@w@C@4@4@2; I^@23͞@1-@1a@1=ce@19؇@1=ce@14w5@1=ce@15N?|b@?@9?[6.7?Ѻn?<$a?\ۅv?}@TΥ?y?)3^?C\7hv?3|Oi?C⟗?SS?mO5?Ԗo=?%A?lh8??@@@&@(@,@9@7???????Q?spl?-h^]K[?F;@P@nk?L$q\}?f6?@?ա@ereX@4@vE@v+ @vE@q-@vE@O@vE@pO*@vE@ F@vE@MPA@E@ȴ9X@E@u @E@=l@E@Q(@E@i4@E@ؑk@3H@3UhƓ@0sS@0eR@0."@0pF@0&YJ@/̵d@0&YJ@/JS@0&YJ@/yUY?}#?Ğ?ґ?:7C1?W?.|[?|b@?#wg?_m24?}5,?v.*?Eim?n3?KU!?eW^_?u<^?a,=?"ۀA@@$@*@$@9@:??????f^ـ?oTr?}@c(E;@:?v?r.I-?oF?x%A@ӹ0 +@Z(P@5@F@G,@F@@d@F@Ar@F@G&@F@IB@F@Jo@ffff@㕁%@ffff@)_@ffff@A7M@ffff@F]e@ffff@S&@ffff@L/|@6YJ@6D@2ٺ^5?}@2+jf@2,j~#@2)@1&@1'/W@1&@1g l@1&@1 ě?}? q?,Z?\2? +`?IdGc# @Ii@ixm$?C>?^ZP?g+?ģf!@gN;@7@{`A7.@{`A7@{e@{`A7@{+j@{`A7@{ݗ@{`A7@{Q@{`A7.@$/.@$/@3@$/@@$/@)^@$/@|R@$/.@3 xF.>@08r Ĝ@0MH˒@/ӶE@/vȴ@.73@. '0@.73@.oiDi@.73.NC,@8J?R?uN?0K?=U@8@8J? QnS#?U"?sZ-?1H9v@8@8p?ָ.?ji?]O8?&n_@8 @@@@&????8@8Q.@8Q.@8Q.@8Q.@8Q.@8Q.@sE.@sE.@sE.@sE.@sE.@sE.@7~($.>@2!hr .Mm@1"`B.Qn@0u.NC,@0u.NC,@0u.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 9@j~#@h1&y@j~#@oA@j~#@ka@j~#@k~(@j~#@d?@j~#@fIQ@݀@݁7K@݀@~5?|@݀@݁n.@݀@.H@݀@݄oi@݀@݃,zy@6YJ@64֡b@3; I^@3;s@2`A7@2ˆp:@2?䎊r@2C,zxl@2?䎊r@2>ߤ?@2?䎊r@2?o?F/P5?L?&t?CF ? ?5ŋ?}ѿ,?'`?Kd+?.}$?=?kj?v'X?oM?Z?0?1?a@@@@@*@*??????4R?2p?Iv%aq?> ݤ@gX@݁?hS,P?^O ?>tk ?C@fK@:@;lD@;dZ@;lD@hr @;lD@@ qw@;lD@Xtj@;lD@?o@;lD@ 8@S@-@S@ڟv@S@E@S@B@S@@S@̿[W@8:@8SMj@4hr@4hۋq@3"`@3{J#:@3!.I@3@- @3!.I@3Q-w1@3!.I@3Mj?5}'?>I ?3}C?(&V? K?OY?X?''5?9|/?c6; ?eB?@ؤ? /x/?-8?fr[?A ?wY?&侱4@@@@@,@&??????y5[6?k!_?2r?y|J'@9,d@%,?UfX?Ȏq?EjF(v?>0@j趴@;@cS@cS@cS@eo@cS@`- @cS@c{J#:@cS@dt@cS@ce@dZ@dT@dZ@ZS@dZ@]!.I@dZ@g@dZ@eݘ@dZ@ezxl"@4įO M@4+a@0ٺ^5?|@0E84@0Ƨ@0\)@0@4@0d8@0@4@0&IR@0@4@0.H?| ?"2? ??V^?f]G?|O?[45?y?3F0?JL\?m/wE@cc|@eF.p?/w؛?L՛Do?i3y? Uu^@f{ʺ@<@Aٙ@Aٙ@Aٙ@Aۘ@Aٙ@AG@Aٙ@A״3@Aٙ@A"@Aٙ@AحV@/"M@/ti@/"M@/%o@/"M@/(1&y@/"M@/$Z @/"M@/#{J#:@/"M@/!@7uS&@7s ҈@3+@3.H@3U`A7L@3Vt@2J0U2a|@2JC\@2J0U2a|@2L(\@2J0U2a|@2Ka@?sD?oNQ?^*G?btx=?p[?XE%:?)T?7fU?t-E?FT \*?'#g?kj?~~?@C@@C@!-@C@oi@C@cA @C@H@C@O@ȴ9X@ȴ9X@ȴ9X@1&@ȴ9X@@ȴ9X@J@ȴ9X@4@ȴ9X@S%@3|Q@3ae@/"`@/U2a|@-nO@-ව4m@.@- (@.@.ݗ@.@.?|O?b[?Mq ?xx?h5+P? Ck?| ?M7F?Fy +?s҆L?,rg?-[w?8*?7}?aI*?.SM?_խW?*Z}@@@@@,@,????????[0Qy4?1,9Qt?V7:g-@턼@?N3 V?r:s~\K?ϴ'?#;@bI@?@xQ@xtj@xQ@yXbN@xQ@ye+@xQ@ye+@xQ@w>6z@xQ@wKƧ@mhr@nzI@mhr@lq @mhr@l"h @mhr@lzxm@mhr@m8@mhr@mB@0@@0@@+MV@+Mqu!@*x@*ɠ'RTa@*oi@*e@*oi@*oh@*oi@*oi?^j? ?&??eU5?tKc?tJ?bQ넛? g?j?; $?Ff$?SV.?bM]f?u?u@>N ?avh?l&?@@@@@(@,??????OZ?"J?5/B?!63@x!J@m.,?D_?oo?0P7?g7j?X'Ec@s 9 @@@n@@n@7Kƨ@n@Mj@n@PH@n@`B@n@e+@$$@$bM@$$@$`hۋ@$$@$NV@$$@$Q @$$@#y @$$@#C@8:@8u@4O|hr@4E '0@3V@3@3fYJ@3Z>C@3fYJ@3TtSN@3fYJ@3LN;?E?05 [?3Z?998?+|˟ @g`@A@A7L@𘰢@A7L.@A7L.@A7L.@A7L@B|z@A7L@Ձ$@yE@yXbL@yE.@yE.@yE.@yE@|S-@yE@|Y~@8>6z@8q +W@3S.Mm@2KƧ.Qn@2Ǡ k.NC,@2Ǡ k@1*,@2Ǡ k@1i0 (?`@8#@8:@8 >+?Ҏ?ѻ,?wvHf@8@8i@8?җ#?ڑL'?^}\Б@8 *@8p@8??] @@2@*???B@s\@s7Kƨ@s\@s l@s\@sݗ@s\@sz@s\@so@s\@swk@"@"@"@u%F@"@"@"@y=~@"@@"@y=@3I_o@3Iy @1xr Ĝ@1xl"h @1"-V@1!_p@0u@0䎊q@0u@0 ҉@0u@0@N?2}?]Û? '?,Z?u?dW?| ?Q_ڸFN?}7.?Җq?UBi?P=?nwf?Q?֘>D?9XNu?7?k!l@@@@@&@&??????R3*?0iT?]Xؗ&@s;0@')Ĩ?PC\i?4#ŵAr?8¸(q?s[P@grC 0@C@S@dZ@S@5?|@S@!n.@S@\@S@ '@S@W@m@ ĝ@m@x@m@hۋ@m@E@m@S@m@0@6H@6}Vl@3}hr @3}hr @3{Ƨ@3|wkP@3@5@3wkQ@3@5@3䎊q@3@5@31&x?1j?*|3N? ?o=\>? ?7fps?qN?1`?C B?O[?nwf?p51?E~?VED?΋N?HF!6@@@@@,@(??????eY?nAc]x?D H~?c0-@\@z ?brcP?Zޣ?Yٱ@f@c +4@D@G+ J@Fffff@G+ J@F&@G+ J@GfB@G+ J@Cn@G+ J@JL/@G+ J@I@`A@-V@`A@о *@`A@V@`A@hr!@`A@ʦL/@`A@;dZ@7!.@7͞&@3)+ @3)0 (@2`A7L@21&x@1_o @14֡a@1_o @1:)z@1_o @1xl"h +?q!U?_X +?P"hI?)?P=?)'3??Hk#?Qc +?ihA? ?.?z"2(?7'nK?aI*?cZ?b? )D)@@@@@*@,???????UMX=xM?TFI?PsR@F Jl@ϝ|?n3,V|?jV *;??υ̞@m4@E@Q@ӈ@Q@kX@Q@75@Q@+L@Q@dl@Q@[~.@ctj~@c;(@ctj~@cDn@ctj~@cw^(@ctj~@cm*J@ctj~@cke@ctj~@cnR@8쿱[W@8(ےP@3S@36=C@2q7Kƨ@2f]b@1xF^@1a+E@1xF^@10L@1xF^@1*GQ?Dʯθ?u3v?E&?y??%?Xd?4?1ͻ?,?:?2%?8 +$?ǒ}?(tl? gz?gK?s ?Fu@@"@(@&@8@5???????1Kq:(?W??bٶ7^@K@cvZb;?yRT;?|X?qjZ?An]oV@l1@F@v"M@v!@v"M@v#,zw@v"M@v"\(@v"M@v!.H@v"M@v˒:*@v"M@v" I^@lC@l1&@lC@m5Xx@lC@m(@lC@l>B@lC@l~($ @lC@m(@4,<@4l!.@0R I^5@0Rs@/F@/؆YJ@/Gݗ,@/F@/Gݗ,@/Fx@/Gݗ,@/G-?| ?Čۨ1A?"?:Z2b?,I ??}ѿ,?j%Ra?A)N?>\?Hc?Uyu#?8*?)Zw?YF?E 8?ˢL1?A0)n@@@@@*@$??????oqQ?*{:?-t{ Ћ?EM@v!)L@l|?M?/G|?, S?h@gIzA@G@o)x@o)^5?@o)x@o)Dg8@o)x@o)@o)x@o.O@o)x@o)'RS@o)x@o)@bM@h9X@bM@`4n@bM@em\@bM@gݗ@bM@eO@bM@hK]c@8,<@8S&@3ahr @3`4m8@3,j~#@3+U=@26z@2b@26z@2iB@26z@2[?us\?d_s? +D?!#?n{K?1a?o 6}?\j? yz?@[*^?c3c(? C`? nI?|׿pZ?p-?{0?/̽`?T8@@@@@(@(??????# +g c?O@^?G!1N@o+nП$@g/ i?k?Z_IĚ?ӆq ? o@pHZC@H@p$/@pG{@p$/@p I_@p$/@poh@p$/@pR<@p$/@p?@p$/@p˒:)@e#S@e#%@e#S@e"`B@e#S@e!af@e#S@e"wk@e#S@e"\(@e#S@e"&I@2H@2.2@-A7K@-IQ@-;dZ@-[6@-fL/{K@-gfA@-fL/{K@-i*0U2b@-fL/{K@-hۋq?^Dw'?&H?(?䆀{6? 9?aX?bV,?j%Ra?ԕ]I?e[|(?M?rJs?:9?.+?٤?hB^?ˢL1?L@@@@@*@(??????KS)z@{?4!Kp?Q8-@py̸@e"vR?CQZ?!Ə%?!r?;&b@s04@I@`A7L@`n@`A7L@a7K@`A7L@a7K@`A7L@b I^@`A7L@^m\@`A7L@_F@[ ě@[bM@[ ě@['R@[ ě@[@[ ě@[)^@[ ě@[{@[ ě@[bM@304m8@30A7K@.Ƨ@.q @.x@. k@-oi@-m\@-oi@-S&@-oi@-m\?|O? ?=?Kh?lDžN9? f?2I/?|O? ,C?O(?Y?IM?rJs?q6tN6?.x?2Y0?8 ^?pk Y?pk Y@@@@@*@,??????, ?5?5ՔZ]4c? ܽb R@`>@[?U$?*&"V?x%?aK@f|@J@ߥS@ߩl@ߥS@ߤZ @ߥS@ߡG{@ߥS@ߠhۋ@ߥS@ߝb@ߥS@ߝ,@;dZ@A7L@;dZ@2W@;dZ@ۘ@;dZ@~@;dZ@@;dZ@dZ@6s@6bM@2 ě@2}ڹY@1t@1° ě@1!:S@1U=@1!:S@1c @1!:S@1ߤ@?Ol?9؊??̒?Jj~u?ީqk#?)T?p RN%?I?,?#:d ?to(?Ƌ?3a=?d +-?ȏG?0&YEd?e(Os@@@@@,@,??????g3S?=y |%?6:@K@ߢN@9?\֘e$X?Vc5*i?)?y$ @hP@K@Ƨ@=p@Ƨ@2c@Ƨ@e@Ƨ@`@Ƨ@ȱA@Ƨ@#@Hvȴ9@HhY@Hvȴ9@H2@Hvȴ9@H+@Hvȴ9@HR/@Hvȴ9@H&@Hvȴ9@H/6vY@5 xF@5@.kƧ@.lKk=@-ӶE@-ԫ_K@+Z@+)_@+Z@+ I?@+Z@+ l?|b@?yi?&!R?V{?T^?6m*w?}x?sn?y Y?"F@@*@(@,@7@9??????!_$E4?)Cʽ!?-@P@H1?I/#J:?3L$R?B ?s"q@gf`@L@wr @wr @wr @w@wr @wIu(@wr @w2Z@wr @wt&@wr @wf@ -V@ -hr@ -V@ ,C@ -V@ ,pt@ -V@ ,g@ -V@ ,@&R@ -V@ ,>B@/u%F +@/u%F +@)~"@)`@(SE@(S;W@'Vl"@'K]@'Vl"@'K]@'Vl"@'[?^6P? l???D?s&?4Q?bQ넛?K}?qΪ?2j)6e?μjH0?L5Sk?bM]f?P0?pDRh?N?_cd?8'@@(@,@&@:@9??????H~_??2#?ZSV@w3e@ ,.?Ap^?%M'\?}!?CqgJ@s @M@e1'@e2@e1'.@e1'.@e1'.@e1'.@e1'.@\m@\"i@\m.@\m.@\m.@\m.@\m.@7@@7XGmI@2S.Mm@1"`.Qn@1V!.I.NC,@1V!.I.NC,@1V!.I.NC,?Q.K@8#@8:@8 >+@8I@8?r@8@8i@8@8S@8?kZ@8 *@8p@8@8 @8 @ ?N@t7Kƨ@t~#@t7Kƨ.@t7Kƨ.@t7Kƨ.@t7Kƨ.@t7Kƨ.@D@Cp +@D.@D.@D.@D.@D.@1DO M@1AA [@-j~.Mm@,dZ.Qn@,V.NC,@,V.NC,@,V.NC,?`~E @8#@8:@8 >+@8I@8?bQ넛@8@8i@8@8S@8?L@8 *@8p@8@8 @8 @?O@$Z@#%@$Z@,cA @$Z@*W@$Z@8V@$Z@1@$Z.@gG+ J@gGz@gG+ J@gDt@gG+ J@gB}V@gG+ J@g;=K@gG+ J@g6+ @gG+ J.@35S&@33&@1hr @1D@1U`A7L@1LPH@0‚@5@0 k@0‚@5@0ߤ?@0‚@5.NC,?|O?+!?13??Fq/b?V0o~8@8?| ?HG^?Q\?< /0?V@8? SF?i--?ArUA?q$_54?@C@8 @@@@@*?????P@$/@p@$/@n.@$/@TɅ@$/@7@$/@d@$/@~쿱[@G@Z@G@@G@)y@G@)y@G@Y@G@#@8L]ce@8N;5X@2+S@2*fB@1ttj@1sA [@0c@0c@0c@0dzG@0c@0c?WZM?]Û?K?vHn&?\2?9?E?`?|ɽ?1? ^??P=?xJ?Q?],m=?E 8?fW?*Z}@@@@@@"??????`0[Mg'?1? 6?T% R@@ D@l;?B'#?ker2O?WxZx?4cBM6@p&U@Q@_lD@_S@_lD.@_lD.@_lD.@_lD@_@_lD@_"@Gz@DZ@Gz.@Gz.@Gz.@Gz@B I^@Gz@Gz@6L]ce@6JqiC@2Lhr.Mm@1j~.Qn@1 [W?.NC,@1 [W?@1Q@1 [W?@1 +?2}@8#@8:@8 >+?J+?I ?F/P5@8@8i@8?q?p?],V@8 *@8p@8??oڕ??oڕ@?????R@p +@E@p +@,@p +@m\@p +@IQ@p +@+k@p +@@RnP@R@RnP@S@N@RnP@Sa@@RnP@RW@RnP@S@RnP@R䎊s@3ks@3k'/@/p`A7@/p{@/*n@/*0U2a|@.`d@.9XbN@.`d@.zG@.`d@.O L?| ?{j?1f_?ݶ\r?ǹT?2I/?| ?0n=Q?O(?@[*^?Cq$u?+d?u@>N ???+ ??ˢL1@@@@@*@,??????&K@? 7? %̓)1?0V@@S^B?+.?2*?d+8?q@ffX$@S@HT.@HT.@HT.@HT.@HT.@HT.@Q.@Q.@Q.@Q.@Q.@Q.@9v.>@5S.Mm@5.".Qn@4:S.NC,@4:S.NC,@4:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 T@;dZ.@;dZ@74@;dZ@KƧ@;dZ@@;dZ@ @;dZ@5Xy@.G{.@.G{@.u@.G{@.xF@.G{@.1@.G{@.:)@.G{@.7KƩ@9۹~($.>@3hr@3IQ@3)"`@3:)z@2,<@2'R@2,<@2kP@2,<@2 ԕ+@8J?-56+?b?Ԧ?n?rA:/?8@8J?,g?{2??pFs? CQͫ@8p?j?Mf ?ə?2:U?R|@@@@*@*?????U@/-@/@/-@0`P@/-@09@/-@0%@/-@./Ia@/-@/(@Yt@YT@Yt@YQ@Yt@Y @Yt@Y<@Yt@YaG@Yt@Yx@44m8@4zhJ[@0+ @0/4]@0~"@0P%@/a-w1@/b#-=@/a-w1@/a8*:@/a-w1@/ar?|B &?٣AV?+m7?:Xv?/[ap?`?|b@? ?1!?1?F7*?K~P?q9?  ?m6`?F ?ǤE+?gӼc@@"@$@ @0@,?????? ? i?0)?$-@%@/}@Y+?Pfqwa?D>f?4QF"?+O%X@f@V@E@m@E@}Vm@E@Q@E@sQ@E@4@E@sh@`A7L@a$/@`A7L@^ߤ?@`A7L@`4m@`A7L@aTɅ@`A7L@^ߤ?@`A7L@_$tT@7@8Q@1+ I@1RT`d@0j~@0JL@0!.I@0Fs@0!.I@0,@0!.I@0)^??1?TS?菁k?% +?ʟ?2}?jכc?8G?>G]!?,Y?A_f;j? +e?G + ?],m=? ??ˢL1?Rv@@@@@&@*??????1(6M0?FAv +?)9v?@f @_nn?YkF?PhP6?hKld?9L@pŗ~@W@["`@XUGS"@["`@UPm@["`@S@["`@Q>Z[@["`@Kl@["`@CN-@7K@|h@7K@0@7K@”(@7K@sJ'@7K@ 5@7K@@6@6+1@2+ @2y@1ȓtj@1@@1+xF^@1%@1+xF^@1$20Ջ@1+xF^@1$?ɏ?Q%?~dO?fb +Y,?~7ix?OdB!?nO?{C%O]"?F?(,!B@@(@(@,@6@4??????_wt?WWZ?5fD?Bj@OV?H@>?T38?cm?{ ?Au8H@j.@X@5?|.@5?|@%K@5?|@'@5?|@$J@5?|@"k6@5?|@ {(%@ěT.@ěT@!$OC@ěT@gL@ěT@:@ěT@E@ěT@ub%@8T xF.>@4+@4|h@27Kƨ@2o$ޑ@20U2a|@2SK@20U2a|@2"û@20U2a|@2|>:@8J?'g?itv?K! ?d{B? +w@8J?ATa?6?u8?䝟?Z`L@8p?z\?z?KwK?7?%d](@&@"@"@;@:?????Y@׍O;@Ƨ@׍O;@@׍O;@bM@׍O;@_@׍O;@"@׍O;@}I@mV@kƧ@mV@l/{K@mV@eoiD@mV@nH@mV@lC@mV@l@7]ce@7zG@4i+ @4mK]@3`A@3ѷ@2:S@20 )@2:S@2s@2:S@2]cf??;=?T?MDe?/? +æ?DIx?F/P5? +?(?{k4?| ?%3?6@(/?tgi???G'?ϯs &@@@@@*@,??????q?5VYX?ahW$DG?1`)~@ Ù@lDj?|~Yjl?R<5d?%;$U?g%C@iE@Z@^5?|@^vȴ9@^5?|@_@^5?|@_;dZ@^5?|@^5?|@^5?|@]/@^5?|@]+j@b I^5@b @b I^5@b I^5@b I^5@b @b I^5@b /{J@b I^5@b t@b I^5@b Ƨ@3~($@3~($@/kƧ@/k6z@-n@- @-V@-U?@-V@-Uᰉ@-V@-U=L?|O?ߋb?$C@?!#?% +?ˡK?| ?NۈV(?A)N?]bn~?%y*=?X78?oܧ?.+?y8$?E 8?j?l&@@@@@"@??????+h/+̾`?\>2S[j@^Z@b V?{)n?㗳V?v@l9@\@7@7p @7@7PH@7@7oi@7@7}V@7@7҈p@7@7䎉@u@!@u@,1&@u@C\@u@O;@u@z@u@@7O M@7ᰉ@2@2A [@1ȓtj@1;dZ@1QiB@1M%@1QiB@1O @1QiB@1P6?E?d̺?mGSq?:L +?#0Y?}>h'?)T?g3?FRX?YE?Otx?OW?/?%d?@@@@@,@,??????=|idFk?Pw ~?6m,H@7@e ?fIy?W?zr?{D@m7B@]@+@8I@8?cnŀ@8@8i@8@8S@8?+;=H@8 *@8p@8@8 @8 @?^@tj@E@tj.@tj.@tj.@tj@nP@tj@GE8@kR@kR@kR.@kR.@kR.@kR@k]c@kR@k]c@1|Q@1҈p:@-7Kƨ.Mm@,x.Qn@,PH.NC,@,PH@,*0U4@,PH@,tj~?_\p)@8#@8:@8 >+? f?wZL?bM_x@8@8i@8? xV?SV.?4e@8 *@8p@8??O|q@@@???_@`A@E@`A@v8@`A@opKQ@`A@f +L0@`A@i@`A@;@Vvȴ9X@VeUV@Vvȴ9X@V֔G@Vvȴ9X@V3m@Vvȴ9X@Vk8`@Vvȴ9X@V?@Vvȴ9X@V@8N쿱[X@8Sz@3S@3ĺ`[@2j~#@2ކ@2&@2ZҦH@2&@2FA$@2&@2?پ?>,*?O_?# +t?v77|?nVV*V?)jgï?-C]?\?忚"~?Ϝ? ve\? +kș?vV?wEH? n??Vy/s?앸4@@,@,@,@5@6???????!K P?ye@?ye?t@싕8^@V/?,A?C%! +@B?8`j@mB@`@ @  I@ .@ .@ .@ .@ .@01@/-V@01.@01.@01.@01.@01.@8w@@8*ڹY@4?|h.Mm@3`A7.Qn@3Q.NC,@3Q.NC,@3Q.NC,?sW]@8#@8:@8 >+@8I@8?wp@8@8i@8@8S@8?עH'@8 *@8p@8@8 @8 @?a@nn@n@nn@nz<@nn@n@nn@nY@nn@nK7@nn@nțQ@\(@˅R@\(@'@\(@@\(@#@\(@.^@\(@?@7!.@7@3hr@3LK@27Kƨ@2@2(@2/߬o[@2(@20 @2(@2/pe?E[i)?*e?R?o?caК!?Ό#?~?J?]Y?Nw +?wਙ?n_?H2C?MŅ?4S?o;!R?RI=?h9?Y@@ @"@&@9@7???????G>h7c?LV"t"@lffff@l@/@`A7@/@壯@/@Z@/@夨T@/@夨T@/@夁oi@5?@5@6@2+ I@2fffff@0tj@0MjP@0,<@0s@0,<@00U2a|@0,<@0qiC?|O?W[?U#?U*?\7?i{?}ѿ,?4i?ԕ]I? Y?&Tm?h,à?m~Z_s,?G + ? +`z@l!@Ӭ?8WE? ߲N?Y-?GK@gY@c@ffff@ffff@ffff@4m@ffff@@ffff@㢜w@ffff@ߺڵ@ffff@ @;;dZ@;;dZ@;;dZ@;@;;dZ@;kf@;;dZ@;e,@;;dZ@;>@;;dZ@; 9Sg@2w@@2w@0S@0HtP<@0q7Kƨ@0v@/-w1@/&IR@/-w1@/SM@/-w1@/l\?^6P?waG?ַHk?ھ۲?)C3?gɜY^?bMn?%l Z?R*?j?[w}^ʨ?#qA?bw' g?&&Y? ѿ?O.ce?7kPz?ǭ7@@@,@@9@7??????L`?Ldk?3c0?2@W}t@;?B@?Ai3?6 3z?w/ c#@s5pP @d@Ӫ~#@ӚG@Ӫ~#@ө@Ӫ~#@ӧ)_@Ӫ~#@ӭ5Xz@Ӫ~#@Ө˒9@Ӫ~#@ө^5?@KƧ@Hr @KƧ@KƧ@KƧ@O'/@KƧ@P)^@KƧ@O@KƧ@Ow@8*0U2b@8wkP@3xr Ĝ@3z͞&@27Kƨ@2Xy=@2J0U2a|@2L@2J0U2a|@2L(\@2J0U2a|@2K:)z?E@?@K/z?1V?Q??WA:@8 ?{%@@@@@&?????f@2-V@ޯ9@2-V@4~f7@2-V@09 r@2-V@5 S,@2-V@1*4@2-V@0`A@~"@ A7K@~"@xO@~"@sB@~"@uMU@~"@yQ@~"@|Ã@8v@8 D@2^5?|@2A@1"`@1t{@0D*@0$31@0D*@0챔@0D*@0̐d?%2)`?>k^?Uw&?Ӳg?(e ??ay?r4?m:x'?7?qHO?,^ڰ?9?C s?? |~?[yמG?X ya?AShU@@$@,@(@9@4??????bNaI?`X?`G?XY@2T[@x!*?o!=?gT`Es?[ť h?'Y_@s #@g@@n@@$/@@&H@@@4@@IQ@@ح@@3333@@@@ҽ<6@@ҽ<6@@iC@@GE8@7֚,<@71'@2 ě@1Vϫ@0-@0@0iB@0 @0iB@0W@0iB@0䎋?sD?Z.? ?Ac ?u?WA?1j?,#?d0R?.? A?B8? + l\?9o?`x?Gϵ'?j?7@@@@@$@(??????Eݺ .X@?6I?1t2'V@Q)@ҙ< ?T6k?2\b?tvd?l<#9@jl@h@Ƨ@nP@Ƨ@n˧@Ƨ@!7@Ƨ@uk'@Ƨ@ffn@Ƨ@v$@M@sY@M@@M@@M@=A@M@@M@7@7Y*0U2b@7[X"@4 I^5@4F M@3-V@3c@2ޫ6z@2͔JG@2ޫ6z@2K@2ޫ6z@2?R ?/s?3sL?1_?8U`?h6z@7v@3^5?}@3P{@2y7KƧ@2z^5?|@1kxF^@1mhr!@1kxF^@1l1&y@1kxF^@1k$?UbB2?E?Q/ +?wX/8?R%(0?f]G? ?-NI`(?}7.??az?C ;?pr?r?m~Z_s,?< N ? Ğ?Y͍_@@@@@$@ ??????`RYEY0?8 ?#~> @$N@ana?S9.?FΚ,?#j(?{H@l;@k@l@C@l@x@l@1&@l@ +L0@l@W@l@6>@ߝ-V@ߛS@ߝ-V@ߨXy=@ߝ-V@߻s@ߝ-V@ߥv@ߝ-V@ߚ}@ߝ-V@ߊ=p@6=:@6;}@33S@3,~($ x@2j~@2n@2._o @2%S@2._o @2@2._o @2$\n?|h2:? #?/Çf?btx=?t8 ?M?nO6z@3p@3{W>6z@3p@3vl!.?qv?+Rja??&1}?']?cJlD?qv?S̵E??B3?Y:J?,4r9?fg?l&?y\?*+JҚF?Oh6c?P$`*@@@@@,@,???????QMOL?w&׀?Bl5?T>G@M,@+L?^H?r2l?ަ 9?_tc@l}rQ@o@NaG{.@NaG{@Nn.@NaG{@N@NaG{@NM@NaG{@Nzxl"@NaG{@Nn2@$/.@$/@Ϫ͠@$/@g@$/@:~@$/@Fs@$/@Z@904m8.>@2 +^5?|@1D@1j~@1}K]@0xF^@0ߤ?@0xF^@0j~#@0xF^@0H@8J?J f?bY?':?0O?KAb@8J?ֶ?J&?"JÁ!?^候?p@8p?`P?a +?{Cx?%d?<@@@@,@&?????p@g-@hr @g-@hu%@g-@i*0U2@g-@i@g-@fFt@g-@g)`@n @n V@n @n jO@n @n \@n @n @n @n 5Xy@n @n !-@0@0@+WKƧ@+WXe+@+XF@+X4֡c@)@)!.I@)@)@)@)!.J?^XN?[e@3sS@3i^@2-V@2T`d@25sh@20- r@25sh@2+s@25sh@2& '@8J?-56+?IK?؆{~?Y?O@8J?{UO?a>&?%hF?s?Vϊ޲@8p?<2?Śn?w%?Q?]?@@@@$@(?????r@Hfffff@Hk I@Hfffff@Hf,=@Hfffff@Hf&@Hfffff@HeoiD@Hfffff@He1@Hfffff@HeO@+ J@vȴ9Y@+ J@$/@+ J@J@+ J@@+ J@Ft@+ J@YJ@8B䎊@89b~@1&+ J@1')^@0_-V@0_v_ح@.ߤ@@.?@.ߤ@@.ݿH˓@.ߤ@@.Vl"?{B@nzH@|쿱@nzH@|PH@nzH@pě@nzH@l]cf@u2 Ĝ.@u2 Ĝ@u9Y@u2 Ĝ@u-(@u2 Ĝ@u9#x@u2 Ĝ@u-%@u2 Ĝ@uڹ@8]ce.>@6|hr@6W@5n"@5yJE@4ޫ6z@4zG@4ޫ6z@4a@O@4ޫ6z@4D@8J??B?|?C˗?x7V?c+:X@8J?vj?R?:$I0?&?him?/+@8p?e]Z?CRv?>0Om??Ϭ +f@@@@*@(?????u@%@%@%@r +@%@@%@n`V@@%@<&@%@%@zG@@zG@E_@zG@@zG@F\@zG@ +]@zG@N@4䎊@4-V@0hr@0Q@/|1&@/}@.L/{K@.@.L/{K@.X @.L/{K@.1"?~?J?>ȍg?F<4?Ki8?h?ʋ?|B &?'7x?]Լ?Ay>$;?Us?  &?]ivL?sg?9XNu?:1?W|DC@@@@@,@(??????YF~?=:?Kbh ?YW8`G@i^Y@Qh?ckwH?t(Oml?7֖?09@mЬ@x@>"@6+ @>".@>".@>".@>".@>".@gS@g&-1@gS.@gS.@gS.@gS.@gS.@7쿱[X@7 c@40ěT.Mm@3.".Qn@3!:S.NC,@3!:S.NC,@3!:S.NC,??2ZF@8#@8:@8 >+@8I@8?o"@8@8i@8@8S@8?[@8 *@8p@8@8 @8 @?y@E@@E@j~@E@G@E@Fs@E@-V@E@a|@8$/@8$/@8$/@8d@8$/@8$.@8$/@8 k@8$/@8e@8$/@8af@.5Xy>@.5Xy>@- +~"@- +g @,n@,d8@,ۋq @,y +@,ۋq @,B@,ۋq @,B?^Dw'?&H?m?!#?@ A2??bM_x? +?d0R?7枪y7?Hc?Z,a?bMky?u?2Y0?XLL?B ?B @@@@@$@&??????L<?*f?6 2#4?.4q@N@8a.?EC E??=$(to?([?r:#@s p@z@ȴ9X@v@ȴ9X@@ȴ9X@kP@ȴ9X@XbO@ȴ9X@%F +@ȴ9X@Fs@w@bM@w@ +<@w@E@w@@w@+@w@1@7 xF@7l"h @25?|@2N;6@2-V@2*1@1O M@1Z2@1O M@1|Q@1O M@1 qv?}?J?-.?b?? +`?X?h??M7F?_M?j9@@@@@&@,??????U^Ȩ`,z?7KR+??4xW@jA@?VgfT1?R\ o2?`@?]@l()}@{@->vȴ9.@->vȴ9@- 4m@->vȴ9@-S|@->vȴ9@-*d7@->vȴ9@- ؝@->vȴ9@-@$/.@$/@/{J@$/@)@$/@TɅ@$/@U[u@$/@yz-7@9}:.>@5&+ J@5 @4"-V@4N;6@4iB@3D+@4iB@3MMvl@4iB@38@8J?>I}?Bg2?X?Ks(I,?O֔@8J?Qpj?O?9.?guoĺ?w@8p?Fۯ/??e??[-D?.}y@@@@.@.?????|@V@@V@jO@V@p:~@V@:@V@/7@V@̋R2@-V@in@-V@{@-V@O M@-V@-@-V@p@-V@t9@6S&@6ez~@2 hr@2}Vl@1"`@1PH@0iB@0ѷX@0iB@0vA@0iB@0bo(?ڡG7@.@.~˾@.@.+|?^P!?Û* ?.t`>?=@v?1\? #?bQ넛? ?-ƴ?0r>?9%~E?]VK?bF?"?ڸcX?{ 4?Ez?GS@@"@,@"@6@4??????Ol U?*WVTb@?@A-@Z?9R0/?(-??oo(?IOw@su@~@@zI@@\(@@α2@@(@@cA @@C,@1'@/@1'@q @1'@S@1'@S@1'@<64@1'@]cf@3D@3$/@0+@0y @0t@0sg@/C\@/(@/C\@/(@/C\@/?|O?W[?&P?W0 ?u?̉ߚ?| ?jכc?&?ihA?Jj?低NV?q6tN6?%_D?@A?E 8?SP?ˢL1@@@@@(@,??????>U$m ?&Y?%7@2@$?FB, $?FT<|?J?gc)@f|@@S@󣕁%@S@?@S@/@S@󤛥T@S@@5@S@&I@x@x@x@xW@x@x@x@xGE8@x@xS&@x@xp:@+-5Xy>@+-5Xy>@')7KƧ@')Dg8}@&cnP@&cnP@&z)_@&z)_@&z)_@&z)_@&z)_@&z)_?`&x?GA?!!׋7?MA8?DE?:?bM_x? +?~Q?6)}?@?Kc?bMky?8 T?oܧ?avh?#.?#.@@@@@,@*??????REs%?_Ű?5Jx?u4=@,L @xw?DӹȘ(?#?B?PZz??UfT@s >Q@@|h@7K@|h@?|@|h@2@|h@@|h@1&@|h@BZc@{dZ@$/@{dZ@y>B\@{dZ@xbM@{dZ@u=@{dZ@|@{dZ@|N<@8֚,<@8@5B ě@5?@5K"`B@5G@@4ce@49@4ce@4x@4ce@4!.?_pP1?EX?^RpX?;Ϝ(?VK?pt#??Zm?=0́?ꉬ>V?mۀ|?<1*T!?poIo ? E?,?M,L6?ڧ? ?D d}@@@@@$@(??????zl.?,f ?S?ewBNC@DP@zb?ojr?zx+C??w:5@mZ`P@@qWO;@q]-V@qWO;@qOA@qWO;@q\(@qWO;@q>BZd@qWO;@q@ k@qWO;@qA [@K\(@K^@K\(@Kn@K\(@Kš@K\(@K1@K\(@Kҽ<6@K\(@KbM@7p4m8@7_?D@3^5?|@3!.H@26-@2/[W>@20U2a|@2z#9@20U2a|@2zS&@20U2a|@2'RT?eM?V[u9?O%c?Ģ??1?5}'?yjP?>ÔR?rVx?1?z\~?"ߨ>?Pn +E?GA?W?u4? +.ԕ?8$ +"@@@@@,@*??????{?rsÀ?XF=b۩?Y;G@qMK@K?z!k?z01?B@3S@3wK]d@3 -V@2tj@2\Q@2KC,{@2\Q@2U '0@2\Q@22<64@8J?V_^?􈤪q?㬱_?{ )?lRA@8J?kM..?P{j?^18??.?Эn~@3I^5?@3J#9@27KƧ@2zxl"h@2kxF^@2jd7@2kxF^@2hۋq @2kxF^@2iy @8J? #?괰E? R?ťBW?! @8J?ԍD?$z¾6?kH?^?&ŏ@8p?zx?(?< N ?8wx?T8@@@@(@,?????@[S@ꯝ-@[S@M(@[S@[S@[S@Y>B[@[S@WkP@[S@UY}@+@;dZ@+@ C]@+@?|@+@+j@+@>6z@+@@8*0U2b@6L/{J@4=hr @46Fs@3Ͳ-V@3Ȍ@2̿[W?@2K]c@2̿[W?@2W>6z@2̿[W?@2ǍO;d?]?hĔV?~"?Uv??S{d?]?^1??f?ֳ?l{9َ?SS?*wjs?Q6?bk?Oc?t?x?@@@@&@&??????^L?mΘ?WCC3?p{fP@W7@@O?f(Kwb?|(gOK?'h8/V?W;C@t +@@>"@ƀ@>"@LI^5@>"@VE@>"@H˒:@>"@WsO@>"@P)^@jC@j@jC@j|@jC@j7Kƨ@jC@jߤ@@jC@jd7@jC@jv@8^H@7 I^@4#@4!7Kƨ@3@`A7@3>BZc @2:S@2R<6@2:S@2ךkP@2:S@2KƧ?LV?LS{?$f%?W?/cե?q;?ni?њH?cGo?? +A?/[?jҍ?)2?8A?~/O?Qx?8?\'jK@@@@@,@,???????s2XfN?pj,z;?p @Ml@jd?|\C?{&]-)?R_uW??ٳoY7@pX@@1&y@ C@1&y@y @1&y@?@1&y@&H@1&y@ce@1&y@"@ EQ@ G+ J@ EQ@ S@ EQ@ XPH@ EQ@ H9X@ EQ@ i7KƩ@ EQ@ Xtj@6@@6m\@4+S@4<64@46-@4%@3B@5@3$e@3B@5@3'@3B@5@3>B? ?p~v]?K9yA?tN+6?ME(l?$ kH2?qn?p?<7T?:?R$(?͂c5?m!?A ?Q?z?J'Y=?%5@@@@@*@??????/ߩ?ex?c񋓏?`z2^@}@ Kc`?0g?z/u?ګ?NA@@cMڿ@@@bM@@lD@@~@@qu"@@Y}@@PH@TzG@Tj~@TzG@TzG@TzG@QN;6@TzG@P )@TzG@Q @TzG@R@2@2$tS@/KƧ@/Ar@-@-[W>@-C\@-TɅ@-C\@-@-C\@-e?^Dw'?q' +B?QX?^:f?yq?uk=?bV,?0n=Q?^ o?wxR?c? C`?j|?Ф?!A +m?__C?L8AS? ;8@@@@@*@(??????W?HL?XG=].?)6.t@=@QP?ggl?8E'?ǫO2?fXh}@r+@@@lD.@lD.@lD.@lD.@lD.@lD.@Y.@Y.@Y.@Y.@Y.@Y.@5~($.>@2S.Mm@1`A7.Qn@1c.NC,@1c.NC,@1c.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @G/@G㕁%@G/@G&@G/@G@G/@Gs@G/@Gr @G/@G@nlD@n;dZ@nlD@o @nlD@o3@nlD@o1@nlD@oh ԕ@nlD@ov_خ@6]ce@6#@2G+@2X$ xF@1`A@1,@0𖻘@0D@0𖻘@0Q@0𖻘@0s?Y͍_?^?ApJ?998?[5?lg|*?Y͍_?Hz??U(\;?SN?ۨ[u@ [?^@f _Ϯ@@W~#@VkS@W~#@W@W~#@Ws @W~#@WXX@W~#@W@W~#@WT&@ffff@XbN@ffff@D_@ffff@9,z@ffff@ݖ@ffff@/S@ffff@迫L@7hYJ@7"Zc@3|hr@3;~&@2V@2 /2l@2OO M@2QJ7@2OO M@2RIIq7@2OO M@2RR$?Pac?m?9{Scr?.HF,?L@Q?Vu.Qn@36z.NC,@36z.NC,@36z.NC,?E@@8#@8:@8 >+@8I@8?qn@8@8i@8@8S@8?64 Ú@8 *@8p@8@8 @8 @?@\)@以S@\)@jO@\)@䮗O@\)@g@\)@oiDh@\)@g@<+R@<B[@2䎊r@2|VϪ@2䎊r@2|?@2䎊r@2}v?F^S?'\?^@?,rg?PY8~Qj??UbB2?Q??.}$?h_N%?F5?&ljm? DS?bk?O"?;kr>?̶j@@@@@*@,??????XI[Po m?Q߂Xc?QJg(@S~|@<.t?g(?m&tr/?ɹ_9?Я3ax@n(;@@/-@.O@/-@4m9@/-@1hr!@/-@4j~@/-@0@/-@/A@j~#@j~"@j~#@kxF@j~#@gݗ@j~#@fffff@j~#@o\(@j~#@mM:@7O M@7,zxl@3+@3ʙ0 @3"-V@3"m\@2:,<@2?;dZ@2:,<@2<@2:,<@2BZc@0j~@0J@.@.[@.@.\N<@.@.Vl"?3a=?`?WD@?%?6r In?i{?A[F? aҹz?DP?߇O?Hc?90??G'?/?ʳ_?hB^?Rv?L@@@@@@??????H +*c^?.n?m&@@)g@?JCW?;/\?xSڅ?tɴeJ@l^@@ +cS@ +^"@ +cS@ +h6@ +cS@ +g@ +cS@ +hy@ +cS@ +d \@ +cS@ +b'C@w@wO;d@w@w~ @w@w|x@w@wV@w@whVa@w@wϩ@8䎊@8 +;[k#@3S@32d@2A7K@2=F@15sh@13oK@15sh@14ݶ@15sh@13"3?g^XF?,?5\n?I?C?#pj?|N2?Äp?N?K?9^?5Y?4;QQ|?‘?gvfb?l?Â6$?dZV?Ub@@&@&@@5@8?????? Cנ?O;V?Y8@k??o@ +eJ`@w:8?r5g?\IN?o?\@m ?{@@bM.@bM.@bM.@bM.@bM.@bM.@I^5.@I^5.@I^5.@I^5.@I^5.@I^5.@9*0U2b.>@45?|.Mm@4A7K.Qn@3䎊r.NC,@3䎊r.NC,@3䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @(.@(@ l@(@@(@`d@(@&H@(@v@Y+.@Y+@Mw1@Y+@?$tT@Y+@3g @Y+@:^5?}@Y+@E84@8@.>@4+ I@4hr @3V@3ȴ9X@3O M@35%F +L@3O M@3,@3O M@373@8J?Y?26?#- ? 'UA? +æ?S:Ъ;5@8J?I9Bf?J?z?Ri?ø4@8p?:K?o}?:?M\{W? 4e +@@@@*@(?????@+@1@+@@+@~|pA@+@@+@d8@+@X@Vqm@Vmhr@Vqm@Tg ]@Vqm@T-DŽ~@Vqm@T8ڶs@Vqm@SIQ@Vqm@TGy @4䎊@4 z@2^5?}@1 @2 "`B@1coB'@10U2a|@0s"@10U2a|@0K]d@10U2a|@0ސ$u?| V?Qth?h7JZ?Քd?'z_6?1[ݶ?}@TΥ?[?˸R{?7f9P?$m>?˕V u?/y?"vJC?j ?@lI^5@lw1@lI^5@lC@8H@8s@3f+ J@3f1.@2q7Kƨ@2rnO@1[W?@1_@1[W?@1IQ@1[W?@1M:?2}?Z.?Gk;m?{@?o?P?&Gf?% ?5CQ?C\?# Y?pPȻ?`@0k?.ge%? h?W ?3{Z?՘]G?7zE@@@@@,@*??????^ *4fLd?*8q<^?Uj򳙥 @K\p@lu?L7 [B?sU)?{R[ ?WrNܨ@k!ŋ@@l1&@hr @l1&@qN;7@l1&@i^5?@l1&@w@l1&@w$tS@l1&@sMj@hI^5?@hH1&z@hI^5?@hO;dZ@hI^5?@hQ2X@hI^5?@hQX@hI^5?@hNH@hI^5?@hGE84@7`D@7aTɅp@2+@2M:@1ߝ-V@1lC@1(@1 ѷX@1(@1T@1(@1O M?)T?V_^? ?rՉ?R?4<7?% ?H*?I?_?[0o_?SmImb?ua?,1'?J?+QK?q+U?0&YEd?0a@@@@@*@&???????hrYRl?/t?TTI7/?WHT/S@q!@hJ+?u,?w_$?Zd.a?ar@iҕV@@|h@}-V@|h@3@|h@^5?~@|h@@|h@G l@|h@(Xy=@@O@@ǻ6@@ƞiB@@K҉@@ȸ4֡@@ǔJ@8`D@8G1@3S@3y@3-@3@*0U@2s&@2'@@2s&@3VFs@2s&@2>5?|?TU?[T?Cq;l?dc?mעA?M9?}ѿ,?%@&?!-F?S^ٙ?,ي?Æ"Y?bO?3XMV?Q?$–?i ?uqR7@@@@@*@*???????u???8PN?É"}@mc@,I?^b?@+ P@(>@b1f@@TF@i7Kƨ@TF@J*NWY@TF@NN-@TF@:@TF@F|W/@TF@Ję@O;@"_@O;@#Uf@O;@.<3@O;@4S2@O;@%q!r @O;@K@9>6z@9w^er@4 ě@4)@3~Vu@3}#+@3+xF^@3,@3+xF^@3+r[ @3+xF^@31T?(?/?=?ݵ?&a?e?C2?>99?cg >'?c>Ep|?E?sa36?"uM?\B ??#hM9jh?8O$k?&'x +@#$@!?X/Ղo?Fj9M?&Rz?oZG@g1m +@@ +=@ +=@ +=@lN@ +=@`|@ +=@?U+U@ +=@>{@ +=@?l@@0@@Wյ@@!j%@@ ʿWr@@W@@^%@6 ]ce@6 9@2 ě@1`7~@1"`@1Tͬ@0Q@0 ;@0Q@026@0Q@0EVA^?}@TΥ?mS?o:6@?HO?[`?HAu?gQ?OS6?)U?}?&?}F[n?pM>?M? y7?v$/?N%ɖ?8@@ @(@*@:@7??????Phg,?Nbʐ"?~@*@i@!|?m9{?2?Tb?iUi@e6:@@-A7L.@-A7L@-ᰋ@-A7L@-a@@-A7L@-$/@-A7L@-<[@-A7L@-ƨ@+ J.@+ J@6z@+ J@!.@+ J@$/@+ J@#@+ J@r@9_o.>@4n5?|@4u=L@3tj~@3Q`@3~($ @3!-x@3~($ @3=M@3~($ @3Z@8J??8?Lqa/?ܳA?O5cO:?!Qi@8J? ?f?p?%9\?+><@8p?cK4+?kn}?k2m?J?dWj>@@@@1@0?????@DO@D\(@DO@Ez:^@DO@E@DO@E0?@DO@EAnp@DO@E9-@r`B@rIE@r`B@r$@r`B@r\A@r`B@s2p@r`B@s:_@r`B@r@7H@7 + B@25?|@2is@2Htj@22 +6#@2ush@2I21PH@2ush@2JuQQ-@2ush@2KG5{?yjP?uA b?_ps?L5?Ρ?Tň?E[i)?glF?.?y7?E.X?4(??PgDm?IE?~O0?d /?{cm@@$@&@*@7@8???????ac?8E# ?g?s"RP,@Ea6@r9QB??P-??ʢ@iL@dv@@@>]/@>W +=p@>]/@>V_@>]/@>m&/@>]/@>Z9,6@>]/@>Y:Y@>]/@>Ysf9T@?vȴ@?` |@?vȴ@?:@?vȴ@?JL@?vȴ@?ç2@?vȴ@?#@?vȴ@?G@8,<@89 @2hr@2ψ@2`A@2 ѹ{@1=ce@1;(5n@1=ce@195 @1=ce@1;F2T{?$?aUY?,?F|?mt?"&?]? E?, eRZ? $YF@? >?Sd<9?{?J?87?@n= n@@-V@@-V.@-V.@-V.@-V@zI@-V@9X@Ƨ@I^5@Ƨ.@Ƨ.@Ƨ.@Ƨ@n@Ƨ@n@7B䎊@7>u@3W+ I.Mm@2t.Qn@1𖻘.NC,@1𖻘@1@1𖻘@1%2?}@8#@8:@8 >+? f? d?| @8@8i@8??m/w@*dZ@*G{@+L@+KQ@+L@+K]cB@+L@+KC&?`&x?GA?(?G?Dj?wZL?bV,? ,C?['?@[*^?Cq$u?X78?b@?.+?s@a?8 ^??b/bJ@@@@@,@(??????:Y?9P1`?E;?#&@nyz@A_b? aI?2\ ?;12Nh?^sL@sd#@@ ;dZ@ Z@ ;dZ@ cA @ ;dZ@ .3@ ;dZ@ Ϸ@ ;dZ@ V@ ;dZ@ L`@UO;@US@UO;@UlD@UO;@Us@UO;@U"@UO;@UF]@UO;@UJ#9@904m8@9.zG@3|hr@3@4n@3"-V@3$*1@28D*@2:ݘ@28D*@2:d7@28D*@29lD?pEIt?ru?l5B?{y6?Xe?4 ?ʻd9\?z?A +;?:u. ?>H>d#?1鄽 ?ȉvw?*T?d +-?J]j?)@Jq?^^ω@@@@@,@&??????cJe?OB{#?TPZ ?T6i;@ ΚFv@Uko?d+O#?dBN?NO?K _@rC@@.9XbN.@.9XbN@-"wk@.9XbN@,G{@.9XbN@,֡a@.9XbN@-NH@.9XbN.@Õ%.@Õ%@!-@Õ%@v_خ@Õ%@c@Õ%@%zxl"@Õ%.@9p4m8.>@4ԛS@4\64@44tj@3ߤ@@3ush@3F@3ush@2l"h @3ush.NC,@8J?'l? + ?dҦ 3?֜r@8@8J?lu?!zs?.Oc?֝Sx@8@8p?S1z??|Rs?K/JRZ?‘x4?W Z?6s?~'T#?}ߊ9?N•w"?"Q$@@@@@,@(???????F7޺?1?z}@tf{@=ދ?r웧 ?5A@/"G{?!K?$@^>>FT@@q&x.@q&x.@q&x.@q&x.@q&x.@q&x.@ lD.@ lD.@ lD.@ lD.@ lD.@ lD.@75S&.>@3 ě.Mm@2-V.Qn@1&.NC,@1&.NC,@1&.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @-V@S@-V@u%@-V@rGE9@-V@l!@-V@t@-V@$ x@0%`A7@0 A7L@0%`A7@0' l@0%`A7@0*#9@0%`A7@07r@0%`A7@02@0%`A7@0 'RT`@8v@8ᰉ@4J^5?|@4?;dZ@3ߝ-V@3m\@3 +0U2a|@24m9@3 +0U2a|@2A [@3 +0U2a|@2M?+-/?DE?s3gp?˃.?Kbo?F}^?{@hr@;dZ@hr.@hr.@hr.@hr@ V@hr@ +Ow@74m8@7 @3pěT.Mm@2b-V.Qn@1p.NC,@1p@12W@1p@1rs?E@8#@8:@8 >+?DE?}>h'?2}@8@8i@8?%g?O&P? +tM@8 *@8p@8?4\ɵ?a@@@???@g 7Kƨ@g\(@g 7Kƨ@f8YK@g 7Kƨ@f0 @g 7Kƨ@frG@g 7Kƨ@f~#@g 7Kƨ@fPH@ݲ-V@@ݲ-V@4֡b@ݲ-V@E@ݲ-V@L_@ݲ-V@.@ݲ-V@U2a|@8@8u@3 I^5@3ѩl@36-@31'R@2sh@2&x@2sh@2䎊q@2sh@2,(@@@@@*@*??????Q=?(T?29]?Xd)?Qwq^@s +m_^@@҄T@҄T@҄T@҆YJ@҄T@҅+a@҄T@҅@҄T@҃e@҄T@҃S@G+ J@Fx@G+ J@H$ x@G+ J@G&@G+ J@H>BZ@G+ J@G8}@G+ J@HK]d@3v@3@0^5?|@0ԕ*@/|1&@/|]ce@.fL/{K@.fIQ@.fL/{K@.fL/{K@.fL/{K@.f1.? ?m?K]4? Iy?b\?i{?|O?La?'Q?ihA?݄ ?R g!ڢ?|׿pY?/? SF?+ ?L?L@@@@@,@*??????&>?/X0?0vd?X`@҄lw@G}?P6@N?@p<9r?NĬ?M7۵@gQ(H@@\(.@\(@bM@\(@ "h @\(.@\(@]cf@\(@Mi@'-.@'-@Z@'-@!@'-.@'-@%@'-@0 @:V,<.>@5?|h@6) @5>Vu@5wXe@4L[W?.NC,@4L[W?@2,<@4L[W?@2~($@8J?뒌P?Q@8 >+?aC1 ?A0R@8J?ڤ4H4?'@8?:V?Mp@8p? +6#6?qL@8?F?ķ@@@,@*????@tj@5?|@tj@$@tj@# @tj@&@tj@1u@tj@0@)@)-V@)@))^@)@)A@)@),zw@)@)l/{J@)@) I^@74m8@7U=@4S@4ԁoh@4ttj@4WlC@3&@3~($@3&@3H˒:@3&@3-V?3a=?P񰦍?hΌF?H} y??;K.?E?tMP?'_#? m +?h`i?%?ԫ?{f?MA8?tKc?*WF?bM_x? +?['?9~F? xV?L "?bMky?8 T?nwg?~\?h?h@@@@@,@*??????PR? ?4j ?&9 (@F@Xp?Cèz?5߂t?~-F>?cd(co@s 5g@@4bM@4zG@4bM@4$%2@4bM@4$?@4bM@4|h@4bM@4@4bM@4=K@I(@I5?|@I(@ID@I(@Iu@I(@Iv@I(@I*1@I(@IPI@7~($@7ݗ,@2 ě@2wy @17Kƨ@1U=@0𖻘@0=b@0𖻘@0zxl"h@0𖻘@0Y|?Ol? /??뤽??ZAj?8J&7? ?u(?aB#Gi?mqa?A?EBl??~?|aQ?*|\/?6?`i=@@@@@(@(???????` f?QZʜ?A#t@4j`@I{?p_s?bl?嫏7?z@gk,@@W7K@W7K@W7K@W4m@W7K@W}!.J@W7K@WzG@W7K@W{"`@W7K@WzQ@ 6E@ 6+ @ 6E@ <@ 6E@ :^5?|@ 6E@ ;Q@ 6E@ 8@ 6E@ 7$tS@5(YJ@5(*@3E?|h@3D3@3)"`@3*qiC@20U2a|@2@20U2a|@24m@20U2a|@2eO?| ?q' +B?w4f?o]އ&?<?U?avf?Λ?>5Ptv@t/NB@@?|@@?|@Dcwb@?|@1lFp@?|@em(@?|@:a2@?|@;TB@K9XbN@K6E@K9XbN@KB|@K9XbN@KY@K9XbN@K"@K9XbN@KP/9@K9XbN@K\yO@7#g l@7srh@3@3t@3t@2&'V@20U2a|@2N"j @20U2a|@2֝@20U2a|@2WPbK?|B &?A?C}?!Vk?e?|**??t?xœ?ĉ?r_? *?u?+?Lwy?F:>^?Ug?B?I'@@,@,@*@9@:???????H?o?ra`?@!jb@K[ |?R6[?== @ Q-@2+@gn~@@\(@ӶE@\(@J@\(@ڹZ@\(@ֽp @\(@r @\(@Љ'R@ ^5?@ C@ ^5?@w@ ^5?@ ^5?@ ^5?@ (@ ^5?@/@ ^5?@wkQ@7@@7Y|@4ٺ^5?}@4|Q@4A7K@4O M@4:S@4#w@4:S@4䎊r@4:S@4Ft?:-%?UW?hb?:-?S2̍? $Μ$?3a=?.+?\K\?b̤?&5 +M?Zg?nwf?&!+?XTo?wb?^_r?$3@@@@@*@$??????U#?m:o?p d$u?Iy@&c@cKM?}Qb=?pNK??TB@ltq@@p%@o|h@p%@pS@p%@pS@p%@p7K@p%@pn.@p%@p}V@$]-V@$`A7L@$]-V@$[lD@$]-V@$_vȴ@$]-V@$]E@$]-V@$^ߤ?@$]-V@$a [@7G>6z@7Doh@2E?|h@2Eu@1`A7L@1Xy=@1:,<@1;"`B@1:,<@19"`@1:,<@1:#9?{?&+B@@@@@,@,?????? ǪF~?Cڳ;?c1!ۙ@ٟ0@y ~_X?bS#?tK?ÚI?Dd@eo@@tj@vȴ@tj@s@tj@s@tj@4֡@tj@Ϫ͟@tj@Fs@nP@"`@nP@=H@nP@?Wp@{ @fvn@@WlC@WlC@WlC@W˒:@WlC@Wr @WlC@W@WlC@Ws@WlC@WL/{@rQ@rQ@rQ@rQ@rQ@rRnP@rQ@rR@rQ@rR@rQ@rR{@/ߤ@/ߤ@)MV@)M(@'1&x@'@'`d@'`d@'`d@'`d@'`d@'SMk?^Q5P?ƿ57?N?8v?tKc?*WF?bM_x? ,C?|,!?/Z?%y*=?M\ٓ@?bMky? ?oܧ?͓E'?O|q?#.@@@@@,@*??????QhU>?#6b?3{~*|?5; \@WKHw@rR:?C} V?!<(?'{?:T9Ot@sM9 @@&x@&x@&x@ ě@&x@&x@&x@ +=@&x@ M@&x@@$Ov_@$@3~($@3~$@.`A7K@.?@,&x@,@+b~@+y=d@+b~@++@+b~@+YJ?}ѿ,? ?!!׋7?˅T?6r In?$?|O?f?~Q?; $?IM?PS2K?s@a??y8$?͓E'??l&@@@@@(@*??????8 p?'3Y? e0L?i@`F@Q@$=nH?< r?97?B6 nK?@Yx<@g&Q@@@tj@@ @@A@@l=W@@-$@@\fȗ@9~#@9R@9~#@9>I@9~#@9*0U2@9~#@9?O@9~#@9 @9~#@92X@47@@47=@F@0f+ J@0fe״.@/n@/#?@.p'RU@.p칗"@.p'RU@.s˃Ú@.p'RU@.s,?}@TΥ?o +W¤?@?LdTO?GBx?ݐ{?}@TΥ?hjS?S`?0r?t]r?gT@0n5?|@0J#9@0-@0($ x@0~($ @0p{@0~($ .NC,@0~($ .NC,@8 +Ny?^S2{?U?;w~4@8I@8@82r?}y?6k?M#@8S@8@8L?"{Ę?M?*vZ@8 @8 @@@???@-V@,C@-V@..3@-V@.1@-V@-O;d@-V@+:)@-V.@Q@T@Q@@Q@IS@Q@ں@Q@w@Q.@6_o@6@2S@2ߤ@@2PA7K@2O @1@1qj@1@1ߤ@1.NC,?}ѿ,??ցC ?BI{?Uyu#?o?P@8?}ѿ,?V"y$R?K54;?QĨ?h@8?yjk?lo>?hE?(Q?A0)n@8 @@@@@,?????@Ƨ@Ƨ@Ƨ@qu@Ƨ@Vϫ@Ƨ@qu@Ƨ@Ƨ@Ƨ@C,@F@+ @F@l"h +@F@s@F@l"h +@F@@F@"@4qiC@4^5?|@0S@0xl"h +@0Htj@0G8}H@/QN;6@/OAt@/QN;6@/N!R=@/QN;6@/M\?}ѿ,? KG?5$?菁k?u?)]\?}ѿ,?@׮?T֩E?,?!U?{?e\p?q6tN6?Q?qn?˴C?v> ?Cns@@@@@$@*??????ý?E6I?+_6w?@6 +^5?|.Mm@5ߝ-V.Qn@5䎊r.NC,@5䎊r.NC,@5䎊r.NC,?qv@8#@8:@8 >+@8I@8?A[F@8@8i@8@8S@8?d3>@8 *@8p@8@8 @8 @?@.O@"`B@.O@(eO@.O@4m@.O@ @.O@qu!@.O@Ϫ@%Õ%@%@%Õ%@%$/@%Õ%@%ɺ^5?@%Õ%@%iC@%Õ%@%a@@%Õ%@%/V@8įO M@8,<@4I^5?@4ѷX@3"`@3o@3!:S@3ߤ?@3!:S@3 ҉@3!:S@3 >? Z ?-56+?ay?E>? M%?Ylp?NIɮ?u9?G?8k +7H? ?.W旓?yWRqf?&Z#?eI6?DάR?_?9)N-@@@@@,@,??????`~g?q?I"{m?p"/p@ +@%WO?cz[?>4.?D,?-o @m.@@+@XbN@+@^5?}@+@ٳ|@+@1@+@@+@73@nKƧ@nKƧ@nKƧ@nL1&@nKƧ@nKC@nKƧ@nLcA @nKƧ@nLzxl@nKƧ@nL_@2qiC@2~"@-{"`A@-{W>6z@,|1&@,|Z@+Bu%F +@+Bh ԕ@+Bu%F +@+Bѷ@+Bu%F +@+B`A?_\p)?GA?"?XQ>?Ot?ˡK?bM_x? ,C?~Q?9~F?%y*=?M\ٓ@?cPQ?.+?y8$?ʬv??f_Ԋ@@@@@*@(??????MMv?I}?9nQv? z2q@A2C@nLS?Hs8?B[MkN?P:L?)̬w r@s p@@ɺ^5?@[S@ɺ^5?@ŋq @ɺ^5?@A@ɺ^5?@ň1&y@ɺ^5?@-@ɺ^5?@ѷ@ I^@o@ I^@XPH@ I^@fx@ I^@;5X@ I^@Z^5?}@ I^@nMj@9,<@9K]c@4E?|h@4#@3ȓtj@3)^@20U2a|@2*1@20U2a|@2$t@20U2a|@2s?]?97?$כ?U oi?oD?sY(?]?.?P#Gӗ?!=?^o i?y~3Y?*wjs? F2?1?⇦?X^2If=?Eݑz6??@@@@,@*???????`1`?>@?ʹ\?}_@щ)@\W?eа?*nR?;XA?dD%@uF{@@~vȴ9@$/@~vȴ9@PbM@~vȴ9@y|@~vȴ9@tS@~vȴ9@r Ĝ@~vȴ9@mhr@E@7Kƨ@E@ >B@E@\(@E@}V@E@A@E@@8Q|Q@8 bM@4R I^5@4Rl@3;Ƨ@34Z@2m8@2h ԕ@2m8@2@2m8@2C,?fi?Vjn?LD?D??5ŋ?G`O_?S`c?f?MN? E!?Dfv=? ԩ?rX?٤?w^2&?xS?**Z@@@@@"@*??????[@M@?d?rwJn@wH@AgQ$?r۲>*.?Wd?YEn/?5p@(\@)O^Ux@(\@(BH@_;dZ@_;dZ@_;dZ@as@_;dZ@aS*P@_;dZ@b;@_;dZ@`u@_;dZ@c)f@3s@3 t#*@0?|h@0ș-@/n@/:p@.PH@.@.PH@.~5@.PH@.lc?~Ov_ح?z ?/S}]?Zk8?d25??|h2:? ;a?+G?Z3^:@)׻@`?LT?8񚨝?ti^?|p@gτ@@ Ƨ@U@ Ƨ@F]c@ Ƨ@3@ Ƨ@ q @ Ƨ@"@ Ƨ.@w@n@w@|h@w@oi@w@33333@w@?@w.@3g l@3--@0B ě@/]cA@/dZ@.[u%@.@-hr Ĝ@.@- n@..NC,?|B &?bl$I?T[?E>? q&@8?}@TΥ?أ?'O?20& ?qJ@8?Q3?Cy^?MM.?q*?4|;@8 @@@@@,?????@PXbN@P@PXbN@Q L_@PXbN@Q @PXbN@Q?U=@PXbN@Q%u@PXbN@Qm\@ +8Q@ +9Y@ +8Q@ +B@ +8Q@ H@ +8Q@ +@ +8Q@ +%@ +8Q@ +&A@54m8@5X@1r Ĝ@1H˒@1$j~@1\(@0xF^@0\@0xF^@0$/@0xF^@0҂@5?Qp?{V ]?zNa ?d]Q?$"? % +?|B &?^?-5U?| 5r4?w??;{c?Ne|?6?]mZR?ԿX?J6Л?^_r@@@@@,@,???????-a>p ?qJ{{B?bmmd*@Q!B~ @ +1p,|? ӕ?v]t?pwe? D@^s@@Zv@H\@Zv@e@Zv@X75@Zv@Z(@Zv@Qu@Zv@YrGE9@j~@Ƨ@j~@-V@j~@`B@j~@cA @j~@@j~@tj@9 ]ce@9,쿱\@4f+ J@4_v_ح@37KƧ@3 k@2YJ@2ܬ1&@2YJ@2w1@2YJ@2cA!?:-%?D ?{Xn |?nii)?Xs~?`1`?1$@an;@?R2K0?XA6:4?SJD? `G+L@gCm@@>B I^@>DU@>B I^@>A@>B I^@>Aaf@>B I^@>>BZd@>B I^@>B I^@>=H@, I^@+j~@, I^@,n@, I^@,e@, I^@,'RTa@, I^@,- @, I^@, @7S&@7s@3R I^5@3Q-@2-@2Xy=ـ@1,<@1,<@1,<@1~($ @1,<@1=b??Mj̑?]P?g(6?j?"X?}ѿ,?;N?>?aYZq?e?]˙$>?am ?Ov_ح??Yʒ?їJ?@@@@@,@(??????Tu!?Tz?B171? @>>o9@,A6?\Nvp?Cl9BZ@޳3333@ޮ}Vl@޳3333@޳@޳3333@A@޳3333@,<@7 xF@7]|@33S@37+@2Z~"@2]hr!@1ޫ6z@1@1ޫ6z@1\)@1ޫ6z@1L_?W?nx?)?>\?l?.Kn?y+PYu?D?La?I?ni" ?R? a?ڞQa?.?7#!xv?0 ~?|)-}(?;m7.@@@@@*@(??????e8Q6?f + ?2?[*Tq@5_@DI?QeT?z +? ?eb@@h^dJ@@ ě@Z@ ě@N;6@ ě@氾 *@ ě@|@ ě@hی@ ě@\(@K=p@KKC@K=p@KU<@K=p@KW@K=p@Kp@K=p@K6z@K=p@K]c@7w@@7.ߤ?@1!hr @1 u!@0-V@0&x@/N;6@/nO@/N;6@/nO@/N;6@/o?5}'?Čۨ1A?\H{gX?̒?'ř ?<_?5}'?r/B?c#$?6)}?Jj?Q\?C)?H?d +-?8 ^?<71? Ğ@@@@@,@,???????0s?rg@?R&Pp?tQTb@ @K8i?cUW~??nh?+ >@S8X@qJj@@aG{@a7K@aG{@a@aG{@bZc @aG{@b@@aG{@`4m@aG{@`4m@噙@"@噙@Y@噙@kP@噙@嚟v@噙@u%F@噙@1@/KC\@/KC\@(a7Kƨ@(a|Q@(;dZ@(;dZ@'#Z@'#Z@'#Z@'#Z@'#Z@'#Z?_\p)?Čۨ1A?!!׋7?8v?@ A2?$?bV,?%F?ԕ]I?-I`K?%y*=?L "?b@? ?oܧ?avh?#.?#.@@@@@,@,??????QA- x?6/q ?O+7 @a#@G+?EUt_?,DÔ?_n?RHH<@s@@ S@ |h@ S.@ S.@ S.@ S.@ S.@^5?}@ +=p@^5?}.@^5?}.@^5?}.@^5?}.@^5?}.@6w@@6f!.I@2{ I^.Mm@1Ͳ-V.Qn@1_o .NC,@1_o .NC,@1_o .NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@(@Lo@(@@(@>@(@7@(@,F@(@8@A@A-V@A@A9l@A@A~@A@Amp@A@A.@A@AԹv@6YJ@6Ӥ@2?|h@2U2a|@2"-V@2*m@1p@1v<&C@1p@1v0@1p@1wTx?E[i)?H?mX!%?$8?(a?[o?|h2:??eƟ?X*_?Ee_?E?~P[]?(?{ї5?s6?w/xv?@@&@&@&@4@2???????[ϦN]H?B۱=?G_i@ @AY~D?ak/?hYK?9~f?F2@g&8t@@&ffff@&x@&ffff@!@&ffff@* @&ffff@'K]@&ffff@'/W@&ffff@#\@:^5?}@;lD@:^5?}@2 Ĝ@:^5?}@5sg@:^5?}@;6@:^5?}@4O @:^5?}@4[@6>6z@6>6z@3@ ě@3=8Y@3 "`B@3fffff@2\Q@2ZQ`@2\Q@2YJE@2\Q@2X˒:*? ?DE?f?˅T??oW? d?sD?eB^t? }>_?agf ?GO˺?.?eI5?Ф?bR?1R?x?t@@@@@,@(??????*RX7t?82?F9\c@&%?@9>?Y:\?e):?4>?ȑRTt@iJw?S@@٦x@٣VvL@٦x.@٦x.@٦x.@٦x.@٦x.@Xtj@Xtj@Xtj.@Xtj.@Xtj.@Xtj.@Xtj.@6zqiC@6{(}qv@2{ I^.Mm@1`A7.Qn@1Tm8.NC,@1Tm8.NC,@1Tm8.NC,?| V@8#@8:@8 >+@8I@8?nO<@8@8i@8@8S@8?&z7 @8 *@8p@8@8 @8 @?@Ao@Ap@Ao@A0#Y@Ao@A˝b@Ao@A^Ś@Ao@AZ@Ao@Aύ/@ʎV@ʎV@ʎV@ʍ؆8@ʎV@ʍNGcX@ʎV@ʎ業@ʎV@ʋliQ@ʎV@ʌ5R@1T xF@1T!-w2@,-@,A@,DZ1@,E:w)@+̲@+`X@+̲@+N@+̲@+ʥ?^m d?'?7%Y?0of?6Q?Əi?bMn? X7?|~o?C? +˗@s6@@bM@+@bM@kō4@bM@J@bM@2Y@bM@ y'@bM@ ۇ@'-@',@'-@(ʕ@'-@( ԕ@'-@(; @'-@(I"3@'-@'۱l@5mv@5mv @0S@0;L@0A7K@06g?@.u%F +@.]2X@.u%F +@.IQ@.u%F +@.Q-l?}x?<'_? +V @g!@(m&?\ڀ֧?*ߠQ&^?ń?aa@ga5m.@@!@#n@!@"\(@!@" @!@"M@!@"Zc @!@!af@sE@s3333@sE@w$tS@sE@tFs@sE@wKƧ@sE@t9Xb@sE@sݗ*@5@5U=@2B ě@2B&IQ@1Z~"@1Z1'@0𖻘@0䎊r@0𖻘@06@0𖻘@0'RT?|O?/)s?#}i?Fq/b?'ř ?_Oo? ?uie?36G?Nw]6?M?`@0k??Rii?~/O?ۮetZ?L?P\@@@@@$@*??????2T,P?4, B`?(,/#?<7Ȥ@"v +@t,9?0*y?\g?iCt`?®h@g/<@@7.@7.@7.@7.@7.@7.@vDT.@vDT.@vDT.@vDT.@vDT.@vDT.@8쿱[X.>@4+.Mm@4;Ƨ.Qn@3xF^.NC,@3xF^.NC,@3xF^.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @ Q@ l@ Q@ 3@ Q@ G{@ Q@ @ Q@ ĝ@ Q@ c @Q@;dZ@Q@s@Q@ݗ@Q@j~@Q@1@Q@y +@8Y*0U2b@8Vaf@3TS@3WrG@2j~@2 '@1_o @1n@1_o @1Mj@1_o @1!-w1?+-/?LS{?d3"7?J?l!-w?Q,Ě?UbB2?ଚw?s?{d?4{?ey?zk 3U?Cx}x%?ZAj?vI?^^ω?zy@@@@@*@(??????vHTy?@N;?epR0@ @O0n?W%gi?B@10U2a|@1!2W?|O?ASU?'{~?Ғkŀ?3kse?_J?}ѿ,?%L?fTEk?J?Rj ? ޅ;?8*?L?&-\a?Y?Gam?0xh@@@@@*@,??????@?h`?IY8?2џG@3U@JI +c? ?~|xr@?;"V?!0{2@X.&@@X=p@X=p@X=p@XC@X=p@Xn@X=p@XP}@X=p@X@X=p@X\@tj@tj@tj@tj@tj@PH@tj@#x@tj@ k@tj@ k@0cg l@0cg l@*{"`A@*{s@*nO@*ᰊ@)@)@)@)@)@)حW?^Q5P?`?U#?eU!?tKc?/]?bM_x?>`?j?; $?%y*=?M\ٓ@?bMky?8 T?u@>N ?͓E'?a+?O|q@@@@@*@&??????Qk6ZH?34?$>mU:@@X1q@q?BIk?!t?~?i@s +Sc@@ \)@ ␷G@ \)@ 8է@ \)@ (r@ \)@ wf@ \)@ YKuj@ \)@ pB,@ mhr@ o`7@ mhr@ jJ-N@ mhr@ aӮ:@ mhr@ ns6@ mhr@ geu @ mhr@ gk݆@6*0U2b@6`: n@40ěT@434k@3tj@3&Hh@3?䎊r@3C[X@3?䎊r@3B7e@3?䎊r@3B!{T?ڡG7=?d~?~k??'$S?x?I3$?_<4?Y:?ט5?I&?Vk%e/?J9A?e\?Rꊇ@@,@(@*@6@9??????A K\?>RUwU?0Z–k@ $@ lbϧx?^f?PMQ?ʁp?m{k@g M@@I6E@I6ȴ9X@I6E@I:Q@I6E@I8y=@I6E@I9+@I6E@I0*1@I6E@I3g @Z@Z@Z@PH@Z@E85@Z@zxl#@Z@n@Z@YJ@3 xF@3!-w2@0Y^5?|@0Vl!.@/;dZ@/ᰉ(@.N;6@.@.N;6@.@.N;6@. +L/?| ?PƧ$?BI{?b?Փz?K&?| ?-',?tP*???sB?9x]e?n88?{Muk@I5mH@+?h 5ɯ?'?ST)Jh?6l{5@e&_ף@@;?x}?a,F??G'?|nӿ?"r?3B@@@@@$@*???????ZOxS ?S'?Ea@@0_o @0v@0_o @0vȴ9X@0_o @0\N@3S.Mm@2n".Qn@1&.NC,@1&.NC,@1&.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @)x.@)x@ֿJpS+@)x@<@)x@ֹ6@)x@ֶ.@)x@ֺIG@/.@/@7@/@<:@/@5E@/@uJp@/@vg^@7D.>@2c@+7@2'KƧ@+%@1䎊r@*q@1䎊r@*|?=Ca?{a?{ +W?]O?V @?tO?ļ:P`?"Q~@ch@@^N+@^N+@^N+@^QL@^N+@^O~}@^N+@^Q'} @^N+@^[6@^N+@^Sk@77Kƨ@77Kƨ@77Kƨ@7{?n@77Kƨ@7|@77Kƨ@7uO8F@77Kƨ@7k%S1@77Kƨ@7j]@1_o@1N;6@0 hr@0Qn@/?;dZ@/3p1@.b~@.K7@.b~@. 3?9G@.b~@. xD?^6P?(bʟ$?wQZ?7??{O?K bT?bMn?&Y-(??6 BY? w_?͙e?c>)?3K_n ?#F?v>?P?~@.@@&@"@ @6@5???????VGfOF?e5: ?GP+]@^T{@7o[j-?tҢcZ?U'{?Q9?͓@r)U)@@|g-@|h9X@|g-@|h@|g-@|i@|g-@|h˒:@|g-@|gݗ@|g-@|gz@$@v@$@D@$@8YK@$@E@$@L_@$@2a|@4v@4jOw@0S@0E@0"-V@0" @.@/-w1@.@/@N@.@/Zc?1j?W[?jhq9?:Z2b?Dj?aX?}ѿ,?'`?tJ?@[*^? f?ٶm?y8#?Ф?]?$H?L?_խW@@@@@&@(??????+)f=??x{@|hC0}@@?1 B.?2Ge +$?mj)K?p°qRs@gV/p@@š.@š@KƧ@š@$@š@}H@š@@š@_@S.@S@+@S@L/@S@@S@Q^@S@~@9䎊.>@6 ě@6S&@6'KƧ@6hy=c@5Q@5GE85@5Q@5l?@5Q@5lL_@8J?l?A|?(ޞs?b&?ғa@8J?R܆?u:?Po?hA?шo٭@8p?­?Uj? V|L?\T?r@@@@,@*?????@zx.@zx@{M$ @zx@{j'@zx@{ F@zx@zi7@zx@ziq@x.@x@ԂOm@x@Yz @x@2v@x@%2G#@x@ +O}|]@9g l.>@4ahr @4 @3;Ƨ@3$@2J0U2a|@2+%@@2J0U2a|@2 +n@2J0U2a|@2 `.@8J? Q"0?.%?ˋUO??Kf/? ѣ@8J?ӯ?ObN? +/ +?`jNn?Q\@8p?tl* ?)o?\)?.?u@"@@$@:@7?????@r Ĝ@r@r Ĝ@rs@r Ĝ@s3333@r Ĝ@sMj@r Ĝ@r-V@r Ĝ@r:)z@;dZ@;dZ@;dZ@@;dZ@:~@;dZ@bM@;dZ@ +=@;dZ@H@/o@/o@)j~"@)j~"@*rnO@*rp:@(ۋq @(ۋq @(ۋq @(ۋq @(ۋq @(?_\p)?{j?(?8v?Ot??bM_x?%F?A)N?0N:s?ѡb??R g!ڢ?b@? ?q6tN7?avh?Ѐ>(?O|q@@@@@(@*??????D+?+)T?sk]@rL @n8?:h?*F_?qvLd?O$@s,2@@]/@Qn@]/@H@]/@=cA@]/@SMj@]/@YXbN@]/@L1&@ȴ9X@1&y@ȴ9X@Ӝ@ȴ9X@U=@ȴ9X@tj@ȴ9X@e+@ȴ9X@֡a@8YJ@8kP@5; I^@5:fB@5 "`B@53{J#9@4OO M@4^ߤ?@4OO M@4P$tT@4OO M@4RT`d?YgoK?hX*?TH? ?U ,?+ w? Z ?%!{A?Ēۇ?߈{?As?L?RWP?5.?_YK?(?CRU?[ё@@@@@*@,??????C4q1r?j0\?rbPbQ@Ty@?wy35t?󂂷_?˧"?@qd|@@ և+ @ ȴ9X@ և+ .@ և+ .@ և+ .@ և+ .@ և+ .@j~@ I@j~.@j~.@j~.@j~.@j~.@8:@8ȴ9X@4n5?|.Mm@3KƧ.Qn@2!.I.NC,@2!.I.NC,@2!.I.NC,?}ѿ,@8#@8:@8 >+@8I@8?{QB@8@8i@8@8S@8?@8 *@8p@8@8 @8 @?@hr.@hr@"!@hr@2@hr@>@hr@k@hr@GC\@91&y.@91&y@9 +M@91&y@9b}@91&y@9>Z@91&y@93M@91&y@9@8YJ.>@3 I^@3GP@3R`A@39N@2Tm8@2FBI@2Tm8@2[4D@2Tm8@2\!-x@8J?KQt +?9e5?*F?'c$x?+@8J?uk?{?i?E*z?@8p?`K?0|wF?yk?R HE?[s@&@&@(@8@7?????@7(@7O;@7(.@7(.@7(.@7(.@7(.@nj~#@n_;dZ@nj~#.@nj~#.@nj~#.@nj~#.@nj~#.@7*0U2b@7#@3I^5?.Mm@3v-.Qn@2!.I.NC,@2!.I.NC,@2!.I.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@.@@@6@@-w1@@irF@@eS&@@b7@DT.@DT@@N@DT@3@DT@"`@DT@H@DT@|64@9p4m8.>@4|hr@3!.H@4'KƧ@3E@3Eu@2bM@3Eu@2䎊r@3Eu@2~O<@8J?j#?IM\g-?T?&eS?|@8J?%xW8??=q?z?Mc2h@8p???Z`(?@j-?GX?P^eNQ@@@@,@*?????@^qm@^r@^qm@^q @^qm@^rS&@^qm@^q_@^qm@^n!R@^qm@^mB@YěT@Y\(@YěT@Yq @YěT@YH@YěT@Y\)@YěT@Y4@YěT@YaA@5*0U2b@5u%F +@1S@1M@0`A7L@0Ɍ~($ @/Xy=@/㯷@/Xy=@/S&@/Xy=@/A [?Y͍_?I'?JC?:Z2b?P?uC0!?5 ?Hz#,@i`C@@-Xtj@-Xtj@-Xtj@-Y_p@-Xtj@-XQ @-Xtj@-Y @-Xtj@-VC@-Xtj@-S|@ffff@$/@ffff@8}@ffff@e@ffff@8X@ffff@+a@ffff@Q@5-v@5-,<@0ԛS@0@0-V@0v@.@.ѷY@.@.v@.@.Y}?| ?m??lDžN9? 9?봤G?|O?4 "?O)AT?agf ?ڂc? R?oܧ?l?ʳ_? ??j?gϵ@@@@@&@(??????CGP0?2X?=s?81@-WƓ@?]VOX?Xj#o?ǐ>F? F +@f10@@kR@e z0@kR.@kR.@kR.@kR.@kR.@&lC@& I@&lC.@&lC.@&lC.@&lC.@&lC.@8@@8!@5kS.Mm@4Vu.Qn@4D*.NC,@4D*.NC,@4D*.NC,?ڡG7<@8#@8:@8 >+@8I@8?π>@8@8i@8@8S@8?/r@8 *@8p@8@8 @8 @?@7K@@7K@($ w@7K@ 7Kƨ@7K@ q @7K@u$@7K@@jE@jE@jE@jO @jE@jIQ@jE@jS@jE@jX@jE@j{J#@3:@35Xy>@2?|h@1 qu@1"@1 @15sh@1,Z@15sh@1-@15sh@1.1?|O?E|s8?y]?_?PU`?uV`?| ?I4>?kE<%?e[|(?6?^̀@!? J?1j?9@0w? ??;WZ?8ϣ@@@@@*@$???????[*?UtPL?D@@j6iD?sDJ?b[`?P-.2"?^iQ@d_@@1'@"@1'@@1'@+j@1'@2W@1'@/V@1'@ce@F@-V@F@E@F@zH@F@넛T@F@델@F@8@6*0U2b@6/{J$@4 ě@4Zc@3j~@3!.H@3a:S@3_4֡a@3a:S@3b<64@3a:S@3bs?|O?u4ޕ?!Gf? HN? ?(ϢU?}?S"ꝉ? ?GW?'bA?~VԪ??WBH? DS?N?aP?&+B?b@@@@@&@*???????MjߢTSC?IA/?R&"@P@Z?jWz\?rt`?$-jC7?۪KLD +@fEmņ@@W+R@W#n@W+R@W*͞@W+R@W/iDg7@W+R@W-8@W+R@W0@W+R@W)@7KƧ@>vȴ9@7KƧ@:)y@7KƧ@'#@7KƧ@=E@7KƧ@8*0@7KƧ@9|@8-v@8-!.H@3+@30 (@2ߝ-V@2ѷ@2p@2m5Xy>@2p@2m@2p@2l64?^*?I\O?2 :M?g(6?7?YD?| ?蠔?ҌI?%)?? j?$?+0T?ٹ?ѳ9?F?cR@@@@@,@&???????__GQ4n?Y#7J3?33uK@W+i1n@;\?sCyA?X0E?ҡWP?P,C@jxD@@mY+@mWO;@mY+@m>@mY+@mG+ J@mY+@mhK]e@mY+@mGz@mY+@mIB@]5?|@]*@]5?|@]tj@]5?|@]q@]5?|@]ᰉ@]5?|@]8@]5?|@]:@74m8@7ѷ@5^5?}@5- @4V@3 @3,<@3@3,<@3"`@3,<@3O;d?qn?ʿnP?拗? ?|p9?ʗAm?}?#O?#*0?%hF? U?SЧ?.\?-?$RHZ?@l?F?aZ@@@@@&@(??????[~\1Bw"?t W?zM@m\];@]iX?-C?@QX@~Q$@fȶI@@ȴ9X.@ȴ9X@Ϫ@ȴ9X@"@ȴ9X@b@ȴ9X@PH@ȴ9X@-@1.@1@+j@1@ +=p@1@64@1@٦ @1@sh@6 xF.>@1+ @1q @1"-V@1#Z@0,<@0oiDg@0,<@0@0,<@0!.I@8J?6 '8?O%c?5d?r?cLb@8J?eB^t?2'?[?P!=4?74l@8p?=!K?sg?]O8?8ϣ?:/ʼn@@@@,@,?????@o/.@o/.@o/.@o/.@o/.@o/.@E.@E.@E.@E.@E.@E.@8B䎊.>@3}hr .Mm@27KƧ.Qn@20U2a|.NC,@20U2a|.NC,@20U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @F$/@.zI@F$/@R:){@F$/@H$ x@F$/@B3@F$/@>%@F$/@6Ov`@6ȴ9X@'+ I@6ȴ9X@8Q@6ȴ9X@0|@6ȴ9X@12X@6ȴ9X@2nP@6ȴ9X@+C@5O M@5iᰉ(@1+ I@1|@117Kƨ@106@0Eu@0B䎊q@0Eu@0A @0Eu@0=Vl"?qv?1e +?X?}fУ?BPbC?Q,Ě?F/P5?0,3?C\ >?=U1WK?+hd{? a?,?/o?YY?0ڌ#?4hpɄ?$jB@@@@@,@(???????_ޥ?[I ?d`@?P*ڸ@8f@,E w?:JBE!?sj4q?^G?Nhw|J@k9K@@0/@1&$/@0/@0@0/@0@0/@0A@0/@0*@0/.@n@hr"@n@$/@n@^5?}@n@|h@n@!.@n.@1 ]ce@1X@.KƧ@.՛=K@/4E@/873@.@.~$u@.@.F +L0@..NC,?Ol?m0?S?Q@/$tj.Mm@.]E@&$.L@,ߤ@.NC,@,ߤ@.NC,@,ߤ@.NC,@8 +Ny@8#?`m_B@8 >+@8I@8@82r@8?#(v@8@8S@8@8L@8 *?&|@8@8 @8 @6?@G|h@G|h@G|h@G˒:+@G|h@G qv@G|h@G|h@G|h@Gb}@G|h@G;dZ@+R@+Ƨ@+R@+a@+R@+R@+R@+҉@+R@+:)@+R@,"h @0:@0:@(`A7K@(`A7K@'O;dZ@'O;dZ@&PH@&PH@&PH@&&@&PH@&PH?^Q5P?[e>J?$<'ε@Ga<=@+W?q ?`1<@s;@@<$/.@<$/@;ߤ@<$/@;@<$/@;`d@<$/@;C,@<$/@;U2a{@O.@O@ (@O@+`@O@Z@O@՛=@O@յs@3>6z.>@/"@/VϪ@-nP@-֮}Vl@-oi@-ql@-oi@-@[6@-oi@-FA@8J?m0?'?Jʮ?!g7?A+KW@8J?6c?D?_3\? e?c5W@8p?oM?/X??3?Evn@@@@*@,?????@g-@hr @g-.@g-.@g-.@g-.@g-.@'"`@'|h@'"`.@'"`.@'"`.@'"`.@'"`.@8H@8"GE85@4 ě.Mm@3lj~#.Qn@2sh.NC,@2sh.NC,@2sh.NC,?}ѿ,@8#@8:@8 >+@8I@8?q!U@8@8i@8@8S@8?c@8 *@8p@8@8 @8 @?@+@+@+@rGE@+@bM@+@:~@+@B@+@(@;dZ@;lE@;dZ@:>@;dZ@:)@;dZ@:)y@;dZ@:?@;dZ@;@2@2$tS@/8tj@/84֡b@. n@. 4m@-QN;6@-R ě@-QN;6@-RnO@-QN;6@-Ra|R?^Q5P? ?"?G?ǹT?2I/?bV,?&uE@?['?6)}?إ<(?h,à?cPQ?6?W ? ??a+?@@@@@&@*??????RΦ?3fB?AXm?Uc@Ϊ@:d ?Q6I?  ?Z +Ze?9y@s4gK@@e`A7@kC@e`A7@f?@e`A7@dT@e`A7@eO@e`A7@dg8~@e`A7@eS&@ě@Ƨ@ě@TɅ@ě@D@ě@:@ě@d@ě@R=@5O M@5xp:~@1.5?|@1.ѷX@0v-@0v@0?䎊r@0@:~@0?䎊r@0@H@0?䎊r@0@:~?^*?/)s?WD@?#t?u?Id6z@5*1@1S@1:)y@07KƧ@0lC@0c@0US@0c@0T`d@0c@0Tm8?}ѿ,?b}?K9\?Jʮ?'֙:0?Z?}ѿ,?-NI`(??íuA?a6io? bV?2R2'֕?/X??z_?k3`E`-?^':?y\@@@@@,@*??????-?c'"&<?E!Q?NOlr@70^@g?b(Bo?h[?3*r?Q%@bHΑ@@+@+@+@@+@oiDg@+@`A@+@ +=@+@:~@I1'@I1'@I1'@IN<@I1'@Ice@I1'@I\N@I1'@I@I1'@I<64@0e!.@0e?@*\j~"@*["`A@)E@)g m@)b~@)Xf@)b~@)Xf@)b~@)eڻ?_𩫝?GA?K]4? Y?2A?7F?bM_x? +?S?0N:s?ߒh!?h,à?e@'? ?q6tN7?XLL?Ѐ>(?b/bJ@@@@@*@,??????0X?7?\5Q6 +?2BX@@I1?(f:?$^?Lqմ?Bel@sTR@@:@:ȴ9X@:@: xF@:@: +ڹZ@:@:z@:@:`B@:@:ں@-z@-9Xb@-z@-t$@-z@-t@-z@-wO;@-z@-r@-z@-s@8!.@8 @3@30 (@2ȓtj@2j~#@2 [W?@2o@2 [W?@2'R@2 [W?@2䎊?|O?KTD?Mq ?Att?<_+fj?7D +?Cy3?\j?fˌ?ҧ?S?;?[K-$I?HO?}?0?Tj?Q?]@@@@@*@,??????qXp<,)s?Ke38/?bhI@:CGR@-vf?ro!?tToat?f`}^?ֽu@oEۿ@@=p@r @=p@Q@=p@^ @=p@'0@=p@ߤ?@=p@ƍ@5?|@ ě@5?|@2@5?|@ߥ@5?|@;dZ@5?|@!$/@5?|@cB@7DO M@7Eᰉ@4c@4esg@4v-@4}ڹZ@3Tm8@3X ԕ+@3Tm8@3W1@3Tm8@3Y'RTa?us\?ʖSS?:r ?m}9?p?l}?)T?,T?]^߿?L?hY?Y@??Эs_`?%Cr?L??,yfY?**Z@@@@@@??????J5p<0?Vx_p?29o@i~@F~ +?ty@?S .?A@?zl@j6F@@;dZ@|h@;dZ@@;dZ@;dZ@;dZ@vȴ@;dZ@!-w2@;dZ@쿱\@v/@vT@v/@v?@v/@v@v/@v@v/@v+ I@v/@v1@4`D@4`D@0+@0@/E@/fA@.@.vȴ:@.@.!-w1@.@/- ?|O?Z.?*"AaI?lDžN9?E{?6J?1j?#maЀ?d0R?; $?c3c(? f?s@a?Ϸ+?٤?RJ?j?)@Jq@@@@@*@(??????Ƈ?:6x?U?+8<@^h@v1?2K5?L+57?r ?*ZO@g2x+@@c +=q@\1'@c +=q@NV@c +=q@V_ح@c +=q@VOv`@c +=q@\64@c +=q@W&@$E@$dZ@$E@$5X@$E@$C@$E@$=L@$E@$ƚ,=@$E@$@8T xF@8S @3|hr@3~H@2`A7@2/w@1̿[W?@1rH@1̿[W?@1@N@1̿[W?@1?_pP1?L?Ji?Sz?i]i?P?|?=x?Ր?ƨ'?%y*=?CwB?O"?mΝ?DΊ@@@@@*@"??????7F`?j?Xo9R0?oZ @Xւ@$͠0?oxzd ?|T[?αv@ Ie@p;N @@@x@@E@@R<@@4K@@ۥS@@ըXy?@֨r @֬@֨r @֯@֨r @-@֨r @ֹ0 @֨r @֙"@֨r @֙#x@904m8@9FV?>sN?o΃?SDN?FMG?9?͑?#q?x?}Z?a㸂?F?2:U@@@@@,@(??????=@r'&?u,^?aܼ-Y@ڡrJL@֠s:?۾?1 l?Ҏ?h,X@p8:T@@V@9Xc@V@~@V@E@V@2@V@@V@IR@$3E@$.V@$3E@$)y@$3E@$(@$3E@$1hr @$3E@$*L@$3E@$,L_@7D@7|hr@3S@3>B@2A7K@2w1@23&@20 +=q@23&@21u@23&@21iB??B?F}?vk?ҧ?_ ?[Xxp? /ّ?%c~?!zt9?W;zY?m/w+?(d?7y?sD@8@8i@8?(S?H{?@8 *@8p@8??*N@@@???@nO.@nO.@nO.@nO.@nO.@nO.@11&y.@11&y.@11&y.@11&y.@11&y.@11&y.@8֚,<.>@5+ I.Mm@4t.Qn@4._o .NC,@4._o .NC,@4._o .NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @:M.@:M@:h`@:M@:]*@:M@:N*7@:M@:S{G@:M@:Q>9@j~.@j~@LL@j~@n恖@j~@|@j~@:h@j~@fE_@3cg l.>@/.Vt@/-.@.ӶE@.j@-QN;6@-? +!@-QN;6@-BdzF@-QN;6@->:@8J?rW?禛?*&?h ?Mm,bz@8J?h?W ?#~\?.ؗ?܏=@8p?@c MQ?'".@B>"@BDM:@B>"@B?[W@@B>"@B5*2@B>"@B3tj@B>"@B@3ěT@34֡b@3-@3|@3!:S@374m@3!:S@32M@3!:S@32a|Q@8J?'5? 1B?F"b?l(?ݷ@8J? /ّ??6l@0=ce@0p`L^-m?[c?QY@8@ +f?kp ?iD!?\z?B4H@qk]@@klD@kB@klD@kPH@klD@k6@klD@kq@klD@k"@klD@k@ly"@l\(@ly"@lz)@ly"@lx4֠@ly"@lrGE8@ly"@lxl"h +@ly"@lxQ@7YJ@7/y'@3^5?|@3U=@2"`@2>B[@1Q@1vȴ9X@1Q@1!R=@1Q@1 ě?|B &?:?XY?Z!ǟ?.Kn??=?7娠?аl??T ?:u. ?m^?jOI?4f5ׅ?&!+?D/ +b?rsw?W|DC?]ߒ@@@@@,@,???????jNB?LS?[d=@k(@lx1_I?r_}?r[$Q?jL?֦/i@n*3{@ @1m@+Ƨ@1m@/ M@1m@4*@1m@0 +=@1m@1A [@1m@1@>Q@>dZ@>Q@>@>Q@>cA@>Q@>@>Q@>o@>Q@>6@7䎊@7{)^@3\I^5?@3`d8@2i"`@2o;dZ@1,<@2$tT@1,<@2 +=p@1,<@2ᰊ?1j?[ ?p?؆{~?Nty"?uk=?F/P5?K?J?% . ?E?998?&1V?e+?Ile?J@4B ě.Mm@3A7K.Qn@3ush.NC,@3ush.NC,@3ush.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8  @6ȴ9X@8Q@6ȴ9X@*͞@6ȴ9X@ 4m@6ȴ9X@%8X@6ȴ9X@'-@6ȴ9X@6u@~"@T@~"@8V@~"@'#@~"@GfB@~"@>6z@~"@d/@7:@7ce@33S@3 )^@2M-V@2<ߤ@@1Y~($ @1KC,{@1Y~($ @1MK]@1Y~($ @1Nߤ???J f?XՇs_?fJ5 ?Kbo?d?sD?,i?Ľ;!?]$_2.?l?m(~2?D?[ S?[?J?_u? Ğ@@@@@,@(???????7cܰ"Ȁ?i2\ +?q@\)@1"d@kZ?D??jL?#y+b?cg:@iy6@ @jXbN@j*@jXbN@jv@jXbN@jM'@jXbN@j'C@jXbN@jˁ@jXbN@j@9@9v=@9@9@9@9@9@9<]y@9@9O@9@9b@8g l@8Gv@4ahr @4c?rz@3tj@3  z@2O M@2vA@@2O M@2M{@2O M@22?TVm?-Z?^I??۱[V?*Jۓ?=?'a?poؐ?S.&?`?M{3i?#B?6c?[K?⹯{?C9?צm8@@"@"@*@7@3???????6l6(dUU/?A7*0l?2crRc@j@9n8?[K ?O_6 ?B:?`v@m-]G@ @-@O@-.@-.@-.@-.@-@D@ ۥS@ + J@ ۥS.@ ۥS.@ ۥS.@ ۥS.@ ۥS@ _@7:@7C%@3#.Mm@2Ctj~.Qn@1D*.NC,@1D*.NC,@1D*@1d8?ϱQm@8#@8:@8 >+@8I?N5W?@8@8i@8@8S??+k@8 *@8p@8@8 ?SH@@*??@Z@䛥T@Z@@Z@@Z@M:@Z@e@Z@g8~@F@G+ J@F@G@F@Gݗ@F@G@F@Fffff@F@H1&y@3䎊@3.H@1+S@1,L_@07Kƨ@03@0@0XbM@0@0Q @0@0^?|O?j?cvJz?bC?3n'?.]?]f?I?Z@@$@&@,@4@6??????En?4p 9?#???'Ut@ r@nvF?2?6ef"?a:4?f+qto @s "@@\@G{@\.@\.@\.@\.@\.@+ J@C@+ J.@+ J.@+ J.@+ J.@+ J.@7Q|Q@7bGE85@2ěT.Mm@1`A.Qn@1h.NC,@1h.NC,@1h.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@M@M I^@M@Mϝ-@M@M4֡@M@M]c@M@M@M@MϪ͠@ 7Kƨ@z@ 7Kƨ@Y@ 7Kƨ@Ov_@ 7Kƨ@Ͳ䎊s@ 7Kƨ@;vȴ9@ 7Kƨ@а{@6#g l@6!n@4c@4QR<6@3;Ƨ@34?@4Tm8@4/;dZ@4Tm8@41_p@4Tm8@4,wkP?|O?5b&?g ?m$.?F?9Ud? ?n4??p:2?0/f?v8' ?d +,?RQF?Vr?P )k?C$\j$?j)@@@@@ @$??????>e?J<]?q;W@MyfK@/h?_\*Kb??`?{m&?6@^_U~@@+.@+@=<64@+@SMj@+@Q@+@sMj@+@ '@ٙ.@ٙ@@ٙ@w@ٙ@kP@ٙ@PH@ٙ@$oi@9g l.>@5I^5?@5#F]c@5`A7L@4Qe@4fYJ@34m@4fYJ@36z@4fYJ@3p:~@8J?;gF?C>S?;?VҾ?8R} +.@8J?$a? gA?Ƅ@l|L?ҨP'?9Y145@8p?/I#?_?ˍ?xb?!zt9@@@@,@(?????@(@E@(@u@(@"M@(@)B@(@쿱\@(@@sDt@s8@sDt@s?@sDt@s@4o@sDt@s6z@8Y*0U2b@8a.H@3W+ I@3U?@2lj~#@2n쿱[W@1,<@1K]d@1,<@1PH@1,<@1Fs?bk0?ĵS_??`x?RJ? Ğ? +t@@@@@&@*??????An\?S{"?%!P<d?<1bc@䚊@ZQ(-?EP }?]b}? .+?n`@g%\"@@V@O@V@˒:@V@j~@V@S@V@r @V@@8:G@8:v@8:G@814K@8:G@812W@8:G@8=,@8:G@85L_@8:G@84Fs@3H@3.2@0E?|h@0<#x@0`A7L@0D@.b~@-]ce@.b~@-6z@.b~@.6?2}?R?+(?ᕮ0?0 碽?5}'?|O?yG?Vh?} ?rrl?НFW?nwf??z_?.SM? 1 D@?/̽`@@@@@,@,??????[iP(B u ?FpQ?Mg +@ @89/?d1Dt ?i,u)?3?o>a@b"J@@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@/ +=.@/ +=.@/ +=.@/ +=.@/ +=.@/ +=.@6:.>@2hr .Mm@2V.Qn@1䎊r.NC,@1䎊r.NC,@1䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @x@o@x@E@x@}[@x@O~@x@ش:)@x@_o@tj@@tj@@tj@B@tj@9@tj@?@tj@3=@6I_o@6G1@4 ě@3cb@3]V@3qQd@30@3?}@@30@3:Z@30@3@CHޱ?}#?v?Ca&?C`vg?y?dv?gQ?g'*/?%/ϴ?TMG?h?e?vc0?G?Wy+?I ?oy?pA@@(@(@"@7@7?????? ?qT??q~?i1?Ֆz?26d?l{ :?:?D( ?߷ڙT?&'c?&Z?!?v-?{¢?H???qgu?(6 +@@(@*@$@<@9???????Oj +Bt?wa??ப?wnB@I۰E@lz?\Rj?[}\?),@&%@m-1@@>^Q@>V+ @>^Q@>R@>^Q@>L"h @>^Q@>?b}@>^Q@>\C,z@>^Q@>P{@i$@iu@i$@ix@i$@iIQ@i$@i@i$@i=@i$@i?@7YJ@7*0U2b@2TS@2Rᰊ@1`A7L@1!-w1@1B@5@1:=p +@1B@5@1E$/@1B@5@1<!-w?]?`?gOw?lsC^?di?uV`?]??co?96 ?JL\?e\p?*wjs? +??!B?GZ?I$?@@@@$@"???????t?y{H?: +?HE&33@>SUW@i7?M ]?Q4V@\,?sG 5@up;f@@D@D;dZ@D@DsPo@D@D~<#@D@D@D@Db7@D@DN@|ix@|_ycZy@|ix@|M9@|ix@|m@|ix@|msx@|ix@|kce@|ix@|kR(@8DO M@85-@4i+ @4kiF@3R`A@3VK @2s&@2w>x@2s&@2v@2s&@2w +O)?cГA?3?qJ?k@3 e,@˒m?IZT?[)V7?V,?SuY4@mr*@@Dj~@D`B@Dj~@D$@Dj~@DoiDh@Dj~@DY}@Dj~@D&x@Dj~@D@N1@N%`A6@N1@Ns@N1@N@N1@N@N1@NZ@N1@N64@8>6z@8 "`@3R I^5@3R74@2,j~#@2,cA \@1@1@1@1u%F +@1@1F]c?1j?܄ (?4 b5?{@?<_+fj?[2???xrI?OՃ?@[*^?.<?Q?R[SA?4?(?2? +r?&f@@@@@*@,??????q[S?:}%\3l?[j@DCJ@NԬ?_6/?ut#?۴$Z=?q@l͸@@. O;d@.&x@. O;d@. zxl@. O;d@. +=p@. O;d@. @. O;d@. 1&@. O;d@. :)@i$@i+@i$@i6@i$@i%2@i$@i@i$@i@i$@i+j@7>6z@7+a@1hr @1Ƨ@1 "`B@1fA@.@.Z@.@..H@.@."?q!U?:L +?:?j6_??F0?2}?-NI`(?S?Җhn?إ<(?+d?^'?H?sg?!ˠ*(? +t??\@@@@@$@,??????P%?Q-{?1??6/Y7@. s@i<?JI: ?Z&"1 ?u*@2Ͳ-V@2V@2~($ @2#(r8@2~($ @2(fM@2~($ @2$ƿ6?,r?d?7m-J?N*?#Զ}_=? kR?x/0 ?Њ?q(.W?'?#)X;?UCJL?b|&?e!?Du?(A? +e?S@@*@$@&@7@8??????o\?[(I?\;XL(?Xbe@W@?|+T~?!?u_F/?ynֿ?ᒻg#t@kAci@@ I^@ I^@ I^@U=@ I^@ě@ I^@üZ@ I^@@ I^@b@a$/@a I^@a$/@aA \@a$/@aM@a$/@an.@a$/@an.@a$/@aC-@5@5䎊r@2° ě@24m8@2 -V@2 )^ @1@1 @1@1 +=p@1@1TɆ?Ol? ?e +!C?Uyu#?GBm?U@5 I^@53@5Z~"@5dd~@5:,<@5;V+:@5:,<@5@-S@5:,<@5=?wvHf? +?"R?ȭ?h?zF?-V4?O}e?,d@e&i`O@!@3333@M@3333@Q2W@3333@-w1@3333@"h @3333@7Xe@3333@3333@|R@{`A@|R@|@|R@| O;d@|R@{XbN@|R@|ڹ@|R@|Bѷ@8G>6z@7+ I^@5@4Nc @4"`@3GE85@4Q@3a-@4Q@3_ @4Q@3[~%?F^S?t?UA?%?„ ? RAQ?%?^?%?7&c?6P?߱Z?*?ڱP?Fg*V3?1,j?~?]B0?CRU?/̽`@@@@@ @&??????i@?@?Wf>h?^==QV@Cx@{W&?so0?(O-hh?ђ?4P @b]|9@"@-hr@-@-hr@.Mj@-hr@.zH@-hr@,[V@-hr@+]c@-hr@+R@ϕ$@ϖu@ϕ$@ϖȴ9Y@ϕ$@ϗ>6z@ϕ$@ϔ3@ϕ$@ϔ9Xc@ϕ$@ϗsP@3@@3@@2!hr @2!@1KƧ@14m@1\Q@1\[W?@1\Q@1\j~#@1\Q@1\ߤ@?1j?ߋb?l>?,Z?j?_ ?| ?La?h?!zt9?=W?C ;?/Y}?򯞼?T?ij6?L8AS?Y͍_@@@@@(@*??????@0 T?s@(?5Q[v|@, Ũ@ϕwů?3[F"3a?U?'?rTrb z?5D@fNk@#@bv@b"`@bv@b)^@bv@bZ@bv@b @bv@bv}Vl@bv@c ~)@M@ I^@M@Q@M@@M@ڹ@M@hr!@M@iB@7 D@7 - r@3^5?}@3+Q@1Vu@2 Y|@1xF^@1j~#@1xF^@1A7K@1xF^@2zxl"h?% ?L +xNC??=?5"?ZF,U?us\?|-J?cu%+??Xxe?Ŷ'?=Ca?I1;?ZaQ?k,?S1z?G?jx?yC?n=?%_D?/Y}?RJ?oC?*Z}@@@@@(@*??????Zt$?Q3?44B?^f0@y@Wv?QuI$?ryF?%Lw$?ڢ|!@o@'@ah\@aix@ah\@ah@ah\@an;5@ah\@ai*0U2@ah\@ai7Kƨ@ah\@aen@mV@lC@mV@il@mV@fx@mV@l/{J@mV@n@mV@nc @64m8@6O M@3hr@3Vl!@3tj@3˒:*@26z@2K]@26z@2<64@26z@2U=?]?4Kl?e +!C?H?4w??]?=}?低NU?ǧ?D6??f1-&?*wjs?H?~}o_?bv{3dZ?`i=?GZ?@@@@,@(??????Vwq?P,sPq?B/%?:no'b@ag(@mJ?R8N ?͓E'?Ѐ>(?f_Ԋ@@@@@,@*??????A (?':eN?!F @vp@$Q?6?06X0d?iE\?V*<@s j8 .@)@t@+@t@%F +@t@;5@t@ƀIR@t@- @t@d@/z^5?}@/|j~@/z^5?}@/s@N@/z^5?}@/dS@/z^5?}@/{~@/z^5?}@/g#@/z^5?}@/z)@7@@7sg@53S@5/U=@4`A7@4RT`e@4 [W?@4JL@4 [W?@4PH@4 [W?@4 '/?Ol?̂?6KX??p/?c:e??. +?B?j3(? +s? '?6ז?W<ܾo?y\?jv ?t#$ ?Nty"@@@@@,@(??????d˦T~Ÿ?M +s7?cX@S @/xI8?p=?:8??`l@j6w@*@kƧ@kR@kƧ@kU@kƧ@kU=@kƧ@kx'@kƧ@k҇@kƧ@kv@^cS@^cS@^cS@^bTg@^cS@^ba@@^cS@^bf@^cS@^cTvw@^cS@^e|*@3䎊@30@/\j~"@/]t`@-nO@-̱Q@,@,.@,@,<0G@,@, 1?|b@?ר4?"(#*m?O*je?-??|h2:?R?J:?9~F?ڥW?JU4?pDRg?z+?xuhy?ST)FS?Үc?H@@*@(@*@3@,???????l?"`?|$H?}c[.@k@^cё?9Yi?8o}?$f?X*@f>E@+@`B.@`B.@`B.@`B.@`B.@`B.@bM.@bM.@bM.@bM.@bM.@bM.@4䎊.>@2TS.Mm@1ȓtj.Qn@1a:S.NC,@1a:S.NC,@1a:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 ,@wn@ +G4@J!kX?mˉ?j;1?QeSz?޻@d@/@C%@,@C%@jL/@C%@Iԕ,@C%@\PH@C%@]@C%.@/@;dZ@/@j~@/@p;@/@WX@/@Q4K@/.@9>6z@9#33333@6 ě@5߃{J#:@5tj~@5"M@4iB@4Ďqj@4iB@4R@4iB.NC,?|O?Lx5BL? +?lE ]?ÛҮU@8?µ'&?vj?R?F͵sS?֎yP?ݔJ {@8?T# ?W$B?j?K?116@8 @@@@@,?????0@1&@0 +T@1&@I:@1&@R<6@1&@@1&@^uƖ@1&@]@KƧ@ d@KƧ@@KƧ@鳋@O@KƧ@H.c@KƧ@Ҡ1@KƧ@ܟ@7]ce@7@3f+ J@3li.p@2A7K@2By@2@5@1).@2@5@1M{@2@5@1pK?ؗ?we ?b|S?u)Pnf?!=?臫?ڡG7?%d?%d@@@@@(@(???????A~8?L(T ?0y/L?D}_*@pڧ@/=?NM?A?b35?un'2?7%@ +Z@dF:g@2@+R@{#@+R@&8X@+R@')n@+R@%@+R@ +̯Q@+R@$[@vȴ9X@;?F|@vȴ9X@y▄@vȴ9X@~;@vȴ9X@xiag@vȴ9X@o@vȴ9X@n~y@8H@7/>m@3W+ I@3S<@2"`@2Fj@2h@2_Jrz@2h@2Wlg@2h@2^K?F?E `?ZZ/?M2?˄Ve*?hSG?8c?f?:s +?+< ?}]?pDD?4<?w?:[?Ӄ?AVq[?EH ~ +@@(@*@,@8@6??????ywfz@]S?v:?p5:@?Κ@s!_'?=CIJ??VjT8?ۢ+@r,W@3@?|@?|@?|@fA@?|@2X@?|@ k@?|@jO@?|@ߤ@@c@cS@c@clC@c@c$/@c@c +=q@c@cC-@c@c [@4 xF@4wl@05?|@0 (@06-@09k~(@/Vl"@/:T@/Vl"@/|@/Vl"@/F]d? ?j‚?WD@?U=K?>{~?ZzZ? ?ā?8G?!zt9?m^?^?~/M???k3`E`-? 3?<Dx@@@@@*@"??????Rd/1t?Q*_?+S-@g4@cA?qЉk?LXr֪?X[?0@g:oC@4@b I@b +=@b I@bl!@b I@bg@b I@bGE8@b I@bݘ@b I@b@Z1@Z^5?}@Z1@X-@Z1@a@N@Z1@4֡b@Z1@ @Z1@@7>6z@7Mj@4+ J@5'RT`@4A7K@5ae@4:,<@4@4:,<@4_o@4:,<@4K]c?sD?g?q} ?Kw?WOr?MȳYh?F/P5?2M®?vux"E?Ǔy[?uf +?Ó?ٸ?=?C9?Y 0?ԏ >"Q?!7~.W@@@@@*@,???????ɠt?n75R?d@b)@9{?\?y?* \?y@_Os @5@G@G@G@dZ@G@q @G@q @G@c@G@@$:G@$;S@$:G@$;@$:G@$;W>6@$:G@$;q @$:G@$<(@$:G@$:C\@5v@5b@0hr @0H˒@/XF@/X@@.Z@. xF@.Z@.Z@.Z@.tj?}ѿ,?h?>f?lDžN9?G?-tT?|O?NۈV(?'Q?Kd]?qN?lINՄ?^&? +??8 ^?b/bJ? +t@@@@@&@$??????>5E }s?\pn?%FcC@e1@$;luT?<46#?E{#}?SQ?2@g@6@6E@5\)@6E@G{@6E@KI+@6E@cO@6E@fO@6E@dli@YlC@Yx@YlC@YPYa@YlC@Y9@YlC@Yއ`@YlC@YQ@YlC@Ya%@6Q|Q@6Rn@3+@3̮@Rϒ@3"@3كuH@3Q@3e@3Q@3~@3Q@3?|h2:?"i!?zB"?.)/I? ?C .?{si?t𔻝,?Tm՜?oh$?k?.jdY?Q?Ɍ?sr?%bȜ?:9‚?+[+ +~@@*@(@$@:@:????????VO?e,*;?D.H @K|S@Y,=X?n4sT?al~8?Aw*?@b%@7@KC@u?|@KC@KƧ@KC@H9X@KC@KC@KC@Il@KC@KƧ@ +@ 1&@ +@ `A@ +@ -@ +@ C\@ +@ -@ +@ bM@9~($@9 H˒@1+ @1- @0tj~@0nP@/N;6@/ѷX@/N;6@/W@/N;6@/ ҉? T?ߋb?N?#t?DE?R?!q ?I?s8r?9~F?tP*?H, +r_? nI?Ф? SF?!ˠ*(?L?7@@@@@@??????./G<?W 칸?`<@K"̡@ A|:?f_?ph? ?W@r ޥ@8@j +=q@j@j +=q@jhی@j +=q@j@j +=q@jr @j +=q@j@j +=q@j84@?|h@BZ@3-@3`A@2YJ@2ⶮ}Vm@2YJ@29@2YJ@2J?]?Mj̑?%Lє?vI?] + ?ZzZ?]?V i!?`1B(??*v7?vMUu?*wjs?:?9@0w??Xk-7?q?@@@@@??????Vkb?c#c?0?Gm9V'@j%P@Ds?@(z :?V-{?q?Uf3@s޼@9@xR@xI^4@xR@x(@xR@x[W@xR@x0U2a@xR@xV@xR@x{J#@ ^5?@@ ^5?@ xF@ ^5?@ U@ ^5?@@ ^5?@ + @ ^5?@;5@97@@9(1&x@3+@3sg@2Ƨ@2)_@2Q@2Q`@2Q@2"`B@2Q@2fB?CږF?t,?-a} ?Ac ?X?0 +?>sN?&O?>4g9?Җq?~?XS9??# +3/g?їJ?}@@@@@(@&??????FYZ?1,W?SB#No@v>@X@P?RÊph?o}P?Yr?њ@lG@<@7K@7K@7K@-BH@7K@e@7K@? h@7K@@7K@[@Im@I@Im@IFb@Im@ISX+@Im@IY7@Im@I"S)@Im@Iᐜ@3?@3?x5@@0hr@012@0tj@0l"h @.Vl"@.V6@.Vl"@.DF@.Vl"@.# ?}@TΥ? @ ?"?t?0 s?Ȯ`e?| V? ӫI?8ο?/Sϵ?W#&-?\?pDRg?f?)j?f GA?[w?I@@$@*@(@7@5??????[?t?p"@>+ @>ti@>+ @>b}@>+ @>(@>+ @>!@>+ @>zG@>+ @>5?|@t@Ƨ@t@;dZ@t@C,@t@4֡b@t@S@t@kP@2T xF@2Zݘ@/-V@/g8}@/*n@/"@4n@/Bu%F +@/7+j@/Bu%F +@/D7@/Bu%F +@/1&x?^Q5P?31p?Uy*?Aᆽ?.SM?}?q' +B@@@@@,@&??????cfJ?l'H +?qZd?xlo@>;׫@̉F9?)u hj?p:@?J?AY@rg<@?@@ȴ9W@@nO@@zG@@s@@N;6@@2X@F@Hr @F@Dg8~@F@Gz@F@Gݗ@F@EoiD@F@F&@7zqiC@7xTɅ@1ԛS@1J@0j~@07@0V!.I@0W +=p@0V!.I@0W)^@0V!.I@0WsPI?Y͍_?sp?N?!#?#6_?C!?h??CO?qF?siqe?݄ ?P=?K?%_D?oܧ?!ˠ*(?L8AS?b/bJ@@@@@@??????S+<6x?,g0?+ )M@0@G0$?LVC?F??O n>@lX|@@@b`B@d/@b`B@ev@b`B@`hۋ@b`B@bM@b`B@`D@b`B@c,zx@jA7L@jffff@jA7L@j܄@jA7L@j (@jA7L@j҈p@jA7L@j\N@jA7L@jK^@6H@6?@2° ě@2?@2t@2ڹ@1䎊r@1{n@1䎊r@1 I^6@1䎊r@1.H?]?hX*?ě?W0 ?P?-gfQ?CgE ?=U +3??iAA??_PV ?LQ9@@$@ @ @3@7???????`9' ?$?2h{W?Pmv@IN(X@!TJ?RƽaE?p`eo Y?ܹ]?+" @ir#:@C@gWO;@gNzI@gWO;@gU%F +@gWO;@gU?@gWO;@gU*1@gWO;@gTj~@gWO;@gS3333@(\@&ffff@(\@/'/@(\@,C@(\@%@(\@&@(\@* @7!.@7l!-@33S@34m8@2lj~#@2jݘ@1䎊r@2'RT@1䎊r@1H˒:@1䎊r@1hr!?|O?sI?,Z?ھ۲?'`?5H>d#?]˙$>?.\?`P?ʳ_?__C?ĭ?]ߒ@@@@@*@*???????X?;*?A_V?6P }@gQ@'?aǁI?Vu?3z?#O̸^@f{v8N@D@3A7K@3A@3A7K@3B}U@3A7K@3B\(@3A7K@3B\(@3A7K@3@hۋ@3A7K@3@[7@yv@yv@yv@yQ@yv@yJ#9@yv@y)@yv@y~@yv@yG@0H@0Ov_ح@+`A7K@+m\@*rnO@*r{m@)Xy=@)Xy=@)Xy=@)\(@)Xy=@)\(?b'f?{j?!!׋7?G?6r In?tJ?bM_x? g?90?@[*^?إ<(?]#O?bMky?~('?s@a?XLL?O|q?Ѐ>(@@@@@,@,??????Pmo? +vXW?4㽰M? +Fx@3AC}@y#?CL;??s6z@2D*1@0S@0 @0`A7@0'RT@/@/4K@/@/حU@/.NC,?^Q5P?dY{?,Z?GZ0e;?/m{@8?bV,?V i!?}7.?,~[?we @8?i ?,?f)"?O?rsw?C SG@8 @@@@@*?????G@+ J@1&y@+ J@{@+ J@ᰊ@+ J@X_@+ J.@+ J.@6;dZ@6@@6;dZ@6M(@6;dZ@60 ě@6;dZ@6A [@6;dZ.@6;dZ.@1@1$tS@0+@0E@/;dZ@/C,@/73@/8tj@/73.NC,@/73.NC,?OW?O'q|?G)?nx@8I@8?;0?Ò7=?3?!@8S@8?!?|\?7^|?ޒ7:ʪ@8 @8 ?@@@????H@P`A.@P`A.@P`A.@P`A.@P`A.@P`A@d%3@Y+.@Y+.@Y+.@Y+.@Y+.@Y+@s@8۹~($.>@3 I^5.Mm@2-.Qn@1:S.NC,@1:S.NC,@1:S@1R@8J@8#@8:@8 >+@8I?@8J@8@8i@8@8S?:;{@8p@8 *@8p@8@8 ?Xk@&?I@/@5?|@/@-@/@-@/@ޞ@/@qu"@/@ۘ@-V@nP@-V@W@-V@D@-V@2X@-V@沣S&@-V@䎊s@4Q|Q@4Q[W>6@0 ě@0GE84@0]V@0\C,zx@/`d@/ߥ@/`d@/zG@/`d@/!-w2? ?h?RsW?q@v?Dj??|O? +?pM?@[*^?&Tm?b-x?W ?/? J?hB^?SP?ˢL1@@@@@,@$??????@7?=G?2[?+t@Mѣ@vӭ?R{ +dM?<Kt?M?Gq@g| kd@J@4j~.@4j~@DĈ@4j~@=ĥ @4j~@X;y@4j~@O +p@4j~@@Ov@r.@r@rv@r@r0@r@r.@r@r\%@r@rͳB @4Y*0U2b.>@0hr @0"h@0'KƧ@08@05sh@0 W@05sh@0 +sa@05sh@/ +@8J?;??tp{?goA?u;V?H@8J? ,E?|QHf?= B0?h@8@.>@3\I^5?@3cA @2`A@2@2O M@2D2W@2O M@21@2O M@2"@4n@8J?%߰?X+??=T^@8?F/P5@8@8i@8?=x@8?`w@8 *@8p@8?h@@8 @@ ??N@߷KƧ@߫K@߷KƧ@@߷KƧ@ߦ"@߷KƧ@߻.@߷KƧ@84֠@߷KƧ@YPI@S@&fffe@S@m@S@LKL@S@@S@H@S@0a@6H@6]{.@4G+@4=]jo@3v-@3b@3QiB@3Sr@3QiB@30oiDg8@3QiB@3%H? 1Ӡ?;@3+ I.Mm@4~".Qn@2O M.NC,@2O M.NC,@2O M.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 P@i/@i$/@i/@i@@i/@ii8@i/@i(@i/@i>(@i/@if@Q@CS@Q@!%@Q@+Mڑ@Q@'>s@Q@&4Ü@Q@'Ò@8*0U2b@8:@3&+ J@3%Ff2@2;Ƨ@29_@1YJ@1raϥ@1YJ@15f@1YJ@1_?>KtA?4TN?v|*f?xLɀ?J/?^L~?uq?]m? p ?x_?x7m#??֙DQ?I͑Q?p ?k ?юf@?#&z?^а~@@ @(@(@5@6??????F@z[V?"z&CJ?\ψ@i99-@-MJ?9F\*\?}{fp?nmQj?;EAG@n~5p@Q@\@9X@\@C@\@Ov@\@'/@\@L`@\@_@H9X@H\@H9X@H1&y@H9X@Kq @H9X@L@H9X@LC@H9X@KC@3>6z@3eں@1S@1{m@1"`@1u"@1}ce@1}jOv@1}ce@1zn@1}ce@1zL_?|O?L?ojVrnBZ@4 I^5@4?@4`A@48}H@4@5@4JM@4@5@4$tS@4@5.NC,?q!U?B ?&)_? +Y?\ǿ@8?sD?^? u?Zf?B<'@8? uf? $F)? U?71lQ?W1x@8 @@@@@*?????S@^5?}@nآ@^5?}@R~@^5?}@ 9@^5?}@P@^5?}@\A2@^5?}@D=F@`A7@l^@`A7@}T@`A7@f @`A7@GD@`A7@U@`A7@n!@6@633@2E?|h@2C&g/@y@1tj~@1|@0m8@0UՑB@0m8@05*@0m8@0fG)?ڡG7? ;m ?ש;?|ǵ9? %M}?jB/?=ak3?)RP?BL?Ê?: O'm?!2{? L?-?gp0@@"@ @"@3@2???????g vD?UHK?PWp(?H.Q@xxYU@c?p>B?h]wh? 5T?ُ͊?@f(y@T@:E@: X@:E@;[?@:E@;J@:E@:i@:E@;}̇@:E@;E@(\@;@(\@+"v@(\@.5)j@(\@'c3j@(\@! @(\@&* @8hYJ@8C;p@4!hr @4#%W@3tj@3s]@2@2V@2@2hb@2@2Q!?Mo?c +_?Y&??j6?X ?7?0f?%%?BTV?؛HN?H_?J?Un?Ŷ0lW??@ i2?)B}@@&@(@,@"@(???????x@@t0XU?bO +?[mLx@:@(Pܷ&?ub'/?yP㞺 +?{-?H;}@pC7@z@U@E0 +=@E0`A@E0 +=@E1:@E0 +=@E1'+@E0 +=@E2+ǭ@E0 +=@E.@E0 +=@E.u@V@hr@V@@@V@(@V@.@V@<]@V@쪗b@1䎊@1䎊@,A7K@,@+n@+@*Xy=@*S@*Xy=@*Z@*Xy=@*2#n?_?R?lj?}?꘏?O?bMn?𕧌?v?-4?J/51^?T`0?bF?r?nڨ8?p?%ip-?Yp@@ @"@ @:@8??????[С)T0p?@n?*N!1@E/ʨ@쯯?P%",?9= +BVT?#~cyp?k1'a@s]Q@V@v@O@v@9XbN@v@4*@v@,C@v@*JM@v@,L_@yO@zx@yO@y\@yO@y'@yO@y!-w3@yO@ytj@yO@y%@8e!.@7w1@5+@5<쿱@4Vu@5ѷX@4&YJ@44%1@4&YJ@40`A8@4&YJ@4-8Z?' ?0!?1?W?5Ç?JpT"?{6O?j{?S]:?Y`?/m?*ML?٧??[e'?7?$–?3 D?y@@@@@,@(??????CID?nl~*?k6wDžn@,$VJ@yً?}?|x?%{c8?Ϫ]1I @tj@W@C@@@C@C~@C@ϒygz@C@l~@C@ʒT3@C@_j@1'@j~@1'@K@1'@':K'@1'@  @1'@ײ@1'@*Y$O@7mv@7hG~#R@3B ě@3DB$@2ttj@2uQp@1n_o @1oF@1n_o @1n+(+H@1n_o @1n+kw?\l6?@-?U?+@8I@8?lOx#@8@8i@8@8S@8?8$@8 *@8p@8@8 @8 @?Z@M@P_@M@ǔzG@M@ǔj~@M@džIR@M@т @M@zxl#@hZ@hI<@hZ@i&@hZ@iMM;@hZ@itj@hZ@h1&@hZ@h@6w@@6v=6@3J^5?|@3y=b@2~"@24J@2Tm8@2>BZc@2Tm8@2r@2Tm8@2xF]d?E[i)?h(O?ޑKO? :>Co?FILXT? ا ?~Ov_ح?Klր? Ķ?ۦkQ?Gfx^K?Y@?R?K)?J8ȟ?h1oS?r?|)-}(@@@@@@???????{˲NK{?q,?Z.7@tmI@h^?RF*?zb^f@v ?rb@d!1<@[@R`A7L@R`ě@R`A7L@RT֡a@R`A7L@RWkP@R`A7L@RV_ح@R`A7L@Rzu%F@R`A7L@Rvȴ@W +=p@S@W +=p@KC,@W +=p@P*0@W +=p@G&@W +=p@w@W +=p@ohی@6qiC@6g +@3S@3A [@3 -V@3c @2iB@2M:@2iB@2a@N@2iB@2-? ?U@3 hr@2[C K@2U`A7L@16@1D*@1!9@1D*@1"8a@1D*@1$_*Y@8J?:?Mi1?ƦJG? ג3?^M@8J?EW?9V?nY?su*o?߭%@8p?֢?CJ"h?JP?#_?p?8>@&@,@,@<@;?????]@d/@\hs@d/@BZc!@d/@A \@d/@SMj@d/@ca@N@d/@kC@]V@]"@]V@]}H@]V@]p:@]V@]:@]V@]@]V@]Y@8>6z@8}ce@5I^5?@5-V@4V@4oiD@3iB@3Ŏ!R@3iB@3tSN@3iB@3 [7??Ld{6?>?%?U?0eʪv?.pC?Z?/+?E?܉a^?M3 ?Җ(??@@@@@*@(??????[v[?Fqu%?[lt@^)@d<R?e;N?u$?Ŷ?6FV$c@jyQ/@`@h^5?@hl@h^5?@hC@h^5?@hƧ@h^5?@h=p@h^5?@hۋr@h^5?@hfB@9l@9~#@9l@9^5?@9l@9'RT@9l@9'RT@9l@9L/@9l@9*0U3@3:@3!-x@0ԛS@0ԯO N@/x@/\)@06z@0}Vl @06z@0At@06z@0At?|O?'?Gy??Rw#z?#6_?6J?| ?? :?ދ"?Uh;?I?sx/T?W?/?٤?RJ?b/bJ?_խW@@@@@,@(??????4h('@?&PD?!(K%@hl@9Rp?F[M.?Ax4Y#?}!?X*l@fv@a@9NV@9MV@9NV@9Y_q@9NV@9? @9NV@9Kt@9NV@9U?@9NV@9W@+@@+@̥zxl@+@_o@+@1&z@+@Ϫ͞@+@̿[X@6S&@68YJ@3+ J@39@3-V@3Rn@2m8@2p:@2m8@2ԯO M@2m8@2䎊q?F/P5?2?FI?L?e7@?S:Ъ;5?us\?z]藍?ܜ?lyx?]vM ?>[Fh?!A +m?3 ?a?pLA?xb?zy@@@@@@ ???????aΫc?An&ן?@E|@9RQv@ҝU?ck?aU:P?o%7^?SQ0@iɈ=@b@Q.@Q@Xy=@Q@Qhr!@Q@Y+@Q@UL_@Q@QN;6@ .@ @p:@ @|@ @ ~'@ @ @ @ rF@8YJ.>@4S@4-@417Kƨ@42}Vm@3Tm8@3\(\@3Tm8@3Z,<@3Tm8@3YQ @8J?Qi{cj?=՛?Zto?wX?ߑ@rY@8J?蠔?lU ?%ja?B*Z?]'Y@8p?+0T?=o +F?{ޏ?vucʲ?/̽`@@@@*@,?????c@^7@^6ȴ9X@^7@^0|@^7@^$Z@^7@^%84@^7@^#w@^7@^3 @pzH@pV@pzH@p@pzH@p2@pzH@q$/@pzH@q*g@pzH@qc@7_o@7@5+@5 +L/@56-@5Stj~@4@5@4Q @4@5@4oh@4@5@4n.2? ?AZ?"?%I _?QW᎕?̀m?oC?t?ń ?_*>?07\?b&?_??"x?OMy?pZ;d?-o@@@@@*@$??????b(7?$?\tG?e/~Q>@^1Uh@qR ?}9?U-wX^/?/oc?o@<@fs[@d@\1'@5?|@\1'@о )@\1'@nP@\1'@r @\1'.@\1'.@խhr@Քj~@խhr@!-w@խhr@ӝ-V@խhr@O@խhr.@խhr.@8!.@8.2@4|hr@35oiDg@3ȓtj@2͑hr!@2&@2D?@2&.NC,@2&.NC,?pEIt?ĩa@x˖?91G@8I@8?mX?kb?me\? &@8S@8?d? [b?Dø;?i,@8 @8 @@@@????e@C@|hs@C@֡a@C@bM@C@&@C@Ʌn@C@aA@vȴ9X@ه-@vȴ9X@r<6@vȴ9X@ق&I@vȴ9X@zc@vȴ9X@x@vȴ9X@xPH@8hYJ@8i^5?}@4ěT@4䎊r@4V@4'RTa@3xF^@3@3xF^@3S&@3xF^@333334?ȉak?:@+kjf@+kC%@+kjf@+k:)z@+kjf@+kU=?^Q5P?Čۨ1A?$C@?/?@ A2?}?bV,?>`?['?3.Yl?@?Z,a?b@?~('?8*?͓E'??l&@@@@@(@*??????M+d?%?4qmC? Gϼ>B@Ň<@y?C94?.΃N?wX9?TAZݛ@sS@g@RnP@c @RnP@FL@RnP@Rޞ@RnP@*!7@RnP@/fn̉@RnP@(*@.7KƧ@.>"@.7KƧ@.ί@.7KƧ@...n@.7KƧ@.kW@.7KƧ@.r9$`@.7KƧ@.Hj,@8@9O @4I^5?@4"0@3PA7K@3KOy@2O M@2e@2O M@2 t@2O M@2j=6?|B &?ͼԦ?s?sNȺ?5m;0 ?`?Eg??{.V?{?cO(?aő ?Ko?%j?*?X?`oe^?!8@@ @(@ @2@9??????&S?6?zx?CwB?GZ?їJ?*@@@@@,@*???????9Pa?M_dɗ?Yȏ %@vJw@M`?k2rP?v}:w\?k!?1Q(@h/@j@XbN@ȴ9X@XbN@XbM@XbN@@XbN@"@XbN@F]@XbN@Q@y"@z1@y"@{u@y"@{s@y"@yXbN@y"@z)y@y"@yb@6]ce@6_o@2hr@2@2~"@2ݘ@10U2a|@1Q@10U2a|@1W'@10U2a|@1ݘ?Br?sI?tcj?$jB?FL{?<_?|O?\tW?%gǿ?.?O ?低NV?T?1j?~/O?l?Cns?Tj@@@@@*@&???????8]P}*`?5>hc ?6@{@yO?Tf|X1{?7 +6#?Y^S?xN @hmH k@k@O;.@O;@ @O;@*@O;@@O;@ЇYV@O;@u@+x.@+x@+x~@+x@)N@+x@,~yW@+x@,xg0@+x@,l @8쿱[X.>@4i+ @49=]?@3t@3KDP@2𖻘@2oE@2𖻘@2s%9s@2𖻘@2Fh@8J?2?!ұr?cet?*- +Q?a@,@8J?Is|?,n?^\Nb?D?? @8p?sg̘?uc4?7,?<?+̪W@*@&@(@;@8?????l@{@{KJ@{@{޳c@{@{\N@{@{4.@{@{%&@{@{Uϖ@=p +@=)4@=p +@K@=p +@: 2@=p +@=hH@=p +@BlJa@=p +@Af@4 xF@4tj@1S@1BJv@1"`B@1vG6@0sh@0%@0sh@0y/r@0sh@00?| V?|28?N?`?]j?P+?| V?l0F?j?aݚ?p? OYb?ח?(c? ?+@?1?G@@@@ @2@,???????`?F<?LחԘ?9 3P@{ғ)@??j"<@D?XTױ!?Kw?{i@@e'b}@m@LvE@Lv+ @LvE@Lu\)@LvE@LvFs@LvE@LvR<6@LvE@Lus@LvE@Lu*1@ݒnP@ݒ ĝ@ݒnP@ݒ:)z@ݒnP@ݒ@ݒnP@ݓa@@ݒnP@ݓ3333@ݒnP@ݓtj@304m8@30:~@0S@0O M@/n@/Gz@.̲@.̘_@.̲@.̲@.̲@.̲?|O?3i?1f_?vHn&? f?^?|O? g?NJ?uX?Cq$u?b-x?nwf?u?u@>N ?͓E'?SP?M684@@@@@*@(??????.z`?&?F ?^C@Lv^@ݓ?2>=q?5E??q=?w"@fW@n@w@]@w@(R@w@q5@w@(@w@qOh@w@ڧ}@"`B@$(*@"`B@'L>@"`B@$qB@"`B@ z@"`B@$[ @"`B@@8 ]ce@8cA&II@3^5?|@3n@2`A7@2[@2z,<@2tR!LT@2z,<@2vYt@2z,<@2vV?'Z]&?5;-?`&בɽ?2K?5?"?I'%?2S8?y'?E?JWV'?a?%?@w%?D3?vCy? a7?*@@$@(@,@4@2???????>C3/?Um_s?B^0@kU_@!V -?qMyG?_9m?K`?QJe6@n9@ym@o@  I^@ u a@  I^@ n@  I^@ ѷ@  I^@  @  I^@ `A@  I^@ n;@bPbM@bP +=@bPbM@bPc^K@bPbM@bPv7@bPbM@bP]0@bPbM@bP 1 @bPbM@bP|@4۹~($@4ܥz(@.8tj@.8jZ@-h1&x@-h @+873@+8_W1@+873@+82&@+873@+8YJ?}x@LC?d3r?pX?ȗ ?9G@m߀@q@3Z1@3Z1@3Z1@3\]cf@3Z1@3X@3Z1@3Z~@3Z1@3YJ@3Z1@3YXbN@ I@~#@ I@~'@ I@0@ I@xF@ I@6z@ I@xF@5>6z@5+ I@1ٺ^5?}@1"`@0Ƨ@0Q@0u@0O @0u@02a|@0u@02a|?}ѿ,?nx?)?&P?^:f?,I ?^?}ѿ,?0n=Q?CXs?@Cv?UBi?]#O?T0?Q?`x?8 ^?SP?ˢL1@@@@@,@&???????+^0?'R? |X }@3Y{@h?GP)&^?-~}e?^;I?eIq@g%u@r@(@(1&y@(@"`B@(@ - @(@6@(@l"h +@(@!e@9Xb@@9Xb@oiDg@9Xb@ὥ@9Xb@SM@9Xb@ȴ9W@9Xb@@7v@7<쿲@3+@3"3@2"`B@2nO@1@1zxl"@1@1M:@1@1&??d_s?ޑKO?$?[Fh?.EkЍ?Эs_`?S[D?7N?4\ɵ?Ee,@@@@@&@*??????JX|pcX?e%6׾?T\Ү@v|#@8Pp?wNI?n&K?'aM?N7٤@oHwi@t@8@8F]@8@70Vn@8@9G@8@7!n@8@5(=@8@4@r-V@q@r-V@q<@r-V@r@r-V@u`/@r-V@q'@r-V@rB@4*0U2b@4E@1hr@1@0tj@0V@0Tm8@0R~@0Tm8@0TGa&@0Tm8@0S_g{?|B &?9?e>c-?'?6θ ?9d?|b@?~?>IA?-HD4?i֭?x9f?tw{O?HZS?̯.3?:Il?#?$@@@ @ @3@2??????Baw?/Eʫ?DPp?δ7?]|?cx?>@fngb@u@"@Q@"@.H@"@"@"@vȴ9@"@-V@"@ڹ@Y@YzG@Y@Ya?@Y@Y@Y@YSN@Y@YMj@Y@Y3332@3䎊@3&IR@0 ě@/U=@.DZ1@.CF]c@.V@.UXy=@.V@.UϪ͞@.V@.UfA?|O?'?U#?<ݝ? 9?aX?| ?4 "?'Q??Cq$u?eDQQ?nwf?§d߱?|׿pZ? ??L?SP@@@@@(@*??????-d%0Yֽ? LѡF)?.}H@Cj=@YYh3?+nԡ]?2$3U[?di\T +?pLG@fIZw9@v@dZ@k@dZ.@dZ.@dZ.@dZ.@dZ.@&x@BӮ!@&x.@&x.@&x.@&x.@&x.@8%!.@8'm@43S.Mm@3W-.Qn@20U2a|.NC,@20U2a|.NC,@20U2a|.NC,?}x+@8I@8?t D5@8@8i@8@8S@8?l{@8 *@8p@8@8 @8 @?w@ I^@hs@ I^@tS@ I^@{J#:@ I^@҈@ I^@-w1@ I^@vȵ@"`@F@"`@PH@"`@ޞ@"`@~@"`@)y@"`@)y@8 _o@8s@3° ě@39XbN@2tj~@274@2u@2Z@2u@2z@2u@2t?X?t,?Q/ +?̒?e7@?7D +?)T?9}=? -oɧ?,??j?oeư0?3a=?I6y@=u@=u@=u@=*1@~6E@~4F@~6E@~73@~6E@~6z@~6E@~5Y~@~6E@~5*1@~6E@~43@5H@5u"@2+ I@2_F@1A7K@1u%F +@0?䎊r@0@ k@0?䎊r@0@ѷX@0?䎊r@0@ ě?|O?Qd?njĕx?'$5?#6_?f]G?F/P5?[ K0R?"a?N?<}?m/w ?=P|@@@@@,@*??????؏؀VTx?*(43?=~@=0s@~5?J݄inj?3Va?g?mð,!@h>@y@u@S@u@33334@u@+R@u@5?|@u.@u.@wp +@w+ K@wp +@w^$@wp +@v1@wp +@wQhr!@wp +.@wp +.@8^H@8`- @3hr@3ES@3v-@2ڹY@2ٌ~($ @2Ohۋ@2ٌ~($ .NC,@2ٌ~($ .NC,?A[F?po_?PQ?fP@8I@8?8ȺJ?&`?;+?X@8S@8?UWci?4r?H/b?DZ@8 @8 @@@@????z@:^5?}@;dZ@:^5?}@;u@:^5?}@:^5?}@:^5?}@9_q@:^5?}@84֡@:^5?}@8tj@@@@jO@@C\@@"h @@a@@a@5[~($@5\!-w@1I^5@@1O;dZ@0"-V@0"`A@/Ǔݗ,@/@@/Ǔݗ,@/ɠ'RTa@/Ǔݗ,@/ɅoiE?]?J`Y?"? +?'ř ?+ʦ_?]?p RN%?90?Hn? f?U3p?*wjs?9o?D(p?v_.^?SP?E݋N?@@@@,@,??????A"=c? k? Sg>@9$7,@x?c)xT)?kA\?2!?%PzX@s~@{@Tr-V@T~vȴ9@Tr-V@ToA@Tr-V@TuL_@Tr-V@Tuᰋ@Tr-V@Tp ě@Tr-V@Th ԕ@@ȴ9W@@@@ @@oiC@@wk@@SM@8g l@8K]@4E?|h@4G@@3tj@3e@3J0U2a|@3H@@3J0U2a|@3H9Xc@3J0U2a|@3CMj?oC?Ȼv\?@^ڢ?IW`g?n.}?`$-?,e?-',? ?GW??!oj`?#N? +e?vv?Vn?u4?K7~w>?q@@@@@*@(??????[u?upY-ڀ?a{?hN@3B ě@3@A7K@2`A@2n.@1iB@1;dZ@1iB@1{@1iB@1а{@8J?W[?=P?)?u??=@8J?ۣ0Τ?pI?? ^??X<@8p?3a=?/X?"a??E݋N? `@@@@ @,?????~@-V@ +=@-V@1@-V@TɅ@-V@h ԕ@-V@Ft@-V@!-w@A7L@9X@A7L@F]@A7L@A \@A7L@t@A7L@ ԕ@A7L@%2@7e!.@7e`A7L@4^5?|@4j~@3j~@3wkQ@3u@3TɅ@3u@3_p@3u@3#x?% ??0? N:??Pzj?1j?4\2?)~Y6 ?*Gk?9]t`?汝/&?MM.?:K?~gN?C.ΐ?E>g?r:vI@@@@@,@,???????n<y`?b!ftB?j0a$mT"@d4@:t?|#N?P?@l.d?ဩP@`@@2w@2n@2w@2|PH@2w@2v4@2w@2uᰊ@2w@2t!-v@2w@2vv@n@ě@n@[W?@n@s@n@4֢@n@u@n@Ϫ͟@8uS&@8k҈@3hr @3B@3~"@3%1@3m8@3ѷY@3m8@3JM@3m8@3r?@?u~?_?998??y+PYu?|O?z? +?|?MuVQ?6@(/?uDJ`?*T?ٹ?O"?\,!?>LR_5@@@@@*@*??????Qr{>dlHL?Q"?/U0L@2v<@"?eA1ċG?UTK?[2?q8@oBM3@@p +=@:A@p +=.@p +=.@p +=.@p +=.@p +=.@$9Xb@$F<@$9Xb.@$9Xb.@$9Xb.@$9Xb.@$9Xb.@7*0U2b@7Y@3S.Mm@3$j~.Qn@3!.I.NC,@3!.I.NC,@3!.I.NC,?3@8#@8:@8 >+@8I@8?kz +~@8@8i@8@8S@8?ksP@8 *@8p@8@8 @8 @?@\(.@\(.@\(.@\(.@\(.@\(.@*/.@*/.@*/.@*/.@*/.@*/.@7|Q.>@3xr Ĝ.Mm@2Z~".Qn@1𖻘.NC,@1𖻘.NC,@1𖻘.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @/޸Q@/@/޸Q@/'RU@/޸Q@/O;e@/޸Q@/ws@/޸Q@/&@/޸Q@/c +@w@p +@w@银E@w@騴9X@w@0 @w@@N@w@꙳|@9Y*0U2b@9N($ x@55?|@5c @5 "`B@5N;6@4[W?@4a@@4[W?@4w@4[W?@4u?xg?q?BI{?ߦ>?aRo?3:?_?M\ٓ@?DP??{T??6-K?^w?A8 K?j?U#?uqR7?Tј+@@@@@@???????>F@?5?3+0|\?>Hr&@/u@Prf?pYfL?y1D@#/>@=rQȈ8@os@@a@a#@a@at@a@eL@a@d|@a@6L@a@0:@jcS@jR@jcS@i[Y@jcS@i@Ϭ@jcS@iU +@jcS@i".@jcS@iAق;@7~($@7+p@3W+ I@2e*A@1A7K@1;@16z@1jp|& @16z@1k ̒@16z@1pz&?~Ov_ح?WMʨ ?'N5?1?\?Zl?lhFB?ڡG7?K@o?u:d?Q?~u@@&@ @,@:@9???????k~D돎?XÊ?f2@mGm@j/(?p?}"5y?׋:?l5B@_(@@]V@]O;d@]V@]p:@]V@]y=@]V@]@]V@]:)z@]V@]^ @3ě@3G{@3ě@3*0U2@3ě@3J@3ě@3@3ě@3wj@3ě@39#w@3|Q@3e+@2n5?|@2jY@24tj@23S&@10U2a|@1 +=p@10U2a|@1@@10U2a|@1҈p?|O?6 '8?ub5?Uv?#?3ƒ?kʍL?|O?馿j?*&k?{G_rV?Լ2#?Y٭ 8?|׿pY?P<}?*0x)??DΊ?@@@@@*@*???????Y~;?T:4?Wk3^"@]@3M]?psHeG?rD?pAK|?xم@ac5U @@4j~@4j~@4j~@5$@4j~@6u@4j~@5\*@4j~@5 '@4j~@3@F&x@F'+ K@F&x@F'lC@F&x@F)7Kƨ@F&x@F'-@F&x@F)Dg8@F&x@F(Xy=@2B䎊@2Be+@-{"`A@-{lC@-%@-%+a@,#Z@,#9@,#Z@,"ѷ@,#Z@,"@5?^Q5P?ƿ57?S?|*(?/`?{`?s8r?-I`K?@?M\ٓ@?cPQ?3;?|׿pZ?^ a?pk Y?pk Y@@@@@@??????Lp?-8"x?)~W?8@4=C@F(x)?8?G<788Z?mWZ?l1@s +@@ 1'@ 1'@ 1'@ Z@ 1'@ 1(@ 1'@ ?@ 1'@ u@ 1'@ +k@Lr @L9X@Lr @Lt@Lr @L/@Lr @Lh ԕ@Lr @L|h@Lr @LF]e@4(YJ@4(eO@0 ě@0n@/E@/s@.̲@.+ I@.̲@.Ǔݗ+@.̲@.ȧ?| ?:L +?D&?؆{~?E@? ]V?|O?> +fu?NJ?.?R? Ӻ^?٤?sq#?`x?*|\/?j?L8AS@@@@@&@&??????? h Z?d~?@5@ 笿@L((?/ND?a q:8?j xG ?ɳ?@fQ@@4j~@+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@Ձ$@և+ @Ձ$@@Ձ$@Ʌo@Ձ$@+j@Ձ$@z@Ձ$@!.@u\)@vu@u\)@vȴ9X@u\)@x4֢@u\)@u*1@u\)@q@u\)@sg @6Q|Q@6Q4J@2+@2(@1`A@1ae@0:S@0}Vl@0:S@0˒:)@0:S@0?}ѿ,?`?RsW?˅T?<_+fj?nM?F/P5? ,C?i?@[*^?qn?"?Me^?.+?OW?3{Z?ܑ ?gϵ@@@@@,@*??????>E`?~sL+?2w}@ֈ5*@tZl?4u?R6?ub`?Q U@g!1@@d%S@d%S@d%S@d&[@d%S@d&$PR@d%S@d''A@d%S@d%Yfa@d%S@d$Ζ,@@bM@@f@@Xzx@@h@@3@@}G@2䎊@2䎊@/G-@/GrG@-|1&@-{E@-(ۋq @-(fsF@-(ۋq @-)'W{N@-(ۋq @-(^9?^6P?S?,5? ?4ح5?j?bQ넛?5-?6?8Q9?מd?\j4?bw' g?Z[?{L?&{A?3 ?pu{,@@,@,@,@8@7??????PJ#dTX?)P"?(Y9-@d%d@i/?8d?6 +voE?n)?f@s%[@@l@3 ě@3/ޖ@27KƧ@2?2@2䎊r@2|`ӺM@2䎊r@2 @2䎊r@2~)@3!hr .Mm@2`A.Qn@26z.NC,@26z.NC,@26z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @1@Q@1@A@1@hی@1@b@1@\(@1@iC@ 7Kƨ@lC@ 7Kƨ@@ 7Kƨ@`A@ 7Kƨ@@ 7Kƨ@#x@ 7Kƨ@Xy=@7H@72W@3S@3jOv@36-@3*vȴ@2s&@2_$tS@2s&@2b3@2s&@2b䎋?2}?i1[?<Ӟ?g(6?l??Y͍_?/ω(2?KF?:`?͖M?87?<{?  l?6P?B?y\? +e@@@@@,@,???????4>?p'?fP3?[?F@Z4Mf@ 뛑?7W?a6 +?9?ya}Q*@bOo@@7K@Ž@7K.@7K.@7K.@7K.@7K.@eO;@eɻ[@eO;.@eO;.@eO;.@eO;.@eO;.@7Q|Q@7QE@3hr.Mm@2`A.Qn@1:S.NC,@1:S.NC,@1:S.NC,?| V@8#@8:@8 >+@8I@8?E[i)@8@8i@8@8S@8?jK@8 *@8p@8@8 @8 @?@%T@%~T@%T@%*@%T@%O@%T@%w@%T@%t5@%T@%@A@B@A@BM:@A@B@A@A+@A@A(a@A@A#@8zqiC@8{h @4 ě@4YL@417Kƨ@45-y@3m8@3)qb@3m8@3XC@3m8@3|?C I?ӡ?g?? _? +*?ŰCz??qP:6?  +1?̦2?JS6z?^Q5P?*|3N?d3"7?ݡu(r?<_+fj?dW?bM_x?#maЀ?HD?Ѝ`Hi?GU?Bh?L[]? $gv?Me_?RJ?<71?ad|@@@@@*@*??????]+?|!V"?GXZ?lb^@LPߥ@Q]DK?@?Vl?xTR\?_Hm ?Uh@s&a@@n@%$]\@n@EO@n@" @n@g{}@n@)L@n@o@nP@[ E@nP@ےR{@nP@ @nP@ -W@nP@\B@nP@#B@8,<@8A`M* @4S@4w@3"@3>@O@3p@3oa@@3p@3nOx4h@@3p@3pj?c|iqd?Åt.?XMX?4<~??7?nwe?3<' ?\P?̴?-IG?Q7?E͵k?ޗf8u?Kjw?! f?|? ?uT@@@&@ @,@,???????6qx?gSZiu?QW L(@\@A?|,ez?ufђ?q+?냣V Q@nH&@@ë I@él@ë I@Ç#@ë I@P'R@ë I@CZ@ë I@`D@ë I@f$/@ @ ě@ @ @ @ +@ @ oh@ @ ffff@ @ U=@6v@6_ح@3S@3U2a|@3"`B@3nvȴ9X@2ce@2Ov`@2ce@2qj@2ce@20 )??). +?L7S?@@TbM@T +=@TbM@T @TbM@T Ĝ@TbM@T@TbM@TMj@TbM@T@+@-@+@ C]@+@@+@qj@+@ :@+@ (@5:@5,<@2|hr@2А- @2$j~@2%zxl"h@26z@2! @26z@2"p:@26z@2(\?2}?d_s?,Z?@R?#0Y?0 +?1j?u(?Qrz?{d?Q?9x]e? uf?"`?t +j?9XNu??%@@@@@,@*??????#z?S?2@;@{?W)'@Td%/@KT?Q0ɳ?vS[?^?])^3@f8K @@ C@ @ C@C,z@ C@)@ C@Xy?@ C@q@ C.@"@n@"@$@"@D@"@'@"@\@".@6@7- @3 I^@3حV@3tj~@3T@2sh@2쿱\@2sh@2p:@2sh.NC,? ?̣\C)?eI2?²E|?`ގ q@8?qv?~?OT?@/@{?8i=F @8?|aQ?Us?F@8 @@@@@,?????@ŋƧ@ŋƧ@ŋƧ@ŋq @ŋƧ@Ō"h @ŋƧ@Ō"h @ŋƧ@ŋ~(@ŋƧ@ŋƧ@چ@چ@چ@چ&@چ@چ@چ@چ@چ@چ]c@چ@چ&@0-v@0-v@*tj~@*@)E@)%F +L@*#Z@*# +=p@*#Z@*# +=p@*#Z@*#A [?^Q5P?°R;?$C@?8v?Ot?O+y?bM_x?%F?j?0N:s?IM?Kc?bMky?u?oܧ?avh?O|q?@@@@@,@&??????%1X? ?A?fi? +4*K@ŋ@چ[?!vy?S돤?>+d??+ :-y @s@@lD@hs@lD@hs@lD@G@lD@@lD@)@lD@-V@G}E@GyXbN@G}E@G}<64@G}E@G{lD@G}E@G}IQ@G}E@G~%@G}E@G'RTa@8%!.@8# ҉@2^5?|@2/V@2`A7L@2-@2Tm8@2Vt@2Tm8@2VR<6@2Tm8@2Vl!.??6 '8?BI{?Att?EE?!w?)T?PuN??ǧ?D6?$) ?'?LR_5?r@@@@@*@,??????&3P?V\ ?E%C? {ї@J@G}zwW?^2:?/?0f?ZՏYZw~?U6 y?fr[?|M4^?!D?bk6@@@@@(@(??????b?xsg5?shY*?dX@hq@VZo?0Aq?{Eq5?F<7_?Eb@g@@b`B@ti @b`B@ ě@b`B@-V@b`B@33333@b`B.@b`B.@C A7L@C&>@C A7L@B1@C A7L@B@C A7L@A~Q@C A7L.@C A7L.@8|Q@8gb@2hr @2@4@2tj~@2XbM@2 [W?@1\(@2 [W?.NC,@2 [W?.NC,?tJ?Yz?$:HT=?;kE_@8I@8?t D5?y>cv?J?Zy@8S@8?T +a?[9\?6_[?F@8 @8 @@@@????@t@ 3g@t@ͼ|M@t@/@t@=$7@t@yYG@t@sf@6E@2F@6E@I{ 6@6E@(yd@6E@SJV@6E@@B-@6E@Cr@7-v@7,`@4O|hr@4bLmU@3"`B@3f@2@25h@2@2x@2@2 P? 8+?ɅK?w[W?"?[@F'?Z&v?eXW? A:?? ,%L1?PBl?$n润?Wl?N ?͓E'?#.?O|q@@@@@,@*??????QzNs` ?9\*?ģ-n@f@ua?H"?V搄?$ ? E?Bd>8 +@s#~@@s5?|@sS@s5?|@s$*@s5?|@s)Q@s5?|@s;dZ@s5?|@s @s5?|@qH˒@OA7L@O-V@OA7L@Oqu"@OA7L@OU=@OA7L@O"h @OA7L@OPH@OA7L@UtzG@8hYJ@8c$@4sS@4~@3-V@3p +>@3Tm8@3ao@3Tm8@3`- r@3Tm8@2g??N`?}g?nii)?3!E?+պ???KF?T?mɣ&Z?8烔o?fr[?k8'?$?]-W,?s?qmE@@@@@$@$??????P6x/d?s  +??`8@s@O"Z?l\6??U>b?^@ >+9;Z@fO@@^5?|@^5?|@^5?|@?E@^5?|@qi@^5?|@u?@^5?|.@^5?|@ě@ hr@ Z@ hr@ Q@ hr@ 'RS@ hr@ 6}Vn@ hr.@ hr@ XbO@8 ]ce@8j~@4hr @5I#w@4."@4%@3!.I@4`A@3!.I.NC,@3!.I@36z?oC?Z?бM?j0@8I?N:?sD?o,?0?M0D?=C(@8S?^U?Fp'?K^ +N?'*?5@8 ?$@@@@@?????@&ffff@&@&ffff@'K]@&ffff@')_@&ffff@&IR@&ffff@$ xG@&ffff@#&@\;dZ@\:^5?}@\;dZ@\=!.J@\;dZ@\>($ x@\;dZ@\6!/@\;dZ@\8@\;dZ@\8}H@4~($@4i@2S@2*1@2"`B@2PH@1D*@1qiC@1D*@1u%F @1D*@1ݘ?|b@?Z?3?a_b?EE?_Oo?|h2:?d?36G?j?V i!?VT??9o?sg?Z? 1 D@?Tj@@@@@,@*??????A 1*G?*hb? v Xwv@%@\9+L?Iݎ[u"?@ba.?>?Y)y7@f,{@@MO;d@T9Xb@MO;d@z)@MO;d@l~($ @MO;d@WkP@MO;d@y k@MO;d@gy @Ntj@N V@Ntj@MV@Ntj@M=H@Ntj@M.p:@Ntj@M%2@Ntj@MɅn@7v@7F +L0@3i+ @3>}Vl@2KƧ@2d7@2(@1xF^@2(@1j~#@2(@1PH?[Xxp? ?=EDA?㍠kS? Ë??ٛP?gUm?&cu?=שD?vI?pQiB?fi? $F)?B7? +r +Dw? J?-@@@@@@*???????tD#'@GI?i~|.ۙ? +@\xDž@MI]?Ǫ03?b?K? @d`@@=p +@;S@=p +@AbJ@=p +@=42@=p +@=l@=p +@5f*h@=p +@(Q@̛S@̝/@̛S@̣Z'@̛S@̡b@̛S@̞5@̛S@̗y@̛S@̐@6@@6g@3G+@3I[Y@2)"`@2.F9@1h@1j6\+@1h@1d@1h@1_"@1‚@5@1Sg@1‚@5@1[C%?|B &?2w8?9 2me?hiF?{z?5`?{si?bU'V?nv-?/:?`53?9?1BO2??(?gě?l@?%5?mz@@@@@,@,???????{& ?kn?kHv?А@.@Rv+{?zk +?~??0g+@H=t@\>@@vȴ9X@qhr!@vȴ9X@h]@vȴ9X@}Vl@vȴ9X@xYJ@vȴ9X@g&@vȴ9X@dg8~@ʳE@ʸ@ʳE@ʾQ@ʳE@ʹXbO@ʳE@ʸ4֡@ʳE@sh@ʳE@J@7>6z@7lD@1@1=p +@0Vu@0xl"h +@0?䎊r@0+P{@0?䎊r@0#&@0?䎊r@0$oh?h??ߋb?a6H?rӂ?;?Wf8?}ѿ,?-NI`(?Pт?|lU?SmImb?s?4yX?.x?L%.I0?VK} +?Vá?"r@@@@@&@$??????Tr?v- ?a{yr?a-j1m@pQ&R @;B?3R?CM?݅W{h?M +*@eK.@@{;dZ.@{;dZ@yp +@{;dZ@yσ{J#@{;dZ@y{@{;dZ@yѷ@{;dZ@y*@\(.@\(@M@\(@u@\(@o@\(@/V@\(@ ԕ@5*0U2b.>@3S@1q @27KƧ@0h$ xG@3:,<@/Ƨ@3:,<@/o@3:,<@/حV@8J?{ l?d +? N:?՞e?ե̞@8J?iV?Ž?2}?B ?m,h@8p?  l??}(3?{0?w,?t@@@@"@?????@{dZ@sE@{dZ@B@{dZ@sg@{dZ@nߤA@{dZ@f1@{dZ.@x@hr!@x@ѷY@x@g@x@+@x@/iDg9@x.@8^H@8cS&@4?|h@4D@3V@3]ce@3 k@2 @3 k@2@5@3 k.NC,?sD?/ +?4DA?+?Qv8F@8?}?H{V? Ķ?U/?b +@8?7V/r?qv?et??a%?YI@8 @@@@@,?????@>vȴ9@8bM@>vȴ9@X4֡@>vȴ9@[J#9@>vȴ9@Q_@>vȴ9@/@>vȴ9.@-V@q&x@-V@!-w@-V@7K@-V@u%F @-V@u@-V.@7qiC@7ᰉ@3W+ I@27Kƨ@3'KƧ@2Q@2V!.I@1snP@2V!.I@1nm\@2V!.I.NC,?1j?9)u?eJ>?&L=?Dp@8?UbB2?+Qe]-?H?ߖ_-0?D@8?ԇ:?̈?Rw#{?,Uf{? 2@8 @@@@@,?????@s(@s/@s(@sx"@s(@s7LY@s(@s@s(@sО^@s(@s{@h33333@h33333@h33333@h4@h33333@h20@h33333@h3t{@h33333@h5R$@h33333@h?vȵ@3Q|Q@3Qo@0I^5@@06y$@07KƧ@0GB7@0!:T@0vȱy@0!:T@0.~@0!:T@0jԑe?ȧx?Q>?|]x?|B &?, ?vV?-IGmR?"F?fq{?0xs?D^0'?KO?c—[|?5yƶ\?HL@@*@$@$@;@9??????E\>Ja?=.?? n$d^@Pι.G@9[?\l+?@#e?S}?+@8I@8?sD@8@8i@8@8S@8?E.9@8 *@8p@8@8 @8 @?@yXbN@y+@yXbN@zC\@yXbN@z@yXbN@z@yXbN@w+j@yXbN@x*0@M@M@M@MC@M@MVϫ@M@MI^5@M@M!-@M@M̥zxl@/^@/^@)-@)@@(O;d@(sPI@(b~@(0 )@(b~@(0 )@(b~@(0 )?^Dw'?GA?*"AaI?G?@ A2?:?bM_x? ,C?/BH?@[*^?IM?N`?bMky?~('?q6tN7?avh?O|q?O|q@@@@@,@(??????L\?&?6oG-?$zQ@xY@M̚F?EDj9?3?ذ. 1?a (@s +c +@@lj~@lj~@lj~@l @lj~@l=c@lj~@l@lj~@lm\@lj~@l+ @X@X@X@X״3@X@Xe@X@X߾vȴ@X@X۲m@X@X״3@4=:@4@bvȴ9@b^5?}@bvȴ9@bJ#9@bvȴ9@b#@[t@[t@[t@[zxl#@[t@[Ů1@[t@[A [@[t@[2W@[t@[$/@3]ce@3]ce@1 I^@1n.@1~"@1W>6z@1n_o @1q$/@1n_o @1nm\@1n_o @1n2X?| ?q' +B?^RpX? ?[9,?nM?| ?jכc?tWZ?)@a,?pPȻ???]ivL?3Z\?bv{3dZ?:1?E݋N@@@@@,@*??????EvO$?/_?8VPO?'2U@bބ b@[ą?Xo)?G6\c??Q @f`b@@+ J@9X@+ J@s@+ J@ @+ J@~BZc@+ J@Ƨ@+ J@~(@r @n@r @!.@r @~(@r @.H@r @8}@r @RT`@8Y*0U2b@8G-@3° ě@3.H@3,j~#@3%@2!.I@273@2!.I@2ѷ@2!.I@2а{?3a=?u~?sN?zF?J?,#t?SY?6 a@B?zY@?z?lR?&|? `?x@@@@@$@*???????B뿠?]!P?YO+7#?H]U5@$m +@%^?{o?\%V*? o;?[O@pO~-@@1'.@1'.@1'.@1'.@1'.@1'.@m]-V.@m]-V.@m]-V.@m]-V.@m]-V.@m]-V.@8g l.>@3I^5?.Mm@2j~#.Qn@1̿[W?.NC,@1̿[W?.NC,@1̿[W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @߾vȴ@@߾vȴ@[7@߾vȴ@U=@߾vȴ@n0@߾vȴ@Ϫ@߾vȴ@r@j~@1@j~@K^@j~@(@j~@N<@j~@ xG@j~@@5!.@5z@2 I^5@2m\@1-V@1r@1̿[W?@1Ɍ~($ @1̿[W?@1@1̿[W?@1?1j?q' +B?wk?U=K?\o?Vu.Qn@1䎊r.NC,@1䎊r.NC,@1䎊r.NC,?1j@8#@8:@8 >+@8I@8?| @8@8i@8@8S@8? SF@8 *@8p@8@8 @8 @?@ և+ @ և+ @ և+ @ և+ @ և+ @ E@ և+ @ +=p@ և+ @ յs@ և+ @ ըXy>@#$/@#$/@#$/@#Q@#$/@#J@#$/@#m\@#$/@#m@#$/@#m\@2䎊@2 IP:@,-V@,O M@*E@*b@)-C\@)-@)-C\@)- qv@)-C\@)-8[?^6P?GA?"?MA8?ǹT?tJ?bMn?MN ?}?3.Yl?@?Uyu#?bM]f?.+?s@a?avh?O|q?@@@@@,@*??????D=6>y?(}L? _[Y2@ ;fԂ@#_J?7vYf?UdC?kAG}?.fε@sw(@@twKƧ@twO:@twKƧ@tx@twKƧ@txtj@twKƧ@tyJ@twKƧ@tv@twKƧ@tv@n@t@n@ح@n@@n@?@n@ѷ@n@e@8!.@8$/@3; I^@3;҈@2-V@2As@1@1D@1@1@1@1?F^S?'?ϙ?:L +?.Kn?sU Z?)T?0n=Q?pI?.}$?8?GӒ?Z`(?)h??l?E݋N?]ߒ@@@@@,@(??????@5_;>/?@}46z@1V@1!-w@1 [W?@1 \@1 [W?@1 U=@1 [W?@1 ce?|O?m0?.Ү_ ?䆀{6?h|?t?| ? g?tJ??77?Q\?s@a?O?{W?3{Z?&I?ܑ @@@@@*@$??????1R?0ղ?&JPit?0-&@ 1L:e@ +5?F?PMN73?[?57@fP'@@[\).@[\).@[\).@[\).@[\).@[\).@E.@E.@E.@E.@E.@E.@804m8.>@3I^5?.Mm@27KƧ.Qn@26z.NC,@26z.NC,@26z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @vȴ9@@vȴ9@@vȴ9@ +[Zf@vȴ9@y>I@vȴ9@c/@vȴ9@@}E@@}E@}~@}E@|Z@}E@}vB@}E@{/@}E@G@7!.@7 8@2?|h@2k@0`A@0ef @/N;6@/ @/N;6@/Fa@/N;6@/>I?|"<~~?Ҁ?M8rv??&K?c eW?j?&?X?H?7Oi?7k??p0$?Q[/9?p>?`>r?"K?R&U x@@&@ @"@7@1???????8BXL|? +j=D?8ۃS@¡rt@?*@??̞@b@@@-@@C@@hr!@@ ě@@s@@@'W +=p@'W +=p@'W +=p@'XbM@'W +=p@'WO<@'W +=p@'W +=p@'W +=p@& Ĝ@'W +=p@'V+ @6䎊@6[W>6@2^5?}@2#w@1"`@1Ov`@1 +0U2a|@1 +~"@1 +0U2a|@1Hu%F@1 +0U2a|@1 +L/|?1j?ƿ57?ِ?eU5?Z?Rg.?| ?NۈV(?Kd+?>\? R?A_f;j?d3>?~('?!A +m?E 8?Cns?@@@@@@??????)G/OZ?= _j [?c,@d~F@'Aj?\I}?[9?hu@ga}G@f8@@G/w@G0 ě@G/w@G0'R@G/w@G,<@G/w@G1[W>@G/w@G,@G/w@G,!,@ +=q@n@ +=q@@ +=q@ xG@ +=q@g@ +=q@凓ݙ@ +=q@ڹ@704m8@7,]ce@3Lhr@3Qu@3t@3 +fB@2^6z@2c9@2^6z@2^Ov_خ@2^6z@2_iDg8?Br?d̺?~"?(tUo?ZAj?^m*?F/P5?io?b?j.ӌ?F;[k@G/@[?^toC?g]x>D?i7?HkIm@hh,ƭ@@~#@~#@~#@t@~#@ڹ[@~#@'0@~#@ڹY@~#@0 @ɺ^5?@ɺ^5?@ɺ^5?@Ƨ@ɺ^5?@ĵ?@ɺ^5?@ɠ'RT@ɺ^5?@Ƨ@ɺ^5?@ @3D@3'RT@1c@1dZ1@0-@08}H@0+xF^@0+҈@0+xF^@0-O;dZ@0+xF^@0-/w?| ?Kb?tcj?2UT?g?_ ?| ?I?D?N?,Y?`@0k?٤?3I#i?!A +m?^ a?2[s?oC@@@@@"@*????????Y}?YV@45S@47Xe@3Ͳ-V@33@2:S@2wl@2:S@2@2:S@2%2@8J?I'?3Z?,rg?"m?X@8J?Q_ڸFN?3fvI?)@a,?E?,}oJ@8p?3XMV?((W?J?GZ?r@@@@(@(?????@F.@F.@F.@F.@F.@F.@&x.@&x.@&x.@&x.@&x.@&x.@9~($.>@3ěT.Mm@3'KƧ.Qn@2ޫ6z.NC,@2ޫ6z.NC,@2ޫ6z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @~Q@~@~Q@~ (@~Q@}+j@~Q@~=c@~Q@}=c@~Q@}u@tC@t=p@tC@tɅp@tC@t)*0U2@tC@tEݙ@tC@tI^5@tC@tIQ@5H@58Y@2+ I@2eO @1tj@1-V@1=ce@1S ҉@1=ce@1ZW'@1=ce@1em\? ?n ?.?T|2?d8?՜u?)T?f?x`In?4=" ?5nM8?&rP'?9@0w?qv?~9n4?VMx?c? # @@@@@(@*???????RQ^>?pn@^a?kJ~@~0nB@t|?{x?2lq@ZEʜ?Ӎmv1N@aCſ@@WO;@W@WO;@ 0 @WO;@0kׄH@WO;@ V@WO;@Ձĝ߼@WO;@?n@o@C@o@0 @o@<~5@o@ݞ@o@0k@o@'9@2ks@2jhL@1 ě@0O @/O;dZ@/]@0J0U2a|@0T8@0J0U2a|@/Qq@0J0U2a|@/4?^(x?ʌ@3 I^5@3Zc@2y7KƧ@2y@18D*@1873@18D*@17>6z@18D*@17>6z@8J?t0?9a?Ac ?2ּ9? ٖ@8J?6c?v@b?!zt9?7=^9?'+@8p?r?5q?"a??_խW?{2@@@@&@&?????@ I@ I@ I.@ I.@ I.@ I@l@ I@\@bM@bM@bM.@bM.@bM.@bM@ Ĝ@bM@bM@2H@2BZc @.`A7K.Mm@.rnO.Qn@-b~.NC,@-b~@-|@-b~@-#w?^Q5P@8#@8:@8 >+?bb<]?R?bM_x@8@8i@8?I?h,à?b@@8 *@8p@8?j?L@@@???@KC@KWl@KC.@KC.@KC.@KC.@KC.@A7K@?|h@A7K.@A7K.@A7K.@A7K.@A7K.@6w@@6yFl@3; I^.Mm@2Ͳ-V.Qn@2OO M.NC,@2OO M.NC,@2OO M.NC,?}x+@8I@8?}#@8@8i@8@8S@8?5\a@8 *@8p@8@8 @8 @?@%/w@%0bM@%/w@%L@%/w@%7r@%/w@%bu%F @%/w@%I*0U3@%/w@%Aaf@Cj~@CbM@Cj~@CN;6@Cj~@C$tT@Cj~@D" I^@Cj~@DH@Cj~@D m@6!.@6@4n@4+ @4?@4`A7L@4- @3䎊r@3b<64@3䎊r@3`oiDg8@3䎊r@3]%?Y͍_?LS{?{?@p?OC?yW?1j?Q/J?.cE:"^?,ў?%L$? D?],mg@@@@@,@(???????wX?YĀ?p,W|'?~٥~@%"@x@xSt@x@w%@x@vFs@x@wRC4@`A7@`A7@`A7@벻@`A7@&@`A7@簳@`A7@`@`A7@/#K$@4 ]ce@4 åH@0 I^5@0sC@0y7KƧ@0zkC@/b~@/yR4@/b~@/+ B@/b~@/x5?|h2:?f?1z?JJ0?jfĀ?>,?}@TΥ?ZNZSB?= :?AE?̶e#?fQ:?F?ZSX?Ψ,UiW??m_?UC5}&@?47h@򁆹?8Ò?qOD?7pú?Z-@mF@@(@CB@(@O@(@Vx@(@Kբ@(@&{@(@P_ @\(@=@\(@BM@\(@Ca@\(@{@\(@X@\(@1`W@8>6z@8&mk@35S@35 @2]V@2[I6$@1n_o @1m@1n_o @1mAq@1n_o @1lЇύ?`^zT?dN?8C)*?w?r? +`?S?1?N7?GvQ?_;? Zr ?FjmY?V&?Nu?2@غ ?ZCM?m~MU?3T?Gg@@@"@*@8@4??????Hk.?F~?(~Դ@YI%@d_?_bD?K}T?-f;?2S1*@mf@@bM@>@bM@@bM@793@bM@L(@bM@QOMo<@bM@'@bƧ@b3334@bƧ@b @ZT@bƧ@bS'f@bƧ@abT +Mh@bƧ@bX@bƧ@b)@9H@9y@@3S@4 +OF@3v-@3/@2xF^@2r<[@2xF^@2ʬ@2xF^@2\s4?eM?Zi6&?v:?v]J?_v?1?m?(?s+\?)CH?R^ ?O *ѥ?ch0??Xj?wXPjD8b@@I^5@r Ĝ@I^5@Fs@I^5@O;e@I^5@1@I^5@2a|@I^5@iDg8@7Kƨ@\)@7Kƨ@S&@7Kƨ@\N@7Kƨ@Ov@7Kƨ@0 @7Kƨ@'RTa@8쿱[W@8׍O;d@5+ J@5?@4tj~@4hۋq@4@4˒:)@4@44J@4@4?qv?i1[?>(lQ ?-?V?}Tv@@@@@*@*???????@?p|;?a~d?c@2$4@34-@RФ?~US"?B\_[?҃ȸ?O"G@gp\R@@jx@<=p@v ?yÅ/?xtbrG?BͶ+?E釋_@j.y@@5\)@5$@5\)@:Q@5\)@:6@5\)@:G@5\)@:?@5\)@9"@ow@ow@ow@oiDg8@ow@o{J#@ow@mhr@ow@nH@ow@mw1@3H@3H@1+ I@1 ԕ*@1Z~"@1[)^ @1!.I@1+ I@1!.I@1lC@1!.I@1 k?|O?E?TS?G?Xe? µ?| ?io??6)}?A?B8?u@>N ?2]7?ZaQ?^ a?&I?v> @@@@@,@&???????Sr5I^ ?9R;?6 pdv@8Q֎@n\?Y +@5D?;_\|T?: ?]L/N@fT@@U +=@UbM@U +=@Um@U +=@UN;@U +=@UiC@U +=@U{@U +=@UbM@!Stj@!Stj@!Stj@!S*0U@!Stj@!Sg@!Stj@!T!-w@!Stj@!R䎊r@!Stj@!S&@2=:@2=V@.\j~"@.\ߤ?@.x@.S@,QN;6@,P`A8@,QN;6@,P'RU@,QN;6@,P +=r?^Dw'??=?Kh?ƠJ-M?\7?6J?bM_x?›?ܿ?wxR?+!?]#O?cPQ?.x?|׿pZ?hB^?pk Y?@@@@@,@*??????D<?Y҆D?. a r`@U%_1@!St?*k9q&?=_"?PYfL?rrj.@sѬ@@t@V@t@/@t@ěT@t@ĨT@t@S@t@t@/_;dZ@/R ě@/_;dZ@/_@/_;dZ@/`- @/_;dZ@/^ߤ?@/_;dZ@/_|h@/_;dZ@/_ح@5-v@5!TɅp@05S@06$/@0tj~@0wk@.V@.W +=p@.V@.W>6z@.V@.WXf?ʎa]?Čۨ1A?"?q@v?E{?2I/?W$B?j%Ra?['?; $?M?{L բD?![?3;?Me_?͓E'?B ?f_Ԋ@@@@@*@*??????U*B[@y"@zC\@y"@yrGE9@2*0U2b@2*0U2b@."`A@.c @-1&x@-/V@-@-|hs@-@-|hs@-@-vȴ:?^XN?Čۨ1A?,fC6?_? g?{@Ctj@CcO@Ctj@C+Z@"@İ@"@s@"@@"@m@"@;K@"@v@7|Q@7*`@3+@31 F@2K"`B@2JoF'@1Ǡ k@1LJ}@1Ǡ k@10H@1Ǡ k@1>c?'Z]&?V#.?B-?V?*^@?]?~Ov_ح?p`Hc? E>?WWM@??ZW?57E?6~A??5q?2 ?&I?Rv@@@@@*@(??????B?>L@?Ǧ O?-!K-@8 6@1z!?.`l?NxݨB\@ 2-V@ x@ 2-V@ @E@ 2-V@ 3Mj@ 2-V@ 1m@ 2-V@ Qhr!@ 2-V@ 7Xd@804m8@7lC@1ěT@1ڹY@0"`B@0 k@0L[W?@0!N;5@0L[W?@0C,@0L[W?@0x?M0?4Ӌ?^?ڈ৑? ?) o*?1 ?.M?D?2}?ZC:;?;/S?$c*?ל?}X?OJI-?TI?x@@@@@,@,???????k?Q?=P'?跒 @ň]>@ 8l2?dS2?S ?:U?,̝b@oF@@1R@1/@1R@1t9Xb@1R@1P}@1R@2?@1R.@1R.@"XbM@"dZ@"XbM@"F$/@"XbM@"E@"XbM@"zC\@"XbM.@"XbM.@74m8@7C@5pěT@5TD@4tj@4aN;6@4}ce@4i@4}ce.NC,@4}ce.NC,?ȉak?ma?߹e/?L@8I@8?3a=?4i?ō26?U @8S@8?Z?gz?[K-$I?'|V@8 @8 @@@@????@ݶE@ݶE@ݶE@ݶa@ݶE@ݶC@ݶE@ݷe@ݶE@ݴ9Xb@ݶE@ݵ '@@@@'RTa@@$tT@@hۋ@@H˒@@b}@4=:@4=B@0r Ĝ@0K]c@0@`A7@0AA [@/L/{K@/1@/L/{K@/S@/L/{K@/8YJ?}ѿ,?Čۨ1A?O%c?ƠJ-M?#6_?ʟ?| ?j%Ra?:?; $?=d^?U3p?2Y0?3I#i?٤?Gϵ'? Ğ?fW@@@@@*@*??????.UQ 9?3?OZ@ݵݝ +@/?SXj'9?9(p`?C\?z?7=^9?.8 +B?6P?9o?m!?sMQ(?7zE?f$x@@@@@*@*??????? a@Ms?B +M?2@PPrR@/a6kj?a02?SEZ?DAĵ?l]@hf%^@@ ]/@ ]/@ ]/@ \?@ ]/@ UXy?@ ]/@ I^@ ]/@ CZ@ ]/@ ?E@p9Xb@pj~@p9Xb@q@p9Xb@pG@p9Xb@p/@p9Xb@p"@p9Xb@p;dZ@3įO M@3ļj~@1ahr @1Y k~@1Ctj~@1:vȴ@0m8@0Fs@0m8@0A@0m8@08YJ?}ѿ,?+W?mGSq?btx=?\?iOL?| ?"T?_M? ?a]?⍄o? SF?:? +tM?aP?♊N?M\@@@@@,@*??????zHq?dX?; +D?55g4@ P:@pP?Z&.?Tۧ?Lk8?@ez;7@@pa@p]/@pa@p`X#@pa@p^@pa@pZu@pa@pg@pa@pa*l@z$@z$@z$@z :!1@z$@zb/@z$@zK/@z$@z5i@z$@zӜ@6qiC@6>` @2^5?}@2CG@1Ͳ-V@110@1B@5@14X,?" +?KZvΰ?>ַ4@sN@@kR.@kR@/iDg7@kR@8e+@kR@Em\@kR@CZ@kR@-jO@2~".@2~"@4sh@2~"@45sh@2~"@3^5?}@2~"@3{@2~"@20 @9I_o.>@4 ě@3ix@3~"@2Ft@25sh@1C@25sh@1쿱\@25sh@1-V@8J?2yH?X M?1?l\LW?x@8J?՚썊?Ӣs?С?D?X1@8p? F2?ڬ??/я?24 +@@@@,@?????@_"@_"`@_"@_@_"@_/V@_"@_Ov_@_"@_Q@_"@_@ ě@O@ ě@@ ě@ xG@ ě@@ ě@fA@ ě@_o @7 xF@7.H@3G+@3A.H@2`A7@2|"h ԕ@1&@1\@1&@1/w@1&@1p:~?Y͍_? e?GM?^t -a?l!-w?iOL?3a=?{c?R?dXM?b| W?9x]e?hE?D>S9?m~Z_s,?[?OO ?q' +B@@@@@*@*??????f]ZM۠?>`?Aۂou@_r &@7)?`0ֈB?aI1_?$C?A!Ť@i{ܕ@@ӍO;d@ӏ;dZ@ӍO;d@ӗz@ӍO;d@ӀPy@ӍO;d@z(@ӍO;d@Ӆ[@ӍO;d@ӉϹUL@L@K/kH@L@L@L@T›@L@90@L@F g@L@IQJ@6,<@6 c{Mj@2sS@2oFMxu@2t@189@2!:S@2" Ue @2!:S@25T>@2!:S@21>xh ?~=?S7<@nh@cx6@@Q@;dZ@Q@$t@Q@@Q@C@Q@&J@Q@S&@{x@{^5?}@{x@{'RTb@{x@{䎊r@{x@{@{x@{:~@{x@{@8g l@8}H@4+@4͞@3-V@3PH@3+xF^@3 +=q@3+xF^@38eO@3+xF^@3A4J?3a=?|1?~#?㬱_?$?MǏr?X?44]t?Fy +? g?WT?`1`W?˅W?;!?M3 ? Ӥ?:? g@@@@@$@(??????\d^?dt?v';@ ԅ}@{zd?8]?sU?&@68o@k/@@DT@D/@DT@F@DT@DU@DT@E@DT@CA \@DT@DM:@~#@=p@~#@o@~#@~#@~#@o@~#@﫹~(@~#@P}@3,<@3af@.{"`A@.zc @-NO;@-NVu@,@,~BZc @,@,}!.H@,@,}IQ?|O?`?*"AaI?뤽??b\?F0?|O? aҹz?|,!?Y?IM?90?oܧ?2a? SF?!ˠ*(?j? +t@@@@@$@&??????G?1[:?(36k?YX@D&@t?H캲d?1d?L Y"?p}R@fe@@zH@+ J@zH@?@zH@|@zH@C@zH@q @zH@c @J$@Jhr!@J$@J[@J$@J*0@J$@J{@J$@J ԕ@J$@J6z@7䎊@7Mj@3I^5?@3TɅ@2Ctj~@2>qi@1:S@1Ⴉ @1:S@1d8@1:S@1_p?q!U? +ܦ%?Z-l?r*?i]i??% ?6S{?EψC?} ?pPȻ?p?AK\ ?nBT?Śn??NVC&?aʕTI@@@@@$@,???????; \/)?e1t ?Mw>e@@Jg?xAsR*?k#?^k?Ν@lY@@6E@EQ@6E@Q@6E@)9Z@6E@D2W@6E@4f@6E@9x@F@ #I+@F@@F@ *@F@%#@F@ -@F@p@7S&@7 @2ěT@27m>p@17KƧ@1%2^@1:,<@14<{@1:,<@17݂bp`@1:,<@16V)eS?nDyB?k_?E??tk?\U?CDb??'2?dw?X`&?)P?w#?6 -?q??cQ?q~y?Zv'@@"@"@@7@3??????Uܛ?QǺ4?F3v?Ez@=g @z?iB RM?[u ;$?MhC?6ړ@nt@@gF@gv@gF@g k@gF@g\(@gF@gα2@gF@gߤ?@gF@g @[V@[-@[V@[ag@[V@[hr!@[V@[҈p@[V@\ +L/@[V@\ oi@6V,<@6TɅoi@3 I^@3Q@3KƧ@3\(@3._o @3@ (@3._o @3'rH@3._o @3#A [?Br?܄ (?reE?:Z2b?vNh/?lg|*?| ?8$ +"?cS?E:PXd?Op?lӪ<?DJ~_?[Ci?M3 ?q+U?_M]D?`@@@@@*@"??????pcU*t?wI?P]?A]<@g@[gv?l?a9?c?Ǘ?U@eJ(@@nP@hr@nP@~(@nP@B&I@nP@C@nP@3*0U@nP@,1&@^x@^`A@^x@^{lD@^x@^D/@^x@^c@^x@^wkQ@^x@^?@7L]ce@7A@4+ I@4 '@3-@4 |@3&YJ@2%2@3&YJ@3 k@3&YJ@3zH?E?&Ը?㰱V?$? s:?ixU3?=fA:?r6 ?çh]?\B9?ĉOi?F}$ ?`yz|a@w[@^yk'?O?y>~e?cZ?wœ@a@@zݲ-V@zE@zݲ-V@z5?|@zݲ-V@zޞ@zݲ-V@z (@zݲ-V@zPH@zݲ-V@zߤ@`A@`A@`A@X@`A@&x@`A@_@`A@oiDg@`A@4L@2zqiC@2zd7@.=-V@.=ce@-]E@-^ѷY@-b~@-=b@-b~@-JE@-b~@-@?^Dw'?[e? 9?*WF?bM_x?%F?NJ?6)}? f?N`?cPQ?l?8*?$H??ˢL1@@@@@"@??????Mf">?+LʥP?0 +>@z@~@?:G3>?>wk?pg{u?t6ҵM@sz,@@=p@˅R@=p@C@=p@]c@=p@˹~'@=p@'0@=p@C,@r Ĝ@sE@r Ĝ@ufA@r Ĝ@u!@r Ĝ@tZ@r Ĝ@t,<@r Ĝ@u!@6H@6ߗ$tS@3+ I@39Xb@2~Vu@2hۋ@1D*@1_G@1D*@1rGF@1D*@1#?Y͍_?p~v]? +NA3?v" ?ҧ?1a?)T?jt?t(??uv@#h\@#h٘9@#h\@#h8@H33333@H33333@H33333@H4fd@H33333@H6@H33333@H/ta@H33333@H,A@H33333@H.v@1H@1\N<@,{"`A@,u; $@,dZ@,-҄@+@+̈́@+@+Ef@+@+:q?^P!?y@?=uF?|?%V772?͎$?bMn?kcc??dc?E?Y|?AЊ?l,?fet1?}]}?u?䲧MJ?yu? )`@@(@(@*@6@5??????Q9n\6_?3[ɾ?5m y@#i=@H.8\?BeZIx?D?W.qm?w O`@sm@@@WH@@@@q@@ڗ@@th@@D@2,C@2,@2,C@23@2,C@2.nU@2,C@2.3@2,C@2,R@2,C@2/g@4>6z@4^+@1 ě@1|,7\d@0j~@0t@0OO M@0C@0OO M@0E8@0OO M@0J4O(?| V?{X`(b?"z?nPE?G(M ?&>7?| V?[A?FW?K.w?`0l?Q_{?K??7q?sw"?sQ? +؇?O@@@@@4@6???????V [??#p?Pp.?0ӎ+@͗@2-OW?oK?P=vȕ)?8?λ@eu/ɂO@@E@E@E@ax@E@\0@E@P@E@/+@E@9-@`C@`Ƨ@`C@`ɓy@`C@` @`C@`HOT@`C@`˜ӌ@`C@`@4v@4L?4@0hr @0u%F +@0-@0@/@0@/@0@/@09h?}@TΥ?^K?=|x;?FB ??^8?}@TΥ? {?p‹?-(?M$r?kƊ?;X8?b@?OX?QBn?Jƒ?<@@&@*@ @8@7??????,ɐ>(k?3zk"N?=۬@iS~@`r?Sa=n?1 wJ-@o@s@o@~J@ ě@&fffg@ ě@#1@ ě@!Cc;@ ě@.ԧ'@ ě@'y@ ě@&mT2@7]ce@7f@3+@3F:`@2KƧ@2^P:}@2m8@2'@2m8@2r@2m8@2Ohh?eM?؃ ?cer`?.?5'š?;  ?uq?kʤ?hajO=?=k?S ?# +з?lN#?8?KWQ?sX?!-C?F= 1@@$@$@(@9@5??????L?*6(?D}s%?R.@;ty@(M?cu?sjhY?ƽCJ0?1I;@jϔ@@g-@}/@g-@m(@g-@n.3@g-@nMj@g-@d7@g-@fYJ@`A@\(@`A@F]@`A@ݗ*@`A@%F +@`A@ @`A@s@5N쿱[X@5A @2G+@2P ě@1PA7K@1TSMj@10@16YJ@10@10*0V@10@1/vȴ:?jqp?bDҼ*?#}i?Jʮ?oNŒ+?=W?)T? /ّ?f? &?x9ξO? # +?8x?˛͇q?`x?GZ?Rv?@@@@@*@*??????q"N!?J0?\R?@ ]@j!@ ?n328ow?bū{?`* ?4@q@@Ƨ@V@Ƨ@ը@Ƨ@2@Ƨ@߫U@Ƨ@7ήm@Ƨ@@$7Kƨ@$JH@$7Kƨ@$7d@$7Kƨ@$ y@$7Kƨ@$lL@$7Kƨ@$+@7쿱[X@7 "<5@3; I^@34F}@2lj~#@2gIa@1_o @2 o@1_o @1Hjf@1_o @1ny?(?3F?d?.{>?Y3B?J"?3<' ?9EC?$W??OR^?j -?$PUdG?ԦO?|~!?aDr?A`l?Ü@@$@@,@8@7??????;I0`?z͂?7_;?E5@ͪ~@$ı|?W ?fȅ>A?Dл?ɮV0~@gL~@@t@ +=r@t@?@t@e@t@8Y@t@\)@t@1@^Q@^S@^Q@^u%F @^Q@^ڻ@^Q@^@^Q@]}H@^Q@]˒:+@3`D@3_Vϫ@/tj~@/@/wO;d@/vE@.C\@.e+`@.C\@.D@.C\@.A?|O?:L +?B 'nr?998?q f?s[z?|O?&uE@?T֩E?R? E!?҃~/[?8*?Q?/X?3_?՘]G?P\@@@@@&@(??????m8ʳr1?`-l?`AtF@ +W@]_?~qA|y?} @ai@6+D@dQ#~@@7K.@7K@Τ?@7K@ίrGD@7K@Β@7K@>BZ@7K.@\(.@\(@r@\(@@\(@k~@\(@څ@\(.@8s.>@4 I^5@4 u!@2j~#@3:~@2L[W?@2gsPH@2L[W?@2Ahr @2L[W?.NC,@8J?Z#'f?a6H?E2#?v@@8@8J?HD?`)Ԥ??{%? aK@8@8p?Em??YVϪ?G]Ja@8 @@@@*????@O;@+@O;@+j@O;@tj@O;@bM@O;@a@O;@!.@7Kƨ@ȴ9X@7Kƨ@Ȍ@7Kƨ@7Kƨ@7Kƨ@Q@7Kƨ@˒:@7Kƨ@Xy=@5p4m8@5o͞@/tj@/tj@-x@-Fs@+At@+v@+At@+͞@+At@+?Ol?m0?(?eU!?g?>?Ol?›?qF?6)}?إ<(?PS2K?٤? +? SF?xqC?pk Y?b/bJ@@@@@*@&???????ұ?*H*??:B@"@ȱ?8V\?;II>?{l~l?0">obLJ?Ce9y?G`@@رm:@9Z?a}qT?e<_%n ?ϻ^4?tID@dFç@@lC@1&z@lC@x@lC@^5?@lC@x@lC@s@lC@㕁&@&x@hr"@&x@m]@&x@@&x@@N@&x@3@&x@4m@4|Q@4ѷX@2r Ĝ@2KƧ@297KƧ@27-@1:S@1ߤ?@1:S@1H@1:S@1cA ?|O?4$?TS?l?/m{?mׁe\?|O?[u?-8?:u. ?JL\?:i?],m,?)F@=@?16?V5z?IT?)L? uEl9@f@@;dZ@|h@;dZ@ +JM@;dZ@tS@;dZ@@;dZ@Fs@;dZ@4֡@4zH@4zH@4zH@5!.H@4zH@5J@4zH@5 ~($ @4zH@41&@4zH@5%@3ks@3k/V@2!hr @2$/@1Ft@16_ح@1Y~($ @1<64@1Y~($ @16z@5Q@1xr Ĝ@1wrG@1U`A7L@1S ҈@0kxF^@0i*0U2b@0kxF^@0jڹY@0kxF^@0jS&?|O?]Û?>\?<ݝ?Pa#2{?4¼?,6D>@ԡP@?T|?L!?0眭?._M@gS1r@@ݩl@ݞQ@ݩl@ݭ@ݩl@ݬ@ݩl@ݬ~($ @ݩl@ݣS@ݩl@ݤe@-V@)l@-V@;dZ@-V@b}@-V@"wk@-V@@-V@rGE9@8,<@8)^@2.5?|@21$/@1_-V@1`:~@0u@0@4@0u@0nP@0u@0?Br?6 '8?&?? +?<_+fj?mׁe\?% ?p RN%?ܿ?,~[?pPȻ? Ӻ^?fr[?p51?6E?q+U?4\ɵ?&f@@@@@*@(???????Z?Ao4;u!?Zb?5 ?P@@ݤ<$@$\?z95?mYޮ?H _?_@j@kOm@@p@p@p@p|@p@p>B[@p@pe+@p@p@p@p k@-@V@-@&x@-@1@-@w@-@ߤ?@-@A@6zqiC@6y_o@0° ě@0䎊q@/|1&@/|쿱\@.73@.$tS@.73@.$tS@.73@.>6z?)T?Čۨ1A?=?Kh?䆀{6?/`?aX?}ѿ,? ,C?)_?e[|(?֧QD?lINՄ?S[D?򯞼??+ ?j?M684@@@@@&@(???????1. ??f?$i=Az?{ha@p@Ms_f?C*2?=w9&?;#?j×@iw@@) +=.@) +=.@) +=.@) +=.@) +=.@) +=.@XbN.@XbN.@XbN.@XbN.@XbN.@XbN.@7쿱[X.>@4{ I^.Mm@4"-V.Qn@3ush.NC,@3ush.NC,@3ush.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @@@@n@@N@@n.@@b|@@~"@2 Ĝ@2-V@2 Ĝ@2:){@2 Ĝ@2<6@2 Ĝ@3@2 Ĝ@2-V@2 Ĝ@4@5,<@5R<6@0hr@0͊ڹZ@/O;d@/y=d@0 +0U2a|@0 +S&@0 +0U2a|@0 +0 @0 +0U2a|@0 +fB?}ѿ,?Qd?\H{gX?#t?u?}?}ѿ,?uie?{d?Hn?M?M\ٓ@??Q?֘>D?$H?7?v> @@@@@$@??????9ƀ?2{-Wp?2:nGg?'N\@I@2(?Rei&8U?GpG0} ?`An ? +"@g4ey@@^Q@^"@^Q@\wkQ@^Q@]/@^Q@` k@^Q@`4m@^Q@_[W@@ A7L@5?|@ A7L@1'@ A7L@\N@ A7L@iB@ A7L@ 'RTa@ A7L@o@7T xF@7RC,@2ԛS@2 @17KƧ@1@1QiB@1QX@1QiB@1P6@1QiB@1PU2a|?=fA:?b =??Њ?ԁ?=W? ?аl?Z?jX? 5Y?T_?# Y?H? + l]?˴C? +r?՘]G@@@@@,@,???????)ʬ{?4?1uj~? r@_0@W?O(?Bm??]s? ~@j6IM#3@@4j~@ȴ9W@4j~@5?|@4j~@Ft@4j~@lC@4j~@_ح@4j~@tO @{lD@}E@{lD@k҉@{lD@^($ x@{lD@~҈p@{lD@X73@{lD@i7Kƨ@8*0U2b@8_ح@3sS@34m@2-@2rM@2!.I@2-@2!.I@2*g +@2!.I@23PH?g;+t?[_P? n+?bfg??,af2 ?sD?A#(?n;I ?ϗX? {?@.??}(2?z?z."?O̙?}Tv?$@@@@@,@,???????22sɜ? PP?d#~87@6`@x?ZObs?xȐ9%?3,59?B\@_n@@\1'.@\1'@8bM@\1'@>"@\1'@1N;6@\1'@?vȵ@\1'@F&@nzH.@nzH@i7Kƨ@nzH@gE85@nzH@gݗ@nzH@nT@nzH@oA@9ks.>@4 I^@4l!.@3KƧ@3TɅ@2:S@2C,@2:S@2u&@2:S@2ۅQ@8J?V,M?Р'?ݑl??O<?WD̷ @8J? {?tP*?R6U?uG<?lӪ<@8p?;WZ?>{~?E^u?E݋N?:@@@@,@(?????@S.@S@041@S@9}@S@@S@"@S@å@Zx.@Zx@ZH%@Zx@Zc@Zx@[5/@Zx@Z$'6@Zx@ZM>R@9:qiC.>@4TS@4_|푀@3`A@3CFO4@2&@24@2&@2^!c3@2&@2<+@8J?7?Vo?E?ߜڪA?>xn)@8J?_ꍴ#?1?xR$;Xy?Qj{?p]@8p?2a??O2??ZP@"@ @@2@1?????@!^5?|@!lI^5@!^5?|@!Iᰉ@!^5?|@!V+ @!^5?|@!b7@!^5?|@!Y"@!^5?|@![W>6@ @ܬ1'@ @ !.@ @`A6@ @ +g@ @ +qi@ @,@8 ]ce@7u"@3ěT@3'RT`@2-V@2ݗ@2O M@2 @2O M@2@4n@2O M@2*0U2?1]?`x@rTPw@@b`B@N@b`B@eQ@b`B@]+l@b`B@ezxl"@b`B@e@b`B@eY@š@ܡf@š@@š@Xf@š@R<@š@o@š@+6@7YJ@7RcH@3 ě@3z1'@2j~#@2Ov_خ@1ce@1 '@1ce@1/@1ce@1WK?uCb?:}T?RsW?㬱_?>&?l8??O?Qrz?DH?]? ? +lqbY?/#?*3?Җ(?V'f?!]@@@@@$@.???????jWe6-)?`$7 +?Yw@bz *@S?v9?̟"I?f?ó@oܪx@@dvȴ9X@dwKƧ@dvȴ9X@dz@dvȴ9X@dS@dvȴ9X@dDAy@dvȴ9X@dt]X@dvȴ9X@ds5@fffff@f,=@fffff@f..@fffff@fD@fffff@V&1@fffff@fSB@fffff@e=@4V,<@4U"@/`A@/%W@/1&y@/v@.kjf@.yC @.kjf@.k%@.kjf@.jEi{?gQ?*?Mք?mO?O࡙2?9H[?|B &? +w\o?Pqlg?Vch?IɻBa?S D?e?޸eq? KK?ͩ&?Jƒ?\3@@$@&@"@5@7???????K0?Sfy?^c@dy<@c);?sB'?>,C?P,@ Q@geD>5@@S@o@S@J@S@@S@1@S@]6j@S@U@al@a_@al@a ě@al@a^5?}@al@a)_@al@a/=@al@aM @7G>6z@7-i~U@2|hr@2 +͞&@1{Ƨ@1\(@0m8@0bM@0m8@0A"j@0m8@07'L?\l6?1?w4f?;6? _?'H? 1Ӡ?FHN?/>?cS?JY&?߭)?϶ ?XԠ#{?;aِ?=?y +5G?jc@@@@@.@*???????U@6?0nD?Ur;?:؎T^@ױ@ah?v(M$?\D?!C܄?FwN@h@@C.@C@ěS@C@ce@C@o@C.@C.@+ I.@+ I@ȴ9X@+ I@S@+ I@{J#9@+ I.@+ I.@3D.>@0f+ J@.5Xy=@/SE@-L/{@.#9@,@.#9.NC,@.#9.NC,@8J?D ?ub5?dҦ 3@8I@8@8J?֤}?h?:h@8S@8@8p?8hz=?+-/?fK/@8 @8 @@@???@aW +=p@aTj~@aW +=p@axl"h @aW +=p@a|N<@aW +=p@acA \@aW +=p@aN}Vl@aW +=p@aYY@Cn@L1&@Cn@U$@Cn@ES&@Cn@Z6@Cn@@4@Cn@ /{I@7>6z@7A@3f+ J@3Weں@2"@2%1@1𖻘@1 xF@1𖻘@1Vl!@1𖻘@1ȴ9Xc??fDb? +ڹ `?C>?vge7@s0{@@ Ƨ@ 7Kƨ@ Ƨ@b}@ Ƨ@s@ Ƨ@>6z@ Ƨ.@ Ƨ.@2(@2`A@2(@29|@2(@21N;@2(@2oiD@2(.@2(.@85S&@8BZc@4 ě@4&@4'KƧ@4N$t@3[W?@3 @3[W?.NC,@3[W?.NC,?}ѿ,? cs?i[?´K + @8I@8?3a=?®?vY'?MV<@8S@8?Tc?C SG?Q?w-@8 @8 @@@@????@3tj@31@3tj@3!-w@3tj@3E@3tj@3l!@3tj@3fA@3tj@3N;@ 7Kƨ@9X@ 7Kƨ@Q@ 7Kƨ@zH@ 7Kƨ@ +o@ 7Kƨ@ ~($ @ 7Kƨ@$ x@7]ce@7"`B@3ěT@36@3>Vu@3?b}V@2Ǡ k@2ƍ@2Ǡ k@2W>6z@2Ǡ k@2ʌL`? ?sI?~"?Att?r {#&?uk=?% ?&O?%c~?_3\?Gz}Y?'qTrQ?GEq?.]L?}??$jB? 3@@@@@*@*??????X}U?'?(^~y?CJ׿@3Gڣ@ I?J?aR?ր?:,@jRF7q@ @S@$/@S@^5?}@S@@S@w@S@@S@@4`A7L@4a7K@4`A7L@4De@4`A7L@4R:)z@4`A7L@4KP|@4`A7L@47+j@4`A7L@4Cw@7H@7@2+@2tJL@1n"@1^$t@1@5@0hr@1@5@0b@1@5@0!.H?F^S?VӋ?|?8~?6@G^?^%VN?Y͍_?d$?AFnDk?yCW?lj?D4f?y\?z?],V??_u?aʕTI@@@@@,@"???????tFt|r?g,?Tݫ'y@􎋂9@4N#'6?)"KX?x `|? -1?ڽH@k3~0@ +@{@{hr"@{@{@{@{@{@{{@{@{U2a|@{@{_@$@\)@$@%F +@$@@$@Y~@$@$@$@$@6:qiC@6;s@2&+ J@2&}Vl@0"`@0#9@00U2a|@0D@00U2a|@06D@00U2a|@00U2a|?}ѿ,?4$?"?2UT?oNŒ+?=?2}?#maЀ?ܿ?uX? ?!U?{? SF?3I#i?~/O?˴C?ad|?7@@@@@,@,?????? p"?,:bE?c&B@{d0@h?L4A}X??t??ߑ;@g4_@ @$/@|h@$/@ *@$/@F +L@$/@~҈p@$/@u?|@$/@/W@+@;dZ@+@Z@+@'@+@$tS@+@Z@+@ )@7`D@7e!.@3J^5?|@36&I@2-@2u@1m8@1.H@1m8@1-V@1m8@1"??Cq?wm?eB?- ?JO?% ?Hk#?cu%+?]~ɺ@?uD?j\SD? uf?1j?Ƌ?'{>?\'jK?sra@@@@@,@(??????&_U~; ?] HX?\?@~6 @?z4= ?jJ?8*@hp@f"p@ @wKƧ@w +=p@wKƧ@wKƧ@wKƧ@w(@wKƧ@x74@wKƧ@vȴ9X@wKƧ@u!@,C@,@,C@-qu@,C@+a@,C@.p:@,C@-8@,C@,@2O M@2O M@05?|@0Vt@/1&@/IQ@0@4@0nO@0@4@0䎊q@0@4@0\(?`&x?$??vHn&?\7?װ*w?bV,?La? +\?Hn?UBi?ٶm?e@'? +?٤? mmsi?ˢL1? +t@@@@@,@(??????O|ɵFV-x:?!{:? =@w@-oG?0z;m?01"?Y|?V$ +@s3I.@ @-V.@-V.@-V.@-V.@-V.@-V.@hr.@hr.@hr.@hr.@hr.@hr.@9G>6z.>@5+ .Mm@4ȓtj.Qn@3.NC,@3.NC,@3.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @b.@b@cU=@b@c]c@b@dQ @b@d_o@b@ds@C.@C@`A7@C@1@C@$ x@C@/@C@5X@9.>@5S@5 W>6z@4ttj@3:)y@3&@3?\(@3&@3S%2@3&@3;C%@8J?#M+l?-gi?5?S?Qڏ@4 +^5?|.Mm@3j~.Qn@3.NC,@3.NC,@3.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @@3333@@̔x@@İ@@Ѝ@@h4@@HW@.zH@V+ @.zH@ Ns)@.zH@'_@.zH@1i{@.zH@9[?@.zH@=n@7:@7%ضF@3 ě@3~eN3@3R`A@3QPf@2 k@26QT@2 k@22@2 k@2]')R?wvHf?'$?i?hRr?ML ?$R?+Y?;}?; 3=;?/eGڭ?vY d?@^?j%?W?;]+?QնN?Y*^?T=sA?#"@@$@&@,@9@9??????S@1DP +r +?u($?ccNk@ϰ@:h?5kH?zɧDb1?iE z'T?ä@nyE@@C@8Q@C@&H@C@A@C@'/@C@\@C@qu@p +@ϝ-@p +@Z@p +@Y@p +@-w1@p +@?@p +@Mj@7e!.@6JL@2@274@2PA7K@29@1ce@1!.H@1ce@1cA @1ce@1 k?sg;?sp?hb?lsC^?<5D|? t??xDž?6S{?fh?>}?+?U-nܿ?((?*Mis?$?Hh'$? # ?D d}@@@@@,@,???????Ȓ| }?x?}ha@ٗ5@-Ī,?.?Pt?ϣM9?γ]@o4I@@\o-@\r@\o-@\\|@\o-@\L@\o-@\' l@\o-.@\o-.@-V@tj@-V@Io@-V@K5 =@-V@qȫ@-V.@-V.@6qiC@6bŞƊ@2S@3#Q@1-@19"@1z,<@1BSb@1z,<.NC,@1z,<.NC,?d?q$?g1?;9Υ@8I@8?}@TΥ?L?..?ur @8S@8?JA0?n?60<)y ?9ºC@8 @8 @@,@(@,????@H7K@H\(@H7K@H@@H7K@H7'@H7K@HA@H7K@H7@H7K@H|,@A7L@;dZ@A7L@te\@A7L@⊚@A7L@c@A7L@gB+@A7L@ 8@2@2hr@/"`A@/ R  @.cnP@._x@-oi@-~G1<@-oi@-9@-oi@-Xeuc?^m d?BV?ǧE1Y? τ?Ax?!d0?b^57K?ĭv?4i:?؈?aCN?B?q ?r?׷>?nom?^?@@&@,@*@<@4???????r??{WL@?cC?k)@H.a@ \?rJTbt?zozr?ҪȚ(Y?E@qa1o@@vȴ@ @vȴ@ A7L@vȴ@!-w1@vȴ@ 4m@vȴ@6z@vȴ@5?|@dZ@dZ@dZ@"`@dZ@q@dZ@dZ@dZ@5W@dZ@S@.[J#9@.[J#9@+-@+Fs@,E@,@,@,ߤ?@,@,"@,@,U=?^Dw'?{j?m?Rw#z?6r In?{@O@&3@O@c$h@O@@8?@8D=@4 ě@4ؤ/@44tj@48:4@2ce@2t@2ce@2@2ce@3aU4?\l6?|?G"e?%Ӏ1?͏!?_!6]?lUIr?:?! h?J~?;QC?dp?Z+}?"/k?4LJ?2c%C?2? /@@(@@&@9@6???????8s?V-\}?Q0+ +iQ?RJo2@!@l?p8q?pV?Q?]& :@ky*@@߀n.@߀n@{@߀n@߫@@߀n@q(@߀n@wKt@߀n@oqr@S$/.@S$/@Sf@S$/@S+@S$/@S1@S$/@S&@S$/@S@9T xF.>@5Lhr@5klX3@4Ft@4C{WgÅ@3䎊r@3@3䎊r@37w@3䎊r@3ЃC@8J?Iܟ? X??D>?-W@8J?)ۣ?)Ŋ?X_uSZ?5C?R/@8p?eta?Ǵi?PP?% ? +c@(@"@@3@,?????@E@ł<4@E@j1@E@@E@/R@E@"[@E@H@ew@ed&X@ew@f q@ew@ef xK@ew@fL8@ew@ffQ3@ew@fW@8@8f7n$S@3+@3w2ٲ@3 -V@2P^@2 k@2/3@2 k@2 Y@2 k@2*if??'ܢ?*?5$Ź?BI%?Bg@p??k<8?»큞?6܄a?S?9 <_?Q?iW?d? @?[-H?Snބ?'Y@@(@*@(@9@8??????{?όH?to]?pf@ɒ@f - ?:? /DPv1?oCW??ž@iu @@k I@f@k I.@k I.@k I.@k I.@k I.@ 3E@ &x@ 3E.@ 3E.@ 3E.@ 3E.@ 3E.@8L]ce@8OVϫ@4+ .Mm@4A7K.Qn@4Eu.NC,@4Eu.NC,@4Eu.NC,?}@8#@8:@8 >+@8I@8?ʎa]@8@8i@8@8S@8?CK@8 *@8p@8@8 @8 @?@RU$@RJԭJ@RU$@Rb}V@RU$@R_ @RU$@Rae@RU$@R_V @RU$@Raǁ@`A@6@`A@_o@`A@ǮzG@`A@Ǻ)y@`A@ u@`A@iE@7hYJ@7ġ:@3 ě@3 =b@2W-@2]cA @1kxF^@1kQ@1kxF^@1l0 @1kxF^@1kl?}x?I}?ᘡ?O!mS +?Ê?69?91 |?j?p-?|nӿ?RA*?Ǝ@@@@@*@.???????v-Tv?TI?O\-@RVݯ@͵i=?tS?pCj9@?2"? @fL@@ѯw@Ѷȴ9X@ѯw@т7@ѯw@ш@ѯw@P*0@ѯw@с [@ѯw@rm^@Y+@^vȴ9@Y+@Nqj@Y+@VE@Y+@R:)z@Y+@JOv@Y+@UXy>@804m8@8/o@4c@4P +=p@3;Ƨ@3.m\@3!:S@3 k~@3!:S@3@3!:S@3 rGE?b?oK?yĪo]?,:? T.o?" ?g;+t?U +?00?$z¾6?vv?mɣ&Z?M~W`?-]?Pk"?k@{?9 ?3 D?IQ @@@@@,@*??????Dcg2?X_C?bU OP +@х"p@R?O3 ?{Hq8?L2N?Ȑ!@khw8@@ȃ%@ȉ^5?@ȃ%@aoh@ȃ%@W +=p@ȃ%@E85@ȃ%@ڹ@ȃ%@|@rn@rě@rn@q֡a@rn@r +E@rn@q҈p@rn@qԕ+@rn@qrGE9@7w@@7r I^6@3S@3U@2ȓtj@2qu!@2@2zG@2@2hr!@2@2;dZ?_pP1?T~=I?\=u?\N?(x/?Zj?us\?Q;v?6eI??MWe]{?_#@k&˙}@@o@ffff@o@$/@o@ݘ@o@7KƧ@o@ݗ@o@n@\(@[lE@\(@[J#9@\(@Y=b@\(@W+j@\(@YJ@\(@W$tS@7[~($@7\1&@3B ě@3F +L/@2tj@25Xy@1𖻘@1`A@1𖻘@1p:@1𖻘@1W?=fA:?sp?Q/ +?W0 ?GBm?1?|O?[ K0R??.? A?kj?Ϸ?"`?}Tz?WhQ?Tj?0&YEd@@@@@"@*???????N*?A?/|u@oN@Yfʍ?^Zd+?QP7,?Ӗ?10P"@iUq@ @@n@@n@@n@A@@n@Ae@@n@An.@@n@?b}@@n@?b~@!h\@!i7Kƨ@!h\@!h@!h\@!i@!h\@!h9X@!h\@!i^ @!h\@!i'RU@2?@2? @/tj@/y=b@.XF@.Y k~@-fL/{K@-fs@-fL/{K@-fs@-fL/{K@-f,\?إ<(?b-x?e@'?.x?2Y0??f_Ԋ?@@@@@*@*??????P@FB?: tD?5ӥ?;ds@@L# @!i.g?Dim?݉MD?gb7N?5)@sD @!@vȴ@5?|@vȴ@&@vȴ@@vȴ@@vȴ@T@vȴ@@_|h@_|h@_|h@_U=@_|h@_hۋ@_|h@_e@_|h@_TɅ@_|h@_3@5쿱[X@5҈p;@1?|h@1䎊@0t@0@/C\@/-@/C\@//V@/C\@/^?Ol??GM?[d?RXFf? d?}ѿ,?f?F^S? 5Y?mEB?ҥX[?],V?=d??!ˠ*(?ad|?*Z}@@@@@,@,???????X5(?DZY `?Oڥtt?3P|@\@_?o\9?Tl̳??S6?2}?4Kl?jhq9?GZ0e;?] + ?X?|O?Zk?ԕ]I?ą6 +?B ?|[z?|׿pY?4?+P?R *n?V^?HmEf@{?@p?vdPU?hr9l?^r׺?߭RT\@g3JYC@$@6H9X@6G,@6H9X@6FL/z@6H9X@6Jqi@6H9X@6G@6H9X@6)rG@6H9X@64@)d/@)b`B@)d/@) ᰉ@)d/@)YJ@)d/@(.@)d/@'U2a|@)d/@(F1@7O M@7Zc@3+@2ᰊ@2Htj@2ߤ?@23&@1t@23&@1u"@23&@1$/?Y͍_??np?CV? T?=%?)T?u(?7%O?p?%8? S?2Y0?P!p?UYC?0 ~??NZ@@@@@(@&??????pA?c'vp?'WPD@6F06@)B?Wd?\Sl ? qL?Xԝ4M@[N(@%@.vȴ9@.E@.vȴ9@.ߤ?@.vȴ9@.n@.vȴ9@.!-w2@.vȴ9@. (@.vȴ9@.,@u@ڟv@u@+j@u@v@u@֡a@u@z@u@u@5=:@5>t@1G+@1GO;d@0`A@0p:@/Bu%F +@/A.H@/Bu%F +@/B\(@/Bu%F +@/Be+? ?4$?"?5~pY5?,I ?CXs?Br?La?ԕ]I?Y? A?]#O?3Z\?˛͇q???ˢL1?7@@@@@*@*??????? 'PgW?$ѧ?* +F@.64@!hL?EG6:n?J c ?qN c?})@iU8$@&@x@1&y@x@'Q@x@!-w3@x@hی@x.@x@#x@xM@xffff@xM@x+j@xM@x @xM@x=p@xM.@xM@xĨT@8e!.@8ZfB@4?|h@4jn@4~Vu@48_F@3ޫ6z@3Mj@3ޫ6z.NC,@3ޫ6z@3҈p;?]?}>?99?Y3ۄ@8I?if}?]?lׁ?dj!"`?vr;?Xx??9cX?|b@?]&?䙣K?9[O??T,?UA|?B?ҕ)L?h| 8?!?Uf@@*@*@(@1@0??????O4p!?6is;>I?" W@M@?VM=Z?C /?@Q u?}꽴j@ff7b@(@|hs@9X@|hs@|j~@|hs@z^5?}@|hs@x}H@|hs@|64@|hs@w@m@/@m@䎊q@m@@m@g@m@@m@sh@8Y*0U2b@8?b}V@3ěT@3TɆ@3t@3 5Xy@2Y~($ @2\hr@2Y~($ @2Ye+a@2Y~($ @2X@?% ?3?פ?W0 ?q?I?~\?@C?v@b?3)10F?pPȻ?Cq?>'?㑏\?eI6?ۮetZ?/̽`?DV@@@@@&@,??????kq1^?L'(?Y3?G[Վ{.@z/t@&s?xS)fg?Vz?f?-j{?tof@qb 2j@)@r-V@w@r-V.@r-V.@r-V.@r-V.@r-V.@6B\(@62-V@6B\(.@6B\(.@6B\(.@6B\(.@6B\(.@6[~($@6aae@3+ .Mm@3j~#.Qn@3:S.NC,@3:S.NC,@3:S.NC,?Br@8#@8:@8 >+@8I@8?}ѿ,@8@8i@8@8S@8?;aِ@8 *@8p@8@8 @8 @?*@ dZ@ S@ dZ@ s@ dZ@ PH@ dZ@ U=@ dZ@[6@ dZ@ lC@M# +=q@M.V@M# +=q@M,@M# +=q@M*#9@M# +=q@M!n.@M# +=q@M%oiD@M# +=q@M8F]@7V,<@7V,<@4{ I^@4zc @46-@4%$/@3YJ@3NU@3YJ@3v_ح@3YJ@3nO??l?d?':?/cե?ĞS^ ?G *ǂ?rnc?6eI?ǧ?D6?w@2I^5?@2}H@1Ctj~@1D/@05sh@06L/{J@05sh@06?@05sh@06z@8J??jhq9?'$5?'ř ?-/ge@8J?l?{d??=d^?äqY@8p?Q?qn?k,? Ğ?&I@@@@*@*?????,@8|h@8~Q@8|h@8~vȴ9@8|h@8'RTa@8|h@8hۋ@8|h@8~vȴ9@8|h@8~"@`A@ ě@`A@nP@`A@p;@`A@ݗ+@`A@u!@`A@@6[~($@6Zc@1^5?|@1ɭB@1i"`@1hy=c@0u@0a@N@0u@0S&@0u@0Z?|O?$?K]4?U*?/m{? $4?F/P5? ,C?}7.?; $?2}?äqY?(?9o?D(p?%ϑ?7? +t@@@@@,@(???????9R?<*p?-ڷr"?8 \#@8N@ Z?N>֊?X" +?("a?I3@h1B3 @-@k@k@k@ld@k@l '5@k@k")a@k@kאYux@k@kX%@!@$T@!@.s8@!@6@!@S-@!@Ct@!@>@6~($@6 0@3 I^5@3h: +@2V@20L@2iB@2v@2iB@2#B'@2iB@2y'?}@TΥ?~q4?[?(?>=d4P? X<-/?|b@?iE=?ڙE?n[>L?Ш?Q@$?S\H?y?H?崐?ft?)Ebw? +:8@@$@(@(@5@2???????e&'`;?_r>?KCZ?@k@ ,Q?}Ŏ?iBP?&?F[,?F4@d&qfJ@.@Vu@VE@Vu@X-@Vu@WXe@Vu@Vu@Vu@T9Xa@Vu@Tj~@vȴ9X@vȴ9X@vȴ9X@u\)@vȴ9X@y k@vȴ9X@z>@vȴ9X@u!S@vȴ9X@yXbN@4*0U2b@4@2xr Ĝ@2w-@1-@1@1m8@1`d@1m8@1 @1m8@1F]c?|O?gˣ? ?? Iy?y%?1a?}ѿ,?[45?Zq?wxR?*v7?Qa C?u@>N ?5?ւ?sMQ(?Cns? 1 D@@@@@@(@(??????6(=Ő?+|?!GsD?0>IA @U,~@wr?@܌v?P.`?j $?? /^@fqG@/@nP@e@nP@QS@nP@tT]@nP@Μ(@nP@GT@nP@%5@5`A7L@5i3@5`A7L@5^s@5`A7L@5f6@5`A7L@5g9V@5`A7L@5bj@5`A7L@5iD@7쿱[X@7(&5@3?|h@3ǀfT?@3`A7L@3^ c@2m8@2@@2m8@24P@2m8@2{|?mё>?L ΋?K?Aٯ,?WPJJ"??Ű?)XZ&?q~[?LJ~:?b??*?(@3+ J.Mm@3`A7.Qn@28D*.NC,@28D*.NC,@28D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 1@`A7L.@`A7L.@`A7L.@`A7L.@`A7L.@`A7L.@$.@$.@$.@$.@$.@$.@9N쿱[W.>@4+.Mm@4-.Qn@3&.NC,@3&.NC,@3&.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 2@ǯ-@ǯ-@ǯ-@ǰbM@ǯ-@ǯ-@ǯ-@ǯiDg8@ǯ-@Ǯ_o@ǯ-@ǭ@٫ I@٫ I@٫ I@٪ڹZ@٫ I@٪f@٫ I@٫R@٫ I@٫C@٫ I@٫U=@0-v@0-v@*8tj@*8F]c@)@)TɆ@(̲@(˒:)z@(̲@(xF]@(̲@(ˬq ?^Q5P?[e?ǹT?}?bM_x?r/B?90?9~F?ߒh!?Uyu#?bMky?.+?2Y0?':?pk Y?pk Y@@@@@,@,??????Gsw6?R?%L4Hľ? #ؿ@ǮN@٫x5D?4{Q ?*?d%̤C?O-b4@stA@3@?u?|@?xbM@?u?|@?u!@?u?|@?v4@?u?|@?t`d@?u?|@?uϪ͞@?u?|@?vz@Bl1&@Bix@Bl1&@Bka@Bl1&@Bl/{K@Bl1&@BjD@Bl1&@Bn_o@Bl1&@BdM:@6@@6_ح@25S@25ᰉ@1"`B@1qu!@18D*@19@18D*@19Q @18D*@147?1j?jEP?7' ?UL+@?vX=@Bi4`?YL?s*Ց3?Y ?#i@j0jW@4@fx@h9X@fx@tX%@fx@Xg@fx@K@fx@W.@fx@{:@IQ@IiV@IQ@Io>J.@IQ@IaJ,^%@IQ@I!@IQ@I BpY@IQ@I @5@5@4n@3S@2;@2j~@23@2?䎊r@2"n;>@2?䎊r@2j+@2?䎊r@2Ã?|h2:?oN??Vq?xь8?5R?3<' ?ql?0Ƿ?ޝYI?i?\d?lao?ܫ?y?Y*^?h1^?<9}@@&@ @@<@;???????t1ٙ[Ƥ?Ir렄UC?'J< @zese@I\?cPy?A?lj"Tf?sL@bA@5@1&@A7M@1&@u@1&@@1&@֡a@1&@$@1&@si@(S@(NO@(S@(,1&@(S@( @(S@'W>6@(S@(1[W>@(S@(K~(@8[~($@8TJ@3S@3iB@3q7Kƨ@3^!R<@2̿[W?@2$@2̿[W?@2tSN@2̿[W?@2Z?{?vq[@@@@@(@$??????dr7]H?E,?k$)@H@(Is-?ff:#?[x(?.zX@?j+@hv@6@6a@6w@6a.@6a.@6a.@6a.@6a.@-49Xb@-?vȴ@-49Xb.@-49Xb.@-49Xb.@-49Xb.@-49Xb.@9|Q@9A [@4{ I^.Mm@3j~#.Qn@2sh.NC,@2sh.NC,@2sh.NC,?(eI@8#@8:@8 >+@8I@8?[Xxp@8@8i@8@8S@8?UWci@8 *@8p@8@8 @8 @?7@E@Fx@E@Ji@E@G{T@E@L`Vpy@E@@[)',@E@@ W@;dZ@;@;dZ@p@;dZ@ a@;dZ@ +'@;dZ@A X@;dZ@1j@7:qiC@7;s@3hr @3M=$@27Kƨ@2_yA@20U2a|@23-@20U2a|@2dx@20U2a|@2rk)C?m?b?C?&I$>?zK?ٓ)?| V?Ofo?3ho?,>,?S60?XҙN_?'h[8?ܺ_I?XB:3 +?ɛ~1?Bq?SJV@@,@&@,@4@5??????fLW>qk?bmUx?@F@F:z@ӡ?y<Y:?e,u d?&wl.?U2^@lM@8@C-V@CD@C-V@D+J@C-V@D--G@C-V@D=-@C-V@D'^@C-V@DER@j:^5?}@j3E@j:^5?}@i}z@j:^5?}@ij @j:^5?}@i1?"@j:^5?}@h4Po@j:^5?}@iF@4-v@4* ~@2=hr @1o@1KƧ@1_@1OO M@0`p)u@1OO M@04 @1OO M@0t ?|B &?)!,?0?f?FS?^/r?}#?Zz? ?0 _?-?~|J?Q–e?`1?{Rv? y?OjH?-a@@$@&@$@2@1???????cwq ͫR?lhOh?@D u'@i_5?HH?`7Pu\@M@[>.@dD`@9@{lD@{S@{lD@|ߤ@{lD@|u@{lD@}/@{lD@{=K@{lD@{n@Ƨ@+ J@Ƨ@&@Ƨ@Ft@Ƨ@-@Ƨ@Ƶ '@Ƨ@@2=:@2=V@.`A7@.|@.cnP@.b@.kjf@.jfB@.kjf@.jD@.kjf@.jL/|?^Dw'?°R;?.Ү_ ?lDžN9? f?2I/?bM_x?%F?qF?>\?ڂc?rJs?bMky?Ϸ+?2Y0?8 ^?b/bJ?pk Y@@@@@,@(??????G.}8ɿ?8 +ğ?1?@|*\m@O3?G S;?@V+v?(,66?wj !C@sdBP@:@Q@1&y@Q@$/@Q@ Ƨ@Q@ 7Kƨ@Q@n@Q@@C@C@C@r @C@@C@+@C@Q@C@)_@5䎊@5iB@1r Ĝ@18YJ@0"@0n.@0V!.I@0Q-w1@0V!.I@0P)^@0V!.I@0R3?]?}d?FB:?_B?tXS?5@?:?@x6K,@;@.O@.zH@.O@1@.O@&@.O@5\(@.O@)ԕ+@.O@.H@Ƨ@ΗO@Ƨ@Z@Ƨ@V@Ƨ@j~@Ƨ@R<@Ƨ@A \@54m8@5U=@1r Ĝ@1a@@07KƧ@0p +>@0^6z@0He+@0^6z@0F@0^6z@0Hu%F?| ?F?"Hur?ˆ_?|(?%?F/P5?YP?vp6d?TV?2rz%6?Wf?a?BM?dd ?{B0?WZ?>3}@@@@@,@,???????J:,u:is?T1 +X?gzLB7@/$@?q;?GS ?@-S?t=0`@bZ?@<@c +=q@wsK@c +=q@[t@c +=q@G1I@c +=q@sb@c +=q@^͊@c +=q@X4֡@[tj@[vȴ9X@[tj@[@[tj@[9@[tj@[̈@[tj@[@[tj@[`B@8r@8kz7>!@@3 I^@3,m³ +@3A7K@3 [$5z@2QiB@29a`@2QiB@2H=?@2QiB@2P- r?NAc?NHRp?!}')?xe'?> +; ?+?(-~1?e@ ?#:?4o?Y(? sPf?|f^@h|R@[?wwb?d?y@@o@=@`A.@`A@ov_خ@`A@h ԕ@`A@$/@`A@{s@`A@{Q@Qhr!.@Qhr!@Cn.@Qhr!@9XbN@Qhr!@8l"h +@Qhr!@G@Qhr!@&IS@7.>@3r Ĝ@3-@27Kƨ@2$/@2m8@2|hr@2m8@2wlC@2m8@2w&@8J?5ԗjN?yaR?,?v.?)}U@8J? ?t!?"JÁ!?l?|@@8p?Fۯ/?^)7H?V]9V?3?ymcw\@@@@,@*?????>@g.@g@g+]c@g@g@g@g&,=@g@gC,z@g@g$/@ե`A7.@ե`A7@ѯw@ե`A7@ѓE@ե`A7@я@ե`A7@P'R@ե`A7@4!-w@9}:.>@5+@2XK]c@417Kƨ@18bM@3 k@0,<@3 k@0fA@3 k@0@8J?tH?8ʐ?ҵR24?h?wMIf@8J?3Pj?EE+?L?)>$;?s@8p?њH?~}o_?eL2G?, ?7@@@@@*@&??????A ?%N ?%t-x?:@Mk|@@?NJ@?w_8@r>?@A@1'@#@1'@(@1'@/V@1'@($ x@1'@' l@1'@+҉@kY+@k.@kY+@k +=q@kY+@khۋ@kY+@k~($ +@kY+@k@kY+@k*/@8 ]ce@7\@2+ J@2XbM@2Z~"@2<>@1Q@1ըXy=@1Q@1]cf@1Q@19?J ^?WZwn;?ڿA?A2x?|c?uV`?9A?ly=?A qi?Ѝ`Hi?8}??*?ͥ?KF??i + ?Ƽu? # @@@@@,@*???????`?.G?FZ)?h ba@' P@kun+@?avt??gCe?=@lrM +@B@MO;d@Mhr@MO;d@M(@MO;d@NV@MO;d@M(@MO;d@L@MO;d@LI^5@A7L@n@A7L@҈@A7L@d@A7L@҈@A7L@ [@A7L@ě@0:@0>@,kƧ@,kC\@+?;dZ@+?b}V@*u%F +@*\(@*u%F +@*Zc@*u%F +@*œwkQ?^Dw'??"?ƠJ-M?tXS?}?bV,? +?A)N?3.Yl? xV?h,à?bMky?~('?q6tN7?ʬv??Ѐ>(@@@@@@??????GH]r?/?Z5@M;8@:?'5nu?*˟[?L ̱U--?Om!@s?]a@C@ʅQ@ʅQ@ʅQ@ʂ\(@ʅQ@ʄ?@ʅQ@ʆFt@ʅQ@ʆ]c@ʅQ@ʃ @0 I^@0S@0 I^@09X@0 I^@0&@0 I^@0F]d@0 I^@0M@0 I^@0TɅ@5*0U2b@5JD@2+ @2I^5?@2j~#@2 M:@2L[W?@2R-V@2L[W?@2Phۋq@2L[W?@2PA7K?| ?[ew@ʅ"h@0Yg?W#[H?79mܵ?M:?vVqX @e;@D@@n@@A7L@@n@=8Qf@@n@?2zZ@@n@?}5@@n@8@@n@9N.@ix@hr +W@ix@m@ix@Ą\@ix@ĄGC@ix@t@ix@sm@42@43ͅ^L@0hr @0Xu\x@/O;dZ@/n@/73@/Y@/73@/8\h@/73@/sJ?}#?%?J}+&n?}?o@%?WlH?| V?T}?U??"X?+ߊ?J?Ixd?w:?]ޭ*~6?G2ag?*?Q@@@(@"@"@0@.??????Vd~?qY~mY?AqN?g>UVK@=N@q}e?`m,F?,! Sd?]Sp@Rciԃ@efqk@E@jfx@jg+ K@jfx@jh@jfx@jjW@jfx@jh@jfx@jf,=@jfx@jeڹ@Stj@Stj@Stj@SPH@Stj@Rs@Stj@Q@Stj@R Ĝ@Stj@QiC@3@@3 ԕ*@0@0g@/nP@/s@.Xy=@.2a|@.Xy=@.L_@.Xy=@.O M?|O?_?S[?'$5? g?-tT?| ? H?d0R?]bn~?A B{?sx/T?nwf? +?YF??L? +t@@@@@(@,??????7P4JiF@?1 ?wF @jg$;4@Rj?Q~`qm?<$ ?tm?V;+@f˟@F@ě@$/@ě@E'@ě@ [@ě@J{"@ě@Xߊ@ě@N%N@8 I^5@8 I^5@8 I^5@8 B@8 I^5@8 ;߼@8 I^5@8 1&@8 I^5@8  +%@8 I^5@8 ,d@-zu%F +@-zu%F +@&"@&Fs@%dZ@%qu!@$fL/{K@$fV?@$fL/{K@$fYJ@$fL/{K@$fL/{K?^j?ܸn?3:??FB ?y&?O?bMn?F?})"Ҫ?2^? mv?J W?bM]f?.?n3?xFD?[J?I@@&@*@*@<@:??????=fI>0?!$Owj>L]h2]>@e+@8 D'?0{2x8>fuy?ZEe>G=@s [g@G@k Ĝ@kw@k Ĝ@k0M@k Ĝ@k>Fe@k Ĝ@km.@k Ĝ@kbM@k Ĝ@k״3@Ձ$@ԯO @Ձ$@a5@Ձ$@I(2@Ձ$@ĔA@Ձ$@ȴ9X@Ձ$@˟U=@4H@4_q@1R I^5@1E8@0Ƨ@0I^5@@0u@0m@0u@0oo@0u@0p- ?}@TΥ?Ɩw1?m s?.@miz?i]i?SJ?|B &?X?=?N0?I0B?ҥX[?`P~V?{6?^6?\T?7?՘]G@@"@&@&@ @??????uPf8 ?C92q?Tғ@ke@'r?b޻w?tTk"?~W?Ay4@f͌@H@5lC.@5lC.@5lC.@5lC.@5lC.@5lC.@"49Xb.@"49Xb.@"49Xb.@"49Xb.@"49Xb.@"49Xb.@6(YJ.>@1?|h.Mm@0-V.Qn@0_o .NC,@0_o .NC,@0_o .NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 I@r-V@o\(@r-V@cS&@r-V@c +=r@r-V@b`C@r-V@g@@r-V@eO@_M@_PbM@_M@_B I^@_M@_Jo@_M@_9|@_M@_;qu"@_M@_:@62@6/O M@3uS@3j0U2a|@2Vu@2*@2m8@2y=c@2m8@2ڹ@2m8@2bM?Y͍_?)D1?0??q?V?Ol?њH?低NU?ZpÉ?ݤ`i?ք5?T0?vv?fr[?!B?o?h@@@@@*@&??????cUu6#2?Rxd?N*@i ز@_F7?q V>\?my?(l ?erW@e5mz@J@ᙙ@1&y@ᙙ@>B[@ᙙ@ᚬ>@ᙙ@J#9@ᙙ@#x@ᙙ@ᙦ @+@+@+@e+@+@}I@+@ڹY@+@e,@+@>B[@8۹~($@8@1.5?|@1.@0;Ƨ@0;C\@-PH@-PH@-PH@-&@-PH@-33334?NIɮ?j"@vE@S@vE@0@vE@`A@vE@H@vE@@804m8@7}jOv@5c@5]K]@4-@4"`B@4z,<@4^_o @4z,<@4i'RTa@4z,<@4l>B[?\<4??-sA?a?k;?gUaJ?,? KBI?Bȅ?1?OY?%TUx?:B?:?^&Mka?ڧ?Q, +?.P@@@@@&@(???????3Xݏy/ ?XH?@b@i??@k0?L6G?߲n@t@M@j~.@j~@pw@j~@ڙ@j~@u]@j~@>-@j~@@1&.@1&@Ḙ@1&@"C8@1&@JO@1&@\(G@1&@@84m8.>@2 ě@1Nɶ@1,j~#@0qyR@0B@4@0z@0B@4@0%Jb@0B@4@0R߫g@8J?v>F? v??C4-k?.[@8J?G̲f?tDig?It?E?qjߢ@8p?*??Aeǘ?q?sc`D?0~6@(@@$@<@:?????N@0w@0- @0w@0͞@0w@0C]@0w@0-@0w@0- @0w@0 @\(@KƧ@\(@aoh@\(@Y=c@\(@[q@\(@^ѷ@\(@]p +@8 xF@8\N<@3hr @3_p@2`A7L@2u@2 +0U2a|@2 +ݘ@2 +0U2a|@2 ҈@2 +0U2a|@2 P{?qn?ly?TS?v" ?r {#&?=?ȉak?YC?f?WA?SY?VT?E}?ˇ?v'X?VED?l?_u@@@@@,@(???????2<`?fY?#DzOB?U߼@0%5@@Z~?@)"T?ld Q`?z/?*:o@nee@O@7Kƨ@~bM@7Kƨ@~V@7Kƨ@@N@7Kƨ@~[W>@7Kƨ@~@7Kƨ@~qj@(\@bM@(\@Mj@(\@|@(\@TɅ@(\@ӶE@(\@غ@6䎊@3&x@2^5?|@0^vȴ9X@2i"`@/āoh@2~($ @/v_ح@2~($ @/eں@2~($ @/vȵ?1j?UW?MDe?F?Fǥ?yW?}ѿ,?&ژ?j{X?QPL?Z?74l?zny-g?J??hc?N((?8wx@@@@@*@$???????@V.?eH>?c]z@~LSQ@9p?]&t?tS?۰@>Pr@bu @P@rM@rMO;d@rM@rNߤ@@rM@rPU2a{@rM@rPbM@rM@rQm@rM@rR@m Ĝ@mE@m Ĝ@m3333@m Ĝ@m1@m Ĝ@mC,@m Ĝ@m@m Ĝ@mhی@2g l@2tj~@0E?|h@0AA [@.O;d@.bM@/@/v8YJ@/@/v@/@/vȴ9X?OW? ?Gk;m?{O`?uxY?I?;0?$i %h?mK?.?4{?vMUu?!?Ϸ+?YF?0?ad|?oC?@@@@,@*???????I7ݖ?O_N?dv?G+>YI@rQYd@mWٲ{?(X?U+?EA?dw"z@sqgA@Q@!Gz.@!Gz.@!Gz.@!Gz.@!Gz.@!Gz.@}7K.@}7K.@}7K.@}7K.@}7K.@}7K.@9~($.>@4?|h.Mm@3j~#.Qn@3[W?.NC,@3[W?.NC,@3[W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 R@ܛS@ܜ1'@ܛS@ܜ墷@ܛS@ܢc@ܛS@ܣmS]@ܛS@ܘ@ܛS@ܙ@Zx@Zx@Zx@Z[ @Zx@ZA@Zx@Zma-i@Zx@Zg]@Zx@Z&@1!.@1/¨@0^+@0^`Ċ@0 -V@0 =Ƣ:@0#@0%Wި`@0#@0$9n @0#@0#Q?^6P?=L?m s?3H+?,kc?ҸQgv?b^57K?!SP?U?xx1?̴>.?^|&?t4n?UQx̚?\3?jN,?{j?¿'@@*@*@&@8@1??????b4J{P/?L߆0?0,@ܝU_@Z ?[]??L59?ߪ+6 ?t5k@s +@S@j~#.@j~#.@j~#.@j~#.@j~#.@j~#.@ I^.@ I^.@ I^.@ I^.@ I^.@ I^.@8YJ.>@3^5?|.Mm@2gKƧ.Qn@1:S.NC,@1:S.NC,@1:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 T@7/@7p +@7/@7ݩ@7/@7$ @7/@7ݮ%@7/@7Rs%@7/@7L@j~@j~@j~@n&c@j~@t:@j~@\ak@j~@@j~@(@5䎊@5:S@0i+ @0iMb@/;dZ@/@.fL/{K@.fw6̷@.fL/{K@.f4G$@.fL/{K@.fC0?|b@?>J|?@5$_2?4!?6?cIS?}@TΥ??>?1x?!WSm?Wf?o,qV?7)?v#0&?$: ?%9G?(Y@@,@*@(@<@:??????xC3@?6(A>? #@7E@'G?5"JT?F,?xQټSd??5|FF@g +~=@U@8V.@8V.@8V.@8V.@8V.@8V.@j~.@j~.@j~.@j~.@j~.@j~.@8`D.>@3^5?|.Mm@3'KƧ.Qn@2!.I.NC,@2!.I.NC,@2!.I.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 V@#LI^5@#ES@#LI^5@#N+@#LI^5@#QiB@#LI^5@#M(@#LI^5@#N.3@#LI^5@#LcA!@1&y@t@1&y@ :@1&y@Z@1&y@:@1&y@E@1&y@g@6r@6nzG@3xr Ĝ@3w#@2ttj@2tJ@2\Q@2\cA \@2\Q@2_?@2\Q@2]\?G *ǂ?O9?mr?\2?cc?S{d?}ѿ,??rVx??^?⍄o?dҦ 4?? + l]?hSp]?b? ;8@@@@@,@*???????M#R 6?Kw??nW:@#LF;v@v?cˡ`?d@,?tjw?PߓZ@mݤb@W@>".@>".@>".@>".@>".@>".@4|hs.@4|hs.@4|hs.@4|hs.@4|hs.@4|hs.@8B䎊.>@3|hr.Mm@2KƧ.Qn@2!:S.NC,@2!:S.NC,@2!:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 X@8$/@8Ƨ@8$/@8u@8$/@8(@8$/@8pY@8$/@8]Q@8$/@8__@bvȴ@bvȴ@bvȴ@b?D@bvȴ@b f@bvȴ@b@bvȴ@b I@bvȴ@b.*@5%!.@5&ʌ@2+ @2˜@27KƧ@2g1b@2u@2EPC6@2u@2TT@2u@2gKo?}#?C`? HCP@?Qð?,92d?[?}W?}^?k?mu?y?)lv?xk?c%?RǶh?2P?Jtѧ'?ۑD@@,@(@&@8@8??????SS8Jh?3Y gm?4x^@8@bZ?RCu#?TT ;6?)bZ?iN#l*@f ձ@Y@;dZ@\(@;dZ@@;dZ@.3@;dZ@n@;dZ@~($ @;dZ@E@z ě@z"`B@z ě@z A7L@z ě@z@z ě@z!:@z ě@z" I^@z ě@z!@6#g l@6#n.3@1@1tj@1K"`B@1K~($@0ޫ6z@0v@0ޫ6z@0ߗ$tS@0ޫ6z@0+? ?hX*?,fC6?=]. ?h|?.'?)T?6S{?I?j?qN?ey?]?=d?T?RJ? Ğ?&I@@@@@&@,??????N+0?4ؖq!#?##\@O~@z"B 7?U%?CLa}?}'UW?@T@ib]@Z@ (@ @ (@ Xȷ@ (@ B @ (@ x@ (@ j09W@ (@ S@t +=p@t@t +=p@sȏ@t +=p@sB5W@t +=p@t%bW5@t +=p@t(Vns@t +=p@t3_E@5w@@5oH@@1S@1=7@1U`A7L@1^+&`@1s&@1" @1s&@1vl@1s&@1s꣊?~Ov_ح?2o?v= ?֟"? p)/?m?|b@?"HS??g-?z7{?U:0?bc畯?hk?\͑i?CER?&?Ɣq?=L"@@$@ @$@:@7??????etk ?hqxS?[ra?.ϒS/@ ܛ@t&A?y?MTNrI?Z[?6D(@dKWkF@[@Xtj@X^5?}@Xtj@XK@Xtj@XY@Xtj@X5@Xtj@X&ɁF@Xtj@X .@$/@{) +K@$/@@$/@A"C@$/@O@$/@Ha@$/@Q@7 xF@7ٔb@1xr Ĝ@1vu@0,j~#@0*#l^@/#Z@/@/#Z@/BA9@/#Z@/R1q?_Kt?ZUb?9D{p?|?; [?NpI?o"?;q?0?s8? ??yѿ?zbH?~m?dt?E?Bz6?$M@@*@&@(@7@8??????O?R:p?D.XV?Dz/"@X@?6_T.n?d@"?u 1i?cH@i ,n@\@߶ȴ9X.@߶ȴ9X@ߒ-V@߶ȴ9X@tzG@߶ȴ9X@GK]@߶ȴ9X@1 @߶ȴ9X@W1@WO;.@WO;@xtj@WO;@Jڹ[@WO;@$/@WO;@H9X@WO;@iy@9_o.>@4ٺ^5?}@4*0@4-@3_o @3@3- @3@3b}W@3@3%F +L@8J?~7* ?G?"d?:N?>͛@8J?Qe?&E֫?BS?">?eI@8p?Fu?k pē*?LD?TS?J*@@@@$@ ?????]@yXbN@e@yXbN@v8YJ@yXbN@z~@yXbN@y0 @yXbN@w@yXbN@xl"h +@,1&@7O;@,1&@*0U2a@,1&@%Q@,1&@*0@,1&@)Q@,1&@)ԕ+@8*0U2b@8Ұ ě@3° ě@3ȆYJ@3."@34S@2iB@2zxl"h@2iB@2RT`e@2iB@2R<6?|O?ʖSS?b? ?Ԧ?n?4<7?ٛP?iCv?HD?h?[h??eBZ?G?qlPg? +e?p=J?OO ?+`ȓ@@@@@*@*???????s,,xc*?Sص* j?RJ@t.o@,?x?X2@@@@@@,@&???????u  ?U8y4z?Zw^u@5 +@dEA?qb/D?yQCqݳ? +?V]$4@i7,7@_@kR@@kR@sMj@kR@"`@kR@\(@kR.@kR@ ѷX@j~#@!@j~#@@j~#@WKƧ@j~#@A$0@j~#.@j~#@Y|@8|Q@8LQ@4)+ @3b}@3-@3 !-w@2xF^@2B&IR@2xF^.NC,@2xF^@2@5?ȉak?B};?>9B? @8I?ric,?&"?yCN?Eʻ)?4Uo@8S?Av"_+S?MM.?G^~?bfU?%)@8 ?J6Л@@@@@*?????`@;dZ@8(@;dZ@T4M@;dZ@=#@;dZ@:S/d@;dZ@; +YL@/5?|@0Q@/5?|@/)c4@/5?|@/j¹@/5?|@/ܵg@/5?|@/ݳ,~@/5?|@/z@8!.@8Jߦ@3?|h@3S`@2A7K@2Nr@1._o @1.,fX@1._o @1.@m;@1._o @1. ?CbyV?dc:N?^?g.$W?j eI?i?$/?6c? +rmH_?f|w?,4N?x4??S?yj?={:?Y#A2?Sͨ@@"@"@"@5@4???????? %qmh?@jl?\zQ[@:Ϗ@/w?`(q?wY;m?2[7?^"{Q@l~@a@ +=p@ +~#@ +=p@ ~(@ +=p@ Ƨ@ +=p@ L_@ +=p@ TɆ@ +=p@ Dg8@V+ @Vȴ9X@V+ @VϪ@V+ @VC@V+ @WXe@V+ @WX@V+ @W>6z@1-v@1-hr!@,-V@,@+dZ@+q @*At@*O M@*At@*\(@*At@*\(?^Dw'??N?8v?Ot?>?bV,? +?rJs?/Z?%y*=?X78?rTg?~('?u@>N ?~\?#.?Ѐ>(@@@@@,@,??????U ?Bǽ^NK??<] @ +B&@W<`?Rd8ӿ?!CGt? + :?:%M@sa@b@$@A7L@$@jW@$@o4֡b@$@doi@$.@$.@@T@@fA@@[@@tS@.@.@9mv@6/hۋ@5+S@5p:@4 -V@4@3s&@3O{J#:@3s&.NC,@3s&.NC,?]?C\ P?6\9?ݡu(r@8I@8?]?qӡh?Qrz?Җhn@8S@8?*wjs?};?|?1R@8 @8 ?@@@????c@9XbN.@9XbN.@9XbN.@9XbN.@9XbN.@9XbN.@ 7Kƨ.@ 7Kƨ.@ 7Kƨ.@ 7Kƨ.@ 7Kƨ.@ 7Kƨ.@9*0U2b.>@43S.Mm@34tj.Qn@2.NC,@2.NC,@2.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 d@ +=q@5?|@ +=q@e@ +=q@p:@ +=q@@ +=q@d@ +=q@64@*E@*\(@*E@*Y~@*E@*+k@*E@*j~@*E@*@*E@*:)@7H@7*0U@3I^5?@3C,zx@2"`@2Y@20U2a|@2@@20U2a|@2_o@20U2a|@2!-w2?Br?p~v]?5$?o]އ&?ԁ?zWmo?h??uie?K54;?8h\?h_N%?I?p-?P!p?֘>D?gtH?Xk-7?♊N@@@@@&@(???????4R?:W?R?]6̳ @3L@**?t?%i?y(:?1z7?ԙ>@jt@e@ Ĝ@^E@ Ĝ@*@ Ĝ@; G@ Ĝ@@ Ĝ@,ln@ Ĝ@)]@i\)@i-@i\)@jy@i\)@j£amO@i\)@j-@i\)@jd47 @i\)@jE6@7 ]ce@7 (W[D@3@3 +@3~"@2%pT@10U2a|@1#$@10U2a|@1]Q@10U2a|@1uO2?F$?Ѥh?)?֣?T-??nOE@+@M?PR+?vn?J?z&6?=pE(@lX°B@h@hs.@hs@wk@hs@凓ݘ@hs@@hs@ k@hs@e@5?|.@5?|@P- @5?|@4*@5?|@Zc@5?|@U\)@5?|@^%@;4m8.>@6S@6 k@5-V@5}cA @5 [W?@4@5 [W?@5$0@5 [W?@5@8J? `?NJL?W?W07q?TA'@8J?I`?5~B?շL?*-@s3?87@8p?SY~?V 2?ih?0C?57@@@@(@*?????i@[S@[S@[S@]!.I@[S@]/@[S@]ce@[S@Z@[S@YY@+ ^5?@+ l@+ ^5?@+ @+ ^5?@+fB@+ ^5?@+ l@+ ^5?@+@@+ ^5?@+@@3 xF@3%1@/t@/E@.nP@.@4n@-N;6@-U2a|@-N;6@-GE85@-N;6@-GE85?| ?1?\H{gX?8v? f?6J?|O?5CQ?['?N?qN?ȏ'T?n88?§d߱?٤?8 ^??b/bJ@@@@@,@(??????+_}@W?7r{@?"!@[j@+?W87?BmWv?}o??r@f(@j@bM@@bM@!-w2@bM@n;5@bM@K]@bM@eݗ@bM@c%@q^5?}@r@q^5?}@q]c@q^5?}@q"h @q^5?}@q}V@q^5?}@qE86@q^5?}@q&x@7įO M@7?@3I^5?@3ʌL_@3"-V@3-Z@23&@2Q`@23&@1GE85@23&@2ěT??d?zeߎ?)[fI?-; ? ׅ.?^*?x\Fp?>4g9?y/2v?0-+?|:?zk 3U?3E?N0?FE%5?zl?hcӗ@@@@@*@$??????R\@?xΑ?G|2@%6@q |? +J? #wy?GFz@-_nj@d@b~@k@_T@_T@_T@_u@_T@_*@_T@_zxl#@_T@_q@_T@_e@`ě@`ě@`ě@a@N@`ě@`D@`ě@a [@`ě@` k@`ě@a-w1@0H@0;5Y@-V@-:@-&x@-`A8@-873@-8- @-873@-873@-873@-8}H?^Q5P?{j?1f_?q@v?DE??bM_x?#maЀ?pM?>\?@?h,à?cPQ?3;?y8$?':?b/bJ?pk Y@@@@@@"??????Ju>I(K@?81?uϹ@_-_@a.?,T?+c?T݆?5삭i@s7@l@UC@UI^5@UC@UK@F@UC@U1@UC@Uz|r@UC@U*@UC@U#-@F I@FƧ@F I@FEԩ@F I@Fs[@F I@FᏭ[@F I@F) Y@F I@F䭨@4>6z@4AեS@2 I^5@2^@1v-@1f?b@1L[W?@18 }ʴ@1L[W?@1>b/7@1L[W?@1>R?|b@?u$M?)~ϙ?O?U'-?)C"f ?|b@?V)o?P3b东?Fq<?Fj.%?7n??/$??'0S?VLS?: ?=B-@@(@@(@9@8??????gf]A?V p?O>N@Ui@F*8?tl7y=?lzQM+?84a?QRF#@dK@m@AGz.@AGz@A,@AGz@AI^5@@AGz@AIx@AGz@AVȴ9X@AGz@A9+@zG.@zG@$@zG@E@zG@v@zG@fA@zG@+@7|Q.>@2° ě@2H˒:@1j~@1oiDg8@1G k@1E@1G k@1?.H@1G k@1@*0V@8J?F?!N?eU5?;"?;@8J?I?;,?RLnj?S?X78@8p?Fp7?(?XW~?&f?WZ@@@@@?????n@>".@>".@>".@>".@>".@>".@E.@E.@E.@E.@E.@E.@9T xF.>@4hr.Mm@46-.Qn@3n_o .NC,@3n_o .NC,@3n_o .NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 o@Q@@Q@1&@Q@"u%F @Q@Q@Q@t֡a@Q@k6z@O;@)^5?@O;@W@O;@O:@O;@d8@O;@+a@O;@(ۋq@8,<@8_ح@3 I^5@3*ڹY@2t@2[q @1@1G{@1@1$tS@1@1g?}?ӻKL?$VL?M. j?RqJ ?õ"- +`?d0R?1'7? 5Y?eDQQ?^?6?S? +t?L8AS@@@@@ @???????@6t?0F+/p??&& ?^\@X4@s?^?:^#9s?1gt?O%@gVϯ @q@r @bM@r @iB@r @@r @@r @+@r @VR<6@v2-V@v+R@v2-V@v>m\@v2-V@v7O;@v2-V@v9>B[@v2-V@vF@v2-V@vU*1@84m8@833334@4#@4@3$j~@3L/{J@2Y~($ @2Cݗ+k@2Y~($ @2?@2Y~($ @2?ٛP??X^ +1?~]?dY5?τˎ^*?UbB2?ङm?c?-ʴ?XDo|?Mp?+ʄ?RHֿb?((?Cmk? Ğ?A@@@@@,@$??????̇|@?yu?f^o-o?F>z@e@v77i?Ӌ?bh$q?\GD?.qTX@dBØ@r@^Q@a$/@^Q@~5?|@^Q@h[@^Q@lC@^Q@HXy=@^Q@Zu%F@ t@ lC@ t@ @ t@ E@ t@ $@ t@ lC@ t@ pD@6 xF@6ԯO M@4+ @4J@4_-V@4ZڹY@3YJ@3u%F@3YJ@3wkQ@3YJ@3??1j?u~??:?'`?@?F/P5?'?ZH|:?;A?6?!kz7?䁜?{_?qyi?@ꘄ@h@t@|h@n@|h@k)@|h@3@|h@2@C@Yj?q{?uM?l{?iy?b?@f :`;@u@CI^5@Cn@CI^5@CDg8@CI^5@Cws@CI^5@Cp$t@CI^5@C|wkQ@CI^5@Cs@Q@DT@Q@J@Q@<@Q@ O;d@Q@הj~@Q@Wr@7s@7?|h@4)+ @41@36-@3kU=@2,<@3z>C@2,<@3c @2,<@3sh?Br?:A{o?%=O>?T?U(?^??Ř?I\8S?qƑ?25?R9y?<?hB?5?S~iX?|?@@@@@*@,??????Aݍ} ?&@?q5C{?ynSF@C#Gv@L-۬?疟e?'4D?Sw?*?@]sY@v@lD@$@lD@U"!@lD@!"f@lD@3}@lD@ @lD@0,@Ƨ@+\:@Ƨ@үS$@Ƨ@:n@Ƨ@Ѿ_@Ƨ@@Ƨ@hT@8_o@8*c@3+@3u)Hl@2`A@2{c@1!.I@1baZ@1!.I@1UvE@1!.I@1?R?5 S? }?R?ynS?U2L?.EZ?4zs?(cf{?Ïb?"I?GEP@@@@@4@(???????\-D?WDo?S·J{^?g=O#@2 mэm@;?n [!h?{댨5?ҿSU?'y@p~ D@y@a@l@a@S@a@MjO@a@TZ@a@T$@a@WsO@ +=q@-@ +=q@ ě@ +=q@ק'@ +=q@u@ +=q@ᰉ'@ +=q@oiD@7@7MjP@4}hr @4~qi@3y7KƧ@3y_o@2@2~%@2@2s@2@2dZ ?^*??[;b@@"@"@(@9@7??????a]?j /?<9İ@oYb@kB?=F?.9@"pm@(dVQ+R@aK[G@}@V.@V.@V.@V.@V.@V.@;dZ.@;dZ.@;dZ.@;dZ.@;dZ.@;dZ.@5qiC.>@3|hr.Mm@2M-V.Qn@1O M.NC,@1O M.NC,@1O M.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 ~@3E@3@3E@/-@3E@,cA @3E@L@3E@U*1@3E@\PH@wKƧ@w +=p@wKƧ@w'@wKƧ@o@wKƧ@=c@wKƧ@lC@wKƧ@+a@3>6z@3RT`d@05S@0._o @.ΗO<@. qu@.L/{K@.ae@.L/{K@.S&@.L/{K@.F +L0?|O?I'?1?&L=?X?|x?|O?M7F?I?-w?:S?5?|׿pY?QdЈ?5q?c^)?4\ɵ? uf@@@@@,@,???????SÀ?%,?7~"-?Qc^zW@;̧@t ?H] ?b0d!^Z?>!j?7 f@] a@@zG@ I@zG@/V@zG@Ձ$@zG@ٳ|@zG@ '@zG@F@:^5?}@["_@:^5?}@:@:^5?}@7+j@:^5?}@=H@:^5?}@9Y@:^5?}@9"@7۹~($@7D*@2ٺ^5?}@2KƧ@2M-V@2L>B[@1u@1M@1u@1$@1u@1-V?G *ǂ?S_?u*y?W0 ?FL{?װ*w?g1??AuG1?{4k?.<?GE?+ʄ?t?*0x)?`?{2?_u@@@@@,@???????/w2b'?_9!?VԨ|@O#)@;tI?t"<K?g9Y?M?Az>@r@@( +=q@(3p@( +=q.@( +=q.@( +=q.@( +=q.@( +=q.@Z1@ms@Z1.@Z1.@Z1.@Z1.@Z1.@8@@8%@4{ I^.Mm@3{Ƨ.Qn@3 k.NC,@3 k.NC,@3 k.NC,?`Q@8#@8:@8 >+@8I@8?%=(@8@8i@8@8S@8?P:Ԕ @8 *@8p@8@8 @8 @?@@bM@@?|@@_@@&@@`d@@@&x@V@&x@@&x@eO@&x@ᰉ@&x@C@&x@1&@6O M@6S@3@3/V@3@`A7@3?\(@2,<@2MjP@2,<@2JL@2,<@20U2a|?}ѿ,?t,?^CjD? "?/Jë?^?:?F/P5??xrI?1ک! ?M=?U"T?.?a +?9WTW?ЙQ$?+B?xb? (0Q@@@@@*@*???????a?z"H= ?b՞?=J^L-@l@)?3=p?[_?s +@ơ#?G)M:@edKF@@:fffff@:o\(@:fffff.@:fffff.@:fffff.@:fffff.@:fffff.@5\)@Jp@5\).@5\).@5\).@5\).@5\).@8uS&@8k~($@5sS.Mm@4-V.Qn@4xF^.NC,@4xF^.NC,@4xF^.NC,?us\@8#@8:@8 >+@8I@8?}ѿ,@8@8i@8@8S@8?@6[@8 *@8p@8@8 @8 @?@~"@b`B@~"@a@~"@t>b@~"@~'@~"@2/@~"@?@m@%~@m@FL@m@񌡙@m@QQ@m@oz@m@6' +@7cg l@7IJ~R@4|hr@3`m0z@4lj~#@2Aʠݜ@3!.I@2\ GB@3!.I@2l<9@3!.I@2~ Cl?Hg ?e= @?V|x{?5Iz?os{p?]ޜ?Xd?5h$?"_l^?a?m\=֌(?h~?g|v?E#&?' ?Gۋ?h>?Mj@@(@$@"@9@5??????KOn?<J`?6|?n})A@5w@?~H?> @t/~5@1vf@e.q@@jZ@jn@jZ@j_p@jZ@j^5?@jZ@j}V@jZ@jE85@jZ.@<@@<6u@<@@<')_@<@@<+@<@@<]b@<@@`?rJs?9~F?Hc?eDQQ?٤?u??':?B ?pk Y@@@@@,@,??????-:ӂ>?'g&?@4d@< Q@Nc&L?Gh}?$GH`r?؟)?U[~@sW@fKH@@KƧ.@KƧ@K'0@KƧ@J=p@KƧ@Q@KƧ@H1&y@KƧ@NzH@蝲-V.@蝲-V@(@蝲-V@J@蝲-V@@蝲-V@TɅ@蝲-V@N;@9YJ.>@4@4@4@3dj~@3e '0@3Y~($ @3QX@3Y~($ @3X\*@3Y~($ @3XK]c@8J?[ ?ƐW?G?(i^?c:e@8J?f?YEX?̶j? R?r@8p?vC ?ީ)?B?zy? +.ԕ@@@@&@*?????@/w.@/w@/O M@/w@$%2@/w@.2@/w@5 r˗@/w@-_>@HA7K.@HA7K@H_;dZ@HA7K@HS&@HA7K@HG#@HA7K@HQH@HA7K@HL'@9I_o.>@4ԛS@4Țu%F@3b-V@3V$/@2u@2œwkQ@2u@2@xK@2u@2jOR@8J?'Qp?f6E?Z)?.>{ +?),@8J?D?/]?mqa?Ug$?M/)a@8p?Cʯ?((W?9 ?LǺ?7@@@@.@&?????@@tj@@Ł{@@ @@k@@3@@Xa@`A7@刕@`A7@`5+@`A7@V=O@`A7@͉N@`A7@Xv@`A7@ܔ@5v@5L_@2° ě@2,=@2Ft@2?U@1xF^@16#@1xF^@1v|2@1xF^@17'(?|b@?΁k?mH?6?u"0X?8t_?}xD A?^Ie$}?PcW?8I@eCV[YH@@$E@$?@$E@$@$E@$hZ@$E@$@$E@$93@$E@$Lo@R@@h@R@C@R@ F@R@Hva@R@Eb@R@U.U@6=:@6/*@2E?|h@28J<1q@1`A@1|j@Z@1J0U2a|@18v +@1J0U2a|@17M}U@1J0U2a|@18ܦf2?D5C?m:S?(ՂA?aGS??rbeEZ?5ً?bZ*?$( ?K[?zdH?@'ÍP?VOhZ?gR?1݉?$?XTl?j*l?"5@@.@,@*@<@<??????sbA?`@?eB`?\@$P8@?{?̶?{r@ zQ8?BW@e$@"^5?|@"Tr`@8 _o@8 X@2}hr @2v85@1tj~@1&\1@1c@1]8@1c@1[W(@1c@1Z?"?dL?y"Bx?GQA?ʦ?D;6k??u3?gPl?Xyb2?D+?F%]?.zu?$?X[?1^g?v?PcW@@*@(@*@<@;???????h``]?4r$?HѥJ"@gr c@"XvV?P?]RKh?vB? d@of}@@ I^@"@ I^@]@ I^@({,@ I^@Ji;@ I^@c@ I^@ @dZ@iP'@dZ@PKU?@dZ@B@dZ@Gi@dZ@$'@dZ@< +@6>6z@6ap4@3+@3 _m@2Ƨ@2_K:@2iB@2g?@2iB@2|t@2iB@1t+/?~?J?*p@"? vWa?6?n? ?}x ?;9?;+t"\?d@@,@*@@<@:??????m48 v +?On[IY?R>@+@TH?kl\?p3;M?EwS?ajX@dl@@XE@X+ @XE@X@XE@X@XE@XKƧ@XE@X$@XE@X4@?|h@?|h@?|h@@4m@?|h@@N@?|h@? @?|h@@u"@?|h@?|h@4>6z@4$tS@0J^5?|@0J^5?|@0`A7L@0`A7L@.'RU@.U2a|@.'RU@.:~@.'RU@.?|O?m?7[䭝?q@v?ǹT?+ʦ_?| ?NۈV(?&?; $?ߒh!?U3p?nwf?/?W?':?b/bJ?L@@@@@(@,???????3?&cʻH?̬re\@Xl@??F;u?::āv>?9Ց?X\@f7@@\(@š@\(@af@\(@e@\(@S&@\(@@\(@M@C@=p@C@~#@C@I^5@C@C,@C@jg@C@˹~(@6:qiC@68\)@2 ě@2%2@197KƧ@1:,<@0[W?@0p:~@0[W?@0_o @0[W?@0v?]?m?U#? +?5 g? ]V?]?I?|,!?? f?Q\?*wjs?Ϸ+?A'_^? mmsi?L8AS?2[s?@@@@(@&??????8-?1e?2$DN>:^ĉ@gs4@gi?A˘ul>bo?}R G>XaE@sxa@@3E@6E@3E.@3E.@3E.@3E.@3E.@m`A@m~Q@m`A.@m`A.@m`A.@m`A.@m`A.@7uS&@7P{@5}hr .Mm@5`A7.Qn@4 k.NC,@4 k.NC,@4 k.NC,?@8#@8:@8 >+@8I@8?Y͍_@8@8i@8@8S@8?ZaP@8 *@8p@8@8 @8 @?@؊=p@؊=p@؊=p@؇K]@؊=p@؁@؊=p@{u@؊=p@F@؊=p@؁$/@`+@`+@`+@`.3@`+@`zI@`+@`;dY@`+@`*0@`+@`ͫU@3 ]ce@3 j~#@/-V@/ I^5?@.rnO@.mC\@.Z@.B@.Z@.^5?|@.Z@.q ?| ?Qd?~"? :>Co?Փz?;?| ?›?i?.pC?Bg43f?P=?oܧ?򯞼?Ol?Z?WZ?*Q@@@@@,@*??????dG Π?Or^w?/oQ*@؄gن@` q\?or<?O|˺? k}?!QG݀@e ׺@@lE@lvȴ9@lE@mn@lE@m I^@lE@lhs@lE@l䎋@lE@m[8@(+ @(ȴ9X@(+ @(A [@(+ @(PH@(+ @(u@(+ @("`@(+ @(=d@4(YJ@4(*0@2c@2a$/@2ttj@2q&x@1m8@1ҕᰊ@1m8@1Gz@1m8@1? ?E?^RpX?_? +? µ?|O?j%Ra?<?z?J>?'+?|׿pY?l? + l]?3_?OO ?;m7.@@@@@,@???????0/''p?L%$ H?7:^?A2@G]@lȗ@(H?VæuR"?a҂X ?rzÆ)?͵@g0@@N+@=Ӽڰ@N+.@N+.@N+.@N+.@N+.@ZQ@ZT@ZQ.@ZQ.@ZQ.@ZQ.@ZQ.@7>6z@7A)@4S.Mm@4tj.Qn@40.NC,@40.NC,@40.NC,?1YP@8#@8:@8 >+@8I@8?l@8@8i@8@8S@8?D%aFy@8 *@8p@8@8 @8 @ ?@a\(@aΗO@a\(@a^@a\(@aMj@a\(@aԯO @a\(@aϷ@a\(@aϪ͞@{Q@{`B@{Q@{\(@{Q@{@{Q@{s@{Q@{fB@{Q@{$ x@5v@5KƧ@2+@2C\@1`A7@1[W>6@1 +0U2a|@1tj@1 +0U2a|@1y=c@1 +0U2a|@1 ѷ?|O?sp?vG?W0 ?'`??=?F/P5?4 "?t(?@Cv?O ?e\p?+QK?Rii?qn?l?<71?Cns@@@@@,@,???????B{.?Sl?G%L ? "@aW@{=o"?h)ty?=yz?]S? @g.I@@j~.@j~@N@j~@^@j~@@q@j~@ @j~@wF@+33333.@+33333@+qc@+33333@*@+33333@++)@+33333@, +#S`@+33333@,"Z$@7zqiC.>@45S@37@3tj~@3:>$@3L[W?@2M@3L[W?@2/u @3L[W?@3'@8J?Έ`?IQ?wo?ť I?8^ܞ@8J?b?d ?М?`Hl?Ơ\eeb@8p?`IM?ĺ?HX?iux_? +6[@&@"@,@<@;?????@I^5@Ƨ@I^5@ @I^5@ϐ@I^5@Ǔݗ@I^5@ں@I^5@-@An@A`C@An@A I^@An@Ap +@An@AM@An@A,<@An@AQ@5[~($@5\>@3uS@3o@3-@3$@2Y~($ @2TE@2Y~($ @2UY|@2Y~($ @2VIQ?| ?q?M?4M^?ťBW?_?|O?ڲt?_@?| ?a]?]g0 +?9@0w?z? + l]?p=J?l?4hpɄ@@@@@(@*??????RrRs(?4 dB?B  @gv@A?S"9?bR%?z?Xi@eT@@)l@)^5?@)l@IS@)l@?@)l@7@)l.@)l.@&׍O;@&+@&׍O;@&XbN@&׍O;@&ȴ9X@&׍O;@& ě@&׍O;.@&׍O;.@7ks@7oo@2S@2"@1t@173@1xF^@1p{@1xF^.NC,@1xF^.NC,?h??)Q?}g?.D@8I@8?ꯨT?i&6?_@? m +@8S@8?' +}B?5?[? Q?@8 @8 @@@@????@\)@ȴ9X@\)@[@\)@=K@\)@$tS@\)@j~@\)@W@I7Kƨ@H9X@I7Kƨ@?$tT@I7Kƨ@;=L@I7Kƨ@?!-w2@I7Kƨ@=-@I7Kƨ@A-w1@5@5$tS@30ěT@3/-V@3tj~@3|@2:S@2B@2:S@2U=@2:S@2 qv? ??TS?U=K?#?3ƒ?Dw? ?2ww ?%gǿ?Y??sB?u!B?s@a?H?W;RT?hSp]?M\?4\ɵ@@@@@*@&??????B)}@amo|?4' ?H+,9@ƒ0@C:kV?Tw[r?h.@D?b< +a1?X @fU@@@bil.@bil.@bil.@bil.@bil.@bil.@j~.@j~.@j~.@j~.@j~.@j~.@9>6z.>@4xr Ĝ.Mm@3V.Qn@2YJ.NC,@2YJ.NC,@2YJ.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @4j~@4zG@4j~@6E@4j~@6Ov`@4j~@6E@4j~@3g @4j~@3@V@V@V@jO@V@cA!@V@_o@V@{J#@V@qj@0^H@0^Ov_خ@-\j~"@-\j~!@-ӶE@-@N@-p'RU@-os@-p'RU@-nMj@-p'RU@-nqi?^Dw'? ?4!p?G?b\?wZL?bM_x?MN ?^ o?C B?qN?]#O?b@?.+? SF?+ ?pk Y?B @@@@@*@&??????T8V?1q?=yk?:M~g@4@ت?K;?I84o?n^c?Q@sC{dw@@ORnP@OR@ORnP@ORGE8@ORnP@OU$@ORnP@OVR<6@ORnP@OVl"@ORnP@O]ڹ@lC@lC@lC@)^@lC@ @lC@B@lC@~$@lC@@4YJ@4@@2+ J@2*@2'KƧ@2'y @1Q@1ڒS&@1Q@1F]d@1Q@1և+ J?}ѿ,??p?btx=?STS?Y\(?| ?yom?ؼZ?#q\-v?.<? ?|׿pY?zx?ʭ#г_?.SM? ;8?`i2@@@@@&@(???????Ylсt?A??ፆG?) aȄ@OUeV@M?_]-?IΔ?kq?5iX8@eR*@@ ě.@ ě@)^@ ě@Ǔݗ@ ě@7K@ ě@ @ ě@@/zG.@/zG@/?@/zG@/e@/zG@/o@/zG@/6@/zG@/@9=:.>@5i+ @5ZD@4v-@4i#w@3xF^@3`A8@3xF^@3Ϫ͞@3xF^@3Ov`@8J?>I ?}\ie?n?M1?I?^e@8J?us76c?n|X?\PK?0d@? <\@8p?$3?6v;v?>?,Ro?S^^G>@@@@*@*?????@rlD@r(@rlD@rp +@rlD@rIQ@rlD@rce@rlD@ru@rlD@r/V@+ I@+C@+ I@*g@+ I@*F@+ I@+6z@+ I@+xF@+ I@+C@1!.@1 +L/@)tj~@)PH@'E@'cA @'fL/{K@'en/@'fL/{K@'en/@'fL/{K@'e?`&x?GA?>f?eU!?ǹT?:?bV,?%F?s8r?7枪y7?ߒh!?N`?cPQ? ?oܧ?avh?#.?Ѐ>(@@@@@,@*??????P> ?8l1E?Ajo @rb@+Nө?G~j?#/L4?a%?@ukw@s;@@l@lv@l.@l.@l.@l.@l.@`B@  I@`B.@`B.@`B.@`B.@`B.@9,<@9 @6kS.Mm@6 -V.Qn@6 +0U2a|.NC,@6 +0U2a|.NC,@6 +0U2a|.NC,?ٛP@8#@8:@8 >+@8I@8?q!U@8@8i@8@8S@8?*̒@8 *@8p@8@8 @8 @?@Dž@ǂM@Dž@DŽ7@Dž@Nj҉@Dž@ǂ}V@Dž@~\N@Dž@xQ@޸Q@5?|@޸Q@ +=q@޸Q@ߊ @޸Q@K]d@޸Q@7K@޸Q@PH@7,<@784֢@3^5?|@3_ح@2U`A7L@2TJM@25sh@23@25sh@22:)y@25sh@2-\?2}?+W?=P?ׂa?W?@*F?Ol?&dU(?cu%+?`ֆ?S?WR?W?E!'??Q ?OO ? `@@@@@*@*??????R?@8?E|W(?TŲȺ@ǀ=.@JCx?dK?tO?ȯL? П,@f[9@@ ě@ě@ ě@@ ě@3333@ ě@˒:)@ ě@u@ ě@"@jtj~@jnV@jtj~@jnzI@jtj~@ja@jtj~@jm%@jtj~@jj#9@jtj~@jSaA@8e!.@8b<64@4J^5?|@4Ln.@3V@3Xe@3L[W?@3WO;d@3L[W?@3Ln.@3L[W?@38???8?uZ?c? ?Zܗ?=fA:?Ҧ??SR?l^%? +Y*?TP??B?\7e)?YY?/#ˮr?R4?l@@@@@(@&??????j3W)j?z=~8A?Q4ױa@GtF@jk?2H^?pOY@3h?YIQȖ@f5@@hr!@B\(@hr!@ @hr!@$/@hr!@ ԕ@hr!@˟U>@hr!@_o @zG@|(@zG@ ᰉ@zG@ +͞@zG@?@zG@ߤA@zG@#@7w@@6$ xG@3E?|h@3=cA @2`A7L@2+j@1_o @1ݗ+k@1_o @1)y@1_o @18}H?B&W?@k=[?l5B?Att?.Kn?-! )m?. #???T ?A8 K?8,T?WR?Zj?7-R?OW?.SM?OO ?$jB@@@@@*@$???????*0?L+ ?aTO[?oM/]@@ +*5?p} +Z?{XO?ٕ?ut%PC@sC(mM@@<ȴ9X@<ȴ9X@<ȴ9X@b@/@/yIK( ?}@TΥ?0q?S4zs?&=?]? 4w?2?|b@??'?P}^U=?-(?R?rGe??t(XW?3p>? ݚi?=x@@$@@@.@1???????@/lw ?V!?b}@@>jO㛦@dٮ.@@V@C@V@jO@V@O;d@V@@V@첕@V@zxl@RnP@R ĝ@RnP@RW@RnP@R@RnP@R䎊s@RnP@R@RnP@R䎊r@0DO M@0DO M@*)7KƧ@*)*0U2b@)h1&x@)h ԕ+@(̲@(̘_@(̲@(̲@(̲@(̲?^Q5P?[ex?$.>>=eP@L@@R蓮?3>pzcy?3x[?b++> 7Z,@sIѨZ@@t1@t5?|@t1@tУ +>@t1@t}H@t1@tߊ @t1@t؆YJ@t1@tiB@ I@-V@ I@l@ I@1'@ I@M:@ I@=d@ I@$tS@7-v@7/b}V@4?|h@4Q@3ߝ-V@3}H@4!.I@4Q@4!.I@4'&@4!.I@4{J#:?% ?V_^?|6zj?a`a?p3/ ?dF?}ѿ,?8$ +"?ud?ѡb?? b9?!kz7??)1_?&,?O.?n?GԚj@@@@@,@ ??????%J]d#?A^ ?by"@tB'@P?cq[b??S6#i? Sz@fp_Gm@@7O\(@7a$0@7O\(@7We@7O\(@7SMj@7O\(@7UY|@7O\(@7M(@7O\(@7MB@`A@$/@`A@nP@`A@{@`A@Xy>@`A@'R@`A@:)z@9 _o@9Fs@3r Ĝ@3K]c@3q7Kƨ@3uzxl"h@3@5@3Q@3@5@3+ J@3@5@38}I?M^?ZAi?U%x?ھ۲?RXFf?Ci- ?jqp?`?Oدi?@[*^?dp?J3?}i?\{?Ƌ?1R?T?NVC&@@@@@(@,??????pci+r?KH\ߙ&?Q@7Qc@?[@!) ?aCB?u? >@p9>@@^`A7@^vȴ9@^`A7@]̲@^`A7@],<@^`A7@]7+j@^`A7.@^`A7.@3333@T@3333@f +L/@3333@64@3333@̋C@3333.@3333.@8@@8|@4hr@4+a@@4~"@3~%@3kxF^@3Ov_خ@3kxF^.NC,@3kxF^.NC,?|O?)#?ߴUmsA?yH>c@8I@8?K{O?l{׬?׉B,|̶?8F@8S@8?KY?zJ?W̩'?/օt,@8 @8 @@@@????@tj@F@tj@1@tj@L/{@tj@@tj@l?@tj@$@&M@&M5Xy@&M@&84@&M@&)^@&M@&qiC@&M@&{@&M@&#pŢ@5@5SO:<@3#@2vȴ:@2~Vu@2V+jg@2!.I@1'RTa@2!.I@12@2!.I@1i?{si?J f?x+?u]?cAq?H N_?|B &??8䂪P$?F'^D?~c]l?j8g/?VE?j$?E@@ ě@bM@ ě@@ ě@YB@ ě@D@ ě@ @ ě@X,@Z@Z@Z@½>@Z@@Z@`@Z@;fq@Z@^@4zqiC@4zin@0hr@0pq@0-@0 /W@.Vl"@.J@.Vl"@.&S@.Vl"@.M:?|b@?UL p?1"?˅T?g*??|B &?R?U.V?FQ"qH?ٙr?Z#\?15?XI|!?Av?:k??dB@@(@(@,@:@:??????& ?*`?)jou8I>bC@{@2?IJN?? e?ejC?%&@f0@@fffff.@fffff@Aoh@fffff@\wkQ@fffff@iB@fffff@Љ'R@fffff.@Y# +=q.@Y# +=q@Xm\@Y# +=q@Z!-w1@Y# +=q@X>vȴ9@Y# +=q@X I^@Y# +=q.@9!..>@4hr@4˒:)@3-V@3E@3c@3*^5?|@3c@3E2a|@3c.NC,@8J?R{?> +A?Ғ?o@8@8J?!?>?tC?B.@8@8p?=X?=Ɂ9?R^?@8 @@@@*????@u@uI^5@u@ub@u@us@u@u҈p@u@un@u@uGz@w@}/@w@^ߤ?@w@Q@w@mjO@w@dT@w@g)_@7@71.@3E?|h@3:u%F +@2dj~@2X*0@1[W?@1R@1[W?@1}O;dZ@1[W?@1'/W?|O?6 '8?XY?r*?GU?YD?E?u߿??A?Q?D4f?K|?HO?c?9 ?k!l?GX@@@@@,@,???????u*3(htP +F?N<}?ST'@u,P@mBb?r+ng?m? /X?e2@kJ@@zH@\(@zH@@zH@;5@zH@U@zH@\@zH@!-@&Q@&;dZ@&Q@&˒:@&Q@&F +L@&Q@&Ƶ (@&Q@&$/@&Q@&m\@7 ]ce@7y @2 I^5@2@2U`A7L@2U?@15sh@16YJ@15sh@168YJ@15sh@16t?Y͍_?J`Y?ě?2UT?(+Zk?J8Ȟ?}?Q_ڸFN?ܿ?/:?O ?C ;?bk?3I#i?~$?3_?Y͍_?{2@@@@@,@*???????p{?WD=?"?- ?U##?LE??VDx-~??]_@@"@$@@0@2???????5 P?ph=@?dZxV?aT1C@:m@+ٺ]b?Q?!n *@^z@.RhR@g^ێL@@sY+@sS3333@sY+.@sY+.@sY+.@sY+.@sY+.@hr @cS@hr .@hr .@hr .@hr .@hr .@7>6z@6ߤ@@3xr Ĝ.Mm@2>Vu.Qn@1m8.NC,@1m8.NC,@1m8.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?@Ha@Ha@Ha@Hae@Ha@Ha@Ha@Hb@4@Ha@Ha-w1@Ha@Hbe+@(\@(\@(\@(\@(\@)*0U1@(\@%S&@(\@'/W@(\@(@2DO M@2Dj~@0S@0Ϫ͞@0-@03@0iB@0N;5@0iB@0N;6@0iB@0o?^Q5P?°R;?\H{gX? +?j?WA?bM_x? +?)_?~m??\{3>a?P=?cPQ??`x?%ϑ?<71?Rv@@@@@*@*??????"*?V*?4)z?2 YC@Ha#@' ?C揇I-?A ?n?xHD}`T@sb^X@@c+ J@c@c+ J.@c+ J.@c+ J.@c+ J.@c+ J.@9x@9lD@9x.@9x.@9x.@9x.@9x.@7DO M@7H˒:*@4+.Mm@4_-V.Qn@3u.NC,@3u.NC,@3u.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?@J=p@J=p@J=p.@J=p.@J=p.@J=p.@J=p.@VI^5?@VIx@VI^5?.@VI^5?.@VI^5?.@VI^5?.@VI^5?.@3G>6z@3G-@1hr .Mm@1"`.Qn@1~($ .NC,@1~($ .NC,@1~($ .NC,?| @8#@8:@8 >+@8I@8?|O@8@8i@8@8S@8?y8#@8 *@8p@8@8 @8 @?@ A7L@'z@ A7L@2䎊r@ A7L@($ x@ A7L@ߤ@@ A7L@Ov_خ@ A7L@VC@z'lC@zw@z'lC@zL_@z'lC@z'8}@z'lC@z=+k@z'lC@zlC@z'lC@zS&@6S&@6@4?|h@4nO@3b-V@3v@3@5@3(˒:*@3@5@3u@3@5@2[6?|O?(?EZS)?C?oA>?̇a?NIɮ?]?Vh?<8?him?I$P?'`?K{O?+HKd?gw_؆?XS]?&A@% @@@@@&@(???????F@O? i?/> @Ct@z ?t?砂X@Ƥ@@1膄@f@O'n@@t.@t@w@t@@t@YJ@t@rG@t@Gz@KƧ.@KƧ@>BZ@KƧ@PH@KƧ@[W?@KƧ@@KƧ@Ƨ@9 xF.>@3?|h@3 ě@2tj~@2xbM@10U2a|@14֡a@10U2a|@1@N@10U2a|@1Zc@8J?U&?/ eb?F?H>?ƻ1Ta?"eM@8J? _?9Y,?+Dx?J>?Q@8p?"IHۜ?-BR1?hc?vI?3@@@@"@ ?????@ۥS@p +@ۥS@xF@ۥS@٦ @ۥS@ (@ۥS@- @ۥS@@R@Ow@R@=ce@R@b&I@R@As@R@Z)y@R@]-V@7_o@7e+@4 I^@51@3tj@3z@3@3@3@3oiDg8@3@3ݗ?1j?J?Q"Ě%?50??7?X—?I~y?~Fs?oi(?%bB?"?kxܓ?Ol?f?W\%?D`?,Z?8@@@@@&@$???????&ʵ?f:?Ut e?pB`@@b@NE+?yS?=?nzT?haj@in@@F%@Ft@F%@F:5@F%@Ff@F%@F@F%@F*:@F%@F=@Ƨ-@ƧQyR@Ƨ-@ƨR@Ƨ-@Ʀd@Ƨ-@ƨ +@Ƨ-@Ƨ[+@Ƨ-@Ƨ@3s@3)^@1pěT@1p-@0)"`@0)n t@/@/P3;@/@/ϲ+@/@/c +?}@TΥ?- ?/N?L7?(?QgH?| V? )?Ք?6K'Y +?,Uw?s0?| #?џT?b?VS +x?9Ν{??$@@,@*@(@:@9??????@ >ӭٟ>!TIJm~@Fq@Ƨ?7? GFF?;y>?!m%z@fB*@@[ Ƨ@[ @[ Ƨ@[;5@[ Ƨ@[4֡b@[ Ƨ@[ ԕ+@[ Ƨ@[ ^ @[ Ƨ@[ I^5@r߾vȴ@r/@r߾vȴ@r@r߾vȴ@rb}@r߾vȴ@r唯O@r߾vȴ@r݊ڹ@r߾vȴ@rae@6@@6@4W+ I@4Y|@3A7K@3Zc@3Eu@3G,@3Eu@3DD@3Eu@3Eu?)T?[ ?d3"7?W0 ?#?3ƒ?1?}ѿ,?ew?fF?v? E!?}X?}Ty?XԠ#{?aI*?7N?I$?Oh6c@@@@@(@*??????=6(ް?LiH?>%K?K1Ϟ@[ ?Ls@ru?\(?l.?ެK?6γ@he`@@]-V@]-V@]-V@^6Gt@]-V@^ Q@]-V@\e@]-V@Y|8@]-V@Yw+@$/@ؤT@$/@|p@$/@~@$/@{/@$/@zǧ@$/@|V|k@3qiC@3ݘ@2J^5?|@2D?h@1`A@1Ѳƒ@0_o @0?@0_o @0zq@0_o @0vM'?}@TΥ?q ֑?Fx+I? ۸ig?DH/7?y>m?| V?!T?CW?WHF,?}v?{8?nݺG?FG???$ɘ1?ŃH? I۵p@@$@(@"@6@1??????MDXz?' qz@?*(8vK@[[@~|?G()1?KXL?XT?X@f#b[@@bM@bM@bM@2X@bM@*2@bM@.3@bM@}Vl@bM@!-@ +=q@㕁%@ +=q@u%F @ +=q@rG@ +=q@߾vȴ@ +=q@ὥ@ +=q@h ԕ@6䎊@6S&@3+S@3+P{@2-@2@2OO M@2NT@2OO M@2NOv_خ@2OO M@2NOv_خ?)T?u:|?0? ?r {#&?R )?=fA:?$i %h?Qc +?H#=? E!?jOI?nwf?t?D(p?Z?0&YEd?|)-}(@@@@@*@*??????D5#YP?!){?KtA?eTC?Xx+?2he?J?-=~?ȧ?;M՚w?A?Mu]P%?f=䛮?O@@(@,@,@5@7???????P +?v0$?lA@?sѭ@Kz@iv?7?!1@LxP@b@m]@@"@V@"@%@"@d@"@dZ@"@1@"@>6{@"I^5@"hr@"I^5@"rF@"I^5@":~@"I^5@"W@"I^5@"~($ +@"I^5@"͑hr@74m8@7@3R I^5@3Rᰉ@2-V@2{@28D*@29x@28D*@2:1'@28D*@29+ ?3}?Qc +?K]4?9.?uxY??”z?&O?&?{4k?uR4H?ey?:Fa?GA?T0?< N ?P\?k!l@@@@@*@(???????A"?a#?mmz?`Gb{@X7qV@"s~?~:I?p s? :?Xa@rݵ)@@~"@;dZ@~"@D(M@~"@8SVE@~"@%@~"@~m@~"@}-@'-@'-@'-@'&@'-@(1&y@'-@'@'-@'#@'-@(P@+b@+b@%G-@%G-@#NO;@#NO;@#`d@#g8}@#`d@#`d@#`d@#`d?^j?؆Qd?c?`ƆƵ?zn~1?vQS?bMn?K}?l:?/ +?μjH0?I'%?bM? (ʢ?nՉW?c[?I?I@@(@*@(@;@:??????PA?JF(?1m76m?@~)&@' +?@+'?ql?{+jP?J@s@@M@z@M@޸Q@M@`B@M@҈p@M@@@M@Zc!@_;dZ@dZ@_;dZ@\hr@_;dZ@ix@_;dZ@`6@_;dZ@ae@_;dZ@a [@7>6z@7zxl"h@3+@3a|Q@3Ctj~@35oi@2Eu@2<!-x@2Eu@2Ezxl"h@2Eu@2En/?NIɮ?6 '8?@^ڢ??ԁ?4 ?| ?r5MS?Ke?Q?NM8/?GӒ?+QK?GA?+-/??*Q?}@@@@@*@(???????01GwY(?U& ?/ˉ@.Հ@aɭ?i>Z?UYaݣ?I֫c?MS:@o@‚ @@nM@nM@nM@n䎊q@nM@n@nM@nn.@nM@n@nM@n@^Q@_;dZ@^Q@^@^Q@^ (@^Q@]cA@^Q@_F@^Q@^"@4B䎊@4B3@/"@/vȴ9X@/DZ1@/Dtk@-Z@-@-Z@-F]c@-Z@-S? ?&H?N?뤽?? 9?^? ?MN ?rJs?EP?ڂc?h,à? J?O?y8$?ʬv?ˢL1?@@@@@*@(???????.j?)SE?$67@n^?@@^uF?I4U?EmL-gr?G;?3Ku@gjvx@@\(@׾5?|@\(.@\(.@\(.@\(@-@\(@׿vȴ@l@@l.@l.@l.@l@ۥS@l@@6۹~($@6d8@3c.Mm@3n".Qn@2&.NC,@2&@2~($ @2&@20U2a|?q!U@8#@8:@8 >+?DE?W_?1j@8@8i@8?dp?"?y\@8 *@8p@8?^nl?xb@@@???@6Ƨ@6@6Ƨ@6^ +@6Ƨ@6f@6Ƨ@6E@6Ƨ@6I^5@6Ƨ@6f@7K@@7K@n.@7K@n@7K@|Q@7K@u"@7K@- @6hYJ@6fR<6@2xr Ĝ@2x$ xG@1~Vu@1}@1(@1)y @1(@1)rGE@1(@1(TɅ? ?&?a#mU?J? +`?dW?)T?ā?36G?l™U?=W?$̤T?<{??3Z\?9XNu?_խW?gϵ@@@@@*@,??????6aUV2H?'?1v0@6@W:?H8&XQ?Q)z?W]ʭ??O@iD.@@S@^5?}@S@֞"@S@{"`@S@ I_@S@gRT`@S@J=p@D$/@DlC@D$/@Dj~@D$/@Dx@D$/@EA7K@D$/@CfA@D$/@D@6D@6ݫU=@4+ J@4hۋq @4V@3IQ@3sh@35sg@3sh@4ME@3sh@3 '?2}?Ea:j?ŏB?³?ST;?<_?Y͍_??MQ?xG?oEcr?K#N ?]b?eg?0@4+ I@5;u8{@4 "`B@4G=ތ@3iB@3zR6@3iB@3!A@3iB@35.@8J?p?'? do)? dߝ?ZK@8J?;]^Y?7?)L ?er?= +@8p?r`?sK?HbL?2Q?^@*@,@(@<@:?????@W ě@Xě@W ě@W5?|@W ě@Xa@W ě@XLzxm@W ě@X=p@W ě.@ehr@e@ehr@dݲ-W@ehr@d@ehr@e+a@ehr@e xG@ehr.@8@8dSMj@4\I^5?@3K]c@3tj~@3"`B@3Y~($ @2+j@3Y~($ @2ٺ^5?~@3Y~($ .NC,?ٛP?;F?Գ/#*?6V?! ٤5@8?:-%?T ?SXt'?َVn?i0K @8?@?l{)ފ?W Z?wc U/?7r_@8 @@@@@?????@#$@#ti@#$.@#$.@#$.@#$@#Z@#$@#lC@0;dZ@0ۥS@0;dZ.@0;dZ.@0;dZ.@0;dZ@/w +=p@0;dZ@/9X@6#g l@6!$/@4=hr .Mm@3`A7L.Qn@2,<.NC,@2,<@2C\@2,<@21&?)T@8#@8:@8 >+?je?:ka?)T@8@8i@8?,ۯ?w[@?D/ +b@8 *@8p@8?>?<@@@???@Λ"`@ΛS@Λ"`@θQ@Λ"`@䎋@Λ"`@n@Λ"`@Ϸ+j@Λ"`@Ϭ@Dt@DZ@Dt@ݘ@Dt@}@Dt@Fs@Dt@:@Dt@@2:@2u"@0\I^5@@02ᰊ@/|1&@/ w1@/(ۋq @.]cA!@/(ۋq @.^ѷY@/(ۋq @.\ߤ@?^Q5P?Q^?NSCQ?t4BT?ͤr?-(?bV,??8K?!!?0??cPQ? $gv?zny-i?$–?Xk?N((@@@@@,@*???????/XڠE?s{ʙ?*i@ό-m@g?iTJ?An?m9@/t@/5%jQ@.cnP@.c)`n;@-Ǔݗ,@-l@-Ǔݗ,@-.J/@-Ǔݗ,@-&sˇ@8 +Ny?M9?(uH?bew?6?N@82r? EN?" ?0j3A? m"?X@8L?Q=s?%?gȶ?$?8(@,@,@&@:@;?????@\).@\)@L/{@\)@T@\)@R@\)@O䎊@\)@KC@8Q.@8Q@oj@8Q@j~@8Q@+@8Q@tj@8Q@*g@8p4m8.>@3kS@34D@2"`@2~($ x@2 [W?@1&x@2 [W?@1|@2 [W?@1sP@8J??n ֋?= 0?Lj!_? V߹@8J?N47?42?,?1Tn]?fF7@8p? Afg?o'@@@@@(@*??????g,!*ynӀ?3h?R@a@ȝV[?N ?iOXvj?ƕ?ϙ?`R@`'%@@ ě.@ ě@q @ ě@?@ ě@ߤ@@ ě@O;d@ ě@(@`A7.@`A7@&x@`A7@ۋq@`A7@@`A7@v@`A7@9@9.>@4+ J@4~$@3V@3PH@2̿[W?@2vȴ9X@2̿[W?@2@2̿[W?@2|@8J?LS{?ɲ?d"QZ?Փz?^A@8J?g3?W@3t?1`?s}?Ft*5@8p?|׿pZ?z."?6F:?mΝ?@@@@*@(?????@bM@Õ%@bM.@bM.@bM.@bM.@bM@ŔO @$/@n@$/.@$/.@$/.@$/.@$/@՛=@7r@7rT`d@5|hr.Mm@4j~.Qn@4a:S.NC,@4a:S.NC,@4a:S@4sE?]@8#@8:@8 >+@8I?9!. ?]@8@8i@8@8S? +#9?*wjs@8 *@8p@8@8 ?J'Y=?@(??@5dZ@5͑hr@5dZ@5ͫU@5dZ@5ȴ9Y@5dZ@59X@5dZ@5̋C@5dZ@5vȴ8@tj@Q@tj@G@tj@%zxl!@tj@( ԕ@tj@An.@tj@L>C@7!.@7>@4hr @4C%@3A7K@3@3:S@3 @3:S@3H˒@3:S@3g l?A[F?\?K̃?yQ?Ji?ZsZ?ك|I?S?~?DzC1?MuVQ?ٲ? }P!?5Jܦ?W+ ?<05?%?)0@@@@@@*??????hUAr?߬?w`) ?i\wa@5A@4O??`1@+G?޽_6@l6k4@@]-V@l@]-V.@]-V.@]-V.@]-V.@]-V.@2mhr@2a@2mhr.@2mhr.@2mhr.@2mhr.@2mhr.@4uS&@4W=g @1^5?|.Mm@1Htj.Qn@0,<.NC,@0,<.NC,@0,<.NC,?}cI@8#@8:@8 >+@8I@8?|}q@8@8i@8@8S@8?h3z@8 *@8p@8@8 @8 @?@-@@-@v @-@-Թ@-@N ?xqC?Ѐ>(?f_Ԋ@@@@@(@*??????<?%%e?e?)ޒ@…&@u$c?, #K?#>ݔ?TS7T?Af@s@@(@@(@s@(@fA@(@߾vȵ@(@׍O;@(@_@HlC@H\(@HlC@Hě@HlC@H1@HlC@Hzxl"@HlC@H@HlC@HeP@5D@5Xe@3}hr @3}C\@3ttj@3q.H@2@2JL@2@2ᰉ@2@2?o 6}?U?cD?CW?U#v?0r>?R+?^?Lw?e?tbJ?%U|5?y4h?@@$@ @"@9@5??????+ӌ7:X?13[*? ^\ݗ@J$@C?Q"0?-p*?|< ?`l`z@i@@@r @.@.@.@.@.@yZ@y+@yZ.@yZ.@yZ.@yZ.@yZ.@4p4m8@4aX@2S.Mm@2A7K.Qn@1O M.NC,@1O M.NC,@1O M.NC,?2}@8#@8:@8 >+@8I@8?| @8@8i@8@8S@8?&*0\@8 *@8p@8@8 @8 @?@\TF@\Cn@\TF@\R@\TF@\^@\TF@\Y=c@\TF@\O@\TF@\Jqi@ߤZ@ߝ/@ߤZ@ߢ&H@ߤZ@߆&@ߤZ@ߐ )@ߤZ@ߏw@ߤZ@ߔm9@8r@8p@4B ě@4?v_ح@3`A@3c @3(@3v_ح@3(@3! [7@3(@3$#?ꯨT?DE?_΋?܆?RC}q?˻??]?sw)?ٶm?T?a8w|?mq`?}?US9?@fo(?3 D?7Q@@@@@(@*???????D%c&7?lrYb?U@\P#Ş@ߔ~?>[?sʫ +zY?gO?ef@mn@@+# +=q@+# +=q@+# +=q@+%@+# +=q@+$P=T@+# +=q@+$r@+# +=q@+")U@+# +=q@+#;O@_p +=@_p ě@_p +=@_mtMd@_p +=@_o@_p +=@_q.@_p +=@_p@_p +=@_p{@4S&@4r|*@1#@1$2w@0PA7K@0PP3:@0B@4@0BA ~@0B@4@0B!@0B@4@0Bѷ?|h2:?pPb?ȟQK?ɰM6?A]2?"{@Y8?|b@?A*?U#v?=W:f&/?dȨ?Uk>&?p5/?Eʚ? ˁ?b~?6ִ@?o@@$@ @"@2@4??????l? Ȁ`?+xNRv?5@+# q4@_pmkf?K7s?'ca?!l&?\=n~@f*]@@2-V@.+@2-V@"Ѹ@2-V@,<@2-V@'/@2-V@,zxl@2-V@*~"@^bM@^wO;@^bM@^DJ@^bM@^<64@^bM@^>BZd@^bM@^TzG@^bM@^Vl"@8B䎊@8E '0@3I^5?@3kP|@2~"@2F]c@2!.I@2$/@2!.I@2ӕ$@2!.I@2Q?2}?O\?C1?]mM?PY8~Qj?"eM?|O?k@?pg}5z?-w?*v7?J3?>xރ?YW?<?+L?`?ba_@@@@@"@(??????L\(AI??Sy=t& ?YP0Z0@, ,@^g늵5?sT?yWQ?cMF#E??@eBa@@.O@0 ě@.O.@.O.@.O.@.O.@.O.@i1&y@in@i1&y.@i1&y.@i1&y.@i1&y.@i1&y.@3쿱[X@3}Vl@1 I^5.Mm@1tj~.Qn@0iB.NC,@0iB.NC,@0iB.NC,?| @8#@8:@8 >+@8I@8?Ol@8@8i@8@8S@8?aI*@8 *@8p@8@8 @8 @?@/-.@/-@0D@/-@.V@/-@0|@/-@/A@/-@.}Vl@ .@ @ @ @zG@ @.2@ @ߤ?@ @qj@9[~($.>@2S@2$@1-@1؆YJ@1Y~($ @1Z=p +@1Y~($ @1Z0 @1Y~($ @1Z,<@8J?d̺?tcj?Q?Ot?tJ?bM_x?%F?['?1'7?@?PS2K?b@?u?nwg?͓E'?O|q?#.@@@@@,@,??????Snd?_;?8e?(@/]m@4kt?GߵZ%?0G?(m?WG@s߁@@Ux@UxbM@Ux@Up +>@Ux@Ur-V@Ux@UnzH@Ux@Ug8}@Ux@Uiᰉ@o@ I@o@L^@o@$/@o@Z@o@8YJ@o@RT`@5Q|Q@5R&IR@3+@3&@3;Ƨ@3+a@@2D*@2hr @2D*@2- @2D*@2T`d?|O?gUq#?P"hI?L?-w? YdR?m~Z_s,?J>? +tM?Oc?l?}@@@@@,@(??????jT?~j/??ܿ?a }@UsoP@?ZΕ|6z.>@4 I^5.Mm@3)"`.Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @fx@;dZ@fx.@fx.@fx.@fx.@fx.@O;d@7Kƨ@O;d.@O;d.@O;d.@O;d.@O;d.@8N쿱[X@8m-V@5sS.Mm@5@`A7.Qn@4s&.NC,@4s&.NC,@4s&.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@Q@Z@Q@t@Q@ѷ@Q@u@Q@@Q@cA@0u@0\)@0u@0ӎMk@0u@0,<@0u@0ԇ$@0u@0@0u@0@4g l@4h ԕ@0ěT@0T@0A7K@0zxl"@/ߤ@@/Ԣ3@/ߤ@@/`d@/ߤ@@/2a|?|O?%ñ?!N?,rg?rf???#?|O?uie?v@b?jX?+!?äqY?]?/?T?XW~?$?L8AS@@@@@,@&??????^D<} ?CNE?#9 [@c3@0Ԃ ?ڡG7p> s@3ʚef@BNG? ? ʘH@1iB@0=b@1iB@0*1?Ol? U?-\8?lfW??O#?E?5?1?5;7ĻM?4="C!?ES?ЙQ$?gT?ĶBϪ??ھ۲?{=rK@@@@@*@*???????s(?O9P?Do?o˃@Ɍ@!~?.8r?2Mw@6O`?2D +@\o|@@A$/@2 Ĝ@A$/@?|g@A$/@1&x@A$/@)rG@A$/@,cA @A$/@L@d/@y+@d/@kR@d/@nV@d/@b7@d/@k]c@d/@U=@8H@7u!S@4\I^5?@4_͞@3y7KƧ@3.H@36z@3_ح@36z@3#@36z@3A [?ʘzT? ?c?Z T?r.,i?/?^*?͔{?zh\?u>M? U?PI?Ttn?$jB?q6tN6?4`?**Z?p@@@@@(@*??????? 2?v߄Ŏ?yM6@0ez@[PB'?h?-+?^n!@ F< +T@oW(@@nP@@nP@u0@nP@9!@nP@m@nP@Gi@nP@؀v@dix@bm@dix@di2 @dix@dZU]@dix@d\w@dix@da#3G @dix@d^@8YJ@7 @4\I^5?@4UkAV@3K"`B@3B)@3@5@3,@3@5@2d?@3@5@3-Q-b?qT?`M?:ҖD?8(/?#<'?5xw!?_R?p")?w ?y$?$;d3?{,o?~6?"?5?;Me?_?#"o؅K@@*@&@*@2@6??????Q],?B4L@?pA_l?f\Ӗ@Q@d^sd?}l}?tT5?`N?ܐלvJ@sx9@@@1&@ffff@1&@zxl"@1&@zxl@1&@hr@1&@O@1&@M;@o@T@o@{~@o@z^5?~@o@mV@o@v@o@sE@8?@8/˒:)@4B ě@4M@CTTȺ@f?{AV^?V[־{?ߎ{@ ?HoLh@r0-`u@@_!G{.@_!G{@`0 +>@_!G{@`d@_!G{@`}+j@_!G{@`KC@_!G{@`?.H@.@@/ M@@)^@@T!-w@@.H@@ݗ+@9,<.>@4hr @3т @3`A@3z@30U2a|@2~"@30U2a|@2um\@30U2a|@2y#w@8J?Ȗg?rF)?>?r7?cx @8J?I>Wj?4kU?4i?UTj?>y@8p?bH=?~~?>?I$?{%@@@@,@(?????@`B@ͱ-@`B@ׅ*>~@`B@ߞ9)@`B@*ӿ@`B@,@`B@"@hQ@i$> +@hQ@h`wF@hQ@hhfR@hQ@h{F@hQ@h-nZ@hQ@hIDC@75S&@74mC@40ěT@42fn@3ȓtj@3J@@2O M@2p0@2O M@2 ,@2O M@2ݔ,LO??c8?a?ӯ/?[_0?|G?[y?PC9 +?d)E?Zg?4?]ex‰?}W?6TW;?_qZ?)N?{:5i?#@@$@*@,@6@8???????P{2)90?o -x[?Z@~@h8?J MT\?uPR?Fǂ_@l@ry +:7?|2?f~? 2?$̙?5-?pWϿ?-qvP?O<@@$@$@&@9@7???????r68?]cʷ?eI"x%?hp@@c/Ej?}+՘?x~HO?g-?߁ |@qkd@@eȴ9X.@eȴ9X@e@eȴ9X@e&x@eȴ9X@eO N@eȴ9X@e@eȴ9X.@.v.@.v@."@.v@.j~@.v@.)ᰉ@.v@.;@.v.@7I_o.>@2W+ I@2Sa@N@2ttj@2-V@1a:S@1hQ@1a:S@1W-@1a:S.NC,@8J?u:|?!=T??Q?"@8@8J?P ?,?dXM?Gfx^K@8@8p?8hz=?OD? Q?? S @8 @@@@&????@@`@@@Ǎ@@T6@@kj0@@ʟ@@@Hg@@,@@|E@@U@@_!@@u_5@@Y|K@7>6z@776@4J^5?|@4E@3M-V@3L/r@38D*@32~Ao@38D*@333M@38D*@35?\l6?0?9 %S?}-.?;G?A? C`?3Z\?2]7?`x?!B?՘]G?_u@@@@@,@*??????B/@Wth?9z͟i?3ԑN@rĢg@հ?Y63 ?T 99q?jQ*? +:@fĀ@@p@ohs@p@o1'@p@p}U@p@p ~)@p@p t@p@pm\@э@Ѽhs@э@у9@э@фJ@э@эqu@э@э r@э@ь!-@8@8zxl#@4hr @4@3j~#@3_p@3m8@3y @3m8@3ߤ@3m8@3o?Uy?B-?[_(?w?b0)3? r?,*D7?"JUO?P{j?P?JL\?J3?! ?'h?a?]O8?♊N?ȩ@@@@@$@,???????~ [W)?wyI=?hJFұ@p g6@эqx/?F[)?u}ηx?8E-^ ?1uw@*~MlJ@&挿CX?C5 hG6?$I?>?B~qF@sOԱ@@[?|h@[Ib@[?|h@[?Oy@[?|h@[?ᝆh@ I^@\(@ I^@U@ I^@@ I^@~Ί@ I^@S]H@ I^@G[R@64m8@6ban@2?|h@2Ƥ#ͽ@2`A7@2&\@1c@1d@1c@1c?@1c@1cG?3<' ?O??ꃩ?5G?Qm0I?+ I?$%'?޿`?0ң ?Q9?nL@?,+e?X?܃ݴ?bDn ?$](6@i/^.@@&x@O;d@&x@'*"@&x@}@&x@?$@&x@p @&x@:(@]hs@].@]hs@]7@]hs@]s3@]hs@]>,@]hs@])o@]hs@]6@8 _o@8@2ٺ^5?}@2 W@2tj@2AP%@1kxF^@1M-o#@1kxF^@1I~_@1kxF^@1^%\I?Z?B +?"|=e?}MmH?0Rp?!C?Z?~9;xN?sEj? +@jn[S@@ +Ƨ.@ +Ƨ.@ +Ƨ.@ +Ƨ.@ +Ƨ.@ +Ƨ.@ `B.@ `B.@ `B.@ `B.@ `B.@ `B.@8O M.>@4 I^5.Mm@4`A.Qn@3m8.NC,@3m8.NC,@3m8.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @@`n@@a|@@@@bM@@rGE@@GE8@8E@8@8E@8ѷ@8E@8@8E@8y=~@8E@9/@8E@8@7@7lD@3+@3e@2tj@2:)z@2[W?@2'/W@2[W?@273@2[W?@2H?ai?hĔV?ʶs?,OKu?Ji?(ϢU?Y?^1?? -oɧ?Җq?? 3W?׬?pPȻ? + l]?q+U? `?mΝ@@@@@,@(??????i@R?Qz?^z) ?iر@I@8Q ?m/oו ?{pbf_?D߉E?l\l@rǬ <@@>+R@>+ I@>+R@>,!.@>+R@>+҉@>+R@>-\@>+R@>+)^@>+R@>+ I@*~#@)l@*~#@*JM@*~#@+)^@*~#@*g@*~#@*qi@*~#@+~(@4|Q@42X@0+@0O;@0A7K@0NT@/(ۋq @/)Dg8~@/(ۋq @/(>BZd@/(ۋq @/(9Xb?]?h?D&?:Z2b?Dj?+ʦ_?]?f?DP?C B?݄ ? R?*wjs?򯞼?|׿pZ?$H?pk Y?j?@@@@&@*??????Q?:?25*?2@>+@*?A?F?A7I?}ϷA?zS'sJ@s87e@@?|@ I]@?|@@?|@L@?|@: @?|@m, +@?|@qq@ ě@"^@ ě@0z@ ě@rXV@ ě@A@ ě@8@ ě@,T|@9H@9+٦@3^5?|@3jJJ@3-V@3##N@2}ce@2]6v@2}ce@2{ԸAQ@2}ce@2pe?&#;?3?)`xy?z?:׉?ܐ?Vz?ڝ)?THN?=?6ad=?p6z@4$tS@1 +^5?|@1 +,<@0v-@0vȴ9X@0 k@0@@0 k@0O;e@0 k@0&?|O?*|3N?&P?ArU@? f?.'?}ѿ,?La?^ o?]bn~?!U?{?h,à?^&? +?]??ܑ ?SP@@@@@*@&??????Zb?& ?-?&Gj}@[ +vcG@9a"1Q?Mps:?F9;t?Hi ?S=-v@g v@@޸Q@ݲ-V@޸Q@މU@޸Q@ދ^Z@޸Q@mk6@޸Q@[E<@޸Q@_/@ +=@ ԕ@ +=@@ +=@Ȉ@ +=@'8@ +=@՘M@ +=@@oC@6 xF@6e>i@2^+@2^x@2."@2-Y@1s&@1q@1s&@1rIR1I@1s&@1qyA꥝?gQ?S?b??c娸?PR?|"<~~?#u?^:[,? k?w~A?3?'@?ڦ?[t?s + ?2o9?5zj@@(@$@$@9@6??????s?L[d?t:D?.:Eѕi@ݮU@?:u, ?Oz?HA>q?b]H@g2p|@@[ݲ-V@[ݲ-V@[ݲ-V@[iB@[ݲ-V@[b@[ݲ-V@[ѷ@[ݲ-V@[]cf@[ݲ-V@[lE@nP@nP@nP@U@nP@ ԕ+@nP@ oj@nP@ ]c@nP@ @3*0U2b@3Q @/"@/u"@/dZ@/F]d@.-C\@.*#9@.-C\@.*~"@.-C\@.*L/|?| ?dY{?ě?vk?n{K?w'?| ?jכc?t(?ҧ?c3c(?.8?YE?˛͇q?٤?*|\/?pk Y?&I@@@@@,@*??????3ՀG8t\?$2eXD?6e2f[@[)@`i?DA݀?WG68@2OO M@2L? MV{?sOewS?(`ƴ?__z8`?g;+u??#?I ?,?rPs?kG r?âa?|T ?TK e?+k?B-j?D`?8@@@@@,@*??????t~`H?~y(Ku?]IXwe@z5@]t?? p?Rp@6S?٥f@iud@@o@Y:1@o.@o.@o.@o.@o.@$DT@$Q@@$DT.@$DT.@$DT.@$DT.@$DT.@8V,<@8;$@4?|h.Mm@4-V.Qn@4 [W?.NC,@4 [W?.NC,@4 [W?.NC,?@8#@8:@8 >+@8I@8?NK3@8@8i@8@8S@8?O>F@8 *@8p@8@8 @8 @?@N+@j~"@N+@'&@N+@2X@N+@e@N+@\@N+@ ᰉ@tvȴ9X@t9X@tvȴ9X@tN;5@tvȴ9X@tD2W@tvȴ9X@tF@tvȴ9X@tD/@tvȴ9X@t=b@8]ce@8yDg8~@3uS@3\Z@27KƧ@2ҩ @25sh@2 <64@25sh@2Ov_خ@25sh@2 <쿲?=,܊{g?Ȼv\?c?T|2?Y@?L? Z ?&ژ?-S^?=:=N>?C]F~?(z@?pi?z?v'X?C?wͶ?`i=@@@@@*@*??????)9?"[?y;3@ `R@tH-?CѱK?PTD@Aτ\?`%*@o-@@-bM@-E@-bM@-Ӂ@-bM@-w@-bM@-s@-bM@-e@-bM@-!-w@bM@nP@bM@O @bM@3332@bM@C@bM@s@bM@:~@6 xF@6oiDh@3E?|h@3Iy @2`A7L@2y=c@2#@2)@2#@2)rGE8@2#@2)rGE8?F/P5?AZ??\2?D?2 ?GZ?x@@@@@*@,???????$a2`?9~?:ZU@+w@J`?X ??[&*5l?im4?]G|?0-Bq?͗u*?L5Sk?bM?h2:?n3?>RK?I?I@@,@,@,@7@;??????CDL?/Ϸ>Wu,{g@K%@?i6?>7q?h#l?w>1>m@s *rW@@7Q@7RnQ@7Q.@7Q.@7Q.@7Q.@7Q.@$5?|@$34l@$5?|.@$5?|.@$5?|.@$5?|.@$5?|.@4쿱[X@4 Y@1hr.Mm@1"`B.Qn@1 +0U2a|.NC,@1 +0U2a|.NC,@1 +0U2a|.NC,?|l@8#@8:@8 >+@8I@8?|g68@8@8i@8@8S@8?}@8 *@8p@8@8 @8 @ ?@}p +@ς\(@}p +@b\(@}p +@t3@}p +@p)^@}p +@s@N@}p +@stj~@}aG{@}O\(@}aG{@}R@}aG{@}WO:@}aG{@}ca@P@}aG{@}^m\@}aG{@}a [@8|Q@8 @4f+ J@4`{@3-@3$tT@2[W?@2Y|@2[W?@2ȴ9X@2[W?@24m?3a=? )}o?Q-(Z?4]t?bJֵ?>V$?WZM?UX|e?~?wAV? E!?f:[c#?mW?8J??}(3?.SM?x?r@@@@@*@*??????l0?V"Q?St`7&?ai ~@uD$t@}_&1?ult?uGWIM?ݛs'z?1_@oЏ@@1&@Q@1&@4K@1&@"@1&@C @1&@VOv`@1&@1@O;@z@O;@E@O;@cA@O;@4m@O;@@O;@/@8:@9\(@4+@2&&I@3`A7L@1em\@3p@0ٓ @3p@0n@3p@0ڹ?І$?O;5?ѠD ?^2?.I?̼+Hn?QN?Žs3 ?[?AM?z֪=?Xb?F(?+Qt?%Zo ?L(?;}?S^^G>@@@@@*@*??????nTHìtH?4/?zqC@@#0_@W?لmk ?ſ@DK|>@).@i7ų&@@5?|@L@5?|@|P@5?|@kR@5?|@wkQ@5?|@XyB@5?|@$9?]Ov?ڢ:]S?Tfx?EP\?/j~? Rh?ۃ?K?&Q~?)?ы>?gJ@@@@@5@6??????gm(*E `?u -i?;k@F,%@v?4{7? +9/?Ct?}S?a@c a;N@@aG{@a7K@aG{@a@aG{@a@aG{@aaf@aG{@`d@aG{@`n@Ǯz@Ǯz@Ǯz@@Ǯz@Ǯz@Ǯz@k}@Ǯz@@@Ǯz@˒:@3~($@3Ƨ@/j~@/!-w1@.&x@.H@-`d@-*0U3@-`d@-@-`d@-ߥ?|O?[e?d_#?.cC?@[?íC@5 ě@5j͞&@4~"@4~@4^6z@45\(@4^6z@4FIQ@4^6z@4*͞&@8J?o\3d?cOֲ?- ?'&?@8J?K)?*&k?Y5}Go?֡(?.Э[@8p?:UYP?H/b?*Q_?VM?!f@@@@,@$?????@n(@nj~@n(@n/@n(@nwkP@n(@n!.I@n(@ns@n(@nq @Pmhr@Pm@Pmhr@Pm5Xy@Pmhr@PmB@Pmhr@Pm\@Pmhr@Pm&@Pmhr@Pm@2!.@2oiDh@/G-@/G#@.mO;dZ@.m@.Vl"@.!.H@.Vl"@.!.H@.Vl"@.}H?^Dw'?J`Y?$C@?ƠJ-M?u?+ʦ_?bV,?&uE@?/BH?Kd]?qN?{L բD?b@?6?|׿pZ? ??b/bJ?f_Ԋ@@@@@,@*??????ISZ?)\?8Y#`>w@n >@Pm)?Gߵ? +0^J?9tִ? oM@sg@@qm@qn@qm@qm@qm@rW@qm@u?|@qm@pH@qm@k6z@ow@n+@ow@mhr@ow@ka@ow@lcA@ow@m(@ow@l>B@4[~($@4[҈@0r Ĝ@0y @0b-V@0`C@/QN;6@/N!R=@/QN;6@/O͞@/QN;6@/H9Xb?}ѿ,?`?$C@?G?~|+?-! )m?|O? ,C?O(?9~F?<U?@ A2?=Ca?Ф?]?hB^?7? `@@@@@&@*??????A]:̮?MQϟ77?)K@qFj^@m߀?l?JD8@MzG@Mz*6@MzG@M{6ג@3uS&@3uL_@1^5?|@1Z`@0-@0\@0iB@0PwS@0iB@0C?@0iB@0,V?|b@?zR?7*?ge?c7A?uZΑ?|h2:?.?(Wg?2s`? *+R?SRe?g?Ȋv?Ψ,UiW?ͩ&?B1-?'f@@*@$@@4@4??????8h? gP?GJ?00-C.D@JR@M{GS?72C?PтՆ?~9]?Gh@f @ @v@@@v@!/@v@Ov_@v@1@v@6@v@zI@$3333@$6o*@$3333@$C@$3333@$m]@$3333@$IQ@$3333@$Vϫ@$3333@$hr@7S&@7!:@4G+@4N\N<@3'KƧ@3)'RTa@3?䎊r@3N$t@3?䎊r@3FE@3?䎊r@3Yԕ*?W?1?0?^ܪɅ ?(:)[a?!8?Q?y\?]:.?dc??sB?ٲ?'W?jNR?{W?S̷$?3?57@@@@@*@,???????Y 9}T?QqetC?:٤_#@x~@$e ?o6rr$?X3G??7S#m@eP@ +@V@V@V@.3@V@V@V@ߤA@V@t@V@U=@`+@`XbN@`+@`e+@`+@`u%E@`+@`=c@`+@`"@`+@`e+@2p4m8@2p'RT`@.G-@.HK]c@-?;dZ@-?H˒:@- +#9@- +d7@- +#9@- +W'@- +#9@- +qiC?^Q5P?GA?"?!#?6r In?$?bV,? C`?90?EP?,Y?X78?cPQ?.+?u@>N ?hB^??f_Ԋ@@@@@*@(??????V o?m ?7dh*9?' +B@_JW@`zW?Fnzl?6JDj?'=?e\ @s +ے@ @tQ@tLC@tQ@tK~(@tQ@tBh Ԕ@tQ@tBC,@tQ@tU?@tQ@t+S@J@J@J@J'/@J@JnP@J@JЉ'R@J@Jξߤ@@J@Jt@6쿱[X@6|Q@3+S@3+qu!@2tj@2tSN@2䎊r@2ߤ@2䎊r@2U=@2䎊r@2z^5?|?F/P5?(.?u*y?vI?Fǥ?6% v +?UbB2?Zk?2'?8h\?uG<?>?~$?{37@2B@5@2?q@2B@5@2A +P?~Ov_ح?A?I '?Ă?fRb?PTP?؂QJ?|K"λ@fm(t@@#@@#@n@#@@#A\@#@@#Fbت@#@@#DX k@#@@#@@#@@#A;s@.O@.+@.O@3EN@.O@/4l@.O@9!@.O@6#+k@.O@=܌"@4 xF@4@2=hr @2:c>@1A7K@1o(@0,<@0ca@0,<@0!(@0,<@09@?|h2:?h.vb?f ?Qx?@>?^|#D?|b@?QY??ڙ?1k4x1?#?Znv`#?(?q?xeS?ʽ?v"s?OBX@@$@ @ @4@,???????;3 n@?g.?=S?B9>@#A`a4@58Ɲ?\r`q?b!~R??SM!?kC-b@fA@@7K.@7K@Q$@7K@9@7K@aw@7K@@7K@o@4+ .@4+ @8l6A@4+ @7tO@4+ @8@+:@4+ @9L @4+ @7͞@4(YJ.>@0xr Ĝ@/RO&+@/1'@.Q+u@/b~@-k}@/b~@-Ip@/b~@-%ʏ@8J?]???dX4/? Aw?/Xye@8J?Լ?^C~+?F6Hy?҉[\?6r'@8p?`T?C?_-?x?vH=@"@"@(@>@<?????@&x@E@&x@^5@@&x@+ I@&x@*0U2@&x@rG@&x@u%F @u@tj@u@\*@u@\)@u@2@u@?@u@"`B@8hYJ@8j=p +@3S@3M:@27KƧ@2䎊@2h@2bC,@2h@2\_@2h@2],=?Br?[ꕠ?@g?1t?ťBW?zvȭc?3a=?7fU?6$l?yCW?La?_I?ݾ?k~?ZaQ??;kr>?|+~@@@@@$@,??????jV?\`5?@: +?@?_6{@!Nt@?` A?~R.3???G|Z@ho`w@@ffff@ffff@ffff@ffff@ffff@oi@ffff@cA @ffff@z@ffff@?@:S@:(@:S@:}H@:S@:%@:S@:;dZ@:S@:v@:S@:b@5hYJ@5i#w@3I^5?@35Xy>@2Ƨ@2}Vl@2p@2oAs@2p@2p{@2p@2p{?}ѿ,?@k=[??j6_? i?4?}ѿ,?z?36G?6)}?u$6??oܧ?t?I@1@1N@1@1<˷@1@1wk?`/.~?И?_p?6狳n?A2f?Zf?¨Sp*?].>x3?7$]? 2??oH?Dk'?2?2T?`z&??^.ג4?#4U@@&@"@@7@:???????5Q?ES^p?a+W2?V4h1E@'>b@^zGYH?Zu9?] .An@q Yf@ c?R?7l?,?}pxXVn@f06@@1|h.@1|h@1)@1|h@1@1|h@1|@1|h@1,zx@1|h@1@@nO.@nO@U$@nO@x@nO@Z@nO@s3333@nO@r{@7 ]ce.>@2hr@2hۋq@2'KƧ@2*)y@1ush@1@1ush@1x@1ush@1T`d@8J?OaMy?P"hI?8i?k;?ѫĵ~@8J?k!?AuG1?ѡb??U? ,@8p?fI%?+jf?p_?;kr>?8wx@@@@*@*?????@+.O@+,@+.O@+(6@+.O@+&*7@+.O@+8'V|@+.O@+3#6@+.O@+7@.1@_v@_:S@_v@_=@_v@_4@_v@_ H<@_v@_~3@_v@_@65S&@65/9@3^5?}@3E) +@2]V@2Sѣ[r@1QiB@1;5@1QiB@16HO@1QiB@16Ӫ??:[?9#? rU?C?&)?~Ov_ح?>۶}?!(8?A|:?]g[?;Rtb?PI?&ݮ7?67Dx? +d?7?>-!@@*@"@ @:@8???????e=|KFM?NfO?aC=H@+2pw@_e?k kV? 3c?OBJS@Q{5@dڧ̼@@a9XbN@a<(Ž@a9XbN.@a9XbN.@a9XbN.@a9XbN@a:kP@a9XbN@a;~@s3333@vE@s3333.@s3333.@s3333.@s3333@yb@s3333@w1@7*0U2b@7,zxl@3+.Mm@2`A7L.Qn@2._o .NC,@2._o @2)_o@2._o @2)ԕ*?F^S@8#@8:@8 >+?q?6?Br@8@8i@8??sB? j?pr@8 *@8p@8?)@Jq?)@Jq@@,@*???@Yvȴ.@Yvȴ@Y9{i@Yvȴ@Y{@Yvȴ@Y!O@Yvȴ@Y@Yvȴ@YDc@zG.@zG@xQ@zG@z!@zG@-#@zG@(@zG@"1G@4e!..>@0 I^5@0o:@.1&x@.)"@-u%F +@-c^5@-u%F +@-6:@-u%F +@-Ʋ1@8J?EU?p-n?5?[?y@8J?7rR?S|]?Ä5?]^A?+@8p?zߔ"?yu?ᄢo?~3]?1I@$@(@$@;@8?????@{dZ@|j~@{dZ@u%@{dZ@삨/@{dZ@pr@{dZ@u=@{dZ@ +Wr@^Q@_vȴ@^Q@i@^Q@,T`@^Q@@?Q[@^Q@6b"Y@^Q@<0@4!.@4ڭ>@0hr @0}@0;Ƨ@0%&Y@/Z@/oXKo@/Z@/y%!ٍ@/Z@/tfy9?}@TΥ?Ċa>?9 p?X5?gV?ըzj?nO?_6+@d0\|@@}@}A7M@}@}ae@}@}-w1@}@}҈@}@|҈o@}@|%@_;dZ@_;dZ@_;dZ@_vȴ@_;dZ@_@_;dZ@_@_;dZ@^%@_;dZ@^Ov_@3쿱[X@3t@0?|h@0=J@.;dZ@.:~@/L@/Lzxl"@/L@/Lq @/L@/LL_?|O?Čۨ1A?7[䭝?ݶ\r?V^?)]\?| ? ,C?ٚlq?G>G?77?"?=Ca?sq#?W ?$H?ܑ ?<71@@@@@$@$??????1!G?*=3?!]@|Ҥԫ@_D?J^]a?B |[Q?ߠ=r?3/@f{^@@@n@@n@@n@C9@@n@L"h @@n@=Vl@@n@>($ x@@n@GB?2}?+@4+@4F@397KƧ@39e+a@3+xF^@3*6D@3+xF^@3*qiC@3+xF^@3* @8J?}>??$jB?3 +fu?Qc +?RLnj?7=^9?+d?c?qN??hE?^ a?Xk-7?l@@@@@$@&??????5/z?IzD?3Go@z;X@S;8?hu51D%?T(~*?&9:? kC@i$nQ@%@bM@ +=@bM@GE8@bM@W@bM@|@bM@|@bM@@_`A7L@_`n@_`A7L@_dg8~@_`A7L@_g8}@_`A7L@_p$t@_`A7L@_jqi@_`A7L@_i@2[~($@2[m\@.)7KƧ@.%oh@-4E@-0'RT@,PH@,q @,PH@,C%@,PH@,~($ x?^Dw'?9؊?e +!C?q@v?ɿ?Rg.?bV,?zF?ZH|:?9~F?l}?p?|;}_?3;?֘>D?+ ?W|DC?@@@@@,@,??????^rxi_?9eΡ??RnH@@_mVt#?H*I(?aL J?:}逭?~`wlLF@r5/VM@&@4# +=q@4vȴ:@4# +=q@4$t@4# +=q@4#2@4# +=q@4$7ޡ@4# +=q@4"M@4# +=q@4!D&@ ě@|@@ ě@q@ ě@b )@ ě@mJy@ ě@˶b@ ě@hIXg@8cg l@8W:<@2)+ @2(m@1`A7L@1Y@0̿[W?@0 ^@0̿[W?@0ZoT@0̿[W?@0KR ?R? ߥ?EqF?1?> c? ?z|3?1bşIr?)jSc?H? uv?X8K@@(@&@ @7@6??????+@8I@8?% @8@8i@8@8S@8?n@8 *@8p@8@8 @8 @?(@nP@䛥T@nP@Y@nP@7KƧ@nP@bM@nP@-V@nP@ I@6bM@6ES@6bM@6S@6bM@6@6bM@6 +=p@6bM@6@6bM@6 +=p@8s@7&J@4f+ J@4dM:@3j~#@3cA \@2@2zG@2@2ݲ-V@2@2Ov_?VAK?05 [?[_(?=]. ?[9,?mׁe\?3? ?mK?ni" ? ^??Ր?mh.?2}?_?RJ?HF!6?ā@@@@@@??????a{qe?N߱?cOo>?pޢD}@,҆@6]b?r߻u˫w??zX?ݷR\?GϽ@s{\_@)@\(@\(@\(@:~@\(@H@\(@:~@\(@V@\(@c @A$/@AG{@A$/@An.@A$/@An.@A$/@A'@A$/@Aoh@A$/@A'@-eݗ@-eݗ@+$tj@+#\N@*nO@*䎊@)@)vȴ9W@)@)%@)@)iB?^Q5P?GA?>f?MA8?<`.?:?bV,?r/B?j?3.Yl?@?R g!ڢ?b@?u?s@a?XLL?O|q?Ѐ>(@@@@@(@,??????K~'@?24:?O@~@A̼T?B Š%?%\O:?3[ u?Dˤv@sK$&@*@eEQ@eEQ@eEQ@eE@eEQ@eD2W@eEQ@eCS@eEQ@eC\@eEQ@eDg8~@R!@R" I^@R!@R!'@R!@R䎊@R!@Rvȴ9@R!@R"u%F @R!@R"M@1@1@/WKƧ@/UY|@.o@.Ft@.@.~%@.@.@.@.6z?^XN?h?.Ү_ ?eU5?E{?7F?bV,? H?'Q?RLnj?,Y?wN z_?b@?Ϸ+?֘>D?˴C??B @@@@@,@*???????=j6?[͎?ZDd?Eh8@eC(@R اy?(]c?T?hA?MRק.?[җ@s|Ю+@+@Õ%@ +=r@Õ%@v@Õ%@!@Õ%@!!@Õ%@@Õ%@ϻ@gy"@gy"@gy"@gy۫@gy"@gy"@gy"@gzt#@gy"@gzJu@gy"@gyo.@0qiC@0qiC@.MV@.M)b<@-ΗO;@-XQjw@-z)_@-zD{@-z)_@-z8@-z)_@-z ?^j?{TV?"(#*m??%r}?T|/?bMn?x???/[2?֓j?S!?bM?9?u؆"? ?"F?s`@@$@,@&@;@9??????;Z T&g? ?!o +a@h[@gzf?*g}*?0 +?Q֨?W04@s-H@,@aR@aR@aR@aSMj@aR@aS|@aR@aSa@@aR@aQX@aR@aQ@ٙ@ٙ@ٙ@@ٙ@PH@ٙ@ k@ٙ@A@ٙ@e+@1}:@1}:@/j~@/%F +L@.ΗO<@.α2X@.Z@.M:@.Z@.@.Z@.?^Q5P?[e@4G+@4$`@4`A@3@3#@2FX=@3#@3@@3#@3 @8J?[.[?"!?aU?[$$?XE%:@8J? ;&?ދC?A4?=i6?ے|@8p?Ag?޻ɩ}?Σw'Y?t#$ ?F@@$@@@?????.@@˅R@.@.@.@.@.@Qhr!@MO;d@Qhr!.@Qhr!.@Qhr!.@Qhr!.@Qhr!.@7(YJ@7&_ح@4hr.Mm@4`A7.Qn@3[W?.NC,@3[W?.NC,@3[W?.NC,?1j@8#@8:@8 >+@8I@8?sD@8@8i@8@8S@8?,1'@8 *@8p@8@8 @8 @?/@vE@vE@vE@vJf@vE@vES&@vE@vKC@vE@vI@vE@vM(@=p@=p@=p@@=p@@=p@^ @=p@J@=p@e@1qiC@1~"@-V@-@+nP@+\N<@,At@, ԕ+@,At@,K]e@,At@, k?^XN?'?Gy??5~pY5?y%?EeX?bM_x?CO?:?@[*^?A? 3W?e@'?9o?8*?"a??Tj?WZ@@@@@$@*???????Jk`w9?NE?F.B@vK.y@͙jT?\rC?T?<-?E+\@r'Q@0@]/@nzH@]/@jqi@]/@^ߤ?@]/@W1@]/.@]/@䎊@.zH@;dZ@.zH@@.zH@vȴ@.zH@IR@.zH.@.zH@ᰉ@9hYJ@9Vx@5B ě@5@4dj~@42䎊@3Q@3n.3@3Q.NC,@3Q@3BZc ?)T?^y?Ғn?э +@8I?S* ?J>x?_?k?µAj@8S?:; ݹ? +eKs?d?"i]P? a@8 ?ډ@@@@@,?????1@w@-@w@kʇ0@w@^.@w@li@w@'@w@@ Q@ @ Q@_@ Q@Jt@ Q@% +@ Q@ CV@ Q@ US)@3uS&@3tg|@1 ě@0ã@1$j~@0 ZZ@0&@/B@0&@0")[>@0&@0[R?|h2:?z~?yn'?Gw?#?tm?}@TΥ?˟g?Gšt?u:z0?d=k?llg|??RѢy?ҞM?%?\_?e< ?e@@ @@ @4@5???????dF@?SmY֬?K +5Wf?\>b#@ˠv@ ݇j?\H=K?-:@c?bӤ @IF`y<@_՞@2@XbN@+@XbN@we@XbN@Qu@XbN@@XbN@T@XbN@@k\(@kZܼ@k\(@k@k\(@khH@k\(@kM@k\(@km@k\(@k@47@@48LP@05?|@02W@0 -V@0 Gb@0^6z@0XЯf@0^6z@0Yj *6@0^6z@0X҈p?|b@?]?_Vfv?Z3g?sC?2} ?| V? ?(r?;??Z?wƫ ?;?Av?+?[?@@$@*@*@:@8??????7?$?qFɸk?# ^+/@Nh@k ?6+xX?C.@?x3%~?ka@f.Y@3@)"M.@)"M.@)"M.@)"M.@)"M.@)"M.@X33333.@X33333.@X33333.@X33333.@X33333.@X33333.@9|Q.>@5B ě.Mm@4t.Qn@4䎊r.NC,@4䎊r.NC,@4䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 4@ I@Ƨ@ I@ @ I@:)@ I@1&@ I@/{K@ I@ݗ@ +@ w@ +@ ^5@@ +@ @ +@ PH@ +@ 1@ +@ +f@6䎊@6 xF@3f+ J@3esg@2t@2u@25sh@23nP@25sh@23F]c@25sh@2/{J#:?Y͍_?%ñ?1V?'$5?+?^m*?F/P5?馿j?|ɽ?RLnj?Ll?Xo?K4@:ۖ>@ r?\$<]E?km>/? *F?H?Ni@hx @5@|-@|F@|-@}/n@|-@|f,=@|-@}v@|-.@|-.@9Xb@^5?}@9Xb@H@9Xb@ڹ@9Xb@=c@9Xb.@9Xb.@804m8@86$/@3+ J@3XF]c@2ߝ-V@2!.I@2@2 +=p@2.NC,@2.NC,?A[F?ū}?οF;? !@8I@8?ȉak?YB9J?42?ny@8S@8?^$f,?"{Ę?(??=U)@8 @8 @@@@????6@|hs@{lE@|hs@|j~@|hs@vȴ@|hs@}E@|hs@{qu"@|hs@|hs@ ě@o@ ě@@ ě@v_ح@ ě@zH@ ě@'@ ě@A [@6v@6W>6z@2@2n.2@2tj@2@@1Q@15Xz@1Q@1jf@1Q@1D?Br? e?K?vHn&? i?#{׈?=fA:? l?'Q?_3\?8,T?.8?7^|?z?],V?`?*Z}?0&YEd@@@@@ @???????% ?RN?4r$?4W@|"@#Q?T{+?T b7?ĘD?1>t@j嬕@7@Q@+@Q@%@Q@hs@Q@! [@Q@+@Q@j~@/@@/@-@/@/@/@@/@<64@/@}H@6@6 ě@2^5?|@2^5?|@2{Ƨ@2{U=@1@1|@1@1F]c@1@1?qn?d̺?&P? h?Xe?T-N?2}?l?'Q?~m??az?.8 +B?W?J>?L?%ϑ?A0)n?A0)n@@@@@,@*???????DkZXBd?R>fv\?rl@@in\?n9K?7/$Y?ZdE?sLtzm@k~ k@8@~".@~"@B}@~"@- @~"@̑=O@~"@Z@~"@9w@bM.@bM@^¬.@bM@W@bM@=Y@bM@G<@bM@r@9w@.>@4J^5?|@47^3 +@46-@4E3@3Tm8@3! @3Tm8@3%,0@3Tm8@3 TR!Wh@8J?p?]]?c ?/1?z+͛@8J?5ot?N-+g?`nk?xu?t @8p?}aE?`oٶ?IH?ǫ?z@$@(@(@3@1?????9@-tj@-r @-tj@-~@-tj@-v@-tj@-vȴ9@-tj@-$/@-tj@-1&x@]tj~@]$@]tj~@^ں@]tj~@]Fs@]tj~@][@]tj~@]L/@]tj~@]vȴ9@8֚,<@8-w1@3 I^5@3\)@3M-V@3G)^@3!.I@3 C]@3!.I@2!R<@3!.I@2XbM?S?AZ?uzH{*?^? ?xh`?ȸa? ?]&7?'y?OL?/Ւ??Ov_ح?7^|?m7>n?Qh@?D7<@@@@@ @&???????xx`vNe?RtR#j?@ ?@-lH@]*?bp?' +먏%?77!?p~z@p@:@O@R@O@8@O@hr@O@-@O@qj@O@@"`B@vȴ@"`B@!-w1@"`B@S@"`B@!s@"`B@ @"`B@64@87@@8: @3R I^5@3Np:~@2tj@2e@2L[W?@2H@2L[W?@2F1.@2L[W?@2G$tS?{@4+.Mm@3-V.Qn@36z.NC,@36z.NC,@36z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 <@'-@(r @'-@+6@'-@-\@'-@+åX@'-@$]I@'-@%JP@Ӓ@Ӓ@Ӓ@Ӓ\S.@Ӓ@ӏ[Jx@Ӓ@ӐP@Ӓ@ӒY @Ӓ@Ӓ\>@2 xF@2@1TS@1Te핦@1t@1@0kxF^@0jj@0kxF^@0iy@0kxF^@0ii}?^j?F +?;"{? U}ԃ?h2$?݆?bMn?.?<~z?aNl?Q?@)?znU?r,?;?Ʌ%?-#?Zoh$l@@"@ @$@3@4??????XP?Mvh?B7ij?5$@'53@ӑ_?]?2?7?:1?@@@@*@*???????0*<?8@?$wǪrE@Y7g@27?Gύ?3x?CO ?^ g@s@>@M>vȴ9.@M>vȴ9@M+:)@M>vȴ9@M;6@M>vȴ9@M>\N@M>vȴ9@M<n/@M>vȴ9.@t+ I.@t+ I@tkC@t+ I@ti*0U1@t+ I@tSMk@t+ I@t6z@t+ I.@7쿱[X.>@2r Ĝ@2ŨXy=@217Kƨ@2;C\@1O M@1Y|@1O M@1/w@1O M.NC,@8J?97?^?Z.?X@8@8J?۔b?wSZ?uX?^候@8@8p?RQҿ?jx?V]9V?mCc4@8 @@@@*?????@ě@`B@ě@e+@ě@3333@ě@@ě@@ě@+@@r @@@@S&@@-&@@VC@@R{@8}:@7+@3 I^@3U=@397KƧ@3/H˒:@2𖻘@2ѩl@2𖻘@2S&@2𖻘@2Y}?k!˫? e?r?wP??l#?-Apa?WZM?-A?ίM?.6k?=x@@@@@(@&???????ʈ0o?m?'Y@ ,@}#a8?ѓ)/?p:?- +A?@@m~@@@χ+ J@ς I^@χ+ J@φfffe@χ+ J@τT@χ+ J@υ84@χ+ J@σ,zw@χ+ J@π҈@xTF@xW@xTF@xT!-w@xTF@xS3333@xTF@xN}Vl@xTF@xSMj@xTF@xT,<@7uS&@7u$/@2xr Ĝ@2usg@1ߝ-V@1v@1n_o @1jd7@1n_o @1lu"@1n_o @1lC,zy?}ѿ,?p~v]?jhq9?A%?uxY?"X?? +?)_?߇O?A ?Ր?t +j?3a=?ArUA?Z?“y?7zE@@@@@*@(???????#rFQ6z@}A7L@}(@8zqiC@8n (@4+S@4-!.H@3A7K@3g l@3#@3'@3#@3 4m@3#@3{J#:?]? 1H?r?%? 8{?Q`?]?\??RLnj?| u?ܷ-?*wjs?~?=}?@fo(?;kr>?ymcw\?@@@@,@"??????^$6?@o?K@?S(BSX@+$DM@}h)?\U}?c2Ђx?]?VYs?DVR@r#YY@B@ȴ9X.@ȴ9X@s@ȴ9X@-@ȴ9X@‚@@ȴ9X@- @ȴ9X@PH@9v.@9v@9@9v@9Xy>@9v@9@9v@9-@9v@93332@9䎊.>@58r Ĝ@58>BZc@3tj@3*0@3_o @3H˒@3_o @3Mj@3_o @3sg@8J?:}T?g ? :>Co?a`??KAb@8J?HG^?b? aK?C B??4@8p?:?ԇ:? Y?0C?@@@@*@&?????C@y+.@y+@z.@y+@z@y+@z@@y+@xV@y+@x+1@;ě.@;ě@;1@;ě@;p@;ě@; М@;ě@;6F'@;ě@;]y@5mv.>@1+ @1,"@1Z~"@1[E@0@0xe@0@0V.\K@0@05H@8J?I?G6X]?Or?)]E?S{a@8J?V ?g$?0Ij?(~ ?@8p?! ?:C8?!/1?S/?@"@$@@8@5?????D@+ I@a@+ I.@+ I.@+ I.@+ I@֣'@+ I@D@F9X@Fx@F9X.@F9X.@F9X.@F9X@F%zc@F9X@FXk@6V,<@6T(@25S.Mm@1`A.Qn@1z,<.NC,@1z,<@1M @1z,<@1ű%?t D5@8#@8:@8 >+?" +?I ?}@TΥ@8@8i@8?k?J?9sîgD@8 *@8p@8?iCr.?K@@5@$???E@+@8I@8?E[i)@8@8i@8@8S@8?wv@8 *@8p@8@8 @8 @?F@6zG@6@6zG@69Xb@6zG@6tj@6zG@6Z@6zG@6l@6zG.@w@w@w@xl"h +@w@y+@w@|PH@w@u?|@w.@3@3o@0@ ě@0@)^@0'KƧ@0'8}H@/p'RU@/s@/p'RU@/p +=p@/p'RU.NC,? ?t0?wk?ھ۲?Z)@8?}ѿ,?jכc?F@4@ ě.Mm@3ȓtj.Qn@2:S.NC,@2:S.NC,@2:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 H@hr @i7Kƨ@hr @eoiD@hr @p*0@hr @yb@hr .@hr .@R@V@R@R@R@@R@S@R.@R.@6^H@6]\@3hr @3m8@3-@34֡b@3Q@3Xy=ـ@3Q.NC,@3Q.NC,?|O?.5?[:@4|hr.Mm@3".Qn@3ce.NC,@3ce.NC,@3ce.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 K@k"@l@k"@kYJ@k"@kx@k"@k*1@k"@k4J@k"@kL_@N{lD@N"@N{lD@No@N{lD@NnO@N{lD@N@N{lD@N @N{lD@NA@6!.@6!.@4I^5?@4'RT`@3-@3-@36z@3_@36z@3A7K@36z@3$/?Txvc?4o:v?YtBs6?C>$;?m,h?`{wz?ռUӛ?dpn?oɼ|)E? +e?mCc4@@@@@*@*??????p_kKDF?c{?[ͨT@ku>@NߦU?qz+E.?kQS?2L҂?ʕ@r/w0D@L@ r-V@ qn@ r-V@ sZ@ r-V@ s@ r-V@ s@N@ r-V@ qhr!@ r-V@ q_@ q&x@ q&x@ q&x@ qhr"@ q&x@ rs@ q&x@ q[W>@ q&x@ qu!@ q&x@ qu@12@12@,V@,:@,1&y@,҈@+Gݗ,@+G k@+Gݗ,@+G_o@+Gݗ,@+Gy ?^XN?°R;?"?ƠJ-M?g?tJ?bM_x? ,C?j?; $?2&h?PS2K?bMky?.+?|׿pZ?XLL?Ѐ>(?a+@@@@@,@*??????O7#@?د?/ϰ>A@ч@ r@ qv,,?=^ ބ>@ =Ф?u7>Φ~@s +}%@M@1&y@x@1&y@@@1&y@K]@1&y@/W@1&y@)_@1&y@ڹ@*H1&y@*H1&y@*H1&y@*FA@*H1&y@*GE86@*H1&y@*H@*H1&y@*I@*H1&y@*I@4,<@4@0^5?|@0Q@0ttj@0t֡a@.C\@. k@.C\@.kP@.C\@.u?2}?b[? ? {4? i?IdA.(@ +F@*H~?E:-?LQ~?q.?0[^4@g+ +^@N@R_;dZ@RlFtM@R_;dZ@R_W@R_;dZ@R]E@R_;dZ@R` s@R_;dZ@R]K]@R_;dZ@R]~J@te`A7@t]tbs|@te`A7@tvms8@te`A7@tm-͐@te`A7@tg2+@te`A7@tt$@te`A7@tk>@8쿱[X@8wr@2G+@2BtyB@1>Vu@19-@/)_@/lU@/)_@/@ @/)_@/Ʃv?)@?}?K?;m?1)8X?4nr?Vz?G Dh1?X^@3+ J@3zG@2R`A@2^p:~@1Q@1ރ%@1Q@1!-w@1Q.NC,@8J?5FĴ@p@Q@+-@+r@+-@+RT`@+-@+E@+-@+ +L0@+-@+22-@+-@+ ڜ@p1&y@p^5?@p1&y@px74@p1&y@p}Vl@p1&y@pzC\@p1&y@p@p1&y@pxS@4g l@4dZ@2#@2!_p@1-V@1M:@1+xF^@1<ߤ@@1+xF^@14RP@1+xF^@11xv?| V?M?b/?ѮvtQ?BTS??|b@?|?r ?@(?CX-?H, +U}?nՉV?Ov_ح?ԇ:?WhQ?2#Z?6/@@@@@0@0???????:M U?7CIU{?DQs@+}]@p4?X18$?eNF&?D?򰔼$@fnB^ @R@7K@z>Hs@7K@t@7K@s6@7K@6@7K@~b@7K@E6@O;@zG@O;@g@O;@f @O;@}y@O;@q@O;@'X@7 ]ce@70v @05?|@065@0]V@0\d!@/p'RU@/pl;|@/p'RU@/oB&@/p'RU@/l\?ɱb)Q?:4?})Y?=?]X?"? ?nO>?~?C&z?bl?R8?@@$@(@(@;@:???????PCn?RT$?A'&D>?N|@~7 @ϢP?](J%?:?-/wJP?y=v.@k.@S@׍O;@׍O;@׍O;.@׍O;.@׍O;.@׍O;.@׍O;.@?x@?@?x.@?x.@?x.@?x.@?x.@3@@32E@/)7KƧ.Mm@-Z1.Qn@-kjf.NC,@-kjf.NC,@-kjf.NC,?}9X@8#@8:@8 >+@8I@8?|g~D@8@8i@8@8S@8?=@8 *@8p@8@8 @8 @?T@v@vѩm@v@vn.@v@vm\@v@vp:@v@vd9@v@vϷ@(@$t@(@ڹ@(@@(@$@(@3|@(@1.@6YJ@6}Vl@4 ě@4-w1@3tj@3*@35sh@35ݗ@35sh@3.\N<@35sh@3/??E@?}S]N +?B)??$?s[z??t??>#?kH?Ri?Lp%Y?}d1H?  l?LdB"%?(Q?Xs~?>3}@@@@@$@"??????G!- ?i<?NkL??g|f1a@vk@(;-l?f2ZwW?~nR?#Ft ?LP@lee)@U@pO;d.@pO;d.@pO;d.@pO;d.@pO;d.@pO;d.@F.@F.@F.@F.@F.@F.@9p4m8.>@6ěT.Mm@5gKƧ.Qn@4YJ.NC,@4YJ.NC,@4YJ.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 V@Ǯz@$@Ǯz@]c@Ǯz@~@Ǯz@fyD@Ǯz@J@Ǯz@>B@]/@ C@]/@ _ȱ@]/@n@H@]/@$J(@]/@K (@]/@) @8֚,<@8.ʾj@5f+ J@5FL{|@4`A7@4@4@5@4QoV@4@5@4*B΃q@4@5@4&A?|0pJ?X/Z?ք;yK?3R2\?LD??:?O?PJ?|y?gz˛?܊+?&?$niJ=?Gj?c[z?,B S?84|@@&@(@*@<@*??????xLV?vp/@?zi?h%b@=0@%?5?x6iPm@ W;?_*@h0ff@W@}"`@}5?|@}"`@}Zc @}"`@}c@}"`@}G{@}"`@}r @}"`@}״3@˟;dZ@˝-U@˟;dZ@˝ڹ@˟;dZ@˜N;@˟;dZ@ˈp:@˟;dZ@˦1@˟;dZ@ˤe@7 D@7!7Kƨ@4+ J@4GE85@3Ƨ@3+jg@4ush@4d9XbN@4ush@4r@4n@4ush@4r@4n?sD?Ɖ?_r ?O@:??)}U?3a=?%@&??F ??+NP?~$?anñ?7#!xv?^FC}?X昘?9)N-@@@@@"@&???????D}?A*?YP?n=9 @}K@˜.=~?w^B~8?/Xϼ?[@-@gsW@X@%`A7@%Q@%`A7@(p:@%`A7@'ݗ@%`A7@'/W@%`A7@$7@%`A7@!.H@"+@"-V@"+@"Ж@"+@"V@"+@"&@"+@"`A@"+@"- @7@7,<@3@3+ I@2-V@2\N@2 [W?@2 U=@2 [W?@2 H˓@2 [W?@2 +j?ٛP?gUq#?a#mU?ܿ??;??=?us\?Hz? ހ?P?H<?)]\?-]?I1;?/X?O.ce?/̽`?Cns@@@@@*@&??????P4;?KA'o3?4 +Ku@%N=@"qYN?d %?Ryۚۺ?,&j2q?5QZ@nBNb<@Y@;vȴ9X@;n+@;vȴ9X@;|ߤ@;vȴ9X@;y_p@;vȴ9X@;}b@;vȴ9X@;y_o@;vȴ9X@;x-@@`B@@E@@ȴ9X@@ +=@@4@@Mj@74m8@7l@3?|h@3PH@2-@2ݗ+k@23&@2,@23&@2-%@23&@2.\ND?b =?ɟ_?p_? Ğ? +e@@@@@*@&??????g%tX?FG?Qu2?eL1 +cF@H8/@q66?q;?C*9?ߔXC?@k|@[@ěT@ϝ-@ěT@;q @ěT@P{@ěT@BZc @ěT@/V@ěT@m\@F\@FS@F\@DK~)@F\@FOv_@F\@C\(@F\@C+k@F\@Cc@8쿱[X@8n@3+@52wkP@3tj~@3C@2@1;lC@2@1J>B@2@1[Q?Q,Ě?#c?\?ԛ_' ?-hR?:b?UbB2?gn?ڛ?!sz?u?[y jX?A'_]?i^6?N( ? +*?h@?dItP@@@@@*@*??????I'%(ʉ[@?{?J^`u@5O@FP3?ww?7f?Yu}?=՛@[nE@\@mV@mO;d@mV@n_o@mV@nߤ@@mV@n_o@mV@kU=@mV@lq @ +=p@ +=p@ +=p@+ @ +=p@_ح@ +=p@+ @ +=p@ȴ9X@ +=p@@32@32@.f-@.f&I@,nP@,nP@-#Z@-#%2@-#Z@-#%2@-#Z@-#?|O?{j?"?䆀{6? f?װ*w?| ?5CQ?['?C B?Cq$u?_~t?n88??2Y0?':?a+?pk Y@@@@@*@,??????(_@ @?,-#? +Mz@m^1@i?LUsC?+S?9g=?czB"@f-@]@@nP@@Hz@@tGF@@$ړ@@Hr@@Yq@Z9XbN@Z9XbN@Z9XbN@Z<@>@Z9XbN@Z,@-凓ݗ@-凓ݗ@+7KƧ@+-i@+ӶE@+UAB@*Xy=@*5.@*Xy=@*e!Tb@*Xy=@*X}?^m d?jͪ_? n?ʖ?&{?An?bMn?c?4Ә.?@M)%?DE$?jT?bM?4= ?xA}?]s4P;?jfN?{{@@@&@"@"@5@1??????B0<\\F ?AJS֯?9 E@0@Z?,î?PG<7?G^v?D+?n}H@sԟ @^@;lD@=\y@;lD@=+k@;lD@@҈@;lD@<n.@;lD@?vȳ@;lD@C~T?6QLW?6%1B@=I @:T?W=[?UY6b.?QHT?@h?@_@ +=p@ +=p@ +=p@ @ +=p@ m@ +=p@ @ +=p@ )_@ +=p@ @`A@@`A@v_د@`A@̈́M<@`A@,<@`A@_@`A@v_د@5*0U2b@5K]c@1S@1a@@1 "`B@1 C%@06z@0쿱[X@06z@0"@06z@0ߤ??}ѿ,?Z?&t?2UT?G?봤G?Ol?Èa?CXs?Uh;?jx?+d?Ol?Q?Ol?9XNu?fW?7@@@@@,@(??????>܏#N-#>iY??,_@ K&@Ѥp\?A(P?M@DF?=CjƮ?tE D@h @`@ V@ hr@ V@ \Ք@ V@ i@ V@ y9v@ V@ ^x@ V@ e\{ @zGz@z@ѷY@zGz@yM7|@zGz@y +@zGz@yVe@zGz@z1lH@zGz@z5#.f@8|Q@8T@3 ě@3 ʈ@34tj@3N)JC @2c@2hJXH@2c@2]G\@2c@2_.?RL1T?Ӷz? &b?Z: m? +:g?7햞?|B &?o0D?3? A?ˁЅ?pkQ2?_4'0?GTU? ?Č?Fca?͍Q@@*@(@*@5@3??????Do`G?Yn;8u?m[ |@ xq@z7VDj?|2h?:*?RiRT@iw$/*@hF@a@_lC@_z@_lC@_@_lC@_K]d@_lC@_K]d@_lC@_,=@_lC@_,=@u?|@u?|@u?|@u=@u?|@u=@u?|@u?|@u?|@ush@u?|@u=@-7sPH@-7sPH@&MV@&Mqu!@$nP@$nP@$oi@$u@$oi@$u@$oi@$u?_\p)?[eW@_Ik@uj??)=3؏>@ih0?wDۮe>Hvi@sΫ@b@_;dZ@_;dZ@_;dZ@Uᰉ@_;dZ@WXe@_;dZ@U=@_;dZ@ZG@_;dZ@X*0@9)l@9%`A7@9)l@9 ^5?@9)l@8j~@9)l@8ݗ+@9)l@8?@9)l@8a@@5H@5y @3=hr @3,(\@3"-V@3 |@2䎊r@2l"h @2䎊r@2@2䎊r@2!R +fu?׾?"6Wz?O?*cuV??>?yjk?|nӿ?|)-}(? `@@@@@,@*??????[BMZlL'?GE~{_m?kg@\v-id@9 *?dKb? ?*6@O+?r@aޘ?b%?T+?!u?𠑓?'?v>?mGC?U$M\?RY=@@$@@@7@5?????? g##([?be=}w(?B0{VO@n@#rJ^?y"l>?ZA4?n*?r@`M%@d@1&y@`A@1&y@˒:@1&y@t@1&y@g @1&y@0 @1&y@Y@I7Kƨ@@ě@I7Kƨ@Jo@I7Kƨ@I^ +@I7Kƨ@F?@I7Kƨ@As@I7Kƨ@AG|@8*0U2b@8bM@4 I^5@43@3R`A@3R@4n@3@5@2q @3@5@2G{@3@5@2?2}?t0?_?g(6?R ,?`1`?=fA:?=}?$Jw"?~m??C]F~?J3?AK\ ?b =??B@?p& ?0ro{8@@@@@,@*???????Z8`?<3?8@`b?Li@UL@Bc?XV+k?i򲲸??rג@glub@e@d/@d䛥T@d/@doiC@d/@d凓ݘ@d/@d +L0@d/@d +=q@d/@d㢜w@ԛS@ԛS@ԛS@ԛS@ԛS@Ԝ@ԛS@ԜPH@ԛS@Ԝ]cf@ԛS@ԜPH@1YJ@1@-7KƧ@-7KƧ@-1&y@-/{J#@+`d@+Fs@+`d@+m8@+`d@+#?^Dw'? ?.Ү_ ?MA8?g??bM_x?#maЀ?ܿ?3.Yl?A B{?Uyu#?b@?6?2Y0?XLL?f_Ԋ?l&@@@@@*@(??????Q>שw5?3vV? >A}n@dd@ԜTY?B^9?Q>ۅ;?[d;? +C3@s/[@f@97Kƨ@9Z5R@97Kƨ.@97Kƨ.@97Kƨ.@97Kƨ.@97Kƨ.@l@B5O@l.@l.@l.@l.@l.@7H@7"LQ@35?|.Mm@3V.Qn@2m8.NC,@2m8.NC,@2m8.NC,?|gv@8#@8:@8 >+@8I@8?c@8@8i@8@8S@8?@8 *@8p@8@8 @8 @ ?g@mm.@mm@ms@mm@mnP@mm@mp:@mm@mD@mm@mD@-.@-@@-@- @-@V@-@rGE@-@V@(oo.>@"tj@"- @!x@!x@!oj@!oj@!oj@!oj@!oj@!oj@8 +Ny?°R;?m?ƠJ-M?tKc?>@82r? aҹz?rJs?/Z?tP*?L "@8L?8 T?nwg?~\?h?h@@@@,@&?????h@1&x.@1&x.@1&x.@1&x.@1&x.@1&x.@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@I7Kƨ.@8s.>@4=hr .Mm@3"`.Qn@3Q.NC,@3Q.NC,@3Q.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 i@Cn.@Cn.@Cn.@Cn.@Cn.@Cn.@9x.@9x.@9x.@9x.@9x.@9x.@9%!..>@4i+ .Mm@3".Qn@2ce.NC,@2ce.NC,@2ce.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 j@,C@+C@,C@0- @,C@.@,C@,1&@,C@/iDg8@,C@-C]@-V@ ĝ@-V@@-V@m9@-V@@-V@&@-V@@6@6@2° ě@2[6@2R`A@2O͞@1+xF^@1)*0U2b@1+xF^@1&&J@1+xF^@1&Ov_?F/P5?gˣ? ? Iy?ZAj?6?}ѿ,? +?NH?Kd]?2}?f1-&?9@0w??+J@,G\@=>M?RPØ?_퀊O@?kKt?_1G@g+6@k@mhr@mhr@mhr@nzH@mhr@mV@mhr@mhr@mhr@j=p@mhr@kR@bM@bM@bM@`A@bM@hr!@bM@bM@bM@և+ @bM@˅R@4~($@4C,zx@08r Ĝ@07 k@/dZ@/D*@06z@0>BZ@06z@0C\@06z@0^5?|?]?}d?FB:?_B?ɿ?}?]?dx/?Rs??La?lINՄ?*wjs?fb?*wjs?,|?ad|?#.????@@???????T0Mm8 ?%D?L=} @j׎@[A?$Y?KM1?7&p?Qz1C@xq6@l@Tj~.@Tj~@Ush@Tj~@Sa@O@Tj~@U%F +@Tj~@SS@Tj~@R @53333.@53333@5\)@53333@5fA@53333@5j~@53333@5z@53333@5J#9@8.>@3^5?|@3ݘ@2Ƨ@2Z@2OO M@2Mw1@2OO M@2O\(@2OO M@2WO;d@8J?y)3c?3?@R?'`?+YI@8J?`?F^S?uX?8?Y@@8p?.]L?[Rb?C?ĭ?dItP@@@@,@,?????m@*I7Kƨ@*H9X@*I7Kƨ@*I7Kƨ@*I7Kƨ@*F?@*I7Kƨ@*I @*I7Kƨ@*G+ J@*I7Kƨ@*GfB@DT@D/@DT@E@DT@EQ@DT@FIR@DT@D%2@DT@DJ@5@@5b}@1 ě@1 qu@0ȓtj@0sPH@/fL/{K@/f +L/@/fL/{K@/fA@/fL/{K@/f$/?| ?1?e +!C?̒?E{? $4?1j?u߿?NJ?0N:s?,Y?B8?T0?lo>?!A +m?ۮetZ?L?b/bJ@@@@@(@*??????%,>Oe?-Y?W?.{@*Hs.@E"?MOx_Ye?NMC7e? +yH?vD@g.7@n@և+ @׍O;@և+ @٦ @և+ @4֡@և+ @@և+ @ᰊ@և+ @Ʌp@`B@/@`B@ѷ@`B@e@`B@塣n.@`B@墂@@`B@af@6|Q@6\(@1?|h@1eO@1-V@12X@0L[W?@0L"h Ԗ@0L[W?@0L(\@0L[W?@0L"h Ԗ?Br?sp?`כm?!#?5 g?C!?| ?$i %h?低NU?C B?݄ ? f?|׿pY?%_D?],m=?*|\/?ˢL1?L8AS@@@@@,@,???????i(G? =lj?']39@֌FNF@ >&?@2L_?Hљ-fH?EKl?G_XW@hzz@o@x.@x@A7L@x@Em\@x@v1@x@oiD@x@*0U@-V.@-V@,/{I@-V@bu%F @-V@^\N@-V@~($ @-V@tj@8S&.>@4kS@4*0@3t@3҈p;@2Q@2>t@2Q@2(u%F@2Q@2=b@8J?Wީ?Қ9?TE|?\ٝ?ˉ4+@8J?2? ?`kY?0-+?MQc@8p?F p?Ǚs?{/!?)v?tXr@@@@,@*?????p@Xtj@^vȴ8@Xtj@\1(@Xtj@e`A7@Xtj@]/@Xtj@T9Xb@Xtj@]ce@ ě@ 7K@ ě@ l@ ě@ l@ ě@ hr@ ě@ Z@ ě@ S&@5-v@5zxl"@1hr @1qu!@0`A@0O M@0J0U2a|@0CE@0J0U2a|@0E8YK@0J0U2a|@0EL_?}?ߋb?*"AaI?Ac ?] + ?oNR?|O?l?I?$?az? ,?6ז? U)?:-?(Q?}?7zE@@@@@@??????Qf@?N.?R/2?S0I_J@[U@ 9l?qY +Kh?tX?Sh?J^@h]@q@)sE@)sE@)sE@)t@)sE@)u?|@)sE@)t\@)sE@)uϪ͠@)sE@)v4@KC@KC@KC@LI^5@KC@Jo@KC@L@KC@MM;@KC@Kq @4 _o@4 _o@0+ @0U@0Ctj~@0B@4@0u@0M:@0u@0$@0u@0?| ?Čۨ1A?1f_?9.?\7?7F?| ? ,C?|,!?!zt9?az?y ?m!?2]7?u@>N ?l?7?GZ@@@@@,@$????????${?28>FvS?+O<Q@)t|@K?|4`y?KK}O?FnNl3?Ym@f@r@)8@)4zG@)8@)=IQ@)8@)64@)8@):Y@)8@)6E@)8@)5!R@XbN@-W@XbN@qu"@XbN@l"h +@XbN@XbN@XbN@#@XbN@qu#@5Q|Q@5HPH@3#@3% '0@2ȓtj@2)y@2c@2g +=p@2c@2h˒:*@2c@2f '?us\?+!?ʶs?,rg?yq?Dw?=fA:?o ?ZH|:?#X?Al.6?ܷ-??%2?d +-?__C?GZ?E݋N@@@@@(@*???????'Ma;&?P` @}?@{H@)7H+@-(?lTN?`%?ӬI'X?f`m@k[H@s@Vu@?|h@Vu@<(@Vu@2X??ଚw?bdC?~fܤv?G6NM?ը:J0?F^S?56Q?D?byp?;~`?-j?z00!?w}'b?a?h?O?Jʿ?cg@@@@@*@&??????5h?- ?d?慕0@:cǠ@xS?ta"T?vg`@WV2@/a8 +@d& @t@f$/.@f$/@gz@f$/@jS@f$/@m-V@f$/@f4@f$/@eY}@+.@+@rGE9@+@ḭV@+@+ J@+@z@+@}H@8g l.>@4 I^@4W&@3KƧ@38YK@2䎊r@2?@2䎊r@2Mj@2䎊r@2 ҉@8J?=b?&?,rg?ĶBϪ?vȴ:@B\(@;J#9@B\(@Lzxl@B\(@UfA@`A@ hr@`A@?@`A@ @`A@:~@`A@ ԕ@`A@f@7쿱[X@7NV@4+S@4@2-@2Vl"@2Q@2u@2Q@2-w1@2Q@2&IR?ٛP?%=7"?uz?&SF??±|?|O?#?.j ?=M6?NZ׭?%TUx?T̅?AIa?L /?wZR)w?a<?A8 K@@@@@,@*???????iOLf(`U@?S'm?Q9>2@HI@/?t p?rvx|\m?ɂu?}[@fk^@x@`B.@`B.@`B.@`B.@`B.@`B.@i%S.@i%S.@i%S.@i%S.@i%S.@i%S.@5_o.>@2^5?|.Mm@1-.Qn@1O M.NC,@1O M.NC,@1O M.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 y@lF@lG@lF@lzG@lF@l?|@lF@lB@lF@l.@lF@lPH@fě@fě@fě@fS@fě@f.H@fě@f-V@fě@fl@fě@fXy=@3G>6z@3H $ p@/f-@/aR<6@. n@.e+a@,Vl"@,T`d@,Vl"@,g l@,Vl"@,a@O?}@TΥ? 1H?Gy??̒?2F0?&Gf?|h2:?D.x?A)N?6)}?~? # +?nڨ8?3I#i? # ??7?P\@@@@@,@,??????4uP?G54?>3u=8g?@Ni=ޮ@l6@fW?I?^e6?`w\F ?*bVˊ?F@fݐU@z@H+ J.@H+ J@H zV[t@H+ J@H"N_@H+ J@Hm@H+ J@Ga@H+ J@H}@9X.@9X@;R@9X@K@9X@ +@9X@ !@9X@Z:@6YJ.>@2hr@2$@1j~#@1@1+xF^@1+j1@1+xF^@1*XsU@1+xF^@1+T+@8J?Ek?͌ɼ? +A?&>?V)WE7A@8J?PoS?ReIt{~?fȹ}h?q!U?nr|?|ɽ??pPȻ??yz?Ov_ح?F?(> ?>LR_5?^':@@@@@*@*??????^@?b}`?U +ݵ?C!9:@fOBK@E5)?s=?\]A?B`o?1@kJ@|@!G{@!@!G{@#$@!G{@# +=r@!G{@%o@!G{@!'@!G{@!s@ғtj@ғ@ғtj@ҔzG@ғtj@ґ@ғtj@ҖC@ғtj@ҕ!S@ғtj@ҕᰋ@4_o@4B@2J^5?|@2JS&@1tj~@1@1^6z@1][@1^6z@1]<64@1^6z@1]cA ?| ?Čۨ1A?BI{?l?״@0U`A7L@0U\(@/b~@/1'@/b~@/ݘ@/b~@/1'? ?{j?K]4?j6_?% +?t?| ? g?ٚlq? Y?Hc?sx/T?8*?.x?u@>N ?E 8?ˢL1?j@@@@@(@(??????D?!]S?;57G>J@JRP$@M?[ .G?Y?S ?*u@glR|@@aglC@a{S@aglC@afx@aglC@aix@aglC@aa$0@aglC@ai@aglC@abu%F @?|@I^5@?|@H@?|@q @?|@ȴ9X@?|@1@?|@V@9hYJ@9Fs@4{ I^@4W@3>Vu@3DzG@2&@2 @2&@2^5?|@2&@2vȴ?cxt?4Kl?[_(?1t?pK ?MAG?V?I1@?%8?~m??44]s?r?US9?0b])??uЍ?q?%@@@@@(@(??????_Ly?QR#~?i滸?B5!b@ad @9H%?Wq?Se?K +??3gsw@ph@@ԁ7K.@ԁ7K@ԆIR@ԁ7K@q.@ԁ7K@ԁ7K@ԁ7K@lI^4@ԁ7K@`N@ +=p.@ +=p@PH@ +=p@&I@ +=p@@ +=p@ y@ +=p@쿱[@9DO M.>@4&+ J@461.@3j~@36C@3 [W?@3*0U2b@3 [W?@2iDg8@3 [W?@2͞@8J?'G_I?6\9?Kw?ߩ?kʍL@8J?_lWF_?Kw?GuS?ykz4q>?c:l@8p?qv?. ?ׅN?nD.?hvk@@@@*@,?????@ +=p@%Q@ +=p@#e@ +=p@S@ +=p@'RT@ +=p@@ +=p@ qu@>nP@>tj@>nP@>ߤ@>nP@>|@>nP@>ڹ@>nP@>S&@>nP@>ě@8cg l@8TD@6I^5?@6(Xy=@5j~#@5ȧ@5!.I@5ܥzxl#@5!.I@5׮zH@5!.I@5 [7?%? ,[?e2菾?L?V#m?zk?UbB2?''5?_?j3(??Ǫr?W_l?"55A;?S?8'e?Z|?3Y4@@@@@,@(??????}\@?m~?|V?:m#@3@>A#?r%b?TA,?i?Plu@ca$Ն.@@hr!@E@hr!.@hr!.@hr!.@hr!@u@hr!.@`A@+ @`A.@`A.@`A.@`A@4K@`A.@7|Q@7A [@3G+.Mm@2j~.Qn@2=ce.NC,@2=ce@2C%2@2=ce.NC,?@8#@8:@8 >+?RXFf@8?qv@8@8i@8?@8?Ʌ.@8 *@8p@8?Q?]@8 @@??@91&y@91&z@91&y@9^5?@91&y@9*0U2@91&y@97Kƨ@91&y@9Fu@91&y@9)`@N(@@@@@(@(??????P8'v:n$p?6ϳ2?v4;F@9}J@N@2@5@2v_ح@2@5@2zY?Ol?#T?>\?3' ?vk?,&=?%???T ?"JÁ!?M`%?|HKr^?5q?K?~Y?>ڵ?q ?h@@@@@@*@$??????<.J(%?I.K?>S!@r@HP,?mNw?](vV?K3?Ѯr,@l&@@`B@XbN@`B@M@`B@F +L@`B@bM@`B@:){@`B@+ @!G{@E@!G{@vȴ@!G{@"7@!G{@$/@!G{@X@!G{@G@8]ce@8xl"h +@4c@4` ě@3tj@3{@3+xF^@3)D@3+xF^@3#*0U2@3+xF^@3!n.?hA?b =?lڮ?{@? ?kʍL?Ol?\?YEX?3F0? R?½y?uIE ?&3?nf?k6?DL?*:R}@@@@@@*??????e?MgP@?Y_C?i潊N:@z@e?d3$?4e +?ьD@ Hc@oLj@@9Xb@9Xb@9Xb@*2@9Xb@$@9Xb@G@9Xb@@N@9Xb@@N@g-@h1&y@g-@hp:@g-@gݗ@g-@h1&y@g-@h1&y@g-@hXy=@4YJ@4 ԕ*@.-V@.@,o@,&IR@*-C\@*.Vu@*-C\@*-(@*-C\@*.zG? ?[e?Uyu#?Aᆽ?u?y8$?ʬv?O|q?a+@@@@@&@&??????#t!> >?(P`<>ޣd?@B*@h9f?H~`k? 'a?83?%hwn@gů:y@@dZ@d~Q$@dZ@hGl@dZ@^p@dZ@iV<~@dZ@gMkc@dZ@fU@UQ@UlD@UQ@Ug@UQ@U*Wj{@UQ@U6V@UQ@U'X@UQ@UP@6H@6S@3+S@33iː@3tj~@3V62@2:S@2K^D@2:S@2R)@2:S@2I';?o"?mN?qg8?~j@t?}vk?e}B?{si?xm?XFZ\=?*d7:?qbt?Tŗ?vqG?N#9?f;?_Oa?rW?z5K@@,@(@(@5@0???????C?Zշ?5 +6?HBh@eM@U‹?WW?iU?UiYp?uA6@g_?<"@@.O@/w@.O@"7@.O@'@.O@)@.O@#S@.O@)7Kƨ@^zG@^}p +@^zG@^X@^zG@^Q@^zG@^@^zG@^fB@^zG@^;dZ@5cg l@5bn@3G+@31@2t@2/V@1_o @1b~@1_o @1*0U2b@1_o @14K?Ol?J?-.?ě??j?uk=?|O?`?To?A8 K?dLt?~Y?qn?[ș8?Y͍`?"a??P\?aʕTI@@@@@*@$??????_$zِ?s0?HU5?[EO?3@*"@^1L?i#?|tdA?~Ѱ@,@gKg@@Y+@XQ@Y+@Xc +@Y+@[n*@Y+@YH@Y+@X<+k@Y+@X}@zG@@zG@%'@zG@O@zG@Ԡ5@zG@}Vm@zG@2a|@7YJ@7_ֽ=@3i+ @3j v@2-@2OY@2 [W?@2I]I@2 [W?@2 ܰ`@2 [W?@2E ?wogl? dJgQ?:*Q?|[?8I?Ae ?Hq"1?ݗ?b6??I|q?/?<(_?%>p?j ?&};-?zGhƦq??@?ٟR ?hrJe?>)A-?5+ք@@*@$@$@9@9???????g ^@4?|h@3O @317Kƨ@3($ xG@2[W?@2 +=p@2[W?@2l@2[W?@2|@)@8J?"2?w͜?1t?(gx?u.%J@8J?2(_?(?{k4?WA?o +E\K?U].@8p?anñ?o?u4?pXm>?M[70@@@@0@,?????@s\).@s\)@s7K@s\)@sffff@s\)@s@s\)@s@s\)@s7KƧ@vȴ.@vȴ@ezxl#@vȴ@%ݘ@vȴ@nO@vȴ@@2sS@26@1i"`@1e@0iB@1t@0iB@0h ԕ@0iB@0oiDg@8J?u3?.#Y?\2?4+Rږ?.@8J?X?0eʪv?'bA?.ĵd?Pz @8p?e?Dk?[+{A?d~?bH@@@@(@*?????@_Ƨ@_=p@_Ƨ.@_Ƨ.@_Ƨ.@_Ƨ.@_Ƨ.@]F@]XbM@]F.@]F.@]F.@]F.@]F.@74m8@7)^@55S.Mm@5;Ƨ.Qn@4(.NC,@4(.NC,@4(.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??@nO.@nO.@nO.@nO.@nO.@nO.@0 ě.@0 ě.@0 ě.@0 ě.@0 ě.@0 ě.@44m8.>@15S.Mm@0V.Qn@/.NC,@/.NC,@/.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @ @ȴ9X@ @ Ƨ@ @ :@ @V@ @ +g@ @ zxl@.w@.@.w@.o@.w@.H@.w@.2X@.w@."h @.w@.[W@87@@83@N@2J^5?|@2JD@1Ctj~@1D`d@0z,<@0{:)z@0z,<@0z0 @0z,<@0zqiC?E?j‚?tcj?#t?E@? $4?E@?> +fu?4M^?siqe?1? R? )蠈?)Zw?m!?GZ?&I?7zE@@@@@*@(??????^WQ^]l?LX"?GB@ ? @.:mY6?bR?_s A?{?ӻE2'@o@@V\(.@V\(.@V\(.@V\(.@V\(.@V\(.@fQ.@fQ.@fQ.@fQ.@fQ.@fQ.@8I_o.>@3|hr.Mm@2j~.Qn@28D*.NC,@28D*.NC,@28D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @n@n@n@翉@@n@@n@L@n@럺O@n@(<>"@vDT@vE@vDT@vA@vDT@vBtU@vDT@vC}@vDT@v?t͘@vDT@v=Sn@4uS&@4u@ +@2pěT@2n'@1j~#@1 `G@1O M@1БHt@1O M@1a#@1O M@1q?|h2:?1J*@?)zІ???_1@3+@2q @2 -V@2E@1L[W?@1NѷY@1L[W?@1:Q`@1L[W?@12s@8J?q+qW?c0?7ly\?p3/ ?:AJ+@8J?k$?Vn?vEB?du5?<"(o@8p?G?+X8 ?+(?]`??㖆?W$B?>ÔR?{W?P?nW*؄?i 0/?•;(?ڢ?hb?L??,yfY?P|@@@@@*@,??????ne7?~l?RsS?l^y@Kz0@9H8?c*J?B [?FMAr?r`i@q5X@@^y"@^k I@^y"@^Xtj@^y"@^H1&y@^y"@^M&@^y"@^Q2W@^y"@^Ox@\(@V@\(@`A@\(@u@\(@@\(@!R@\(@'/@6 xF@6|Q@1)+ @1Dg8~@0j~#@07KƧ@/Xy=@/Ov_@/Xy=@/ҽ<63@/Xy=@/-?UbB2?L?4F&x?? 2 ?|S6Y?sD?7fps?˗ +"3?.?T?+l?i?*J?a +?ނ F?^^ω?x@@@@@,@(??????|U?1M ?]Z?Gwh7@^[>W@ϵ{Ʉ?}({iR?f[dm@'?&v/??:Q $@fe`@@oc +=q.@oc +=q@ltS@oc +=q@l&@oc +=q@l1'@oc +=q@lp:@oc +=q@lg @\(.@\(@$/@\(@qj@\(@@\(@ @\(@w1@9䎊.>@3^5?|@-䎊@2Ƨ@,#w@1[W?@+rH@1[W?@+w1@1[W?@+ᰉ(@8J?2Q=t?UD?Ԧ?n?)^y?[5@8J?^1??J?$?p G)L?i 0/@8p?a,F??hc?K&?T@@@@(@&?????@d/.@d/@ۉx@d/@kP@d/@Y@d/@($ x@d/@TɆ@]/.@]/@M@]/@glC@]/@o@]/@@@]/@~@8e!..>@4}hr @3k~(@3"`B@3<_@3 k@2l@3 k@2:)y@3 k@2~@8J?Wq?Ȯ|1?G#}?lB_l@O0?V7S ]?R,Xmt?tN?@@gˌ^@@g1@gG@g1@g)y@g1@gp[? @g1@gڟv@g1@g؁N@g1@g׻Ȱk@e1&@eS@e1&@ek@e1&@e$@e1&@e<%J<@e1&@e~@e1&@ey@3쿱[X@3fJ*@0; I^@07@/x@/!v:@.PH@.C]@.PH@.'S1@.PH@.s?Qp?u:I1?%ja a?!.H.?(l?ưz_3?|b@?!!{?-@y?9~F?U1 +?kN? v?r?K ?%?S0iBZd?| ?J`Y?D&?lDžN9?2A?7F?| ?&uE@?^ o?Kd]? A?+d?8*?l?? ??j?f_Ԋ@@@@@,@,??????V@%W?c6,9>ŤN(\@Rq@ϋi\?':{u^>5n/?]^2>`@f}@@4j~.@4j~.@4j~.@4j~.@4j~.@4j~.@V.@V.@V.@V.@V.@V.@9 ]ce.>@5 I^.Mm@5tj.Qn@4̿[W?.NC,@4̿[W?.NC,@4̿[W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @Y+@Y+@Y+@Xy=@Y+@YY@Y+@XYJ@Y+@XD@Y+@Y@'-@'-@'-@)y@'-@*W@'-@-@'-@,q @'-@-@32@32䎊q@0)+ @0(F]d@.dZ@.@/#Z@/iB@/#Z@/ @/#Z@/ A7K?Ol?*|3N?7[䭝?A%? +`?#{׈?}ѿ,?Q_ڸFN?tw?owlP?UBi?P=? SF?lo>?W ?v_.^?*Z}?<71@@@@@*@&??????x?T_?#uY7?2;->@X6}r@*?CYZ3JM?STUeG 7?'*?nb;@ga@@ ]-V.@ ]-V.@ ]-V.@ ]-V.@ ]-V@ x7@ ]-V@ ӎMj@lKC.@lKC.@lKC.@lKC.@lKC@lgY|@lKC@l*JL@>2.>@7hr.Mm@6Ͳ-V.Qn@5xF^.NC,@5xF^@5(@5xF^@5@8@8#@8:@8 >+?IT?ֈp&`F@8@8@8i@8??cH?B>@8@8 *@8p@8?Ι?Ċ^@.@??@~#@ +\&@~#.@~#.@~#.@~#@!@~#.@}p +@a#@}p +.@}p +.@}p +.@}p +@˝Vl@}p +.@7v@7@3?|h.Mm@2-V.Qn@2.NC,@2@1ce@2.NC,?E[i)@8#@8:@8 >+?`i%|@8?~Ov_ح@8@8i@8?@8?k%,@8 *@8p@8?E(ɡ@8 @@(??@@&x@@(@@(@@nP@@E@@?@$/@\(@$/@ç_o @$/@Ü1&@$/@ô9Xb@$/@øYJ@$/@ê=p@9䎊@8@5 ě@4N;@497KƧ@4+lC@2,<@2=b@2,<@2,<@2,<@2*0V?hC%?|?(`ƴ? { x?W?{7]['?8ȺJ?}?b?MN?? " z?y?E!'?Ny?1Z?7Q?VM@@@@@,@*???????vn5vDM:?gn[cN`?h?DM@D@öo"?{  ?V?߿|? @ox|@@>vȴ9.@>vȴ9.@>vȴ9.@>vȴ9.@>vȴ9.@>vȴ9.@x.@x.@x.@x.@x.@x.@7֚,<.>@5 I^5.Mm@4A7K.Qn@4!:S.NC,@4!:S.NC,@4!:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @N+@N+@N+@N*@N+@Ohی@N+@L!-@N+@LI^5@N+@L@ ě@ ě@ ě@ M@ ě@ D@ ě@ O M@ ě@ 1@ ě@ 4֡b@1>6z@1RT`e@.Vt@.-W@.1&y@.5Xy>@-uXy=@-u%F +N@-uXy=@-vȴ9X@-uXy=@-w1?^Q5P?J`Y?@?lDžN9?G?-tT?bM_x?4 "?2'?N?qN?90?g)?6?Me_?Q(?<71?ܑ @@@@@,@(?????? #xh?)%)S?0K@L5g@ & ?85 +Tؿ?.!76^?lR ?SlU X@s[@@ +=q@A7L@ +=q@V@ +=q@@ +=q@C,@ +=q@ʙ0@ +=q@.H@(@XbN@(@ ě@(@/@(@E@(@cA@(@dZ@7@@7qj@3xr Ĝ@3o'/W@3Ctj~@3*W&@2u@2@2u@2~ѷY@2u@2}(? ??I!S?㬱_?)^y?I$4}?F^S?~??\PK?>#G?'Ln?׍xG?$G?~gN?J{?Fb2x?q@@@@@&@&??????zz?D~?L?ExVLS@4}a@ @O;dZ@Y.@O;dZ@Yu@O;dZ@[c/@0įO M@0Ʌoi@/A7K@/d?@/&x@/ ZP7@-L/{K@-q@-L/{K@-U6@-L/{K@-ڍD!?^-?#??]Ľ? ?"ٷ?bM;?YFѣ?:q?9GE?i?K?bV?aݍ?i2?/[?!ccC?KVPn@@(@*@,@@@8???????OƲא?@Y?.+s3^?C@E@Zm?=ak +?-:)?t90ɷ?RBZ@sϓw@@ I^@oj@ I^@5C:/@ I^@g@ I^@H>@ I^@@ I^@!@kbM@j\@kbM@k]@kbM@k {@kbM@kwv@kbM@k*蠢@kbM@k9@9(YJ@9);=e^@4!hr @4 u\p@3."@3/8[_@2𖻘@2m!@2𖻘@2W6@2𖻘@2ywW?hȶ?t2x8?@m|x?/?U?1(?x9?A S?0}h-?n,?ej?2 2?t?#L? `?/z?Lď?$X@@(@&@"@;@6???????>@L?{ڢ$U@?kLZ?A[ٸ@ zT@k 8T?|$i?ZrJ?(af?pC:@oXԻ@@=p@=p@=p@JN@=p@0 @=p@g@=p@B@=p@ @@@@˒:+@@?@@@N@@䎊@@҈@2*0U2b@27KƧ@.`A@.¶}Vm@-;dZ@--V@-Vl"@-u!@-Vl"@-IQ@-Vl"@-!.H?^Q5P?$?U#?ƠJ-M?u?-tT?bM_x?#maЀ?rJs?Y??6#ZQ@s@/?1G?Eyx"hM?\Ў?r{@sVB@@u@u@u@1@u@Xe@u@$tS@u@֡a@u@Ʌo@lC@l@lC@l@lC@mV@lC@l!-@lC@l[W@lC@mqu@/!-w1@/!-w1@){"`A@){"`A@(SE@(Sa@O@'73@'73@'73@'73@'73@'D+?^Q5P?GA?$C@?MA8?/`?tJ?bV,? +?j?3.Yl?%y*=?J&d?k?b@? ?oܧ?avh?h?#.@@@@@,@*??????Q"? 9@?5=޶?{w@@l**?D:H?(*j?_?J@s (@@&=p@&d/@&=p.@&=p.@&=p.@&=p@&o@&=p@&nP@us3333@t9Xc@us3333.@us3333.@us3333.@us3333@ut9Xb@us3333@uu\)@8䎊@8($ xG@3S.Mm@3_-V.Qn@2xF^.NC,@2xF^@2Vu@2xF^@2{J#9?ӖlP@8#@8:@8 >+?J+?I ?ߞ.ӭ@8@8i@8?q?p?4hN@8 *@8p@8??oڕ??oڕ@?????@O;@O;@O;@_@O;@4m@O;@}H@O;@fA@O;@\)@ԭV@ԭO;d@ԭV@ԯ@ԭV@ԯA@ԭV@ԭ(@ԭV@ԭM;@ԭV@Ԯ!R@5I_o@5I"`@08r Ĝ@07K]d@.x@.*0U2b@,ߤ@@,ۥS@,ߤ@@,,<@,ߤ@@,G{?| ?{j?Gy??lDžN9? 9?CXs?1j?CO?kE<%?]bn~?@?h,à?^&?§d߱?Z?XLL?SP?Rv@@@@@&@,??????5P?!\?//5T? 19@v@ԭA?O)?.h[?AG?g0Vm@g;F@@5?|@9X@5?|@!-@5?|@䎊@5?|@tj@5?|@U@5?|@C,z@ C@ R@ C@m9@ C@!R@ C@T`e@ C@ ^ @ C@@8s@8҈p@5#@5$!-w1@4j~@4- @30U2a|@3Y}@30U2a|@3֚,<@30U2a|@3҂@5?}? ?r?V0O?&x?LTk?NIɮ?OW?l%FZ?/:?' ?EŐse?x?$n?o\Z|?9 ? 4e +?M\{W@@@@@$@&??????t)?b@?Z L?bLB@;i@<&?z~8u?w,F>? Z &2?uHl}@lLЩ@@"(\@")x@"(\@"&ffff@"(\@"%Q@"(\@"&@"(\@"%o@"(\@"$T@E@EQ@E@=E@E@?˒:)@E@84֡@E@;@E@<n/@34m8@3gCb@0@ ě@0@|@/F@/C\@/ +#9@/ oiE@/ +#9@/˒:*@/ +#9@/ rGF?|h2:?m?ě?@R?R%(0?װ*w?|b@?7fps??aYZq?=.e1?tK?Q(U?sq#?I/?cӗ1?v> ?2[s@@@@@,@&??????PqR$?E.?9L@@"'8:O@?s?0C`h?Zm2I?lMF?h;I@f'@@#;dZ@#+@#;dZ@#ؠ-@#;dZ@#Լj~@#;dZ@#`d@#;dZ@#т @#;dZ@#m]@;dZ@ +=@;dZ@@;dZ@~@;dZ@s@;dZ@[7@;dZ@%@8,<@8o@1kS@1a@0A7K@0 y @.Z@.+jg@.Z@.?@.Z@.sPI?{QB?_X +?c«?2UT?(+Zk?P?_$? KBI?+l??rrl?W'??i--?m!?__C?7zE?q@@@@@*@*??????P;콶?nк?D2Ne?U y@#Әl@|U6?V!?jJ*?3*?Q@ozY@@x@\@x@ I@x@ @x@q @x@˒;@x@@Tm@T@Tm@T@Tm@T[W>@Tm@T-V@Tm@T@Tm@TGE8@2 xF@2@0kS@0ka@@0M-V@0McA @.L/{K@.思IQ@.L/{K@. +L/@.L/{K@.-?^XN?h?WD@?̒? 9? ]V?bV,?5CQ?tw?-I`K?Hc?{L բD?e@'?/?m+&?ʬv?B ?L@@@@@*@*??????W[sD?"?@#~?/@{o@Tr?NB?=#e?AqW?s+@ro@@8M.@8M@8X7@8M@8@8M@8}@8M@8gqU@8M@8~@#P`A.@#P`A@#Jx@#P`A@#Fn@#P`A@#6 +&9@#P`A@#4f~+@#P`A@#/aO @9#g l.>@4.5?|@41p@37KƧ@3)k@3@5@3bSC@3@5@3N0@3@5@30ͩ@8J?CD&?ĚF ?7@?ИZN?*qh!@8J?3jR6?b8[.?vb'?S)z?@8p?;>p?mݹ?/6 4? G+?nĸ@$@*@,@;@9?????@C@C1&@C@C}Vl@C@CA@C@Cqj@C@C @C@CC,@SR@SC@SR@SMj@SR@SMj@SR@SiC@SR@S&@SR@Su!@7^H@7`bM@2ěT@2hr @1-@1t@1?䎊r@1=@1?䎊r@1=H˓@1?䎊r@1=(?^*?d̺?&t?V0O?di?1a??UbB3?$Jw"?#q\-v?A??;?Ƌ?iTC~t?~$?2 ?7?{2@@@@@,@,??????Bd(?U?JH]D?Dp@C,| +@S!Z?dNKL?aS*%?úJȄ?B @m4V@@u?|@xO@u?|@hQ]@u?|@_ +@u?|@tV@u?|@rl@u?|@xXɩ@@z@@j@@h@@گ@@W@@D@9(YJ@9 >0!X@4^5?|@4|N@3v-@3nŦ@33&@3*) @33&@3%K@33&@3#~*G?>,@?R{?L?`m? i?r7?W?!m~?0"?RGl?JGY$l?,s?P5s?(?tqN;?:k?[%?֢.@@$@&@&@4@5??????6`%?`J?P`?`I] @uڥ=@o?l^@?˟9?-~:T@lp ;@k@@TzG@S@TzG@V4@TzG@V@TzG@[S@TzG@Y~($@TzG@;=K@`ě@`A7M@`ě@VC@`ě@[v@`ě@SMj@`ě@]Vl@`ě@6}Vm@5w@@5v '@2TS@2PD@26-@21iB@1z,<@1v@1z,<@1w4m@1z,<@1_$tS?}ѿ,?Fp3?_*k??BPbC?>>? ?I}?ud?{7?J>?@ ~?=Ca? h? + l]?x2?ٔ!x?mCc4@@@@@ @??????:ZXl?e1A?e(]P@T-s@YJ't?ؠ4ۍ?7.@ EI@ +!3 kF@d̯@@v@R5~{@v.@v.@v.@v.@v.@?ڟv@? ,@?ڟv.@?ڟv.@?ڟv.@?ڟv.@?ڟv.@9^H@9`^cc@4n5?|.Mm@3-.Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,?)||n@8#@8:@8 >+@8I@8?i.&@8@8i@8@8S@8?mEKT@8 *@8p@8@8 @8 @?@Ghr!@G+@Ghr!@GKc@Ghr!@G\_y8@Ghr!@GN'@Ghr!@GF@Ghr!@GE@4mhr@4n}@4mhr@4n@4mhr@4p k@4mhr@4met@4mhr@4n\N@4mhr@4nC6)@5S&@5z@1^+@1^0#b@0ȓtj@0Ǻ<@08D*@07$A@08D*@06-Eg@08D*@07 + x?|b@?ݢt'?[4? ?00?sC?eXW? ]?5u?U&>/?Kf@?K t ?]nx@4{ I^.Mm@3y7KƧ.Qn@2.NC,@2.NC,@2.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @@ @@PS @@!U@@@@ e"@@xs @O@Cy@O@( @O@O@O@#@O@.@O@p@7,<@7* @3?|h@3J@2b-V@2Z/>@1_o @1騥@1_o @1(pL@1_o @1LR>?Äp? +"?@>??ڠ؞?g=a?~Ov_ح?$a?<1I?1Ge|?[Ď?B51r?dGE?&>G?!+?:?Jr 7?y@@@ @@5@5???????P:("?K]>V?XQ??J}wr@ u=@M?u[By1?m1-M?UbS?yB@i~6@@L/-@L-@L/-@L1u@L/-@L0U2a|@L/-@L3E@L/-@L/@L/-@L/rGE@Q@O@Q@RT`@Q@/W@Q@^ @Q@`A7@Q@K]@7 xF@7g l@3+ I@3@2tj@2 ѷ@1a:S@1`- r@1a:S@1_vȴ9@1a:S@1_Vϫ?q!U? #?Gk;m?a_b?yq?7F?Y͍_?tMP?ɇ}~?_3\?$) ?IH!w??4?Rw#{?l?gϵ? 1 D@@@@@@,@(??????ku\j?Pi?<{"&@L1ps4@+[?h $?_2[?6*?=[Ex@m7@@tj@3333@tj@ n@tj@(@tj@%@tj@&$/@tj@+t@ǯ-@ǽE@ǯ-@ǫq @ǯ-@Ǭ"h @ǯ-@ǥm\@ǯ-@ǚY@ǯ-@ǟH˒@8|Q@8ȭU@4Lhr@4Jݘ@3`A7@3حV@3B@5@36 +L/@3B@5@3EoiDh@3B@5@3Esg?|O?_X +?}_ܻ?"J]u?a0?s[?+-/?CO?OՃ?"|OV?a5?`u3? ?ae?!?=? # ?hvk@@@@@&@,???????s׏p+"?(s?ZYmMg@l]^@Ǩfc??MJjMP|?w|a}d??@/@j 1[@@@@@ ҈@@bM@@e+@@@@"e+@7Kƨ@V@7Kƨ@C,@7Kƨ@\)@7Kƨ@wKƧ@7Kƨ@vR<7@7Kƨ@l@8w@@8l1&y@4 hr@3o@3_-V@35Q@3 [W?@2-w1@3 [W?@2Љ'RT@3 [W?@2т ?cxt?eąւ?7'v?__z8`?eTm5[]?J"Fr?|?+M??.Oc?|g?T+)? uf?Xy1@>F=E@@>1@>@=@>1@>Ի@>1@>9@>1@>_@>1@>N|@&dZ@&BѮK%@&dZ@&P@&dZ@&U@&dZ@&H@&dZ@&;@&dZ@&-@8@9orX@35?|@3Zc@2"`@2D@2@2SsF +@2@2X r @2@2N?cD?$nba?mB?$~q?Qe,?uhҨ?pEkI?{9JgD?W)Be? c? ?4F:? |ȶ?: ?[?Z%?ەݓ?b$QߤA@@*@&@*@;@8???????nh +2?ehW ?R~| +h?pA:O@>r@&??w;-?gׁn?L?W'@kc@@y"@/@y"@xF]@y"@yb@y"@|N<@y"@z@y"@vR<5@A7L@^5?~@A7L@A \@A7L@C,@A7L@7@A7L@v@A7L@'RTa@9?@8@3S@3!.H@2`A7L@2c @2B@5@2E%F +L@2B@5@2Geں@2B@5@2F?ԭFLg4?Kb?פ?~rV?Q^F?jכb?G *ǂ?0? }>_?&v'?%3?lӪ<?LƴG?/#?6ז?a?k!l?b@@@@@*@&??????h ?Vn(I?s@y2@?f2/? ]3?O@ti;@sN%`EE@@r@rz@r@r7Kƨ@r@r%F +@r@r *@r@rۋp@r@r0@Eě@EG{@Eě@E#@Eě@E2W@Eě@E^5?}@Eě@E%@Eě@E=c@8+s@81hr @3@3b}V@3lj~#@3f@2kxF^@2ffffff@2kxF^@2heO@2kxF^@2hy=c?]?" ? +> ?QR@>\)@>R.@>R.@>R.@>R.@>R.@6g l@6Q@3|hr.Mm@2j~#.Qn@1D*.NC,@1D*.NC,@1D*.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?@+ܬ1'@+ba@+ܬ1'@+tH@+ܬ1'@+-@+ܬ1'@+!u/@+ܬ1'@+xE@+ܬ1'@+]!@#Q@#%e@#Q@#Tg@#Q@#ᒖË@#Q@$ط@#Q@#c@#Q@# @8*0U2b@83@4)+ @3U靪@3-V@3"s@2sh@2f+e@2sh@2y{2@2sh@2z)$?+?Xf[?}q㉽a?-v<?'ݘ? -U[?ɏ?#P5a?J? p@fQ@f-@fQ@f1@fQ@f7@fQ@fěT@fQ@f?@fQ@fe@5uS&@5vR<6@1O|hr@1N"@0`A7L@0Q@/N;6@/4J@/N;6@/u!S@/N;6@/iB?|O?Qd?K]4?'$5? f?װ*w?1j?HG^?qN?ihA?ߒh!?ȏ'T??2]7?W ?E 8?j?ܑ @@@@@$@(??????1"II?LCg?+C8@@{Б@f?4T?L{:*?v>8? @g@)!T@@`A7L@`n@`A7L@a@`A7L@an.@`A7L@a|Q@`A7L@` qv@`A7L@`҈@1-V@13333@1-V@1䎊r@1-V@1 @1-V@1ݗ*@1-V@1W@1-V@1T`e@6H@6M:@1 I^5@1ae@0y7KƧ@0xp:~@.p'RU@.oo@.p'RU@.ov_ح@.p'RU@.oo?|O?h?"?XQ>?u?}?Br?HG^?ܿ?Uh;?<U?eDQQ?zny-g?򯞼?]? ??b/bJ?M684@@@@@,@$???????N ?P?#(?#P9@`@1ԣ?DKE-?CRqE} !?l-L?Lo@h-9@@@C)@@q@@q@@EHu@@,1@@ᆸ>@p +@BZd@p +@Ƭ@p +@kc@p +@M%@p +@d'k0@p +@gPw@5mv@5m, +@1hr @1l@0Ƨ@0i0X'@0sh@0rJ@0sh@0fyT@0sh@01#%H?}x:@-@(@-@_@-@@-@>뽕@\)@\)@\)@4"_@\)@C@\)@Y@\)@_@\)@/q@0|Q@0|Q@)=-V@)>J@) 1&y@) B@'Ǔݗ,@'ʤR@'Ǔݗ,@'0>@'Ǔݗ,@'?N?^6P?6? Y`? :?/?x?bMn?x?t0^[?-(?_$^?N@?bw' g?ʙ ?zb?V?󰉋?y Y@@(@,@$@;@:??????(ϊ(?1:?V|?)r{A@YM@f?+zÁZQ'?8?Wx$?H쮽?B~)ߛ@"@VH?b؄f)?gm="[?Zl?rdJ@m9X@@߾vȴ@vȴ9@߾vȴ@- @߾vȴ@$/@߾vȴ@- @߾vȴ@ސ$@߾vȴ@vȴ9@9"@9"@9"@:G@9"@:^5?|@9"@:)y@9"@:xl"h@9"@:6@4 xF@4e@/j~"@/~$@.NO;@.NVv@-QN;6@-Q-@-QN;6@-QN;5@-QN;6@-Q ?2}?Z.?4!p?8v?g?i{? ?4 "?['?/Z?2&h?sx/T?nwf?.x?q6tN7?XLL?pk Y?pk Y@@@@@(@*???????_Gz?+?3_['?ъ:H@@:G?S>> u?"b?P!>݋I?OY +@h,l,@@Dt@DZ@Dt@D7@Dt@D/@Dt@Eݘ@Dt@C9@Dt@C@pj~@pj~@pj~@p2a|@pj~@p3@pj~@p3@pj~@pg @pj~@pݗ,@204m8@20A7K@/"@/Fs@.;dZ@.+@.3PH@.1hr @.3PH@.-C\@.3PH@.-%?^Dw'?m0?.Ү_ ?q@v? +?ʟ?bM_x?)[+@8I@8?i$@8@8i@8@8S@8? J@8 *@8p@8@8 @8 @?@+R@33333@+R@4@+R@9XbN@+R@`hۋ@+R@l"@+R@vR<6@Xtj@V+ @Xtj@i'RT@Xtj@P`A@Xtj@g&@Xtj@L>C@Xtj@C @7s@7^@5sS@5sn.2@47KƧ@4@4D*@4g +@4D*@4l!.@4D*@45Xy>?}ѿ,?d_s?^RpX?ׇlg?I]mB?:7{*J?oC?{c?低NU?]~ɺ@?>5?{$@?WA?Us?wX?'D[?R͐?8$ +"@@@@@*@*???????Hc@XJL?b?jdx@H@U?xNX(&?3H?Ņp?4K?@`Ql;@@]3E.@]3E.@]3E.@]3E.@]3E.@]3E.@>0 +=.@>0 +=.@>0 +=.@>0 +=.@>0 +=.@>0 +=.@9=:.>@4I^5?.Mm@3~Vu.Qn@3._o .NC,@3._o .NC,@3._o .NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @bM@Q @bM@@bM@=@bM@~@bM@u@bM@@+ J@,NE%@+ J@iG@+ J@2ي@+ J@Fs@+ J@4R!@+ J@d. @204m8@20Fd@.-@.>BZc@-dZ@-Ve\@.C\@.Xs@.C\@.*@.C\@.,٢?^j?]9?"QJ?B*?YY%?/z?bM7?9n?=,D?4i?v +?\ :?bQ?7c?~@\? ?"F?L@@"@"@&@6@5??????'5s]?6?|\t@<@`R?'HJ+b?%Hn?JnG ?CYt@s&)?@@ow@nV@ow@lC@ow@hr @ow@tD@ow@nU@ow@m(@bM@# +=q@bM@r@bM@r@bM@a@@bM@e@bM@4֡@8@8© @3^+@3_ @2~"@2/{J#@2&YJ@2&Fs@2&YJ@2&@2&YJ@2%m\?2}?R?y]?Z.?Xe?sU Z?+-/?yom?FH>d#?fAzQa?Vu@2Bp:@1YJ@14֡b@1YJ@1F]c@1YJ@12W?}?PƧ$?@^ڢ?Rw#z?K/?۝.Yr?% ?Hz?J?@[*^?we ?fAzQa?Nϸ? h?ZaQ?1R?q?;kr>@@@@@&@(??????K8I?9?Ic?B  e݊@J-a@gIrR?h4nR?_l?Ґ5.ؐD?Ct@kzNC@@`A@zG@`A.@`A.@`A.@`A.@`A.@$/@/@$/.@$/.@$/.@$/.@$/.@8G>6z@5T`d@4Y^5?}.Mm@3-V.Qn@3O M.NC,@3O M.NC,@3O M.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?@Z@Z@Z@ +L/@Z@7@Z@@Z@@Z@7K@lC@lI^5@lC@o@lC@m\@lC@lzxl@lC@n.3@lC@m\@4>6z@4&@25S@25?@1A7K@1 qu@1._o @1-ڹZ@1._o @1+A@1._o @1+lC?| ?jD?=d?],V??0&YEd?|)-}(@@@@@,@,??????:\F`?2Ӑ?:ij-?J!@@luP?Z NV=S?= >Rh?f_H?zRW@fi@@Qhr!@^vȴ9@Qhr!@;5X@Qhr!@껲m@Qhr!@ꏷ@Qhr!@ꥮ1@Qhr!@꼄@ڻdZ@$/@ڻdZ@ٙ+@ڻdZ@ l@ڻdZ@=J@ڻdZ@}H@ڻdZ@@7:@7{n@5^5?}@4{J#9@5`A7L@4+6@4O M@3+a@4O M@3\(@4O M@3?F/P5? &/d%?jl|?G> +?ˠ^㪶?B[!?ꯨT?ɖ?3AO?} ?f?Ԃ?@K/{?87?@@ ?:>-?3B?Iv:@@@@@,@*??????=@@3s@3Pab@1 ě@0e1@0Z~"@0Y~N0@0@4@0^{@0@4@0W1@0@4@0O4?|b@?H]9?)?;?ױT?(H?| V?E~*? +?0Ծ1R +?6X?x++?z*?XI?Ho??o?b/bJ@@,@&@$@7@8???????A?;q?8\[?$G72@3rv@?o?X%v1E?E}g?%}Z?" @f]d@@ +_vȴ@ +T9Xb@ +_vȴ@ +~m\@ +_vȴ@ +<@ +_vȴ@ +_p@ +_vȴ@ +wXd@ +_vȴ@ +}+l@@zI@@6Ϫ@@0D@@'@@-@@!@8%!.@8)XbM@3i+ @3P@2Vu@2_p@26z@2䎊r@26z@2Ϫ͞@26z@2cA ?E?kf?s |?U6֧??d4?=fA:?0o>?7ȑC@ěT@hr!@ěT@`[7@ěT@M:@ěT@{J#:@ěT@_@ěT@*0U@8S&@8ݗ,@5r Ĝ@6Vȴ9X@5`A7L@6tm8@4iB@6wkQ@4iB@5ݘ@4iB@5-K]?}?Z:1?jk?,J 3?Lj!_?{='"?1+@8I@8?qn@8@8i@8@8S@8?+:@8 *@8p@8@8 @8 @?@["`@[S@["`@X4֡@["`@ZkP@["`@Y_p@["`@YJ@["`@V}Vm@׊o@׊~#@׊o@׉Dg8@׊o@׊#9@׊o@׋҉@׊o@׎H@׊o@׏hی@4 ]ce@4 VϪ@0 ě@0u!R@0Z~"@0T7@/Ǔݗ,@/"`A@/Ǔݗ,@/쿱[X@/Ǔݗ,@/쿱[X?Ol?: ?\H{gX?U*?>C,4?[2?|O?uie?{d??8?kj?|׿pY?2]7?v'X?WhQ?OO ?0&YEd@@@@@,@,??????Kj?LR?&hy?!(|@Y#@׌TC?F,Fi?B S ?zrt?-@gZ@@Z1@qm@Z1@YA={@Z1@]/}:l@Z1@_i@Z1@Z(@Z1@Y%@ۓ@ۛe@ۓ@۔͒@ۓ@۔V:[@ۓ@ەPs@ۓ@ۖ2H@ۓ@ە@7]ce@7ưj~@1+@1$0@0Z~"@0YpC a@0kxF^@0iyV )x@0kxF^@0h*}@0kxF^@0h(u??'P?aas?{?} +?h?sky?\l6? 71R +?Z5k?p[!B?I}/@?V?Lu۳?ɯnR\?{z&U?!!?5 Y?@@"@ @$@2@2??????b$>.Td?AAJ?>,Za@_Umy@ۖ?Xq9?\ԭ?7!D?@n+M@@U7@U8bM@U7@U8V@U7@U8;@U7@U8@U7@U7Xf@U7@U7*o@1@^5?}@1@;X,@1@*@1@fp@1@FSs@1@vJ@1}:@1}:@."`@.Uzz@.]E@.]+@-uXy=@-uA@-uXy=@-u'@-uXy=@-u?`BcM?}p[?-5AԘ??מ?1Y?bQ넛?,2?k?3]Z@?Mm/?Sܻ_j?bM]f?v??:k?7b ?1C@@*@(@$@5@9??????9|>o?,_\ ? f@U700@a$]?"^2űe?6?@`c,?0!kNQK@sK @@D.O@D'sy@D.O@D#n.@D.O@CbM@D.O@CdZ@D.O@DR<@D.O@C;dZ@r=p@r}: +@r=p@r@r=p@rz)y@r=p@riB@r=p@r`A7@r=p@s+6z@7w@@7nTb@5+S@5" ě@4-V@4u!@48D*@4t@48D*@4*u%F @48D*@4Q?}x@-tj@-{ӷ1#@- 1&y@-ɮ @,#Z@,/3v@,#Z@+)ވx@,#Z@,1S߬@8 +Ny?*)H?9?? +0B?ͭ?Ugsj@82r?pU_?gb?>!u?ǖ&?Qc@8L?%?1QcFe?P0?]^? Gg@$@$@$@9@3?????@eS@mhL@eS@ʚ[07@eS@c2P@eS@[k:@eS@[@eS@[8 @*$@*M[@*$@*@*$@*_@*$@*G={@*$@*Ɋn@*$@*J@9|Q@9_.@3|hr@3H+tw@3Z~"@3,aQ@2Tm8@2FAa@2Tm8@2C]p@2Tm8@2C9rJֳ?]?vK?>?]:VE?}?T?t D5?q A'?lH?Q)\?r|2?<`?6;:?^5? +V??с:?<@@"@(@$@:@9??????lP^?[ ?Ih#L@^_@*n?u(h?fJ0β?ho??íak@l=6@@bM@O@bM@ @bM@̠qo@bM@"c@bM@@Gt@bM@ƈz@@n@?EjGw@@n@@'@@n@??B6?u=?B&Y?¨Sp*?h +?vnA? tEz?N s?Z!}?Tʼ=?޵?o0_+*?Q?*?zw@@*@"@(@4@8??????R(4N[T?8B ?@;@C(@:LW?Wcmn?ahM?T=yr?p؏3|@hX(<@@z}E.@z}E@zce@z}E@z@z}E@z&@z}E@zd9K@z}E@z~bb@#S.@#S@kP@#S@(@#S@ح@#S@ĭ7c3@#S@VBD:@9e!..>@4=hr @46@3U`A7L@3LC@2̿[W?@2 '0@2̿[W?@36L@2̿[W?@2ǒ0d@8J?W@!?RsW?rՉ?P?t +@8J?@׮?HD?} ?NJ@?,3vF@8p? AI??Cx%?u ?$rMy@@@@.@,?????@el1&@e|(@el1&@eP'R@el1&@eN;@el1&@eS|@el1&@e*@el1&@evz@MO;d@49Xb@MO;d@!-w@MO;d@YY@MO;d@:v@MO;d@*0U@MO;d@_o @9DO M@9XU@5Y^5?}@51&x@4dj~@4"@4n@3䎊r@3:S@3䎊r@3u@3䎊r@3?xDž??"6$?ޝ)?aMz?$@?? Z ?*J?c??1Tn]?s_Nr?X?Cy^?tu?F?0?a#@@@@@,@&???????<?|/}?}7"?N"911@erv @Xe?b/G?qwH ?xe@0CX='@lz@@q I^@q~#@q I^.@q I^.@q I^.@q I^.@q I^.@P=E@P1hr @P=E.@P=E.@P=E.@P=E.@P=E.@8įO M@8ڙ0 @4sS.Mm@3t.Qn@3O M.NC,@3O M.NC,@3O M.NC,?ڷ@8#@8:@8 >+@8I@8?W$B@8@8i@8@8S@8?S~6d)@8 *@8p@8@8 @8 @?@g\)@g"`@g\)@gv_خ@g\)@g3@g\)@g@@g\)@gDg8@g\)@grG@mhr@s3333@mhr@.@mhr@Jn@mhr@cw@mhr@oiE@mhr@N;@4۹~($@4xl"h +@1ٺ^5?}@1@1`A7L@0v@0G k@03&@0G k@00bM@0G k@02&IR?)T?ly?9t3C?+?>C,4?y+PYu?q!U?Ғ](+??jSV?hY?u*,?hU?~d?l~J?XW~?՘]G?j]@@@@@*@,???????jМ$?fpۂX?FiSs>?bgnW@g@{mt?g^?6rl? ?_ c@jq@@Vp ě@Vs@Vp ě@Vuᰊ@Vp ě@Vu\*@Vp ě@Vrs@Vp ě@Vr@Vp ě@Vq2W@P I@P~#@P I@Pu%@P I@P0U2a@P I@P=p@P I@Pqi@P I@Pq @6䎊@6D@2|hr@2̑N;@2."@2+C%@1!.I@1oi@1!.I@1C-@1!.I@18}H?2}?? +NA3?{y6?_?4?| ?&uE@?J?.}$??EBl?:t?f)"?z"2)?Yʒ?t? ;8@@@@@,@*??????=oe?Y>산M?/ ع@Vr4@P? -G?@wl +?!,Y=M[?ť@g7H~@@(@x@(@@(@H@(@\M@(@m@(@1@Q@n@Q@wk@Q@$/@Q@n.@Q@@Q@nO@8%!.@8$oh@3+ @3G{@2Ƨ@2]ce@2@5@2@4@2@5@2yb~@2@5@2C\?X?P1"? \?(tUo?zcR?tٵ?}ѿ,?I1@?ؼZ?'G_J?U?/Ւ?Rw#z?2}?[?1(w?p& ?F-@@@@@,@*??????t?BX?T7a?asaYE@CP(@iL~?l6Sl?ew!?;gN?`NZ+@i㹎\@@`A.@`A@ (@`A@;lD@`A@@`A@\@`A@s@#S.@#S@b}V@#S@ae@#S@sP@#S@Np:@#S@c@8~($.>@3ԛS@3kS@2V@2W+@2=ce@1O;dZ@2=ce@11&y@2=ce@2҈q@8J?6?\.?&L=?[XLj?02ۼ@8J?kI}?QaQޚ??f?ʏ-a)@8p?,,? }P!? +K?Oނ?"@@@@,@*?????@x@x@x.@x.@x.@x.@x.@B\(@A7K@B\(.@B\(.@B\(.@B\(.@B\(.@1H@1蛋5@0\I^5@.Mm@0>Vu.Qn@/-w1.NC,@/-w1.NC,@/-w1.NC,?^(ǭ@8#@8:@8 >+@8I@8?bM/^@8@8i@8@8S@8?ngH29@8 *@8p@8@8 @8 @ ?@ +o@S@ +o@ +0@ +o@ +0@ +o@$t@ +o@@ +o@{J#:@$bM@$nP@$bM@$bM@$bM@$׍O<@$bM@$@$bM@$e-@$bM@$.H@9>6z@8:)z@4J^5?|@4I>BZ@3"@3ߤ@@2_o @2Q@2_o @2)y@2_o @2K]c? x??/͔p?\GyƩ?ťBW?;?)T?{UO?Kd+??r=w?x7f?K? *sr?T?R ?ٔ!x? N@@@@@*@&??????pB?X,8?cra@?\lU@ -}z@$ӝ?utꍳ?G?Z}%n?6@o:@@8Q@8Q@8Q@9\h@8Q@9Y @8Q@;s@8Q@6- @8Q@8eC@8g-@8g-@8g-@8h@8g-@8j&_h@8g-@8i-^@8g-@8i]@8g-@8ky@2#g l@2#g l@.8tj@.7E@.*n@.&&V39@-ۋq @-Z@-ۋq @-@-ۋq @-X^?^6P?i<?OG ?o?h?޳E49?bMn? vL? "?$? ?~d?bQ?>?}.?j1s=?(Y?X^)@@@(@*@*@5@8??????IP- ?O^?@W?4˜@9)6f@8i5K?Odħ.?B2􈾇?$_D?~AF@s ҙO6@@\).@\)@/@\)@@\)@fl@\)@h@J@\)@/}@G{.@G{@`\J @G{@$qy@G{@*%@G{@@G{@ǯe H@7.>@3+ J@3 M@3`A7@3'|Q5@2[W?@28mR@2[W?@2CGV@2[W?@2}@-@8J?*}v?0xO?>N?AÓ ?HF@8J??uP;?Kȕ?#PG?^Y:p@8p?ݵ#U?ġ͜+?^כ',?8V?>|O@2@?Hߏ#,?)*FT?'ۂ?Z"&@s @@33333@3@33333.@33333.@33333.@33333.@33333.@@I^5@@hr!@@I^5.@@I^5.@@I^5.@@I^5.@@I^5.@7e!.@7gmt@3r Ĝ.Mm@3 -V.Qn@2.NC,@2.NC,@2.NC,?|h2:@8#@8:@8 >+@8I@8?6]g@8@8i@8@8S@8?Zgr@8 *@8p@8@8 @8 @?@|hs@L@|hs@~]@|hs@v@|hs@)j@|hs@Zt@|hs@T'-K@tj@ moE@tj@6Rw@tj@!NAaw@tj@g@tj@@tj@@74m8@7RR@3+ I@3h k@27KƧ@2+@2z,<@2}0Q@2z,<@2}@2z,<@2~RQ44?ؗ?̏+? T?oc?YB2?B?՘b2?~?}T9I?4Kvx?|;*?PO W? 93?m-?|6}>?iY^#?2T?>!@@&@$@"@.@1??????Hn?bڡc?W-?V8rN@#?@2?rqFn?rdFo7? 0@?S=6`p@m̥@@%;dZ@% I]@%;dZ.@%;dZ.@%;dZ.@%;dZ@%*0V@%;dZ@%-@^5?}@dZ@^5?}.@^5?}.@^5?}.@^5?}@Q@^5?}@/V@7 ]ce@7 Q@3+ .Mm@2Vu.Qn@2iB.NC,@2iB@24m@2iB@2r?Y͍_@8#@8:@8 >+?K/?tY+9>?)T@8@8i@8?dLt?fD?a +@8 *@8p@8?屘?l@@ @(???@C@nO@C@2X@C@[@C@1@C@2@C@jg@7K@lI^5@7K@҈@7K@|@7K@IQ@7K@-V@7K@=K@7Y*0U2b@6A7K@2 ě@2{6z@2 -V@2 "`@1._o @1*ݘ@1._o @1)Y}@1._o @1*vȴ?n(t?S_?-a} ?1?7?ZzZ?H6m?{UO?pI?\d?ۣ0Υ?fAzQa?ꎤR?u/X?v'X?ڠu?v> ?*Z}@@@@@*@(??????UNeQ?_-&_?_w=e"@w@"C(?n|g?mu[?ѿȡ9?5Ta@sB. @@/`A@/`A@/`A@/em@/`A@/C +@/`A@/N2@/`A@/@/`A@/oQV@H;dZ@H;dZ@H;dZ@Hhah@H;dZ@Hg@H;dZ@H):O7@H;dZ@H(ʕV@H;dZ@HnȞ@4v@4_o @1^5?|@1/Hxq@0tj@03 +z|@0Q@0 '@0Q@0;@0Q@0("wk?|b@?i?r?z? Ge?׎L'y#?|h2:?FD?|"x?5?x_Oq?ЎVN??Dޣx?9]?2E?=`XD@3 ě@3fL/{J@3 "`B@2s@2+xF^@2 ě@2+xF^@20L`}@2+xF^@2՘4>b?W? U?/_ ?j}? t4gU?j5?| V?/v\?.U?jV^?^J+?`Lk.?8@?! 6?"x?]C޶? ș?нMrѶ@@@@@7@7??????k`j?OjGP?b@v@Q?a<@lز@ ?eH?~n2??@b~@@hs@/@hs@<63@hs@-V@hs@[8@hs@q @hs@<64@-V@-V@-V@<6@-V@`A@-V@*2@-V@䎊r@-V@3333@4 xF@4|@2i+ @2hYJ@1-V@1As@0𖻘@0hۋ@0𖻘@0'RT`@0𖻘@0;dZ?|O?sp? ??Q@4|hr.Mm@4`A7L.Qn@3ޫ6z.NC,@3ޫ6z.NC,@3ޫ6z.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @0 ě@/-@0 ě@14J@0 ě@0 ě@0 ě@0oiDg@0 ě@.}Vl@0 ě@.p:@۞Q@۟;dZ@۞Q@۟$tT@۞Q@۟[W?@۞Q@۟;dZ@۞Q@۞ߤ?@۞Q@۟b}@4@4a|R@/~"@/ @.rnO@.qR@,N;6@,&x@,N;6@,N;5@,N;6@,4J? ? ?1f_?<ݝ?E{??}ѿ,? g?A)N?e[|(?M@k @@\(@i*w@\(@׍#[@\(@d@\(@ĜBo@\(@׷[]@\(@׻XփA@&ffff@0@E@&ffff@7 @&ffff@5U>@&ffff@'g@&ffff@*@&ffff@3`q3@8@8P׌@3^5?|@3@3A7K@3 ps@2O M@29jė@2O M@2`,u@2O M@2 7L?%h?ZuD?)s??f94Iݍ?̝`? MV{?U:?ehd?,=?kn?h?:?%f+??v#w)?_3+z? a@@@"@$@3@.??????x,;@?R5Z?[\-'+y?a+rf˦@sow@-?uNw?z('? ?5z@nռNg@@h-V@h,@h-V@h+~)@h-V@h.O@h-V@h0 ě@h-V@h/V@h-V@h/@@O;d@@c +@@ͫU@@@@\(@@iC@5[~($@5[~($@2hr @2zxl"@2`A7L@2e@1sh@18YK@1sh@17@1sh@1g l?|O?[ꕠ?IK?Rw#z?Xe?=W?}ѿ,?f?+l?RLnj? ?C ;?Z?7'nK?ԇ:?=rE=?*Z}?OO @@@@@"@$???????HBF?Jq8?,W?'._@h.k@˞f?Lhd,?Gfp$)q?B\g!?A@fA@@ɺ^5?@Z]@ɺ^5?@Q%7@ɺ^5?@n@ɺ^5?@΂3 +@ɺ^5?@ϲ @ɺ^5?@ˊi۴@+@S1@+@Ƨ8d@+@<:@+@ɶaN@+@=@+@@6|Q@6Wv@3#@3'm1x@2tj~@2m߸ @2iB@2@2iB@2S@2iB@2^{?ڡG7Fo?Q+6͖;@k@٧?bvݴj?qn9'l?/o?>GX@i29#@@A7L@ě@A7L@IQ@A7L@u"@A7L@u"@A7L@@N@A7L@@k I@k I@k I@lI^5@k I@i^ @k I@k6z@k I@jqi@k I@iᰉ@4 xF@4tj@0 I^@0L/{@0,j~#@0,1&@/Ǔݗ,@/&J@/Ǔݗ,@/7Kƨ@/Ǔݗ,@/R<6?| ?ߋb?=?Kh?!#?ZAj?9?}ѿ,?NۈV(?:?,~[?a +/ ?m/wBZ@2}:@2}K]@1 ě@14J@/O;dZ@/p:~@0~($ @04J@0~($ @0!.@0~($ @0l!.?^Q5P?E?>\?^t -a?oNŒ+? d?bM_x?)[ +fu?3j_?#X?2}?.8 +B?/Y}?,DP?̈- +?rsw??\? Ğ@@@@@$@*??????BWRN?``A?7b~@9:x*@?;eH _C?XYb?zJ.IR?@hC9=@@5w@5O@5w@5o@5w@5V@5w@5@5w@5.4@5w@5zH@XbM@Y@XbM@W +=p@XbM@WXe@XbM@WXe@XbM@WsP@XbM@V@1w@@1wKƧ@+WKƧ@+WXe,@* 1&y@* 1&z@(@(@(@(حW@(@(䎊r?^XN?[evȴ8@7@6E@7@_o@7@MB@7@R{@7@UfA@33333@.O@33333@1&x@33333@ /{J@33333@@4m@33333@IDg8@33333@? @7uS&@7t9XbN@4^5?}@4Vt@4tj~@4u"@4\Q@4xD*@4\Q@4I^5@@4\Q@4\Np?8YV?v0{Gt?v󒇾O@^0Wp@w6?+o??)?R%{A?M; Y@szl@@+@bM@+.@+.@+.@+.@+.@+ @r-V@+ .@+ .@+ .@+ .@+ .@7O M@6t-N@5uS.Mm@4`A.Qn@4!.I.NC,@4!.I.NC,@4!.I.NC,?"r+@8#@8:@8 >+@8I@8?SV-@8@8i@8@8S@8? @8 *@8p@8@8 @8 @?@Q@\)@Q@;g@Q@𸵜@Q@tw[@Q@ore@Q@ y@}Gz@}A7K@}Gz@}VZ3(@}Gz@}K>%@}Gz@}aGA @}Gz@}O[A*@}Gz@}O0@7]ce@7[X?@33S@33z{@2`A7@2n@@2:,<@2=؆@2:,<@2=@2:,<@2=$0w?~?J?`?) ?~?OmI?\op?anñ?YA?EE/J?-I?H?KC?ކf?Y ?݊X#?QB?]і? t_@@"@"@ @9@6???????i?`ЍtT?0=Mu?XHWq@K@}L=?P. T?y*bUi?@x?QZ@g]'@@S@u@S@.1@S@/A@S@+a@S@"@S@&Ft@1l@1+ @1l@1@1l@1Q@1l@1~(@1l@1D@1l@1b@8p4m8@8TO M@5uS@5~1@56-@5,쿱[@4YJ@5,@4YJ@4@4YJ@4u%F ?+-/?1< ?ӳ?3҃?S?sY(?UbB2?n4?E%:9?,#t?+ҥ/?n]3m?$*a?.9؇8?'w?~lVo?)Ũ(?S@Gd@@@@@(@(???????q<?cW_?a(˞?h\z1@"+s@1)Vu@1={@0ush@0utn) +@0ush@0tZN@0ush@0v5 ?}#?!ԡ.?L߉N2;?0Ѐ?-'i?rC?|h2:?tFLj?41?%=|V?%qߌ?Vz@@$@ @@4@5??????JL?Qs*Μ?0Esɀ?& @_J@((?P!x?GTV?nL;u? +z +ƧL@f];?@@νp +.@νp +@5Y@νp +@γ@νp +@D@νp +@{S@νp +@O @.@@lC@@⩓ @@@@ [@@֡a@6|Q.>@4J^5?|@42-V@3"`@3 M;@3p@3gXe,@3p@3%!.@3p@3-(@8J?# ?H,K?C˗?Ѷĥ?Hg@8J?f\?`R*?=,܄o?ÇޞE? P7L@8p?f?-t*z?+&*?w, ?=i@@@@*@(?????@Qhr!.@Qhr!.@Qhr!.@Qhr!.@Qhr!.@Qhr!.@ +=p.@ +=p.@ +=p.@ +=p.@ +=p.@ +=p.@7Y*0U2b.>@3{ I^.Mm@2-.Qn@2m8.NC,@2m8.NC,@2m8.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @vȴ9X@xQ @vȴ9X@}+k@vȴ9X@jڹZ@vȴ9X@c +=r@vȴ9X@m@vȴ9X@kt@kQ@k-@kQ@kD@kQ@ksP@kQ@k@kQ@k:)z@kQ@k~@6>6z@6F +L/@3hr @3qi@3"`B@3~ѷY@3:,<@33$@3:,<@3..2@3:,<@3*Y? ?J6|?zI#?~mW?r?AŸ?1j?N`?L?3F0?02\?'Ln?m+&?їJ?9@0w?-;d'?\,!?8@@@@@&@&??????q"@h?`35t?`V (?Z[O@pGS|@k +(?|F?vt?QH?qۊ|@c @ @-@E@-@Ov_@-@@-@Mj@-@?@-@ I@ ;lD@ 6ȴ9X@ ;lD@ NV@ ;lD@ {qu"@ ;lD@ X4֡@ ;lD@ +@ ;lD@ 9_o@7쿱[X@7,@45?|@4q @4tj~@4@3m8@3\(@3m8@4Dm8@3m8@3N;6?}?+>? J?ׂa?t#V?/U?+-/?%@&??v?). ?mݪҏ?tFI?&Z#?u?Hh'$?eT?A&@@@@@(@*??????vj?p_?i>:?W85@߹H3@ JBŃ?+L??Ĺ+?Y`,@*?f%H}@fFW + +@ +@P`A@Qm@P`A@R9dfp@P`A@P{@P`A@Q07@P`A@OK?@P`A@Og@v@ +@v@S@v@j@v@\@v@F@v@f`m@304m8@30'RT`@0!hr @0![?@.;dZ@.@-@-deg@-@-ֻC@-@-e?}#?eqa? 5C? +F[?af?Kq?| V?Cl?&٣v?8f_w?bzF?^p_?tw{O?z+?siH4?-B\@.J#9@.J#9@)`A7K@)zxl"h@'n@'IQ@'a-w1@'aGz@'a-w1@'aGz@'a-w1@'a:T?^Q5P?ƿ57?S?MA8?tKc?tJ?bM_x? g?90?7枪y7?@?L "?b@?8 T?oܧ?avh?O|q?#.@@@@@&@(??????R d?Bȹ ^@@y?Gl´a>f 6?4C>Vp@s nY:O@ @,ݲ-V@,/@,ݲ-V@,6@,ݲ-V@,*1@,ݲ-V@,hۋ@,ݲ-V@,W>7@,ݲ-V@,C,y@\1'@]-V@\1'@g)_@\1'@cS@\1'@mV@\1'@a@N@\1'@\PH@5I_o@5IrGE8@2\I^5?@2Z,<@1Vu@1b}@1YJ@1j~@1YJ@1)^@1YJ@16D?| ?4$?K̃?wX/8?o?P? d? ?`5a?1ک! ?鐮|o??|?qn?oM?O?C?l? .0v@@@@@*@*?????? @?AS=d?A΁?UerhO@,\\@_ZA@?a?(J?u>@?[_?'.}\@f7!A9@ @Q9Xb@Q1&y@Q9Xb@Q8@Q9Xb@Qu@Q9Xb@Qg @Q9Xb@QjO@Q9Xb@Q:@1&y@⺟v@1&y@Ft@1&y@u@1&y@⽥@1&y@ⵁ$@1&y@ƀIR@8_o@8ѷ@4^+@4aTɅo@4-V@4'sPH@3G k@3GkP@3G k@3Dm8@3G k@3EF +L0?W$B?vucʲ?XY?'Z?PU`?"eM?ٛP?b?Et?xH +?. ?X2$?]'Y?Ǚs?Az?LO?uЍ?? S @@@@@*@,??????/2A?\%<?ZΈ?b{}b@Q1ψ@?{?sDsY?xl?=Md?hs@o0z@@LI^5@GlC@LI^5@LI^5@LI^5@J=p@LI^5@MU@LI^5@JE@LI^5@L_@2-@2j~@2-@2rGF@2-@2jN@2-@2|@2-@2iDg9@2-@2V@8䎊@7C,@3ěT@3hr @2"@2T@1@1=b@1@1ѷ@1@17KƧ?Q,Ě?tH?UGNA?J?j?J8Ȟ?Ol? Du?$z¾6??.<?:i?]?vv?̈- +?Z?:1?Y͍_@@@@@(@(???????#q@RS>?LNJt?.V,@LBm"@2i1?al9'}?R9Y {y?G4q?t `@o_S!A@@ETF@EU$@ETF@EUϪ͠@ETF@EU$@ETF@EUϪ͞@ETF@ES@ETF@ES*0U@bM@&x@bM@{@bM@ +=@bM@^@bM@hr!@bM@{@4(YJ@4(eO@0 ě@0- r@/n@/7Kƨ@.a-w1@.aohی@.a-w1@.aGz@.a-w1@.aGz? ?&H?*"AaI?ݶ\r?Dj?2I/?|O? C`?A)N?]bn~?6z@4FLy@0hr @0pz 8@0Htj@0H8%%@/@/89@/@/)ە@/@/z?}#?'Ќ?3W?%?B?ױT?V?|h2:?1(?ty!?7ݸ?\C)?sc)?oEP}?l< ?x?k?4?6@@@ @ @5@3?????? +fu?[RKE??~?A_f;j?jx?sq#?z_? ??:1?v> @@@@@*@*??????J:j]zq?NDKRs?@:~@^L@Tnn?g?V5?V7qF,?cx +e@nGc@@D49Xb@D3@D49Xb@D4Fs@D49Xb@D4D@D49Xb@D4SM@D49Xb@D33333@D49Xb@D3@\Q@\Q@\Q@\a@P@\Q@\&I@\Q@\n@\Q@\Zc @\Q@\t@25S&@25Vl!@/A7K@/o@/n@/@.`d@.!-w2@.`d@.zG@.`d@.3?^T?&H?`כm?8v?Dj??bMn? ,C?tJ?3.Yl?ߒh!?eDQQ?bM?3;?W ?':?L?L@@@@@,@&??????:,?(?,Č_?->{!6@D3W@\&?;ٹVlB?;?q"LQ?q~a@s\9@@.s3333@.r@.s3333@.tG@.s3333@.u\)@.s3333@.s @.s3333@.rT`e@.s3333@.qiD@lD@S@lD@\O@lD@ (@lD@@lD@]cf@lD@쿱@4r@4r䎊q@0@0g@0Htj@0H)@/ۋq @/B@/ۋq @/~"@/ۋq @/L/|?|O?ߋb?e +!C?#t?? µ?1j?7fps?'Q?@Cv?M?rJs?2Y0?Q? SF?^ a?ˢL1?fW@@@@@(@,??????$?(3?/.(x>j$ c@.r@ p?6,sto?v3q?z%?@]kh$@g5@@ަffff@ޡ7K@ަffff@ޭB@ަffff@ޥں@ަffff@ޥn@ަffff@ޤT@ަffff@ާE85@"@Q@"@âw@"@Ov_@"@@"@"@"@|h@7v@7@2W+ I@2W8}H@1lj~#@1l1&@0s&@0ra|R@0s&@0rGE85@0s&@0r@4n?|O?*? +NA3?̒?V^?-tT?ꯨT?Eo&?t(?-I`K?77?ٶm?:-?7-R?@A?k,?2[s? Ğ@@@@@(@"???????RADL&Q?0յg?>KMU9@ޥ!@D8?T>`?T @?B WA?,;1@nvr.k@@~"@j~@~"@yF@~"@O.+@~"@&'A@~"@A:@~"@@ǺG@ǬI^5@ǺG@Ǜl@ǺG@ǃU@ǺG@ǀx@ǺG@ l@ǺG@t/=~=@8cg l@8[_O@4 I^5@38@3W-@3*b@3^6z@2 +8|@3^6z@2@5@3^6z@2jD)o?}IT?BGt?r8M?!\|?!?i~r0)?>;f_?'Yb! ?~6gL?۪b?̳r`f?u{0? ?Sp?hbE?{⹭?G[]=?xŪ?ˎYx@@@ @ @$@&???????zBo Հ?aF//?t@Om@lj)f?*˹Z??t"z? S@mGh%J@@XbN@"@XbN@n/@XbN@Y@XbN@"@XbN@74@XbN@}H@A7L@ě@A7L@G{@A7L@n@A7L@@A7L@e+@A7L@@3쿱[X@31@0r Ĝ@0&@0`A@0GE85@/Ǔݗ,@/ƚ,<@/Ǔݗ,@/TɅ@/Ǔݗ,@/?}ѿ,??`כm? Y?V^?ʟ?| ?›?i?1'7?c3c(?äqY?/Y}? +? ݎ8?k,?ܑ ?v> @@@@@*@&??????4ի?' ?!="K?'];؟@?e@?A .S?G&z?"}e?&k +@fӺ@@@^5?}@@"@@64@@G@@-@@O;@Mu\)@M~Q@Mu\)@Mt֡a@Mu\)@Mq.@Mu\)@MsMj@Mu\)@Mva@Mu\)@MvR<6@8,<@8m\@1S@1ԕ*@1Z~"@1Xtj@0}ce@0{xF^@0}ce@0{m]@0}ce@0|wkP?sD?sI?N?Fq/b?Z)?봤G?_$?{c?^ o?"6Wz?<}?U3p? nI?Ϸ+?=Cb?GZ?:1?v> @@@@@&@&??????A|@?53N?T1 @@+@Mu^-x?U'tec$?iy4+?FR?@p9Znf@@2߾vȴ@2㕁$@2߾vȴ@2@2߾vȴ@2Q@2߾vȴ@2?@2߾vȴ@2ݿH@2߾vȴ@2ݗ+k@:KƧ@:v@:KƧ@:/@:KƧ@:~6z@:KƧ@:@:KƧ@:@:KƧ@:7@6@6- r@2° ě@2@2tj@2nu@1iB@1oh@1iB@1 rGE8@1iB@1tSN?Y͍_?5{#?S_??o]އ&?k!e?yW?Y͍_?ߤ??Wz>?1} ?i ?,?e +,?. ?~tZE?C)?]O8?՘]G?Qh@@@@@@,@&??????_'v&A?W0l_+6?d'ʙOl@2ޯz@:ЁP?un ??E['?tص1@eY@@֊=p@֍O;d@֊=p@֔F@֊=p@֍@֊=p@֓g @֊=p@֛@֊=p@֝!.I@vQ@vS@vQ@vz@vQ@v'@vQ@vFt@vQ@v4m@vQ@v@7쿱[X@7u@3@3ӯ@36-@3)7KƧ@2ce@2\)@2ce@2r Ĝ@2ce@2lC?UbB2??p`@i?rӂ?d8?J"Fr?I~y?bH=?ml???Vc?1_A?^&?=!K???YAd?q?°R=@@@@@,@,???????j}L +?A+U{5?P+'c@֕H1^@vq1?aA?q, Y?C=?ܾ@ihi@@U I^@UG{@U I^@UG{@U I^@UbM@U I^@Uhr@U I^@Ui'RT@U I^@UFs@.7K@.@.7K@.0H@.7K@.M(@.7K@.LI^5@.7K@/g@.7K@/oiD@6v@63@2@ ě@2+xF]@1tj@1ۋq @1Tm8@1.Ov_خ@1Tm8@1[@1Tm8@1u%F +?K{O?>? ?%\?B?c>?A[F?z?Y8쪒?GLD3??ϛھ2?]?\{?,?ob4U? )D)? +e@@@@@(@(??????p?GW%?tj '8?Y "@U$"9@.;? +7?\?m:Գ@@cm.):@@ߚ1@ߖE@ߚ1@ߚ~@ߚ1@ߛ"`@ߚ1@ߛ6@ߚ1@ߙrGE8@ߚ1@ߘ-@=ix@=kC@=ix@=il@=ix@=iQ@=ix@=i @=ix@=i@=ix@=i @2,<@2S&@-kƧ@-kq @,rnO@,rGE85@,Ǔݗ,@,)^@,Ǔݗ,@,Fs@,Ǔݗ,@,dž&?q0$?{j?*"AaI?q@v?<`.?^?cE?)[D? $gv?O?7N?*Q?l@@@@@(@(???????R`W~$P?53@?2II/@a!F?@}?T>?Rv?&x?gA_@eOm@@I.@I.@I.@I.@I.@I.@hs.@hs.@hs.@hs.@hs.@hs.@7qiC.>@4hr .Mm@5t.Qn@4Eu.NC,@4Eu.NC,@4Eu.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8  @n@n@n.@n.@n.@n@5Y}@n@҉@vtj@vtj@vtj.@vtj.@vtj.@vtj@w7Xe@vtj@vz,<@4?@4?;dZ@2+ I.Mm@2Ft.Qn@1sh.NC,@1sh@1@1sh@1?}ѿ,@8#@8:@8 >+?BW29?ͬc?| @8@8i@8?" S?KE~?|׿pY@8 *@8p@8?It?Xli@@(@*???!@xQ.@xQ@tFs@xQ@x@xQ@zG@xQ@u$@xQ@tzG@DT.@DT@D7@DT@@[7@DT@C@DT@<1'@DT@>($ y@8^H.>@4@ ě@4=%@3K"`B@3KU=@2@2]cf@2@2=b@2@2~($ @8J?Az;?zeߎ?? +0ggk?U.@8J? x[{?%c~?8wxq?x9l?b+m:@8p?Q?E~?>?T?l@@@@*@(?????"@%@0ĻS@%.@%.@%.@%.@%.@.zH@9@.zH.@.zH.@.zH.@.zH.@.zH.@8!.@7?\zt@6#.Mm@5`A7.Qn@6!:S.NC,@6!:S.NC,@6!:S.NC,?ǁ)H@8#@8:@8 >+@8I@8?̈́g_H@8@8i@8@8S@8?\@@8 *@8p@8@8 @8 @?#@3333@64@3333@oiDh@3333@1'@3333@( @3333@C@3333@6-]@h\@QN;@h\@ebKe@h\@hzK@h\@eR:@h\@oz@h\@t9@8쿱[X@84,Np@3 I^5@3c%n?@3dj~@3f '@2 k@2&@\@2 k@2}N@2 k@2.f?|"<~~?ǍlJ?F:?} ?9/+W?8^?X?**?T[S+?q?,w.@@"@(@ @:@5??????s/o?}ے䮀??d/?0N|kH@@a?D7@9&2@Д.?OvF?d-]]Nݭ?2 ?WsD@f3@%@o!G{@o!7K@o!G{@o&1@o!G{@oDZ @o!G{@oQ@o!G{@odT@o!G{@oNV@@n@@@@n@@t\@@煮1@@狅R@4T xF@4Sݗ+k@1 I^5@1j~@0lj~#@0]w1@08D*@0#w@08D*@0d7@08D*@0s?|O?]fm?w? '`? t(?]GW?}ѿ,?~y?"j?7ߙ?Ti?G)g?u@>N ? ?CwB?zlh?8ϣ?F-@@@@@,@*???????{^\?x#?f2=9C@o+@r?~?r (?}EP?{^@Zzy@&@>-@>ti@>-@> 5@>-@>}V@>-@>t3@>-@>8a~@>-@>2@š@Z@š@T>@š@D5@š@sx@š@ĆQi@š@vd@6S&@6~QE@3.5?|@3/=<$n @2PA7K@2QaDWd@1@5@1Ẅ@1@5@1@>@1@5@1m˩?(?C\-?Dw?9C?U5??:(?|0pJ?REP?n,?hy?*_?L  +?u7G?8G?/|? g?bq?n+.'5@@"@(@(@:@7???????hZPN?Xѡ?C'38@>DX/@za?u ӵ?>bh ?/nxt?%OA@j~VS@'@T@TQ @T@T.KN@T@TK@T@TYf@T@TR@T@TXgK@V@`S@V@uk\W@V@珫 @V@O$1@V@,x@V@ e@7v@7灺>@3E?|h@3F;(@2Ͳ-V@2[@2V!.I@2Wq22@2V!.I@2XFM@2V!.I@2Xұd?0k?!d?A ?ɑ ? F`"?[&?r2?TT%?1 +?^?=Y?֜f};?)xr?Pk?\1k?{j9@?xj*?ˮ@@,@*@*@:@:???????Uh@aW?B~?QOyP@T㌵#@ƾ +J?]K3n?i r?=bB{N ? 2XÂ@nFLj@(@r@r+ K@r@r^ @r@r%F +L@r@q{J#;@r@rU*2@r@rl@p ě@k I@p ě@֡a@p ě@UXy>@p ě@,<@p ě@J#9@p ě@A@7 xF@7䎊@4+@4iB@5$j~@41'@4G k@4/V@4G k@4=v@4G k@48K]c? ?3q?OLï>?ϩƧ;2k?t?B?)3y?Ol?D?hT7?s?&2d??o?z."?rIs?а7DuI? V??(4՞@@@@@*@*??????~;bPܽ?y:!?r I@rm@Z I?9?~$֙@,K^!g?wg@[~;LG@)@zG@f$/@zG@q @zG@iDg8@zG@qi@zG@ qv@zG@b}@Ǵ9Xb@ǭhr@Ǵ9Xb@ǽH@Ǵ9Xb@ǶFs@Ǵ9Xb@fB@Ǵ9Xb@Fs@Ǵ9Xb@Ϫ͞@84m8@8@5}hr @5}M:@5-@5kP@4_o @4S@4_o @4$tS@4_o @4u%F ?F/P5?q+qW?̗>?˃.? ?DX S?WZM?ۣ0Τ?B?6r00M?;C=?*]6?m?nTn?Sn{?}2;?9?DL@@@@@"@$???????G?}?eSFF?aG @{@\H?wQ?| ŀs?Pa?Ru]@ky@rg@*@ +=q@/@ +=q@ᛥS@ +=q@ᙙ@ +=q@/@ +=q@Q@ +=q@ I]@>x@>C@>x@>r @>x@>Q@>x@?+@>x@>o@>x@>@8L]ce@8HU@3S@34J@3~"@3 @2[W?@2 @2[W?@2}E@2[W?@2}v?8ȺJ?`?=5?Xc?W2D?ZF/D6?d&@8@>| tM?r~扩-O?~GD7?|F@)' @oa@+@o`B@o/@o`B@o2W@o`B@o2W@o`B@o㯷@o`B@oZc @o`B@oⶮ}V@z;dZ@z5fj@z;dZ@z]c@z;dZ@zˬq @z;dZ@zqu@z;dZ@zqu@z;dZ@z͸@64m8@6sP@1° ě@1ݗ+k@1tj~@1qj@0&YJ@0'@0&YJ@0'K]d@0&YJ@0'/V?nO@3n5?|.Mm@3M-V.Qn@2D*.NC,@2D*.NC,@2D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 .@  I^.@  I^.@  I^.@  I^.@  I^.@  I^.@u.@u.@u.@u.@u.@u.@8֚,<.>@3° ě.Mm@3`A.Qn@2!:S.NC,@2!:S.NC,@2!:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 /@/@1'@/@҈p@/@ (@/@䎊@/@6@/@YJ@IXtj@IX@IXtj@IYXbN@IXtj@IXl"h +@IXtj@IY=d@IXtj@IYb@IXtj@I`E@3䎊@3n@0S@0{J#9@0-@0fA@0ush@0v1.@0ush@0u\(@0ush@0qR<6?}ѿ,?Z.?jhq9?%?@@No9?y%?|O?)[Zw?%ϑ?՘]G?]ߒ@@@@@$@&??????1*?PM?F:?DH@@IZ?f qC$?d?$懪?Hx|@f,2@0@@j~@@5?|@@0 ě@@!(@@@@\@["`@,@["`@Ǔ@["`@qu"@["`@Ǡ k@["`@Eh@["`@t@5_o@5 vkT@2}hr @1CMjO@2'KƧ@0s@N@1u@/حU@1u@/aT@1u@/-V?k?cX?d ?MN:?ξWס?]q;j?C~? +??CRn?R?ǥt?G0?&?fI=C?4;$?oh?Vl?$FtY@@@@@(@???????Is`?{K?bu\? 1@@㫘?~Vi'?)?)g1@37@^ +@1@4j~@;dZ@4j~.@4j~.@4j~.@4j~.@4j~.@|P`A@|$.@|P`A.@|P`A.@|P`A.@|P`A.@|P`A.@8@9R<6@5Y^5?}.Mm@4q7Kƨ.Qn@4#.NC,@4#.NC,@4#.NC,? Z @8#@8:@8 >+@8I@8? x@8@8i@8@8S@8?'[@8 *@8p@8@8 @8 @?2@tj~@vu@tj~@{)%@tj~@fbm@tj~@h:I@@tj~@`''@tj~@i8B6@'~#@'@|@'~#@(@'~#@(a @'~#@(4a@'~#@(1M?@'~#@(R@9*0U2b@9(8@4@4.@4 "`B@4*Xis`@3iB@3|Њ@3iB@3խ@3iB@3Ko?)1?:a?ô0?,H!?).%@g?`P(ee?Y%?Y?"U\#?m?31?ka"?Hr?T?Y?:81?Xh>*?A+d?:#@@&@"@@0@*???????oW?jڕ?&:-?t3@s U@(p ? e x?6lw@&N?^4@p8_v@3@&`B@&`B@&`B@&/@&`B@&9@&`B@&U@&`B@&Fs@&`B@&=p@RkR@Rl1&@RkR@R^\M@RkR@Rd7@RkR@R;@RkR@RE84@RkR@RC +=q@4|Q@4Gz@1{ I^@1v!.I@1{Ƨ@1u84֡@1[W?@1y+ @1[W?@1{'/@1[W?@1|C?| ?GA?ʶs? "?ߩ??| ?ۣ0Τ?1ک! ?\(A?L?|9?y8#?zx?ٺ?;UAE?P|?@@@@@(@,???????j(!Z +?Q\t]?e漫z @&]@R_l?j?{`\a?`V?.}[@_>a6@4@'M@'u6@'M@'@N@'M@'/@'M@'C,@'M@'TɆ@'M@'C]@ě@ +=p@ě@D@ě@8}@ě@\(@ě@'0@ě@J@7:@7l@5+S@51e@4'KƧ@4&?@30U2a|@3ʙ0 @30U2a|@3@30U2a|@3Ƈ+ J?I'%?%=7"?c«?iP?dt O?|&?Qp?ֶ?ܿ?y҇?x9l?X#?>?@/@{?[Rb??HF!6?n$@@@@@*@(???????] +oˁ?H0H^?SE@'d@Un!#?chKqձ?u/e?,p?p:q@j$2 @5@n@^5?}@n@n@n@~@n@TɅ@n@@n@A7M@Œ@‡+ J@Œ@B@Œ@Œ@Œ@Ž_o@Œ@5Xx@Œ@@8N쿱[X@8X ԕ*@2?|h@2ᰉ@1R`A@1R䎊q@0 [W?@0 U=@0 [W?@0 @0 [W?@0 _?|O?t0?U#?vHn&?E{? µ?`m??xrI?ԕ]I?Y?qN?m/w?vsR_?[g??㝯?4?2t?~?J?^??#?8&?l`?GJ ?lq?1C'3? ;n?%?}@@*@,@*@8@6???????yiJ?l?g "$Uz?a'J@ X@,z?F?I?yB +@xAQ](@kJ@7@mbM@mbM@mbM@mrGE9@mbM@mٙ@mbM@m@mbM@m״3@mbM@m>6y@4fffff@4f@4fffff@4g8}@4fffff@4h@4fffff@4fA@4fffff@4f]c@4fffff@4g/W@3쿱[X@3@.MV@.MB@-nO@-GE85@.Vl"@.-V@.Vl"@.p +>@.Vl"@.+j?| ?3i?N?lDžN9?ǹT?-tT?|O?#maЀ?rJs?EP?إ<(?{L բD?2Y0?3;?s@a?ʬv?pk Y?b/bJ@@@@@(@*???????#W`?#cl?e@mX@4f?Ck~?2ٟu?'p?\JY?rg@fla@8@η@δ9Xa@η@η@η@ι@η@κ^5?}@η@ηs@η@θy=@lD@^5?}@lD@p @lD@!.I@lD@/@lD@n.@lD@]ce@6=:@63wl@1G+@1GkP@0i"`@0i|@0._o @0/ M;@0._o @0.ߤ?@0._o @0/H˒:?)T?nx?)?.Ү_ ? Y?; ^?<_?}ѿ,?D.x?tP*?1'7?Hc?nK/?H?lo>?~/O?Gϵ'?A0)n?v> @@@@@@ ???????O{??~?D7P?+FF ,@η6J@J?cSH:Q|?MYui+ ?]_?9T7@iWԑD@9@+@bM@+@`d@+@e@+@+j@+@tj@+@ԕ*@S@Q@S@h ԕ@S@n.@S@1@S@s@S@ xG@5v@5lC@2 I^5@2nO@2Z~"@2\[W?@10U2a|@1/{J$@10U2a|@1:@10U2a|@1ɺ^5?}?| ?hX*?ojVrn7E?/Y}?Otx??ER Y?}?P\@@@@@,@(??????H>G?4k,i?-.qب@֔h@-h?UX5?NoZV?LMa!?%@f@:@m8@ma@m8@m5*0@m8@m/4֡b@m8@m/{J#@m8@m)@m8@m..3@ +=p@3333@ +=p@p +@ +=p@$@ +=p@)y@ +=p@ ԕ@ +=p@p:@7 _o@6Mj@38r Ĝ@33F]c@2y7KƧ@2rS&@1&@1D@1&@1+ @1&@1Q ?t#V?q' +B?&$#/?(tUo?ɨ+?Vd?h??2(_?%8?r?+hd{?'?9&? ?A'_^?[?/̽`? `@@@@@,@(??????_®_ [?gOg?gb-@m.|@͢?xS?Tr"?k(Й@)Ǒi@qJԁ@;@(r @(\@(r @)@(r @)*0U1@(r @(\@(r @'ݗ@(r @'ݗ@޸Q@;dZ@޸Q@ޫ6z@޸Q@5?|@޸Q@޸Q@޸Q@vȴ9@޸Q@@3qiC@3L_@/G-@/Hr ě@-/;dZ@-/Vϫ@,uXy=@,usg@,uXy=@,uᰉ@,uXy=@,u\(?}ѿ,?Z.?$C@? Y??ˡK?| ?#maЀ?ԕ]I?-I`K?ߒh!?Uyu#? ݎ8?§d߱?|׿pZ?ʬv??@@@@@*@&??????1+2?L>KK@(tb}@[?=bqwY?L? k?(݀@gfi@<@ @ @ @ hi)@ @ Gq@ @ @ @AIZ`@ @(C@&W +=p@&V @&W +=p@&R%w@&W +=p@&Te)@&W +=p@&S@&W +=p@&YH.*@&W +=p@&S+@6,<@6jJ@2B ě@2A7kE@1v-@1t)@0@0ޜO@0@0m@0@0%s ?~Ov_ح?C*!?w|?>'?) / 7?q?eXW?8N?^nu?1s#?Zps{?W?U?!01?s9+6d?lpM?ʨt?e-$#{@@@ @ @6@(???????L=E#5A?C+0E?3)}@ +%@&VءB?cˈ?TL]?ӟ?]@gC@IA@=@Н-V@а +=@Н-V@МPH@Н-V@ИD@Н-V@Й@Н-V@З3@Н-V@БX@ȌI^5@Ȍ1&@ȌI^5@Ȟ\N@ȌI^5@Ȗu@ȌI^5@ȧE85@ȌI^5@ȃF]e@ȌI^5@ȗ>6z@8qiC@8@5+@5_F@4"`B@4~@4 +0U2a|@4@4 +0U2a|@4:@4 +0U2a|@4u%F +?_pP1?fDb?=5?Uyu#? )?V?F^S?\L)C?iկ?Y`?f@?W'?œ,?"_?7?Z?*:R}?>3}@@@@@"@$??????t?6J?Z c?uYE@Й[,@Ȕl?oy/?4?O7ϗR@-9Y@n?@>@NV@N_o@NV@OV@NV@OŁFX@NV@LQ@NV@I0@NV@Jf:}@hs@7@hs@[@hs@8\~@hs@8@hs@x@hs@c@4֚,<@4,@13S@13?4ކ@0Vu@0%@0Eu@0A@0Eu@0>ݔ@0Eu@0@-,Z?|B &?UV&w$?'7 O|?#Z?;A1?eVV?| V??o|?kS?Qxy_?.?p?o?vȴ9@6ȴ9X@u@6ȴ9X@<@6ȴ9X@-V@6ȴ9X@m&@6ȴ9X@@dtj@d@dtj@dJf@dtj@ciDg8@dtj@c-@dtj@bF@dtj@bJ=p@7B䎊@7>p:~@4?|h@4+jf@4tj~@4n.3@43&@4m@43&@3`:~@43&@3Zn?Ol?Bx1 ?i?>-?dD2?Β9?_pP1?g*?լ{T?̝TY?R?bI߭??-?įJ?K{~?2 ?NR\@@@@@ @"???????ɓ*4I ?T ?Zk@[#@cqMF?d5?>r@j1,%@"qh-@a'!@@@hr@㕁%@hr@@hr@״3@hr@ק'@hr@PG@hr@֔Fs@߾vȴ@-@߾vȴ@lD@߾vȴ@@߾vȴ@af@߾vȴ@jg@߾vȴ@8}@8@8-V@5+ J@5Zc@4j~@4Mj@4!.I@4p҈p@4!.I@45Xz@4!.I@4oi?|O???.N?"co?60a??bjk?P|?I?Kȁ?]%?P?F{?ߔY?JzUf?Cx%?/я?A=@@@@@@??????l6ʪW?C TUj?krvo|@d@?l##q?e7&?0lFt8?ˮͿt@m9@A@u@\)@u@e@u@`d@u@_ح@u@ӎMj@u@և+ @R@Ƨ@R@5Xz@R@x@R@JM@R@F@R@.@5N쿱[X@5N%@2+ @2U@2-@2Xy=ـ@1@1@1@1⩓ @1@19?|O?W[?y]?wX/8?ɿ?Rg.?1j?,#?8G?GuS?SY?IH!w?m+&?c I??],V?XW~? .0v?4hpɄ@@@@@&@(?????? +4?W-j?3z?H"G(@է@M?SW +LC?i%dl[1?2Xd{?Vo@fH5J@B@tj@1'@tj@ +o@tj@fC@tj@ɺ^5@@tj.@tj.@Gȴ9X@GS@Gȴ9X@G=c@Gȴ9X@GS@Gȴ9X@G+l@Gȴ9X.@Gȴ9X.@7@7o@5 ě@5]O;dZ@4K"`B@4|@4@5@3\N@4@5.NC,@4@5.NC,?sD?I?*?]/@8I@8?Y͍_?W;zY??@8S@8?W;RS?A@S~`?k?/"@8 @8 @@@@????C@C.@C.@C.@C.@C.@C.@n.@n.@n.@n.@n.@n.@7r.>@3 I^5.Mm@3gKƧ.Qn@1sh.NC,@1sh.NC,@1sh.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 D@.@.@.@.@.@.@ hs.@ hs.@ hs.@ hs.@ hs.@ hs.@8:.>@4S.Mm@3"`B.Qn@3 +0U2a|.NC,@3 +0U2a|.NC,@3 +0U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 E@\@x@\@84@\@죢w@\@5?|@\@쥔O@\@ں@O@V@O@_@O@ @O@ l@O@o@O@C@6!.@6oiDh@3i+ @3cA [@2v-@2r I^5@2 [W?@2A [@2 [W?@2 Dg8~@2 [W?@24K?}ѿ,? q?%HC=s?Q+v?<_+fj?5JA.?HD=??;%\@쥧@x ?h>Fp?[~w?d('?uE@e0@F@ +=@&x@ +=@)^@ +=@ *@ +=@@ +=@- @ +=@@|-@|-@|-@|v_خ@|-@|@|-@|@|-@|'R@|-@|H@6O M@6&@/tj~@/Mj@-nP@-ѷ@,`d@,m8@,`d@,9XbN@,`d@,9XbN? ?3i?m?8v?tKc?*WF?}ѿ,?›?~Q?/Z?@?M\ٓ@?^&?.+?8*?':??f_Ԋ@@@@@,@$??????(`?%?"n#?6G@I@|NO?B6Q?%1O]?V;?Vj0ոJ@gMCE@G@=Ƨ@=Ƨ@=Ƨ@=3@=Ƨ@=¶}W@=Ƨ@=ѷ@=Ƨ@=Õ%@=Ƨ@=¶}V@"O;d@"Ƨ@"O;d@"Љ'R@"O;d@"ҽ<6@"O;d@"{@"O;d@" p@"O;d@"C\@5=:@5:c +@1sS@1h@@0V@0{J#9@/-w1@/1&y@/-w1@/>BZ@/-w1@/Mj?Ol?"2???_dA?"X?| ?zF?pI?1}B-?#b^?j?O?3I#i?Me_?v_.^?fW?mΝ@@@@@"@(??????Kf?E~g0?*ʆk?BZb@.3tj~@.3&@-nP@-C,@+ۋq @+Dg8~@+ۋq @+7KƧ@+ۋq @+?| ?[e(lQ ?wX/8?q f?I?F/P5?6c?ɇ}~?#X? +A?J佪^?Rw#z?p51?3Z\?π9"?&f? 1 D@@@@@@,@&???????H7.@?P]D?1\>?M6mQl!A@X+@[?OZGP?o +ƕi-?֡?D !@iE]@O@vȴ@vȴ@vȴ@@5@vȴ@}V@vȴ@&J@vȴ@R<@vȴ@}W@@$/@@ѷ@@n@@.H@@D@@ح@2]ce@2s@--V@-af@+E@+4J@*)_@**0@*)_@*O L@*)_@*g?^XN?J?-.?&P?9.?`? ٖ?bM_x?6S{? +\?,?JL\?C ;?g)?rbT?],m=?=aw%?:1?Cns@@@@@,@*???????'d?4;p?2NHU?@ Q@&@?B7 ?O|#D/?|!? `ܐW@rYY:@P@*9X@*x@*9X@*I^5@*9X@*!-v@*9X@*qi@*9X@*\)@*9X@*R<5@ 7Kƨ@ +p@ 7Kƨ@z@ 7Kƨ@hs@ 7Kƨ@R<@ 7Kƨ@:@ 7Kƨ@Zc @7w@@7xe+@35?|@3g@2tj~@2*@2Tm8@2O4֡a@2Tm8@2>$t@2Tm8@2@IQ?^*?hĔV?13??㬱_?|QS?[й?% ?z?:-%?"6Wz?VAo?u!#?-]?њH?ʭ#г_?Z?Xs~?qM,@@@@@,@(???????g*^ff?Rn#O?G?@*Jj@RR?mE ?c'?^?d$@g +o@Q@1'@!@1'@\1'@1'@@1'@# +=q@1'@O @1'@>%@I^5?@&ffff@I^5?@=H@I^5?@Xe@I^5?@z@I^5?@&x@I^5?@@8!.@8q9@4 hr@3쿱\@3"`B@31-w1@2@2_4֡a@2@2]E@2@2XK]c?|0pJ?͎#?۸F>8?Ge?٠qsU?lT%u?9?J/p?ζa'~?Ϭlה?Թd-@Q?N)O?[N?~ԙ?yz?7< 4?MX?ȩ@@@@@,@&??????a?.8?KyF4?%@#@@!$?T??n"ef@#&@aEb4@R@`A7@_l@`A7@ +L0@`A7@~#@`A7@=p@`A7@ (@`A7@U@9aG{@9bM@9aG{@9|쿰@9aG{@9{@9aG{@9@9aG{@9x@9aG{@9U<@3=:@3<@1}hr @1zd7@297KƧ@2-<64@1z,<@1s\N@1z,<@1sMjP@1z,<@1kjf?| V?m0?=tQF?(+Zk?7?fsPa?|h2:?j%Ra?#*0???=?of@?l?{Tä=?(> ?4\ɵ?8~,@@@@@,@*???????7Yp?t*?Da?\AS@@D.@9tDF?bLd?yug2?/MW?@cM1@S@ᖇ+ .@ᖇ+ @ᡖR<@ᖇ+ @4֡a@ᖇ+ @+@ᖇ+ @+@ᖇ+ @9Xb@;dZ.@;dZ@@D@;dZ@>6z@;dZ@@IQ@;dZ@D?@;dZ@=E@9B䎊.>@4I^5?@4! @4t@4SMj@2p@2pD@2p@2p҈p@2p@2pn@8J?q? +> ?vI?2F0?۝.Yr@8J?%@&?pI?:u. ?a +/ ?<@8p?7&x?AQ3??|)-}(?+`ȓ@@@@(@(?????T@ I@/Y@ I.@ I.@ I.@ I.@ I.@?|h@E@?|h.@?|h.@?|h.@?|h.@?|h.@8YJ@85@5kS.Mm@5)"`.Qn@4&YJ.NC,@4&YJ.NC,@4&YJ.NC,?RFR@8#@8:@8 >+@8I@8?I@8@8i@8@8S@8?UC @8 *@8p@8@8 @8 @?U@S@vȵ@S@c@S@bu%F @S@[u@S@S*0U@S@T,<@P`A@t@P`A@y0 @P`A@l"h @P`A@]E@P`A@Y#x@P`A@ZY@8w@@8)+ @2hr@2usg@1A7K@1͞@0Q@0m8@0Q@0t@0Q@0o??b[??^:f?j??#?F^S?0?pM?wxR?ˬ?+l?Mi,?t??Q(? $4?**Z@@@@@,@,??????)Ew@R ?e>c*?z?@]X!@d5?rR?L[bv?8v@ouG@n 2@V@1&y@9X@1&y@y@1&y@ԕ,@1&y@@1&y@@1&y@#@ITzG@ITzG@ITzG@IT,<@ITzG@IVE@ITzG@IT3@ITzG@IU2a|@ITzG@IU$@5 xF@5oh@1hr@16@0KƧ@0y @0@04m@0@0A [@0@0)^?| ?*|3N?1f_? Iy?u?aX? ?pPȻ?2'?uX?q1At?eDQQ?],V?u/X?ZaQ? ??<71?ad|@@@@@*@&??????0^2?(xAV?,@@$@"@"@6@7??????3Ɇ?p]ր?6+i?T.THD@zQ@-V?F"<1e?c!8v?Os?l@rH^@Y@KƧ@ߌ =@KƧ@/@KƧ@zD@KƧ@HL>@KƧ@G +@KƧ@8j@{qm@{=\@{qm@{l/Kñ@{qm@{hH@{qm@{q@{qm@{q(a@{qm@{uB@7@7wZ0@3|hr@3<@2KƧ@2@2(@2,$g/}@2(@2,@2(@2,gP)?}x@4; I^@3Ҷ}Vm@2KƧ@2C,zx@2xF^@2^+@2xF^@2hy=c@2xF^@2lC@8J?ε(C?ay?¾9?_ +?*8@8J?B֛?LA?σ&a?[ ?;|h@8p?5w?!?yD ?Qh@?HU@@@@$@*?????\@NbM@N`A8@NbM@N @NbM@Nёv@NbM@NГ:@NbM@Ntٻ@NbM@N@+@P`A@C@P`A@G1S@P`A@B#@P`A@9q:@P`A@AM@P`A@Iy@8qiC@8BZ@2-@1tj~@2kxF^@0Vl"@2kxF^@0T@2kxF^@0|hs?^*?fH?s?sNX?(Q!K?79?% ?^?ꁤ/?)`%;?GZ> +?XEM?ñ0h?ϧ7?? })\?6m? +.ԕ@@@@@,@&??????2vp?,<<?zti?v0Bd@wF@|o?øF?Hb(@or>O@zVt@b|t7@^@Õ%@x@Õ%@Y@Õ%@1@Õ%@`A7@Õ%@Mj@Õ%@hr!@ۥS@@ۥS@w@ۥS@~($@ۥS@(@ۥS@ߤ?@ۥS@?@5s@5@`@cl@cl@cl@cV@cl@cFs@cl@c?@cl@c|h@cl@c-@$/@7K@$/@ ě@$/@Xe@$/@Z@$/@J@$/@@2g l@2eO@1#@1O;@0Vu@0zG@0:,<@01A [@0:,<@00D@0:,<@01$/?OW?Qd?8AWdm?ׂa? +=p?4?;0? H?-hm7?vv? l?c5W?!?O?I/?O.ce?_խW?>LR_5?@@@@,@*???????_z?]_{#?b9v?Tbڄ @c f@ ?r ?cbK?WX"?t-bP־@sf@a@ć+ J@ćz@ć+ J@ć+ J@ć+ J@ćz@ć+ J@Ć@ć+ J@Ć]c@ć+ J@Ć@(\@)7Kƨ@(\@(TɆ@(\@(TɆ@(\@(TɆ@(\@)7Kƨ@(\@)rF@0qiC@0qiC@/.Vt@/.H@.E@.b@-uXy=@-uXy=@-uXy=@-u$0@-uXy=@-u\(?a(?m0?@? Y???bV,?&uE@?ܿ?/Z?%y*=?ȏ'T?b@?~('?2Y0?E 8?f_Ԋ?B @@@@@&@*??????> ?"{x? b?4b@ĆZs@(28?"Z ?(ij/?@ֿ9?Jsw`{@sE@b@M@M@M@>/}@M@֕@M@wzґ@M@Ҏ@M@@@@@IL@@5@@ke@@ @@S @2Y*0U2b@2Y&x@.-@. +W@-n@-,7.4@-b~@-< +!G?@-b~@-exb@-b~@-~le?ޖL I?+B?( '?r2?#h?ulP?r-?j?M?6ͧz?aE?~Ӏ?M"@r&x@pK:)@bM@R@bM@yXbN@bM@m(@bM@sE@bM@x4֡@bM@n.@9}:@6%?|h@50ěT@1{a@@4"`B@0ˬq @30U2a|@0Ae@30U2a|@0>@30U2a|@0;xF^?A[F?Z.?oԀ?CV?saS?G5v?UbB2?c?ZT?,?L7??ArU@?A ?yjk?(> ?;kr>?`i2@@@@@*@&?????? ?@?j6d(R ?Wa0@pN>&q@mh?M`?u-n@Rm?ևW@iq?@f@\@KƧ@\@@\@r @\@cA @\@ݗ@\@ݗ@Q@-V@Q@Q@Q@zR@Q@Q@Q@)_@Q@~($ @8@8VϪ@3+@3NT@3@`A7@3Aae@2\Q@2\1&@2\Q@2\@2\Q@2\64??d̺?&$#/??4f(R?I?UbB2??xrI??T ?u]?nW*؄?ey?!ϟۺ?r?a +?5|G?3?k!l@@@@@,@*??????i]synd?EQǓN?`Pw+@F@/R?`]d?}Z:[?$?q@n2Mx<@g@eE@evȴ9@eE.@eE.@eE.@eE.@eE.@%6E@%6E@%6E.@%6E.@%6E.@%6E.@%6E.@7~($@7x@4}hr .Mm@3Vu.Qn@3,<.NC,@3,<.NC,@3,<.NC,?3a=@8#@8:@8 >+@8I@8?3a=@8@8i@8@8S@8?T0@8 *@8p@8@8 @8 @?h@V@V@V@C^@V@@V@<@V@0U2a@V@E@!;dZ@! ě@!;dZ@!V@!;dZ@!@!;dZ@!X@!;dZ@!@!;dZ@!oiC@4[~($@4[S@2 ě@2- @1KƧ@1KƧ@1:,<@19Dg8~@1:,<@1;~%@1:,<@1/o?| ?d̺??TnE??oW?̉ߚ?|O?;N?ACO?>)!?x9l?ey?=Ca?>?9@0w?4i+?ymcw\?屘@@@@@(@ ???????BC9(TC?JW,JB7?Q+@@!3?i޴hjO?rlO?@?S +"j?t& +r$?b^?9f?3Z#m_?oWe?T(~@@$@(@&@8@6???????X0l?n}x2?%u (8?"[α@SW:@5vg?Doj+F?B [ώ?N\ ?B?,@fBs@j@!@" I^@!@9?@!@8?mE@!@$\{B@!@z% @!@D@j~#@qn@j~#@Ȋ@j~#@bjvxF@j~#@ǫl@j~#@gG@j~#@ȌKk@4]ce@4}"3@1ahr @1FSP@0Ͳ-V@0T@0_o @0Q,3@0_o @0@0_o @05"u\?gQ?Pٽ?6S\?hѺ?%/_[?FvS?~?J?3@$;??uri?/\??qn?2ѧ7?lmUA?!ýe?=CQ?g`O@@&@"@"@4@,??????uw?sp?r7?jd@D@ȁK>%?ߋs?>?|h[@ (U@V@bh@k@w@bM@w@p@w@N;6@w@񂩓 @w@͞@w@빌~'@Μ(@Λ"`@Μ(@ΝE@Μ(@Μ쿱@Μ(@Πě@Μ(@Ξm\@Μ(@Ξ#@6V,<@6X_F@1 I^@1#9@1ȓtj@1eO@15sh@14#@15sh@15\(@15sh@15`A7L?|O?I'?Z*C?%?y%?_ ? ?`?l%FZ?N?=W? Z?qn?3I#i?A'_^?9XNu? Ğ?$@@@@@*@$??????@Ox?M0?>S ?=8M<@r@Ν}y?_05D?^j7Ǫ?g@̨?ġ@g>s@l@?bM@?_vȳ@?bM@?a-w1@?bM@?^ߤ?@?bM@?Rs@?bM@?]ڹ@?bM@?X@Y+@Y+@Y+@W@Y+@R@Y+@YrGE9@Y+@U\)@Y+@TzG@7D@7!-w@2S@2b}@1Ƨ@1p:~@1iB@1qu!@1iB@1fB@1iB@1?ʎa]?'5?%HC=s?ghT?`FC:?$?qv?nr|?0?QĨ?=M?SS?l~J?t?^?3_?Kd\?r@@@@@,@(???????%;TR(?d.ů?B@?W bn@WcPw?|D+3`?] ?ymq?Z5ZJ@n/Ts,@m@@3333@@#)@@6/_@@!~@@щ7K@@(@vȴ9@vȴ9@vȴ9@ϕ@vȴ9@˒:)@vȴ9@VP2@vȴ9@]@vȴ9@֥t +@1[~($@1[Ƨī@0}hr @0}@@/x@/Ab|@/)_@/F.@/)_@/ Z[@/)_@/Q?^T?qy?8R~x?o$͠?!!.?nh&?bMn??1;?5' *x?-4B?bRuPL?bM]f?Y?T.g?vs{?_=D?2ˁU@@*@,@(@4@2??????OQF6*??w(?3+@#@?N^k?B(t[?=`?|ˍ@sF@n@%`A7@u@%`A7@*W@%`A7@%@%`A7@$Z@%`A7@& (@%`A7@$?@IzG@Ie`A7@IzG@I{6@IzG@Iz2@IzG@IxQ@IzG@I}p +@IzG@I{m@7 xF@7I@2+ I@2F]c@2`A@2,<@1\Q@1^p:~@1\Q@1]K]@1\Q@1\]ce?[_g? e?=?Kh?|*(?R%(0?uu?b?bH=?s8r?-I`K?|+~?m/w?=d?ʳ_?cӗ1?&I?A0)n@@@@@@???????:}h8?e"2?]JvT?YB=H@$m@Iz}=x?kC=?k^6YV?˷g +?oF>7@r-b@o@["`@[lE@["`@Zv@["`@TɅo@["`@Wr@["`@XQ@["`@W1@ +=@`A@ +=@2@ +=@ݗ,@ +=@-V@ +=@<@ +=@- @5H@5!R<@2S@2?@2-V@2Fs@2(@2*d7@2(@2-w1@2(@2+s?|O?: ? +tI?q@v?_dA?Dw?1j?$i %h?$Jw"?G>G?n ?yC?֘>D?Ov_ح?hE?=aw%?C SG?wͶ@@@@@*@&??????Q2n4<`?+ARG*T??dY.V@Y(@WP]?Kz[/?`?×:P?[Kl@ff[@p@&ffff@Lƫ!@&ffff@;@&ffff@3fO@&ffff@0@&ffff@x@&ffff@V#@N+@v N@N+@©Er@N+@´{@N+@WWO]<@N+@†]@N+@š@7+s@7( @4S@4Z΢PU@4t@4\"8l@3ce@3@3ce@3L|U@3ce@3ٸ?U?k'?_4?˸M?aE=?83@??1F#?G}?WL*?8J?zwv?hTGb*?7J]92?*}&S@ϕG.A@ѡ?W)mû?J_!?$h7\?fհ +@@fau@r@Vt@V$/@Vt@V+l@Vt@VڹY@Vt@V @Vt@VK_@Vt@VM:@uM@uM@uM@ub}@uM@v +E@uM@vMj@uM@v(9X@uM@v:)z@5@5}Vm@1@1n@1PA7K@17eں@1 +0U2a|@09@1 +0U2a|@0s@1 +0U2a|@0?| ?Be?C1?~L?;V?Dr? ?NH?Si܃?%W? +HQj?ѪC#??}(2?\{?fr[?? )D)?^_r@@@@@,@&???????fp?=1?p K?eOA@Vy@u?~!|_?u?@0?ňR\?Dc@\e_@s@Z1@_vȴ@Z1@TɅp@Z1@z@Z1@%@Z1@<[@Z1@Ca@N@\@)\@\@JM@\@C^@\@ⶮ}V@\@+@\@@8>6z@8ƕe.@4+ I@4JL@397KƧ@3&@3QiB@33tj~@3QiB@3BT=@3QiB@3>2X?wogl?g?w?8 Y?ܡ?VAg?(l_?,4,`?/?۔Y?T=U?2R2'֕?{Qy?=X?L?׿l?d7?W@@@@@3@&??????koK*jB?j/-:?z;A@K^pB@+?}[͊L?:T?_Z%ES?z@p2@t@?|.@?|@!|4b@?|@@?|@ @?|@E@?|@^0AJ@rr-V.@rr-V@r~XP@rr-V@r^#S@rr-V@re m@rr-V@rFx @rr-V@r8SM@8YJ.>@4^+@45@㳃@3Ƨ@3Bմn@2&@2֠[@2&@2Țԫ@2&@2 7@8J? /¹|?y2??V2?|۷t@8J?\pe +?7 OW?!Z ?mC?4@8p?leϞ$?pu?Gyt?m\?4@@@@4@3?????u@TO;d@T\@TO;d@T8@TO;d@TV@TO;d@T@TO;d@T'0@TO;d@T @;dZ@/@;dZ@@;dZ@U=@;dZ@b}@;dZ@@;dZ@ܹ#@7}:@7z)y@0J^5?|@0J6C@.NO;@.Nqi@,V@,V}Vl@,V@,Usg@,V@,UY|?1j?$?>f? Y?'`?PN ? ??b/bJ? +t@@@@@(@$???????@_{Y;r?Cͳ;h%?0CC@T\@kP?cB)?P"?B?Hax2?N+@gjE@v@4ȴ9X@5C@4ȴ9X@5y=@4ȴ9X@4-@4ȴ9X@5'R@4ȴ9X@5O @4ȴ9X@5 +#9@ @E`A8@ @1[W>@ @8Q@ @*W@ @ȴ9X@ @u%F @7>6z@7E@3\I^5?@3PH@2gKƧ@26l!.@1YJ@1^@1YJ@2[6@1YJ@2tSN?5u[E?5O}?bY?C: +??LTk?9?U +?00?}M ?7&c?T? M?ְ\Wg?(p@v?A\#?kR?4?\O:@@@@@,@*??????jg-C@?qy?b@5+*@c[?υ%?e?%Z"Y? +RRC@r;X@w@mo.@mo@b̥zxl@mo.@mo@i"@mo.@mo@ihۋ@OY+.@OY+@R ě@OY+.@OY+@G\(Ž@OY+.@OY+@I-(@8g l.>@4ԛS@1y +@3-.Qn@3@11R@3.NC,@3@1 ߤ@@8J?.q@8:?u86@8I?UzW@8J?7*@8i?ٹN@8S?|pUw@8p?܉a^@8p?a@8 ?馪C@@@*???x@"`@^5?~@"`@Q@"`@A@"`@E@"`@e+@"`@E@";dZ@"G@";dZ@"K^@";dZ@"@";dZ@"W@";dZ@"Z @";dZ@"$ x@8(YJ@8,#x@3hr @3!R@3Vu@3֡a@3n_o @3g_o@3n_o @3iԕ*@3n_o @3kW>6z?K{O?I'?~#?avfV?҇?Oh6c?4\ɵ@@@@@*@*??????)pp,?Qpm?Ig}'@ke A@"Ʋ~b?i?o[Xh?y?@k^>@y@F@'lC@F.@F.@F.@F.@F.@ +=p@ 7Kƨ@ +=p.@ +=p.@ +=p.@ +=p.@ +=p.@7~($@7l?@3=hr .Mm@2y7KƧ.Qn@1ٌ~($ .NC,@1ٌ~($ .NC,@1ٌ~($ .NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?z@@+@@ZP@@@@[(@@ӹ@@@`A7L@`A7L@`A7L@_;H@`A7L@^Km+@`A7L@^5*@`A7L@ate@`A7L@_2@2쿱[X@2(LW@/{"`A@/x- @.&x@.ag@-PH@-˰@-PH@-f},GT@-PH@-?^6P??(uH??7p?U@Z?bMn? ??-F|? w!H?Ju?7݉?ۻ~r?UA|?LV#7?ܐ?|@@@ @"@4@(??????R,1(?Gf1?9Ɔ?JXg9,@h^@_}5?HX^?YT?߳ ?3w@s @{@`RnP@`B`C@`RnP@`$tS@`RnP@_5?|@`RnP@`W>6@`RnP@`p +>@`RnP@`1&x@Kx@KnP@Kx@Ku@Kx@K +=@Kx@Lt@Kx@K%@Kx@Le@9 _o@9IQ@45?|@4° ě@4-V@4S@3sh@31&x@3sh@38bM@3sh@31N;5?A[F?d`w?~? ѷ?ʫ[?$q ?,e?wi*? %a?c(&?Ӓ ?xF?ɦvY?k2m? n?Oh6c@@@@@*@(??????o!ua{K?c89?tr@.zY@e>??}/K?2*vb?ޏ"ӱ@mUw@k9@@}@1&y.@1&y@G @1&y@8992@1&y@E"y@1&y@\S@1&y@{@|`B.@|`B@|ZlH@|`B@|t@|`B@|e@|`B@|2@|`B@&b@9p4m8.>@3^5?|@3vƆ&@2tj@2$6@2Q@1Fs@2Q@2 @2Q@3)x@8J?c~V?T?vS }?QWb(?6@8J?>uN? u}?ժQ?h["?WuFY@8p?8)s?[?Ydz?9O?SL鴈@"@*@$@8@1?????~@4j~@]p @4j~@ +=p@4j~@L_@4j~@GE86@4j~.@4j~.@C@ 1&@C@=K@C@ȴ9X@C@S@C.@C.@8쿱[X@8%$/@5S@5C\@5`A@5-w1@50@5F-@50.NC,@50.NC,?W&l? ?Ȅ 2 ?X}v@8I@8?ʻd9\?ߤ +B?ǿ?I @8S@8?Wu?#?fg?兯@8 @8 @@@@????@[@[o\(@[.@[.@[.@[.@[.@1^5?}@1@1^5?}.@1^5?}.@1^5?}.@1^5?}.@1^5?}.@92@92ѷ@5 ě.Mm@4K"`B.Qn@3𖻘.NC,@3𖻘.NC,@3𖻘.NC,?g;+t@8#@8:@8 >+@8I@8?3a=@8@8i@8@8S@8?yMa@8 *@8p@8@8 @8 @?@?|h@c +=r@?|h@L~($ +@?|h@B\(@?|h@Q@?|h@b^@Lχ @+@8I@8?k|jʨ@8@8i@8@8S@8?7V/r@8 *@8p@8@8 @8 @?@?]-V@?]E@?]-V@?[J#9@?]-V@?]Vl@?]-V@?an.@?]-V@?cA ]@?]-V@?`ě@8@8@8@8Q@8@:^5?}@8@=cA@8@:G@8@8-@5qiC@5q @3Y^5?}@3]ce@34tj@3;jf@2‚@5@21@2‚@5@2zxl"h@2‚@5@2ƚ,B@-.zH@--qu@Jo@Jo@Jo@IQ@Jo@J0@Jo@IDg8@Jo@K I@Jo@JJM@3T xF@3T2W@0\I^5@@0\64@/@/TɆ@.@. @.@.vȴ:@.@.?]?%ñ?7[䭝?ݶ\r? g?t?]?CO?DP?e[|(?qN?wN z_?*wjs??YF? ??a+?pk Y?@@@@,@*??????F6۸??d>R?26*&?::g-@--v@J$?A {?HuV?~'06?E1 @s[ PM@@+ @=\@+ @ē@+ @ yԑ@+ @ ɿ@+ @ 7N8@+ @ @bfffff@bFFK=@bfffff@bn@bfffff@bw@bfffff@bns@bfffff@boֲ@bfffff@bs3*/@8H@8ߌ@4+ J@4f@3"`@3Ǟe@3Eu@3@Z8@3Eu@390N@3Eu@3C*?7Yu?n˚@?U۳??Iߏ?Hۂ?En)v?g([Q?8>?-IS?p".?H, +kc? Qж?!?+?gҤ?^ r?5@@"@"@ @.@.???????3_?z+?^[fs+?jo'~9@ [a@bl?lw@lb?{5 F?~^>?-,) +@p`@@́$/@̃W- @́$/@̗Zn@́$/@̆WQ@́$/@̄|@́$/@̄WY @́$/@̄kGih@9z@9L@9z@9@9z@9&u@9z@9p:@9z@9v,@9z@9{GKr@67@@661.@1TS@1Ri@0~"@0ڛQr@0^6z@0]|Y@0^6z@0Ze@0^6z@0Yyp.f?3<' ?^-' +p?Jv?pCza?s޼M?Q^ ?|B &?M6G-\?'??g$%?)?X?p풟?J8?1u? ?}b38/?*%@@"@ @$@4@6???????Twg kp>6Fq )?Um=@̄@9F?>?)?v&aq>P@4sS.Mm@3b-V.Qn@2𖻘.NC,@2𖻘.NC,@2𖻘.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @'-@'j@@'-@7D2@'-@3fc@'-@7/ڏ@'-@2=E@'-@4C@+ @@`E@+ @s.@+ @͙b@+ @@+ @ 5@+ @y5@6^H@6]Yr@2S@2 + @1t@1H{m@16z@1uْ@16z@1ID!@16z@1L7?~Ov_ح?@HM?Z ?ib? U?;Xd?3<' ?Nnu>?iI?NsC)f"?;5L?%O)?kOv ?Lΰ?4K ?ha6?-|Q?_&@@*@*@,@8@9???????jf"ccC J?Rs5?Hč6@.`/@{?rf~?h+=ߓ?y?/r=2@g\hM@@9XbN@1@9XbN@=b@9XbN@8y=@9XbN@:S@9XbN@5sh@9XbN@2T`e@}p +@}-V@}p +@|1'@}p +@}cA@}p +@@}p +@~%@}p +@~ߤ?@7v@7@3hr@3BZc@3W-@3Yԕ*@2h@2k I^@2h@2t*1@2h@2r74?h??gUq#?BI{?=]. ?N?ʗAm?F/P5? l?B<\v?ռ2?k}X??O:b@?6h?"0?0N:s?< N ?r?ۂ@@@@@,@*???????A=?>L?Zue_?AW@6^Ø@ڑ?u|xG{"?cCӑ? ](?<<@iOr@@bM@_|h@bM@gE84@bM@mjN@bM@kP|@bM@a@bM@ce@ ě@zH@ ě@'/@ ě@Q@ ě@<@ ě@1@ ě@"h @72@76+jg@3E?|h@3Doh@3`A7@3D@20@2..2@20@20:~@20@2/ ?|O? e?K]4?lׁ?|?4 ?| ?PuN?qN?# Y?2}?EȀ?H6?*J?OW?sMQ(?,BZ@3n_o @3ca@O?)T?q?\H{gX?zb61?xs?u}I?|O?u(?9]t`? +Ǘ??*%>g?-BR1?k~?7}?=2V?:/ʼn?{=rK@@@@@*@"???????;]?yW?8Y̗?SlTy( {@,@ڝzd?X$!(?sFGs?B?u@fAZ@@жȴ9X@з +=p@жȴ9X@з+j@жȴ9X@иYJ@жȴ9X@лlD@жȴ9X@и@жȴ9X@иA@`A@`A@`A@\(@`A@!R@`A@_o @`A@'/@`A@Ϫ͞@2%!.@2&1.@-3tj~@-2p:@,wO;d@,uXy=@,=Vl"@,7+j@,=Vl"@,8*@,=Vl"@,8e+?^Dw'?[evȴ9@9cg l.>@3° ě.Mm@3`A.Qn@2ce.NC,@2ce.NC,@2ce@2Zc@8J@8#@8:@8 >+@8I?G!r̟Y@8J@8@8i@8@8S?(/氜@8p@8 *@8p@8@8 ?vۋ7@$?@ZS.@ZS@Z qw@ZS@Zڹ@ZS@Zڹ@ZS@Z~@ZS@ZJ#9@.@@e+@@PH@@lD@@u"@@N<@9,<.>@2f+ J@2b`A@0KƧ@0E@/N;6@/_o @/N;6@/;5Y@/N;6@/ΤT@8J?&?y]?Њ?u?i{@8J?0?ދ"?)@a,?O ?m/w<@8p?c I??Ol?+ ?L?@@@@&@*?????@-V@ +=@-V@RT`@-V@o@-V@(\@-V.@-V.@3NV@3A7K@3NV@2u=@3NV@16@3NV@2@3NV.@3NV.@8 ]ce@8@5S@4?@5~"@4Swk@4\Q@4 ]ce@4\Q.NC,@4\Q.NC,?]?L0?Gt ?N.!b@8I@8?]?-',?C=?«{T@8S@8?*wjs?Iݷ?~WC #?8|7@8 @8 ?@@@????@xS@xG@xS@xM@xS@xn.@xS@x7@xS@xRT`@xS@x\@Q@S@Q@hی@Q@{J#;@Q@u%F@Q@N;@Q@ڹ@8 _o@8 x@4?|h@4 +L/@37KƧ@3qu!@3Q@3 qv@3Q@3m@3Q@3@?Y͍_?L?Y#W]?{y6?(E?o:?)T?-c?_x2?Ti?{QB?s?T?їJ?r20/?42?z"+;?6@@@@@*@,???????g@fY?H+4?Teo-/@xHb@u@ƅ?e,?sr=?L kg?@eHl%@@#F@#Y@#F@#2@#F@#BZ@#F@#)ߏZ@#F@#Xgr @#F@#L]-@cS@_q@cS@r@cS@lEn,@cS@mt@cS@3L@cS@'=/@7zqiC@7jhŹ@4S@4\@4KƧ@4FP@46z@4U@46z@4@46z@4Cŧ?3?mg{?4?:G?珗?0;W;?D?h b??xP?=NB?z=?|(?A6PP 4??$Ec?,?0W} ?`P@@@@@0@&??????{ӣ*N0?Ak?t^@#Q/L+@C?87t?Yg_@,p~@(Qc@n/[ɂt@@Q@Q@Q@Q@Q@@Q@ȴ9X@Q@&@Q@tj@ȴ9X@x@ȴ9X@\@ȴ9X@k@ȴ9X@fffg@ȴ9X@@ȴ9X@v_خ@1g l@1ѷ@-R-V@-MC\@-O;d@--@,C\@,ѷ@,C\@,+j@,C\@,b?^Q5P?`?jhq9?1?K/?)?b? aҹz?T֩E? ?I?p0=-#?:)y?§d߱?{W?!B? Ğ?a@@@@@(@&??????\4?p#T?CG~0?Ca5((2@ۛr@kz?QxmA?Rh#?Vj ? _/@q@@hr@V@hr@ +=@hr@`d@hr@ @hr@iC@hr@p;@cvȴ9@cQ@cvȴ9@d@cvȴ9@d'@cvȴ9@dn@cvȴ9@dA7L@cvȴ9@d}V@5I_o@5I"`@1#@1 4m@0-V@0t@/C\@/@/C\@/@/C\@/&IS?}ѿ,?ߋb?,fC6?̒?2{w?|&?1j?,#?kE<%?N?e?6@(/?2Y0?Ϸ+? J?^ a?L8AS?`i2@@@@@*@*???????V?JX?;?:RḼ@ @d +?Z,:J?Yh ?vחM?Kgbt@eܕz@@Q.@Q@l-@Q@O@Q@ ?ɩ@Q@@Q@@RBM@O;dZ.@O;dZ@di@O;dZ@h8@O;dZ@xU@O;dZ@tY-@O;dZ@k@5>6z.>@/A7K@/@6@-1&x@-jL]@+-w1@+v@+-w1@+Ma@+-w1@++@8J?i[?% +s?V&s?mwH+?Hy@8J?dJH?q ,?yp?TV(?w x@8p?'M?P +gN?Jj?*l?.V@*@$@@;@8?????@lC@l@lC@jڹZ@lC@gK]@lC@ce@lC@eҩ?@lC@^=/@?|@\)@?|@@?|@y@?|@"_@?|@Ah@?|@]`UH@4g l@4#i@2Y^5?}@2U!.@17KƧ@1@1@1#w@1@1#p@1@1^gƒ?_Kt?m?UD?7ly\?TFEQ?' e?|b@?u߿?Bx?Ti?@0?־?Rۙ?GA?_?e?YfӶ +?z{@@@@@.@.??????ewjHSn1F?AtAEH?i>w@g ,5@G-_?a=_g?7R?xuq@ګ@fp]@@@Q@@҈o@@5X@@tj@@ @@m\@ O;d@Xtj@ O;d@T@ O;d@@ O;d@m@ O;d@@ O;d@J@8H@8hۋ@4 I^@46@497KƧ@4;Ƨ@3u@3ś=L@3u@3\)@3u@3@?G *ǂ?!}P?tZ'?.[?(i^?@*F?N?.Hp?]^߿?̶j?5D?7&T+?oh56?~tZE?tgi?a?{%? (0Q@@@@@*@(???????ߡpz?`_O\?qv\-2@o'!@?xny? Tl?ds?i D@r @@c +=q@c6"@V@c +=q@MeO@c +=q@\IH@c +=q@V8@c +=q@HtL@c +=q@N[@Ё$/@t~k~@Ё$/@fl@Ё$/@ЍO@Ё$/@k^@Ё$/@n @Ё$/@k?گ@8YJ@8t W@4!hr @4*e@3)"`@3*WE?;@2m8@2@2m8@2 +@2m8@2׆n5?I'%?7?<?/ J3?F_W?<1 v?\l6?J®?|e?1qH:?@I?^d?|3?w43?`@ln;@8$ޤz!?ؾ>p֏)?1=V>A@sQ @@K Ĝ@K W@K Ĝ@K@K Ĝ@KD@K Ĝ@Kط@K Ĝ@K@K Ĝ@K^ɍ@[-@[`A6@[-@[M/@[-@[S@[-@[+b@[-@[@[-@[y@6!.@6̭dJ@2hr @2C(a@2W-@2X˵ag@1z,<@1|T©@1z,<@1|۹L@1z,<@1|H?anñ?D?a?%9bg?VQhFa?/k`?nDyB?ߋ?:d&?ِ:Q?Msy?y[?92j? ?DW4L?Ҳ?̴N?%@@&@*@,@5@5??????-X@?{@MJo@M?j@MJo@MM@MJo@MR4@MJo@MV/ +@MJo@MR@8įO M@8.ma@3G+@3:Ov`@2~"@2: +m@1䎊r@1T E@1䎊r@1l%@1䎊r@1M?}Jh~9Z? 4??j:?Kw~u=@@$@*@$@<@;???????N7?^i?P{m?Pm垸@$ @MQ瀛?` 3u?hӍ2E?bp?= 3h,@p5Rh@@څQ@ڄt@څQ@چA@څQ@ڃZ@څQ@چ&@څQ@~@څQ@ڀ k@nE@n1@nE@nC-@nE@n?@nE@n~($@nE@n#@nE@n5X@7p4m8@7p)^@3 I^@35Xy@3Ctj~@3De@2sh@24m@2sh@2=L@2sh@2 '?sD? ?^RpX?@R?z|?~?%?ā?Z??Ll? ?ArU@?<{?E?C?l?x[:@@@@@,@(??????J;P?BB?O}E t?=25U@ڂN@nm?o v?VPrJ?جf7?"pZwA@m32ZQ;@@lC@+ K@lC@.@lC@Dg8@lC@ ԕ@lC@ffff@lC@&@Bȴ9X@B+ @Bȴ9X@B'@Bȴ9X@B$tS@Bȴ9X@B$@Bȴ9X@B1@Bȴ9X@B@3v@3@0#@0#E@/E@/@/b~@/PH@/b~@/ k@/b~@/F?|O??ցC ?N?_?Dj?-/ge?|O?)[D?*|\/?ܑ ?f_Ԋ@@@@@,@,?????? |ӳ?|?%&?$c)i@#Hr?@B\?EuAn?D7ZB?!%tc?=DX`@f3@@W ě@W@W ě@WH@W ě@WU2a|@W ě@W.@W ě@Whr!@W ě@W\(@ +=p@ۥS@ +=p@"@ +=p@1@ +=p@ݥ@ +=p@,<@ +=p@+@8~($@8Q @28r Ĝ@25?@1U`A7L@1P@0fYJ@0a$/@0fYJ@0a [6@0fYJ@0aX?W$B?M?GM?gk\0?W?f]G? ?-',?I?= 6?5D?U3p?:%?u/X?m!?0? +t?|)-}(@@@@@,@$???????7[E7m ?V]?5gD@WdP6@ڦ??l=I 6?]5?+e ^? r@o=@@(\@(\@(\@)ԕ,@(\@*qi@(\@)*0U2@(\@'_o@(\@($ x@+-V@+-V@+-V@+-V@+-V@+{@+-V@+D@+-V@+񂩓 @+-V@+n@3֚,<@3֚,<@1S@1֡a@06-@06+ J@.L/{K@.zxl"g@.L/{K@.8YK@.L/{K@.8YJ?| ?Kb?tcj?lDžN9?~|+?t?| ?Q_ڸFN?ދ"?@[*^? ^??sx/T? J?򯞼? SF???j@@@@@*@*??????*fS &?#}92?06@(ы@+B?C]ݷ??8!?`>;/?/HW@f%t@@)x@-V@)x@G@)x@z@)x@E@)x@@)x@ě@ I^@G{@ I^@z^5?~@ I^@<ߤ@ I^@$/@ I^@.@ I^@H˒:@6O M@6Fs@4kS@4?ә~$?W ę\?,|?Aź? @@@?@0@(??????՜@v=?]ںj?4-"4m@@FUz?svO?K.,?)Ba?Aby@^^8@@=E@<1'@=E@BZc @=E@>@=E@<Q@=E@A'@=E@En@IdZ@Ifffff@IdZ@Ibu%F @IdZ@I^Q@IdZ@IeO@IdZ@Ia [@IdZ@I`hۋ@5e!.@5bѷ@2 ě@2v@2Vu@2H@2B@5@2Htj@2B@5@2CnP@2B@5@2@[6?2}?j`cq?b?,Z?bJֵ?>V$?Ol?o ?}7.?.}$?Ll?^̀@!?DU#L?.]L?LO?sO>?q' +B?Xk-7@@@@@,@*???????RSf`RV?Fp7?7r{3@>@Id@ܼ?enh?V*>W?S6?@pM(@f:p@@I^5?@Nf~6@I^5?@JV|P@I^5?@JgD]2@I^5?@Jʣ%@I^5?@HV +@I^5?@H}@I@@I8>Z@I@@I;g@I@@I=@I@@I?q@I@@I?^ie@I@@I>3@4qiC@4oԢN@1+ I@14@04tj@03F&@0&YJ@0%ȓ쿊@0&YJ@0&=Hk@0&YJ@0&Q?ɱb)Q?݁;D?lȼ?J_?T?;G 1?I'%?bR?%f[?Lo2?t ?lCY?As $?׫}F?׳S\?h?=?*@@ @ @*@8@2??????V&$?Q)DYN?.pPn?Fp 2j@Jh#P@I>/A8R?I(?aU^%d?*/s?챝@mk@@5-@5hr @5-@5sh@5-@5*0@5-@5ح@5-@5?@5-@5@`A@-@`A@ - @`A@tj@`A@+@`A@Hˑ@`A@~@6#g l@6#33333@40ěT@4+m]@3-V@3`A7L@33&@3 ԕ+@33&@3H˒:@33&@3!-?F/P5?Fp3?=?Kh?niʢ?Vs?h%?Y͍_?*1 V?|ɽ?9.?pc?:;{?D(o? F2?aI*?y\,?,Ro?9@@@@@*@&??????pO?aF?Qaܪc?R 8a^@5t@Kz?pP*\,?r3Uv?ӥ= ?ӻ6ݣ@ez@@)`A7L@)a'녞@)`A7L.@)`A7L.@)`A7L.@)`A7L.@)`A7L.@w߾vȴ@w;6@w߾vȴ.@w߾vȴ.@w߾vȴ.@w߾vȴ.@w߾vȴ.@7s@7<쿲@3.Mm@2"`.Qn@1ce.NC,@1ce.NC,@1ce.NC,?"@8#@8:@8 >+@8I@8?|ǵ9@8@8i@8@8S@8?z&F@8 *@8p@8@8 @8 @?@N+@0`A@N+@R@N+@Kq @N+@Mw1@N+@K~(@N+@Lq @Bu@B\*@Bu@Bxl"h@Bu@B@Bu@Bu!@Bu@B<6@Bu@B@9#g l@9 m]@3{ I^@3|I^5?@2{Ƨ@2ylD@1YJ@1'RT`@1YJ@1:@1YJ@1TɅp?us\?܄ (?5$?S;~?i]i?VFNLG?\ OZ?Èa?pI??#:d ?T?P(?n?U.?z_? Y??vucʲ@@@@@,@(???????x[׮?YZHu+?byZ?~~Pj@K1xD@BS4?Nxb?L'?z\?68^@rw@@F@b@F@duE@F@-#N@F@Ԗ9@0@F@@F@ϔ@n\)@nO;@n\)@n (r@n\)@ne>@n\)@nꐃ@n\)@nl@n\)@nŜ}@5@@5P(@1sS@1n+d@0_-V@0^k+@/L/{K@/W<@/L/{K@/G(@/L/{K@/y?| V?2x? +HO? T!?/+I?fq\?_Kt?5]g?w9L?]]?M?,?w{??8K6?J™a7?ˌ?' Z@@"@@(@:@8???????0xHXD0?6ws??#%>3@v@nX?W6hz?_y1Y?p?|b|@hwu@@gO;dZ@gP +=@gO;dZ@gPy @gO;dZ@gP)'@gO;dZ@gPﲫ@gO;dZ@gO.֧@gO;dZ@gOzc@=hr!@=@=hr!@=$ @=hr!@=[SJ@=hr!@=]U\@=hr!@=G3Q@=hr!@=q@3qiC@3ha:z@+A7K@+0"@)@)KXP@gP Y:@=u1?=RjO?eZ?>R?<+59F@g@@cn@cě@cn@c[7@cn@chۋ@cn@c @cn@b6z@cn@c[6@vȴ@5?|@vȴ@@vȴ@%@vȴ@@vȴ@6z@vȴ@U=@4 ]ce@4 +S&@0|hr@0v_ح@0-V@0͞@/@/\N<@/@/.H@/@/vȴ9W?2}?Čۨ1A?$C@?ƠJ-M?5 g?CXs?}ѿ,?u߿?O(?Hn?77? f?z_?l?qn?!ˠ*(?gϵ?fW@@@@@*@*??????G;z?Q?;Bk?)Y F@cw<@\?Zնͻ?JM?rw9q?R*@g0`@@t.@t.@t.@t.@t.@t.@ +=.@ +=.@ +=.@ +=.@ +=.@ +=.@8쿱[X.>@4I^5?.Mm@3"-V.Qn@3~($ .NC,@3~($ .NC,@3~($ .NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @"@"@"@҈p@"@]cg@"@64@"@u@"@@Vu@VE@Vu@Rs@Vu@Sg@Vu@V}Vm@Vu@SE@Vu@OA@4}:@4|Z@1S@1a|Q@1-@1rH@0O M@0hۋ@0O M@0\@0O M@0Q?| ? ?zkr-?5~pY5?Xs~?#{׈?1j?4 "?c#$?ą6 +?SY?^?@A?l?`x?ȏG?ĭ?{2@@@@@,@(???????G;SxPa+4?M\?@5q@q@M@Tl[}@2tj@2:6@1䎊r@1KV@1䎊r@1+/i@1䎊r@1<'??| V?e?]R?T'?$cCy?w +?}#?hS?83_K?[l7? T?s;?+Z?ɑ6?c: +{?TJ?VZ?}@@$@ @$@1@4???????)8G6s?Q^#A?*B@؟b@n?q}M'Mq?Jfp|?ߝ??s@fLe@@y"@y@y"@{:@y"@xwP@y"@m&@y"@Dk@y"@}b@'-@'RT`@'-@;I@'-@3GO_@'-@/H@'-@+@'-@,^ @5@5.h"@2 I^@2{Z@2)"`@2,,RZ|@1a:S@1fA+@1a:S@1d[Hh@1a:S@1dS9=?~?J?38o?>q?2M7@|@*s?^z3$Y?Rńg?E{j?@g{l@@+R@/-@+R@a.H@+R@Q4K@+R@H\@+R@90 @+R@> (@1@׍O;@1@W@1@}@1@ (@1@ө*0V@1@\@3`D@3Zu%F +@0O|hr@03@/;dZ@/!@.-C\@-rGE9@.-C\@. ᰉ(@.-C\@.ѷ?| ?o|Z[?@?4?di? d?| ?{6?Ēۇ?%i[>?.<?Y@?]?ir?Ͱ{?a ? Ğ?t@@@@@,@*???????fn\O?CbkQkL?Ss@5v@+?cmo?t>12?ϵЛ.k?WEn_K@e6,@@cS@cS@cS@c<@cS@c7LG@cS@d@cS@a"@cS@aP:w@m@m@m@x@m@ ?2@m@\@m@$$@m@<0z@4~($@4$@1TS@1Uc_:@0Vu@0AH@0@4@0q|@0@4@0E +@0@4@0pJ?}@TΥ?19?);`?.?Cju?0_x?|h2:?ͣ?nJd?;4?2rtf?z(-%?n3?!??V,?jGr?~3F@@(@ @&@3@3??????+#;)*~@?3DM@? 0V@c@S9t +?S`f?A1g7ml?pQZ+? \{|@f`^@@J=p@#n@J=p@f@J=p@ +=p@J=p@#{J#:@J=p@;dZ@J=p@@/-@33333@/-@)^@/-@\)@/-@ :)@/-@.H@/-@[W>@8D@8C%@4I^5?@5u%F +@3A7K@4W@@2O M@3X1&x@2O M@2l!.@2O M@2 wkP?Q,Ě?(x~?azL&{?lmĎA?W?>ԛ?Br?=ʄ?X43}?_@@@@@,@*??????~*l?fEz tg?#'@@?V?8?גuȧ&@6 zͯ@qF=r @@^5?}@ cg@^5?}.@^5?}.@^5?}.@^5?}.@^5?}.@V@C@V.@V.@V.@V.@V.@804m8@80 + !@5?|h.Mm@47KƧ.Qn@4u.NC,@4u.NC,@4u.NC,?-,@8#@8:@8 >+@8I@8?uq@8@8i@8@8S@8?NN@8 *@8p@8@8 @8 @?@B\(@L1&@B\(@=@B\(@A|P@B\(@OiDg8@B\(@CF]d@B\(@H9X@\(@`A7@\(@_@\(@@\(@f@\(@)^@\(@y|@9Y*0U2b@9O@5ٺ^5?}@53@5M-V@5T?@5m8@5%=L@5m8@5eں@5m8@5\N?>sN?/>?'Qt?~???n?NIɮ?аl?5U??_Q +?k?mֿtE?nO?4y?Dۖ?7r_?24 +@@@@@&@"??????P(XN ɔ?U?kj.@I@U@&O?s 5ӰD?>|?V&Sn?b?ݽb@n\C@@1@*@1@1g$@1@(@1@#M@1@A@1@Ԏ@ 7Kƨ@@ 7Kƨ@@ 7Kƨ@h*@ 7Kƨ@ +[@ 7Kƨ@۰#@ 7Kƨ@jP0@8D@8>6z@3R I^5@3R*2@2tj@2H:+h@2fYJ@2cr־@2fYJ@2bհ߻@2fYJ@2c$?d?C7j?r8?% ?$Q?R?:Ƶ?bz2?Jz*(`A?$ H*?cP{(?` ?,`I?f?[edWR?|B6g?1xk?RR@@*@$@,@<@6???????˻̀?K/?biLR?XK_@zp@@?%~-M;?n Es@b2G?b[@ob(@@-V@([@-V@,/{J@-V@0)^@-V@*W@-V@+ I@-V@-:@hs@lD@hs@C\@hs@_p@hs@3333@hs@*0@hs@KƧ@7}:@7u%F +@3n5?|@3nH@2`A@21@2~($ @2q @2~($ @2A@2~($ @2a@?)T?vucʲ?M?Z)?i]i?U6@HS@H1'@HS@HPH@HS@H1'@HS@Hp +@6:@6@2&+ J@2'sPH@1`A7L@1֚,<@0O M@0 ě@0O M@0α2X@0O M@0;5Y?1j??ցC ?&t?$?bb<]?Id?=?<ظ??ʾ?ZX?-@@*@*@*@9@3??????'ڶ@?ȁ](?Y@ +&@^b@[?3KOح??1s?u%?}_%@f/M@@*~#@*~$@*~#@,1&@*~#@+:)@*~#@+C@*~#@)@*~#@)7Kƨ@-V@nP@-V@볶E@-V@T`e@-V@Z@-V@벣S&@-V@벽<6@1cg l@1cg l@0+@0&@.1&@.Q@/@/Ov_@/@/Ձ$1@/@/_ح?^XN?ƿ57?WD@?ݶ\r?E@?+ʦ_?bV,?NۈV(?^ o?Y?qN?wN z_?b@?˛͇q?m+&?!ˠ*(?b/bJ?L@@@@@,@*??????T01$y?>D,?!W"2@*Bj.@z?M-K\@?0jK'?K3 ?W5-勇@s~R@@hI7Kƨ@hH\@hI7Kƨ@hOO M@hI7Kƨ@hO4֡b@hI7Kƨ@hMU@hI7Kƨ@hJf@hI7Kƨ@hK]c@Zv@ZG@Zv@X74@Zv@X*0@Zv@Zxl"h@Zv@WXf@Zv@X}H@4~($@4)^@0@0@0W-@0VE@/#9@/A@/#9@/p:@/#9@/@?|O?Z? ?̒?ǹT?F0?|O?4 "?pM?@[*^?A B{? R?>Zw~?vv?6~A?I?0&YEd?$@@@@@@(???????FM1XDT<?=_?+@hJب@Yv?]|?LViS?\Ɲ?w7z@fp@@qZ1@qY@qZ1@q^҈p@qZ1@q]Vl@qZ1@q`@qZ1@q]@qZ1@qcn.@1&@\(@1&@jg@1&@@1&@~"@1&@@1&@_@6@@6@3r Ĝ@3g @3>Vu@3D,<@3OO M@3D7@3OO M@3S9@3OO M@3M,P?)>PJ@"@6G ?8? -A?n ?Xi6S@s Or@@?|@m@?|@}H@?|@@?|@+j@?|@e-@?|@4m@ovȴ9X@os@ovȴ9X@ovFs@ovȴ9X@o|hs@ovȴ9X@o~Ov_@ovȴ9X@ow4m@ovȴ9X@oz1@7DO M@7Ib~@3+@3Ov`@2j~@2j~@2n_o @2mcA @2n_o @2p@2n_o @2pD?3a=?:aGS? ??:Z2b??OPl[?K{O?f;m?f?~m??Ll? ,?/X?H?[Rb?3_?6?DΊ@@@@@,@,???????W+'<?B O?\-=@xI@ozX?aba?s,?-~L?י&Zw@nnG>|@@dQ@dy@dQ@du"H@dQ@dqQ@dQ@d @dQ@d]6@dQ@dvL*@r-V@{ƒ@r-V@g ^@r-V@q+@r-V@vqX@r-V@r4Y@r-V@pL@9䎊@9j~#@3r Ĝ@3f@2-V@2X@1n_o @1qW @1n_o @1p{f!@1n_o @1qߕX?|9?h[? !?cnvm?\,?6-"?%]?Sq?hAů>?tU?0 (`?k$z^s?0Wn?%?{*Č?.P3c?PBc,w?Z@@@@$@2@,??????RDd?e׋%u?+vFV@d'0@s¡f?vL!?A8?vOD?z A@qn~@@Z{dZ@Z{dZ@Z{dZ@Z|N=@Z{dZ@Z|?@Z{dZ@Z|C,z@Z{dZ@ZzkP@Z{dZ@Zz@s3333@stj@s3333@s*0U@s3333@t*@s3333@s*0U@s3333@sMj@s3333@s@N@2:@2qu"@/`A7@/4J@-Z1@-āoh@-oi@-/@-oi@-JM@-oi@-oi?^Q5P?$?4!p?_?Dj?2I/?bV,? g?ܿ?9~F?Cq$u?_~t?bMky?l? SF?xqC?pk Y?M684@@@@@,@,??????P;'?,f?D yX@Z{ @sm9?;ٸr?ǹs?ri?'ϕї@s}@@/-@ n@/-@1 @/-@.}Vl@/-@1N;7@/-@)7Kƨ@/-@*W@%@xbM@%@'R@%@(@%@M:@%@/W@%@M@9e!.@9o䎊r@4?|h@4 ҈@3-V@3iDg8@2OO M@2W@2OO M@2R I^6@2OO M@2OrGE9?xg?y)3c?2 :M?Sz? ?OPl[?vc?*l?Î +i??[fbF?to(?'@hQ?vv?5q?{B0?q?<שN@@@@@&@,??????dJ>^@)<}?`*?_>z0@,mG@}N?nNs?ntPӐ?~–?˓"v@r@@w@`A8@w@ʼn~c@w@Kg3@w@ä]@w@Eh@w@zy@H2-V@GƟ@H2-V@H<@H2-V@H&2=3@H2-V@HV@H2-V@HLp@H2-V@H0k@8r@8-i}@3^5?}@3BHmJy@2tj~@2od.l@28D*@2B,F@28D*@2Jd@28D*@2@";?& ??}C?C I??>$W9?xHgr?TP? +ic?t?C9?_RS8?~eB?_5 ~?y^@@(@"@&@9@8??????>|d?z?jX?q^Ƚ@[@H稜?*hN?t9?QVW@6c @k e/@@@B I^@@B I^@@B I^@@B @@B I^@@E@@B I^@@ES&@@B I^@@>"@@B I^@@?b}@h\@i7Kƨ@h\@mw1@h\@m'@h\@l>A@h\@fFt@h\@gz@27@@27@@.A7K@.v}Vl@-dZ@-<64@,QN;6@,KƧ@,QN;6@,KƧ@,QN;6@,KU=?^XN?DE??U*?2F0?SJ?bV,?[u?;~?!zt9?|+~?:i?g)?Ϸ+?]?3{Z?fW?gϵ@@@@@*@,??????fbTb5@?Pv,8?Q ;S0s@@A^@i|vr?_,?`$ ?[O?B@@r~@@\1'@MV@\1'@KC,@\1'@x_@\1'@r:)z@\1'.@\1'.@U$@NzH@U$@fffff@U$@Y=c@U$@V}Vm@U$.@U$.@9-v@98YK@4 I^@4v@3>Vu@3)@2YJ@2Zc@2YJ.NC,@2YJ.NC,?p?HyR?4E!?lfW@8I@8?ŦTF?݁E?Rt?@8S@8?$A?P(?%Zo ?&@8 @8 @@@@????@/ٙ.@/ٙ@0Fu@/ٙ@/Y@/ٙ@0@/ٙ@0 P|@/ٙ@0SM@܂ I^.@܂ I^@g l@܂ I^@f,<@܂ I^@u%F @܂ I^@C,z@܂ I^@1&y@7`D.>@2ԛS@2@1-V@15Xy@1z,<@1T#@1z,<@1W&@1z,<@1Zu%F +@8J?4o:v?(`ƴ?r,? P Q?@8J?ѿ,?YEX?0+Pl?6Ey?Jr.@8p?e+?yjk?π9"?:/ʼn?8@@@@,@*?????@.O@+ I@.O@,VϪ@.O@+)^@.O@.@.O@._o@.O@/- @[/@[%Q@[/@[1'@[/@[Y@[/@[}H@[/@[쿰@[/@[Q@8v@8D@3uS@3vȴ9X@2]V@2](@1D*@1Ov_@1D*@1TɅ@1D*@1 ?5}'??mGSq? ?>C,4?f]G?K{O?Hz?Zq?#X?h_N%?Ր?ɽ4?%y*=?@A?GZ?o?&f@@@@@,@(????????Z. @?22p?:m?^"$@.x@[_?MLn׸?s\,W?F}?by2@pE@@X@X +=q@X@W#x@X@X}V@X@WQ@X@X/@X@X I^5@޸Q@j~@޸Q@1&y@޸Q@ '@޸Q@̈́M<@޸Q@@޸Q@ݘ@6?@6@@3R I^5@3IXbM@3tj@2xF^@2@2GE85@2@2nO@2@2N;?F/P5?JT? +?8~?X%?9j +?|O?YYFpb?~$9y?0%rp?\r?M>?5q?kc?}??4i+?;WZ?"`@@@@@*@(???????.5@U?WF: "@=E@>ߤ?@=E@>m\@=E@>m\@=E@<@=E@<@M@NV@M@M@M@N_o@M@M\@M@M&@M@M&@0e!.@0eoiDg@*j~@*Ʌoi@(E@(D@(Bu%F +@(Bh ԕ@(Bu%F +@(Bu%F +@(Bu%F +@(B@5?OW?GA?>f?ƠJ-M?@ A2?$?;0?j%Ra?['?C B?@?M\ٓ@?!?u?oܧ?avh?#.?O|q?@@@@,@,??????Kt? ^7?0L`Z?#@=P@Mh??}TYT#?!PA?x*? *<['@s.v@@\@$/@\@ce@\@#@\@U@\@iDg7@\@ Ĝ@,1&@([@,1&@ - @,1&@!TɅ@,1&@@,1&@b|@,1&@H@7!.@7݊ڹZ@3\I^5?@3V@2`A7L@2hr@2䎊r@2vYJ@2䎊r@2ufA@2䎊r@2w4m?Y͍_?"'?=5?IXo_?(E?X8 ?=՛?(uw,?/܊?ڼF?ҸBz3?:? ?7&c?`͓=B?yh?aI*?[ S?$syW?R ?Vá?"#@@@@@,@$??????_:?|aP?eL?cRl~@9K:@f/Q?r)2 ?S8]?)[C?4dP@l%@@/Q@/5?|@/Q@/F +L@/Q@/fC@/Q@/Q@/Q@/ح@/Q@/˒:*@8Q@@t=3@8Q@QX@8Q@7KƧ@8Q@>m\@8Q@>\M@8Q@>6z@8I_o@8Sg l@3|hr@3Q @2t@24m8@2Eu@2Aohی@2Eu@2Ae@2Eu@2Bs??t?'? +tI?,Z?[5?lP {?u?ଚw?t(?`i2?]vM ?K ?#Z?)h?9@0w?cZ?aʕTI?`i2@@@@@,@(???????B 65?E?*k@/!dJ@>F?`&D?*Unԣ?! A?@-o@or94@@Pqm@P}E@Pqm@Pm(@Pqm@Pw1@Pqm@Ps3334@Pqm@PsMj@Pqm@Pu?|@33333@+ I@33333@2 ĝ@33333@12Y@33333@-(@33333@0bM@33333@49Xb@7v@7@3ahr @3al@2~Vu@2U=@2+xF^@2* @2+xF^@2,j~#@2+xF^@2+U=?ꯨT?W[?%HC=s?V0O?b\?_ ??c?ZzZ?!zt9?qN?X78?)dKA? +?>Zw?rsw?{2?їJ@@@@@@??????N?_@?TUb?=Hl@PtЈ@/?j VM?Vk0?ЛgR9?2o@oPo@@>XbN@?@>XbN@>Y@>XbN@>PH@>XbN@?R;@>XbN@>iB@>XbN@?n@μhs@\@μhs@λdZ@μhs@ξ"@μhs@θy=~@μhs@γPI@μhs@ƍ@7۹~($@7ԇ#@4° ě@4F@4"-V@4'Xe,@3c@3i (@3c@3aN;5@3c@3U`A7L? ?ܡU-?=5?Q+v?l(? Y9>?q!U?[G,?Et'?%ja?pFs?s( ? ?j?Vr?2Yy?P;ro?\?/dž@@@@@(@&???????C4(h?&?>ҽRD?h]*@?XbZ@ξe=N?`u ?SkQ??3X\*V@gh@@glC@k I@glC.@glC.@glC.@glC.@glC.@˶E@˴9Xa@˶E.@˶E.@˶E.@˶E.@˶E.@6쿱[X@61@4)+ .Mm@4tj~.Qn@3&.NC,@3&.NC,@3&.NC,?| @8#@8:@8 >+@8I@8?)T@8@8i@8@8S@8?ЙQ$@8 *@8p@8@8 @8 @?@ +o@&x@ +o@_@ +o@N<@ +o@qk@ +o@q@ +o@ Ƨ@ز Ĝ@g+ J@ز Ĝ@جVϫ@ز Ĝ@اfA@ز Ĝ@ءn.@ز Ĝ@ذ`A@ز Ĝ@ج~($ @7^H@7X@35S@3,u"@2K"`B@2A:S@1_o @1*0@1_o @1͞&@1_o @1^5?|?L?5YM?^*G?d?bJֵ?ɖw?f<4?݁E?h?,ў? R?'qTrQ???anñ?ZaizD?*6SpK?8wx?<שN@@@@@*@&??????X?t +X?mZ~sP?mSE@ +{@ت5`?{8)w?{E?[?E<@sI}@@+Y@+U\*@+Y@+f +L0@+Y@+qhr!@+Y@+B3@+Y.@+Y@+Ev@MS@M\)@MS@Mȴ9Y@MS@MKƧ@MS@MmjO@MS.@MS@My=@8įO M@8jOv@4+S@4Fs@3A7K@3&IQ@3L[W?@3)ѷ@3L[W?.NC,@3L[W?@3ݗ+k?us\?s ?z%d?4M^@8I?YM?Wl?5:7? %w?tm>@8S?TEkc?Ny?1?DU#L?a @8 ?>C]@@@@@(?????@ 1.@ 1@ ]#@ 1@ |,*@ 1@ AAgD@ 1@ C`@ 1@ P@@".@"@e@"@ꎠ~@"@ߙhZ@"@ߪ0O[@"@߈$*@8>6z.>@3hr@3is6@2tj~@2mae_@2[W?@2dqY+@2[W?@2dۿ{@2[W?@2j¯@8J?=ذc?17l??UbBl?H!?|Js3@8J???2OozU?ek~?Xqz?4PTF@8p??-b_9?>?r꟧?hS@@ @,@<@:?????@}b`B@}s3333@}b`B@}` qv@}b`B@}JL@}b`B@}X74@}b`B@}MM;@}b`B@}QX@8Q@8Q@8Q@ 'RTa@8Q@?|h@8Q@*Ov@8Q@6+j@8Q@=p +@7@7{J#:@38r Ĝ@3=v@2v-@2hۋ@1@5@1!-w2@1@5@1,zxl@1@5@1oh?]?B-?Ԕ?V0O? +0ggk?$Nx?]?u(?Pт?J6b?[h?⍄o?*wjs?&!+?va4z?0ڌ#?? 3?@@@@,@*??????p!I$?qKx@?aFgXs?0:{@}SAc@3^g?pp?> T?.@?kEPS@rߛX<@@@3333@@^5?~@@G{@@Q@@D@@"h @L9Xb@L9Xb@L9Xb@MaG{@L9Xb@L9Xa@L9Xb@M)x@L9Xb@M?@L9Xb@LF^@5#g l@5# @6@ ě@6>BZc@5;Ƨ@5+Q@4Q@4sh@4Q@4A@4Q@46z?|O?;$.?}vM?~ +]z?3sG &?8?}ѿ,?J2?P?Ţ/? U?VTJ?/X?ܣD?$M?vc?2:U?a#@@@@@@"??????D3x?mjh?Lɭ=^?e|@z+@L^ ?g N?>7?5Vl?:C@a/ɷ@@(.@(@ @(@xJ@(@~[|@(@r@(@ Z@C.@C@h@C@'4@C@ .3@C@}o@C@vE@8v.>@4@4R꿪@3V@3} Z@3iB@3;3T@3iB@2Apz@3iB@2ӵx,@8J?J' o?ps?7#w?Q'?jT@8J?S+?,C?V%/@6_?5I?(@8p?\?37?[-$?^?J^&+@&@"@&@5@5?????@V@/@V@|64@V@ohی@V@f?@V@A7L@V@{"`@UxQ@UXQ@UxQ@U_p@UxQ@T@UxQ@U"7@UxQ@Uu$@UxQ@UH9X@6H@6oiDg8@2 ě@2#w@2R`A@2&@1c@1/ @1c@13ߥ@1c@1 +=p?X?Yd?R&?a]?>C,4?)?CږF?F6?o J?|1?6P?+NP?WHV?RQF?$*a?]=?ܑ ?Cns@@@@@@??????z??~k)?Oߋ@듸@J@UhY?Ma7?a-/U@6? (@Q@r]C@@;dZ@<1'@;dZ.@;dZ.@;dZ.@;dZ.@;dZ.@ɺ^5?@;dZ@ɺ^5?.@ɺ^5?.@ɺ^5?.@ɺ^5?.@ɺ^5?.@4 _o@47c5@0}hr .Mm@0tj.Qn@/#Z.NC,@/#Z.NC,@/#Z.NC,?|b@@8#@8:@8 >+@8I@8?~?J@8@8i@8@8S@8?gl˹@8 *@8p@8@8 @8 @?@@DT@@E`A7@@DT@@F3H+@@DT@@FBN@@DT@@E1@@DT@@CmO@@DT@@Cj=@H&x@H&C\g@H&x@H"@H&x@H,@H&x@Ho힟@H&x@HȜ@H&x@Hl3\@3䎊@3e+@-"`A@- ~@,E@,F!;@+At@+l@+At@+il@+At@+17?}#?V??Qϋ?/?GIv ?| V?I?I?4k?`@?PG&?n3?lJ?wy2u? CB ?΢?΢@@,@*@*@8@9??????7Xt?*ķT? @@D@H!?J|Y?(Q͔0? ӑcE?^Z~@g8@@\(@Y+@\(@_@\(@[u@\(@dT@\(@_F@\(@^ (@Q@š@Q@u#@Q@,@Q@ĵ?@Q@ĨT@Q@\(@7N쿱[X@7L~($ x@3|hr@3<쿱@2-@2ܥzxl"@2c@2ba|Q@2c@2ctj~@2c@2bp:? ?Qi{cj??[d?_dA?*j?}ѿ,?& ?f?Җq??"(L?Rw#z?2}?/Y}?Y8Z? .0v?1&y@>9X@>1&y@> y@>1&y@>:~@>1&y@> @>1&y@>X@>1&y@><6@4:@4>@2?|h@2m8@1"`@1,@1u@1.H@1u@1~"@1u@1~qi?Ol?XMH?e +!C?Fq/b?bJֵ?F?}ѿ,?o ?DP?M =?*?k?|׿pY?Ãx?+QK?=aw%?_խW?<71@@@@@*@*??????S ?e8sB?3f:D?EQEپb@HѦSo@> ?R'J?dLzŏ{?T(?A(@f @@&KƧ@&O;@&KƧ@&h@&KƧ@&dH@&KƧ@&i2@&KƧ@&WP@&KƧ@&@r["`@r[v@r["`@r[\_?@r["`@rg@EB@r["`@ro*@r["`@rYUHa@r["`@ra߶v@5r@5r@3.5?|@3*d&@2A7K@2^@2m8@29f|Z@2m8@2خP*@2m8@2#=?}#?ą"$?T֗g?Sd? ?OIf^ ?~Ov_ح?Ad?>)Skh?QX{Q=?֢Gc?RѥJ?TA?T??5a&?5d| ?[?5# V@@"@&@(@0@1??????t>6z@4sPH@2 I^5@2ѷ@2`A7@2@1,<@1qu"@1,<@16@1,<@1U=?| ?nx?)?BI{?̒h?6={?S{d?| ?c?fM?**?pPȻ? 3W?W?*J?D(p?=aw%?:1?o@@@@@,@,???????k?*̭?*4)@@Rb5?JP3:E'?:9?M*-{\?~S^J@eے/@@@"@@@@"`@@@@A@@-@q^Q@q^Q@q^Q@q]Vl@q^Q@q^@q^Q@q^҈p@q^Q@q_o@q^Q@q_䎊@1S&@1S&@05?|@0ߤ?@0 "`B@0 jf@/Z@/74@/Z@/wkP@/Z@/ ?_\p)?h?,fC6?Њ?E@?t?bM_x?&uE@?:?9~F?!U?{?Q\?bMky?Ф?B@@҉@6s@6xF^@15?|@1C%@1ttj@1qN;5@1O M@1 a@@1O M@1 ~($@1O M@1 ?}?+!? +NA3?[d??| ? l?<?8"?Jn? w +?],m%@D,@/?yO-4?Ye9q?nW?_@a`JC@@l"@lvȴ9@l"@l @l"@lY@l"@lZ@l"@lPH@l"@lE85@0 ě@0`A@0 ě@2S'@0 ě@8U@0 ě@7kP@0 ě@.@0 ě@0H@7~($@7H˓@2^5?|@2S&@297KƧ@2;6z@1=ce@1D#@1=ce@1B&IR@1=ce@16fffff?)T?Sy?K]4?\GyƩ?GBm?VAў?1j?8{:?DP?|zk?+L5?[6?W|DC?zx?q?k,? +r?y\@@@@@,@,??????? \@;`?Wn̡ ?F@l@0?v$W?hg%_H1m?qFP?]l'-@gJ@@YV@Y\(@YV@Y3@YV@Ylj@YV@YڄL@YV@Y\@YV@Yա @ٷKƧ@ٳ3333@ٷKƧ@ٵf@ٷKƧ@ٵ{>@ٷKƧ@پ@`@ٷKƧ@ٵQ@ٷKƧ@ٺ,%L@3qiC@3s9?@1+@1<.?@1A7K@1U@1m8@1Vu`@1m8@1]l:@1m8@1@?}@TΥ?Pnx?Kg(^Յ?@5@5 +=p@2hr @2d8@2q7Kƨ@2p k@20@2.Ov_خ@20@20@20@2/iDg8? ?" ??(tUo?ϲI?jכb?|O?RwS5?3fvI?WA?=x?w8?@A?J?(?=aw%?q ?GZ@@@@@,@&???????J;#[ @?SA%v? @@Z@:J)?s/=?@0"?xI&v?؉7#@fg +!@@ A7L@ n@ A7L@!R<@ A7L@!TɅ@ A7L@"h ԕ@ A7L@҈o@ A7L@G@S@S@S@ +L0@S@O@S@L/{@S@YJ@S@oiE@0v@0%@*-V@*+j@*/;dZ@*/;dZ@)At@)4֡a@)At@)At@)At@)'/W?^Dw'?[e(@@@@@*@,??????Y"Ґ?BtQ/? lr@ U @5:k?Q?&<Xu?HR_?E=%@sZW"@@\&x@\`A@\&x.@\&x.@\&x.@\&x.@\&x.@["`@`n@["`.@["`.@["`.@["`.@["`.@7:@7Ƨ@3TS.Mm@2Vu.Qn@2s&.NC,@2s&.NC,@2s&.NC,?q!U@8#@8:@8 >+@8I@8?2}@8@8i@8@8S@8?}?@8 *@8p@8@8 @8 @?@f^5?.@f^5?@fHۋr@f^5?@f- q@f^5?@fXl"h +@f^5?@f=ڹ@f^5?@fA@+.@+@a [@+@bwk@+@Hp:@+@B I^@+@H@9 D.>@3+ J@3}!.H@3tj@2ӯ@1sh@1"`B@1sh@1ʟvȴ@1sh@1Ǔݗ,@8J?%ñ?%bI?^Z?̺ ?Fb%i@8J??-?6?~]?~NO@8p?E!'?c?'d㗅?y?M\{W@@@@*@&?????@@A$/@ˤ@A$/@˛H@A$/@Eڠ@A$/@@G{.@G{@~F@G{@{O@@G{@[2 @G{@2W@G{@u@4+ @4խ@46-@3A@3ush@3>Rbo@3ush@3bPܘ@3ush@3\t@8J?h/E?@ +?[9??mC?vC@8J?pt4?H$/걺?Rf?19:?VN4LM@8p?t?I&a?2?z'?٦SqUm@$@,@*@7@5?????@L1@L@L1@L1@L1@L 2ܶ@L1@LӜg{@L1@LХޢ@L1@L؋Κ@Q@X_8@Q@pc@Q@V@Q@]~@Q@"@Q@ѕޫ@8g l@8ȯ݅@4#@4(o8@3tj@3O1 @2YJ@2/@2YJ@2~s@2YJ@2ի?d_) ?B|3?LW ?0?N~b?7 +8?}x?| V?J9B?tT|2?!s6?ͮE41?^?|h2:?|4c+?ӝ!*?VE,?=?^ _?+@8I@8?1j@8@8i@8@8S@8?m+&@8 *@8p@8@8 @8 @?@ Ĝ@G@ Ĝ@@ Ĝ@й@ Ĝ@ 5Oi@ Ĝ@m@ Ĝ@(@>vȴ9@MO;d@>vȴ9@vȴ9@$<c@>vȴ9@6i-Ԅ@>vȴ9@8hq@>vȴ9@! +_g@8qiC@8TɅp@4 I^5@4鞦:@4)"`@4E޽@3 k@3U@3 k@3?)L@3 k@3YU?Z?-$? J0?TKF?j6?Y1z?Z?Xw8?4 m?16y?MQe?Dt۱T?A?j&?M?ot?13C1?{0+@@(@ @ @:@8???????gotlgp{%6?b?]ʠG݉@%|@0U#&0?qlkj?mR}?wB?Ǒ*@r)VZ@@^5?}@G@^5?}@~@^5?}@m@^5?}@G@^5?}@e+@^5?}@~($@?|h@?vȴ@?|h@?|h@?|h@?|h@?|h@?H˒@?|h@?b}@?|h@?.H@3H@3H@00ěT@00$tT@0$j~@0$7@/@/ @/@/ qu@/@/6?}ѿ,?{j?,fC6?ArU@? f?-/ge?|O?NۈV(?NJ?Y?݄ ?U3p?q6tN6?.x?֘>D?xqC?M684?b/bJ@@@@@*@,??????1?-T ?>ʃk@^P@?|d{?>PQ?6?(#r??U@g +@@Ni[@?B3 [@?)lIN@N< @ffW?^+H?MOY8? )p?Oh@k6@@J@JbM@J@Jȴ9X@J@J!R@J@J'/@J@J˹~(@J@Ja@7K@;dZ@7K@$/@7K@n.@7K@1@7K@~@7K@t@8^H@8Xu%F@3xr Ĝ@3|L_@2"`B@2\(@2!.I@2 k~@2!.I@2Ov`@2!.I@2RT`e?qn?dY{?ِ?c[=#?X?۝.Yr?F/P5? ,C?-8?X}iQ?nW*؄??;?/X?2}?Aᆽ?l_zU? .0v?^^ω@@@@@(@$??????M `?pZ??3l?X%t2Z@J^:@h?\J?|&))?F?]O@k\ٿ@@XbN@XbN@XbN@b@XbN@C\@XbN@xl"h@XbN@\)@XbN@*1@[E@[E@[E@[F@[E@[\)@[E@[?|@[E@[X@[E@[3@4 xF@4J@1S@1Fs@0"-V@0!u@0._o @0,@0._o @0+aA@0._o @0+Ƨ?}ѿ,?[e_9^?-/3rD@'qJ@[uo?^.Ws;?MΝ8t?^G?oБD@gF(n@@ O@ \)@ O@ @ O@ A7M@ O@ @ O@ @ O@ F@Jv@JbM@Jv@J@Jv@JZ\6@Jv@J@Jv@J[]D@Jv@JF5@7 D@7snN@2r Ĝ@24@1Vu@1r@1iB@1b˧2@1iB@1g@1iB@183>?gQ?S?MV4*-?¤x|?4zu'W?یqnj@ %i@J?^ +ij?9P-mM?{I,?y1W@"@hGL @@`Q@`[B@`Q@`s@`Q@`帶@`Q@`vZ\@`Q@`W&@`Q@`G@4j~@4j~@4j~@3{@4j~@4E{@4j~@4n8[@4j~@4az)@4j~@4w@3 ]ce@3 >(@/`A@/GE84@-n@-G+@-Ǔݗ,@-&%S@-Ǔݗ,@-%@-Ǔݗ,@-O?~Ov_ح?ِ:?*[uƥ@`I?Ob@45+?Y2 ?7x\0?4pk>.W71)@4j{=@C@?Tk?Fά??Laf?8Z矣@h\@@O;@~$@O;@\M@O;@a@O;@2X@O;@A [@O;@Ԣ3@@bM@@l@@UXy>@@xl"h +@@˒:*@@qm@8*0U2b@8 >@3+ @3!-w2@3y7KƧ@3kQ@2u@2~vȴ9X@2u@2zu%F +@2u@2lN;?^*?vucʲ?/b?-i?rA:/?wb@?1j?HG^?wKv?-M?w{_?n%!?^?"`?@K/{?__C?X񄖆?/я@@@@@&@*???????SA}@?eF?f-ϝ3@R@HH? +4~:??:?zy @d\@@|nP@|nP@|nP@|tj@|nP@|@|nP@|a@@|nP@|&x@|nP@|&x@33333@3E@33333@2s@33333@2{@33333@2-V@33333@2s@33333@2a|@.@.@,tj@,A [@,wO;d@,w&@+p'RU@+p@+p'RU@+poiDg9@+p'RU@+p|?^Q5P?[e(?f_Ԋ@@@@@,@*??????SD?@?9dXc?1ٕB@|4@24R?Heb?2K ? V%4T?% `3j@s ;*S@@pV@pzI@pV@pI^4@pV@p I@pV@p=p@pV@pj~@pV@p@s-V@s-V@s-V@ss@s-V@sC@s-V@s,<@s-V@sD@s-V@sa|@4[~($@4[]cA@1hr@1n.@1KƧ@1 '0@1(@1'@1(@1b}W@1(@1<64?|O?M?1V?wX/8?.5?a1?}ѿ,?D.x?c#$?ݤ`h?=M?7&T+?y8#??6~A?{0? g?@8mv@8h ԕ*@5 I^@5e+@5{Ƨ@5~c @4h@4kC,{@4h@4h_G@4h@4k/V?^*?/>?Aa[?gٵV?wX?c+:X?[Xxp?C?I?J6b?>G]!?2;? G0?^?"x*=k?8k4?9j jh? )D)@@@@@@??????br"?^9?O{J0?npta@ +QI@ti?nK?< t?{I?tj%up@nE%@@ I^@ I^@ I^@ @ I^@9@ I^@s@ I^@R<@ I^@4m@:^5?}@:^5?}@:^5?}@;qu"@:^5?}@;"`@:^5?}@9@:^5?}@:kP@:^5?}@8*0@3_o@3y @0|hr@0Ar@/E@/3@/oi@/?@/oi@/oh@/oi@/&IR?}ѿ,?/)s?.Ү_ ?G?K!UČ?6J?| ?[ K0R?NJ?9~F?M?Qʾ? J?Ф? J?*|\/?? Ğ@@@@@,@*??????0 kh27"? 劓9`?'?"/Y@@@@@,@&???????aKTX8?I:岵Z?U D]td@G@ؠ.?hه?u.A ?3E`?9yO@eM-@@hH1&y@h;lE@hH1&y@hEn@hH1&y@hH@hH1&y@hH@hH1&y@hG_o@hH1&y@hGݗ@nP@I^5@nP@Mj@nP@:~@nP@bM@nP@.@nP@&x@6[~($@6MH˒@2+ I@2-@0-@0C-@0n_o @0nѷZ@0n_o @0n (@0n_o @0m,=?}?W[? ??ݶ\r?h|?W_?3a=?[ K0R?,& +\?>\?x9ξO?ȏ'T?gE=`?Q?`x? ?? +t?j@@@@@,@&???????L>R?Q.?Vs왮e?3b@hGY@U]S?k9?RCJ\|?NԊ$? @om2(@@M@n@M@a@M@Tb@M@3D@M@T@M@iB@JQ@JR@JQ@JS@JQ@JS ɫ@JQ@JQ Ʊ@JQ@JNp@JQ@JR7@5|Q@5L@1ěT@1+9k=@117Kƨ@11b@0YJ@09KR@0YJ@0T㧧@0YJ@0u]M?|b@?;?([0?|?'I'?磮R?|h2:?,9B?jz?n-?E=:?ge\?oR?î!?}_?9Ýdk?  3?{)@@&@$@(@<@6??????0P,x?!&?tdE?c3c(?+d?y8#?Q?`x?*|\/?Rv? +t@@@@@,@,??????!z5E?T>i:@ +@ +L?3й*?Bb?s?@?EmIk@f@@/@/}2@/@/ks@/@/1@/@/@/@/\@/@/ @š@ɳs@š@ר@š@јz@š@*@š@Q@š@.@3D@3@N@1=hr @19xC@0tj~@0(wg@0._o @0-z;a:@0._o @0*{@0._o @0*yQ?~Ov_ح?l(?r[?(#O?>X`?[PP; A@^/@^7 +@^/@^q'@^/@^]@-J#9@-J#9@,A7K@,4 @+1'@+"a@+@+d@+@+\(@+@+f n?^6P?j?@?@y[?E>)?Ŷ?bQ넛?B?!.$w?5ei?а?Io?bM]f?6H^4?p®MG?$: ?%ip-?a@@@(@*@8@4??????P'k?6Lv?CPo@: @^ܨNe?E:I?":9?*?=0I0@s ZM@@~"@@~"@~쿱[@~"@H˒@~"@G{@~"@}IQ@~"@}Vl @mffff@m@mffff@m@mffff@m@@mffff@mtS@mffff@mn@mffff@mw@5YJ@5YJ@2n5?|@2l@2t@24J@1u@1ѷ@1u@1|@1u@1Z?}ѿ,?b[?#}i?!#?uxY?WA?1j?M7F?Qa C?RLnj?7=^9?A_f;j? SF?.?]b?XW~?$?Rv@@@@@*@,??????;O?)?9V?yCH@VQ@m3 ?Y,?9,%ބ?Oz?|Y1R@gc@@t9Xb@z1@t9Xb@tG@t9Xb@{/V@t9Xb@u\)@t9Xb@vC@t9Xb@@k=p +@k9XbN@k=p +@kA-w1@k=p +@k:>@k=p +@k=-V@k=p +@k:@k=p +@k6R<6@72@71N;6@2?|h@2z@2>Vu@2?r@1 k@1y=c@1 k@1x@1 k@1 k?2}?gˣ?0? R?[9,?S{d?UbB2?\?-8?uX?4{?{P?A'_]?>?T0??`i=?zy@@@@@*@&???????6>DY?S T?Q0@zJA7@k:V`.?vA72h?mm9?uR?/@k|%Fr@ @y"@y"@y"@~vȴ9@y"@ufA@y"@xV@y"@~iB@y"@{5W@Z1@]/@Z1@X4֠@Z1@W1@Z1@Y|@Z1@V@Z1@U2a|@6,<@6x@3ěT@3Mj@3-V@3 C@2\Q@2[W>6z@2\Q@2Yk~(@2\Q@2Zxl"h +?Ol?x)n?0?GZ0e;?(i^?-/ge?}ѿ,?^1??v@b?#X? ?Z)?7}?,DP?T0?ۮetZ?1?l@@@@@,@"????????yg5&@gnp@ +@EQ@D/@EQ@EO@EQ@K҉@EQ@C,zw@EQ@D7@EQ@B@4@ᅡ@n@ᅡ@ag@ᅡ@$/@ᅡ@~5?|@ᅡ@ح@ᅡ@䎊@6H@6حU@2^5?}@2$ xG@1j~@1@13&@11o@13&@11:S@13&@11?|O?: ?9a?_?<_+fj?=?sD?V i!?~?G>G?W;zY?998?T0?G + ?m~Z_s,?ij6?v> ?)@Jq@@@@@*@,??????:@G|?,o?n88??/X?J?C SG?C SG@@@@@(@*??????G7/j?43XN?;-O@Fx˻@i?Tqf?[? ?69A`n@g`{pR@ @Zv@+C@Zv@T!@Zv@](@Zv@gJSS7@Zv@Y@Zv@Z@_TF@_zBg,@_TF@_KoE@_TF@_gYH@_TF@_D*>@_TF@_f=@_TF@_U@9-v@94.4@4W+ I@4]0/^@3tj@3AZD@35sh@3=V J@35sh@368p@35sh@38vRЯ?3N?T?7?d2f?Pݱq??N'P?31?B?PQA?4L9?z?-ͧG??>D&?rywK ?dX? +A35%`3@}Y=֔@M#=?c-ʓM?^%=%?,x?H2/@j57@@7K@7K@7K@ I^@7K@3@7K@ I^@7K@ě@7K@ѷX@w@w@w@wR<@w@ws@w@wTɅ@w@w|Q@w@w7K@0=:@0=:@*j~"@*]ce@)F@)ؓtj@(L/{K@( +L/@(L/{K@( +L/@(L/{K@( +L/?^Q5P? ?m?ƠJ-M?tKc?$?bM_x? ,C?NJ?1'7?tP*?Z,a?bMky?.+?s@a?͓E'?l&?@@@@@,@,??????B*??)!>Lamj@M=@wpZ?8 ki?ķ?m#bE,?Kh@s2@@R@S3333@R@SZ@R@S|@R@S@R@R@R@R䎊s@ffff@ffff@ffff@1@ffff@E85@ffff@S@ffff@]c@ffff@思IQ@3H@3p:~@.`A7@.D@-1&y@-1&y@,jf@,Q@,jf@,P{@,jf@,C&?|O?GA?&?? Y?2A?}?| ?%F?d0R?-I`K?IM?eDQQ?2Y0?.+?2Y0?XLL?f_Ԋ?b/bJ@@@@@,@*??????>j#?":~?@S2h@l1;?B}1!7?7 p??r?{@fo@@?|@-V@?|.@?|.@?|.@?|.@?|.@|hs@ [@|hs.@|hs.@|hs.@|hs.@|hs.@8!.@8@4E?|h.Mm@3~".Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,?m*H@8#@8:@8 >+@8I@8?/@8@8i@8@8S@8?\;.=@8 *@8p@8@8 @8 @?@9kR.@9kR.@9kR.@9kR.@9kR.@9kR.@4vȴ.@4vȴ.@4vȴ.@4vȴ.@4vȴ.@4vȴ.@8v.>@4+ I.Mm@3PA7K.Qn@2.NC,@2.NC,@2.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @E@gPɟ@E@g@E@Pm@E@ub@E@cW@E@@7XbM@7Y@7XbM@7Y;$@7XbM@7a9a@7XbM@7ZG*@7XbM@7\)@7XbM@7_9(@6!.@6P#Nl@1+@13$e@1Htj@1H\e@0@0 @0@0K;@0@0K?¨Sp*?Ę'}?6nX?7e?8\\?D\Z(?\Η?[L?&aD2?`a^?-?HX?@V;Q?)?S?#?I?2o9@@"@"@@,@*??????I?@'KXt?)s[t?"{H8@~0@7[O?IkyQK?B{MҶ?C3? -*J@i\ @@\G+ J@\[Ē@\G+ J@\PNU @\G+ J@\I'@\G+ J@\_M5@\G+ J.@\G+ J.@tj@'a@tj@樢G'@tj@ٓU@tj@rѠ@tj.@tj.@8*0U2b@8@0f+ J@0h@/O;dZ@/҈@/\ߤ@@/`[6@/\ߤ@@/]b@/\ߤ@@/Y+ ?}ѿ,?h?1f_?A%?\7?װ*w?|O?4 "?ܿ?M =?=d^?h,à? SF?2]7??ʪ?@n?+^@g<@@n@x@n@ᰊ@n@qi@n@PH@n@'y @n@)^5?@E@1'@E@/A@E@{J#:@E@B @E@?|h@E@f&@7mv@7F+jg@3!hr @3Fs@2A7K@2n/@2+xF^@1 k~@2+xF^@2Ϫ͞@2+xF^@1C,zx?A[F?cX?LAJ.?[? +=p?ե8*?Y͍_?8$ +"?VǷ?g(Z%?w{_?覲CU?M3 ?C'?'#g?wZR)w?srY? m9@@@@@&@&???????v-Ҁ?!)?MxA1?gçdi@ Y@A?i*Lz?1Fg?~ ?B6`@c*@@Zv@Vu@Zv@Qhr @Zv@Ohی@Zv@O4֡b@Zv@N!R@Zv@Vȴ9Y@z.O@zI7Kƨ@z.O@z)^ @z.O@z)@z.O@z5*1@z.O@z,I^5@z.O@z6B@7@@7N;6@3!hr @3F]c@2Htj@2=O;dZ@1@1M@1@1ٓ @1@1۲m]?)T?bDҼ*?Q"Ě%?]]gQ?19?zWmo?ʎa]?ѿ,?S`G?fa]G?drK?f٭'?Uu6EE?J>??k2m?,6z@)v@)$tS@4䎊@4S&@1+ @1_F@0"-V@0"ᰊ@0𖻘@0%@0𖻘@0}Vl@0𖻘@0}Vl?|O?m0?Gy??r*?STS?=W?| ?r/B?^ o?y҇??Q?y8#?˛͇q?W ?2?їJ?@@@@@(@$???????D. HKޢ?,<Ч?19^@W3@)5Y?LFgz?QOA3?VLiW? vmt@fcTF@@;dZ@ ě@;dZ@Ѩ@;dZ@/UX!@;dZ@sFI@;dZ@ϴ(lQ ?(~?Қr(?qW?}@TΥ? ~5??*9?lt??X*?o?25?A?hM5?#Ŝf?ləd@@@@@2@4??????P?5"?E S?I3#H)|@[«@Q!U`?et?iGH +?ncXZ? +ϸÁ@e֌x:y@@+E@+9Xb@+E@+!.@+E@+3@+E@+XbO@+E@+!@+E@+=@V;dZ@V|h@V;dZ@V u"@V;dZ@VW>6@V;dZ@V@V;dZ@V($ x@V;dZ@V%@7_o@7ᰉ(@1|hr@1@1PA7K@1PA7K@0n_o @0n (@0n_o @0nc @0n_o @0n.2?Br?m?ě?G?'ř ?װ*w?ٛP?7fps?2'?@[*^?UBi?N`?6P?G + ? ݎ8?!ˠ*(?ad|?M684@@@@@,@"???????>¨ ?+0?Ek??987g@+w.Y@V?f@?W-ad?v)?F7M@n;@@yXbN@u\)@yXbN@y@yXbN@?@yXbN@s|@yXbN@zQ@yXbN@u!T@pR@qě@pR@pr @pR@pv@pR@ptj@pR@p,<@pR@p@8~($@8u!.@3@3S&@3t@3*0@2@2!-w2@2@2tj~@2@2n.3? ?(.?wm?(+Zk?&x?ĵ^M?#[?@p?S1z? +@pm6?m0?pT?\z|?Ǒ8E@oC@@ Ƨ@ L_@ Ƨ@ ~(@ Ƨ@ M=\@ Ƨ@ }@ Ƨ@ _/@ Ƨ@ D'@G{@ě@G{@]^Q@G{@7@G{@\v@G{@ I^@G{@`B@4 xF@4Ӳݛ0@0+@0/oz^@.&x@.@,873@,8|@,873@,8¤T@,873@,8 ?|B &?q?lȼ?-M+?XkZ?1 +qV?|b@? ?F{r?2Nk6y?a$d?VTL}?I? ?I??7is\?Vi@@(@$@(@:@:??????$5 ?'-?>@>D@ ƒ@?!*c#$?A=7?P%#?J.#gdU@f51@@A7L.@A7L.@A7L.@A7L.@A7L.@A7L.@-R.@-R.@-R.@-R.@-R.@-R.@87@.>@4hr.Mm@3KƧ.Qn@2:S.NC,@2:S.NC,@2:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @1@M@1@#@1@3@1@!-w2@1@ k@1@4m@@`A6@@<64@@D@@u@@#@@u@7>6z@7_o@2^+@2\@2M-V@2H@1Eu@1@oiDg8@1Eu@1B3@1Eu@1B I^6?UbB2?:aGS? +NA3?Att?'`? µ?2}?wi*?3j_?u]?H<??B`?D1#Xj@ƥI@)F6?^p{ ?gw/-?|>iH?g+@k@@nP@-V@nP@\@nP@Mj@nP@_ح@nP@E@nP@@S@j~@S@u%F@S@0 @S@bM@S@^5?}@S@)y@4@4Mj@0S@00 @0t@0O M@0~($ @0>6z@0~($ @0rGF@0~($ @0*0U2a?|O?°R;?K]4?q@v?1 v?P(@O@I("@O@V@+_;dZ@+_;dZ@+_;dZ@+^;L's@+_;dZ@+^h>@+_;dZ@+]xY@+_;dZ@+_I@+_;dZ@+^%ͳ@1^H@1^Vu@+Ƨ@+달q @+O;dZ@+^h(@+z)_@+zAM^@+z)_@+y`6@+z)_@+zS?^6P?f^?F??XkZ??bMn?V?j?7iU?5V?N)h?bM?:d?r{e{t?՛?mՙ@7+S.Mm@6`A7.Qn@5xF^.NC,@5xF^.NC,@5xF^.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 "@@az@@߸3@@x@@~2Q@@o@@t|.@ I^@͌ݬ@ I^@ڡڍ@ I^@ջ-@ I^@L,@ I^@ S{X@ I^@d3@8[~($@8[Xz'@3^5?|@3k6@@2`A7L@2 @2G k@2Oj@2G k@2Kk@2G k@2L:G?%h?>EG?wy ?6J?|yl?+ww?| V?ۜ,!?C^]?@Et1?BE?]?":,?R p?)G?6m?m?$^}V@@&@&@@0@0???????M?N,C?hiVٗ?\yQ'/@J@[? +Ư?ufv?>i@wA;@lű1@#@$/.@$/@@@$/@d@$/@@$/@^ +@$/@Ft@cݲ-V.@cݲ-V@c1@cݲ-V@caf@cݲ-V@cQ@cݲ-V@cl"h +@cݲ-V@cbM@904m8.>@4O|hr@4H*0@3~Vu@3}K]@3!.I@3 (@3!.I@3`A8@3!.I@33@8J?Q&g4?go]?IW`g?|K!\?V@8J? {?@N?!ϓ?' ?O[@8p?ɅoiE?bR?/?Oh6c?3@@@@$@&?????$@,1&@+R@,1&@Q@,1&@ qv@,1&@GE8@,1&@[7@,1&@@p +@-V@p +@)^@p +@r@p +@bM@p +@@p +@P{@5O M@5e@3 ě@3y"`@3`A7@3sF]c@3OO M@3A_p@3OO M@3C@3OO M@3C&?| ?I@3&+ J.Mm@2M-V.Qn@1.NC,@1.NC,@1.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 &@Bx.@Bx@BQ@Bx@B@Bx@BH@Bx@B@Bx@B@33333.@33333@,cA@33333@0)^@33333@-\@33333@$M:@33333@*W@9쿱[W.>@3S@3"h ԕ@2t@2JL@2z,<@2|hr@2z,<@2u84֢@2z,<@2v '@8J?4$?GM?tN+6?؍i?u}I@8J?Zk?cu%+?tm>?#\?º@8p?Q?8*??NVC&?R4@@@@,@*?????'@S@@S@S@S@e@S@S@S@,zx@S@F]d@ݲ-V@Q@ݲ-V@ce@ݲ-V@($ x@ݲ-V@ѷ@ݲ-V@b@ݲ-V@($ x@6cg l@6ql@-$tj@-$?@+Ix@+IoiC@)ߤ@@)(^@)ߤ@@)ߤA@)ߤ@@)Q?1j?3i?m?ƠJ-M?tKc?$?F/P5? ,C?/BH?; $?%y*=?X78?6~A?3;?u@>N ?͓E'?O|q?a+@@@@@*@,??????dZ?DU4?@4^+@4lC@3KƧ@3[҈@3+xF^@2Ұ ě@3+xF^@2?@3+xF^@2Ԏqj@8J?-ieZ?pZ?3}s?K?7e@8J?]veb?4Z~?ZhB??jy?צ75@8p?Ãx?}Tz?ނ F?Oh6c?!S{uu@@@@,@(?????)@+R@9@+R@@+R@"7@+R@u%F@+R@!e@+R@(K]d@\)@@\)@'/@\)@쳶E@\)@p:@\)@jf@\)@ѷ@9,<@9䎊q@4?|h@4C@34tj@35S&@3m8@35Xy>@3m8@3')^@3m8@3(*0?F^S?[?U#?%?U7t{V?iUv]?F/P5?ٔ!x?S1z?/{?g> b +@g#{[N@+@8XbN@8"@8XbN@9mL##@8XbN@9>&@8XbN@97Pb@8XbN@9 +`Z@8XbN@9#gT@dZ@dZ@dZ@֠8@dZ@ @dZ@l@dZ@!9 @dZ@8~@1@@1?⒮@-tj~@-'@,E@+'ﴞ^@+jf@+C*)@+jf@+\Zw~?Q?!A +m?Gϵ'?fW?ad|@@@@@"@,??????E1Q? Q?02?& +;[@R }&@8IO$?O)4A?G2zWL?xZN?^\E@f٘E@.@'7K@'7K@'7K@'TɅ@'7K@'@'7K@'|Q@'7K@'䎊@'7K@'[7@l@l@l@ԕ+@l@d8@l@ @l@l@l@ԕ*@0_o@0_o@+-V@+<64@*;dZ@*O M@*L@*K҈@*L@*L1&z@*L@*LI^5@?^Q5P?3i?,fC6?ƠJ-M??:?bM_x?u߿?j?4ډ3?@?R g!ڢ?b@?.+?8*?!ˠ*(??a+@@@@@*@*??????B:(>k?2~(y|>Q +@'1@?B9I?Av??n?37@s 1j@/@KƧ@x@KƧ.@KƧ.@KƧ.@KƧ.@KƧ.@@ֻS@.@.@.@.@.@8~($@8[6@5S.Mm@57Kƨ.Qn@5V!.I.NC,@5V!.I.NC,@5V!.I.NC,?UbB2@8#@8:@8 >+@8I@8?A[F@8@8i@8@8S@8? 1@8 *@8p@8@8 @8 @?0@o-@P=@o-.@o-.@o-.@o-.@o-.@笋C@@笋C.@笋C.@笋C.@笋C.@笋C.@8:@9?W:*@4 I^.Mm@3V.Qn@3s&.NC,@3s&.NC,@3s&.NC,?]@8#@8:@8 >+@8I@8?AH=@8@8i@8@8S@8?Lw@8 *@8p@8@8 @8 @?1@_[S@_^5?|@_[S.@_[S.@_[S.@_[S.@_[S.@&ffff@!G{@&ffff.@&ffff.@&ffff.@&ffff.@&ffff.@7Y*0U2b@7UoiDh@4+ J.Mm@4b-V.Qn@3䎊r.NC,@3䎊r.NC,@3䎊r.NC,?Ol@8#@8:@8 >+@8I@8?3a=@8@8i@8@8S@8?c@8 *@8p@8@8 @8 @?2@`o-@`p ě@`o-@`nO@`o-@`o M@`o-@`oV@`o-@`l[W@`o-@`l_@ t9Xb@ tG@ t9Xb@ t$@ t9Xb@ t*@ t9Xb@ vE@ t9Xb@ u '@ t9Xb@ u=@4䎊@4[W>6@15S@161.@0-V@0 @/At@/_o!@/At@/hۋ@/At@/O+@8I@8?@8@8i@8@8S@8?{@8 *@8p@8@8 @8 @?5@$Gz@$X0y*@$Gz@$dO*@$Gz@$͢`@$Gz@$g@$Gz@$I@$Gz@$|@@@@2"@@A9t@@ @@KsK@@Xdc 4@8䎊@8;h@5r Ĝ@5@617Kƨ@6qL5@4:S@4fLoj@4:S@4;$@4:S@4 ? MV{?N+9G??J?~}6?t2n?ܓK3??2;Z?!|/? .߳Q{?l1}?킑?B1P?Xz)??/e?lPR{?SF"@@ @&@(@<@9???????j +?x=l?vG[J?gvW@$wc)@e1?)Ӌ %?Zt;!?4,? f@fh飤@6@2;dZ@25?|@2;dZ@21&x@2;dZ@274@2;dZ@2zxl!@2;dZ@1o@2;dZ@1ѷ@/9XbN@/6ȴ9X@/9XbN@.#@/9XbN@.9Xb@/9XbN@.n.@/9XbN@.y@/9XbN@.IQ@8@8+jg@43S@4a@N@2ߝ-V@2F +L0@2_o @2fB@2_o @2L/|@2_o @2?ϱQm?vucʲ?njĕx?TnE?[5?VFNLG?oC?t?sw)?2}?KN?fF7? b?Az?qn?hc?Xk?8N0@@@@@,@*??????v>hi ?Z{?u'#@2@..?sV}z?iC?V.f?T|X@jEp @7@:G@6+ @:G@D/@:G@s@:G@#,zx@:G@*ڹY@:G@)x@3333@n@3333@s@3333@S&@3333@xF@3333@ ]c@3333@Z@8 ]ce@8kP@4hr @4qiB@4W-@4'_o@3@5@2?|i@3@5@2wkQ@3@5@2ݗ,?q!U?}?e?ȉ?=U?')?% ?'??7fQ?j`cq?V⌰?zny-g?; y?qePQZ??**Z?k@@@@@(@(??????g݃?|meZ?Vs`z7?dC'@.& $@?v25/?/]1?n*P? +7h@i}R@8@Jv@J"`@Jv@JPH@Jv@J(@Jv@J~@Jv@Jl"h @Jv@J @XbM@XbM@XbM@WO;@XbM@S@XbM@XQ@XbM@V@XbM@V@4@@4_o@1=hr @1>zG@0KƧ@0K]d@0(@0(4֡b@0(@0(*@0(@0(?| ?_?"?Qui@'-@EA@3333@f@3333@O8@3333@r*@3333@GP@3333@(@3333@!@8B䎊@8B)@@58r Ĝ@5>H2@4-@4֔@4QiB@4M@4QiB@4JGzg@4QiB@4I0 I?Äp?D]?i ?lGD?Et?Gτ? MV{?hO6?G|?q? fg?eVC6d?}й?*?݌U?K? t_?f"7?(@@&@"@(@5@:???????wMUB@?n ?Q>O\@EU5V@aY?FZ?m:b@J?T@k)0j@:@ؓtj@DKAw@ؓtj.@ؓtj.@ؓtj.@ؓtj.@ؓtj.@]v@]"~@]v.@]v.@]v.@]v.@]v.@7uS&@7u w@5#.Mm@4PA7K.Qn@4Q.NC,@4Q.NC,@4Q.NC,?Tg@8#@8:@8 >+@8I@8?f:@8@8i@8@8S@8?M6~@8 *@8p@8@8 @8 @?;@ݼhs@ݻD@ݼhs@ݿZ*@ݼhs@ݼ@ݼhs@ݻ_@ݼhs@ݹѶ:@ݼhs@ݸ!>@czH@cn@czH@c/@czH@c)8'@czH@cQ@czH@cR%@czH@c@8}:@8Ht4F@4.5?|@41 k~@3$j~@3$za@3 +0U2a|@3 /@3 +0U2a|@3"Q@3 +0U2a|@3 wǘ?"?NJb4?\Уp?h?[P"mr?@;#?I ?P?5QT?_ڲZ?X1-?^t٤C?*DU?^2+?$G?f?>?'^`N@@&@$@&@8@0??????BlULJ?5Q0?WCiD,F@ݺZME@c2?P?k(&;Z?f-?*@p}U@<@wKƧ@w +=p@wKƧ@wd@wKƧ@{,mIm@wKƧ@~(lQ ? £?>C,4?-! )m?+-/?& ?F^S?WA?l{9َ?{P?cz?;0>SU?\yn? bF#@ڞ|@8*?~6Q=?8vQ?S t?fE@mE@>@]/@]E@]/@]+j@]/@]K]@]/@]/@]/@\C,{@]/@\쿲@u@F@u@e@u@+j@u@$@u@D@u@Ϫ͟@6>6z@684֢@1hr@1'/@/nP@/74@/PH@/ +=q@/PH@/ ě@/PH@/33334?|O?Z?U#? Y?G?W_?| ? {?ܿ?EP? f? R?}??|׿pZ?%ϑ?ˢL1??\@@@@@,@,??????5 +?0?}m?ewx?73A@]@:@F@3 +0U2a|@3 _ +?cD?pvoK?>kj?؄e?1.?cZ? +?sP;?uq?baU?A?Aф?ghZS ?b(!I?8: If?$<B? H?U#ǖ@@(@*@(@2@5??????y&d5?T|?D<3@ܻNި@iZb?v^%@K ?[׬|?jrBt?›e@m@@@m@E@m@ϐ@m@$t@m@ߤ?@m.@m.@/B\(@/X@/B\(@/.Mj@/B\(@/@hۋ@/B\(@/;lE@/B\(.@/B\(.@8]ce@8W>6z@43S@4m]@37KƧ@3C\@3!.I@2K]@3!.I.NC,@3!.I.NC,?Ol?|?i[?[@{@8I@8?^*?+M??ۀl @8S@8?ji?YW?+k?u4@8 @8 @@@@????A@';dZ@' Q@';dZ@'&@';dZ@' qv@';dZ@'O@';dZ@'Z@';dZ@'@A7L@@A7L@ +=p@A7L@Ԣ3@A7L@$/@A7L@Xe@A7L@ӶE@8*0U2b@89Xb@3S@3ۋq @3)"`@3!4J@3 k@2v@3 k@2@3 k@2"`?F/P5?#T?MŴ?'$5?̺"h?5^Y?Cy3?&dU(?5q/? ?$uA?2`?E?5 g?v'X?E^u?ܔ~T?7"U@@@@@(@(??????#ֹvx?SlW?Խd@' ֝@Ydm?s(S?)?#ÝBϙ?7K@@i@B@Z@䛥T@Z@ݗ@Z@.@Z@ں@Z@g8~@Z@Z@ I^@\(@ I^@d@ I^@@ I^@oh@ I^@e+@ I^@ [@3@3wkQ@1ԛS@1Ԣ3@1tj@1ݗ+k@1@5@174@1@5@1n@1@5@1&IR?|O? ?6z@5Gy @1pěT@1o?@1A7K@1iB@03&@0-(@03&@0-(@03&@0.O ?Us@@@@@,@(??????ge?IcےP?B~S?\;@5@'N?b8ym$?7 t!?ϰM$?v24/@fJ;@D@c +=q@c +@c +=q@eo@c +=q@e`@c +=q@c>Y@c +=q@d]|@c +=q@b3@c +o@c +@c +o@c r@c +o@c vK@c +o@c ]c@c +o@c +}Z@c +o@c +(@3 D@3 ,'7@1?|h@1 @1tj~@1 @08D*@08[@08D*@096@08D*@0:,?}x9Oa?7y%?e6?| V?!_a*?Pvo? X?ݞ2?bMn?ّ%?^nu?Z<??j9?k _?bQ? P?xKh???\*?r {%u@@ @"@ @3@1??????Hn:?2?&A4z?$4@!@%?5trh?3!γ M?f&$T?_Uoط@s+O`@F@RnP@RnP@RnP@SPH@RnP@R@RnP@Rs@RnP@R@RnP@QiD@`|h@`|h@`|h@`G@`|h@`$@`|h@`@`|h@`F@`|h@`F@0O M@0O M@*~"@*~"@)ΗO;@)ΗO<@(b~@(~($ @(b~@(~($ @(b~@(rGE8?OW?{j?!!׋7?/?Ot?:?;0? C`?}?3.Yl?@?PS2K?!? ?q6tN7?avh?#.?O|q?@@@@*@,??????=s@X?in}>~'`@RG@` Ľ?%иg[>FVN?G##`L>է5@sU@G@CMO;d@CMhr@CMO;d@CNH@CMO;d@CMhr@CMO;d@CM@CMO;d@CKq @CMO;d@CKP@W +=q@W +=q@W +=q@W}V@W +=q@We+@W +=q@W@@W +=q@We@W +=q@W.C@/?@/A [@,j~"@,64@,O;dZ@,qu"@,-w1@,n@,-w1@,҈q@,-w1@,X?_?{j?,fC6?XQ>? 9?LI?bMn?MN ?ܿ?Kd]?ߒh!?Uw?}+,b?u?|׿pZ?8 ^?B ?A,}@@@@@*@(??????RhOr{l?0!u ? ej@CLo@W+T??#Tm?=?x1o=?1~fla@s +M@H@ؓtj@@ؓtj@ٌ~(%@ؓtj@+@ؓtj@J@ؓtj@@ؓtj@F]@\)@v@\)@!@\)@!@\)@4@\)@4@\)@4@0YJ@0YJ@)j~"@)PH@(E@(+jg@'N;6@'ѷX@'N;6@'N;6@'N;6@'N;6?_\p)?1?N?G?@ A2?ˡK?bV,?5CQ?~Q?6)}?ѡb??R g!ڢ?bMky?~('?oܧ?avh?#.?#.@@@@@,@,??????Cd>=?. >X)@|s@-?=8w7>^|?ud-1> +^S@sy@I@7K@ +=q@7K@ح@7K@h ԕ@7K@R<@7K@b}@7K@ح@fffff@i7Kƨ@fffff@g@fffff@i@fffff@g_o @fffff@g_o @fffff@f@6۹~($@6W>6z@1=hr @1?m!?E 8?ˢL1?2[s@@@@@*@,??????M;fA'?(?֠Ag@_ہ@gt,?ElZ?3GC}Ս?ai :?n=K@j$J3@J@Btj@BnP@Btj@B8YK@Btj@BϪ@Btj@BX@Btj@B@Btj@B!-@cS@c%@cS@a.H@cS@aG{@cS@a.H@cS@a|P@cS@b I^@6+s@6* @0+ I@084֡@0Ctj~@0@'RT@/3PH@/-hr!@/3PH@/-qu"@/3PH@/-(?3a=?]??Kǡ?`?f]G?F/P5?HG^?tw?,~[?M??YE?Ϸ+?W ?hB^?M684?ĭ@@@@@,@,???????OU:×?5&@d[?2Eg@B՘@beG?SlXL?@X]v~?Q?&H@jҒa@K@;dZ@0 +=@;dZ@8YJ@;dZ@;q @;dZ@;qu"@;dZ@A:@;dZ@<ߤ@1@1@1@[7@1@J#9@1@;dZ@1@qu"@1@,<@7֚,<@7ݑhr!@4|hr@4 (@3."@30@2@20U2a|@2@2@2@2Xf??+!?{?IW`g?&tq?@?qn?D?Qc +?l Ĩ?~0d?d ?[?[ș8?ʭ#г_?J?Q?]?H@@@@@,@*???????j'T-?@AP?PiӀ7b?G׾>F@9H@ "?kF7n?g$\/ rU?WP?y@i5(%@L@@\(.@@\(@@ +=p@@\(@@ @@\(@@ @@\(@@O L@@\(.@rk I.@rk I@ri*0U2@rk I@rtO @rk I@rt@rk I@rn.2@rk I.@8YJ.>@4S@4䎊q@3`A7@3~҈p;@26z@2C]@26z@25Xy>@26z.NC,@8J?ϱQm?UD?Kǡ?GU@8@8J?d~?fj$?L?{W@8@8p?J.?_?Oc?w,@8 @@@@*????M@ Q@ lD@ Q@ !-w1@ Q@ @@ Q@ +!-w@ Q.@ Q.@P`A@?cR@P`A@yXbN@P`A@4SL@P`A@o@P`A.@P`A.@7:@7cF@4|hr@4Y|@3gKƧ@5SE@2QiB@12W@2QiB.NC,@2QiB.NC,?5,?P?i?ӓ]@8I@8?E[i)?1?%U??ӗF)okN@8S@8?R}1?d_?:S3V?~*@8 @8 @@@@????N@QR@Q+ @QR@Q@QR@QA [@QR@Q[@QR@QXe@QR@Q[@*WO;@*\j~@*WO;@*YY@*WO;@*["`@*WO;@*T3@*WO;@*^Q@*WO;@*_@8v@85Xz@3kS@3i @3$j~@3!s@2xF^@2fffff@2xF^@2*0U2b@2xF^@20U2a|?2}?DE?'?J?&?!w?A[F?I?fj$?,~[? ?lӪ<?7#!xv? DS?lR?VED?ٔ!x?^^ω@@@@@$@(??????*p?@\?21y6?Z.5$@Q7@*ZP +?SF}?x93Nko?d\?J ;@j xK@O@d/.@d/@[ռ@d/@a@d/@hǒ@d/@jޗ@d/@]D@:p +=.@:p +=@: +}"@:p +=@:T@:p +=@:mޝ@:p +=@9}*-@:p +=@:{^@2|Q.>@,-V@,_Fd@*rnO@*X;@)L/{K@)@7Ȼ@)L/{K@)u?@)L/{K@)B4@8 +Ny?÷&R?-?1)?\'8? *vL@82r?4L?^p@?o?ȎB[0?PR,S@8L?laé?>xLp?ČAv?J{?5@,@,@0@3@8?????P@\G@\Q@\G@\+@\G@\|i@\G@\^5?|@\G@\@\G@\ᰋ@5`A@5`A@5`A@5@5`A@5XQ @5`A@5)^5?@5`A@5Q@5`A@5}Vm@7|Q@7u%F +@3J^5?|@3GzH@3`A@3 +=p@1O M@1@@1O M@1ߤ@@1O M@1̋C?|O?ƿ57?WD@?Uyu#?>C,4?nM?}ѿ,?,T?J?RLnj?l{9َ?vMUu?6E?6?o?Gϵ'?x[:?ad|@@@@@@??????a(?dt` +?@?eoćDj@\71*@5=v?`ϑ2?XR]4?˳<@<*@fr@Q@+@|@+@@+@ޛ@+@@+@"3@+@D@@5@@0(/@@7f@@T @@hNs@@}`<@9cg l@9f'@6}hr @6j26}@5K"`B@5G͝@40@4+ZJ@40@4.vv)@40@4)2?anñ?(?JFvY?^W?)b3?#@?CbyV?eV2?t%I??wo? pA?*??_xҮ8?eX?I?^b+@@*@,@,@5@7???????dʤ?H9?r@2zb@5 ?i +9?KYjP?ҿ'U@ OE}r@gDH]@R@+^Q@+^@+^Q@+Y.@+^Q@+^fz@+^Q@+bu%F @+^Q@+Su@+^Q@+YH,@p +@#@p +@@p +@4@p +@e>@p +@Ǥ@p +@t@6:@6 Ⱥp@3 ě@3wd@3-V@3Ջ@2,<@2h@2,<@2gN@2,<@2?| V?nR?r6x?tf*?Anz;?o^?eXW?_]?5Ey?!Aa*?]Ql?|p7%?` v?S ?ݳKخ?t{i?)`?Wr@@ @(@*@1@2??????W4Sӥp?Rmf?Se@+[v@c?s?Nk߹?svWh?ւ5?t)95@f @S@@ C@@㯷@@r @@ĺ@@p +@@F@R@ƖH@R@ĒS&@R@V+ @R@BѸ@R@5?|@R@ +o@6@66@2hr@1h@1`A7@0m\@1~($ @0u@1~($ @0_o@1~($ @0sPH?I'%?'gjFs?#?l,I?l?XE%:?ɱb)Q?? >?ʻ1 ]?0/f?lINՄ?>?'{%M?HFOu?HW ?l&?b#@@@@@@???????n &ފ?+eg?*|@'ù@Ս?(SI?.@:9B@S-4D@l#߉@T@vȴ9@@vȴ9.@vȴ9.@vȴ9.@vȴ9.@vȴ9.@T@@T.@T.@T.@T.@T.@7s@7+j@4hr .Mm@4q7Kƨ.Qn@4Eu.NC,@4Eu.NC,@4Eu.NC,? @8#@8:@8 >+@8I@8?Ol@8@8i@8@8S@8?xȟ@8 *@8p@8@8 @8 @?U@9Vu.@9Vu@9W@9Vu@9T@9Vu@9W] H@9Vu@9_eQ@9Vu@9\磔@+.@+@s*@+@7+=|@+@ S@+@z7Pb@+@黅@2䎊.>@/"`@/UP@-E@- @.@.+)@.@.% F@.@."O@8 +Ny?N"?bT]u?6ۊ/?tA2?@82r?Oۡ?x?[ ?Hr`?Eг@8L?,CQ??r ?/fD?$+@@$@"@:@6?????V@,A7K@,B`B@,A7K@,%1@,A7K@,:F@,A7K@,&@,A7K@,1@,A7K@,57NL@"1@"@"1@" Ri@"1@" T;r@"1@"uU@"1@"{@"1@"x@5|Q@5@2ԛS@2A4@2ttj@2w)@1@2g̅@1@1l-@1@2_Չ??ˡK?bV,? ,C?LE?@[*^?IM?X78?cPQ?.+? SF?':?l&?Ѐ>(@@@@@,@,??????GXR8??P ?y9@Bz@MF?+.*M5? $D'?Rق@?8lX[.@s@Z@ +=p.@ +=p.@ +=p.@ +=p.@ +=p.@ +=p.@glC.@glC.@glC.@glC.@glC.@glC.@8L]ce.>@3\I^5?.Mm@3Htj.Qn@2 [W?.NC,@2 [W?.NC,@2 [W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 [@Ƨ@̋C@Ƨ@}Vl@Ƨ@ڹ[@Ƨ@RT`@Ƨ@0U2a@Ƨ@̲@0`A7@0&@0`A7@0x@0`A7@0@@0`A7@0K]d@0`A7@0C@0`A7@0x@6*0U2b@62W@3 I^@4[6@3~"@3N;@2ޫ6z@22W@2ޫ6z@2N;5@2ޫ6z@2A [?|O?Z.?2~?S0H?"m?S{d?A[F?6c?_@?X}iQ? 7?lӪ<?W Z?eg?zny-i?w%?DV?ٔ!x@@@@@,@(??????7#?QM[?Ar[yq?FLЃ!@lA܁@0?ch?fgǘn?ȧK ?{Q'@i@xWC@\@hx@h+@hx.@hx.@hx.@hx@h},@hx.@~ Ĝ@~޸Q@~ Ĝ.@~ Ĝ.@~ Ĝ.@~ Ĝ@N!R@~ Ĝ.@8g l@8e+a@5TS.Mm@4V.Qn@4h.NC,@4h@4~$t@4h.NC,?{<@8#@8:@8 >+?NMwE@8?UbB2@8@8i@8?@8?\[P@8 *@8p@8?SrY@5@8 @@$??]@fXbN.@fXbN@f\)@fXbN@f?|@fXbN@fܬ1'@fXbN@fǻ/W@fXbN@fE@fffff.@fffff@p|@fffff@oA@fffff@_;dZ@fffff@q@fffff@vz@9~($.>@4?|h@4:S@3"`B@3Ov_@3QiB@3q:S@3QiB@3oH˒:@3QiB@3kQ@8J?7?mq +??h?Ñ$|?Ylp@8J?-c?F?wxR?s~?@8p?}±?zk 3U?f?a?60lP@@@@,@,?????^@x@ +=q@x@O@x@C@x@x@x@~#@x@L/@^j~@^E@^j~@^lD@^j~@^"@^j~@^"@^j~@^hs@^j~@^p @8쿱[X@8 _o@3+@3 IQ@217Kƨ@20҈p@1ce@1H˒@1ce@1q @1ce@1cA \?sD?}d?FB:?_B?oNŒ+??ϱQm?dx/?Rs??UBi?kj? f +?fb?*wjs?,|?/̽`?ܑ @???@@???????XZQ?$U^?&x9@x @^BY0?H&m%?>؝eO?Id^?d(7@q(V +@_@#ȴ9X@$ҋr@#ȴ9X@$]@#ȴ9X@#S/I@#ȴ9X@#|@#ȴ9X@#L4;@#ȴ9X@#$@:e`A7@:VC@:e`A7@:5_aT-@:e`A7@:JAh @:e`A7@:F@:e`A7@:29&o@:e`A7@:9S̀~@87@@8=M@3^+@3M J@2)"`@2+?@1@1A<2[@1@1OS @1@1cKo?en?'AU?ܝLl?-,?QN0P?Ht!?p ?u?%7*V;?qD?=D]?Aǫ?VXl? +&}?jd@@*@(@,@;@:??????k{km?L/d?M@#;qP@:C?hR?j{ۅ?eh'?l`P@k_큊@`@O;@?|@O;@!R;@O;@p:@O;@m\@O;@"7@O;@"\(@:G@8Q@:G@6@:G@B@:G@J @:G@@D@:G@H9X@7H@7҂@4@4^5?}@4!.@3j~#@3XbM@36z@3#E@36z@3!.H@36z@3vȴ?NIɮ?S?괰E?ׅ ?IJ j?EeX?)T?URZ?_S?ѯ%?3&?J佪^?+QK?4?~x?42?n$?Qh@@@@@@,@$???????e ɱj?jS ?C2?Ruﲬ@Jh@CQ%Dr?`H?vv_?–i-? @C@y(@C@҂@C@@%%@C@,/@6>6z@6@@2ahr @2\5f@1ttj@1piJ@10U2a|@1k)yA@10U2a|@1U]@10U2a|@19??Ƹ^ ?ZKbn?(y?lNR? 9N?¨Sp*? \ +?N?G!:+@?g!r@11@*?g=Ȕ9?yw?ק/l@:\@g=0@c@j~@@j~@I@j~@G~$@j~@zs@j~@JS @j~@?;@Z@(@Z@nJЧ@Z@“\_@Z@~Z@Z@a@Z@@8O M@8B)@3\I^5?@3mc@2j~#@3z=6@2J0U2a|@2`5d§@2J0U2a|@2FuJ|@2J0U2a|@2C}B?~?J?Lp1?{6k?ء?Y^z?lz)m?iة?RÚ/q?=E?%č?7gBU?V8?"+y ?T\y?6'F?`ɀM?;nnL?6Ҁ@@,@$@"@0@1??????i]?z`2?/?NxD^?Sq\@5~@8}?r\?Tm[?R5UZ@(Y{d`>@mxjR@d@!O;@!n@!O;.@!O;.@!O;.@!O;.@!O;.@r @bM@r .@r .@r .@r .@r .@8O M@8;dZ@5 I^5.Mm@47Kƨ.Qn@4xD*.NC,@4xD*.NC,@4xD*.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?e@dZ@|hs@dZ@@dZ@5?|@dZ@E@dZ@,<@dZ@"@{T@{e`A7@{T@{e@{T@{Z@{T@{7K@{T@{@{T@{@N@6*0U2b@6_o@1c@1b I^5@0-@0fffff@/#9@/lC@/#9@/)^@/#9@/_o?]?4L?U#?:Z2b?oNŒ+?װ*w?]?{c?A)N?RLnj?q1At?ٶm?*wjs?u/X?=Cb? ??2[s?ܑ ?@@@@&@??????]>li%g֜?AjĦ?2)޿k@܄@{z\L?PTNSL?ApL?.m?xr@sS@f@t@n@t@  @t@`K:@t@_@t@Z@t@@s(r @s(V@s(r @s,@s(r @s9{@s(r @s,]x!@s(r @s#7(@s(r @s0R@6#g l@6"?$@2}hr @21h@@1A7K@1%7@1Y~($ @1OƕDS0@1Y~($ @1Kd@1Y~($ @18i ?~?J?s3O?8?:0b?X"@L?ZIP?}x?*J?I/?9XNu?ٔ!x?->t@@@@@*@*???????e?\IJ?O͍&$Y}?kfZ@q>@8tE6?gAkU?1?ɫ[?iq@a؝\K@h@V.@V@j@V@BO:@V@rjX@V@=^v}~@V@ "@^5?|.@^5?|@@^5?|@|WF@^5?|@`儭@^5?|@̑YA@^5?|@X@@6 xF.>@48r Ĝ@3wkM@4t@3c':@3J0U2a|@3j˹v@3J0U2a|@3'%=@3J0U2a|@3-oO\@8J?݌[?lqa? {?2?u$a@8J?Tɫ?/6Z?t{ ?ϲU?( @8p?1ԁ? F?a?>hi?Ś@*@$@(@4@3?????i@|-V@|Ƨ@|-V@{Q@|-V@{[X@|-V@{M:@|-V@{p@|-V@{q4L@;dZ@&x@;dZ@+j@;dZ@)^@;dZ@@;dZ@˒:@;dZ@u"@5,<@4$tS@2r Ĝ@.S@2 "`B@-(p:@10U2a|@,OiDg8@10U2a|@,LC@10U2a|@,N.2?=fA:?C#%??ᕮ0?j#?b;x?}?U +?00?4FgI?u1?×?؟#ߦ?eo?܉a^?d3>?'d㗅?w,?w,@@@@@*@*??????\P?>Zx?Hif?=L@|YH@#[?@5B ě.Mm@5 -V.Qn@4Ǡ k.NC,@4Ǡ k.NC,@4Ǡ k.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 k@(+?J+? d?3a=@8@8i@8?q?e!?n˓"@8 *@8p@8??oڕ?ĭ@?@???l@t$@tbM@t$@t @t$@tS&@t$@t@t$@t@t$@t@N@Փtj@կw@Փtj@Ց4K@Փtj@Տv_خ@Փtj@Ջq @Փtj@Ք@Փtj@Ջ:)@8s@8&@3R I^5@3P{@2-V@2ѷX@2~($ @2xl"h +@2~($ @2͞&@2~($ @26?'[ V?b =??{y6?>{~? ٖ?pEIt?GKTH?fˌ?"6Wz?4.? ?$s?z?:t?O.ce?Y͍_?wͶ@@@@@*@*???????iH Kr?:}?^Ig/@t0@Տ=?Mj?pG~eT-?zKf?K@3+ I@3p:~@3q7Kƨ@3r`A@3YJ@3fA@3YJ@3 '0@3YJ@3q @8J?V[u9?rPt3?+f?xsi?U<@8J?(S5? ?GW?8wxq?ю? ,@8p?J>?z"2)?dWn?I +Br^?:\y@cWl@*i.\?gwKW?Pct/j?K?#ľz@oYÁzP@q@O@n@O@ 0@O@-e@O@u@O@}o@O@^@qm@bv/@qm@r+%@qm@k!@qm@)G@qm@cq@qm@@7~($@7OKK@2 I^@3{M@2Ctj~@2AJ@1@2*hw@1@1mAj@1@10?wvHf?]u?@Ɲ?sY?D\?gS&?Xd??&^ǘK?њ=? 9fɾ?UK?CO?uOi?Z.?.R?7c=?Y@@*@$@*@0@2???????0J@@?U?f g?jFIo@2@jQ?/???1ȝ?W'@l=V@r@@M@@e+@@A ]@@-w1@@~m\@@~BZe@r-V@r Ĝ@r-V@u\*@r-V@t`d@r-V@p ě@r-V@tɅp@r-V@sZ@6 xF@6Q @2ěT@2|hr@2K"`B@2K I^@1kxF^@1k~%@1kxF^@1k6@1kxF^@1kQ?|O?b}?TS?gk\0? +`?&Gf??UbB3?^ o?aYZq?q1At?7w:?1Q:?*J?' +}C??7?T8@@@@@,@,??????I?B`?"jީ?J_'4U@WZ@r]?F?ch'm?YTl?rdv@mm@s@9Xb.@9Xb.@9Xb.@9Xb.@9Xb.@9Xb.@M 7Kƨ.@M 7Kƨ.@M 7Kƨ.@M 7Kƨ.@M 7Kƨ.@M 7Kƨ.@5G>6z.>@3{ I^.Mm@2tj~.Qn@2G k.NC,@2G k.NC,@2G k.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 t@/@p +@/@p @/@ (@/@6@/@#@/@"@/@/@/@^5?}@/@,<@/@PH@/@(@/@S@2}:@2|>@1I^5@@1"h ԕ@0A7K@0:~@0:S@0H@0:S@0n@0:S@0:~?^Dw'? ?Gy??̒?״?"OJfA?kk?=9l@rFW@u@-@+ K@-@IQ@-@hۋ@-@PH@-@C\@-@#x@[S@[S@[S@Zv@[S@Y@[S@S@[S@V_ح@[S@RW@6cg l@6ca@N@3xr Ĝ@3wE84@2"`@2,@2xD*@2p@2xD*@2oo@2xD*@2or?|O?M?ě?6W=t?19?I? ?>`?#Gf?T?@Ad?S)?D(o?QdЈ?XU@dA<@v@KlC@Kȴ9W@KlC@K^ +@KlC@Kffff@KlC@K @KlC@Kp:@KlC@Km\@cS@zG@cS@bM@cS@iy@cS@hr @cS@eu@cS@g8}@8>6z@8nO@3|hr@3&x@3-V@3u@20U2a|@2c @20U2a|@2U=@20U2a|@2qu"??_X +?Uy* ?~B@F*.@?Ǖ(0?4p'?IQƪ?ts܋֫@f㺛O7@z@(O@(w@(O@(@(O@('/@(O@($u@(O@(8@(O@(!R@zG@zG@zG@{W>6@zG@{6@zG@zG@zG@z)@zG@{qu"@3O M@3*0@/-@/)^@.1&@.Z@.a-w1@.`'RT`@.a-w1@.^6z@.a-w1@.^҈p:?}ѿ,?m0?S[?䆀{6?'ř ?w'?| ? C`?:?>\?݄ ?90?nwf?˛͇q?٤?XLL?SP?fW@@@@@*@,??????? ?60 ? ?SPp@(@zm?V]#?.~?6?h @0@g=ۼp@{@q&x.@q&x@qbP@q&x@tQ@q&x@vzC@q&x@o[z*@q&x@lX@Jo.@Jo@JS+@Jo@<2@Jo@GbJ,@Jo@5_oS@Jo@CKp@6D.>@3 I^@3@3A7K@3xF@3m8@3Ȫp@3m8@3κY#z@3m8@3˗":2@8J?{?Y?e@8p?T#0?ot-k?$e?q?瞧&Ҁ@*@(@(@9@6?????|@ A7L@ @ A7L@ @ A7L@ @ A7L@ \{@ A7L@R@ A7L@꠹@vȴ@ A7L@vȴ@]LKJ@vȴ@y +@vȴ@!Dl@vȴ@b(@vȴ@ E!@4v@4bR@0 I^@0Q@097KƧ@09 w@/)_@/Y2OX@/)_@/౤d@/)_@/E2{L?|b@?ȶ# ?64Y??Mռ?(G?Õ?|b@?/q?4??MCFn3?ä?d"H?pDRg? ?v?h?9yt?Ho@@*@,@*@9@:??????>S ?VCl? N;x@ @ +d?=-ҟ!4?@U?:;?B)@fDj@}@*^Q@*kQ@*^Q@*\C,z@*^Q@*_䎊@*^Q@*_|i@*^Q@*\쿱@*^Q@*\ߤ@jF@jti@jF@j@jF@j_@jF@jy=@jF@jC\@jF@j+j@8qiC@8e@3@ ě@3An@2dj~@2eoi@2O M@2'RT`@2O M@2u@2O M@2($ x?3a=?"2?oq u?{@?_dA?P?qv?Hk#?Qa C?uX?~?'?'[?9o?/X?< N ?OO ?0&YEd@@@@@(@(??????k.t~5(?D={?Etd(@*`tf@jqr?csI?`v!?fĦ9?c|[@m[V?K@~@;dZ@+@8I@8?d@8@8i@8@8S@8?B{ܡ@8 *@8p@8@8 @8 @?@Y@Y@Y@Zw:@Y@W31K@Y@X)W@Y@Wh.@Y@Y2@$/@7K@$/@ +@$/@#Q@$/@9(@$/@p,@$/@! @4w@@4wҸT:@1+ J@1 P@1q7Kƨ@1qU@1iB@1̚}@1iB@1@1iB@1?{si?n@2`A7@2b + @1&@1Zܳu@1&@13>4@1&@1q;${?L?ȱc?4vȺ?B5?]X?˙3HQ?QL?9{?bN|V?M?^YZ8?hՕQ?PU+D?"x?l1Y=3?t'?dO@?ޕ+@@(@*@*@:@9??????<(Vdĝ?@U5M?Kf aXc@B +`@Y!#;?Y""?d`??t +?DJX?r-?,#?s8r?4ډ3?=̘_?PLDǽ?M8@?-u+)3x?"hȣ?@ӄ@;5@CR$?<Rp?[_?s/ꉄ6H?4~L3@s~R%@@V@7Kƨ@V@{@V@ҕ@V@`A@V@5Xy@V@zH@@u@@#@@C,y@@Z@@bM@@3@8DO M@8JJL@2r Ĝ@2U@2i"`@2ju%F @1 k@1F]c@1 k@1L/{@1 k@1:)z?qn?y)3c?=?Kh?U=K?uxY?\.:@?_$?f;m?S?WA?mEB?ey?vA?P<}??GZ?)@Jq?=P|@@@@@*@&???????JVP`?O81?WXEu@`@=e?k ejM?k+$v?ѩ??$@p uÛ@@WH9X@WK@WH9X@WH:Wt@WH9X@WJ@WH9X@W_$@WH9X@WPJ@WH9X@WR@ :^5?}@ )H@ :^5?}@ @ :^5?}@ GRb@ :^5?}@ b@ :^5?}@ $zq@ :^5?}@ i@@904m8@9> @4+@4d@@3KƧ@3*'2!@3?䎊r@3)8@3?䎊r@3(z@3?䎊r@3* |3?3<' ?$?Q?es1x?̛BO/?㾵?sX]?,?'?iɮ?*Ex ?mr)?"?w+*?%AC?8b-Y?2N?keWP'X@@"@$@ @$@"???????a9;j??^5A +?x}=@WSs@ %e?=-?YPd?rsGȴ@1d @@n?@@O^Q@Oa@O^Q@O`ѷY@O^Q@O_ @O^Q@ObC-@O^Q@O`- @O^Q@O[=K@ "`@ "M@ "`@ u@ "`@ Ov`@ "`@ 6@ "`@ @ "`@ _@72@70n@3 I^@3(@37KƧ@4IQ@2ٌ~($ @2W'@2ٌ~($ @28Z@2ٌ~($ @2!.H?UbB2?d_s?^?zRU?] + ?zWmo?sD?’?L?%ja?ۣ0Υ?|[z? t4?qN?;?J]j? .0v?=P|@@@@@*@*??????R-]p(,?K _W?;'y) @O`d@ (p?h-y'b@?\I?Pe?)@k@@-hr@*o@-hr@-c@-hr@.H@-hr@.z_@-hr@,@-hr@,jhM@V +=p@Vپ+@V +=p@V2Ŭ@V +=p@VՂv\@V +=p@Va/@V +=p@V=@V +=p@Vx@6v@6sG@0I^5@@0ܑF@/]E@/]og2@.Z@.jK(@.Z@.HE@.Z@.??Qp?)bӺx?-[o?mccx?or?vURn*?o"?-?%?9dٙ?*_?cؕZI?o#BpW?q6?YF? ?!R#?[Rvs@@,@,@&@8@7???????A!H?F<"?9zY?Pv8@,ms8n@VֈJ?YF ֙?5?L(֬?s +zd@h%xI@@%@ +=q@%@طf@%@]U@%@@@%@޿J@%@\T@ZT@ZT@ZT@Z$Pd@ZT@Z-K@ZT@Z[5@ZT@Z$@ZT@Z@2@2|hr@0+ I@0fW +@0j~@0zP@08D*@0H井@08D*@0C&Y@08D*@0@D?^j?W?Q?# 8֑?c.?Jqs=?bMn?7!?%2}?)Nk@d/@b3@cdZ@clD@cdZ@csP@cdZ@c=@cdZ@c*0@cdZ@c@cdZ@ckP@7`D@7bZc@2i+ @2h4֡b@1ȓtj@1Ǡ k@1!.I@1R<6@1!.I@1}H@1!.I@1)^?1j?5{#?l>?a_b? +`? Mi?)T?I?AuG1?.pC?>H>d#?)]\?Rw#z? U)?^?Z?Tj?GZ@@@@@(@(???????&AH%H?1,;@-?7?@ct/${@c(?RKI?Wy ? ?\R@i& +@@@@.@.@.@.@.@@V@.@.@.@.@.@6 D@6`d@3@ ě.Mm@2y7KƧ.Qn@1.NC,@1.NC,@1.NC,?Br@8#@8:@8 >+@8I@8?@8@8i@8@8S@8?uf@8 *@8p@8@8 @8 @?@|h@vȴ@|h@T@|h@P̒N@|h@6@|h@b@|h@bR@ +7K@ +@ +7K@ +~ߤ?@ +7K@ +sR@ +7K@ +I}Ɗ@ +7K@ +=X|@ +7K@ + !@1_o@1D@0^5?|@0c@/nO@/G&@/Xy=@/o @/Xy=@/9@/Xy=@/I?^j?ԭ)?' ?P4q{?sZ?! ?bQ넛??<6?hg?O?t7T?bF?ʓ:$?tq?#+?xl?>dS@@$@$@*@6@5???????@b8F7?#{F?(}X@>Ү@ +?3.N%6?7~EHbe?axf!@?gz@s+0w@@ Ĝ@KƧ@ Ĝ@cA@ Ĝ@`A7@ Ĝ@$t@ Ĝ@ )@ Ĝ@4֡@`A7L@W +=p@`A7L@vu@`A7L@n@`A7L@ZY@`A7L@[S@`A7L@^Q@7p4m8@7l#x@3+ J@3Y|@2tj~@2Xy=ـ@2u@2 :)z@2u@2H@2u@2 qu"? ?4Kl?ȇ? h?[5?Z?| ?͔{?pI?~m??[h?"Ь?"x*=k?*:'+)?}??Qx?a#?!D@@@@@(@(??????Q@;.?Vp?O?"Ng6Gj@M@YD?l\{?A1t6? +?i]@ex@@H9X@H1&y@H9X@ ě@H9X@CZ@H9X@-@H9X@F '@H9X@G l@\{dZ@\{dZ@\{dZ@[@\{dZ@\]Vl@\{dZ@[hs@\{dZ@\|n0@\{dZ@\|n/@4B䎊@4Bh ԕ@0+ I@1 - @017Kƨ@0>H@0Q@0L/{J$@0Q@0:)z@0Q@0m]?}ѿ,?uM?,Z?$? +`?Rg.?| ?E?S?f?C ;?+d?{V? U)?@A?ԿX?<71?ad|@@@@@,@,??????ZP`58* ?k ?Z 8N@B9>@\s8p?ɖn+k?]3,"@#z%@Sҽt@f[@@@;dZ@.@.@.@.@.@C@ˑ@C.@C.@C.@C.@C.@9G>6z@9H ԕ+@4S.Mm@37Kƨ.Qn@30U2a|.NC,@30U2a|.NC,@30U2a|.NC,?c9X@8#@8:@8 >+@8I@8?@8@8i@8@8S@8?Ćp,@8 *@8p@8@8 @8 @?@I^5?.@I^5?@]yh@I^5?@ŵ{@I^5?@x[@I^5?@'_o @I^5?@7O:@.@@@@Z@@j2@@zxl"i@@t@8 xF.>@5 ě@4_jK@4-V@4b&@4:,<@4LΡm@4:,<@3"`@4:,<@4 PH@8J?Uqd??x@?ݧ?xܬi?Y@8J?CT?a??ٿf|?"QS?U̕"@8p?-q?iI??F?k0?NR\@(@$@&@*@$?????@tj@+ @tj@1@tj@m9@tj@Mj@tj@[W>@tj@bM@~@~7K@~@~n@~@~g8~@~@~ں@~@~p:@~@~@6}:@6~Mj@2S@2@1tj@1R@1a:S@1TJL@1a:S@1R@1a:S@1TJM?Ol?nx?)?6p?ܿ?l? ?j@\"? ?io?f?.?eN?<!?7^|?%y*=?̈- +?5|G?, ?b䖶?| g?Pfl@e, 5@@d/@e`A7@d/@em\@d/@glC@d/@eݘ@d/@b@@d/@aR=@ L@ L@ L@ L_@ L@ KC,@ L@ Kt@ L@ Np:@ L@ N@2Q|Q@2Qhr @."`A@.=b@.cnP@.^Q@.V@.Oo@.V@.N_o @.V@.O M;?OW?%ñ?QX?,rg?y%? Mi?;0?MN ?2'?aYZq?H<?e\p?!??=Cb? mmsi?OO ?ٔ!x?@@@@*@,??????\^?T?1{HN?3JGZ@cO7@ M>?@v8Z?A +?u6?w/.#@sgOx@@ C@`A@ C@e@ C@bM@ C@r@ C.@ C@ xH@}M@}߾vȴ@}M@}@}M@}+k@}M@}zxm@}M.@}M@}ңS%@8]ce@8_o @4hr @4Ov_@4U`A7L@49Q @3!.I@3 u&@3!.I.NC,@3!.I@2?8ȺJ?5b&?jl|?@8I?<3:?}ѿ,?>ÔR?fF?@8S?æΟ=?*c?Y,v?TB?@8 ?6fe>@@@@@,?????@&ȴ9X@&C@&ȴ9X@&ؓtj@&ȴ9X@&n/@&ȴ9X@&jg@&ȴ9X@&l!@&ȴ9X@&}H@O@V@O@xl"h @O@ES@O@|h@O@+@O@*0@6#g l@6%Q@3S@3 @3i"`@3=-V@3 +0U2a|@2)^ @3 +0U2a|@2͗+j@3 +0U2a|@2ֻ?Br?߈J?]!\?ɹ?JjcJ?0Je?F/P5?|? pۓ?I-U4?/x?BHɿ_?]?]FV?btx=?c+?&zQ?0@@@@@(@,???????qGGwY0?`j X`? %@&_ݲ@.L?pM?@3W+ I.Mm@2A7K.Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @F1@F^5?}@F1@FY@F1@FrGE9@F1@FdZ@F1@FC\@F1@Fs@=E@>5?|@=E@=@=E@:v@=E@;"`@=E@6!.@=E@:Y@4N쿱[X@4Ov@1hr@1:@1-V@1 @1@1Ov_@1@1}Vl@1@1(?|O?q' +B?RsW?vHn&?2{w?.'?|O?D.x?DP?|}Յ??998? ݎ8? $gv? ݎ8?J]j?o?&I@@@@@(@&???????"+0Q'S,? ) ?9eyv@Fڵ@;y??[>_?Y?4)? u@fA,3@@(\@(r @(\@(p:@(\@+ I@(\@)'RT@(\@'y @(\@)^@Pj~@P9Xb@Pj~@P9Xb@Pj~@P4K@Pj~@P +=p@Pj~@PD@Pj~@P=@5,<@51.@2 I^5@2 k@2v-@2u2a|@2!.I@2sh@2!.I@2Fs@2!.I@2E?Ol?t0?p? +?j?EeX?}ѿ,?c?Kw?>G]!?c?K ?/X?]ivL?Ƌ?l?*Q?E݋N@@@@@,@*?????????7CX?0ōV9u?1_Q@( t@P&=I?Op%?R+F?pN&?m*c@g=@@e I^5@e I^6@e I^5@e9X@e I^5@es@e I^5@e2Y@e I^5@eX@e I^5@eV@0 +=@6ȴ9X@0 +=@# @0 +=@0$t@0 +=@$tU@0 +=@En@0 +=@CS@8YJ@8Q@5)+ @5,j~"@4j~@4҈p@45sh@49^5?~@45sh@4"u%F +@45sh@4t?+-/?@u-I?O?w?r9XY? $Μ$?_pP1?vȴ9@(B\(@(>vȴ9@(8}H@(>vȴ9@(BC-@(>vȴ9@(>Ov_@(>vȴ9@(9@(>vȴ9@(;@8_o@8\(@3sS@3vOv_@2W-@2[ I^@2@5@2-@2@5@2$0@2@5@2F +L0?Br?rk?^@?wX/8?q f?*Mis?oC? ʣV?9T?ݤ`h?c?J佪^?y3?\{?]_Q?vI?C SG?E݋N@@@@@*@*???????D 0Zw?"B?C_>@)Nv]@(=-d?CzV ?_`J?HCK?_k@kڝv@@'fx@'f@'fx@'e1@'fx@'h\@'fx@'g+ I@'fx@'f,<@'fx@'f@kR@kƧ@kR@j0U2a@kR@kq @kR@jW@kR@l1&@kR@o͞@47@@47*@0+ J@0+ I@0t@0,<@/jf@/҈@/jf@/rGF@/jf@/YJ?|O?dY{?&??뤽??V^?<_?|O?; ?ԕ]I?Kd]?x9ξO?]˙$>?|׿pY?%_D?Ol?=rE=?ad|?`i=@@@@@,@*??????#?9Êg0??!&?<;s@'fêK@lap?:l`g܂?\o%R ?+G9?+An{@f@@*A7L.@*A7L.@*A7L.@*A7L.@*A7L.@*A7L.@.@.@.@.@.@.@9,<.>@4!hr .Mm@3,j~#.Qn@20U2a|.NC,@20U2a|.NC,@20U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @ךv@ךv@ךv@כ@ךv@כqu"@ךv@כ"`@ךv@י~($@ךv@י_p@ě@ě@ě@ k@ě@ě@ě@G{@ě@|Q@ě@ k@2-v@2-v@-`A@-C,@-/;dZ@-/@,fL/{K@,en0@,fL/{K@,fffffg@,fL/{K@,eoiDh?^Q5P?{j?=?Kh? Y?ǹT?CXs?bM_x? C`?S?-I`K?%y*=?J&d?k?bMky? ?YF?͓E'?f_Ԋ?B @@@@@@"??????D[O`?1?!5n@ךE19@@[y?A@4 I^5.Mm@2-V.Qn@2!:S.NC,@2!:S.NC,@2!:S.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @)l@+ I@)l@)'RU@)l@,1&@)l@,"h @)l@)@)l@) @Q@tj@Q@74@Q@C@Q@ '@Q@kP@Q@ȴ9X@5ks@5ku&@2hr@2V@1Htj@1HYJ@1 +0U2a|@1 =K^@1 +0U2a|@1 +L/|@1 +0U2a|@1 s?}ѿ,?`[?1f_?W0 ?,I ?C!?|O?V"y$R?4M^?EP?2}?Qʾ?]?.]L?m+&? mmsi? Ğ?]ߒ@@@@@,@(??????0`=?2$l?5N4 +FZ@*~ժ@q?Rܜ^ ?UWm`??k?9uy@fva @@7mV.@7mV@7y0 @7mV@7ڹ[@7mV@7A7K@7mV@7FA@7mV@7c @ltj.@ltj@kvC@ltj@ktF@ltj@kĵ?@ltj@k@ltj@k*@6p4m8.>@2G+@1C\@17KƧ@1jW&@1 k@0%2@1 k@0;5X@1 k@1@8J? b}/?-_?C:?5}?̔J>@(@8J?[:|Q?.%?r?ǘ(K?% @8p?ɅoiE? +e?zY3???@@@@@,@$?????@E@O;c@E@T`e@E@j~@E@_p@E@@E@u!@%`A7@$S@%`A7@')_@%`A7@& +L0@%`A7@$oi@%`A7@%o@%`A7@%m\@8zqiC@8{C%@3S@3>@2"`B@2:@1䎊r@1Q@1䎊r@1Vϫ@1䎊r@1͞?}?5{#?]P?TnE?X?6 '8?F^S?yom?B<\v?G>G?? f?,+?\{?z_??)@Jq?]ߒ@@@@@,@ ???????S2O?/q?W䱶V=? @Xd@$U&v?x^ e?37?=?^6z@7 3@3uS@3q}-@2q7Kƨ@2Э@2V!.I@2g0-@2V!.I@2a +K@2V!.I@2d1Hf" ?x/0 ?a4ޯ?ƛ?<鲖W?|eP:?!o ?~Ov_ح?xj~?cG4W#?:&??ҧ| +?a>1l?"ܰ?D\e?8ɔ%.?*$]+?u"I(@@"@&@*@7@:??????t`^:?p._+?dY @ggr@Ql?o?z߹@!:@@ts$HR@h@@m\(@mc4@m\(@my:.-@m\(@mbp@m\(@mwM@m\(@mvAA{@m\(@mt@hbM@ho[U'@hbM@h;@hbM@h؝@hbM@h@hbM@h@hbM@h'@8?@80u/p@4&+ J@4[i@3lj~#@3R>І@2[W?@2syZ9@2[W?@2hXѩ;@2[W?@2v ?C/?j?;?W秕???ek?n%t?@^8"B??~?`?2?1CW6@1hr@1~k@+@1Ft@10ggU@06z@0f@06z@0y@06z@0˝%J@8J?|Bn?Ώ?wJ?e?,XsG@8J?F1Q?KcU??mw?\q'@8p?%c+5 ?$4;?/>?ZQ??7@*@,@,@<@:?????@CI^5@CƧ@CI^5@C%F +@CI^5@C@CI^5@Cg@CI^5@Cqu@CI^5@C~($ @#Dt@#KQ@#Dt@#IrF@#Dt@#;dZ@#Dt@#EQ@#Dt@#C +=p@#Dt@#A@7*0U2b@72X@3 I^5@3@N@3q7Kƨ@3oحV@2@2߱[W>@2@2\@2@2܄??}ѿ,?tcN~k?ِ?btx=?bJֵ?"/Y?h??[45?Kd+?1`?ۣ0Υ?~Y?D(n?J>?L?#ѧ?x?\,!@@@@@&@$???????D p_<r?MZW ?)fk@C%n&@#E6?q8c?GRDj?k?b7@ky@@@@>vȴ9@@@>@@@>쿱\@@@;J#9@@@B7@@@Ae@ Xtj@ Xtj@ Xtj@ ZY@ Xtj@ Xe,@ Xtj@ Y+@ Xtj@ Zxl"h@ Xtj@ Z,<@6:@65Xz@2+ @2ԕ*@1V@1;5Y@1iB@17Kƨ@1iB@1iB@1iB@1|Q? ?@)M?ojVrn{~?7D +?Ol??tWZ?< /0?=.e1?|[z??Ãx?Z?2?0&YEd?՘]G@@@@@,@(???????A%7?<0?I.q?*)@?*@ Y}#?i{q?8޲m?-畺?w&,Yj@g\@@&x@_@&x@ @&x@_A@&x@G@&x@Gu@&x@@+ J@W@+ J@,Ue@+ J@2@+ J@@+ J@IU@+ J@}H@95S&@98^@^@3r Ĝ@3v@3-V@2締M@2iB@1An`@2iB@1=Ŷ@2iB@1+?5T?HT|?='f?u"L?|.?Sj?Λ?iy?شc?3PD?N?EYC:?[h ?M69!t?Nv\b?%&P)?@g?Y4@@ @(@&@5@8???????yɦsn?vNU \?g@v @t8?s"ZO?7@[SY?gS{@m)k@@WRnP.@WRnP@WR@WRnP@WRs@WRnP@W]-V@WRnP@WU!S@WRnP@WVl!@$/.@$/@`A@$/@_ح@$/@PH@$/@@$/@D@5|Q.>@1^5?|@1SMj@1-@1hۋq@0YJ@0z@0YJ@0@0YJ@0zxl"h@8J?ru? ?wn-?0 碽?6|Ob@8J?s?0˱[?V\F?9?c5W@8p?iTC~t?z_?.SM?DV?|)-}(@@@@,@*?????@l@߾vȴ@l@}H@l@A@l@_o@l@1@l@84@R@glC@R@_˒:+@R@_|h@R@Y0 @R@c9@R@w4m@8?@8A [7@3sS@3k6@3t@3|u"@20U2a|@2n@20U2a|@2x@20U2a|@2lQ?}ѿ,?d`w?P I?Q+v?xsi?Z?`m?}y?#?Q?n ?aG=)?T̅?*T?yC?k2m?vI?kK)@@@@@(@,???????!!@?rkh?gG1?r9zP[@i@^?$#W?Kd>@vfK?tY}@meB%V@@r-V.@r-V@;dZ@r-V@Em\@r-V@4@r-V.@r-V@%F +@:=E.@:=E@;3@:=E@<@:=E@@3c@2%?@27Kƨ@1Ov_خ@2=ce@1 b@2=ce.NC,@2=ce@1@8J?ްrQ?z?|JA]@8I?/8J@8J?ܟ~yv??p?ҝ @8S?`u%l@8p?&Z#?-BR1?wf*-n@8 ?<͸R@@@@,????@o-@o-@o-@p\@o-@p?q`@o-@pE@o-@nk]@o-@n-@m@-V@m@Z@m@\@m@@m@iۊ@m@@3^H@3^1xT@0?|h@00j+@.ΗO<@.΅VGL@.=Vl"@.1X?aՊ5h?5Y*?5Ʌ]A@~@_%X?S@TTF?S9?pB(?Z@d"nR@@-V@lD@-V@ 4m@-V@#Z@-V@b~@-V@H˒@-V@+k@)7K@(5?|@)7K@(_@)7K@(u%F@)7K@(BZb@)7K@)T@)7K@)4n@7,<@7A [@3hr @3@36-@32M@2fYJ@2jC\@2fYJ@2`@2fYJ@2`oiDg8?q!U??]P?Z)?K/?! ?ٛP?ew?L94?cgp?B ?vk? # ?J?Q?cӗ1?E݋N?3@@@@@,@,???????6H"gH?MӬ ?@]F[4?N,>@dqt@)W*?Z]?h~?,3?3-7O@m>@@@f?MA8?/`?*WF?bM_x?#maЀ?90?>\?A B{?N`?bMky? ?|׿pZ?͓E'?l&?f_Ԋ@@@@@,@,??????QTVh5 ?+bTw>"vF@<іf@i]M8?:z~>گ?q8=T>𣭁>@s A0@@lD@lD@lD@lD@lD@@lD@n/@lD@5Y@lD@m@;dZ@;dZ@;dZ@@;dZ@H˒@;dZ@|h@;dZ@o@;dZ@$tS@.5Xy>@.5Xy>@(vt@(v4J@(dZ@(~%@&`d@&m8@&`d@&m8@&`d@&`d?^Q5P?GA?S?MA8?@ A2?:?bM_x?%F?A)N?/Z?ѡb??R g!ڢ?bMky? ?oܧ?avh?#.?#.@@@@@,@,??????!]%d?pO`>8#L8e?ߩ~@Y$@_~[?!_?zG>';?)E1@s@@ +=@ +=p@ +=@a@@ +=@H@ +=@v@ +=@&@ +=@+j@ I@`A@ I@捸@ I@!-@ I@思IS@ I@4m@ I@Z@8YJ@8xl"h +@3 I^@3 (@3`A@3Xe,@2sh@2C-@2sh@2O M@2sh@2a@N?I~y?+W??1t??5n?[N#?ѱRC@nPw@@bM@Q @bM@r@bM@F]@bM@73@bM@l!@bM@ȴ9X@]"@]|h@]"@]҈p@]"@^'RTa@]"@^'RT`@]"@]䎊@]"@]@4v@4cA @0sS@0sS@0'KƧ@0'sPH@.'RU@.`A8@.'RU@.D@.'RU@.&x?|O?[e+@8I@8?W$B@8@8i@8@8S@8? T"@8 *@8p@8@8 @8 @?@`B@_$@`B@{mK@`B@n@`B@XU~@`B@CV@`B@֏]@#|hs@#d@y@#|hs@#o!> V@#|hs@#jhKI@#|hs@#: @#|hs@#v=@#|hs@#y@8O M@8t*wc@4+ I@4L@3 -V@3 5K'y@2@2άB@2@2zjL,@2@2сΊ?7 ?heS?]|??w?)6?gV?5T? 9~?s^q? ?(?Ѐ>(@@@@@,@*??????[J>,?:+/?*f~V@~q#@4n6,?I??i[? ?4d{@s 'ͅ@@Y Ĝ@Y@Y Ĝ@YE@Y Ĝ@Yg@Y Ĝ@Yݗ+@Y Ĝ@Y{@Y Ĝ@Y @J^5?}@JzG@J^5?}@J^5?}@J^5?}@Jc@J^5?}@JS@J^5?}@J=@J^5?}@JC\@5:@5B@1 I^5@1s@0ȓtj@04֡b@0 k@0zH@0 k@0K]d@0 k@0/V?1j?W[?TS?A%?@@No9?t??jכc?C\?]bn~?c3c(? R?X?9o?{W?=rE=?ˢL1?fW@@@@@,@*??????500?Q&?2.rP?A x@Y0C@J. ?TPa?]Nᩨ?7ѓ?oRf@loN|D@@-V@0bM@-V@,@-V@1N;5@-V@2@-V@*g@-V@14K@j~@0@j~@"@j~@ +=p@j~@C,z@j~@H@j~@4n@7O M@7-@2ěT@2H˒@2v-@2t9XbN@1&@1- r@1&@1 k@1&@1Ov_خ?^*?hX*?K"?Q6@(@!e@;dZ@x@;dZ@'RTb@;dZ@;dZ@;dZ@8}@;dZ@ qu@;dZ@Xf@6[~($@6[m]@2S@2 +=p@2v-@2v,<@1sh@1+ J@1sh@1n/@1sh@1 '0?|O?" ?^?_??;?-/ge?}??xrI??>#?/ȫ?J>?tK?ZaP?*J?' +}C?l?P\?0&YEd@@@@@,@ ???????OvqU??>$Yb?DbH@"} +@ +?`w?dYg{?썹?z@is@@R@g@R@+բ{@R@0T@R@kQ@R@x E@R@"N@aG{@`A7L@aG{@dU>@aG{@` o@aG{@dYĜP@aG{@`\A @aG{@`s@5D@5:@2+ I@2@1M-V@1N1.@0@0w*h@0@0r~_@0@0rn?|B &?AI?3)?]S&n?Bc^?ML?~?J?bs?e`?-GB?x;q?s Ge?v,?m$f?煚(? {7?,G]Lk?43#C@@&@&@"@8@3??????>?qp?3ҌLJm?/Ǧ@@`0u?SB)?P JG?{X\?"p@g2 3@@x@7Kƨ@x@vj@x@Z @x@ d@x@wZ@x@e}@vE@w +=p@vE@w~[@vE@wt@vE@wW@vE@v-N$@vE@v_@4>6z@4L<@1+@1;kb@0;Ƨ@0U;X@;r@vf?`) ?2}sX?̊sJC?qsXX@fWy@@@@@\@@V@@̿[X@@Vϫ@@̲@;;dZ@;;dZ@;;dZ@;5?|@;;dZ@;҈p@;;dZ@;6z@;;dZ@;5?|@;;dZ@;@5(YJ@5(*@1 I^@1~@0"@0쿱[W@05sh@05sh@05sh@05?@05sh@051? ?]Û?4!p?Њ?1 v?t? ?`5a?ܿ?ą6 +?&Tm?U3p?CwB?)Zw?{W?':? +t?ܑ @@@@@,@*?????? +&i?I +3? CqN@̯p@;+(?%f{yr?.& tg?VP-"?dsl\@gQc@@EQ@EQ@EQ@FD1@EQ@F2w@EQ@F?t@EQ@D B@EQ@Dz@7K@7K@7K@[*@7K@af@7K@q@7K@(@7K@c1@1H@1Y:F@*7Kƨ@*A [@)cnP@)b}Vm@(oi@(TɆ@(oi@(*0@(oi@(̢?^m d?6?tu?D?1%(??bMn? +i*.I?~4pU?/d?a?M)á?g"e)?Sg?p7?9wT?=>(?3`@@*@,@,@2@5??????Kw0,R,?4;W'? .@EtC@vq?CrSy`?@?sQ ?(ԑ@s@@4nzH@4b I^@4nzH@4$/@4nzH@4~@4nzH@4;dZ@4nzH@4z1@4nzH@4A7M@TF@y+@TF@b\(@TF@JL@TF@[~@TF@T9Xb@TF@Y_p@9|Q@9=K@4f+ J@4PD@3KƧ@3Fs@3~($ @3@3~($ @3n/@3~($ @3?G *ǂ?ʖSS?+*u?m}9?7?+`N?g;+t?,?W@3t? ;q?ިo?)AL%?#IӨ&?$jB?bO?3l]0?Nty"?a#@@@@@$@$???????qeH4pk[?h@B_“?i_Rz@4{tR@[@드?g w?W9Mj)?? 0@p erd@@49Xb@/;dZ@49Xb@fC@49Xb@Gz@49Xb@@49Xb@T=@49Xb@uZ@Ƨ@W;@Ƨ@+@Ƨ@,<@Ƨ@` k@Ƨ@i] @Ƨ@x>G@77@@7֎@2sS@2@`A7@1Ͳ-V@1Xe@1QiB@19oiD@1QiB@1*ۛؽ@1QiB@11D?|Ί?gV)?t|*? ?t]2?;Xb?Z=?L}? @S?P?s8:?߼K?@#?X{?eN ?wb?=?g;d7@@@@@0@,??????p_<~(@?p}bM#?{lRPp8@^n@p?_mT?QO6@lh.@,T6Z@g-MN@@+n@+S@+n@+\(@+n@+t@+n@+n@+n@+S@+n@+|i@rXbN@r@rXbN@r^5?}@rXbN@rdZ@rXbN@rdZ@rXbN@r+@rXbN@r"@3mv@3mv@1S@1&@1_-V@1^6z@0u@0oi@0u@0m\@0u@0%F +L?1j?}d?FB:?_B?DE?}?|O?dx/?Rs??tP*?90?nwf?fb?*wjs?,|?ܑ ?+C@???@@??????@;Po?4ϿZ#?l(@+]%5@rL,?VYY9 ?4s tA?*&?r`r:@fjhu@@4S@4@4S@4 +@4S@4(SBl@4S@4lZA@4S@4Sz@4S@4>@\|h@\|h@\|h@\xR@\|h@\8M@\|h@\Ğn@\|h@\GX@\|h@\ ph@7+s@72nO@3ahr @3`@2`A7L@2սW糏@26z@2S@26z@26:@26z@2 +Vh)?`/.~? ??L +v?0Eke?ׄǿ?CF?nO@4r Ĝ.Mm@3t.Qn@3L[W?.NC,@3L[W?.NC,@3L[W?.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @[S@ަE@[S@ZHe8@[S@߻ S@[S@ON@[S@E@[S@Oђ2@:DT@8G@:DT@:S[@:DT@:AѦ@:DT@:p@:DT@:ypى$@:DT@:U@7 xF@7Iܓ7W@2hr @2s͇@2Ft@2A@1,<@1tqߖ@1,<@14~1@1,<@1]ZNh?ݪ?:??σ2? +4:~?`XO?-ո6?8%?Xh?p?, Gq]?E?#?ޠ>?I|[O?B%M?uS1**?֦b?0U@@*@&@$@.@7??????E?f-?tr_?wTԁ@K4@:?B?+i?Bl"?BA?!l@r0ul@@tj@tj@tj@ +=p@tj@+j@tj@B@tj@@tj@>6z@ ,1&@ ,I^5@ ,1&@ /-@ ,1&@ /v_خ@ ,1&@ 1&x@ ,1&@ .V@ ,1&@ *0@7}:@7\O@4}hr @4zqiB@497KƧ@45+a@2Q@2JL@2Q@2مoiE@2Q@2#9? ?t,?.#Y?ˆ_??S{d?h??ڲt?cGo?N6?+!?K ?`Ƕ?qJ??Eq?x2?7?P\@@@@@@???????B90'Þ?7?MǿtF@ @ - *?[oT?jkK > ?J ?̧E@kHa@@0 ě@1l@0 ě@0`A@0 ě@0:~@0 ě@7O;@0 ě@7>6z@0 ě@:Q@e@e"`@e@eȴ9X@e@e2@e@e6@e@eE@e@e3333@8B䎊@8@ qu@45S@4.Q@3Vu@3=p +@3\Q@3XXy=ـ@3\Q@3JfB@3\Q@3Jn?qn?u:|?Aox?vI?1BZ@H1&y@Fs@H1&y@H@6|Q@6@3S@3 ě@27Kƨ@2;5X@1xF^@1@1xF^@1e+a@1xF^@1Xy=ـ?|O?PƧ$?4 b5??ԁ?"/Y? ?,T?f?P?BnF? ?IH!w?W;RS??]b?=aw%?{2?w w@@@@@*@*???????<<H~X?J,!zv?,=ڔ'@ =@fbOm@@ě@ě@ě@!gQ@ě@B@ě@e/@ě@@ě@1u@l1&@lC@l1&@k1@l1&@l9]5@l1&@lm0@l1&@lz@l1&@l@.V+jf@.VOv_@*"`@*򐫵@+x@+Xe,@*C\@*@*C\@*O<@*C\@*>r?^6P?\f?2k?:M??= +M?bMn? qb@??5ߨ?j?RZ8p?bF?3U:?p풟?ć8?t.? +@@(@*@(@4@5??????&a? +lj@?iV?,@L @l3?3-d?PcW??)ON@sK@@bM@@bM@@bM@+ I@bM@@N@bM@C2@bM@ 1s@@ci@@a@@-@@Xy>@@`)@@v@@7g l@7$`@2+@2حV@26-@2!A [@1&@1ߝ-V@1&@1ZSUZ@1&@1ˍ?ɱb)Q?P1"?GM?3҃?U?޽/1c?/?z?3fvI?ZzZ?5yS?rC2?TȻL?9WTW?3 q?K쯎?^'?t^]7]@@@@@0@.???????R.Uh>f?7_,?TybZ@=n@O~?YK寮?tg?znJ?== @lN@@%@%bM@%@%踎@%@%d@%@%1H@%@%P@%@%e@V@+@V@@V@4¹@V@e@V@1@V@M@2 _o@2 _o@0+@0@0q7Kƨ@0p9Xb@0!.I@0rɮ@0!.I@0]@0!.I@0?^j?$?S24A?nhW?q?G?bQ넛?z,?RE?r?:i?'aJ?bMg?Ȕ? +?N?{??ŧ@@,@$@$@3@,??????UK?6@?A'f~8?- qM9@% +@c?P?;2 U?x'b?olwi9@r @@ffff@$/@ffff@,>@ffff@J@ffff@g8~@ffff@n@ffff@쿱[@d;dZ@d;dZ@d;dZ@dvȴ@d;dZ@d"u%F @d;dZ@d"wk@d;dZ@d%oiC@d;dZ@d,@4@@473@1 I^5@1u!R@07Kƨ@0- r@0}ce@0zg +@0}ce@0zG{@0}ce@0vϪ͞?|O?Kb?&P?ھ۲?>C,4?ZzZ?}ѿ,?; ?I?pFs?c?~Y?3Z\?u/X?],m=?0?:1?$jB@@@@@*@*??????Ri?b?4f?@w u@i@d#48?T~W?`Z?q?ؠi1@f65a\9@@Q@v@Q@4m@Q@4@Q@X@Q@G@Q@-@O;dZ@M@O;dZ@TSN@O;dZ@Q@O;dZ@Q4K@O;dZ@Y @O;dZ@V8YK@7L]ce@7M8Z@3° ě@3n.@3)"`@3+qu!@2s&@2sZ@2s&@2s&@2s&@2qR?F/P5?@K/z?zjʩi?H?X?|&?)T?tMP?4FgI?kH?k?V.H?8*?3a=? t4?cӗ1?DV? N@@@@@*@*??????L ]?`~M,?>iP=;1?E6F5 @o#?ǻ(@h36@@V@Ƨ@V@hr@V@rGE@V@6@V@PI@V@74@g@g@g@gu%@g@g C@g@gQ@g@f@N@g@fiDg7@6:qiC@6:Q`@2 ě@2vȴ@2R`A@2An@2m8@1R<6@2m8@2\N<@2m8@2 +Ov`?F/P5?܄ (?.? S~?k!e?P;rp?|O?{c?(?{k4?Wlz?#:d ?W'?ZaP?`F?LO?zY3??zy? Ğ@@@@@ @*???????bYOilT#?G +n?U@/Q@fQx?f?tzb?z]p?h[J@dj@@ ^5?@9X@ ^5?@@ ^5?@˒:@ ^5?@y @ ^5?@ oi@ ^5?@ +L0@$/@,C@$/@:G@$/@5?|@$/@1iC@$/@.V@$/@)ᰉ@7>6z@7ohی@3TS@3I (@2A7K@21'@1YJ@1߱[W>@1YJ@1A [@1YJ@14J?| ?(R?|6zj?'$5?+@8I@8? +L.1@8@8i@8@8S@8???;@8 *@8p@8@8 @8 @?@l@l@l@҈@l@~#@l@ԕ*@l@Xy=@l@qi@nO@nO@nO@mhr@nO@l>B@nO@r@nO@o'/@nO@nV@4G>6z@4GKƧ@1W+ I@1WzH@1Z~"@1\j~#@1(@1+q @1(@1*Ov`@1(@1(4֡b?}ѿ,?Čۨ1A?aR ?b?ɿ?mׁe\?| ? ,C?{d?EP??Z)?y8#?§d߱?Z?v_.^??WZ@@@@@*@&??????%<?'/;?)~o?;SC@+@o7 ++?IQ(?[??i^!?Dm +@f8@@ I^5@ +=p@ I^5@(K]d@ I^5@4!-x@ I^5@ +L@ I^5@u%F @ I^5@ hr@xQ@{dZ@xQ@t@xQ@tj@xQ@w@xQ@U?|@xQ@m q@7}:@7wXe@4@4Zc@4`A7L@4/V@3,<@4oiDh@3,<@4@3,<@4C,?oC?y)3c? +~?d? ?i]x[?sD??W?Q Q2? 7?:;?B?:!;ى?g`u?=!W?5.?L4@@@@@&@&??????$jaxO@?To ?iX6P@ ^&Ϧ@l;?uU8'&?rCW?AD]@̘ؽ@hB@ @@m@ +=@m@,@m@`d@m@ '@m@J@m@C-@Z@@Z@@Z@u@Z@+k@Z@XbN@Z@2a|@6,<@6Xe@3?|h@3t/@2j~#@2쿱[W@2p@2ZOv`@2p@2Zd7@2p@2^;5Y?}ѿ,?mvrDž?=wD?&!+?6v;v?x2?3?+ߎ @@@@@,@,???????g^mn?rC??WPQ4{?X|3L[@SA@Op?n7^U?o5r?,zc?ʦ.~W@^~@@u\).@u\)@@u\)@[s@u\)@Įߤ@@u\)@ĭ(@u\)@7@U;dZ.@U;dZ@W@U;dZ@X-V@U;dZ@X/@U;dZ@X9#x@U;dZ@X12X@6!..>@2@2˒:)@2~"@1P@1@5@0u@1@5@0:)y@1@5@0ȴ9X@8J?N:'?Dwhg?ѻ ?Ѧ9H?=J7@8J?_;$?srlV?GJ?b)ۑ?o@8p?KQ5?;N?_c?GX?!S{uu@@@@,@*?????@-hr@.+@-hr.@-hr.@-hr.@-hr@64@-hr.@"`B@!$/@"`B.@"`B.@"`B.@"`B@J~#@"`B.@6۹~($@6C\@5^5?}.Mm@3Ͳ-V.Qn@4(.NC,@4(@4x@4(.NC,?|O@8#@8:@8 >+? rL@8?2}@8@8i@8?**ɫS@8?,1'@8 *@8p@8?=i@8 @@(??@@-V@@poiDg@@z@@&@@,<@@r @ Ĝ@7@ Ĝ@J@ Ĝ@1@ Ĝ@zxk@ Ĝ@*0@ Ĝ@u%G@9 D@8JG{@4S@4>BZ@3dj~@3d7@35sh@3V@35sh@3^v@35sh@3U8YK?9?iedA?q{?s?yH?>>?pn?D?v׆7? '~?]%?*ML?Й8??$̤T??:L]?[Y?-B?_! @@@@@,@$???????\Lu@?l%?vG\q?{>z@@g?}0Xy?<3?nϖ9?#,@uRrh@@t@ qu@t@ =@t@Q@t@b@t@89i@t@܌+@n@-@n@{X@n@}9@n@z@n@}iGt@n@y@7ks@7e@ @3 ě@3&`@2{Ƨ@2~C/@1@1]@1@1N@1@1o?|B &?tی?=x?*4Ie?][?0~W?R ?Q?4ku?]dMJ? +lr?Z?>p??#q?1B!?aiJk?㝠Tn?] @@(@,@,@8@3??????\sTS?11tf?]7@Pf@[#?S?{ Vs?}}?AW@k!83@@S.@S@Ӂ7K@S@c +=q@S@B\(@S@͞@S@Z@ȴ9X.@ȴ9X@<@ȴ9X@ᰊ@ȴ9X@'RTa@ȴ9X@m\@ȴ9X@7@8@.>@4@2$/@3t@28YK@2,<@1͞@2,<@1@2,<@1ԕ*@8J?E?o" +?~a?us`c?~G@8J?q?(T?fY|h?NMpZ&?@!"@-V@S8@-V@w;/b@3S&@3@/j~@/'@.mO;dZ@.cn.gJ@-#Z@-^5K@-#Z@-Zv@-#Z@-m?gQ?r ?KI4?'I ?&J?Vh +?}@TΥ?h?}% '?RLB?1b?\U?Ykd?-k?!b??? ?}@@@@@4@4??????I1D?Ufd?B&qL?Mz?4'f?r48@ghtZ@@8U$@8R Ĝ@8U$@8,VϪ@8U$@8U?|@8U$@8jJM@8U$.@8U$.@O;dZ@Hы@O;dZ@+P}@O;dZ@$ x@O;dZ@K]c@O;dZ.@O;dZ.@8 xF@8Ni@7 ě@71ohی@5"`B@6l@5._o @59JE@5._o .NC,@5._o .NC,?x/0 ?\5#k?Fv?Eu]@8I@8? 1Ӡ?V ?Cڶ?rpв@8S@8?#n?M#?%׀_?oh@8 @8 @@@@????@e޸Q@e"@e޸Q@eව4o@e޸Q@eح@e޸Q@e'RTb@e޸Q@eE@e޸Q@eݗ+k@œ(@›lE@œ(@œ(Ž@œ(@šY@œ(@›~@œ(@œ@œ(@œQ@4įO M@4ļj~@08r Ĝ@08Q@/&x@/_p@-`d@-!-w2@-`d@-J@-`d@-?|O?$?$C@? Iy??wZL?|O?0n=Q?A)N?@Cv?<U?M\ٓ@?m+&?.x?8*?':?M684? Ğ@@@@@*@"??????&[ ? E@?0f$C^Q?<'5@e5+@›?PYPBK?6thg1??{L +?1@fNU@@Z@T@Z@߉ @Z@~:@Z@L!@@Z@ߪ-ڛ@Z@dp@+@@+@ͨ~@+@RHg@+@e@+@}@+@x@7*0U2b@7ة@2sS@2sYjq@1tj~@15xΆ@1._o @1,/@1._o @1,)&$@1._o @1,XC +?o"? +"?x?? +E?ָ?¨Sp*? ?&:η?R?T?'U?놱_?CϐR"?&C?Po{? uv?{j@@ @(@&@1@1??????f訛<Ow@?Q"9?)@wQ@k?qBjF?Js?Sa3=?b@hǁ:@@hr!.@hr!.@hr!.@hr!.@hr!.@hr!.@$/.@$/.@$/.@$/.@$/.@$/.@3YJ.>@0+ I.Mm@/O;d.Qn@/873.NC,@/873.NC,@/873.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @$G+ J@$C +=q@$G+ J@$E8Y@$G+ J@$H1&y@$G+ J@$Eں@$G+ J@$F@$G+ J@$Em\@h\@f$/@h\@g@@h\@glC@h\@i^5?@h\@hۋq@h\@i@7_o@7*1@23S@23MjO@1tj@1u%F@1=ce@1=<64@1=ce@1<쿱\@1=ce@1@n@˒:*@)š@)š@)š@)L/{@)š@)S@)š@)Ƨ@)š@)8Y@)š@)oiD@0s@0g @*"`A@*s@*XF@*X4֡b@* +#9@* lE@* +#9@* +Ov`@* +#9@* +0U2a}?^Q5P?{j?"?MA8?g?$?bM_x? ,C?j?1'7?ߒh!?Z,a?[h(?6?q6tN7?͓E'?O|q?Ѐ>(@@@@@,@,??????AF4Ր0?)/kr?#lE @9 @)0?89*uM?2cـ߹?lt3B?]@sk@@zG@{q@zG@|+N@zG@]V@zG@@zG@njV @zG@Hq@B\(@9"@B\(@AʉB@B\(@S;@B\(@?,͡i@B\(@D@B\(@E@82@80M@4Lhr@4M@vƨ@3j~#@3?K@2m8@2Ӯ2r@2m8@2qۑ@2m8@2 G-?Z=?H9?8NJH??  ?s5t?@>?7!,%?,e?DQ |?Y*.?$'^Y?r?w?& d?"Ux?bewFA0?{<K@@,@,@"@8@9???????p?UF.?R*-e?'zׇdm@񮌎@@XZj?tn?B/^4?1$??"_@lJ@@9XbN@9a+@9XbN@:@9XbN@9XbN@9XbN@9~(#@9XbN@8PN@9XbN@9 ~1C@_;dZ@_;dZ@_;dZ@^5?|@_;dZ@]/@_;dZ@^Ov_@_;dZ@^@_;dZ@_:ǭx@1䎊@1&IR@,kƧ@,k:)y@+E@+Ov_@*L/{K@*L/{K@*L/{K@*$/@*L/{K@*b=?`U8r?GA?N?XQ>?O8?_?bMn? ,C?|,!?4ډ3?֧O?H+m6?bF?u?y8$?͓E'?v?󰉋@@@@@,@0??????/3q@?(?wy +hO +?{5@9;k@^l(u?&܉?ϧ?H>[0?3pw@s kXg@@hR@hTj~@hR@hKjg@hR@hL@hR@hP)^@hR@hNMj@hR@hMU@7Kƨ@C@7Kƨ@8X@7Kƨ@~($ w@7Kƨ@J@7Kƨ@!R@7Kƨ@Z@5]ce@5ˬq @15?|@1jf@1~Vu@1zd7@0Q@0֡af@0Q@0@@0Q@0ԁoh?1j?MSMӮ?GM??Xs~??=?}ѿ,?nr|?f?FT \*?Q?u!B?~}o^?{ڵ?q?t@@@@@*@ ??????W*,hP)T>?K$7?M@3S.Mm@3Htj.Qn@2sh.NC,@2sh.NC,@2sh.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @Õ%@ݾQ@Õ%@K]@Õ%@ᰉ@Õ%@Ǔݗ@Õ%@*@Õ%@7@-@ۥS@-@l"h @-@ȴ9X@-@H@-@䎊q@-@{J"@8YJ@9hr@2&+ J@2"e+@1-V@1~@0xF^@0KƧ@0xF^@0JM@0xF^@0*1?o 6}?9؊?,fC6?j6_?4f(R?(ϢU?X? +?2'?]bn~?fW?Sw?(D?7-R?`x?':?T8?WZ@@@@@,@*??????P%d6?h<ـ?TkВ?aW@źz@#^?eˑI>?wsKD?{ @?H~@oϚOnn@@I^5@I^5@I^5@j@I^5@@I^5@{<{@I^5@{eO@I^5@ @ I^5@ I^5@ I^5@R@ I^5@)@ I^5@}T@ I^5@bOߡ@ I^5@"lc@3|Q@3ohی@1^5?|@1zpJ@0`A@0 b@0QiB@0Cfk@0QiB@0H0,@0QiB@0I0?|h2:?.FI?%ja a?^ŋ?vj?؄1?|h2:?4?6Ƴ?~nY?d}??q9?0t:m?t&?8;?z!?Ci;@@$@@"@<@8??????o%! ?RAJ?U|5Td?]wlB@п@-`z2?tC?|{?d>@[_Q@eQ@@nO.@nO.@nO.@nO.@nO.@nO.@+ .@+ .@+ .@+ .@+ .@+ .@9,<.>@5+ .Mm@4ȓtj.Qn@4u.NC,@4u.NC,@4u.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @pM@p&x@pM@p-w1@pM@pC,@pM@pIQ@pM@p:@pM@pR=@1@G@1@iB@1@Ov_@1@;dZ@1@kP@1@+k@8B䎊@8?-V@3S@3,<@2~"@2ސ$t@1ce@1}Vl@1ce@1䎊r@1ce@1˒:)??t0?=tQF?_?ZAj?4 ?}ѿ,? l?5 ?N?pPȻ?XԠ#{?yjk?)Zw?7}?Gϵ'?ĭ? +r@@@@@,@,??????c6Q;?_~d?\B0a ?I@pJ +m@-?sk\?oOZ?ꜵRk?|3@mMI@@ɎV@ɎV@ɎV@Ɏ+@ɎV@ɏ\(@ɎV@Ɏ+@ɎV@ɍ8@ɎV@ɍ8@F@?|@F@j~@F@F@F@O @F@3@F@[@0v@0v@*V@*(@*x@*x@)`d@)m8@)`d@)zG@)`d@)m8?a(?&H?"?˅T?/`?:?bV,?r/B?|,!?6)}?@?M\ٓ@?b@?~('?s@a?avh?O|q?O|q@@@@@,@(??????@0 ?zrX?$`)?]=@Ɏ5.@ܮ?4P?DBpA?cA?4;?׊@s 7@@$Z@'z@$Z@%b@$Z@(=@$Z@'a\@$Z@"k@$Z@$@}E@g@}E@p@}E@o-7@}E@r+o@}E@t@}E@QHtz@8@8}@3+@3{5]@2~"@2P`@2 +0U2a|@2)@2 +0U2a|@2~wn@2 +0U2a|@2 +ɋz?u?SBx?4?U{??l% ?Au 8?+ef?Yq?0e?p:_j?Y=OD?,97?ZOM?ŭLc?ǹ۝)?;11?1D +"r@@$@,@*@5@2??????T`8?k:?G0!?@?S*f @%i!@vVHW?]?g= +Z?sVH?-k@pjΕ@@p +@n@p +@C,y@p +@䎉@p +@p @p +@W>7@p +@Y@O@vȴ@O@T`e@O@1@O@C@O@[W>@O@@7cg l@7Uoi@3 ě@3 ě@2tj@21&x@1sh@1$/@1sh@1F +L0@1sh@1Q?lOx#?'?oԀ? ?.Kn?f]G?}?? :?>??l{9َ?Z)?įJ?H?O?< N ? +r?<71@@@@@,@&??????`ŧCR?^V @w\?dJ\L,@{@t?nQ[3?vi,?QH?#׉@r*!e@@ ě@ ě@ ě@ !.H@ ě@ k@ ě@ !'@ ě@ |h@ ě@ |h@ݞ5?|@ݞQ@ݞ5?|@ݞѷ@ݞ5?|@ݞOv_@ݞ5?|@ݞvȴ9@ݞ5?|@ݞ҈p@ݞ5?|@ݞߤ?@3#g l@3#Z@/tj~@/a@N@/DZ1@/DS@.Ǔݗ,@.ǻ/V@.Ǔݗ,@.@@.Ǔݗ,@.8}I?| ?Z.?$C@?:Z2b?G?t?| ?0n=Q?O(?3.Yl?!U?{?eDQQ?|׿pY?l?=Cb?xqC?L?*Z}@@@@@,@,??????(|>P?-R0?Id1@ }P@ݞ+?LlX?$ ?$ ?Vb~@f!u@@F@$@F@Fs@F@[W?@F@4m@F@[@F@ᰊ@t@S@t@n@t@R<7@t@ѷ@t@C,z@t@~@8qiC@8 [7@4^5?}@4nP@34tj@3! @2Ǡ k@2ө*0U2@2Ǡ k@2g@2Ǡ k@2@N?`m?@u-I?MDe?oȞ?e7@??pEIt?N`? Ķ?"`?qn?O[?/?Fg*V3?*0x)?5_?8wx?8@@@@@"@*???????s1u"?qhw?iHl]x@EN@H?,pxp?z?}{[? @qb^@@Ƨ@m@Ƨ.@Ƨ.@Ƨ.@Ƨ.@Ƨ.@Fև+ @Fڟv@Fև+ .@Fև+ .@Fև+ .@Fև+ .@Fև+ .@8H@8؆YJ@4ٺ^5?}.Mm@4Htj.Qn@3ush.NC,@3ush.NC,@3ush.NC,?F^S@8#@8:@8 >+@8I@8?@8@8i@8@8S@8?eˬup@8 *@8p@8@8 @8 @?@É7Kƨ@Éx@É7Kƨ@É @É7Kƨ@Él@É7Kƨ@Êqi@É7Kƨ@ȏ]@É7Kƨ@È>BZ@^5?@~#@^5?@ @^5?@^5?@^5?@1&y@^5?@Xy=@^5?@TɆ@5*0U2b@5F@1{ I^@1z~@0"@0Ft@0n_o @0mcA @0n_o @0mU=@0n_o @0mb?|O?Čۨ1A?\H{gX?GZ0e;?\7?7F?|O?u߿?{d?G>G?M?GE?+:?9o??RJ? Ğ?2[s@@@@@,@*?????? ->?*|.s-?$z\فR@ÉW@ce`?J?D߬?ɝ?lsז?h=t@fG@@a["`@aVȴ9X@a["`@aIrH@a["`@aQA [@a["`@aU*1@a["`.@a["`@aZ)y@@#S@@+j@@:~@@" @.@@ /{J@84m8@8M:@4Y^5?}@4FA@3tj~@3{@2D*@2V@2D*.NC,@2D*@3- ?F^S?yK?»?sNX@8I?I?+-/? o]?;8+?ђ@8S?fD?1?Эs_`?7V/r?/#ˮr@8 ?,yfY@@@@@"?????@bM@O;d@bM@?kE@bM@IRO@bM@Kg@bM@|E@bM@t.o@5?|@vE@5?|@d7@5?|@r3DZ]@5?|@8 !T@5?|@8X(S@5?|@<]?@8zqiC@6n@30ěT@1x^@217Kƨ@0Z>Ũ@1D*@0UU F2@1D*@0Xҿx@M@1D*@0V|_?{si?S?w>Z?YF?+i?]lmY?(?gQ?bGF?7G?̽Vo??ǝK]{f?e?Ἅ?t=?B[@\@~$@\@84@\@E86@\@\@\@Q@\@L@6 ]ce@6 N;@2 ě@2\(@2"-V@2" I^5@1Tm8@1T!-w2@1Tm8@1T/@1Tm8@1Usg? ? KG?#}i?ƠJ-M?j?PBZ@0_o @0J#9@0_o @0,zxl@0_o @0ѷ?3a=?q' +B?K?eU5?0 碽?et?}ѿ,?-NI`(?&?{d?.D?؟#ߦ?nE?.+?@?π9"?3?`i2@@@@@(@(??????pGR?K?H?JiAl?I1Am@]d-5@?d +y?hpmi?;)[Ճ6?&ٺ@fJ-Z@@ I@~#@ I@)^@ I@4֡@ I@!-@ I@B@ I@p:@bM@u@bM@-V@bM@&x@bM@@bM@u!@bM@9Xb@8@9o@4\I^5?@4Nvȴ9X@3tj@3@4n@33&@3䎊r@33&@34JM@33&@33 +=p??xB?=£?,?'֙:0?s?*Rå?D12?\כ?*?k?I}?L /?]FV?ZaizD?ϯ<(?H&?&X;@zs>@]W A?+b*K?5!t?QZ?dy3Q&L@s@@m@n@m@'J@m@R~@m@9^@m@]T@m@M@qS@qStj@qS@qP#@qS@qR.H@qS@qTz@qS@qRL@qS@qS8 @2V,<@2VIQ@.tj~@.@@-?;dZ@->@,At@,Q@,At@,1@,At@,5?^m d?{TV? ?E[?:r? ?bQ넛?>pު|?^<+?/#ͤ?֓j?P p?bF?/?y?Dв?a?~.@@$@&@&@8@5??????F@42?-O(?%|Ct@X>o@qS?;T?4Vꇑ?s8$&?b( @stn@@\(@dZ@\(@v@\(@?@\(@3@N@\(@)@\(@q-@vE@fffg@vE@'fB@vE@=+k@vE@֡a@vE@CF]d@vE@$tT@9~($@9"M@5^5?|@5eF +L/@47KƧ@4ѷ@4O M@4L_@4O M@4H\)@4O M@4<[W???[G? dWB?+3#I?FILXT?{J?ʻd9\?ʳy?>?p:Y_?B?v$>?JzUf?/?ЙQ$?{_@j?V?:@@@@@@???????/3$ ?w G?[nd@/3@1p?? t?Xk?=)Q?1B@l}~@@"S@"v@"S@"Y<@"S@"R@"S@"K p@"S@"dp<@"S@"O@?|@vD{@?|@uxJ@?|@g@?|@ r@?|@@?|@ t@8YJ@8z9.@48r Ĝ@41,@3V@3Ÿ@2[W?@2@2[W?@2[s#2@2[W?@2&H|?|h2:?q-u1?Ě\?:@Zt?jå?qP?8 ?/?!dxD?|R2??a5Ut?W)?o?4C?7Ź ?GOe?|=@@$@$@*@5@5??????}"QE?QM?Eb'Ã@"z@x?r_lx ?ep5?O H; ?/`, +>@h):ei@@Hp +@I 18c@Hp +@H;@Hp +@H,#<@Hp +@I٦@Hp +@I jy^@Hp +@Iod@(E@(@@(E@(r^zi@(E@(nY@(E@(h@(E@(s2@(E@(l@7įO M@7ZL"r@3|hr@3Yp/@3gKƧ@3yF^`@2Q@2D@2Q@2u,@2Q@2õjM??ٗ?fk?N?SPǹ??_LQ?Xd?ǀSk ?oT?]\}a?$?35MQS?ӝpf? Ͽ?A??#? V?oGG,@@ @(@(@8@7???????P/?}:UD?a"FMo?B|ڄE@I r%@(kdf?}p!g^?bOTB?q4*?}7ʺg@lb\@@f|h@f}p +@f|h@fu$@f|h@fi@f|h@ft@f|h@fl@f|h@fiDg8@G/@G3334@G/@GЉ'Q@G/@GV@G/@G @G/@GH@G/@G7@8V,<@8T7@4 ě@4GE85@3]V@3w/V@2Ǡ k@2"@2Ǡ k@2S@2Ǡ k@2o?+-/?Ɖ?HFC?g_$?fl?LTO?^*?'`?VǷ?TV?қv??S[D?};?r?y\,?1ƛn? Ğ@@@@@,@*???????[? 7?dV?Xl&7O@f!@Gc?ybs?q;9SRA?ӿLh;?n 2@eNH@@@A7L@@-w1@@n@@L/{@@}Vl@@~iB@L@KR@L@GfB@L@L~($ @L@Jo@L@Ev@L@BѸ@3D@3䎊r@0+@0?@/mO;dZ@/g k@/oi@.u"@/oi@/ěT@/oi@/IQ?|O??,Z?;C??`?)'3?|O?ew?S1z?@4ٺ^5?}@5#GC@3-@3u@0|Q.>@)~"@) Ώ@(h1&x@(iAp\@(3PH@(49ftE@(3PH@(4S@(3PH@(36@8 +Ny?w<5ۙ?'D ? +w"?L&VB?{y@82r?|F ?&Z?8+ ?*Sk?+n9u@8L?6vJ? +?؀6>?z^j?|@4@2@1@D@D?????@u@$.@u@Xy>@u@`B@u@\O@u@@u@D@fffff@e`A7@fffff@t3@fffff@p ě@fffff@m q@fffff@jOv@fffff@i @7uS&@7s%2@3+@3a|Q@1"`@1oiDg8@1Y~($ @1Q @1Y~($ @1WsPH@1Y~($ @1Vȴ9X?F/P5?q?Aa[?˄&.?`?lP {?Br?&dU(?ދ"?:`?c?SS?4!j?U.?m!?? +r?k!l@@@@@*@*??????_?Rl?9EI?E[7@$N@h/:?Z>:?fMvu?$=/u? *A&@hzIW@@(@"@(.@(.@(.@(.@(.@Jo@;lD@Jo.@Jo.@Jo.@Jo.@Jo.@6H@6#x@5 ě.Mm@4$j~.Qn@4&YJ.NC,@4&YJ.NC,@4&YJ.NC,?Z@8#@8:@8 >+@8I@8?Z@8@8i@8@8S@8?A@8 *@8p@8@8 @8 @?@>`A@>O @>`A.@>`A.@>`A.@>`A.@>`A.@̏\(@1@̏\(.@̏\(.@̏\(.@̏\(.@̏\(.@7g l@7-FC@3^+.Mm@2ttj.Qn@2a:S.NC,@2a:S.NC,@2a:S.NC,?Bp@8#@8:@8 >+@8I@8?wvHf@8@8i@8@8S@8?-@8 *@8p@8@8 @8 @?@s3333@wi.@s3333@.@s3333@rR*%@s3333@s"@s3333@r5en@s3333@s^@~"@qm@~"@gI|@~"@mM@$@~"@j&@~"@{ ,@~"@sQ@92@8 eBwS@4n5?|@4i1ѵ@3V@3Ch@2fYJ@2a_w枚@2fYJ@2b_MK@2fYJ@2_?g)n֔?f)Y?5?w)(;?5t?]\x?ؗ?>?M?ic `?R!?=.A?Gl?$?/)R?:|=?5g@?o=)@@"@@"@3@.??????A`v7Ñ?5R#?ln|1@sPD@zPWy?GH1z?_fA?f@ +Vyv@pR]@@R@ I@R@5Xy@R@_o@R@.3@R@빌~(@R@ᰉ@zG@zv@zG@}+k@zG@|ߤ@zG@zu%G@zG@{lD@zG@{6@5v@5qu"@2S@2L_@1_-V@1_?@0z,<@0zD@0z,<@0y0 )@0z,<@0x?}ѿ,?Čۨ1A? ?:Z2b?R%(0?-/ge?|O?j%Ra?S1z?ѷ@(\.@8!..>@4 ě@4 k@3`A7L@3C%@3~($ @3;A@3~($ @3($ x@3~($ .NC,@8J?-d?Z-l?":Li?g;+u@8@8J?ʀ+?o?h?5nM8@8@8p?FQ?җQ;?u}+?B@8 @@@@&???? @`A7L@`A7L@`A7L@ae@`A7L@a.H@`A7L@a [@`A7L@`D@`A7L@f@HO;dZ@HO-@HO;dZ@HIl@HO;dZ@HJ#9@HO;dZ@HE@HO;dZ@HM@HO;dZ@HM@2 xF@2%1@1&+ J@1$g8}@0`A7@0Ft@0p@0m@0p@0lN;@0p@0h9Xc?^Q5P? KG?jhq9? +?|?~?bV,?Q_ڸFN?"a?Nw]6?~?Ft*5?ă$??>Zw?GZ?їJ?a@@@@@&@$???????`3S?mw$?Qs?UKD@b"@HJ~~?`_W?d"T?qi4V?mc$@r1@ +@?|h@?vȴ@?|h@=p +@?|h@=H@?|h@=E@?|h@B`B@?|h@Cn@eS@g+ J@eS@dq@eS@i @eS@d?@eS@eoiD@eS@hTɆ@5r@5qs@3=hr @3:c @27Kƨ@2Vu@2[W?@2y @2[W?@2RT`e@2[W?@2_o?|O?L?^?E`?bJֵ?f]G?|O?V"y$R? + D/?#q\-v?x9l?äqY?YE?iTC~t?[Rb?l? N?DV@@@@@,@ ????????ߐ?s?>ObQ?8Al-@@zx@gk?^~a7?YKwQ?ơt"?Y`m@f@ @S +=q.@S +=q@S{+ @S +=q@T=@S +=q@TT@S +=q@SP1@S +=q@TF@9XbN.@9XbN@iu*@9XbN@E@9XbN@՝@9XbN@%͗@9XbN@eN@8g l.>@4R I^5@4GO@3@`A7@2h,@2ush@29r@2ush@2]G@2ush@2U@8J?M?*Z?qB_?i L%?8PA@8J?{ ?z1V?ѽ?G? ?X@8p?Nz?sp?H?g< +I?B@$@&@,@;@9????? @r @7Kƨ@r @$G+@r @v @r @*u@r @$#@r @`<@W +=p@X" 6@W +=p@X ).@W +=p@S'`<@W +=p@X@W +=p@W| @W +=p@WV;P@5g l@5:K@2S@2Re;@2t@2 K4@1xD*@1xzzI@1xD*@1{@@1xD*@1zxRW?}#? H??IA?Q\?YD="?Z=?"f?~?Q[$?a]6? ?/p?Ff?$?t?+;b???g@@"@ @"@5@4??????Cx(0r ?%M#?}}it@}g@X8!?DL,?;s$? pL?+. @g@Աݘ@ @KT@K w@KT@J;"`@KT@J_o @KT@Jо )@KT@KTɅ@KT.@0 ě@Izo@0 ě@@0 ě@9 k@0 ě@cA \@0 ě@a@N@0 ě.@8D@8MK@3S@3&@2Ͳ-V@2a@N@26z@2;U=@26z@2W,@26z.NC,?:?"-f?怯8S?z]?&Z@8?-a(^?̋0?hK?CRn?R?Ѷ=(H@8?b?Y+:?JzUf?Y?M}td@8 @@@@@,?????@k=E@k2@k=E@kBh ԕ@k=E@kDe@k=E@k@'RTa@k=E@k?b}@k=E@k>@ @ ht@ @ hr!@ @ _@ @ s@ @ о )@ @ s@8D@8JL@2+ J@2@N@2Ft@2Bs@0̿[W?@0u%@0̿[W?@0fB@0̿[W?@0s?F/P5?4$?g ?̒?j?)]\?Zm? ,C?_@?0N:s?C ;?tK?2m?㑏\? t4??*Z}?SP@@@@@(@(???????g?K?P@¸>?X}Ti|e@k>j@ )R?s|?i?;(?M@q/}S@@ffff@?|@ffff@߾vȴ@ffff@ؼߤ@ffff@ԯO @ffff@hs@ffff@\(@0 ě@(r @0 ě@V@0 ě@U@0 ě@'lC@0 ě@\PH@0 ě@Y+@904m8@9+"`A@45?|@4*0U2@4,j~#@3@3u@2y @3u@2L_@3u@2?#[?-56+?+-?u {N?/?@i?ҸBz3?ڲt?j1?@$v5?[c?e,Z?LO? U)?|p&?2HD?vۋ7?_;G@@@@@,@&???????d` ?~껤?FRyߦ?y;Ħ@1}@ b@=l[?A?F6?W??c @@n +gE@@;lD@;lE@;lD.@;lD.@;lD.@;lD@;dZ@;lD@8@`B@&@`B.@`B.@`B.@`B@ +=q@`B@;dZ@5ks@5jg +@0+.Mm@0>Vu.Qn@/`d.NC,@/`d@/MjP@/`d@/?}ѿ,@8#@8:@8 >+?J+?I ?|O@8@8i@8?q?p?6z@&x@[W?@b=p@b-V@b=p@brT`e@b=p@c)rG@b=p@b{@b=p@b6@b=p@b-@8@8@5^5?}@5nѷY@5@`A7@42a|@4Ǡ k@4~Vu@4Ǡ k@4@4Ǡ k@4JL?_$?95\?ْ7IDu?{osG'?(x/?%$?ϱQm?GZ?[?~'z?V,??֑엱?T?"i]P?!i?.P?'w#T@@@@@*@,???????JTIH?3A?iP@8?sd3@pc B@b5|?vѻpn?Uz$?-bT?݇1@hd@@Q.@Q@oi@Q@&I@Q@]c@Q@ѷ@Q@@5?|.@5?|@7e@5?|@3|@5?|@3g +@5?|@1N;@5?|@+]c@4mv.>@2+S@2(U@1`A7L@1MjP@16z@1M:@16z@1MjP@16z@1<64@8J?_?ojVrn@8@@8kP@2^5?|@2ʅݘ@2Htj@2G)^@1:S@16z@1:S@1[6@1:S@1- r?ϱQm? e?vG?W0 ?j? ٖ?Wl?q ?v@b?#X?SY?pN.>7E?Ny?Ϸ+?qn??:1?DV@@@@@*@(???????I'!T?DcYC?:(YΜ?Fs3@ѐ@'ʉEa?PWw?U"/K?x0^?nYh\@ryQf@@>`A7@>;dZ@>`A7@>@>`A7@>1&@>`A7@>,zx@>`A7@>"h @>`A7@>n.@}u@}]/@}u@}d/@}u@}I^5?@}u@}ح@}u@}@}u@}iC@8v@8jOv@4?|h@4]K]@4`A@4ěT@2D*@2F]d@2D*@29Xb@2D*@2u?]?'rCr?Q"Ě%?CF ?=W?if?]?#?^,?A8 K?*v7?.?*wjs?j? U?J? 3?F?@@@@"@$??????o\3{?~'X?|/{?R4@>zK@}zA?H?`p%00@TV?#P@rds@@-hr@1&y@-hr@.2@-hr@+j@-hr@ (@-hr@ca@P@-hr@ԯ M@3O;dZ@14F@3O;dZ@1@2䎊r@1 +=p @2䎊r@1zxl"h@2䎊r@1YJ?us\?_n?n? +Y? +R?NJH!?F/P5?Ah:?6eI?c?~?c/~?' +}B?ɅoiE???hc?F?;WZ@@@@@&@*??????^U?cvo?tYFDy@ԐQ@1#qbzV?Oo?fa@0?'^Xx@_s5@@pTF@pTzG@pTF.@pTF.@pTF.@pTF.@pTF.@-V@1'@-V.@-V.@-V.@-V.@-V.@5B䎊@5Bᰊ@2Y^5?}.Mm@2`A7L.Qn@1!:S.NC,@1!:S.NC,@1!:S.NC,?}@TΥ@8#@8:@8 >+@8I@8?`/.~@8@8i@8@8S@8?V3@8 *@8p@8@8 @8 @?@x~"@x;dZ@x~"@x@x~"@xvȴ@x~"@x'RT`@x~"@x~Q@x~"@x}H@گw@گ\(@گw@گ;dZ@گw@گv@گw@گn@گw@گw@گw@ڮO@3*0U2b@3Dg8~@.`A7@.{@.:1'@.:@-Z@-$@-Z@-S&@-Z@-F]c?|O?`?(?̒???|O? aҹz?90?0N:s?@?PS2K?2Y0?8 T?|׿pZ?xqC??B @@@@@@??????$`fY??,'k?:<@x פ@گ6m$?LO?8`kfl?UG?Ǜ +vZ@g~`q@@ěT@ϝ-@ěT@ں@ěT@^ @ěT@S@ěT@x@ěT@@bM@ S@bM@ ԕ@bM@e@bM@@bM@t@bM@@8쿱[W@8@4|hr@4 +L_@3i"`@3d/@2a:S@2_.H@2a:S@2^iB@2a:S@2\Z?1j?P1"?K?\2?W?=?bk0?g3?qN?~2l?4?߅D̽}?=6?J>?Cp0x?*6SpK?mΝ? uf@@@@@(@"??????aN>?c`?Cř6py?U6@Ǽ@@E㖔?l-LYdFy?hcE{?K/~/D?Ci@q&u@@a"`@am?\? 8+??Ċ\?\ƥ0?VAo?3Eb?2DB?"IHۜ?`1f??Z,k?_?L=@@@@@,@*?????? +ă?}렻@?eN?lw>v@a!&@gN5?~??%b ?L`@_BH@@AƧ@AI^5@AƧ@Adž&@AƧ@A+@AƧ@A@N@AƧ@Am\@AƧ@A‚@@Hu?|@Hr ĝ@Hu?|@Hě@Hu?|@Hp ě@Hu?|@Hs@N@Hu?|@Hrs@Hu?|@Hp )@6|Q@6a|Q@4R I^5@4Mb@4;Ƨ@47@3@5@3} qv@3@5@3|쿱\@3@5@3{xF^?sD?F?IK?GuS?pK ?t]O>?}ѿ,?շL?Jj??c,*?#N?!A +m?&!+?@K/{?uq{a??_@@@@@&@,??????a" 4?NzT7?(lj@A(@@@@@(@ ??????Jy.ٵY?0%f?@@o@ٶVH??͓.?6?yo?!@s˻@@26z@0ce@0fB?|O?q' +B? '?_?Z)?ZzZ?1j?[ K0R?]:.?@Cv?[H3? a?y8#?/?W?__C?_խW?M\@@@@@,@,???????)O 7?(+pZXN?BZ@&x@(ۋq@&x@*L@&x@(eO@&x@)oi@Q@Q@Q@RW@Q@S|@Q@Q@Q@RS'@Q@TɅo@2*0U2b@2@1 ě@0}Vl@0`A7L@0Z@0 k@0fA@0 k@0u@0 k@0%F +L?^Dw'?q' +B?1f_?Њ?_?sU Z?bM_x? +xՎ?O(?ą6 +?1?ҥX[?bMky? +?3Z\?$H?2[s? `@@@@@,@,??????Ba?Vu?A"1?2>ߙ@)LV@RП"?Pl%U?AI?I|?y,w2@rFw^@"@ ě@ % @ ě@ #N[z@ ě@ ! @ ě@ jzO@ ě@ @ ě@ *(*@E@/@E@49c@E@.\2@E@5 V@E@ @E@gxk>@87@@8(׺[6@4^5?}@4^@3Z~"@3^ l?@2:S@2,i:@2:S@2߭Y}O@2:S@2?π>?8?eT3?x?4 ? Qx? +?M6M^?~P230?Ai?]V?uk?T?%?V}*? +gH?;1?b.xt@@"@&@"@7@1??????eGi2f?\.bL|?h)a@ ؖ@}?u5?E*??|#I@n>@#@B I^@@n@B I^@A.H@B I^@Ae@B I^@A7K@B I^@@҈@B I^@@IQ@FzH@FV@FzH@F*0@FzH@F[W@FzH@FV@FzH@F1@FzH@Fu!@5@5 +=p@2hr@26z@24tj@26!.I@1u@1/V@1u@1 '@1u@1KƧ? ?: ?ِ?%?Xe??#?1j?P ?;,?ihA?x9ξO?IH!w?Aᆽ?=d?],V?sMQ(?ĭ?*Z}@@@@@,@*???????@?=x? 3?*o5yU@@K@FT@?@p~?J+t?j ?8;(@g2nr@$@u ě@u|h@u ě@u*1@u ě@u :@u ě@u+j@u ě@u"ѷ@u ě.@6ȴ9X@0`A@6ȴ9X@/V@6ȴ9X@An.@6ȴ9X@:6@6ȴ9X@ES&@6ȴ9X.@8@@8J@3S@3;dZ@3tj~@3B@2:S@2>BZc@2:S@25Xy>@2:S.NC,?NIɮ?+>?|v8?V0O?=-?@8?}?FHN?.j ?G>G?PZj@8? U?їJ?0?bv{3dZ?@C@8 @@@@@,?????%@&x.@&x@wkQ@&x@4m@&x@@&x@˒:@&x.@lC.@lC@jO@lC@w1@lC@wj@lC@J#9@lC.@9+s.>@4Y^5?}@4F-@3tj@3RT`e@2@2!.H@2@2%F +M@2.NC,@8J?u4ޕ?`M:??WTi@8@8J?rA?P?!?07\@8@8p?:h$^z?^i? B?y ^@8 @@@@(????&@ĹXbN@`B@ĹXbN@ܑN<@ĹXbN@Ŀ!-w2@ĹXbN@Õ%@ĹXbN@F@ĹXbN@8@zH@u@zH@|@zH@L_@zH@\)@zH@@zH@[7@7%!.@7,@4 hr@4`A7@3'KƧ@3/O M@2Q@2T`d@2Q@2TɅ@2Q@2,FV?h??*l?l ?"6Wz?q ?)S&?^?L E?L?Ծ?ymcw\?0a@@@@@(@"???????fdq,wa?^DO?d9TQ9@)8@kb?zMM?{0?Ykc?X|G@jD08m@'@"@~#@"@@"@x@"@e@".@"@&1@"`@bM@"`@}<64@"`@}H@"`@m5Xy@"`.@"`@@4#g l@4 ѷ@1+ @1$J@1-@08YK@0m8@0=!.H@0m8.NC,@0m8@09|?]??`L?.?L_jf@8I?,ϖ?]?O?2?VfN? '@8S?TD?*wjs?UbB2? ё٤i?pO+@8 ?q2?@@@@,?????(@r-V@2@r-V@6z@r-V@Z@r-V@T3@r-V@e+@r-V@|@E@Em@E@Ex@E@Gn@E@F@E@E҉@E@G&@9N쿱[W@9P4m@5f+ J@5sh@5t@4ݿH˒@4p@42C,@4p@48YJ@4p@3?Úz?vd? OV?av ? <)?6n?:-%?FSf?8/J?S~?w}Z?T?s?z?yMa?9G?ÁK?!f@@@@@,@??????Ip?U ?K~Ui?> ē@(@FlD?'q?G2?=@ I@m!}Sִ@)@~@~ +=@~@~dZ@~@~W>6@~@~6@~@~D@~@~D@4b`B@4dS@4b`B@4a7K@4b`B@4a@4b`B@4a|Q@4b`B@4dT@4b`B@4c@7!.@7K]d@2pěT@2rT`d@1-@1lD@0䎊r@0@0䎊r@0 @0䎊r@03?us\?j‚?#}i?q@v?yq?+ʦ_?E?\tW?;~?agf ?Al.6?ȏ'T?lQ? U)?],m=??W|DC?M684@@@@@,@ ???????Wî?.)C?PYa?DA&c@~@4c-^?l X#W?]?c ?є8@n~I`i@*@K*~#@K2ւ@K*~#@K+C@K*~#@K&x@K*~#@K$/@K*~#@K'E85@K*~#@K!e@ȴ9X@4uֹ@ȴ9X@H@ȴ9X@#e@ȴ9X@xl"g@ȴ9X@ @ȴ9X@XbM@7uS&@7H@3 I^@3qiC@3-@3@2,<@28}I@2,<@2@2,<@2lC?za2?:aGS?reE??ҧ?*?pV?2(_??c?/:?h_N%?V.H??,DP?~}o_?Z?b?aʕTI@@@@@(@*???????^?\ul?kZG +?<>BU@K#@oBհ?}jRL]?cv.?XQxב ? @p9N@+@J=p@Il@J=p@J@J=p@M g@J=p@LJK@J=p@Ie@J=p@H+oP@O$/@On@O$/@Oe@O$/@O _@O$/@O @O$/@OP@O$/@ORQ@34m8@3Vϫ@1sS@1s:'@1t@1t]Ք@0\Q@0\@@0\Q@0][nh@0\Q@0\v]?}#?.od} ?EY?v[‡?a!(\?,OKu?y%??#?}ѿ,?pPȻ?D?{4k?JL\?C ;?m~Z_s,?Rii?],m=?9XNu?2[s?L8AS@@@@@,@,???????1f0?*®?*@Yy>3@PĶ@ +sd?Jˠ?6@N?~?& ^}(@f[#@-@+ J.@+ J.@+ J.@+ J.@+ J.@+ J.@",1&.@",1&.@",1&.@",1&.@",1&.@",1&.@8 D.>@3 I^.Mm@3-V.Qn@2D*.NC,@2D*.NC,@2D*.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 .@3H1&y@3J~$@3H1&y@3Jd8@3H1&y@3Iᰉ@3H1&y@3GfC@3H1&y@3Ezxl"@3H1&y@3Eں@t@ttj@t@tȴ9X@t@t}Vl@t@t_ح@t@t1@t@tᰊ@7䎊@7m\@2+@2;5X@297KƧ@2873@1sh@1Q@1sh@1<64@1sh@1wkQ?|O?hX*?5$?ݡu(r?ZAj?Q`?sD?RwS5?]:.?@Cv?7=^9?EȀ?oܧ?rbT?^&?vI?<Dx? 4e +@@@@@"@(??????Qմ?Ed`?!׻D٧?2e…_@3GS@tx$?CB>՘?Q w?E;p?3+r@ij,@/@A$/.@A$/.@A$/.@A$/.@A$/.@A$/.@^`A7.@^`A7.@^`A7.@^`A7.@^`A7.@^`A7.@6mv.>@3° ě.Mm@3W-.Qn@2䎊r.NC,@2䎊r.NC,@2䎊r.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 0@2 Ĝ@\(@2 Ĝ.@2 Ĝ.@2 Ĝ.@2 Ĝ.@2 Ĝ.@]+@]"@]+.@]+.@]+.@]+.@]+.@85S&@8 (@3+ I.Mm@3.".Qn@2G k.NC,@2G k.NC,@2G k.NC,?]@8#@8:@8 >+@8I@8?]@8@8i@8@8S@8?*wjs@8 *@8p@8@8 @8 ??1@1&x@0`A@1&x@0oiDg@1&x@2s@1&x@2s@1&x@/v_خ@1&x@0`A@A ^5?@A +=p@A ^5?@A@A ^5?@A ^@A ^5?@A C,@A ^5?@A +=p@A ^5?@A 6z@3*0U2b@3@1+S@1+Ƨ@0Ͳ-V@0Ͳ-V@06z@0!-w1@06z@0쿱[X@06z@0qi?2}?m?&??_?PN ?/?֘>D?v_.^?3?ad|@@@@@*@&??????|?#˟ ?7cDѫ?2ηk@1e,@A +\?W~N8?;$bA?A_Ma? eS1u@g1E@2@a.@a@be+@a@{/V@a@eo@a@jW@a@heO@2.@2@2>6z@2@2>B@2@2և+ @2@2͞'@2@2Ǯz@9O M.>@3I^5?@3wkP@2Ͳ-V@2'/@2}ce@2ft@2}ce@2kJ#9@2}ce@2l~($ x@8J?rk?7'v?Qi?Kn(?rW@8J?U +?00?.,?E!?s?|@8p?&3?Q?&|?Q?]?5@@@@,@,?????3@w@wj~@w@wQ@w@w)^@w@w @w@wm9@w@w-@mV@fffff@mV@i @mV@vC@mV@-V@mV@Zv@mV@=-V@9*0U2b@9u"@5+ @5TɅo@597KƧ@57#@5 [W?@5Ϫ͞@5 [W?@5?@5 [W?@5IQ?1j?UW?[r'{n?E>?%?V᷵?% ?’?is?ƣL?+ҥ/?Z?^&Mka?$jB?7V/r?0V?+ߎ ?7Bj@@@@@&@(??????b*jH&?YC@-V@,zxl@c +=q@dZ@c +=q@b`A@c +=q@` qw@c +=q@h\@c +=q@`[7@c +=q@c9@7v@7u@3kS@3jg +@2M-V@2LZ@2iB@2D@2iB@2@2iB@2|hs? ?@@No9?=N K?|*(?PY8~Qj?\.:@? ?nr|?F^S?>\?MuVQ?jOI?$M?p-t? SF?>?&f?&f@@@@@@???????O#7?C ?J%=z~@,p@dvP߅?c~Kut4u?k7LP??PU@g3#P@6@=E@/\(@=E@ʚ~@=E@PH@=E@6@=E@>ߤ?@=E@?vȵ@@ ě@@%m\@@;dZ@@-V@@@@@9,<@9\)@3hr@3ؠ- @3`A7L@3@D@1!.I@3NU@1!.I@1Q @1!.I@1נ k?Y͍_?1d?b?+|?ZAj?~?TU?~^?p4?ӐW? ? Ӻ^?M,?+>G?`Ƕ?t"0D?7zE?{2@@@@@&@(???????ndw?sP?t5F?;t,@=7*@x۪@4?7?ņVJ)@)[V@oG+<Ý@q ^ۢ@7@'vȴ9.@'vȴ9.@'vȴ9.@'vȴ9.@'vȴ9.@'vȴ9.@BE.@BE.@BE.@BE.@BE.@BE.@8O M.>@5S.Mm@5lj~#.Qn@5ush.NC,@5ush.NC,@5ush.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 8@8 I@8V@8 I@8$~@8 I@8G@8 I@7}$@8 I@7N?@8 I@7tL@r @'*@r @@r @DŽ3@r @SO@r @kV?2O*҈p@瞸Q@7>6z@瞸Q@i@瞸Q@4K@瞸Q@璽<6@ Ĝ@O@ Ĝ@#@ Ĝ@ ҈@ Ĝ@C@ Ĝ@?[W?@ Ĝ@UL_@4(YJ@4'P&@1 ě@1=qu"@1R`A@0ۅQ@0D*@0fA@0D*@0]cA@0D*@0 '0?|b@?L-?*$*n?*cyb?nOQ?98?|h2:?5ֵ?סϟE~?*Gk?MWXRk?ÉX\?.r?{dph?t߽R?ѳ9?]2?mB@@@@@,@,??????y^@?F?t8Mm? +_Q@甌 @= F?{RR?CF ?'# ?91)8?+-/?+ I?v׆7? 5Y?MJed?v8' ?OW?Fۯ/?0YR?$@ I^5@ȴ9W@ I^5@9+@ I^5@hs@ I^5@+Ƨ@ I^5@(@ I^5@@@&x@tj~@&x@@&x@9X@&x@ I@&x@\(@&x@E@8Q|Q@8rGE9@3° ě@3P{@397KƧ@3حV@2D*@2qi@2D*@26@2D*@2- ?}?_b*?'=DP? '?ߩ?*=U?us\??&?b ]jZ?R?#N?3?Эs_`?X?Dۖ?o;s"?4@@@@@@???????oww#a?fdlC?vWBZ@w>z@?坘?9h?315l@Ij(@f^Q@?@\E@\Z@\E@\\(@\E@\@\E@\@\E@\@@\E@\$ x@n[S@nR-V@n[S@nr@n[S@nB3@n[S@na@n[S@nA.H@n[S@nAr@8G>6z@8AA [@5hr@5ae@4j~#@4e+@4G k@44%1@4G k@4@bM@4G k@4J,0@j)@@@l1&@qhr!@l1&@n2@l1&@q @l1&@rs@l1&@nc @l1&@nV@ I^5@\)@ I^5@@ I^5@$tS@ I^5@v@ I^5@PH@ I^5@?@8(YJ@8 8Z@3 hr@3 (@1Ƨ@1^5?}@1@1@1@1C\@1@1<쿲?jqp?Ѝ`Hh?Gk;m?Fq/b?2F0?5Ov_@@4J^5?|@4J@37Kƨ@3/{J#@3._o @3&fffff@3._o @3"@4n@3._o @3$ xF@8J?Z.?0?sNX? +æ?I0zIJ@8J?La?Qrz?E?i ?,?vk@8p?*T?a +?0 ~?Kd\? $4@@@@*@$?????B@1 Ĝ@1-V@1 Ĝ@1T`d@1 Ĝ@1@1 Ĝ@1W@1 Ĝ@1u!@1 Ĝ@1T`d@z@lC@z@Xy=@z@zxl"@z@ݗ@z@,=@z@@4g l@4Z@0hr @0hr!@0'KƧ@0&!.I@/=Vl"@/=<64@/=Vl"@/=p +>@/=Vl"@/=cA!?| ?Čۨ1A?Gy??lDžN9?; ^?CXs?|O?j%Ra?#Gf?C B?!U?{?wN z_?|׿pY?9o?>Zw?͓E'?pk Y?j@@@@@*@*??????x@? ߘ93?;@178`@=V?@eJ?4 ?_WZx?vRius@f@C@\(@Ž @\(@űr@\(@d{*@\(@2@\(@t'@\(@JKև@l3E@l3@l3E@l4)$@l3E@l6 +l@l3E@l2'@l3E@l3.}@l3E@l1@4,<@4z@1S@1R@1t@1O=&@1~($ @1ۅh@1~($ @110:@1~($ @1Q&-p?| V?0ϒ?FWg?W:Bx??yd%&.?(( ?|b@?aI$;?5^?=c~?+Ɏ?3ۡ?r;;?81$?@tGy?#X?9DP?"#ѧ@@*@"@*@5@4???????}DŽ@8X?Eo2[-?PZ@ k@l3)ۮ?e<>*?=%?2FY?gK@fR@D@oJo@oO@oJo@p=@oJo@oԘZ@oJo@o<@oJo@o?f@oJo@oاt@HJo@HH@HJo@H;n&@HJo@H44(@HJo@H1lS@HJo@HK-#C@HJo@HP4@5@5%=p)@3 I^5@3{G@3tj@2vȲ@2OO M@2Kv4EU@2OO M@2i-(`@2OO M@2=˶?d?u6!?V΄??,@ ??}x?;U?Jj?_Q?d'C?7?Q7 +ȍ?;uL?ɴ?}?46@@&@$@&@4@3???????.krZ?h?ngh-@o}@HBMp?ci&V?g}' d ?IWJЗ@ ]@aC@E@ I^@ƺv@ I^@@5TS.Mm@4U`A7L.Qn@3𖻘.NC,@3𖻘.NC,@3𖻘.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 G@ě@$/@ě@u"@ě@e@ě@ +=q@ě@ߤ?@ě@7K@ڻdZ@ڻ"`@ڻdZ@ڹrGE9@ڻdZ@ڳg@ڻdZ@ڸ@ڻdZ@ڻ~@ڻdZ@ڼ(@4w@@4x}H@2^5?|@2_o@1-@1@@1u@13@1u@1Ϫ͞@1u@1Fs?|O?5{#?5$?菁k?ɿ?Dw?|O?eCO?S1z? (?=~?6kp@ylz@ڻ?\:O?VCQ0?Ģt?jÙ@fgC@H@1&y@9XbN@1&y@ +L/@1&y@tj@1&y@}Vl@1&y@ l@1&y@s@O;d@޸Q@O;d@p:@O;d@:@O;d@iDg9@O;d@α2@O;d@ͫU@8|Q@8TɅo@2J^5?|@2L<쿱@1K"`B@1O-V@0䎊r@0@4n@0䎊r@0W@0䎊r@0.H?ƋGg٪?Z?mGSq?Њ?ԁ?7F?Z\??xrI?jT???wN z_?m?GA?̈- +?J]j?0&YEd? Ğ@@@@@&@??????pQfR{K?VR?HMrh@ +OVT~@WO?f`t?XF x?}j?SK?@rƜ׎t@I@%@`A7@%@@%@T@%@Q@%@`B@%@Q@Gz@Hr @Gz@I7KƩ@Gz@IrG@Gz@Gz@Gz@H9X@Gz@G+ J@6Y*0U2b@6U@2)+ @2)y @1Ctj~@1CPH@0&YJ@0'@0&YJ@0&A@0&YJ@0&IQ?|O?ߋb?d3"7? Y?DE?R?2}?? :?v@b?ni" ?=U{,?H, +r_?%Cr? ?/Y}?avh?A0)n??\@@@@@@??????/}d@%V@?/T N?#XP@' @H.B?O sg?Chߖ$֫?0?"YcKd@g΁]@J@@W +=p@@W +=p@@W +=p@@W@@W +=p@@VϪ@@W +=p@@XD@@W +=p@@Vu@@W +=p@@VR<6@u@E@u@l!@u@ᰊ@u@Ov`@u@D@u@!T@2䎊@2&IR@0=hr @0=!.H@0W-@0V!.I@.ۋq @.˒:*@.ۋq @.lD@.ۋq @.lD?^Q5P?ߋb?(?8v?,I ?2I/?bV,?u߿?j?3.Yl?M?b-x?g)?˛͇q?/Y}?':?b/bJ?ad|@@@@@,@*??????MT2J?8Ԓ/?3W<(f@@WF@k٦?HU+Ν?B>+F?ة?|@sW@K@\).@\)@XbM@\)@8Y@\)@YJ@\)@74@\)@-@j33333.@j33333@j;dZ@j33333@j,~($ @j33333@j=<63@j33333@j=+k@j33333@j=p @9,<.>@4&+ J@41u!R@3b-V@3f}Vl@3 k@3 *0U2b@3 k@3 n.@3 k@3Ov_@8J? ?f?S;~?Jj~u?S:Ъ;5@8J?sXX=`?n|X?#q\-v?Y:J?k|;@8p?ռUӛ?ZAj?>ڵ?M\?t-w@@@@(@*?????L@7K.@7K.@7K.@7K.@7K.@7K.@O;dZ.@O;dZ.@O;dZ.@O;dZ.@O;dZ.@O;dZ.@6~($.>@2ٺ^5?}.Mm@2R`A.Qn@2J0U2a|.NC,@2J0U2a|.NC,@2J0U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 M@Yu@Yȴ9W@Yu@Ye@Yu@Y +=p@Yu@Y@Yu@Y*0@Yu@Ytj@dZ@1'@dZ@j~@dZ@YJ@dZ@V@dZ@_@dZ@m]@6 ]ce@6 C%@2Lhr@2L!-w@1Ͳ-V@1(\@1G k@1Dj~@1G k@1?@1G k@1@ѷX?Y͍_?m0?>\?'$5?j?_?|O? ,C?)_?@[*^?=W?S)?/Y}?%_D?T0?˴C?{2?{2@@@@@"@*???????<X}d?40 ?4B@Y$@N?RG*?UA f? ʼ=p?'9@gOOK@N@}tj@}@}tj@}"@}tj@}C\@}tj@}@}tj@}PI@}tj@} @7Kƨ@7Kƨ@7Kƨ@C@7Kƨ@L@7Kƨ@D@7Kƨ@qu@7Kƨ@ @4hYJ@4i,@1W+ I@1V +L/@06-@05sh@/Vl"@/!.I@/Vl"@/_p@/Vl"@/SMk?|h2:?%ñ?U#?5~pY5?2F0?\.:@?|h2:?> +fu?ܿ?G>G?W;zY?ey? ?Rii?]?2?ĭ?I$@@@@@,@(???????&Ρ ?/j?K<0?$U@}[@T<?jnv?D,D?c^?d@3hr@3q @3M-V@3NH@2u@2g8}@2u@2x@2u@2u%F +@8J?+!?1V?E`?؍i?mׁe\@8J?? :?ދ"?ni" ?Co?"(L@8p?QdЈ?ZaQ?!ˠ*(?]ߒ?+C@@@@@?????P@@uË@@&@@Ur@@+0@@.@@eX@@n@?I'@@n@Ck@@n@JLG@@n@F{@@n@G@@n@G@6`D@6`ggn@1r Ĝ@1hNv@1lj~#@1n~}@0:S@0d @0:S@0v{)@0:S@06?E[i)?p?S a?x0s4?9DZp?(#~?eXW?awuE?] ?Y.`?Kh??9?,?ׯr&c?[/l?"5Mf?=??Z&9@?Rs)?~? tΨ9@f pۘ@R@YxQ@Yw@YxQ@Y{W>6@YxQ@Yyb@YxQ@Yz@YxQ@Ys*0U@YxQ@YtzG@u@n@uA$/@u@n@u?˒:)@u@n@u?@u@n@u@u"@u@n@u??@u@n@u>%@5I_o@5J0U2a|@15?|@1Ov`@1gKƧ@1_O M@0xF^@0 ԕ*@0xF^@0'RTa@0xF^@0d7?}ѿ,?@@No9?zjʩi?E`?'ř ?}7.?| ?9}=?ꉬ>V?sZ-?W;zY?ҥX[?n88?3I#i?do? mmsi?Tj?GZ@@@@@*@*??????Cm<h?CPY?¹-@YvH @u@E?bw;?6Di?G?k$tO?i=?5`?^*?T?."E?FJ?8.>?Ó+DoX?Xŏό?ۃ30?_K. ?p)Տ?#j?H>w,@@@@@,@,??????bn0ti?H!?T(G@F3Kf@h/?b;ڱ?qÏb?yF?rxr@d&Ch@T@ +o@ @ +o@ Ƨ@ +o@ @ +o@ +d7@ +o@ _@ +o@ 'RT@ԅ@Ԉ[@ԅ@ԄU@ԅ@ԆL/{@ԅ@Ԃ7@ԅ@ԉ@ԅ@Ԅ*@8(YJ@8)@3+ J@3@34tj@34j~@2_o @2rGE9@2_o @2vȴ9X@2_o @2($ x? ?9؊?LD?Hyq?o?P?*?}?@׮?pI?~m??ۣ0Υ??;?A\#? U)?6~A?Yʒ?`i2?l@@@@@,@*??????>GJEp?3^t?J. H@ K@Ԇ+?TT>x$?i7x?~?Ϛ#O@hN1@U@Bh\@BeQ@Bh\@Bmd7@Bh\@B@Bh\@Bfo@Bh\@BBb@Bh\@B~20x@`7K@`Õ$@`7K@a+@`7K@`ݬ\y@`7K@`O@`7K@`_@`7K@a#B@6@6!YN@4c@4;W1@3-V@3}2n@3䎊r@3d@@3䎊r@3R^We3@3䎊r@3O5I?Qp?na&? A?E/?hԭ??Qp?SF۫?Yx̿?˦3?o??3? f?!w?.u+?b1?W~|@@&@,@,@:@;???????t?zrթ?`1ͺN?G@Bj\@`ҹU?uLd?^!n?6f?yt§@_+? @V@zG@zG@zG@Xy>@zG@*@zG@Xy>@zG@Fs@zG@SM@hr!@&x@hr!@2X@hr!@N;6@hr!@hr!@hr!@-V@hr!@s@3`D@3`ěT@0 +^5?|@0 +S&@/:1'@/:kP|@. +#9@. +W'@. +#9@. +ڹY@. +#9@. +0 ? ?1?4!p?̒?b\?2I/?|O?,#?90?-I`K?2&h?Z,a?u@>N ?.x?W ?+ ??B @@@@@*@,??????>]?*c0?'lijo?PxI}@1b@Ϗ?G8H??)? ?_求@g@W@2Ƨ@2l@2Ƨ@2/@2Ƨ@2d8@2Ƨ@2Ǡ l@2Ƨ@2S&@2Ƨ@2 @S@1&y@S@/{J@S@α2@S@ (@S@g@S@@7@7i k~@3|hr@3 @34tj@3US@2sh@3tj~@2sh@2@2sh@2vȴ9X?=fA:?o 6}?$q?ca+r?dtX?=?ۊ?=Be?ol?V)0?q]?ĵP?kV?@`WӐ?6?vc? ?c@@@@@*@(??????gG?N/@?e*E?t @2£S4@ߨhn?3}X?xiğ?堚&Ib?ICb@k@X@@4l@@aoh@@\?@@ʦL/@@dJ@@fx@ltj@l@ltj@e~BZc@ltj@dYJ@ltj@c'RS@ltj@dI@ltj@fh]@7|Q@7t@4+ @3O @37KƧ@3u@3z,<@2;dZ@3z,<@2!R<@3z,<@2$/?¨Sp*?\ZE?3?- +@?ʛ8?I?| V?԰?pVY^?#Lp~?x;q +?ϧr?]~"L?\T%?uf?İi? :C?(@@@@@,@???????!fd #"d?pϳE?u+@w=~@l4A? X?F 71@ʁ#2@X,@X)W@Y@%nP@% ĝ@%nP@%5@%nP@%/n@%nP@%Oƥ@%nP@%9_v@%nP@%hZ@t@t@t@>@t@P@t@#+@t@@t@B@0g l@0g l@+j~"@+lM˶b@+o@+2@)u%F +@)bF{@)u%F +@)4H)@)u%F +@)d?^j?5>?J?ӯc[?tx^?_4?bMn?(tm?~J?/:?=yκ?J W?bw' g?z=`=?pDRh??@j?_cd?@@ @$@&@0@0??????Q; P0?@&?3 Eߐ@%.p@?Nx>?B~I?Ȗp?|G@s Jl@Z@ E@ G@ E@ l!@ E@ J@ E@ @ E@ E@ E@ Mj@mQ@mn@mQ@m/@mQ@mS@mQ@m@mQ@m5?|@mQ@mN<@7r@7n!R<@18r Ĝ@16@0gKƧ@0eڹ@/ +#9@/˒:*@/ +#9@/Fs@/ +#9@/lC?Br?m0?&t?!#?; ^?<_?h??#maЀ??,~[?+!?Ր?tu?%2?m~Z_s,?< N ?7zE?gϵ@@@@@(@*??????[,R.?@ϛP?C)@ tXw@m| y8?`7Q ?`juB}?T-?{=@l$NM@[@nO@m@nO@nn@nO@q>@nO@o@nO@j cr[@nO@lJS%@RH9X@RE@RH9X@RRf{@RH9X@Rd@RH9X@R\م+@RH9X@R\:q@4Q|Q@4N?@0@0Ck@07Kƨ@0@/QN;6@/T_٧J@/QN;6@/K`E@/QN;6@/L j/?}#?3?FU.?zM?\d?\(?`/.~?M\]?X.??h?YF"?@?#A??:>?9D7? +͉{?+r@@&@@&@8@7??????8?fJ b?@4&rYT?Qdi@m%@RTS0i#?`N'?qJU?)Bdκ?DX@hB@\@G@dZ@G.@G.@G.@G.@G.@Ftj@Ftj@Ftj.@Ftj.@Ftj.@Ftj.@Ftj.@1,<@1 '@/.Vt.Mm@/&x.Qn@.z)_.NC,@.z)_.NC,@.z)_.NC,?^XN@8#@8:@8 >+@8I@8?bM_x@8@8i@8@8S@8?j|@8 *@8p@8@8 @8 @?]@J@J=p@J.@J.@J.@J.@J.@7z@73332@7z.@7z.@7z.@7z.@7z.@7s@7҈p@4+ I.Mm@4gKƧ.Qn@3YJ.NC,@3YJ.NC,@3YJ.NC,?F/P5@8#@8:@8 >+@8I@8?F/P5@8@8i@8@8S@8?*я@8 *@8p@8@8 @8 @?^@:^5?}@:^5?}@:^5?}@;dZ@:^5?}@;/V@:^5?}@;u@:^5?}@9J@:^5?}@9+@AS@A/@AS@AQ@AS@AY@AS@Aqu#@AS@A1@AS@Av@.hۋr@.[6@,MV@,M:@,&x@,'RU@+kjf@+k6z@+kjf@+k]cB@+kjf@+k6z?^6P?&H?"?8v??$?bM7? +?90?6)}?֧QD?Uyu#?bM?.+?y8$?ʬv??a+@@@@@*@(??????Lt)OT?-=6?#e8@9WS@ALEN?<"$Wf ?2[e?snY?]@sՄl@_@Pj~#@PiB@Pj~#@Phn@Pj~#@Pc{C@Pj~#@P`Rv@Pj~#@P_ׁ@Pj~#@P_x!@2["`@2Z1@2["`@2l~@2["`@2i|@2["`@2m0@2["`@2jEJ@2["`@2~'(/@42@41@05S@0/N@.x@.Z@.p'RU@._k-8@.p'RU@.`3-@.p'RU@.`USs?|B &?ے@? [ ?W/?-)?dp +#?}@TΥ?Sx=?/JF?~ ?M?7_]?9ÿC? 5?K?\X?ž?<@@$@*@(@9@6??????c^?ia?9c6?DwMP@PdS@2gjn?Yy ?d?ǞhT?5MT@fU@`@$/@A7L@$/@@N@$/@\)@$/@ԕ+@$/@zxl!@$/@\@yXbN@{lD@yXbN@ĴJ@yXbN@ĺ1@yXbN@ķKƧ@yXbN@ġ7K@yXbN@ė@7e!.@7`A7K@30ěT@3+m]@2-V@233333@2?䎊r@24֡a@2?䎊r@2Ov_خ@2?䎊r@2!hr ?E??KvBrq?Q?xTl?4tD?'[ V?HS?DXLa?=?6?[a,?qb?~d?|?j?gT?ñR@@@@@*@*??????4N?k6?h-$?*:1j[@>/X@Ĩ'Vt?x4V?,k"? ث@)[?v@j?L8AS?b@@@@@*@,??????DJ->?9R?Jg?,@M'պ@j?iy +?LT3Q̌?;?;@eշ@@b@Y+@["`@Y+@Q&x@Y+@Zxl"h@Y+@T@Y+@`d@Y+@` k@ݶE@ݟ|h@ݶE@ݸbM@ݶE@ݴ*@ݶE@ݺxl"h@ݶE@ݰ'S@ݶE@ݰ ě@8~($@8*0@3I^5?@3"`A@3Z~"@3b I^5@2YJ@2ڹ@2YJ@2"`@2YJ@2͞&?ك|I?E?u*y?ݡu(r?STS?U.?ڷ??ǀr?؎?W;zY?998?k [X?qJ??mֿtE?c^)?^':?]ߒ@@@@@@???????pLUV_"?eIo q?iL@[e>q@ݳYE?wx76?z|?a"?j@qem@c@ I^5@ C@ I^5@ 85K@ I^5@ A@ I^5@ 1@ I^5@ +@ I^5@ +xi@JG@JlD@JG@J,@JG@J6z@JG@J!X@JG@JvH@JG@J5@1䎊@1 I^6@-)7KƧ@-'2@+F@+%Bв@*N;6@*ϴn<@*N;6@*O@*N;6@*حV?^j?ŊXF?Y(?ӯc[?=?Zw?bMn?Bl9?~J?5ei?h1?P?sF?bM]f?JEO?rGe?C>?~.?e@@(@&@&@4@3??????P6?3JQ2?4 j8'>zg)@ rJ@J9G ?CFćG1? +??F);?b8W@s|lE@d@ E.@ E@ M@ E@ Kjh@ E@ G k@ E.@ E@ Hp:@:Q.@:Q@:^Q@:Q@:T[@:Q@:dZ@:Q.@:Q@:Xe-@904m8.>@3+ J@3fA@2ȓtj@2ohی@2!.I@2#MjP@2!.I.NC,@2!.I@2 @8J?5J ??(4@8I?i@8J?^V֋?P?sw)@8S?*@8p?91a?;?~lVo@8 ?{%@@@@*????e@`A7@`C@`A7@@`A7@,@`A7@+`@`A7@҈p@`A7@3@{~?O*?`]u?ER Y?T8?q' +B@@@@@*@(??????R!?@?YA?UOᦵ?[d׬-@0@+@8I@8?Qp@8@8i@8@8S@8?I@8 *@8p@8@8 @8 @?g@lC@x@lC@r@lC@ٰO@lC@& +@lC@ZT @lC@ꡉ)@D"`@Dڟv@D"`@D-@D"`@Dܿ@D"`@D@D"`@Dpf@D"`@D`I;@3qiC@3zJH@0 +^5?|@0 )8@/Ix@/OWt@-u%F +@-{4-@-u%F +@-v@-u%F +@-?}@TΥ? i?,-?]\8?~G /?*O?|q?m3 +V?NadL?9>+?-xH?|}?pDRg? E?am#?K?>=?b@@"@(@"@6@1??????DO|dHDh?Ix;L"͖?2uau@ + p@D1?iAꟚ?Rf ?A')R?y@fa?X@h@(S@(Y@(S@(P ě@(S@(Eݘ@(S@(MB@(S@(K~(@(S@(OiDg7@ě@G@ě@/@ě@$/@ě@@ě@E85@ě@s@8^H@8VC,@3c@3bs@2tj@2@1&@1$/@1&@1𖻘@1&@1ěT? ?U ?_*k?͌?>{~? d?ϱQm?I1@?bZS?:u. ?La??eBZ?c?e+?Oدi?f?Tj?*Z}@@@@@(@,??????g|P.h4)?NlzZ?WCC@(O^uB@o?sC ?mGt?b?̽I?t@nٵ5@i@/ +=p.@/ +=p@/@/ +=p@/@/ +=p@/۝@/ +=p@/~\N@/ +=p@/aO@?|.@?|@X):@?|@$V@?|@ͺ@?|@E@?|@A@9*0U2b.>@45S@4OIp8@3]V@3^G@3fYJ@3Ol@3fYJ@3{=K^@3fYJ@3@8J?kG ?v8?Jk?JjcJ?GX%Օ@8J?%3Gh?jy ?vA@3@ ě@37+ I@2A7K@2m\@2\Q@24oh@2\Q@27#@2\Q@25?|i@8J?y?&1*?9?—0I?@i@8J? +=@4+ J.Mm@3Vu.Qn@3 +0U2a|.NC,@3 +0U2a|.NC,@3 +0U2a|.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 l@"kR@"\@"kR.@"kR.@"kR.@"kR.@"kR.@R +=q@Rffff@R +=q.@R +=q.@R +=q.@R +=q.@R +=q.@8?@8=hr @5+.Mm@5{Ƨ.Qn@4D*.NC,@4D*.NC,@4D*.NC,?ɏ@8#@8:@8 >+@8I@8?!XW@8@8i@8@8S@8?1zz@8 *@8p@8@8 @8 @?m@H@Hz@H@Gb@H@HH,T@H@GW2n@H@H*J@H@G$@lC@rC@lC@gV{/@lC@ʐCX@lC@jyZ@lC@H-@lC@d+LR@7_o@7c 6@3=hr @3: w$@2KƧ@2{@2m8@2 b6@2m8@2Is(@2m8@1GGO ?q-?QDP?O|[?y:܆&?8ĄV?n^?59W?/an?v˛1?`%-dE?&i?~q_?wG?=?O e? @??!?V]Ő@@(@,@*@:@4??????^m?gC&?d>!I?h9M @HP&@@H?)?ьs?ڰ1Ա!@v +@mij.@n@r>vȴ9@r>vȴ9@r>vȴ9@r?H˒@r>vȴ9@rAG{@r>vȴ9@r>#@r>vȴ9@r=b@r>vȴ9@r9"@hr@O@hr@@hr@r @hr@ *@hr@\(@hr@zxk@7s@7]cf@3 ě@3-V@3`A7@3NU@1s&@1rS&@1s&@1r74@1s&@1sZ?3a=?" ?Mq ?=]. ?(+Zk?i{?Ol?-A?0eʪv?M =?8? f? f +?S1z?t?%@ս;@d3۬? j1* ?Cao?Da:J?7@kb|K@q@ @S@ @͞@ @ 'RT@ @ @ @ +=p@ @u@"M@hs@"M@ - @"M@!G{@"M@64@"M@vȴ9@"M@)B@8T xF@8^u@3ԛS@3tj@3"-V@3v@2~($ @2 @2~($ @21&y@2~($ @2#?|O?MSMӮ?b??o?P?iOL?Y͍_?s?s?GuS?dLt?;?T8L?HO? uf?GZ?`i=?x@@@@@(@(???????co`?V/?\`ŷR?R,?E +@J@9)?|D?q "@!$B?O[Q)=@gt03@r@ڟv@ۥS@ڟv@ۥS@ڟv@Q@ڟv@۲m@ڟv@)y@ڟv@_p@TzG@U?|@TzG@TD@TzG@S@TzG@Stj@TzG@Tm9@TzG@TFs@52@53Mj@0S@0tSM@.F@.+j@.oi@.qj@.oi@.u@.oi@.?? ??&??q@v?DE?F0?|O?MN ?ދ"?{d?peԾ?90?O?§d߱?YF?*|\/?L?j@@@@@@,??????5=0`*h?"W8?" Ge@ ڽ@TnN?B[vaF?C}X?gg ?츨s9@gxڱB6@s@~%@~#@~%@}wd@~%@~ {3O@~%@~Qo@~%@}x@~%@} @u@ȴ9W@u@ѓ/@u@ʣA@u@ϐ4@u@&ZW@u@ӡ}@7쿱[X@7Z@4n5?|@4j-FT9@3-V@30|o@35sh@32)@35sh@32qQm,@35sh@30DF?E[i)? }2?j?@#r)?Ě"]??gޅ?<?`?\oXe=?_? @@"@&@"@,@.??????V2sn?X9XL?UL)@}y@}?w+ ?uY[?ƒξQ?@h,ӣ@t@U@Uȴ9Y@U@UA7M@U@U͸@U@U @U@UǓݗ@U@U7@p ě@p ě@p ě@T3@p ě@L_@p ě@n}Vl@p ě@o M@p ě@gE85@7w@@71 @4|hr@3H˒:@3"`@3 M;@3O M@3GE85@3O M@3p:~@3O M@3 Q?_?5)ZS?ia?ݡu(r?uT5?d?}?C`ߕ?g?Jk?Ss?sUEk?0G +-?qn? ??]&?v6?`@@@@@*@*???????FؐT]E ?gffpa^?Q])- +@U@mw?wI7?flR^?UM ?L`r@oL=T@u@<bM@<׍O;@<bM@<"`@<bM@BZc?| ? +?%HC=s?ArU@?_??#?| ?ۣ0Τ?rVx?,?l{9َ?P=?W ?Rii?{W?9XNu?{2?v> @@@@@,@*??????5Ë'Ķ?# +?E2ʤ2@|9:@Ӌd?B.vH?el?o?aZ@f @w@uě@u +=r@uě@un.@uě@uE@uě@uu%F @uě@u҈p@uě@u@+ J@Z@+ J@&@+ J@@+ J@U@+ J@zY@+ J@vȴ@6w@@6zQ`@3hr @3@3A7K@3ƚ,<@3z,<@3g +=p@3z,<@3sS&@3z,<@3pѷX?Br?Q^? Y"?zRU?6z@6!.I@2R I^5@2O[W>@1`A@1E@0D*@0P{@0D*@0ѷX@0D*@0R<6? ?ZAi?reE? h?Ԧ?n?ީqk#? ?ԍD?ud?Nw]6?HO?AP0P?~}o^?cK4+??C?*Q?^':@@@@@,@*??????aA?7xՠ?@ R?1|B~@]tL[@?^9?P?‘$e?/-@e @z@`A7@S@`A7@[@`A7@iDg8@`A7@ݗ*@`A7@}Vl@`A7@4m@Dj~#@DwO;@Dj~#@D@Dj~#@Ds@Dj~#@DV@Dj~#@D@Dj~#@DQ@7:@7fB@3#@3 (@3A7K@3*0U2b@1ޫ6z@1\N@1ޫ6z@1iB@1ޫ6z@1N;6?2Ѳ?u3?d?H?Ux&?dEmc?E?? ]?Ԥ?ghEH?N?x?ACH)?k?WiR?¬ xG?e?3B?NKۗ@@@@@&@&???????! +ހ?dd sbE?nFR@q@DfJ?znd?w}-]?yFc?d$ @px`MdW@{@{lD@{lD@{lD@|c@{lD@}Y@{lD@|hs@{lD@{, +@{lD@{oOu@G9Xb@G9Xb@G9Xb@Gw:(@G9Xb@Gbo@G9Xb@G<@G9Xb@G$@G9Xb@GFs@-Q @-Q @)G-@)G-@'nO@'{m@'N;6@'ί%@'N;6@'D@'N;6@'2W?^6P?Ƿ5?c? :?䮽?fˏ`??bMn? + ?}PI՗?--?3VO?KmHY?bM?P0?of@?'z?]?_cd@@&@"@@5@6??????LY>쭮?.5,l?_l3\@{ԍ@GW?=@/:1'@/9]@.Xy=@.r@.Xy=@.9XbN@.Xy=@.R/?^6P?ǧ H?, ?x?׻p?!?bQ넛? 7?5?-.?ĵl>w?]DgQ?bM?ƭh@4ahr .Mm@3~".Qn@3.NC,@3.NC,@3.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 ~@:r @<.VNQ@:r .@:r .@:r .@:r .@:r .@;1@<(cR(@;1.@;1.@;1.@;1.@;1.@7:@7u@3}hr .Mm@2ߝ-V.Qn@2kxF^.NC,@2kxF^.NC,@2kxF^.NC,?n{@8#@8:@8 >+@8I@8?`Q@8@8i@8@8S@8?玲{@8 *@8p@8@8 @8 @?@F|h@FC@F|h@FA ]@F|h@FcA@F|h@F I]@F|h@F|@F|h@FQ@=E@A@=E@??@=E@;J#9@=E@A@N@=E@($ x@E@,<@E@!/@5zqiC@5zc @3hr @3@3'KƧ@3#|@2@2K]@2@2Y|@2@2|/{J$?|O?;?6p?$jB?Ir??'?}ѿ,?g3?wr?R?ߔ5o?TY9?=Ca?8A?v'X??8~,?b-/@@@@@,@,??????ev"ba~4?BA?y*#.@}h@D&$?U^f2|?u_8h?{p ywA@%@\!|@@nzH@m@nzH@n0@nzH@n^@nzH@o4@nzH@nY`@nzH@oD@Qo@QC@Qo@QK@Qo@Q˯{@Qo@Qͦ@Qo@Q-.mz@Qo@Q5@3֚,<@3ְAٴ@0|hr@0n@e@/E@/ݹ9KW@/`d@/`2@/`d@/T^%Z@/`d@/K"?|b@?ɧkF?,(X?ǵq??2zW/?KɏV?|b@?R?SՇ?97~?oc ?\=U?z*?z+?zb?T ?ƎG?R@@$@&@*@:@7???????5oF ?"y?p?af&?Z@n(@Qi?4U?Œ?oB]?@@*@$@"@6@8??????w??v?n?B\Cѯ@a>@-?p?x+ϬA@=?r@$Ro@lb7Q@?|h@As@?|h@DT@?|h@Doi@?|h@@E@?|h@A-w1@u?|@u\)@u?|@u?@u?|@u '@u?|@u?|@u?|@u$@u?|@uL_@3L]ce@3LL_@-{"`A@-w@,NO;@,K~($@*@*}IQ@*@*}/w@*@*|u#?2}? +?Gk;m?ƠJ-M?2A?+ʦ_?| ?;N?tP*?1'7?2&h?Uyu#??l?y8$?XLL?l&?@@@@@*@(???????Gxa@?D7_?\13-@@oSz@u:?dSEX>[?#c<?k`?Sb@gJ@@p0 +=@p:7s@p0 +=.@p0 +=.@p0 +=.@p0 +=.@p0 +=.@/ۥS@/A7L@/ۥS.@/ۥS.@/ۥS.@/ۥS.@/ۥS.@8^H@8UP@5+ I.Mm@4Ƨ.Qn@4xF^.NC,@4xF^.NC,@4xF^.NC,?5V4S@8#@8:@8 >+@8I@8?"r+@8@8i@8@8S@8?@8 *@8p@8@8 @8 @?@4_;dZ@4h\@4_;dZ@4e84@4_;dZ@4g/W@4_;dZ@4u '@4_;dZ@4f]c@4_;dZ@4cn.@v@vȴ9@v@Iᰉ@v@&I@v@Bwj@v@'@@v@kP@7 xF@7kP@5^+@5Qn.@4`A7L@4,<@4fYJ@4vaf@4fYJ@4xF^@4fYJ@4 qu?+-/? )}o?Fw?ډ?Xz=?ȵ?I~y?ڲt?EU?;q:?{y6?Y{?Xt:w??^i?4i+?b?/я@@@@@(@(??????<)ݨ?XFC?[֢3Va?tuXg@4i%~@&H?|ק&\?.5?&<~?2֕U@h.K:@@!vȴ@!pbM@!vȴ@!R@!vȴ@!@!vȴ@!@!vȴ@!&@!vȴ@!@@w@l@w@(@w@@w@qu"@w@zxl"@w@Xy=@9>6z@9 6z@4ٺ^5?}@4Ϫ͞@4W-@4qu@3sh@3W'@3sh@3@3sh@3?S?Mj̑?-a} ? '??*'?5}'?.Hp?Pe@4sS@4qR<6@3-V@3ߤ@@3!:S@3B@3!:S@3rGE8@3!:S@34m9@8J? 5ф?C?^G_?(:)[a? C@L(@8J?^?_z?p?Ri?V@8p?{6z@0&YJ@0'RT`e@0&YJ@0')^?| ?[e+@8I@8?|O@8@8i@8@8S@8?}@8 *@8p@8@8 @8 @?@]?|@]\)@]?|@]"7T@]?|@]D@]?|@]9!+@]?|@]:@]?|@]E@E@"@E@@E@y8`@E@i@E@WO@E@K`F@4L]ce@4Kނ׶4@0 I^@0 |@/1&@/+:@0 k@00@0 k@02j@0 k@0㷜 ?|h2:?pl?"H?x?E?=AC?|h2:? n?6?XY?m6k?~ܑ?pDRg?H(>X?|E2?ʾ?!,8??BT?;|;2@]=g@@O;d@@O;d@{=K@O;d@HeN@O;d@qi@O;d@@O;d@TɅ@p +@@p +@$@p +@E84@p +@g @p +@1@p +@V@8cg l@8Vz@5I^5?@4=K^@4KƧ@4}K]@4fYJ@3;5Y@4fYJ@4D*@4fYJ@4Ƨ?ʎa]?I6nӨ?*=? Ž?K?? ? +}TE?͙ǁ?Օ" ?ƺ@=t?@hu?V_cW?6)}?^B??qr;?Fb2x? %@@@@@&@(???????qԀ.H?mkԟ?+=B)@@|?qr?CNao?H]f?H,1i@`k08@@O@Oo@O@O)^@O@O@O@OXd@O@O} +@O@OI`@["`@9@["`@Q@["`@N_o@["`@$tS@["`@6$@["`@*g@8~($@8,Gf@4+ I@4oiDg8@317Kƨ@38$ xG@2ޫ6z@2ѷX@2ޫ6z@2gR@2ޫ6z@2nM}R?x9?fײ{=?oq u? Qi?7ű4C?\F*7?fȎY?蠔??íuA?p?[Tas?U?$%G}??P^*@@@@@0@.??????`B|l?L2/?sB-#2?_ag1@O=u@)a?$+?rJ[@cQ?35@p%}@@@O;@@ @@2@@䎉@@8}@@]c@-@;dZ@-@p;@-@1@-@ q@-@S@-@A \@3 xF@3n.3@0ٺ^5?|@0W@0y7KƧ@0q'R@0QiB@0G&@0QiB@0ES@0QiB@0F??1j?M?!N?A2x?ߩ?ҸBz3?|O?&uE@?fM?| ?,rg?,:?nwf??m!?XW~?0&YEd?`i2@@@@@,@,??????rDlQa%?[sA':^?H݂ n.@9p@qmL?y D?eccAu?'_h/?-!]o@co>c@@w33333@w32@w33333@w4Q@w33333@w5hե@w33333@w5BR@w33333@w2*R@w33333@w2w@lD@(@lD@]@lD@;@lD@ń@@lD@nڼ@lD@i@2v@21G-@0 ě@0~N׋@0`A7@/<@.Gݗ,@.F:(KR@.Gݗ,@.F$ Rx@.Gݗ,@.Dzt?^P!?ʃ/J?!,1 ?Ӓ{-@F?pfТ?eK?bQ넛?#$S,?=y?2?/?X3Z:?c6JX?v?'x'9?h9#?_?B@@@&@"@&@8@8??????XNd?L,?>%O?2Y];,@w3!@ ?Ms2ZV?AbEib?s?zinZ@s +@@@4@@v@@ӥ l@@Rp@@w@@Ll@ĒnP@Ć@ĒnP@ą!Ϟ@ĒnP@ć} +@ĒnP@ĉwv'@ĒnP@yn@ĒnP@Ąɠ@6@61͗@3|hr@3[D@3,j~#@3!ĬlV@2p@2bp@2p@2eC@2p@2dNN}6?eXW?K2e?yxb?&?X]N? VM?}@TΥ?괒?ö?zn۹?2-+O?8P?o?Kdn +?uuբ? k4?s ?d@d@@ @(@$@3@4???????{kmAN^X?4mx?Fg@͙@ĄI?S.vjU?eJ>?6Hp?ҩ2;@e?R@@hr!@&x@hr!@{@hr!@{@hr!@`A@hr!@|@hr!@;d[@o-@mhr@o-@k6z@o-@u '@o-@r-V@o-@mw1@o-@o@6`D@6`oiDg8@2f+ J@2g+@1Vu@1iDg8@00U2a|@0˟U=@00U2a|@0 I^@00U2a|@0d7?A[F?Z?4 b5? +?ҧ? µ?3a=?c?ZH|:?Y?=.e1?C ;?US9??Me_?XW~? Ğ?ٔ!x@@@@@,@,??????/U?!o?*K:?75o_T@I@oI.?1xW?UVG(?c#. +R?A}W@l#m@@lC@5?|@lC@'RT@lC@)_@lC@p@lC@z@lC@S&@l@lO;@l@l[V@l@l'RTa@l@lN;7@l@l@l@lC@8@8Mj@5° ě@5q @5Z~"@5FOv_@4@4xl"h +@4@4`A7L@4@4B?Ű[_G?P2 +O?O? +ġ?)^y?I?>sN?jX?'(??Ȍ(?)S&?I?زf?{Tä=?0EK?*:R}?IQ @@@@@$@"??????q";`t?c8Z4b}?J _HN@dg\@l2L?t'Tx?\Q?̈́^?@p@@ A7L@(2{@ A7L@ _@ A7L@'?@ A7L@ Ey@ A7L@ ?U@ A7L@ @@ +=p@Vs(@ +=p@\7@ +=p@ A@ +=p@J@ +=p@5p6@ +=p@)@904m8@94"Z@4{ I^@4y.e@3-V@3 /@3&@3<5N@3&@3s@3&@3i?,t?|u?q)/?O =?Ⱥ?C7?W?ng':?m??LQN?4l?1f2?u ?~)%? ?uA?w@s@@,@*@(@5@:???????u$P@W?xV??ׁ?uG@@yE@r?(?2 ?4,n@"7.@obN@@hr@hr@hr@_b5@hr@zG@hr@sJT@hr@@hr@% D@1'@Tj@1'@V@1'@@1'@aĻ@1'@@1'@yg@4cg l@4ca@N@0uS@0t7@0lj~#@0k*Z@0u@0k2@0u@0wa@0u@0@?}@TΥ?M-U??덭?!O?L65?| V? +r}?tK?0:"l?"ξfS?K?u؆"¿?$-a5[??Q8?@5Gd?G,@@ @ @@8@7??????+U?$4=?2G?dxV@H2@C½ ?Rұv@skä@@qj~@qhs@qj~@q@qj~@qS&@qj~@r*@qj~@rڹ@qj~@r#&@@t9Xb@@+a@@xPH@@@@ @@Ʌo@8@@8>B@4ahr @4YrGE@417Kƨ@4#E@3m8@3~@3m8@35?|@3m8@3rGE8?+-/?]?1?s?\(Ft?ȝ?+-/?(/(?Vh?_?)?:?fƾ?xCZ?1^ ?+&*?y?l@@@@@*@(???????\??b; +?c^5@r \z@q?k + ? FJ?K {?֏@i4>C@@a+ @a[@a+ .@a+ .@a+ .@a+ .@a+ .@"@"@".@".@".@".@".@5H@5qž@1+ I.Mm@1gKƧ.Qn@0sh.NC,@0sh.NC,@0sh.NC,?¨Sp*@8#@8:@8 >+@8I@8?|h2:@8@8i@8@8S@8?oVu@2E?@1ce@1*0@1ce@1v_ح@1ce@17?us\?d̺?lڮ??>{~?0>?% ? {?%8?gy}?Bg43f?>p?@h?bD?`u ?k s?>@k1@@fdZ.@fdZ@f_H@fdZ@fdV@fdZ@fcJss@fdZ@fcnw0n@fdZ@fav@-.@-@<ѥ>@-@2@-@`@-@5n@-@87@8(YJ.>@3+@3&@2Ͳ-V@2;5Y@2L[W?@2LܷQ@2L[W?@2M[j@2L[W?@2Ot@8J?D|?7֫?{đ?Ȗ?9)@8J?L??̷l^?3j ?Y6?@8p?Y{1*?O?@T[?Cbi?+){@&@"@,@<@:?????@s3333@o-@s3333@{J#:@s3333@"y@s3333@~7@s3333@v4J.@s3333@{ *@KR@K,i@KR@J7K@KR@Kq{Ge@KR@K!@KR@KMvL@KR@Kn@7쿱[X@7փ7zX@4S@4PH@3~Vu@3?*![O? J@ch @j?@7+ I.Mm@6V.Qn@5iB.NC,@5iB.NC,@5iB.NC,@8J@8#@8:@8 >+@8I@8@8J@8@8i@8@8S@8@8p@8 *@8p@8@8 @8 @1&@Ƨ@1&@01H@1&@V@1&@-W@1&@C,@1&@@&x@&x@&x@+@&x@PH@&x@N;6@&x@oC@&x@w@.?@.?@(\j~"@(\j@'E@'_ح@&jf@&~%@&jf@&qu!@&jf@&xF^?^j?ت?K?v4?Hc??bMn?F?|;?0j)?'?K '?bM?P0?n3?Ei??@@(@ @*@<@:??????N&8?]?4tF>\N@2G +@dj2?C\j> ɾ? a>\t]޹@s#@@h\@h9X@h\@i?0@h\@ix: @h\@iPt@h\@h6 @h\@h!b@yx@yx@yx@ywG@yx@yy?7@yx@yxV *A@yx@yx~*/@yx@ywIo@1 ]ce@1 ]ce@,`A7K@,Wv.@*cnP@*b<64@*@*@*@**63@*@*4֡a?^j? j?ۭi)?v4?:?YF?bMn?ϷY?|;?/]\?F#?M4C?bw' g?EaӉ?s!?C>? +?|V@@(@"@&@8@7??????5i8+?(`? ^=@hv(R@yx1Uv?#b[9K.?/'?B|z?VCEvf@soI_@@+ J@@+ J@/5@+ J@@+ J@Ͻ@+ J@@+ J@\*@7Kƨ@@7Kƨ@ؑ&5@7Kƨ@莩5@7Kƨ@j r@7Kƨ@$@7Kƨ@@8I_o@8LW}@3+@3"q)@2j~#@2[@1𖻘@1Wm@1𖻘@1 +Z@1𖻘@11:~?zM ??,G?AެÝ?%9?wD['?T?R{?kS?~q?1r:?.{*V??d?.׭st?r,z?Q{ଠ?l ps?{@@$@@@6@4???????F#q?J?@Ie>8?GԜ#@f@ƶw=~?Vu'?]w?IF?\f@oe @@5?|@vȴ9@5?|@b}@5?|@vȴ@5?|@;dZ@5?|@@5?|@<64@&"@&"@&"@&@&"@&XbO@&"@&^5?~@&"@&xl"i@&"@&u%G@3L]ce@3Lj~#@0S@07@.o@.e+@-@-?@-@-䎊q@-@.NU?|O? ?\H{gX?䆀{6? f?{ ?Z!ǟ?] + ?y%?ecQ?M7F?Jj?. ?=M?Q,Ě???(i^?*я?=?+_?54G@@@@@*@??????`4?_|?S+l?h37@sh@6'm?c4>ػ?x'7.o7?SR?՝ @r@@j~#@l@j~#@J#9@j~#@I^5?@j~#@ov_د@j~#@@j~#@#9@\)@|h@\)@͞@\)@lE@\)@ѿ.H@\)@ξߤ@@\)@к~@3N쿱[X@3H ԕ*@0c@/ '@/nP@.D@/At@-1'@/At@-%F +M@/At@-m8?|O?Rf'Y??ǗU?X~̫?t8?1j?ଚw?Q0vX?o)o%?ҲaK?Sh?@3° ě@333333@3n"@3^1@2OO M@2E?|i@2OO M@2fA@2OO M@2?}ѿ,?V/?~#?(+Zk?2Մe?/^?=fA:?_@ +?Խ=?_F?ϟ?Yw?R ?Pk"?.?>?54G?aOD@@@@@@(???????UL_9 V?ad%0N?o?}ѿ,? += ?ے|?Ol?f)"?`Ƕ?e?tl?4@@@@@*@*???????\Ua`?HJR?N4t +@(pѺg@+q*l?fd|?l\t2?҃*Gp?نe@dļW@@E=E@EYXbN@E=E@E<64@E=E@E9XbO@E=E@E=-V@E=E@E9+@E=E@E8D@-V@7K@-V@m\@-V@vȵ@-V@}V@-V@m\@-V@ѷ@8D@8 xF@3S@3eں@3`A@39@2@2D@2@20 @2@2oiD?us\?;=?T?"?Kǡ?4f(R?5d?5$?@gG*@@s@sQ @s@s?@s@s9Xb@s@s (@s@ss@s@s2@`A7@@`A7@ffff@`A7@&x@`A7@tS@`A7@Ѹ@`A7@˒:*@5I_o@5J=p +@3^5?|@3VϪ@3Ft@3F]cf@2Q@2ܥzxl#@2Q@2lC@2Q@2Xe,? ?/)s?2~? {4?+?*?1j?M7F?}7.?ǧ?D6?h_N%?53y@?nwf?XԠ#{?# Y?Z?mCc4?xb@@@@@"@*??????P~ JX?VF?- ]@sC(8@+NS?u@@$/@%Q@$/@& +L/@$/@&]c@$/@%oiD@$/@#w@$/@#e@J=p@K I@J=p@I @J=p@Ka@J=p@KP|@J=p@K:)@J=p@JOu@55S&@55+a@1B ě@1B @0-V@0ѷY@0#@0$,<@0#@0#\N@0#@0#%2?|O?Čۨ1A?e +!C?:Z2b?1 v?F0?|O?j%Ra?tP*?ni" ? ^??y ? + l\?˛͇q? ݎ8? ??SP?j@@@@@$@(??????0 b 2sY?.[?"ɬ@$d@Jx&?MF'~?Bj Y!?H?E@f(@@F@Ft@F@EjO@F@E첕@F@Ep:@F@Ë́M;@F@E@@5 Ĝ@5?|@5 Ĝ@56z@5 Ĝ@5H@5 Ĝ@5(@5 Ĝ@5䎊r@5 Ĝ@5*0U@7B䎊@7#n.3@1; I^@1Q_@0tj~@/"`@/Gݗ,@/S@/Gݗ,@/ Q @/Gݗ,@/.2?}?(h ?4F&x?J?O??LcR?}ѿ,?LR_5?V@@@@@*@,??????R߿"GH?hҴ}r?EY /@E@5K?vbl?f,? a?В/GSm@ho@H@@1@ۥS@1@s@1@Mj@1@@1@5X@1@b@tj@(@tj@s@tj@Y}@tj@!G|@tj@kP@tj@쿱[@9-v@9/-V@4\I^5?@4`$tS@3"@3*0U2@2Q@2S&@2Q@2n.@2Q@2 ?5}'?tH?Uy*i?I?Br?6c?-2?KF??{Q?(ə?їJ?@K/{?!B?“y?q@@@@@$@&???????R{?:N?A?Eзc@LP@?T;9J?lPA,b?t0~?ǵO@oq+@@V7K@V}E@V7K@V@V7K@VV@V7K@Vu@V7K@V/{J@V7K@V#9@U&ffff@U,@U&ffff@U6l!@U&ffff@U.p:~@U&ffff@U;=K@U&ffff@U*0@U&ffff@U*d8@7@7|#x@2S@2+j@2~"@2ߤ?@1u@18YJ@1u@1ҜwkQ@1u@1SMj?Br?ly? +D?DN?`Q? ?F/P5?*l??ao;?p G)L?x7f?p-?pPȻ?Y͍`?vI?{%? 4e +@@@@@,@(???????lM#9W@?Xa;?Vi?@Vj^F@U-BA?wBy?v">?8 V?/@eaϐ9@@+ J@qxA@+ J@捸@+ J@\(@+ J@|@+ J@#{J#:@+ J.@7K@@7K@-V@7K@ /{K@7K@'@7K@3tj@7K.@6*0U2b@6l"h @4)+ @4䎊r@3-@3ϝ-V@3Eu@3@d8@3Eu@3D/@3Eu.NC,?~Ov_ح?eV?2D?\eú? K@8?C I?(?nv-?Gn?yo@8?!;c,`?&Z#?4y?ژ2U?o@8 @@@@@,?????@DT@B\(@DT@EQ@DT@Eo@DT@FIQ@DT@CF]d@DT@Ca@O@GQ@Gȴ9X@GQ@Gl"h @GQ@Gti@GQ@G@GQ@G'@GQ@Gr@7쿱[X@7M:@20ěT@21N;5@1Htj@1Ik~(@0&@0?@0&@0ݗ+k@0&@0Mj?oC?$?D&?Att?`?6 '8?| ?0n=Q?8G?l™U?O ?!U?{?]b?=d?],V?$H? +t?@@@@@,@(??????G? ?/#?Gm&?P-@DX@G?bw=d$G?+^ o? L?Z7ҹ2@lyga@@S@"@S@@S@}H@S@W>6@S@|@S@D@@+@@ M@@Vϫ@@jg@@/{J@@.3@7D@7hr @3+@3!-w1@2y7KƧ@2y k~@1u@1F +L0@1u@1+a@1u@1š?E@?b[?/͔p? h?FL{?uu?)T?ƍ?Kd+?aYZq??"?3 q?r?c?0?A0)n?L8AS@@@@@*@*??????D(v7V`?? {Pm?<{Z@pR@4>?U;z?^OQW?mqd?Jss @n[7@@hr @g0 c@hr @e#v/n@hr @ir} +[@hr @l=@hr @f3 @hr @g֛%@b0 ě@b0@b0 ě@b&DΙ@b0 ě@b)'*@b0 ě@b(K@b0 ě@b,&bT@b0 ě@b"/M@7B䎊@7E<@3S@3)x@3`A7L@3n@2,<@2u @2,<@2-;.@2,<@2g^es?}x?Urx?Nl?>U?~Ov_ح?fc?R ?[[?mn?Tb?s'%?wG{C?A_K?.X?%c ?jա@@"@&@@3@&???????7k SҘ?H-*gM6?4>b@h`?3@b+ i?g7](?T˿?r??WR@fkY@@1'@S@1'@h@1'@"p@1'@R@1'@#;@1'@i9@1&@I^5@1&@o.@1&@f@1&@$<@1&@fA@1&@$5@3:@35Xy>@0S@0oM@04tj@00XÁe@/PH@/ Fg@/PH@/6 E@/PH@/.R?|h2:?r{?Q:U?\k +?cD:?Rd"?|b@?1 }?%?1>ᔒ?2?XѪ4?@?w?_6C?O ?'0?7ڍsh@@$@&@,@7@7??????b7eQ0Yw%Є?.@+c@˺?\r<?Hmg>m?e3?uq@f5M@@v'lC@v+C@v'lC@v6C@v'lC@vA:@v'lC@vBwj@v'lC@v14J@v'lC@v2{@cM@cY@cM@c~($ x@cM@c'RS@cM@cu%G@cM@cS@cM@cڹ@504m8@5FIl@2+ I@2$3@2-V@1a@@2Tm8@1~u@2Tm8@1)^@2Tm8@1)^?|b@?W[?K̃?r*?|c?9?}#?$i %h?l%FZ?h?Al.6?*%>g?o#BpW?z??WA:?7zE?Ee,@@@@@,@(???????dP?A?c|1t?UP M@v1ݔ@cf?W`o?u[ +@a ++?w_@e{έ +@@@V@@}Vl@@}Vl@@-V@@C,@@ዬq @\=p +@\A7K@\=p +@\>@\=p +@\@ k@\=p +@\An.@\=p +@\@ k@\=p +@\>"@6^H@6^Q@3 ě@3ݗ+@2V@2@1@1a@O@1@1 M;@1@1҈p;?Ol?Qc +??A%?.Kn?5G]!?W;zY??eBZ?@K/{?5 g?A'_^?< N ?t?E݋N@@@@@*@*??????6X7?K bF?.tV@(r|@\@윟?k18k?M':F?/~{m?͚@i'P̽@@!?|@! +=q@!?|@"@!?|@"zH@!?|@"@!?|@"]c@!?|@"oh@I O;d@IO;@I O;d@ITɅ@I O;d@H"@I O;d@I + @I O;d@Hs@I O;d@HkP@8?@8Ov@3 I^5@32W@2-V@2g8}@1_o @1C@1_o @11&x@1_o @1r Ĝ?]?L 5d?^*G?Je ?cf(?=%?]?jKt?Qc +?%)?䬯kF?ҏ,[?*wjs?7&x?W;RT?*+JҚF?X񄖆?%?@@@@,@*??????`qXps?Pmn?D@"'@I2#BZ@ix@heO@ix@gRT`@1|Q@1щ7Kƨ@.kƧ@.i^5?}@-o@-~Q@,Xy=@,$tT@,Xy=@,&x@,Xy=@,:)y?a(?_?S[?ݶ\r?% +?2I/?bV,?,#?tWZ?.? A?yC?cPQ?.x??=rE=?fW?0&YEd@@@@@&@,??????KXـ8[Us2?1nn˷?/d @LDY@h ݏ?@?=\e?{7?pTP@sk<@@;lD@@;lD@SU?/:hn?% ?  ?Ⱦ?~Ov_ح?%mR ?8?DNX1?*d??rG½?t_FS?K ?3t?rݳ&?!R#??d@@*@&@*@;@8??????/X)E?(ˇ? oٳkF@;v@`?H,?AI X?&eh?@\@gbm!O@@z@l@z@$/@z@]c@z@'@z@fB@z@@4@և+ @dZ@և+ @Mj@և+ @fA@և+ @څ@և+ @e+@և+ @PI@8e!.@8S33333@3+@3oi@2ߝ-V@2ܑN;@1𖻘@1Q@1𖻘@1s@1𖻘@1n.?A[F?*|3N?/͔p?Uyu#?V0o~8?iOL?E?-NI`(?@N?kH?x(7?i 0/??,DP?a?XW~?%d?0a@@@@@,@(??????W[U6Z02 +?PǏ?K\V@C@fy?o{I?e*?l%?}+*@l'螎@@[~"@[p@[~"@[dq@[~"@[_b}@[~"@[E84@[~"@[͞@[~"@[!.@Õ%@`V@Õ%@C@Õ%@TzG@Õ%@6ȴ9X@Õ%@0:~@Õ%@- @8=:@8G;n@3E?|h@32s@2ȓtj@2 @2fYJ@2vs@2fYJ@2<@2fYJ@2?A~?h?Br?dx/?×(?`|?!{??|aQ?fb?RCK?m7>n?&f?jNR@?@@@(@(???????oQ:?vAg8?6Q?>;3c@M@ +H\?ss ? f0&@;z0@|s @`{ @@tȴ9X@tKƧ@tȴ9X@t=L@tȴ9X@tIQ@tȴ9X@ue@tȴ9X@tQ@tȴ9X@t)y@pyXbN@pyXbN@pyXbN@p{lE@pyXbN@pxQ@pyXbN@pz=@pyXbN@px_@pyXbN@py+@4]ce@4I^5@@2+S@2(>BZc@1~"@1oh@1 k@0حV@1 k@1-w1@1 k@1s?}ѿ,?nx?)?ɲ?o=\g?oܧ?oM?ւ?{Cx?aʕTI?“y@@@@@(@,???????Q.Z?L*W?*'9D@t;@pyT?m nB$?JՈO?F?rD薅@e'@@҅@҅@҅@҆?@҅@҆$/@҅@҆ +L/@҅@҅F +L@҅@҄7@=@=n@=@=W@=@=T`f@=@=_@=@=a|@=@=GE8@3!.@3oiDh@0O|hr@0O[W>@/@/$/@/C\@/'/X@/C\@/}Vl @/C\@/c ?| ?m0?>f?뤽??G?7F?|O? +?~Q?Hn?Cq$u?GE?8*?.x?? ??L?L@@@@@(@(??????_Le@?q@?Ia?䰉@҅|u~@=;8?f1e?<?߇R% +@f꼄IA@@# +=q@(9X@# +=q@@# +=q@?@# +=q@ -@# +=q@@# +=q@@\(@fffff@\(@@\(@E@\(@@\(@@\(@;dZ@804m8@8#*0U2@3+@3W k@3t@2ϗ$tS@2!.I@1,=@2!.I@1Z@2!.I@1bM?F/P5?'5?mr? h?=W?A!X?Br??!BL?GjH>?Ҩv?BL?׍xG?kc?F?V]9V?H +0?Q@@@@@,@,??????pd+ u?sQ?+"@qǨ@@zG@j~@zG@,<@zG@Xy>@zG@%F +@zG@3333@zG@,<@x!G{@x ě@x!G{@x!G{@x!G{@x ě@x!G{@x"M@x!G{@x!|Q@x!G{@x n@4 ]ce@4 n.@0ahr @0au@/n@/:R@/73@/e+a@/73@/@@/73@/JD?|O?/)s?:?뤽??5 g?7F?}ѿ,? +?'Q?>\?+!?U3p?ʳ_?3;?Ol?+ ?SP? Ğ@@@@@,@,??????$2@?=`?&)"&yE(?)byW@t@x!3L?F,?I#5?w CQ?J D@g`[@@$G@$,@$G@$$@$G@$K^@$G@$@$G@$=c@$G@$-@wglC@w}E@wglC@wdZ@wglC@wh1&z@wglC@weS@wglC@wh@wglC@w\)@6D@6XbM@2I^5?@2҈@2-V@2\(@1ce@1~%@1ce@1/V@1ce@2W?bjk?9؊?ʚCq?pu?z6?a,F??k25?{0?@&?V@@@@@,@*??????Қ@ٹ?ksH*?o94 @[@Z]?O<}?/?o?{ /gv@: I 4@d!}zi@@ I^@ +=q@ I^@tS@ I^@nP@ I^@M@ I^@\(@ I^@&J@5?|@?|@5?|@8YL@5?|@iDg8@5?|@.H@5?|@n.@5?|@wkQ@7D@77Kƨ@3pěT@3nm\@2V@2H˒:@2Eu@2FFs@2Eu@2G$tS@2Eu@2FϪ͟?us\?_ ?Êy?wn-?XMH?_Oo?F^S?-',?To?Jk?4{?{P?k@{?Az?ZaizD?8?`i2?k!l@@@@@*@&??????5C`.?F%K?HLfd@ j@ +?:a݂½-?ahdT?obI?O*N:@n9q@@hr!@-V@hr!@fffg@hr!@ܬ1(@hr!@u@hr!@rGE9@hr!@߱[W?@DT@KC@DT@Eݘ@DT@Gݗ@DT@9=c@DT@KƧ@DT@N;5@7g l@7xl"h +@3S@3D*@3-V@3$/@2Q@2T`d@2Q@2 I_@2Q@264?=fA:?D&d4?reE?XԠ#{?Jg?HAm?sD?kM..? ?GW?y҇?]d}?K3I?zPz?3 ?q' +B?!G?d?H@@@@@,@,???????ej7H\?A>;W?jh,@UP@Dy2?`ZC?_)?upb@00@gw]@@\7@\7 +=p@\7@\4O @\7@\?b}@\7@\A@\7@\:@\7@\Ce@ƻlD@ƽ/@ƻlD@ƿ.H@ƻlD@@ƻlD@ƾ (@ƻlD@L_@ƻlD@Ƨ@6쿱[X@6?@3sS@3pn@2~"@2:~@20U2a|@2 '@20U2a|@2Q@20U2a|@284֢?2}?O9?l5B?9.?wX?>V$?1j?yom?b?3)10F? +Y*?2;?\i?[ș8?Q?a?VM?4\ɵ@@@@@*@,???????d +?hg?Q+f?`\Z ?@\D@e8S=@@#Z1@#Z1@#Z1@#Zc@#Z1@#X@#Z1@#\(@#Z1@#X-@#Z1@#Y=c@(@(@(@64@(@^5?}@(@=K@(@5X@(@@24m8@2A7K@0ٺ^5?|@0@07Kƨ@0{@0!:T@0 n@0!:T@0 (@0!:T@0 D?^XN?Qd?`כm?lDžN9?G?F0?bM_x?,#?pM?Kd]?ڂc?b-x?b@?§d߱?m+&?E 8?ad|?Rv@@@@@*@(??????VL>?U?D`?x?;gx'Y@#Z?@X?Swj?Ii?M?6O2<@s8@@bM@Q @bM@-V@bM@hۋ@bM@S@bM@PH@bM@A@WlC@WlC@WlC@WsP@WlC@W'@WlC@W@WlC@Wě@WlC@Wsg@4|Q@4Gz@1^5?|@1R@1j~#@1Q@1u@0a|Q@1u@0m\@1u@0ݗ+k?|O?%ñ?l5B?~rV?2ּ9?!w?| ? ʣV? ?fa]G?^候?{5?=Ca?Ϸ+? ݎ8?XW~?WZ?:@@@@@*@,???????H2xBI@?Xt?Q9fR@@W +?ve&I?jս?q|?o@aE8F@@+ I@+ I@+ I@*L/@+ I@+ I@+ I@+6z@+ I@)l@+ I@* @,Gz@,Gz@,Gz@,H1&y@,Gz@,H9X@,Gz@,H1&y@,Gz@,Ix@,Gz@,HXy=@3qiC@3L/|@0O|hr@0Ov_ح@/O;d@/$tS@/ +#9@/ oiE@/ +#9@/ ^5?}@/ +#9@/ Ѹ?}ѿ,?ߋb?jhq9?ƠJ-M?~|+?t?| ?7fps?'Q?C B? (fit_val-fit_err*n_sigma)) + +def test_Fixed(): + # Test handling of a single star + true_params = {'x0': 1.0, 'y0':0.5, 'x0_err':0.1, 'y0_err':0.1} + mod = motion_model.Fixed() + param_list = mod.fitter_param_names + fixed_param_list = mod.fixed_param_names + # Confirm return of proper values for single t and array t + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], 0.0) + assert x_t==true_params['x0'] + assert y_t==true_params['y0'] + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], + [0.0,2025.0,10000]) + assert (x_t==true_params['x0']).all() + assert (y_t==true_params['y0']).all() + + # Check behavior of get_batch_pos_at_time + x0_batch = np.random.uniform(-2.0,2.0, 50) + y0_batch = np.random.uniform(-2.0,2.0, 50) + x0_err_batch = np.repeat(0.1, 50) + y0_err_batch = np.repeat(0.1, 50) + # Single epoch + t_batch=2020.0 + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + assert (x_t_batch==x0_batch).all() + assert (y_t_batch==y0_batch).all() + assert (x_err_t_batch==x0_err_batch).all() + assert (y_err_t_batch==y0_err_batch).all() + # Multiple times + t_batch = np.arange(2015.0,2025.0, 0.5) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + assert (x_t_batch==np.array([np.repeat(x0_batch_i, len(t_batch)) for x0_batch_i in x0_batch])).all() + assert (y_t_batch==np.array([np.repeat(y0_batch_i, len(t_batch)) for y0_batch_i in y0_batch])).all() + assert (x_err_t_batch==np.array([np.repeat(x0_err_batch_i, len(t_batch)) for x0_err_batch_i in x0_err_batch])).all() + assert (y_err_t_batch==np.array([np.repeat(y0_err_batch_i, len(t_batch)) for y0_err_batch_i in y0_err_batch])).all() + + # Test fitter + t = np.arange(2015.0,2025.0, 0.5) + # Get values from model and add scatter + x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], t) + x_sim = np.random.normal(x_true, true_params['x0_err']) + y_sim = np.random.normal(y_true, true_params['y0_err']) + # Run fit + params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, + np.ones(len(t))*true_params['x0_err'], + np.ones(len(t))*true_params['y0_err'], + np.nan) + # Confirm true value is within error bar of fit value + assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + + +def test_Linear(): + # Test handling of a single star + true_params = {'x0': 1.0, 'y0':0.5, 'x0_err':0.1, 'y0_err':0.1, + 'vx':0.2, 'vy':0.5, 'vx_err':0.05, 'vy_err':0.05, + 't0':2025.0} + mod = motion_model.Linear() + param_list = mod.fitter_param_names + fixed_param_list = mod.fixed_param_names + # Confirm return of proper values for single t=t0 and array t + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], + true_params['t0']) + assert x_t==true_params['x0'] + assert y_t==true_params['y0'] + t_arr = np.array([2010.0,true_params['t0'],2030.0]) + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], + t_arr) + assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx'])).all() + assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy'])).all() + + # Check behavior of get_batch_pos_at_time + x0_batch = np.random.uniform(-2.0,2.0, 50) + y0_batch = np.random.uniform(-2.0,2.0, 50) + vx_batch = np.random.uniform(-2.0,2.0, 50) + vy_batch = np.random.uniform(-2.0,2.0, 50) + x0_err_batch = np.repeat(0.1, 50) + y0_err_batch = np.repeat(0.1, 50) + vx_err_batch = np.repeat(0.05, 50) + vy_err_batch = np.repeat(0.05, 50) + t0_batch = np.repeat(2025.0,50) + # Single epoch + t_batch=2020.0 + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, + vx=vx_batch, vy=vy_batch, vx_err=vx_err_batch, vy_err=vy_err_batch, + t0=t0_batch) + assert (x_t_batch==(x0_batch+(t_batch-t0_batch)*vx_batch)).all() + assert (y_t_batch==(y0_batch+(t_batch-t0_batch)*vy_batch)).all() + assert (x_err_t_batch==np.hypot(x0_err_batch, (t_batch-t0_batch)*vx_err_batch)).all() + assert (y_err_t_batch==np.hypot(y0_err_batch, (t_batch-t0_batch)*vy_err_batch)).all() + # Multiple times + t_batch = np.arange(2015.0,2025.0, 0.5) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, + vx=vx_batch, vy=vy_batch, vx_err=vx_err_batch, vy_err=vy_err_batch, + t0=t0_batch) + assert (x_t_batch==np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx_batch[i] for i in range(len(x0_batch))])).all() + assert (y_t_batch==np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy_batch[i] for i in range(len(x0_batch))])).all() + assert (x_err_t_batch==np.array([np.hypot(x0_err_batch[i], (t_batch-t0_batch[i])*vx_err_batch[i]) for i in range(len(x0_batch))])).all() + assert (y_err_t_batch==np.array([np.hypot(y0_err_batch[i], (t_batch-t0_batch[i])*vy_err_batch[i]) for i in range(len(x0_batch))])).all() + + # Test fitter + t = np.arange(2015.0,2025.0, 0.5) + # Get values from model and add scatter + x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list],t) + x_sim = np.random.normal(x_true, 0.05) + y_sim = np.random.normal(y_true, 0.05) + # Run fit + params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, + np.repeat(0.05, len(t)), np.repeat(0.05,len(t)), true_params['t0']) + print(param_errs) + # Confirm true value is within error bar of fit value + assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + + # Test fitter with bootstrap + t = np.arange(2015.0,2025.0, 0.5) + # Get values from model and add scatter + x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list],t) + x_true_err, y_true_err = np.repeat(0.05,len(t)), np.repeat(0.05,len(t)) + x_sim = np.random.normal(x_true, x_true_err) + y_sim = np.random.normal(y_true, y_true_err) + # Run fit + params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0'],bootstrap=10) + print(param_errs) + # Confirm true value is within error bar of fit value + assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + +# # Test fitter for 2 pts +# t = np.array([2015.0,2025.0]) +# # Get values from model and add scatter +# x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], +# [true_params[p] for p in fixed_param_list],t) +# x_true_err, y_true_err = np.repeat(0.05,len(t)), np.repeat(0.05,len(t)) +# x_sim = np.random.normal(x_true, x_true_err) +# y_sim = np.random.normal(y_true, y_true_err) +# # Run fit +# mod_fit = motion_model.Linear(t0=true_params['t0']) +# params, param_errs = mod_fit.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) +# print("DJSKBGJ",param_list) +# print([true_params[p] for p in param_list]) +# print(params) +# print(param_errs) +# # Confirm true value is within error bar of fit value +# assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params),2)]) + + +def test_Acceleration(): + # Test handling of a single star + true_params = {'x0': 1.0, 'y0':0.5, 'x0_err':0.1, 'y0_err':0.1, + 'vx0':0.2, 'vy0':0.5, 'vx0_err':0.05, 'vy0_err':0.05, + 'ax':0.1, 'ay':-0.1, 'ax_err':0.02, 'ay_err':0.02, + 't0':2025.0} + mod = motion_model.Acceleration() + param_list = mod.fitter_param_names + fixed_param_list = mod.fixed_param_names + # Confirm return of proper values for single t=t0 and array t + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], + true_params['t0']) + assert x_t==true_params['x0'] + assert y_t==true_params['y0'] + t_arr = np.array([2010.0,true_params['t0'],2030.0]) + x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list], + t_arr) + assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ax'])).all() + assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ay'])).all() + + # Check behavior of get_batch_pos_at_time + x0_batch = np.random.uniform(-2.0,2.0, 50) + y0_batch = np.random.uniform(-2.0,2.0, 50) + vx0_batch = np.random.uniform(-2.0,2.0, 50) + vy0_batch = np.random.uniform(-2.0,2.0, 50) + ax_batch = np.random.uniform(-1.0,1.0, 50) + ay_batch = np.random.uniform(-1.0,1.0, 50) + x0_err_batch = np.repeat(0.1, 50) + y0_err_batch = np.repeat(0.1, 50) + vx0_err_batch = np.repeat(0.05, 50) + vy0_err_batch = np.repeat(0.05, 50) + ax_err_batch = np.repeat(0.02, 50) + ay_err_batch = np.repeat(0.02, 50) + t0_batch = np.repeat(2025.0,50) + # Single epoch + t_batch=2020.0 + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, + vx0=vx0_batch, vy0=vy0_batch, vx0_err=vx0_err_batch, vy0_err=vy0_err_batch, + ax=ax_batch, ay=ay_batch, ax_err=ax_err_batch, ay_err=ay_err_batch, + t0=t0_batch) + assert (x_t_batch==(x0_batch + (t_batch-t0_batch)*vx0_batch + 0.5*(t_batch-t0_batch)**2*ax_batch)).all() + assert (y_t_batch==(y0_batch + (t_batch-t0_batch)*vy0_batch + 0.5*(t_batch-t0_batch)**2*ay_batch)).all() + assert (x_err_t_batch==np.sqrt(x0_err_batch**2 + ((t_batch-t0_batch)*vx0_err_batch)**2 + + (0.5*(t_batch-t0_batch)**2*ax_err_batch)**2)).all() + assert (y_err_t_batch==np.sqrt(y0_err_batch**2 + ((t_batch-t0_batch)*vy0_err_batch)**2 + + (0.5*(t_batch-t0_batch)**2*ay_err_batch)**2)).all() + # Multiple times + t_batch = np.arange(2015.0,2025.0, 0.5) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, + vx0=vx0_batch, vy0=vy0_batch, vx0_err=vx0_err_batch, vy0_err=vy0_err_batch, + ax=ax_batch, ay=ay_batch, ax_err=ax_err_batch, ay_err=ay_err_batch, + t0=t0_batch) + assert (x_t_batch==np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ax_batch[i] for i in range(len(x0_batch))])).all() + assert (y_t_batch==np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ay_batch[i] for i in range(len(x0_batch))])).all() + assert (x_err_t_batch==np.array([np.sqrt(x0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vx0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ax_err_batch[i])**2) for i in range(len(x0_batch))])).all() + assert (y_err_t_batch==np.array([np.sqrt(y0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vy0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ay_err_batch[i])**2) for i in range(len(x0_batch))])).all() + + # Test fitter + t = np.arange(2015.0,2025.0, 0.5) + # Get values from model and add scatter + x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list],t) + x_true_err = np.sqrt(true_params['x0_err']**2 + ((t-true_params['t0'])*true_params['vx0_err'])**2 + + (0.5*(t-true_params['t0'])**2*true_params['ax_err'])**2) + y_true_err = np.sqrt(true_params['y0_err']**2 + ((t-true_params['t0'])*true_params['vy0_err'])**2 + + (0.5*(t-true_params['t0'])**2*true_params['ay_err'])**2) + x_sim = np.random.normal(x_true, x_true_err) + y_sim = np.random.normal(y_true, y_true_err) + # Run fit + mod_fit = motion_model.Acceleration(t0=true_params['t0']) + params, param_errs = mod_fit.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) + # Confirm true value is within error bar of fit value + assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + +#@pytest.mark.skip(reason="not written") +def test_Parallax(): + # Test handling of a single star + true_params = {'x0': 1.0, 'y0':-0.5, 'x0_err':0.1, 'y0_err':0.1, + 'vx':-0.2, 'vy':0.5, 'vx_err':0.05, 'vy_err':0.05, + 'pi':0.5, 'RA':17.76, 'Dec':-28.933, 'PA':0, + 't0':2020.0} + mod = motion_model.Parallax(**{'RA':17.76, 'Dec':-28.933, 'PA':0}) + param_list = mod.fitter_param_names + fixed_param_list = mod.fixed_param_names + print(param_list) + + # Test fitter + t = np.arange(2015.0,2025.0, 0.5) + # Get values from model and add scatter + x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + [true_params[p] for p in fixed_param_list],t) + x_true_err, y_true_err = np.repeat(0.1,len(t)), np.repeat(0.1,len(t)) + x_sim = np.random.normal(x_true, x_true_err) + y_sim = np.random.normal(y_true, y_true_err) + # Run fit + params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) + # Confirm true value is within error bar of fit value + assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + + +def test_Parallax_PA(): + # Set PA=0 model + x0, y0 = 2.0, -1.0 + vx, vy = 0.2, 0.5 + RA, Dec = 17.76, -28.933 + pi = 0.5 + mod_pa0 = motion_model.Parallax(RA=RA,Dec=Dec, PA=0) + # Set PA=90 model with equivalent parameters in that frame + mod_pa90 = motion_model.Parallax(RA=RA,Dec=Dec,t0=2020.0, PA=90) + t_set = np.arange(2018,2024,0.01) + dat_pa0 = mod_pa0.get_pos_at_time([x0,vx,y0,vy,pi],[2020.0],t_set) + dat_pa90 = mod_pa90.get_pos_at_time([y0,vy,-x0,-vx,pi],[2020.0],t_set) + assert (np.abs(dat_pa0[0]-(-dat_pa90[1]))<1e-10).all() + assert (np.abs(dat_pa0[1]-(dat_pa90[0]))<1e-10).all() diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 9051fb8..9962c05 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -1,7 +1,9 @@ from astropy.table import Table from astropy import table +from flystar import motion_model from flystar.startables import StarTable from flystar.starlists import StarList +from flystar import motion_model import numpy as np import pytest import os @@ -308,45 +310,45 @@ def test_fit_velocities(): # Test creation of new variables assert len(tab['vx']) == len(tab) assert len(tab['vy']) == len(tab) - assert len(tab['vxe']) == len(tab) - assert len(tab['vye']) == len(tab) - assert len(tab['n_vfit']) == len(tab) - assert tab.meta['n_vfit_bootstrap'] == 0 + assert len(tab['vx_err']) == len(tab) + assert len(tab['vy_err']) == len(tab) + assert len(tab['n_fit']) == len(tab) + assert tab.meta['n_fit_bootstrap'] == 0 # Test no-fit for stars with N<2 epochs. n_epochs = (tab['x'] >= 0).sum(axis=1) idx = np.where(n_epochs < 2)[0] assert (tab['vx'][idx] == 0).all() - assert (tab['vxe'][idx] == 0).all() - assert (tab['n_vfit'][idx] == 2).all() + assert (tab['vx_err'][idx] == 0).all() + assert (tab['n_fit'][idx] == 2).all() # Test that the velocity errors were calculated. - assert (tab['vxe'][0:100] > 0).all() - assert (tab['x0e'][0:100] > 0).all() - assert (tab['vye'][0:100] > 0).all() - assert (tab['y0e'][0:100] > 0).all() + assert (tab['vx_err'][0:100] > 0).all() + assert (tab['x0_err'][0:100] > 0).all() + assert (tab['vy_err'][0:100] > 0).all() + assert (tab['y0_err'][0:100] > 0).all() assert np.isfinite(tab['x0']).all() assert np.isfinite(tab['vx']).all() assert np.isfinite(tab['y0']).all() assert np.isfinite(tab['vy']).all() - assert np.isfinite(tab['x0e']).all() - assert np.isfinite(tab['vxe']).all() - assert np.isfinite(tab['y0e']).all() - assert np.isfinite(tab['vye']).all() + assert np.isfinite(tab['x0_err']).all() + assert np.isfinite(tab['vx_err']).all() + assert np.isfinite(tab['y0_err']).all() + assert np.isfinite(tab['vy_err']).all() ########## # Test running a second time. We should get the same results. ########## vx_orig = tab['vx'] x0_orig = tab['x0'] - vxe_orig = tab['vxe'] - x0e_orig = tab['x0e'] + vxe_orig = tab['vx_err'] + x0e_orig = tab['x0_err'] tab.fit_velocities(verbose=False) assert (vx_orig == tab['vx']).all() assert (x0_orig == tab['x0']).all() - assert (vxe_orig == tab['vxe']).all() - assert (x0e_orig == tab['x0e']).all() + assert (vxe_orig == tab['vx_err']).all() + assert (x0e_orig == tab['x0_err']).all() ########## # Test fixed_t0 functionality @@ -363,41 +365,42 @@ def test_fit_velocities(): tab_b.meta = tab1.meta tab_b.fit_velocities(verbose=True, bootstrap=50) - assert tab_b.meta['n_vfit_bootstrap'] == 50 - assert tab_b['x0e'][0] > tab['x0e'][0] - assert tab_b['vxe'][0] > tab['vxe'][0] - assert tab_b['y0e'][0] > tab['y0e'][0] - assert tab_b['vye'][0] > tab['vye'][0] + assert tab_b.meta['n_fit_bootstrap'] == 50 + assert tab_b['x0_err'][0] > tab['x0_err'][0] + assert tab_b['vx_err'][0] > tab['vx_err'][0] + assert tab_b['y0_err'][0] > tab['y0_err'][0] + assert tab_b['vy_err'][0] > tab['vy_err'][0] ########## # Test what happens with no velocity errors ########## - tab.remove_columns(['xe', 'ye', 'x0', 'y0', 'x0e', 'y0e', 'vx', 'vy', 'vxe', 'vye', 'n_vfit']) + tab.remove_columns(['xe', 'ye', 'x0', 'y0', 'x0_err', 'y0_err', 'vx', 'vy', 'vx_err', 'vy_err', 'n_fit']) tab.fit_velocities(verbose=False) assert len(tab['vx']) == len(tab) assert len(tab['vy']) == len(tab) - assert len(tab['vxe']) == len(tab) - assert len(tab['vye']) == len(tab) - assert len(tab['n_vfit']) == len(tab) - assert (tab['vxe'][0:100] > 0).all() - assert (tab['x0e'][0:100] > 0).all() - assert (tab['vye'][0:100] > 0).all() - assert (tab['y0e'][0:100] > 0).all() + assert len(tab['vx_err']) == len(tab) + assert len(tab['vy_err']) == len(tab) + assert len(tab['n_fit']) == len(tab) + assert (tab['vx_err'][0:100] > 0).all() + assert (tab['x0_err'][0:100] > 0).all() + assert (tab['vy_err'][0:100] > 0).all() + assert (tab['y0_err'][0:100] > 0).all() ######### # Test mask_list ######### # Test 5a: Masked + print("Testing Masked List") tt.fit_velocities(bootstrap=0, verbose=False, mask_lists=[1]) assert np.arange(2.25, 48, 5) == pytest.approx(tt['x0'].data) assert np.arange(2.25, 48, 5) == pytest.approx(tt['y0'].data) - assert np.zeros(10) == pytest.approx(tt['x0e'].data) - assert np.zeros(10) == pytest.approx(tt['y0e'].data) + assert np.full(10, 0.05) == pytest.approx(tt['x0_err'].data) + assert np.full(10, 0.05) == pytest.approx(tt['y0_err'].data) assert np.ones(10) == pytest.approx(tt['vx'].data) assert np.ones(10) == pytest.approx(tt['vy'].data) - assert np.zeros(10) == pytest.approx(tt['vxe'].data) - assert np.zeros(10) == pytest.approx(tt['vye'].data) + assert np.full(10, 0.03380617) == pytest.approx(tt['vx_err'].data) + assert np.full(10, 0.03380617) == pytest.approx(tt['vy_err'].data) assert 2017.25 * np.ones(10) == pytest.approx(tt['t0'].data) # Test 5b: Things that should break the code. @@ -420,33 +423,33 @@ def test_fit_velocities_1epoch(): tab2 = tab[10000:10100] tab3 = tab[-100:] tab_1 = table.vstack((tab1, tab2, tab3)) + tab_1.meta = tab1.meta tab_1.fit_velocities(verbose=False) - assert 'n_vfit' in tab_1.colnames + assert 'n_fit' in tab_1.colnames assert 't0' in tab_1.colnames assert 'x0' in tab_1.colnames assert 'y0' in tab_1.colnames assert 'vx' in tab_1.colnames assert 'vy' in tab_1.colnames - assert 'x0e' in tab_1.colnames - assert 'y0e' in tab_1.colnames - assert 'vxe' in tab_1.colnames - assert 'vye' in tab_1.colnames + assert 'x0_err' in tab_1.colnames + assert 'y0_err' in tab_1.colnames + assert 'vx_err' in tab_1.colnames + assert 'vy_err' in tab_1.colnames - assert (tab_1['x0'] == tab_1['x'][:,0]).all() assert (tab_1['y0'] == tab_1['y'][:,0]).all() - assert (tab_1['x0e'] == tab_1['xe'][:,0]).all() - assert (tab_1['y0e'] == tab_1['ye'][:,0]).all() + assert (tab_1['x0_err'] == tab_1['xe'][:,0]).all() + assert (tab_1['y0_err'] == tab_1['ye'][:,0]).all() - assert(tab_1['vx'] == 0).all() - assert(tab_1['vy'] == 0).all() - assert(tab_1['vxe'] == 0).all() - assert(tab_1['vye'] == 0).all() + assert(np.isnan(tab_1['vx'])).all() + assert(np.isnan(tab_1['vy'])).all() + assert(np.isnan(tab_1['vx_err'])).all() + assert(np.isnan(tab_1['vy_err'])).all() assert(tab_1['t0'] == 2001.0).all() - assert(tab_1['n_vfit'] == 1).all() + assert(tab_1['n_fit'] == 1).all() return @@ -463,34 +466,71 @@ def test_fit_velocities_2epoch(): tab2 = tab[10000:10100] tab3 = tab[-100:] tab_2 = table.vstack((tab1, tab2, tab3)) + tab_2.meta=tab1.meta tab_2.fit_velocities(verbose=False) - assert 'n_vfit' in tab_2.colnames + assert 'n_fit' in tab_2.colnames assert 't0' in tab_2.colnames assert 'x0' in tab_2.colnames assert 'y0' in tab_2.colnames assert 'vx' in tab_2.colnames assert 'vy' in tab_2.colnames - assert 'x0e' in tab_2.colnames - assert 'y0e' in tab_2.colnames - assert 'vxe' in tab_2.colnames - assert 'vye' in tab_2.colnames + assert 'x0_err' in tab_2.colnames + assert 'y0_err' in tab_2.colnames + assert 'vx_err' in tab_2.colnames + assert 'vy_err' in tab_2.colnames # 2 detections + print(tab1.meta) np.testing.assert_almost_equal(tab_2['x0'][0], tab_2['x'][0,0], 1) - assert tab_2['n_vfit'][0] == 2 + assert tab_2['n_fit'][0] == 2 # 1 detection assert tab_2['x0'][100] == tab_2['x'][100, 0] - assert tab_2['n_vfit'][100] == 1 + assert tab_2['n_fit'][100] == 1 # 0 detections - assert tab_2['x0'][-1] == 0 - assert tab_2['n_vfit'][-1] == 0 + assert np.isnan(tab_2['x0'][-1]) + assert tab_2['n_fit'][-1] == 0 return +def test_fit_velocities_all_detected(): + """ + Test the fit_velocities function when all stars are detected in all epochs. + """ + tab = StarTable.read(test_dir + '/test_all_detected.fits') + tab_orig = tab.copy() + # tab = tab[:1] + + epochs = ['2005_F814W', '2010_F160W', '2013_F160W', '2015_F160W'] + epoch_cols = [['_'.join(_.split('_')[:2]) for _ in tab.meta['EPNAMES']].index(epoch) for epoch in epochs] + + mm = motion_model.Linear() + tab.fit_velocities_all_detected( + weighting='var', + use_scipy=False, absolute_sigma=False, + motion_model_to_fit=mm, + epoch_cols=epoch_cols, + art_star=True + ) + + # Check that the output table has the expected columns + for col in ['n_fit', 't0', 'x0', 'y0', 'vx', 'vy', 'x0_err', 'y0_err', 'vx_err', 'vy_err']: + assert col in tab.colnames + + # Check that the fitted values match the original values + np.testing.assert_almost_equal(tab['x0'], tab_orig['x0']) + np.testing.assert_almost_equal(tab['y0'], tab_orig['y0']) + np.testing.assert_almost_equal(tab['t0'], tab_orig['t0']) + np.testing.assert_almost_equal(tab['vx'], tab_orig['vx']) + np.testing.assert_almost_equal(tab['vy'], tab_orig['vy']) + np.testing.assert_almost_equal(tab['vxe'], tab_orig['vxe']) + np.testing.assert_almost_equal(tab['vye'], tab_orig['vye']) + + return + def make_star_table(): # User input cat_file = test_dir + '/test_catalog.fits' diff --git a/flystar/transforms.py b/flystar/transforms.py index 0a1885a..6cc865a 100755 --- a/flystar/transforms.py +++ b/flystar/transforms.py @@ -6,6 +6,7 @@ import collections import re import pdb +from flystar import motion_model class Transform2D(object): ''' @@ -112,21 +113,39 @@ def evaluate_starlist(self, star_list): new_list['xe'] = vals[0] new_list['ye'] = vals[1] - # Velocities (if they exist) - if 'vx' in new_list.colnames: + # Velocities (if they exist and no more complex motion model used) + complex_motion_model = ('motion_model_input' in new_list.colnames) + if complex_motion_model: + # If the only motion models used are Fixed and Linear, we can still transform velocities. + motion_models_unique = list(np.unique(starlist_f['motion_model_input'])) + if 'Linear' in motion_models_unique: + motion_models_unique.remove('Linear') + if 'Fixed' in motion_models_unique: + motion_models_unique.remove('Fixed') + if len(motion_models_unique)==0: + complex_motion_model=False + # Cannot transform more complex motion models - set values to nan + if complex_motion_model: + motion_params = motion_model.get_list_motion_model_param_names(new_list['motion_model_input'], with_errors=True, with_fixed=False) + for param in motion_params: + if param in new_list.colnames: + new_list[param] = np.nan + + if ('vx' in new_list.colnames) and (not complex_motion_model): + # For velocity only, no problem vals = self.evaluate_vel(star_list['x'], star_list['y'], star_list['vx'], star_list['vy']) new_list['vx'] = vals[0] new_list['vy'] = vals[1] # Velocity errors (if they exist) - if 'vxe' in new_list.colnames: + if 'vx_err' in new_list.colnames: vals = self.evaluate_vel_error(star_list['x'], star_list['y'], star_list['vx'], star_list['vy'], star_list['xe'], star_list['ye'], - star_list['vxe'], star_list['vye']) - new_list['vxe'] = vals[0] - new_list['vye'] = vals[1] + star_list['vx_err'], star_list['vy_err']) + new_list['vx_err'] = vals[0] + new_list['vy_err'] = vals[1] return new_list @@ -254,14 +273,14 @@ def __init__(self, order, px, py, pxerr=None, pyerr=None, mag_offset=0.0): Parameters ---------- - px : list or array [a0, a1, a2, ...] + order : int + The order of the transformation. 0 = 2 free parameters, 1 = 6 free parameters. + + px : list or array [a0, a1, a2, ...] coefficients to transform input x coordinates into output x' coordinates. py : list or array [b0, b1, b2, ...] coefficients to transform input y coordinates into output y' coordinates. - - order : int - The order of the transformation. 0 = 2 free parameters, 1 = 6 free parameters. pxerr : array or list array or list of errors of the coefficients to transform input x coordinates @@ -288,7 +307,7 @@ def __init__(self, order, px, py, pxerr=None, pyerr=None, mag_offset=0.0): px_dict = PolyTransform.make_param_dict(px, self.poly_order, isY=False) py_dict = PolyTransform.make_param_dict(py, self.poly_order, isY=True) - fixed_params = {'c0_0': False, 'c1_0': True, 'c1_1': True} + fixed_params = {'c0_0': False, 'c1_0': True, 'c0_1': True} #, 'c1_1':True} self.px = models.Polynomial2D(self.poly_order, **px_dict, fixed=fixed_params) self.py = models.Polynomial2D(self.poly_order, **py_dict, fixed=fixed_params) else: @@ -312,7 +331,7 @@ def make_param_dict(initial_param, order, isY=False): a0 + a1*x + a2*y + a3*x^2 + a4*x*y + a5*y^2 + a6*x^3 + a7*x^2*y + a8*x*y^2 + a9*y^3 - and conver this into a dictionary where: + and convert this into a dictionary where: c0_0 = a0 c1_0 = a1 @@ -580,7 +599,7 @@ def derive_transform(cls, x, y, xref, yref, order, m=None, mref=None, init_gx = PolyTransform.make_param_dict(init_gx, poly_order, isY=False) init_gy = PolyTransform.make_param_dict(init_gy, poly_order, isY=True) - fixed_params = {'c0_0': False, 'c1_0': True, 'c1_1': True, 'c0_1': True} + fixed_params = {'c0_0': False, 'c1_0': True, 'c0_1': True} #, 'c1_1':True} p_init_x = models.Polynomial2D(poly_order, **init_gx, fixed=fixed_params) p_init_y = models.Polynomial2D(poly_order, **init_gy, fixed=fixed_params) else: @@ -592,6 +611,7 @@ def derive_transform(cls, x, y, xref, yref, order, m=None, mref=None, fit_p = fitting.LinearLSQFitter() + #pdb.set_trace() px = fit_p(p_init_x, x, y, xref, weights=weights) py = fit_p(p_init_y, x, y, yref, weights=weights) diff --git a/setup.cfg b/setup.cfg index 0bf235e..d851345 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,7 +37,7 @@ testpaths = "flystar" "docs" astropy_header = true doctest_plus = enabled text_file_format = rst -addopts = --doctest-rst +#addopts = --doctest-rst [coverage:run] omit =