From 7850fa1e3d4fa4ced592ff127de186f726881b2f Mon Sep 17 00:00:00 2001 From: mriedl Date: Fri, 23 Jul 2021 17:57:54 +0200 Subject: [PATCH 01/33] commented property file --- .../service/Coordinator.java | 2 +- ...orphemic.predictionorchestrator.properties | 45 +++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java index 1d5c8369..38f129cf 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java @@ -44,7 +44,7 @@ public class Coordinator { * and before getting them. But this is not a problem as we want to publish as much as possible assuming we had a full metric vector * at any point. If the buffer would move in the meantime we just wouldn't publish this specific value */ - //Communication 4 and 1 + //Communication 5 and 1 synchronized void publishIfPooledValuesProvidedForAllMetrics(long predictionTime) { //metricName -> predictionAvailability diff --git a/prediction_orchestrator/src/main/resources/eu.morphemic.predictionorchestrator.properties b/prediction_orchestrator/src/main/resources/eu.morphemic.predictionorchestrator.properties index 0c1ecc30..14676ebc 100644 --- a/prediction_orchestrator/src/main/resources/eu.morphemic.predictionorchestrator.properties +++ b/prediction_orchestrator/src/main/resources/eu.morphemic.predictionorchestrator.properties @@ -1,14 +1,51 @@ -forecasting_configuration.initial_prediction_horizon=120000 +#forecasting_configuration are properties that are sent further to The forecasters +#They explain pattern for predictionTimes, predictions's count and what should be the predictionTime +#of the first message send + +#global pattern is: predictionTime = epochStart + k*initial_prediction_horizon where k is integer + +#unit: seconds +#This property indicates what is the time difference between following predictionTimes +# both inside the forecasters and the PO +# Depending on the forecaster it may also mean how often the Forecaster would publish predictions +# to the PO +forecasting_configuration.initial_prediction_horizon=120 + +#This property indicates how many forward prediction the forecaster should send +#at the moment of publishing predictions forecasting_configuration.initial_forward_prediction_number=8 -forecasting_configuration.starting_forecasting_delay=50000 +#This property indicates what is epochStart and what predictionTime should have the first message send by the forecaster +#It also explains time before the forecasters start publishing +#EpochStart = currentTime + starting_forecasting_delay +# predictionTime of first predictionSend = EpochStart + initial_prediction_horizon +forecasting_configuration.starting_forecasting_delay=200 +#In the most common scenario: +#PO counts epochStart based on starting_forecasting_delay and send the above properties to the Forecaster +#At moment epochStart the forecaster would publish initial_forward_prediction_number predictions +#with predictionTimes equal = epochStart + (1,2,3 .. initial_forward_prediction_number) * initial_prediction_horizon +# At moment (epochStart + 1*initial_prediction_horizon) the Forecaster would send initial_forward_prediction_number predictions +#with predictionTimes equal = epochStart + (2,3 .. (initial_forward_prediction_number+1)) * initial_prediction_horizon + + +#This property indicates method for checking how many forecasters' data is needed to be abe to pool/ensemble +# predictions and publish them to EMS +# It currntly may equal PERCENTAGE_FORECASTERS_COUNT_NEEDED or STATIC_FORECASTERS_COUNT_NEEDED +# With the first option threshold property is in percents +#With the second it is a static count +#For example with threshold threshold=2 at least 2 synchronised forecasters are needed to be able to merge predictions and send them forward pooling.poolingStrategy=STATIC_FORECASTERS_COUNT_NEEDED pooling.threshold=2 jms.client.broker_properties_configuration_file_location=${MELODIC_CONFIG_DIR}/eu.melodic.event.brokerclient.properties -startingMethodsList=nbeats,es_hybrid,arima,tsetlin_machines,exponential_smoothing,lstm,gluon_machines,prophet +#List of connected forecaster that PO expects to be working. PO would not coummuncate with the forecasters not on that list +startingMethodsList=es_hybrid,cnn,prophet,tft,nbeats,arima,tsetlin_machines,exponential_smoothing,lstm,gluon_machines -logging.config=file:${MELODIC_CONFIG_DIR}/logback-conf/logback-spring.xml +#this is only for logging, have no influence on working flow of The PO logging.zone_id=Europe/Warsaw + +#Details of restarting connection to amq upon failure +activemq.restartinterval=10000 +activemq.restartcount=20 -- GitLab From 7443776c7d458cd4ef58965516bbc19f39df84e0 Mon Sep 17 00:00:00 2001 From: Fotis Paraskevopoulos Date: Sun, 26 Sep 2021 09:05:07 +0300 Subject: [PATCH 02/33] MOR-117 Setting the docker name as a variable to make sure it is the same accross --- .gitlab-ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b20a9b7..7596c028 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,8 @@ variables: SLO_SEVERITY_CALCULATOR_CLI: "mvn --batch-mode -f morphemic-slo-severity-calculator/pom.xml" PREDICTON_ORCHESTRATOR_CLI: "mvn --batch-mode -N -f prediction_orchestrator/pom.xml" + DOCKER_FORECAST_ESHYBRID_DOCKER_NAME: 'morphemic_forecasting_eshybird' + cache: paths: - maven_repo/ @@ -245,8 +247,8 @@ deploy:morphemic-forecasting-eshybrid: - $DOCKER_DIND_SERVICE script: - cd morphemic-forecasting-eshybrid - - docker build -t morphemic-forecasting-eshybird . + - docker build -t $DOCKER_FORECAST_ESHYBRID_DOCKER_NAME . - docker image ls - echo "$K8S_SECRET_DOCKER_PASSWORD" | docker login $CI_REGISTRY -u $K8S_SECRET_DOCKER_USER --password-stdin - - docker tag morphemic-forecasting-eshybrid:latest $CI_REGISTRY_IMAGE/morphemic-forecasting-eshybrid:$CI_COMMIT_BRANCH - - docker push $CI_REGISTRY_IMAGE/morphemic-forecasting-eshybrid:$CI_COMMIT_BRANCH + - docker tag $DOCKER_FORECAST_ESHYBRID_DOCKER_NAME:latest $CI_REGISTRY_IMAGE/$DOCKER_FORECAST_ESHYBRID_DOCKER_NAME:$CI_COMMIT_BRANCH + - docker push $CI_REGISTRY_IMAGE/$DOCKER_FORECAST_ESHYBRID_DOCKER_NAME:$CI_COMMIT_BRANCH -- GitLab From ede9a4e5bfb0507aa3a3358ca99dbd86d8166747 Mon Sep 17 00:00:00 2001 From: Fotis Paraskevopoulos Date: Sun, 26 Sep 2021 09:26:34 +0300 Subject: [PATCH 03/33] Correcting logging in order to validate messages, and minor fixes --- morphemic-forecasting-eshybrid/forecasting/eshybrid.py | 4 ++-- morphemic-forecasting-eshybrid/main.py | 8 +++++++- morphemic-forecasting-eshybrid/morphemic/model.py | 1 - 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py index 2d554beb..5b94d393 100644 --- a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py +++ b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py @@ -124,7 +124,7 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen def on_metrics_to_predict(self,res): - logging.debug("[6] Metrics to predics %s " % res) + logging.debug("[2] Metrics to predics %s " % res) for metric in self.metrics: logging.debug("Un-subscribing from %s " % metric) self.connector.unsubscribe(metric.metric,self.id) @@ -148,7 +148,7 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen def on_start_forecasting_eshybrid(self,res): - logging.debug("[6] Start Forecasting %s " % res) + logging.debug("[7] Start Forecasting %s " % res) if not self.metrics: logging.error("Start forecasting before metrics to predict ") diff --git a/morphemic-forecasting-eshybrid/main.py b/morphemic-forecasting-eshybrid/main.py index 99d0136e..dd1e582c 100644 --- a/morphemic-forecasting-eshybrid/main.py +++ b/morphemic-forecasting-eshybrid/main.py @@ -1,13 +1,19 @@ import logging import configparser import os +import argparse from forecasting import eshybrid logger = logging.getLogger() logger.setLevel(logging.DEBUG) -config_file = "%s/%s" % (os.getcwd(), "sync.cfg") +parser = argparse.ArgumentParser(description='Run eshybrid forecaster') +parser.add_argument('--config', help='Config file to run, default sync.cfg') + +args = parser.parse_args() + +config_file = "%s/%s" % (os.getcwd(), args.config or "sync.cfg") print("Config file %s ", config_file) config = configparser.RawConfigParser() config.read(config_file) diff --git a/morphemic-forecasting-eshybrid/morphemic/model.py b/morphemic-forecasting-eshybrid/morphemic/model.py index 2562291e..ea6a730f 100644 --- a/morphemic-forecasting-eshybrid/morphemic/model.py +++ b/morphemic-forecasting-eshybrid/morphemic/model.py @@ -139,5 +139,4 @@ class Model: ret= self._model.model_for_metric(metric).predict(m_pd) - return ret \ No newline at end of file -- GitLab From c2483535f4ff7f6c4b3cbaea9d808b5231599b25 Mon Sep 17 00:00:00 2001 From: mriedl Date: Mon, 27 Sep 2021 11:32:22 +0200 Subject: [PATCH 04/33] deleted overcompilicated registry. Changed coordinator to easier metrics sending --- .../listeners/PredictionListener.java | 5 +- ...AccessWithoutUpdatePredictionRegistry.java | 60 ------------------- .../registries/PredictionRegistry.java | 21 +++++-- .../service/Coordinator.java | 19 +++--- .../service/MetricHandler.java | 12 ++-- .../registries/PredictionRegistryTest.java | 52 ---------------- 6 files changed, 36 insertions(+), 133 deletions(-) delete mode 100644 prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/NoAccessWithoutUpdatePredictionRegistry.java diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/communication/listeners/PredictionListener.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/communication/listeners/PredictionListener.java index 91dc1efe..ffd1e90c 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/communication/listeners/PredictionListener.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/communication/listeners/PredictionListener.java @@ -29,8 +29,9 @@ public class PredictionListener extends ActiveMQListener { log.debug("Listener of topic {}: Converting event payload to PredictionFromForecasterMessage instance...", topicName); PredictionFromForecasterMessage predictionFromForecasterMessage = gson.fromJson(payload, PredictionFromForecasterMessage.class); log.info("Listener of topic {}: PredictionFromForecasterMessage instance: {}", topicName, predictionFromForecasterMessage.toString()); - boolean valueUpdated = predictionRegistry.processPrediction(new Prediction(predictionFromForecasterMessage)); - if (valueUpdated) { + int valueResult = predictionRegistry.processPrediction(new Prediction(predictionFromForecasterMessage)); + if ((valueResult == PredictionRegistry.VALUE_ADDED) || + (valueResult == PredictionRegistry.VALUE_UPDATED)) { metricHandler.launchMethodsPoolingIfNecessary(predictionFromForecasterMessage.getPredictionTime()); } } catch (JMSException e) { diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/NoAccessWithoutUpdatePredictionRegistry.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/NoAccessWithoutUpdatePredictionRegistry.java deleted file mode 100644 index 517e5365..00000000 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/NoAccessWithoutUpdatePredictionRegistry.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.morphemic.prediction_orchestrator.registries; - -import eu.morphemic.prediction_orchestrator.model.Prediction; -import eu.morphemic.prediction_orchestrator.properties.ForecastingConfiguration; -import lombok.extern.slf4j.Slf4j; - -import javax.jms.JMSException; -import java.util.concurrent.ConcurrentHashMap; - -@Slf4j -public class NoAccessWithoutUpdatePredictionRegistry extends PredictionRegistry { - public final static Prediction PREDICTION_ALREADY_ACCESSED = null; - - private ConcurrentHashMap availableToAccess; - - public NoAccessWithoutUpdatePredictionRegistry(ForecastingConfiguration forecastingConfiguration, String registryName) { - super(forecastingConfiguration, registryName); - } - - @Override - void removeBufferRecord(long keyToRemove) { - this.predictions.remove(keyToRemove); - this.availableToAccess.remove(keyToRemove); - } - - @Override - public synchronized void reconfigureBuffer(ForecastingConfiguration forecastingConfiguration) { - super.reconfigureBuffer(forecastingConfiguration); - this.availableToAccess = new ConcurrentHashMap<>(); - } - - /** - * We need to synchronise this block as we need to makes sure that we block next access just after checking if we - * can get the element ("if" condition and updating the "availableToAccessMap" operations need to be bounded into atomic block) - */ - @Override - public Prediction getCopyPrediction(long predictionTime) { - synchronized (this) { - if (availableToAccess.getOrDefault(predictionTime, false)) { - availableToAccess.put(predictionTime, false); - return super.getCopyPrediction(predictionTime); - } else { - log.info("Registry {}: Prediction on predictionTime: {} has already been accessed. Wait for its update", registryName, - formatPredictionTime(predictionTime)); - return PREDICTION_ALREADY_ACCESSED; - } - } - } - - @Override - boolean updateBufferRecord(Prediction prediction) throws JMSException { - log.debug("Processing pooled prediction of registry {} for {}", registryName, - formatPredictionTime(prediction.getPredictionTime())); - boolean valueChanged = super.updateBufferRecord(prediction); - if (valueChanged || !availableToAccess.containsKey(prediction.getPredictionTime())) { - this.availableToAccess.put(prediction.getPredictionTime(), true); - } - return valueChanged; - } -} diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistry.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistry.java index 5b4e6fec..fe776e07 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistry.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistry.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import javax.jms.JMSException; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; @@ -29,6 +30,10 @@ import java.util.concurrent.atomic.AtomicReference; @Slf4j public class PredictionRegistry { + public static int VALUE_ADDED = 2; + public static int VALUE_UPDATED = 1; + public static int VALUE_REJECTED = 0; + String registryName; private AtomicReference forecastingConfiguration; @@ -69,7 +74,7 @@ public class PredictionRegistry { earliestPredictionTime.get() + predictionHorizon * (forecastingConfiguration.getForward_prediction_number() - 1)); } - public synchronized boolean processPrediction(Prediction prediction) throws JMSException { + public synchronized int processPrediction(Prediction prediction) throws JMSException { if (prediction != null) { long predictionTime = prediction.getPredictionTime(); if (predictionTime < earliestPredictionTime.get()) { @@ -84,20 +89,24 @@ public class PredictionRegistry { return updateBufferRecord(prediction); } } - return false; + return VALUE_REJECTED; } public boolean containsPrediction(long predictionTime) { return predictions.containsKey(predictionTime); } - boolean updateBufferRecord(Prediction prediction) throws JMSException { - AtomicBoolean valueUpdated = new AtomicBoolean(false); + int updateBufferRecord(Prediction prediction) throws JMSException { + AtomicInteger valueResult = new AtomicInteger(VALUE_REJECTED); predictions.compute( prediction.getPredictionTime(), (k, v) -> { if ((v == null) || (v.getTimestamp() < prediction.getTimestamp())) { - valueUpdated.set(true); + if (v == null) { + valueResult.set(VALUE_ADDED); + } else { + valueResult.set(VALUE_UPDATED); + } log.debug("Updating value for {} inside registry: {} on predictionTime: {} and timestamp {}", prediction.getMetricValue(), registryName, prediction.getPredictionTime(), prediction.getTimestamp()); return prediction; @@ -109,7 +118,7 @@ public class PredictionRegistry { if (latestPredictionTime.get() < prediction.getPredictionTime()) { moveBuffer(prediction.getPredictionTime()); } - return valueUpdated.get(); + return valueResult.get(); } void removeBufferRecord(long keyToRemove) { diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java index 38f129cf..2e6615fd 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java @@ -7,7 +7,7 @@ import eu.morphemic.prediction_orchestrator.log_utils.PredictionTimeFormatter; import eu.morphemic.prediction_orchestrator.model.Prediction; import eu.morphemic.prediction_orchestrator.properties.ForecastingConfiguration; import eu.morphemic.prediction_orchestrator.properties.Properties; -import eu.morphemic.prediction_orchestrator.registries.NoAccessWithoutUpdatePredictionRegistry; +import eu.morphemic.prediction_orchestrator.registries.PredictionRegistry; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -45,7 +45,8 @@ public class Coordinator { * at any point. If the buffer would move in the meantime we just wouldn't publish this specific value */ //Communication 5 and 1 - synchronized void publishIfPooledValuesProvidedForAllMetrics(long predictionTime) { + synchronized void publishIfPooledValuesProvidedForAllMetrics(long predictionTime, + int lastValueUpdate, String callingMetricHandler) { //metricName -> predictionAvailability HashMap isPooledPredictionAvailable = new HashMap<>(); @@ -57,12 +58,16 @@ public class Coordinator { if (entireVectorIsReady) { log.info("Starting publishing pooled predictions for metrics for {} ", PredictionTimeFormatter.rawDateFormat(predictionTime)); - metricHandlers.forEach((metricName, metricHandler) -> { - Prediction prediction = metricHandler.getPooledPrediction(predictionTime); - if (prediction != NoAccessWithoutUpdatePredictionRegistry.PREDICTION_ALREADY_ACCESSED) { + if (lastValueUpdate == PredictionRegistry.VALUE_ADDED) { + metricHandlers.forEach((metricName, metricHandler) -> { + Prediction prediction = metricHandler.getPooledPrediction(predictionTime); communicationService.publishPooledPrediction(prediction, metricName); - } - }); + }); + } else { + Prediction prediction = metricHandlers.get(callingMetricHandler) + .getPooledPrediction(predictionTime); + communicationService.publishPooledPrediction(prediction, callingMetricHandler); + } } } diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/MetricHandler.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/MetricHandler.java index 32b5a35c..cb4703d7 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/MetricHandler.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/MetricHandler.java @@ -3,7 +3,6 @@ package eu.morphemic.prediction_orchestrator.service; import eu.morphemic.prediction_orchestrator.communication.CommunicationService; import eu.morphemic.prediction_orchestrator.log_utils.PredictionTimeFormatter; import eu.morphemic.prediction_orchestrator.properties.Properties; -import eu.morphemic.prediction_orchestrator.registries.NoAccessWithoutUpdatePredictionRegistry; import eu.morphemic.prediction_orchestrator.model.Prediction; import eu.morphemic.prediction_orchestrator.registries.PredictionRegistry; import eu.morphemic.prediction_orchestrator.service.pooling_strategy.PoolingStrategy; @@ -30,7 +29,7 @@ public class MetricHandler { //methodName -> MethodHandler private HashMap methodHandlers = new HashMap<>(); - private NoAccessWithoutUpdatePredictionRegistry pooledPredictionsRegistry; + private PredictionRegistry pooledPredictionsRegistry; private PoolingStrategy poolingStrategy; private CommunicationService communicationService; @@ -40,7 +39,7 @@ public class MetricHandler { this.metricName = metricName; this.poolingStrategy = PoolingStrategyFactory.getPoolingStrategy(properties); this.coordinator = coordinator; - this.pooledPredictionsRegistry = new NoAccessWithoutUpdatePredictionRegistry( + this.pooledPredictionsRegistry = new PredictionRegistry( forecastingConfiguration, PredictionRegistry.getPooledPredictionsRegistryName(metricName) ); @@ -57,9 +56,10 @@ public class MetricHandler { if (newPooledPrediction != PoolingStrategy.POOLED_PREDICTION_NOT_CREATED) { log.info("Pooling function has created pooled prediction for metric {} and predictionTime {}", metricName, PredictionTimeFormatter.rawDateFormat(predictionTime)); - boolean valueChanged = pooledPredictionsRegistry.processPrediction(newPooledPrediction); - if (valueChanged) { - coordinator.publishIfPooledValuesProvidedForAllMetrics(predictionTime); + int valueResult = pooledPredictionsRegistry.processPrediction(newPooledPrediction); + if ((valueResult == PredictionRegistry.VALUE_UPDATED) || + (valueResult == PredictionRegistry.VALUE_ADDED)) { + coordinator.publishIfPooledValuesProvidedForAllMetrics(predictionTime, valueResult, metricName); } } else { log.debug("Pooling function has not created pooled prediction for metric {} and predictionTime {}", diff --git a/prediction_orchestrator/src/test/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistryTest.java b/prediction_orchestrator/src/test/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistryTest.java index ec33e932..768529a9 100644 --- a/prediction_orchestrator/src/test/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistryTest.java +++ b/prediction_orchestrator/src/test/java/eu/morphemic/prediction_orchestrator/registries/PredictionRegistryTest.java @@ -98,58 +98,6 @@ class PredictionRegistryTest { predictionRegistry, first_epoch_starting_forecast, prediction_horizon); } - @Test - void multipleReadersBlockingRegistryTest() throws InterruptedException { - int numberOfForwardPrediction = 10; - long first_epoch_starting_forecast = 100000000; - int prediction_horizon = 1000; - ForecastingConfiguration forecastingConfiguration = new ForecastingConfiguration( - first_epoch_starting_forecast, - prediction_horizon, - numberOfForwardPrediction - ); - //we need to publish more than the buffer can handle - ForecastingConfiguration forecastingConfigurationPublisher = new ForecastingConfiguration( - first_epoch_starting_forecast, - prediction_horizon, - 2 * numberOfForwardPrediction - ); - PredictionRegistry predictionRegistry = new NoAccessWithoutUpdatePredictionRegistry( - forecastingConfiguration, - "populateMovingTest" - ); - - List publishingThreads = populateTestBed(forecastingConfigurationPublisher, predictionRegistry); - waitForThreads(publishingThreads); - //At this moment we should have a registry with boundaries: [10,19] - - - ConcurrentHashMap> results = new ConcurrentHashMap<>(); - - List readingThreads = new LinkedList<>(); - for (int threadNo = 0; threadNo < THREAD_COUNT; threadNo++) { - Thread reading_thread = new Thread(() -> { - for (int j = 10; j < 20; j++) { - long predictionTime = (j * prediction_horizon) + first_epoch_starting_forecast; - Prediction prediction = - predictionRegistry.getCopyPrediction(predictionTime); - results.computeIfAbsent(predictionTime, k -> new LinkedList<>()).add(prediction); - } - }); - readingThreads.add(reading_thread); - reading_thread.start(); - } - waitForThreads(publishingThreads); - waitForThreads(readingThreads); - - // We will be checking if no element has been pulled twice - for (List pulledPredictions : results.values()) { - List withoutNullsList = pulledPredictions.stream().filter(Objects::nonNull).collect(Collectors.toList());; - log.info(withoutNullsList.toString()); - assert( (new HashSet<>(withoutNullsList)).size() == withoutNullsList.size()); - } - } - /** * This procedure launches pool of publishing threads and wait until they are finished */ -- GitLab From d9a27e26f7cbe4185a93bed6603cd5e037c6e877 Mon Sep 17 00:00:00 2001 From: mriedl Date: Mon, 27 Sep 2021 11:46:27 +0200 Subject: [PATCH 05/33] deleted overcompilicated registry. Changed coordinator to easier metrics sending --- .../morphemic/prediction_orchestrator/service/Coordinator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java index 2e6615fd..418d19b6 100644 --- a/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java +++ b/prediction_orchestrator/src/main/java/eu/morphemic/prediction_orchestrator/service/Coordinator.java @@ -47,7 +47,6 @@ public class Coordinator { //Communication 5 and 1 synchronized void publishIfPooledValuesProvidedForAllMetrics(long predictionTime, int lastValueUpdate, String callingMetricHandler) { - //metricName -> predictionAvailability HashMap isPooledPredictionAvailable = new HashMap<>(); metricHandlers.forEach((metricName, metricHandler) -> @@ -58,12 +57,14 @@ public class Coordinator { if (entireVectorIsReady) { log.info("Starting publishing pooled predictions for metrics for {} ", PredictionTimeFormatter.rawDateFormat(predictionTime)); + //We send the entire vector only once, when all values are present for the first time if (lastValueUpdate == PredictionRegistry.VALUE_ADDED) { metricHandlers.forEach((metricName, metricHandler) -> { Prediction prediction = metricHandler.getPooledPrediction(predictionTime); communicationService.publishPooledPrediction(prediction, metricName); }); } else { + //we send only updated value as at this point the entire vector has been send earlier Prediction prediction = metricHandlers.get(callingMetricHandler) .getPooledPrediction(predictionTime); communicationService.publishPooledPrediction(prediction, callingMetricHandler); -- GitLab From 4e6ba7a2324e13aef774911890b67c810afbdf11 Mon Sep 17 00:00:00 2001 From: Tomek Piekarz Date: Mon, 27 Sep 2021 12:24:07 +0000 Subject: [PATCH 06/33] Update .gitlab-ci.yml add "expire_in: 1 week" parameter for artifacts in build. --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7596c028..fb1dec86 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,6 +46,7 @@ build:scheduling-abstraction-layer: script: - $SCHEDULING_ABSTRACTION_LAYER_CLI clean install artifacts: + expire_in: 1 week paths: - /builds/melodic/morphemic-preprocessor/maven_repo/org/activeeon/scheduling-abstraction-layer/ @@ -58,6 +59,7 @@ build:amq-message-java-library: script: - $AMQ_MESSAGE_JAVA_LIBRARY_CLI clean install artifacts: + expire_in: 1 week paths: - /builds/melodic/morphemic-preprocessor/maven_repo/gr/ntua/imu/morphemic/amq-message-java-library/ @@ -70,6 +72,7 @@ build:prediction_orchestrator: script: - $PREDICTON_ORCHESTRATOR_CLI -Pwithout-docker clean install artifacts: + expire_in: 1 week paths: - /builds/melodic/morphemic-preprocessor/maven_repo/eu/morphemic/prediction_orchestrator/ @@ -82,6 +85,7 @@ build:slo-severity-calculator: script: - $SLO_SEVERITY_CALCULATOR_CLI -Dtest=!UnboundedMonitoringAttributeTests,!ConnectivityTests clean install artifacts: + expire_in: 1 week paths: - /builds/melodic/morphemic-preprocessor/maven_repo/gr/ntua/imu/morphemic/SLOSeverityCalculator/ -- GitLab From 994e528a32b5afbd33db7dc08a78cca447dd9b26 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Mon, 4 Oct 2021 09:08:30 +0200 Subject: [PATCH 07/33] arima corrected --- deployment/arima/.~lock.demo.csv# | 1 + deployment/arima/main.py | 4 +- deployment/arima/predict.py | 25 +++-- deployment/arima/src/example.py | 2 + deployment/arima/src/model_predict.py | 43 +++++++-- deployment/arima/src/preprocess_dataset.py | 103 +++++++++++++-------- 6 files changed, 115 insertions(+), 63 deletions(-) create mode 100644 deployment/arima/.~lock.demo.csv# create mode 100644 deployment/arima/src/example.py diff --git a/deployment/arima/.~lock.demo.csv# b/deployment/arima/.~lock.demo.csv# new file mode 100644 index 00000000..07cbfa7d --- /dev/null +++ b/deployment/arima/.~lock.demo.csv# @@ -0,0 +1 @@ +,awarno,bulls-ThinkPad-T480,28.09.2021 09:11,file:///home/awarno/.config/libreoffice/4; \ No newline at end of file diff --git a/deployment/arima/main.py b/deployment/arima/main.py index de065605..a91cc166 100644 --- a/deployment/arima/main.py +++ b/deployment/arima/main.py @@ -108,11 +108,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "value", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["value"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/arima/predict.py b/deployment/arima/predict.py index 4c441957..4db75316 100644 --- a/deployment/arima/predict.py +++ b/deployment/arima/predict.py @@ -122,7 +122,7 @@ def main(): for metric in predicted_metrics: prediction_msgs = predict( metric, - prediction_length, + prediction_lengths[metric], prediction_hor=prediction_horizon, timestamp=time_0, ) @@ -153,15 +153,9 @@ def main(): if __name__ == "__main__": logging.basicConfig( - filename=f"logs/{os.environ.get('METHOD', 'arima')}.out", - level=logging.INFO, - datefmt="%Y-%m-%d %H:%M:%S", - format="START %(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s", + filename=f"logs/{os.environ.get('METHOD', 'nbeats')}.out", ) - logging.Formatter.converter = lambda *args: datetime.now( - tz=timezone(TZ) - ).timetuple() msg = json.loads(sys.argv[1]) metrics_info = { m["metric"]: { @@ -173,15 +167,20 @@ if __name__ == "__main__": time_0 = msg["epoch_start"] prediction_horizon = msg["prediction_horizon"] * 1000 - prediction_points_horizon = msg["prediction_horizon"] * 1000 / msg["publish_rate"] + prediction_points_horizons = { + metric["metric"]: msg["prediction_horizon"] * 1000 // metric["publish_rate"] + for metric in msg["all_metrics"] + } + print(prediction_points_horizons) predicted_metrics = set(msg["metrics"]) prediction_cycle = msg["prediction_horizon"] - prediction_length = ( - msg["prediction_horizon"] + prediction_lengths = { + metric["metric"]: msg["prediction_horizon"] * 1000 - // msg["publish_rate"] + // metric["publish_rate"] * msg["number_of_forward_predictions"] - ) + for metric in msg["all_metrics"] + } logging.info(f"Predicted metrics: {predicted_metrics}") number_of_forward_predictions = { metric: msg["number_of_forward_predictions"] for metric in predicted_metrics diff --git a/deployment/arima/src/example.py b/deployment/arima/src/example.py new file mode 100644 index 00000000..75ff52b0 --- /dev/null +++ b/deployment/arima/src/example.py @@ -0,0 +1,2 @@ +def square(x): + return x * x \ No newline at end of file diff --git a/deployment/arima/src/model_predict.py b/deployment/arima/src/model_predict.py index 9ffa970c..d4d0a810 100644 --- a/deployment/arima/src/model_predict.py +++ b/deployment/arima/src/model_predict.py @@ -44,30 +44,55 @@ def predict( logging.info( f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) - print("Not enough fresh data, unable to predict TIME:") + print( + f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) return None dataset = pd.read_csv(data_path) ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + if ts_dataset.dataset.shape[0] < 1: + logging.info( + f"Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) + print( + f"Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) + return None + ts_dataset = ts_dataset.dataset[ ts_dataset.dataset.series == ts_dataset.dataset.series.max() ] pred_len = params["dataset"]["prediction_length"] best_model_aic = None - for order in [(2, 1, 2), (3, 0, 1), (1, 0, 1), (3, 1, 0)]: - sarima = sm.tsa.statespace.SARIMAX(ts_dataset[target_column], order=order) - model = sarima.fit() - if best_model_aic: - if model.aic < best_model_aic: + for order in [(2, 1, 2), (3, 0, 1), (1, 0, 1), (3, 1, 0), (1, 0, 0), (4, 0, 2)]: + try: + sarima = sm.tsa.statespace.SARIMAX( + ts_dataset[target_column], order=order, enforce_stationarity=False + ) + model = sarima.fit() + if best_model_aic: + if model.aic < best_model_aic: + predictions = model.get_forecast( + pred_len, return_conf_int=True, alpha=0.05 + ) + best_model_aic = model.aic + else: predictions = model.get_forecast( pred_len, return_conf_int=True, alpha=0.05 ) best_model_aic = model.aic - else: - predictions = model.get_forecast(pred_len, return_conf_int=True, alpha=0.05) - best_model_aic = model.aic + except np.linalg.LinAlgError: + logging.info( + f"SARIMAX model order: {order} failed for metric {target_column} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) + if not best_model_aic: + logging.info( + f"All SARIMAX failed for metric: {target_column}, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) + return None msgs = [] diff --git a/deployment/arima/src/preprocess_dataset.py b/deployment/arima/src/preprocess_dataset.py index a39aedeb..8ccc6cd7 100644 --- a/deployment/arima/src/preprocess_dataset.py +++ b/deployment/arima/src/preprocess_dataset.py @@ -34,13 +34,18 @@ class Dataset(object): self.context_length = context_length self.prediction_length = prediction_length self.dataset = dataset - self.check_gap() + self.dropped_recent_series = True # default set to be true + if self.dataset.shape[0] > 0: + self.check_gap() self.n = dataset.shape[0] def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] + else: + return dataset.dropna() def fill_na(self, dataset): dataset = dataset.replace("None", np.nan) @@ -68,43 +73,63 @@ class Dataset(object): return dataset def check_gap(self): - max_gap = self.dataset["time"].diff().abs().max() - logging.info(f"Max time gap in series {max_gap}") - print(f"Max time gap in series {max_gap}") - series_freq = self.dataset["time"].diff().value_counts().index.values[0] - logging.info(f"Detected series with {series_freq} frequency") - print(f"Detected series with {series_freq} frequency") - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) - ), - ) - logging.info(f"{len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + self.series_freq = ( + self.dataset["time"] // 1e9 + ).diff().value_counts().index.values[0] * 1e9 + logging.info( + f"Metric: {self.target_column} Detected series with {self.series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {self.series_freq} frequency" + ) + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * self.series_freq) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s = self.convert_formats(s) + s["split"] = "train" logging.info( - f"Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" ) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) - logging.info(f"{len(preprocessed_series)} long enough series found") - print(f"{len(preprocessed_series)} long enough series found") - # logging.info(f"") - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True - else: - self.dropped_recent_series = False - self.dataset.index = range(self.dataset.shape[0]) + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False + else: + self.dataset = pd.DataFrame() + self.dataset.index = range(self.dataset.shape[0]) -- GitLab From 18b1275b475a05409118dc148c8ca03027821d79 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Mon, 4 Oct 2021 10:52:31 +0200 Subject: [PATCH 08/33] errors coreected, unit tests added --- deployment/arima/env | 13 +- deployment/arima/main.py | 2 +- deployment/arima/predict.py | 3 +- deployment/arima/src/model_predict.py | 48 ++--- deployment/arima/test/model_predict_test.py | 179 ++++++++++++++++++ .../arima/test/preprocess_dataset_test.py | 172 +++++++++++++++++ deployment/nbeats/env | 15 +- deployment/nbeats/main.py | 4 +- deployment/nbeats/predict.py | 21 +- deployment/nbeats/retrain.py | 17 +- deployment/nbeats/src/model_predict.py | 2 +- deployment/nbeats/src/model_train.py | 13 +- deployment/nbeats/src/preprocess_dataset.py | 113 +++++++---- deployment/nbeats/test/model_predict_test.py | 179 ++++++++++++++++++ .../nbeats/test/preprocess_dataset_test.py | 172 +++++++++++++++++ deployment/tft/env | 13 +- deployment/tft/main.py | 6 +- deployment/tft/predict.py | 33 ++-- deployment/tft/retrain.py | 26 +-- deployment/tft/src/model_predict.py | 12 +- deployment/tft/src/model_train.py | 2 +- deployment/tft/src/preprocess_dataset.py | 113 +++++++---- deployment/tft/test/model_predict_test.py | 179 ++++++++++++++++++ .../tft/test/preprocess_dataset_test.py | 172 +++++++++++++++++ 24 files changed, 1315 insertions(+), 194 deletions(-) create mode 100644 deployment/arima/test/model_predict_test.py create mode 100644 deployment/arima/test/preprocess_dataset_test.py create mode 100644 deployment/nbeats/test/model_predict_test.py create mode 100644 deployment/nbeats/test/preprocess_dataset_test.py create mode 100644 deployment/tft/test/model_predict_test.py create mode 100644 deployment/tft/test/preprocess_dataset_test.py diff --git a/deployment/arima/env b/deployment/arima/env index 150f8c5e..1d3b68b4 100644 --- a/deployment/arima/env +++ b/deployment/arima/env @@ -1,15 +1,12 @@ AMQ_HOSTNAME=localhost -AMQ_USER=morphemic -AMQ_PASSWORD=morphemic -AMQ_HOST=147.102.17.76 -AMQ_PORT_BROKER=61610 -APP_NAME=default_application +AMQ_USER=admin +AMQ_PASSWORD=admin +AMQ_PORT=61613 +APP_NAME=demo METHOD=arima DATA_PATH=./ -INFLUXDB_HOSTNAME=147.102.17.76 +INFLUXDB_HOSTNAME=localhost INFLUXDB_PORT=8086 INFLUXDB_USERNAME=morphemic INFLUXDB_PASSWORD=password INFLUXDB_DBNAME=morphemic - - diff --git a/deployment/arima/main.py b/deployment/arima/main.py index a91cc166..e5675fb8 100644 --- a/deployment/arima/main.py +++ b/deployment/arima/main.py @@ -112,7 +112,7 @@ def main(): # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 60' # + "}" # ) diff --git a/deployment/arima/predict.py b/deployment/arima/predict.py index 4db75316..4d2942f2 100644 --- a/deployment/arima/predict.py +++ b/deployment/arima/predict.py @@ -123,6 +123,7 @@ def main(): prediction_msgs = predict( metric, prediction_lengths[metric], + single_prediction_points_length=prediction_points_horizons[metric], prediction_hor=prediction_horizon, timestamp=time_0, ) @@ -154,6 +155,7 @@ def main(): if __name__ == "__main__": logging.basicConfig( filename=f"logs/{os.environ.get('METHOD', 'nbeats')}.out", + level=logging.INFO, ) msg = json.loads(sys.argv[1]) @@ -171,7 +173,6 @@ if __name__ == "__main__": metric["metric"]: msg["prediction_horizon"] * 1000 // metric["publish_rate"] for metric in msg["all_metrics"] } - print(prediction_points_horizons) predicted_metrics = set(msg["metrics"]) prediction_cycle = msg["prediction_horizon"] prediction_lengths = { diff --git a/deployment/arima/src/model_predict.py b/deployment/arima/src/model_predict.py index d4d0a810..7c519a0e 100644 --- a/deployment/arima/src/model_predict.py +++ b/deployment/arima/src/model_predict.py @@ -21,6 +21,7 @@ TZ = os.environ.get("TIME_ZONE", "Europe/Vienna") def predict( target_column, prediction_length, + single_prediction_points_length=1, yaml_file="model.yaml", prediction_hor=60, timestamp=0, @@ -42,10 +43,10 @@ def predict( new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) if new_ts_dataset.dropped_recent_series: # series with recent data was too short logging.info( - f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) print( - f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) return None @@ -54,16 +55,16 @@ def predict( ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) if ts_dataset.dataset.shape[0] < 1: logging.info( - f"Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) print( - f"Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) return None ts_dataset = ts_dataset.dataset[ ts_dataset.dataset.series == ts_dataset.dataset.series.max() - ] + ].tail(1000) pred_len = params["dataset"]["prediction_length"] best_model_aic = None @@ -86,32 +87,33 @@ def predict( best_model_aic = model.aic except np.linalg.LinAlgError: logging.info( - f"SARIMAX model order: {order} failed for metric {target_column} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} SARIMAX model order: {order} failed for metric {target_column} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) if not best_model_aic: logging.info( - f"All SARIMAX failed for metric: {target_column}, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} All SARIMAX failed for metric: {target_column}, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) return None msgs = [] for i in range(pred_len): - msg = { - target_column: { - "metricValue": predictions.predicted_mean.values[i], - "level": 1, # TODO - "timestamp": int(time.time()), - "probability": 0.95, - "confidence_interval": [ - predictions.conf_int(alpha=0.05).iloc[i].values[0], - predictions.conf_int(alpha=0.05).iloc[i].values[1], - ], # quantiles difference - "predictionTime": timestamp + (i + 1) * (prediction_hor // 1000), - "refersTo": "TODO", - "cloud": "TODO", - "provider": "TODO", + if ((i + 1) % single_prediction_points_length) == 0: + msg = { + target_column: { + "metricValue": predictions.predicted_mean.values[i], + "level": 1, # TODO + "timestamp": int(time.time()), + "probability": 0.95, + "confidence_interval": [ + predictions.conf_int(alpha=0.05).iloc[i].values[0], + predictions.conf_int(alpha=0.05).iloc[i].values[1], + ], # quantiles difference + "predictionTime": timestamp + (i + 1) * (prediction_hor // 1000), + "refersTo": "TODO", + "cloud": "TODO", + "provider": "TODO", + } } - } - msgs.append(msg) + msgs.append(msg) return msgs diff --git a/deployment/arima/test/model_predict_test.py b/deployment/arima/test/model_predict_test.py new file mode 100644 index 00000000..5be30b00 --- /dev/null +++ b/deployment/arima/test/model_predict_test.py @@ -0,0 +1,179 @@ +import sys + +sys.path.append(".") + +import pytest +from src.model_predict import predict +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +@pytest.fixture +def prediction_length(): + return 60 + + +@pytest.mark.parametrize( + "df,metric,prediction_length", + [ + ("df_1", metric, prediction_length), + ("df_2", metric, prediction_length), + ("df_3", metric, prediction_length), + ("df_4", metric, prediction_length), + ("df_5", metric, prediction_length), + ("df_6", metric, prediction_length), + ("df_7", metric, prediction_length), + ("df_8", metric, prediction_length), + ("df_9", metric, prediction_length), + ("df_10", metric, prediction_length), + ("df_11", metric, prediction_length), + ("df_12", metric, prediction_length), + ], + indirect=True, +) +def test_predict(df, metric, prediction_length): + df.to_csv("demo.csv") + output = predict(metric, prediction_length) + if output: + print("True") + assert True diff --git a/deployment/arima/test/preprocess_dataset_test.py b/deployment/arima/test/preprocess_dataset_test.py new file mode 100644 index 00000000..80e36837 --- /dev/null +++ b/deployment/arima/test/preprocess_dataset_test.py @@ -0,0 +1,172 @@ +import sys + +sys.path.append(".") + +import pytest +from src.preprocess_dataset import Dataset +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +class TestDataset: + @pytest.mark.parametrize( + "df,metric", + [ + ("df_1", metric), + ("df_2", metric), + ("df_3", metric), + ("df_4", metric), + ("df_5", metric), + ("df_6", metric), + ("df_7", metric), + ("df_8", metric), + ("df_9", metric), + ("df_10", metric), + ("df_11", metric), + ("df_12", metric), + ], + indirect=True, + ) + def test_init(self, df, metric): + preprocessed_dataset = Dataset(df, metric) + assert isinstance(preprocessed_dataset, Dataset) diff --git a/deployment/nbeats/env b/deployment/nbeats/env index a83d6aec..aa4cd5c1 100644 --- a/deployment/nbeats/env +++ b/deployment/nbeats/env @@ -1,15 +1,12 @@ AMQ_HOSTNAME=localhost -AMQ_USER=morphemic -AMQ_PASSWORD=morphemic -AMQ_HOST=147.102.17.76 -AMQ_PORT_BROKER=61610 -APP_NAME=default_application -METHOD=nbeats +AMQ_USER=admin +AMQ_PASSWORD=admin +AMQ_PORT=61613 +APP_NAME=demo +METHOD=tft DATA_PATH=./ -INFLUXDB_HOSTNAME=147.102.17.76 +INFLUXDB_HOSTNAME=localhost INFLUXDB_PORT=8086 INFLUXDB_USERNAME=morphemic INFLUXDB_PASSWORD=password INFLUXDB_DBNAME=morphemic -TIME_ZONE=Europe/Vienna - diff --git a/deployment/nbeats/main.py b/deployment/nbeats/main.py index 4427fce4..0cce7d09 100644 --- a/deployment/nbeats/main.py +++ b/deployment/nbeats/main.py @@ -114,11 +114,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "memory", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["memory"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 60' # + "}" # ) diff --git a/deployment/nbeats/predict.py b/deployment/nbeats/predict.py index 2dd0091d..8d3985ab 100644 --- a/deployment/nbeats/predict.py +++ b/deployment/nbeats/predict.py @@ -122,15 +122,16 @@ def main(): for metric in predicted_metrics: predictions = None for i in range(number_of_forward_predictions[metric]): - print(int((i + 1) * prediction_points_horizon), "point idx") prediction_msgs, prediction = predict( metric, - prediction_length, + prediction_lengths[metric], extra_data=None, m=i + 1, prediction_hor=prediction_horizon, timestamp=time_0 + (i + 1) * (prediction_horizon // 1000), - predicted_point_idx=int((i + 1) * prediction_points_horizon - 1), + predicted_point_idx=int( + (i + 1) * prediction_points_horizons[metric] - 1 + ), ) if i == (number_of_forward_predictions[metric] - 1): print( @@ -189,15 +190,19 @@ if __name__ == "__main__": time_0 = msg["epoch_start"] prediction_horizon = msg["prediction_horizon"] * 1000 - prediction_points_horizon = msg["prediction_horizon"] * 1000 / msg["publish_rate"] + prediction_points_horizons = { + metric["metric"]: msg["prediction_horizon"] * 1000 // metric["publish_rate"] + for metric in msg["all_metrics"] + } predicted_metrics = set(msg["metrics"]) prediction_cycle = msg["prediction_horizon"] - prediction_length = ( - msg["prediction_horizon"] + prediction_lengths = { + metric["metric"]: msg["prediction_horizon"] * 1000 - // msg["publish_rate"] + // metric["publish_rate"] * msg["number_of_forward_predictions"] - ) + for metric in msg["all_metrics"] + } logging.info(f"Predicted metrics: {predicted_metrics}") number_of_forward_predictions = { metric: msg["number_of_forward_predictions"] for metric in predicted_metrics diff --git a/deployment/nbeats/retrain.py b/deployment/nbeats/retrain.py index 55eae32b..fa69c0d5 100644 --- a/deployment/nbeats/retrain.py +++ b/deployment/nbeats/retrain.py @@ -21,7 +21,7 @@ APP_NAME = os.environ.get("APP_NAME", "demo") TZ = os.environ.get("TIME_ZONE", "Europe/Vienna") -def main(predicted_metrics, prediction_horizon): +def main(predicted_metrics, prediction_horizons): start_conn = morphemic.Connection( AMQ_USER, AMQ_PASSWORD, host=AMQ_HOST, port=AMQ_PORT_BROKER ) @@ -33,7 +33,7 @@ def main(predicted_metrics, prediction_horizon): while True: start_time = int(time.time()) for metric in predicted_metrics: - retrain_msg = train(metric, prediction_horizon) + retrain_msg = train(metric, prediction_horizons[metric]) if retrain_msg: logging.info( f"Training completed for {metric} metric TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" @@ -43,7 +43,7 @@ def main(predicted_metrics, prediction_horizon): else: print("Not enough data for model training, waiting ...") logging.info( - f"Not enough data for model training, waiting ... TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {metric} Not enough data for model training, waiting ... TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) end_time = int(time.time()) @@ -70,14 +70,15 @@ if __name__ == "__main__": } for m in msg["all_metrics"] } - prediction_horizon = ( - msg["prediction_horizon"] + prediction_horizons = { + metric["metric"]: msg["prediction_horizon"] * 1000 - // msg["publish_rate"] + // metric["publish_rate"] * msg["number_of_forward_predictions"] - ) + for metric in msg["all_metrics"] + } predicted_metrics = set(metrics_info.keys()) logging.info( f"Predicted metrics: {predicted_metrics} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) - main(predicted_metrics, prediction_horizon) + main(predicted_metrics, prediction_horizons) diff --git a/deployment/nbeats/src/model_predict.py b/deployment/nbeats/src/model_predict.py index 21f7fa21..770089cf 100644 --- a/deployment/nbeats/src/model_predict.py +++ b/deployment/nbeats/src/model_predict.py @@ -68,7 +68,7 @@ def predict( if extra_data is not None: dataset = pd.concat([dataset, extra_data[dataset.columns]], ignore_index=True) - lockfile = params["dataloader_path"] + ".pickle" + lockfile = f"{params['dataloader_path']}_{target_column}.pickle" lock = FileLock(lockfile + ".lock") with lock: diff --git a/deployment/nbeats/src/model_train.py b/deployment/nbeats/src/model_train.py index 785d9feb..9c697f18 100644 --- a/deployment/nbeats/src/model_train.py +++ b/deployment/nbeats/src/model_train.py @@ -48,20 +48,27 @@ def train(target_column, prediction_length, yaml_file="model.yaml"): if dataset.shape[0] < 14 * prediction_length: logging.info( - f"dataset len: {dataset.shape[0]}, minimum points required: {14 * prediction_length} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} dataset len: {dataset.shape[0]}, minimum points required: {14 * prediction_length} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) return None ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) - lockfile = params["dataloader_path"] + ".pickle" + print(ts_dataset.dataset, "DATASEEEET") + if ts_dataset.dataset.shape[0] < 1: + logging.info( + f"METRIC: {target_column} Preprocessed dataset len: {ts_dataset.dataset.shape[0]}, minimum points required: {14 * prediction_length} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) + return None + + lockfile = f"{params['dataloader_path']}_{target_column}.pickle" lock = FileLock(lockfile + ".lock") with lock: with open(lockfile, "wb") as handle: pickle.dump(ts_dataset, handle) logging.info( - f"train dataset saved: {lockfile} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {target_column} train dataset saved: {lockfile} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) training = ts_dataset.ts_dataset diff --git a/deployment/nbeats/src/preprocess_dataset.py b/deployment/nbeats/src/preprocess_dataset.py index 9383d3d3..01ae9966 100644 --- a/deployment/nbeats/src/preprocess_dataset.py +++ b/deployment/nbeats/src/preprocess_dataset.py @@ -36,17 +36,23 @@ class Dataset(object): self.context_length = context_length self.prediction_length = prediction_length self.dataset = dataset - self.check_gap() + self.dropped_recent_series = True # default set to be true + if self.dataset.shape[0] > 0: + self.check_gap() self.n = dataset.shape[0] - self.ts_dataset = self.create_time_series_dataset() + if self.dataset.shape[0] > 0: + self.ts_dataset = self.create_time_series_dataset() def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] + else: + return dataset.dropna() def fill_na(self, dataset): - dataset = dataset.replace("None", np.nan) + dataset = dataset.replace(np.inf, np.nan) dataset = dataset.ffill(axis="rows") return dataset @@ -99,46 +105,69 @@ class Dataset(object): return ts_dataset def check_gap(self): - max_gap = self.dataset["time"].diff().abs().max() - logging.info(f"Max time gap in series {max_gap}") - print(f"Max time gap in series {max_gap}") - series_freq = self.dataset["time"].diff().value_counts().index.values[0] - logging.info(f"Detected series with {series_freq} frequency") - print(f"Detected series with {series_freq} frequency") - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) - ), - ) - logging.info(f"{len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + series_freq = ( + self.dataset["time"] // 1e9 + ).diff().value_counts().index.values[0] * 1e9 + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * series_freq) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s = self.convert_formats(s) + s["split"] = "train" logging.info( - f"Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" ) - - logging.info(f"{len(preprocessed_series)} long enough series found") - print(f"{len(preprocessed_series)} long enough series found") - # logging.info(f"") - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True - else: - self.dropped_recent_series = False - self.dataset.index = range(self.dataset.shape[0]) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) + + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) def inherited_dataset(self, split1, split2): df1 = ( diff --git a/deployment/nbeats/test/model_predict_test.py b/deployment/nbeats/test/model_predict_test.py new file mode 100644 index 00000000..5be30b00 --- /dev/null +++ b/deployment/nbeats/test/model_predict_test.py @@ -0,0 +1,179 @@ +import sys + +sys.path.append(".") + +import pytest +from src.model_predict import predict +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +@pytest.fixture +def prediction_length(): + return 60 + + +@pytest.mark.parametrize( + "df,metric,prediction_length", + [ + ("df_1", metric, prediction_length), + ("df_2", metric, prediction_length), + ("df_3", metric, prediction_length), + ("df_4", metric, prediction_length), + ("df_5", metric, prediction_length), + ("df_6", metric, prediction_length), + ("df_7", metric, prediction_length), + ("df_8", metric, prediction_length), + ("df_9", metric, prediction_length), + ("df_10", metric, prediction_length), + ("df_11", metric, prediction_length), + ("df_12", metric, prediction_length), + ], + indirect=True, +) +def test_predict(df, metric, prediction_length): + df.to_csv("demo.csv") + output = predict(metric, prediction_length) + if output: + print("True") + assert True diff --git a/deployment/nbeats/test/preprocess_dataset_test.py b/deployment/nbeats/test/preprocess_dataset_test.py new file mode 100644 index 00000000..80e36837 --- /dev/null +++ b/deployment/nbeats/test/preprocess_dataset_test.py @@ -0,0 +1,172 @@ +import sys + +sys.path.append(".") + +import pytest +from src.preprocess_dataset import Dataset +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +class TestDataset: + @pytest.mark.parametrize( + "df,metric", + [ + ("df_1", metric), + ("df_2", metric), + ("df_3", metric), + ("df_4", metric), + ("df_5", metric), + ("df_6", metric), + ("df_7", metric), + ("df_8", metric), + ("df_9", metric), + ("df_10", metric), + ("df_11", metric), + ("df_12", metric), + ], + indirect=True, + ) + def test_init(self, df, metric): + preprocessed_dataset = Dataset(df, metric) + assert isinstance(preprocessed_dataset, Dataset) diff --git a/deployment/tft/env b/deployment/tft/env index 1a2ad8d8..aa4cd5c1 100644 --- a/deployment/tft/env +++ b/deployment/tft/env @@ -1,15 +1,12 @@ AMQ_HOSTNAME=localhost -AMQ_USER=morphemic -AMQ_PASSWORD=morphemic -AMQ_HOST=147.102.17.76 -AMQ_PORT_BROKER=61610 -APP_NAME=default_application +AMQ_USER=admin +AMQ_PASSWORD=admin +AMQ_PORT=61613 +APP_NAME=demo METHOD=tft DATA_PATH=./ -INFLUXDB_HOSTNAME=147.102.17.76 +INFLUXDB_HOSTNAME=localhost INFLUXDB_PORT=8086 INFLUXDB_USERNAME=morphemic INFLUXDB_PASSWORD=password INFLUXDB_DBNAME=morphemic - - diff --git a/deployment/tft/main.py b/deployment/tft/main.py index 361b146d..4896ffe6 100644 --- a/deployment/tft/main.py +++ b/deployment/tft/main.py @@ -9,6 +9,8 @@ from datetime import datetime from pytz import timezone from datetime import datetime +# from src.log import logger + AMQ_USER = os.environ.get("AMQ_USER", "admin") AMQ_PASSWORD = os.environ.get("AMQ_PASSWORD", "admin") AMQ_HOST = os.environ.get("AMQ_HOST", "localhost") @@ -112,11 +114,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "memory", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["memory"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/tft/predict.py b/deployment/tft/predict.py index dc057f42..1bd61287 100644 --- a/deployment/tft/predict.py +++ b/deployment/tft/predict.py @@ -122,24 +122,22 @@ def main(): for metric in predicted_metrics: predictions = None for i in range(number_of_forward_predictions[metric]): - print(int((i + 1) * prediction_points_horizon), "point idx") prediction_msgs, prediction = predict( metric, - prediction_length, + prediction_lengths[metric], extra_data=None, m=i + 1, prediction_hor=prediction_horizon, timestamp=time_0 + (i + 1) * (prediction_horizon // 1000), - predicted_point_idx=int((i + 1) * prediction_points_horizon - 1), + predicted_point_idx=int( + (i + 1) * prediction_points_horizons[metric] - 1 + ), ) if i == (number_of_forward_predictions[metric] - 1): print( f"time_0 difference seconds {start_time + (i + 1) * prediction_horizon // 1000 - int(time.time())}" ) - # if predictions is not None: - # predictions = pd.concat( - # [predictions, prediction], ignore_index=True - # ) + else: predictions = prediction @@ -179,14 +177,8 @@ def main(): if __name__ == "__main__": logging.basicConfig( filename=f"logs/{os.environ.get('METHOD', 'nbeats')}.out", - level=logging.INFO, - datefmt="%Y-%m-%d %H:%M:%S", - format="START %(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s", ) - logging.Formatter.converter = lambda *args: datetime.now( - tz=timezone(TZ) - ).timetuple() msg = json.loads(sys.argv[1]) metrics_info = { m["metric"]: { @@ -198,15 +190,20 @@ if __name__ == "__main__": time_0 = msg["epoch_start"] prediction_horizon = msg["prediction_horizon"] * 1000 - prediction_points_horizon = msg["prediction_horizon"] * 1000 / msg["publish_rate"] + prediction_points_horizons = { + metric["metric"]: msg["prediction_horizon"] * 1000 // metric["publish_rate"] + for metric in msg["all_metrics"] + } + print(prediction_points_horizons) predicted_metrics = set(msg["metrics"]) prediction_cycle = msg["prediction_horizon"] - prediction_length = ( - msg["prediction_horizon"] + prediction_lengths = { + metric["metric"]: msg["prediction_horizon"] * 1000 - // msg["publish_rate"] + // metric["publish_rate"] * msg["number_of_forward_predictions"] - ) + for metric in msg["all_metrics"] + } logging.info(f"Predicted metrics: {predicted_metrics}") number_of_forward_predictions = { metric: msg["number_of_forward_predictions"] for metric in predicted_metrics diff --git a/deployment/tft/retrain.py b/deployment/tft/retrain.py index 2a6e654d..fa69c0d5 100644 --- a/deployment/tft/retrain.py +++ b/deployment/tft/retrain.py @@ -8,6 +8,7 @@ from amq_message_python_library import * from src.dataset_maker import CSVData import pytz import time +from pytz import timezone from datetime import datetime TOPIC_NAME = "training_models" @@ -19,12 +20,8 @@ AMQ_PORT_BROKER = os.environ.get("AMQ_PORT_BROKER", "61613") APP_NAME = os.environ.get("APP_NAME", "demo") TZ = os.environ.get("TIME_ZONE", "Europe/Vienna") -logging.basicConfig( - filename=f"logs/{os.environ.get('METHOD', 'nbeats')}.out", level=logging.INFO -) - -def main(predicted_metrics, prediction_horizon): +def main(predicted_metrics, prediction_horizons): start_conn = morphemic.Connection( AMQ_USER, AMQ_PASSWORD, host=AMQ_HOST, port=AMQ_PORT_BROKER ) @@ -36,7 +33,7 @@ def main(predicted_metrics, prediction_horizon): while True: start_time = int(time.time()) for metric in predicted_metrics: - retrain_msg = train(metric, prediction_horizon) + retrain_msg = train(metric, prediction_horizons[metric]) if retrain_msg: logging.info( f"Training completed for {metric} metric TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" @@ -46,7 +43,7 @@ def main(predicted_metrics, prediction_horizon): else: print("Not enough data for model training, waiting ...") logging.info( - f"Not enough data for model training, waiting ... TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC: {metric} Not enough data for model training, waiting ... TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) end_time = int(time.time()) @@ -60,6 +57,10 @@ def main(predicted_metrics, prediction_horizon): if __name__ == "__main__": + logging.basicConfig( + filename=f"logs/{os.environ.get('METHOD', 'nbeats')}.out", + ) + logging.info(f"Training loop started") msg = json.loads(sys.argv[1]) metrics_info = { @@ -69,14 +70,15 @@ if __name__ == "__main__": } for m in msg["all_metrics"] } - prediction_horizon = ( - msg["prediction_horizon"] + prediction_horizons = { + metric["metric"]: msg["prediction_horizon"] * 1000 - // msg["publish_rate"] + // metric["publish_rate"] * msg["number_of_forward_predictions"] - ) + for metric in msg["all_metrics"] + } predicted_metrics = set(metrics_info.keys()) logging.info( f"Predicted metrics: {predicted_metrics} TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) - main(predicted_metrics, prediction_horizon) + main(predicted_metrics, prediction_horizons) diff --git a/deployment/tft/src/model_predict.py b/deployment/tft/src/model_predict.py index 2f7f9b5c..91bbe32d 100644 --- a/deployment/tft/src/model_predict.py +++ b/deployment/tft/src/model_predict.py @@ -43,7 +43,7 @@ def predict( if not os.path.isfile(model_path): # no pretrained model, unable to predict logging.info( - f"no pretrained model, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC {target_column} no pretrained model, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) print("no pretrained model, unable to predict") return (None, None) @@ -59,9 +59,9 @@ def predict( new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) if new_ts_dataset.dropped_recent_series: # series with recent data was too short logging.info( - f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + f"METRIC {target_column} Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" ) - print("Not enough fresh data, unable to predict TIME:") + print("METRIC {target_column} Not enough fresh data, unable to predict TIME:") return (None, None) dataset = new_ts_dataset.dataset @@ -69,7 +69,7 @@ def predict( if extra_data is not None: dataset = pd.concat([dataset, extra_data[dataset.columns]], ignore_index=True) - lockfile = params["dataloader_path"] + ".pickle" + lockfile = f"{params['dataloader_path']}_{target_column}.pickle" lock = FileLock(lockfile + ".lock") with lock: @@ -110,7 +110,9 @@ def predict( model_path = os.path.join(params["save_path"], f"{target_column}.pth") if not os.path.isfile(model_path): # no pretrained model, unable to predict - logging.info(f"No pretrained model unable to predict") + logging.info( + f"METRIC {target_column} No pretrained model unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" + ) return (None, None) with lock: diff --git a/deployment/tft/src/model_train.py b/deployment/tft/src/model_train.py index 8a5e1393..fa7e43c9 100644 --- a/deployment/tft/src/model_train.py +++ b/deployment/tft/src/model_train.py @@ -56,7 +56,7 @@ def train(target_column, prediction_length, yaml_file="model.yaml"): ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) - lockfile = params["dataloader_path"] + ".pickle" + lockfile = f"{params['dataloader_path']}_{target_column}.pickle" lock = FileLock(lockfile + ".lock") with lock: diff --git a/deployment/tft/src/preprocess_dataset.py b/deployment/tft/src/preprocess_dataset.py index 1880094e..84d80b05 100644 --- a/deployment/tft/src/preprocess_dataset.py +++ b/deployment/tft/src/preprocess_dataset.py @@ -36,17 +36,23 @@ class Dataset(object): self.context_length = context_length self.prediction_length = prediction_length self.dataset = dataset - self.check_gap() + self.dropped_recent_series = True # default set to be true + if self.dataset.shape[0] > 0: + self.check_gap() self.n = dataset.shape[0] - self.ts_dataset = self.create_time_series_dataset() + if self.dataset.shape[0] > 0: + self.ts_dataset = self.create_time_series_dataset() def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] + else: + return dataset.dropna() def fill_na(self, dataset): - dataset = dataset.replace("None", np.nan) + dataset = dataset.replace(np.inf, np.nan) dataset = dataset.ffill(axis="rows") return dataset @@ -107,46 +113,69 @@ class Dataset(object): return ts_dataset def check_gap(self): - max_gap = self.dataset["time"].diff().abs().max() - logging.info(f"Max time gap in series {max_gap}") - print(f"Max time gap in series {max_gap}") - series_freq = self.dataset["time"].diff().value_counts().index.values[0] - logging.info(f"Detected series with {series_freq} frequency") - print(f"Detected series with {series_freq} frequency") - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) - ), - ) - logging.info(f"{len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + series_freq = ( + self.dataset["time"] // 1e9 + ).diff().value_counts().index.values[0] * 1e9 + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * series_freq) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s = self.convert_formats(s) + s["split"] = "train" logging.info( - f"Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" ) - - logging.info(f"{len(preprocessed_series)} long enough series found") - print(f"{len(preprocessed_series)} long enough series found") - # logging.info(f"") - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True - else: - self.dropped_recent_series = False - self.dataset.index = range(self.dataset.shape[0]) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) + + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) def inherited_dataset(self, split1, split2): df1 = ( diff --git a/deployment/tft/test/model_predict_test.py b/deployment/tft/test/model_predict_test.py new file mode 100644 index 00000000..5be30b00 --- /dev/null +++ b/deployment/tft/test/model_predict_test.py @@ -0,0 +1,179 @@ +import sys + +sys.path.append(".") + +import pytest +from src.model_predict import predict +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +@pytest.fixture +def prediction_length(): + return 60 + + +@pytest.mark.parametrize( + "df,metric,prediction_length", + [ + ("df_1", metric, prediction_length), + ("df_2", metric, prediction_length), + ("df_3", metric, prediction_length), + ("df_4", metric, prediction_length), + ("df_5", metric, prediction_length), + ("df_6", metric, prediction_length), + ("df_7", metric, prediction_length), + ("df_8", metric, prediction_length), + ("df_9", metric, prediction_length), + ("df_10", metric, prediction_length), + ("df_11", metric, prediction_length), + ("df_12", metric, prediction_length), + ], + indirect=True, +) +def test_predict(df, metric, prediction_length): + df.to_csv("demo.csv") + output = predict(metric, prediction_length) + if output: + print("True") + assert True diff --git a/deployment/tft/test/preprocess_dataset_test.py b/deployment/tft/test/preprocess_dataset_test.py new file mode 100644 index 00000000..80e36837 --- /dev/null +++ b/deployment/tft/test/preprocess_dataset_test.py @@ -0,0 +1,172 @@ +import sys + +sys.path.append(".") + +import pytest +from src.preprocess_dataset import Dataset +import pandas as pd +import numpy as np +import random + + +@pytest.fixture +def df_1(): + df = pd.DataFrame({"time": [], "metric_0": []}) + return df + + +@pytest.fixture +def df_2(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + df["metric_0"] = np.nan + return df + + +@pytest.fixture +def df_3(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.nan + return df + + +@pytest.fixture +def df_4(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_5(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 3)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = 1 + return df + + +@pytest.fixture +def df_6(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + return df + + +@pytest.fixture +def df_7(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna("None") + return df + + +@pytest.fixture +def df_8(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + df[f"metric_{i}"] = df[f"metric_{i}"].fillna(np.inf) + return df + + +@pytest.fixture +def df_9(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + np.random.randint(0, df.shape[0] - 1, 990), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_10(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.inf + return df + + +@pytest.fixture +def df_11(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = np.random.rand(1000) + if i % 2 == 0: + df.loc[ + list(range(20, 300)), + f"metric_{i}", + ] = np.nan + return df + + +@pytest.fixture +def df_12(): + df = pd.DataFrame() + df["time"] = np.array(range(0, 1000)) * 1e9 + for i in range(5): + df[f"metric_{i}"] = [ + np.nan if i % 2 == 0 else random.random() for i in range(1000) + ] + return df + + +@pytest.fixture +def df(request): + return request.getfixturevalue(request.param) + + +@pytest.fixture +def metric(): + return "metric_0" + + +class TestDataset: + @pytest.mark.parametrize( + "df,metric", + [ + ("df_1", metric), + ("df_2", metric), + ("df_3", metric), + ("df_4", metric), + ("df_5", metric), + ("df_6", metric), + ("df_7", metric), + ("df_8", metric), + ("df_9", metric), + ("df_10", metric), + ("df_11", metric), + ("df_12", metric), + ], + indirect=True, + ) + def test_init(self, df, metric): + preprocessed_dataset = Dataset(df, metric) + assert isinstance(preprocessed_dataset, Dataset) -- GitLab From 1b646fddd4843861f86c842d5a34b016a8f735b5 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Tue, 5 Oct 2021 11:58:11 +0200 Subject: [PATCH 09/33] duplicated rows removed --- deployment/arima/src/preprocess_dataset.py | 3 + .../arima/test/preprocess_dataset_test.py | 10 ++ deployment/nbeats/main.py | 4 +- deployment/nbeats/src/preprocess_dataset.py | 125 ++++++++++-------- .../nbeats/test/preprocess_dataset_test.py | 10 ++ deployment/tft/src/preprocess_dataset.py | 3 + 6 files changed, 95 insertions(+), 60 deletions(-) diff --git a/deployment/arima/src/preprocess_dataset.py b/deployment/arima/src/preprocess_dataset.py index 8ccc6cd7..2b59a8f5 100644 --- a/deployment/arima/src/preprocess_dataset.py +++ b/deployment/arima/src/preprocess_dataset.py @@ -73,6 +73,9 @@ class Dataset(object): return dataset def check_gap(self): + self.dataset = self.dataset.groupby(by=["time"]).min() + self.dataset["time"] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) self.dataset[self.target_column] = pd.to_numeric( self.dataset[self.target_column], errors="coerce" ).fillna(np.nan) diff --git a/deployment/arima/test/preprocess_dataset_test.py b/deployment/arima/test/preprocess_dataset_test.py index 80e36837..e61da6fd 100644 --- a/deployment/arima/test/preprocess_dataset_test.py +++ b/deployment/arima/test/preprocess_dataset_test.py @@ -138,6 +138,15 @@ def df_12(): return df +@pytest.fixture +def df_13(): + df = pd.DataFrame() + df["time"] = 1 + for i in range(5): + df[f"metric_{i}"] = [random.random() for i in range(1000)] + return df + + @pytest.fixture def df(request): return request.getfixturevalue(request.param) @@ -164,6 +173,7 @@ class TestDataset: ("df_10", metric), ("df_11", metric), ("df_12", metric), + ("df_13", metric), ], indirect=True, ) diff --git a/deployment/nbeats/main.py b/deployment/nbeats/main.py index 0cce7d09..5a798b1a 100644 --- a/deployment/nbeats/main.py +++ b/deployment/nbeats/main.py @@ -114,11 +114,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "EstimatedRemainingTimeContext", "level": 3, "publish_rate": 30000}, {"metric": "NotFinishedOnTimeContext", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 60' + # + f'"metrics": ["MinimumCores", "EstimatedRemainingTimeContext", "NotFinishedOnTimeContext"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/nbeats/src/preprocess_dataset.py b/deployment/nbeats/src/preprocess_dataset.py index 01ae9966..876ec282 100644 --- a/deployment/nbeats/src/preprocess_dataset.py +++ b/deployment/nbeats/src/preprocess_dataset.py @@ -46,8 +46,9 @@ class Dataset(object): def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index: + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() @@ -105,69 +106,77 @@ class Dataset(object): return ts_dataset def check_gap(self): - self.dataset[self.target_column] = pd.to_numeric( - self.dataset[self.target_column], errors="coerce" - ).fillna(np.nan) - self.dataset = self.dataset.replace(np.inf, np.nan) - self.dataset = self.dataset.dropna(subset=[self.target_column]) if self.dataset.shape[0] > 0: - max_gap = self.dataset["time"].diff().abs().max() - logging.info( - f"Metric: {self.target_column} Max time gap in series {max_gap}" - ) - print(f" Metric: {self.target_column} Max time gap in series {max_gap}") - series_freq = ( - self.dataset["time"] // 1e9 - ).diff().value_counts().index.values[0] * 1e9 - logging.info( - f"Metric: {self.target_column} Detected series with {series_freq} frequency" - ) - print( - f"Metric: {self.target_column} Detected series with {series_freq} frequency" - ) - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) - ), - ) - logging.info(f"Metric: {self.target_column} {len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" + self.dataset = self.dataset.groupby(by=["time"]).min() + self.dataset["time"] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + series_freq = (self.dataset["time"] // 1e9).diff().fillna( + 0 + ).value_counts().index.values[0] * 1e9 + logging.info( - f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * series_freq) + ), ) - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s = self.convert_formats(s) + s["split"] = "train" logging.info( - f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" ) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) - logging.info( - f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" - ) - print(f"{len(preprocessed_series)} long enough series found") - # logging.info(f"") - if preprocessed_series: - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False else: - self.dropped_recent_series = False - else: - self.dataset = pd.DataFrame() - self.dropped_recent_series = True - self.dataset.index = range(self.dataset.shape[0]) + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True def inherited_dataset(self, split1, split2): df1 = ( diff --git a/deployment/nbeats/test/preprocess_dataset_test.py b/deployment/nbeats/test/preprocess_dataset_test.py index 80e36837..e61da6fd 100644 --- a/deployment/nbeats/test/preprocess_dataset_test.py +++ b/deployment/nbeats/test/preprocess_dataset_test.py @@ -138,6 +138,15 @@ def df_12(): return df +@pytest.fixture +def df_13(): + df = pd.DataFrame() + df["time"] = 1 + for i in range(5): + df[f"metric_{i}"] = [random.random() for i in range(1000)] + return df + + @pytest.fixture def df(request): return request.getfixturevalue(request.param) @@ -164,6 +173,7 @@ class TestDataset: ("df_10", metric), ("df_11", metric), ("df_12", metric), + ("df_13", metric), ], indirect=True, ) diff --git a/deployment/tft/src/preprocess_dataset.py b/deployment/tft/src/preprocess_dataset.py index 84d80b05..a13e4278 100644 --- a/deployment/tft/src/preprocess_dataset.py +++ b/deployment/tft/src/preprocess_dataset.py @@ -113,6 +113,9 @@ class Dataset(object): return ts_dataset def check_gap(self): + self.dataset = self.dataset.groupby(by=["time"]).min() + self.dataset["time"] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) self.dataset[self.target_column] = pd.to_numeric( self.dataset[self.target_column], errors="coerce" ).fillna(np.nan) -- GitLab From 2917f1614ec106c7fe50f7b866c07c4bdc653778 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Tue, 5 Oct 2021 12:33:22 +0200 Subject: [PATCH 10/33] errors while committing removed --- deployment/arima/main.py | 4 ++-- deployment/arima/src/preprocess_dataset.py | 5 +++-- deployment/nbeats/src/preprocess_dataset.py | 3 ++- deployment/tft/main.py | 4 ++-- deployment/tft/src/preprocess_dataset.py | 5 +++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/deployment/arima/main.py b/deployment/arima/main.py index e5675fb8..05184cf1 100644 --- a/deployment/arima/main.py +++ b/deployment/arima/main.py @@ -108,11 +108,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "EstimatedRemainingTimeContext", "level": 3, "publish_rate": 30000}, {"metric": "NotFinishedOnTimeContext", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 60' + # + f'"metrics": ["MinimumCores", "EstimatedRemainingTimeContext", "NotFinishedOnTimeContext"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/arima/src/preprocess_dataset.py b/deployment/arima/src/preprocess_dataset.py index 2b59a8f5..5e91731c 100644 --- a/deployment/arima/src/preprocess_dataset.py +++ b/deployment/arima/src/preprocess_dataset.py @@ -42,8 +42,9 @@ class Dataset(object): def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() diff --git a/deployment/nbeats/src/preprocess_dataset.py b/deployment/nbeats/src/preprocess_dataset.py index 876ec282..adc66470 100644 --- a/deployment/nbeats/src/preprocess_dataset.py +++ b/deployment/nbeats/src/preprocess_dataset.py @@ -46,7 +46,7 @@ class Dataset(object): def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - if first_not_nan_index: + if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan if first_not_nan_index > -1: return dataset[dataset.index > first_not_nan_index] else: @@ -115,6 +115,7 @@ class Dataset(object): ).fillna(np.nan) self.dataset = self.dataset.replace(np.inf, np.nan) self.dataset = self.dataset.dropna(subset=[self.target_column]) + print(self.dataset) if self.dataset.shape[0] > 0: max_gap = self.dataset["time"].diff().abs().max() logging.info( diff --git a/deployment/tft/main.py b/deployment/tft/main.py index 4896ffe6..5a798b1a 100644 --- a/deployment/tft/main.py +++ b/deployment/tft/main.py @@ -114,11 +114,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "metric_0", "level": 3, "publish_rate": 30000}, {"metric": "metric_1", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "EstimatedRemainingTimeContext", "level": 3, "publish_rate": 30000}, {"metric": "NotFinishedOnTimeContext", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["MinimumCores", "metric_0", "metric_1"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["MinimumCores", "EstimatedRemainingTimeContext", "NotFinishedOnTimeContext"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/tft/src/preprocess_dataset.py b/deployment/tft/src/preprocess_dataset.py index a13e4278..b08e570a 100644 --- a/deployment/tft/src/preprocess_dataset.py +++ b/deployment/tft/src/preprocess_dataset.py @@ -46,8 +46,9 @@ class Dataset(object): def cut_nan_start(self, dataset): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() -- GitLab From 6d834800f067e796dda96b5d32a7bf9af04777e5 Mon Sep 17 00:00:00 2001 From: Fotis Paraskevopoulos Date: Wed, 6 Oct 2021 12:12:55 +0200 Subject: [PATCH 11/33] redirecting logs on Dockerfile --- morphemic-forecasting-eshybrid/Dockerfile | 10 ++++-- .../docker-entrypoint.sh | 8 +++++ morphemic-forecasting-eshybrid/main.py | 32 ++++++++++--------- 3 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 morphemic-forecasting-eshybrid/docker-entrypoint.sh diff --git a/morphemic-forecasting-eshybrid/Dockerfile b/morphemic-forecasting-eshybrid/Dockerfile index 7c211cb9..ed4b71cf 100644 --- a/morphemic-forecasting-eshybrid/Dockerfile +++ b/morphemic-forecasting-eshybrid/Dockerfile @@ -10,17 +10,21 @@ COPY . /app ADD https://gitlab.ow2.org/melodic/morphemic-preprocessor/-/archive/morphemic-rc1.5/morphemic-preprocessor-morphemic-rc1.5.tar.gz /var/lib/morphemic/ - RUN cd /var/lib/morphemic/ \ && tar -zxf morphemic-preprocessor-morphemic-rc1.5.tar.gz \ && rm -rf /app/messaging \ && cp -R /var/lib/morphemic/morphemic-preprocessor-morphemic-rc1.5/amq-message-python-library /app/messaging \ && rm -rf /var/lib/morphemic +COPY docker-entrypoint.sh /app WORKDIR /app + RUN pip3 install -r requirements.txt \ - && pip3 install -r messaging/requirements.txt + && pip3 install -r messaging/requirements.txt \ + && chmod +x /app/docker-entrypoint.sh + +ENTRYPOINT ["/app/docker-entrypoint.sh"] -CMD ["python3","main.py"] \ No newline at end of file +CMD ["python3", "main.py"] \ No newline at end of file diff --git a/morphemic-forecasting-eshybrid/docker-entrypoint.sh b/morphemic-forecasting-eshybrid/docker-entrypoint.sh new file mode 100644 index 00000000..897c61a5 --- /dev/null +++ b/morphemic-forecasting-eshybrid/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + + +mkdir -p /logs +touch /logs/eshybrid.log + +"$@" > /logs/eshybrid.log 2>&1 + diff --git a/morphemic-forecasting-eshybrid/main.py b/morphemic-forecasting-eshybrid/main.py index dd1e582c..a2a9e213 100644 --- a/morphemic-forecasting-eshybrid/main.py +++ b/morphemic-forecasting-eshybrid/main.py @@ -4,25 +4,27 @@ import os import argparse from forecasting import eshybrid -logger = logging.getLogger() -logger.setLevel(logging.DEBUG) +def main(): + parser = argparse.ArgumentParser(description='Run eshybrid forecaster') + parser.add_argument('--config', help='Config file to run, default sync.cfg') -parser = argparse.ArgumentParser(description='Run eshybrid forecaster') -parser.add_argument('--config', help='Config file to run, default sync.cfg') + args = parser.parse_args() -args = parser.parse_args() + config_file = "%s/%s" % (os.getcwd(), args.config or "sync.cfg") + print("Config file %s ", config_file) + config = configparser.RawConfigParser() + config.read(config_file) + config_dict = dict(config) -config_file = "%s/%s" % (os.getcwd(), args.config or "sync.cfg") -print("Config file %s ", config_file) -config = configparser.RawConfigParser() -config.read(config_file) -config_dict = dict(config) -e = eshybrid.ESHybrid(config) + e = eshybrid.ESHybrid(config) + try: + e.start() + except KeyboardInterrupt: + e.stop() -try: - e.start() -except KeyboardInterrupt: - e.stop() +if __name__ == '__main__': + main() + -- GitLab From f0dc964b1e6221a0decee2ef1351d4b741886856 Mon Sep 17 00:00:00 2001 From: Anna Warno Date: Fri, 8 Oct 2021 11:43:58 +0200 Subject: [PATCH 12/33] timestamp series frequency error corrected --- deployment/arima/retrain.py | 6 +- deployment/arima/src/model_predict.py | 5 +- deployment/arima/src/preprocess_dataset.py | 168 +++++++++------- deployment/arima/test/model_predict_test.py | 7 +- .../arima/test/preprocess_dataset_test.py | 32 ++++ deployment/nbeats/env | 4 +- deployment/nbeats/main.py | 4 +- deployment/nbeats/predict.py | 1 + deployment/nbeats/retrain.py | 6 +- deployment/nbeats/src/model_predict.py | 3 +- deployment/nbeats/src/model_train.py | 10 +- deployment/nbeats/src/preprocess_dataset.py | 107 +++++++---- deployment/nbeats/test/model_predict_test.py | 1 + .../nbeats/test/preprocess_dataset_test.py | 32 ++++ deployment/tft/predict.py | 2 +- deployment/tft/retrain.py | 6 +- deployment/tft/src/model_predict.py | 3 +- deployment/tft/src/model_train.py | 9 +- deployment/tft/src/preprocess_dataset.py | 181 ++++++++++-------- deployment/tft/test/model_predict_test.py | 1 + .../tft/test/preprocess_dataset_test.py | 42 ++++ 21 files changed, 430 insertions(+), 200 deletions(-) diff --git a/deployment/arima/retrain.py b/deployment/arima/retrain.py index 2a6e654d..4fe0dfbb 100644 --- a/deployment/arima/retrain.py +++ b/deployment/arima/retrain.py @@ -36,7 +36,11 @@ def main(predicted_metrics, prediction_horizon): while True: start_time = int(time.time()) for metric in predicted_metrics: - retrain_msg = train(metric, prediction_horizon) + retrain_msg = train( + metric, + prediction_horizon, + publish_rate=metrics_info[metric]["publish_rate"], + ) if retrain_msg: logging.info( f"Training completed for {metric} metric TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/arima/src/model_predict.py b/deployment/arima/src/model_predict.py index 7c519a0e..dc191c0f 100644 --- a/deployment/arima/src/model_predict.py +++ b/deployment/arima/src/model_predict.py @@ -25,6 +25,7 @@ def predict( yaml_file="model.yaml", prediction_hor=60, timestamp=0, + publish_rate=10000, ): with open(yaml_file) as file: params = yaml.load(file, Loader=yaml.FullLoader) @@ -40,7 +41,7 @@ def predict( return None dataset = pd.read_csv(data_path) - new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"], publish_rate=publish_rate) if new_ts_dataset.dropped_recent_series: # series with recent data was too short logging.info( f"METRIC: {target_column} Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" @@ -52,7 +53,7 @@ def predict( dataset = pd.read_csv(data_path) - ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"], publish_rate=publish_rate) if ts_dataset.dataset.shape[0] < 1: logging.info( f"METRIC: {target_column} Not enough fresh preprocessed data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/arima/src/preprocess_dataset.py b/deployment/arima/src/preprocess_dataset.py index 5e91731c..ff71eaa8 100644 --- a/deployment/arima/src/preprocess_dataset.py +++ b/deployment/arima/src/preprocess_dataset.py @@ -20,6 +20,7 @@ class Dataset(object): classification=0, context_length=40, prediction_length=5, + publish_rate=10000, ): self.max_missing_values = ( @@ -33,6 +34,7 @@ class Dataset(object): self.classification = classification self.context_length = context_length self.prediction_length = prediction_length + self.publish_rate = publish_rate self.dataset = dataset self.dropped_recent_series = True # default set to be true if self.dataset.shape[0] > 0: @@ -43,13 +45,14 @@ class Dataset(object): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index is not None: + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() def fill_na(self, dataset): - dataset = dataset.replace("None", np.nan) + dataset = dataset.replace(np.inf, np.nan) dataset = dataset.ffill(axis="rows") return dataset @@ -61,79 +64,114 @@ class Dataset(object): for name in self.tv_unknown_cat: dataset[name] = dataset[name].astype(str) - - dataset["series"] = dataset["series"].astype(str) return dataset + def convert_time_to_ms(self): + if self.dataset.shape[0] > 0: + digit_len = len(str(int(self.dataset["time"].values[0]))) + if digit_len >= 13: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(str(x)[:13]) + ) + else: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(int(str(x)[:digit_len]) * 10 ** (13 - digit_len)) + ) + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(x // 1e4 * 1e4) + ) + def add_obligatory_columns(self, dataset): - dataset["series"] = 0 - dataset["split"] = "train" n = dataset.shape[0] - dataset["split"][int(n * 0.8) :] = "val" - dataset["time_idx"] = range(n) + dataset["time_idx"] = range(n) # TODO check time gaps return dataset def check_gap(self): - self.dataset = self.dataset.groupby(by=["time"]).min() - self.dataset["time"] = self.dataset.index - self.dataset.index = range(self.dataset.shape[0]) - self.dataset[self.target_column] = pd.to_numeric( - self.dataset[self.target_column], errors="coerce" - ).fillna(np.nan) - self.dataset = self.dataset.dropna(subset=[self.target_column]) + print(self.dataset) if self.dataset.shape[0] > 0: - max_gap = self.dataset["time"].diff().abs().max() - logging.info( - f"Metric: {self.target_column} Max time gap in series {max_gap}" - ) - print(f" Metric: {self.target_column} Max time gap in series {max_gap}") - self.series_freq = ( - self.dataset["time"] // 1e9 - ).diff().value_counts().index.values[0] * 1e9 - logging.info( - f"Metric: {self.target_column} Detected series with {self.series_freq} frequency" - ) - print( - f"Metric: {self.target_column} Detected series with {self.series_freq} frequency" - ) - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * self.series_freq) - ), - ) - logging.info(f"Metric: {self.target_column} {len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" + self.dataset = self.dataset.groupby(by=["time"]).min() + self.dataset["time"] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) + self.convert_time_to_ms() + print(self.dataset) + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + print(self.dataset["time"].diff().fillna(0).value_counts()) + series_freq = ( + (self.dataset["time"]) + .diff() + .fillna(0) + .value_counts() + .index.values[0] + ) + logging.info( - f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" ) - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: + if series_freq != self.publish_rate: logging.info( - f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" ) - logging.info( - f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" - ) - print(f"{len(preprocessed_series)} long enough series found") - if preprocessed_series: - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * self.publish_rate) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s["split"] = "train" + s = self.convert_formats(s) + print(s.shape) + logging.info( + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" + ) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) + + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False else: - self.dropped_recent_series = False - else: - self.dataset = pd.DataFrame() - self.dataset.index = range(self.dataset.shape[0]) + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True diff --git a/deployment/arima/test/model_predict_test.py b/deployment/arima/test/model_predict_test.py index 5be30b00..60b6d5fd 100644 --- a/deployment/arima/test/model_predict_test.py +++ b/deployment/arima/test/model_predict_test.py @@ -53,7 +53,7 @@ def df_5(): @pytest.fixture def df_6(): df = pd.DataFrame() - df["time"] = np.array(range(0, 1000)) * 1e9 + df["time"] = np.array(range(1, 1001)) * 1e9 for i in range(5): df[f"metric_{i}"] = np.random.rand(1000) return df @@ -62,7 +62,7 @@ def df_6(): @pytest.fixture def df_7(): df = pd.DataFrame() - df["time"] = np.array(range(0, 1000)) * 1e9 + df["time"] = np.array(range(1, 1001)) * 1e9 for i in range(5): df[f"metric_{i}"] = np.random.rand(1000) df.loc[ @@ -76,7 +76,7 @@ def df_7(): @pytest.fixture def df_8(): df = pd.DataFrame() - df["time"] = np.array(range(0, 1000)) * 1e9 + df["time"] = np.array(range(1, 1001)) * 1e9 for i in range(5): df[f"metric_{i}"] = np.random.rand(1000) df.loc[ @@ -174,6 +174,7 @@ def prediction_length(): def test_predict(df, metric, prediction_length): df.to_csv("demo.csv") output = predict(metric, prediction_length) + print(output) if output: print("True") assert True diff --git a/deployment/arima/test/preprocess_dataset_test.py b/deployment/arima/test/preprocess_dataset_test.py index e61da6fd..96835f44 100644 --- a/deployment/arima/test/preprocess_dataset_test.py +++ b/deployment/arima/test/preprocess_dataset_test.py @@ -147,6 +147,35 @@ def df_13(): return df +@pytest.fixture +def df_14(): + df = pd.DataFrame() + df["time"] = 10 + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(1000)] + return df + + +@pytest.fixture +def df_15(): + df = pd.DataFrame() + df["time"] = [i * 30 * 1e5 for i in range(500)] + [ + i * 30 * 1e5 + 10000 for i in range(500) + ] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + +@pytest.fixture +def df_16(): + df = pd.DataFrame() + df["time"] = [i for i in range(500)] + [i + 10000 for i in range(500)] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + @pytest.fixture def df(request): return request.getfixturevalue(request.param) @@ -174,6 +203,9 @@ class TestDataset: ("df_11", metric), ("df_12", metric), ("df_13", metric), + ("df_14", metric), + ("df_15", metric), + ("df_16", metric), ], indirect=True, ) diff --git a/deployment/nbeats/env b/deployment/nbeats/env index aa4cd5c1..6f917a73 100644 --- a/deployment/nbeats/env +++ b/deployment/nbeats/env @@ -1,6 +1,6 @@ AMQ_HOSTNAME=localhost -AMQ_USER=admin -AMQ_PASSWORD=admin +AMQ_USER=morphemic +AMQ_PASSWORD=morphemic AMQ_PORT=61613 APP_NAME=demo METHOD=tft diff --git a/deployment/nbeats/main.py b/deployment/nbeats/main.py index 5a798b1a..80f60003 100644 --- a/deployment/nbeats/main.py +++ b/deployment/nbeats/main.py @@ -114,11 +114,11 @@ def main(): ) # msg1 = Msg() - # msg1.body = '[{"metric": "MinimumCores", "level": 3, "publish_rate": 30000}, {"metric": "EstimatedRemainingTimeContext", "level": 3, "publish_rate": 30000}, {"metric": "NotFinishedOnTimeContext", "level": 3, "publish_rate": 30000}]' + # msg1.body = '[{"metric": "EstimatedRemainingTimeContext", "level": 3, "publish_rate": 30000}, {"metric": "WillFinishTooSoonContext", "level": 3, "publish_rate": 30000}, {"metric": "MinimumCores", "level": 3, "publish_rate": 30000}]' # msg2 = Msg() # msg2.body = ( # "{" - # + f'"metrics": ["MinimumCores", "EstimatedRemainingTimeContext", "NotFinishedOnTimeContext"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' + # + f'"metrics": ["EstimatedRemainingTimeContext", "WillFinishTooSoonContext", "MinimumCores"],"timestamp": {int(time.time())}, "epoch_start": {int(time.time()) + 30}, "number_of_forward_predictions": 8,"prediction_horizon": 30' # + "}" # ) diff --git a/deployment/nbeats/predict.py b/deployment/nbeats/predict.py index 8d3985ab..773bff0d 100644 --- a/deployment/nbeats/predict.py +++ b/deployment/nbeats/predict.py @@ -132,6 +132,7 @@ def main(): predicted_point_idx=int( (i + 1) * prediction_points_horizons[metric] - 1 ), + publish_rate=metrics_info[metric]["publish_rate"], ) if i == (number_of_forward_predictions[metric] - 1): print( diff --git a/deployment/nbeats/retrain.py b/deployment/nbeats/retrain.py index fa69c0d5..64f225ae 100644 --- a/deployment/nbeats/retrain.py +++ b/deployment/nbeats/retrain.py @@ -33,7 +33,11 @@ def main(predicted_metrics, prediction_horizons): while True: start_time = int(time.time()) for metric in predicted_metrics: - retrain_msg = train(metric, prediction_horizons[metric]) + retrain_msg = train( + metric, + prediction_horizons[metric], + publish_rate=metrics_info[metric]["publish_rate"], + ) if retrain_msg: logging.info( f"Training completed for {metric} metric TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/nbeats/src/model_predict.py b/deployment/nbeats/src/model_predict.py index 770089cf..ef334827 100644 --- a/deployment/nbeats/src/model_predict.py +++ b/deployment/nbeats/src/model_predict.py @@ -31,6 +31,7 @@ def predict( prediction_hor=60, timestamp=0, predicted_point_idx=0, + publish_rate=10000, ): with open(yaml_file) as file: @@ -55,7 +56,7 @@ def predict( return (None, None) dataset = pd.read_csv(data_path) - new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"], publish_rate=publish_rate) if new_ts_dataset.dropped_recent_series: # series with recent data was too short logging.info( f"Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/nbeats/src/model_train.py b/deployment/nbeats/src/model_train.py index 9c697f18..794ef9c5 100644 --- a/deployment/nbeats/src/model_train.py +++ b/deployment/nbeats/src/model_train.py @@ -29,7 +29,7 @@ logging.basicConfig( ) -def train(target_column, prediction_length, yaml_file="model.yaml"): +def train(target_column, prediction_length, yaml_file="model.yaml", publish_rate=10000): torch.manual_seed(12345) with open(yaml_file) as file: @@ -45,6 +45,7 @@ def train(target_column, prediction_length, yaml_file="model.yaml"): return None dataset = pd.read_csv(data_path) + print(dataset, "dataset downloaded from persostent storage") if dataset.shape[0] < 14 * prediction_length: logging.info( @@ -52,7 +53,12 @@ def train(target_column, prediction_length, yaml_file="model.yaml"): ) return None - ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + ts_dataset = Dataset( + dataset, + target_column=target_column, + **params["dataset"], + publish_rate=publish_rate, + ) print(ts_dataset.dataset, "DATASEEEET") if ts_dataset.dataset.shape[0] < 1: diff --git a/deployment/nbeats/src/preprocess_dataset.py b/deployment/nbeats/src/preprocess_dataset.py index adc66470..c2b0ba13 100644 --- a/deployment/nbeats/src/preprocess_dataset.py +++ b/deployment/nbeats/src/preprocess_dataset.py @@ -22,6 +22,7 @@ class Dataset(object): classification=0, context_length=40, prediction_length=5, + publish_rate=10000, ): self.max_missing_values = ( @@ -35,6 +36,7 @@ class Dataset(object): self.classification = classification self.context_length = context_length self.prediction_length = prediction_length + self.publish_rate = publish_rate self.dataset = dataset self.dropped_recent_series = True # default set to be true if self.dataset.shape[0] > 0: @@ -47,8 +49,9 @@ class Dataset(object): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index is not None: + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() @@ -65,66 +68,52 @@ class Dataset(object): for name in self.tv_unknown_cat: dataset[name] = dataset[name].astype(str) - - dataset["series"] = dataset["series"].astype(str) return dataset + def convert_time_to_ms(self): + if self.dataset.shape[0] > 0: + digit_len = len(str(int(self.dataset["time"].values[0]))) + if digit_len >= 13: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(str(x)[:13]) + ) + else: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(int(str(x)[:digit_len]) * 10 ** (13 - digit_len)) + ) + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(x // 1e4 * 1e4) + ) + def add_obligatory_columns(self, dataset): - dataset["series"] = 0 - dataset["split"] = "train" n = dataset.shape[0] - dataset["split"][int(n * 0.8) :] = "val" dataset["time_idx"] = range(n) # TODO check time gaps return dataset - def create_time_series_dataset(self): - if not self.classification: - self.time_varying_unknown_reals = [ - self.target_column - ] + self.tv_unknown_reals - self.time_varying_unknown_categoricals = self.tv_unknown_cat - else: - self.time_varying_unknown_reals = self.tv_unknown_reals - self.time_varying_unknown_categoricals = [ - self.target_column - ] + self.tv_unknown_cat - - ts_dataset = TimeSeriesDataSet( - self.dataset[lambda x: x.split == "train"], - time_idx="time_idx", - target=self.target_column, - categorical_encoders={"series": NaNLabelEncoder().fit(self.dataset.series)}, - group_ids=["series"], - time_varying_unknown_reals=[self.target_column], - min_encoder_length=self.context_length, - max_encoder_length=self.context_length, - max_prediction_length=self.prediction_length, - min_prediction_length=self.prediction_length, - add_relative_time_idx=False, - allow_missings=False, - ) - return ts_dataset - def check_gap(self): if self.dataset.shape[0] > 0: self.dataset = self.dataset.groupby(by=["time"]).min() self.dataset["time"] = self.dataset.index self.dataset.index = range(self.dataset.shape[0]) + self.convert_time_to_ms() self.dataset[self.target_column] = pd.to_numeric( self.dataset[self.target_column], errors="coerce" ).fillna(np.nan) self.dataset = self.dataset.replace(np.inf, np.nan) self.dataset = self.dataset.dropna(subset=[self.target_column]) - print(self.dataset) if self.dataset.shape[0] > 0: max_gap = self.dataset["time"].diff().abs().max() logging.info( f"Metric: {self.target_column} Max time gap in series {max_gap}" ) print(f" Metric: {self.target_column} Max time gap in series {max_gap}") - series_freq = (self.dataset["time"] // 1e9).diff().fillna( - 0 - ).value_counts().index.values[0] * 1e9 + series_freq = ( + (self.dataset["time"]) + .diff() + .fillna(0) + .value_counts() + .index.values[0] + ) logging.info( f"Metric: {self.target_column} Detected series with {series_freq} frequency" @@ -132,12 +121,20 @@ class Dataset(object): print( f"Metric: {self.target_column} Detected series with {series_freq} frequency" ) + if series_freq != self.publish_rate: + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + # check series length series = np.split( self.dataset, *np.where( self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) + >= np.abs(self.max_missing_values * self.publish_rate) ), ) logging.info(f"Metric: {self.target_column} {len(series)} series found") @@ -147,8 +144,8 @@ class Dataset(object): s = self.fill_na(s) s = self.cut_nan_start(s) s = self.add_obligatory_columns(s) - s = self.convert_formats(s) s["split"] = "train" + s = self.convert_formats(s) logging.info( f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" ) @@ -193,6 +190,34 @@ class Dataset(object): ) return inh_dataset + def create_time_series_dataset(self): + if not self.classification: + self.time_varying_unknown_reals = [ + self.target_column + ] + self.tv_unknown_reals + self.time_varying_unknown_categoricals = self.tv_unknown_cat + else: + self.time_varying_unknown_reals = self.tv_unknown_reals + self.time_varying_unknown_categoricals = [ + self.target_column + ] + self.tv_unknown_cat + + ts_dataset = TimeSeriesDataSet( + self.dataset[lambda x: x.split == "train"], + time_idx="time_idx", + target=self.target_column, + categorical_encoders={"series": NaNLabelEncoder().fit(self.dataset.series)}, + group_ids=["series"], + time_varying_unknown_reals=[self.target_column], + min_encoder_length=self.context_length, + max_encoder_length=self.context_length, + max_prediction_length=self.prediction_length, + min_prediction_length=self.prediction_length, + add_relative_time_idx=False, + allow_missings=False, + ) + return ts_dataset + def get_from_dataset(self, dataset): return TimeSeriesDataSet.from_dataset( self.ts_dataset, dataset, min_prediction_idx=0, stop_randomization=True diff --git a/deployment/nbeats/test/model_predict_test.py b/deployment/nbeats/test/model_predict_test.py index 5be30b00..d0baa170 100644 --- a/deployment/nbeats/test/model_predict_test.py +++ b/deployment/nbeats/test/model_predict_test.py @@ -174,6 +174,7 @@ def prediction_length(): def test_predict(df, metric, prediction_length): df.to_csv("demo.csv") output = predict(metric, prediction_length) + print(output) if output: print("True") assert True diff --git a/deployment/nbeats/test/preprocess_dataset_test.py b/deployment/nbeats/test/preprocess_dataset_test.py index e61da6fd..96835f44 100644 --- a/deployment/nbeats/test/preprocess_dataset_test.py +++ b/deployment/nbeats/test/preprocess_dataset_test.py @@ -147,6 +147,35 @@ def df_13(): return df +@pytest.fixture +def df_14(): + df = pd.DataFrame() + df["time"] = 10 + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(1000)] + return df + + +@pytest.fixture +def df_15(): + df = pd.DataFrame() + df["time"] = [i * 30 * 1e5 for i in range(500)] + [ + i * 30 * 1e5 + 10000 for i in range(500) + ] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + +@pytest.fixture +def df_16(): + df = pd.DataFrame() + df["time"] = [i for i in range(500)] + [i + 10000 for i in range(500)] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + @pytest.fixture def df(request): return request.getfixturevalue(request.param) @@ -174,6 +203,9 @@ class TestDataset: ("df_11", metric), ("df_12", metric), ("df_13", metric), + ("df_14", metric), + ("df_15", metric), + ("df_16", metric), ], indirect=True, ) diff --git a/deployment/tft/predict.py b/deployment/tft/predict.py index 1bd61287..773bff0d 100644 --- a/deployment/tft/predict.py +++ b/deployment/tft/predict.py @@ -132,6 +132,7 @@ def main(): predicted_point_idx=int( (i + 1) * prediction_points_horizons[metric] - 1 ), + publish_rate=metrics_info[metric]["publish_rate"], ) if i == (number_of_forward_predictions[metric] - 1): print( @@ -194,7 +195,6 @@ if __name__ == "__main__": metric["metric"]: msg["prediction_horizon"] * 1000 // metric["publish_rate"] for metric in msg["all_metrics"] } - print(prediction_points_horizons) predicted_metrics = set(msg["metrics"]) prediction_cycle = msg["prediction_horizon"] prediction_lengths = { diff --git a/deployment/tft/retrain.py b/deployment/tft/retrain.py index fa69c0d5..64f225ae 100644 --- a/deployment/tft/retrain.py +++ b/deployment/tft/retrain.py @@ -33,7 +33,11 @@ def main(predicted_metrics, prediction_horizons): while True: start_time = int(time.time()) for metric in predicted_metrics: - retrain_msg = train(metric, prediction_horizons[metric]) + retrain_msg = train( + metric, + prediction_horizons[metric], + publish_rate=metrics_info[metric]["publish_rate"], + ) if retrain_msg: logging.info( f"Training completed for {metric} metric TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/tft/src/model_predict.py b/deployment/tft/src/model_predict.py index 91bbe32d..4fc34800 100644 --- a/deployment/tft/src/model_predict.py +++ b/deployment/tft/src/model_predict.py @@ -33,6 +33,7 @@ def predict( prediction_hor=60, timestamp=0, predicted_point_idx=0, + publish_rate=10000, ): with open(yaml_file) as file: params = yaml.load(file, Loader=yaml.FullLoader) @@ -56,7 +57,7 @@ def predict( return (None, None) dataset = pd.read_csv(data_path) - new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + new_ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"], publish_rate=publish_rate) if new_ts_dataset.dropped_recent_series: # series with recent data was too short logging.info( f"METRIC {target_column} Not enough fresh data, unable to predict TIME: {datetime.now(pytz.timezone(TZ)).strftime('%d/%m/%Y %H:%M:%S')}" diff --git a/deployment/tft/src/model_train.py b/deployment/tft/src/model_train.py index fa7e43c9..a4e5fa3c 100644 --- a/deployment/tft/src/model_train.py +++ b/deployment/tft/src/model_train.py @@ -31,7 +31,7 @@ LOSSES_DICT = { } -def train(target_column, prediction_length, yaml_file="model.yaml"): +def train(target_column, prediction_length, yaml_file="model.yaml", publish_rate=10000): torch.manual_seed(12345) with open(yaml_file) as file: @@ -54,7 +54,12 @@ def train(target_column, prediction_length, yaml_file="model.yaml"): ) return None - ts_dataset = Dataset(dataset, target_column=target_column, **params["dataset"]) + ts_dataset = Dataset( + dataset, + target_column=target_column, + **params["dataset"], + publish_rate=publish_rate, + ) lockfile = f"{params['dataloader_path']}_{target_column}.pickle" lock = FileLock(lockfile + ".lock") diff --git a/deployment/tft/src/preprocess_dataset.py b/deployment/tft/src/preprocess_dataset.py index b08e570a..b9f10273 100644 --- a/deployment/tft/src/preprocess_dataset.py +++ b/deployment/tft/src/preprocess_dataset.py @@ -22,6 +22,7 @@ class Dataset(object): classification=0, context_length=40, prediction_length=5, + publish_rate=10000, ): self.max_missing_values = ( @@ -35,6 +36,7 @@ class Dataset(object): self.classification = classification self.context_length = context_length self.prediction_length = prediction_length + self.publish_rate = publish_rate self.dataset = dataset self.dropped_recent_series = True # default set to be true if self.dataset.shape[0] > 0: @@ -47,8 +49,9 @@ class Dataset(object): dataset.index = range(dataset.shape[0]) first_not_nan_index = dataset[self.target_column].first_valid_index() if first_not_nan_index == first_not_nan_index: # check is if it;s not np.nan - if first_not_nan_index > -1: - return dataset[dataset.index > first_not_nan_index] + if first_not_nan_index is not None: + if first_not_nan_index > -1: + return dataset[dataset.index > first_not_nan_index] else: return dataset.dropna() @@ -65,18 +68,114 @@ class Dataset(object): for name in self.tv_unknown_cat: dataset[name] = dataset[name].astype(str) - - dataset["series"] = dataset["series"].astype(str) return dataset + def convert_time_to_ms(self): + if self.dataset.shape[0] > 0: + digit_len = len(str(int(self.dataset["time"].values[0]))) + if digit_len >= 13: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(str(x)[:13]) + ) + else: + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(int(str(x)[:digit_len]) * 10 ** (13 - digit_len)) + ) + self.dataset["time"] = self.dataset["time"].apply( + lambda x: int(x // 1e4 * 1e4) + ) + def add_obligatory_columns(self, dataset): - dataset["series"] = 0 - dataset["split"] = "train" n = dataset.shape[0] - dataset["split"][int(n * 0.8) :] = "val" dataset["time_idx"] = range(n) # TODO check time gaps return dataset + def check_gap(self): + if self.dataset.shape[0] > 0: + self.dataset = self.dataset.groupby(by=["time"]).min() + self.dataset["time"] = self.dataset.index + self.dataset.index = range(self.dataset.shape[0]) + self.convert_time_to_ms() + self.dataset[self.target_column] = pd.to_numeric( + self.dataset[self.target_column], errors="coerce" + ).fillna(np.nan) + self.dataset = self.dataset.replace(np.inf, np.nan) + self.dataset = self.dataset.dropna(subset=[self.target_column]) + if self.dataset.shape[0] > 0: + max_gap = self.dataset["time"].diff().abs().max() + logging.info( + f"Metric: {self.target_column} Max time gap in series {max_gap}" + ) + print(f" Metric: {self.target_column} Max time gap in series {max_gap}") + series_freq = ( + (self.dataset["time"]) + .diff() + .fillna(0) + .value_counts() + .index.values[0] + ) + + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency" + ) + if series_freq != self.publish_rate: + logging.info( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + print( + f"Metric: {self.target_column} Detected series with {series_freq} frequency, but the frequency should be: {self.publish_rate}!" + ) + + # check series length + series = np.split( + self.dataset, + *np.where( + self.dataset["time"].diff().abs().fillna(0).astype(int) + >= np.abs(self.max_missing_values * self.publish_rate) + ), + ) + logging.info(f"Metric: {self.target_column} {len(series)} series found") + print(f"{len(series)} series found") + preprocessed_series = [] + for i, s in enumerate(series): + s = self.fill_na(s) + s = self.cut_nan_start(s) + s = self.add_obligatory_columns(s) + s["split"] = "train" + s = self.convert_formats(s) + logging.info( + f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" + ) + if s.shape[0] > self.prediction_length * 2 + self.context_length: + s["series"] = i + preprocessed_series.append(s) + if i == len(series) - 1: + logging.info( + f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" + ) + + logging.info( + f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" + ) + print(f"{len(preprocessed_series)} long enough series found") + # logging.info(f"") + if preprocessed_series: + self.dataset = pd.concat(preprocessed_series) + if self.dataset["series"].max() != len(series) - 1: + self.dropped_recent_series = True + else: + self.dropped_recent_series = False + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + self.dataset.index = range(self.dataset.shape[0]) + else: + self.dataset = pd.DataFrame() + self.dropped_recent_series = True + def create_time_series_dataset(self): if not self.classification: self.time_varying_unknown_reals = [ @@ -113,74 +212,6 @@ class Dataset(object): ) return ts_dataset - def check_gap(self): - self.dataset = self.dataset.groupby(by=["time"]).min() - self.dataset["time"] = self.dataset.index - self.dataset.index = range(self.dataset.shape[0]) - self.dataset[self.target_column] = pd.to_numeric( - self.dataset[self.target_column], errors="coerce" - ).fillna(np.nan) - self.dataset = self.dataset.replace(np.inf, np.nan) - self.dataset = self.dataset.dropna(subset=[self.target_column]) - if self.dataset.shape[0] > 0: - max_gap = self.dataset["time"].diff().abs().max() - logging.info( - f"Metric: {self.target_column} Max time gap in series {max_gap}" - ) - print(f" Metric: {self.target_column} Max time gap in series {max_gap}") - series_freq = ( - self.dataset["time"] // 1e9 - ).diff().value_counts().index.values[0] * 1e9 - logging.info( - f"Metric: {self.target_column} Detected series with {series_freq} frequency" - ) - print( - f"Metric: {self.target_column} Detected series with {series_freq} frequency" - ) - # check series length - series = np.split( - self.dataset, - *np.where( - self.dataset["time"].diff().abs().fillna(0).astype(int) - >= np.abs(self.max_missing_values * series_freq) - ), - ) - logging.info(f"Metric: {self.target_column} {len(series)} series found") - print(f"{len(series)} series found") - preprocessed_series = [] - for i, s in enumerate(series): - s = self.fill_na(s) - s = self.cut_nan_start(s) - s = self.add_obligatory_columns(s) - s = self.convert_formats(s) - s["split"] = "train" - logging.info( - f"Metric: {self.target_column} Found series {i} of length: {s.shape[0]}, required data rows: {self.prediction_length * 2 + self.context_length}" - ) - if s.shape[0] > self.prediction_length * 2 + self.context_length: - s["series"] = i - preprocessed_series.append(s) - if i == len(series) - 1: - logging.info( - f"Metric: {self.target_column} Fresh data rows: {s.shape[0]}, required fresh data rows: {self.prediction_length * 2 + self.context_length}" - ) - - logging.info( - f"Metric: {self.target_column} {len(preprocessed_series)} long enough series found" - ) - print(f"{len(preprocessed_series)} long enough series found") - # logging.info(f"") - if preprocessed_series: - self.dataset = pd.concat(preprocessed_series) - if self.dataset["series"].max() != len(series) - 1: - self.dropped_recent_series = True - else: - self.dropped_recent_series = False - else: - self.dataset = pd.DataFrame() - self.dropped_recent_series = True - self.dataset.index = range(self.dataset.shape[0]) - def inherited_dataset(self, split1, split2): df1 = ( self.dataset[lambda x: x.split == split1] diff --git a/deployment/tft/test/model_predict_test.py b/deployment/tft/test/model_predict_test.py index 5be30b00..d0baa170 100644 --- a/deployment/tft/test/model_predict_test.py +++ b/deployment/tft/test/model_predict_test.py @@ -174,6 +174,7 @@ def prediction_length(): def test_predict(df, metric, prediction_length): df.to_csv("demo.csv") output = predict(metric, prediction_length) + print(output) if output: print("True") assert True diff --git a/deployment/tft/test/preprocess_dataset_test.py b/deployment/tft/test/preprocess_dataset_test.py index 80e36837..96835f44 100644 --- a/deployment/tft/test/preprocess_dataset_test.py +++ b/deployment/tft/test/preprocess_dataset_test.py @@ -138,6 +138,44 @@ def df_12(): return df +@pytest.fixture +def df_13(): + df = pd.DataFrame() + df["time"] = 1 + for i in range(5): + df[f"metric_{i}"] = [random.random() for i in range(1000)] + return df + + +@pytest.fixture +def df_14(): + df = pd.DataFrame() + df["time"] = 10 + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(1000)] + return df + + +@pytest.fixture +def df_15(): + df = pd.DataFrame() + df["time"] = [i * 30 * 1e5 for i in range(500)] + [ + i * 30 * 1e5 + 10000 for i in range(500) + ] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + +@pytest.fixture +def df_16(): + df = pd.DataFrame() + df["time"] = [i for i in range(500)] + [i + 10000 for i in range(500)] + for i in range(5): + df[f"metric_{i}"] = [np.nan for i in range(500)] + [2 for i in range(500)] + return df + + @pytest.fixture def df(request): return request.getfixturevalue(request.param) @@ -164,6 +202,10 @@ class TestDataset: ("df_10", metric), ("df_11", metric), ("df_12", metric), + ("df_13", metric), + ("df_14", metric), + ("df_15", metric), + ("df_16", metric), ], indirect=True, ) -- GitLab From ee371d0d3aebc26628aed4ec92f2a04fb38c537b Mon Sep 17 00:00:00 2001 From: Fotis Paraskevopoulos Date: Tue, 12 Oct 2021 10:23:36 +0300 Subject: [PATCH 13/33] Improving init and shutdown --- .../MorphemicConnection.py | 6 ++-- .../forecasting/eshybrid.py | 32 +++++++++---------- morphemic-forecasting-eshybrid/main.py | 4 +-- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/amq-message-python-library/MorphemicConnection.py b/amq-message-python-library/MorphemicConnection.py index 0994383d..0c15fbf7 100644 --- a/amq-message-python-library/MorphemicConnection.py +++ b/amq-message-python-library/MorphemicConnection.py @@ -12,11 +12,13 @@ class Connection: def __init__(self, username, password, host='localhost', port=61613, - debug=False): + debug=False, + **kwargs): self.username = username self.password = password self.hosts = [(host, port)] - self.conn = stomp.Connection(host_and_ports=self.hosts, auto_content_length=False) + self.conn = stomp.Connection(host_and_ports=self.hosts, auto_content_length=False, + timeout=kwargs.get('timeout',180000),keepalive=kwargs.get('keepalive', True)) if debug: logging.debug("Enabling debug") diff --git a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py index 5b94d393..22569f61 100644 --- a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py +++ b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py @@ -21,7 +21,9 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen config['messaging']['username'], config['messaging']['password'], host=config['messaging']['host'], - port=config['messaging']['port'] + port=config['messaging']['port'], + timeout=6000, + keepalive=True ) self.model = morphemic.model.Model(self) self.application = config['persistence']['application'] @@ -60,10 +62,6 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen self.run() pass - def cleanup(self): - logging.debug("Cleaning Up...") - scheduler=False - pass def signal_handler(self, signum, frame): logging.debug("SIGHUP") @@ -72,7 +70,7 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen def stop(self): logging.debug("Stopping...") self._run = False - self.cleanup() + self.connector.disconnect() def start(self): logging.debug("Starting ESHybrid") @@ -86,6 +84,7 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen self.scheduler.check(self) time.sleep(1) + def on_schedule(self, times): for m in self.metrics: @@ -107,21 +106,20 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen ) # for p in predictions[m['metric']]: - def on_train(self): - self.connector.send_to_topic("training_models", - { - "metrics": self.metrics, - "forecasting_method": self.id, - "timestamp": int(time.time() * 1000) - }) - - def _train_model(self): self.dataset.make() data = self.dataset.getData() self.model.train(self.metrics, data) + def on_train(self): + self.connector.send_to_topic("training_models", + { + "metrics": self.metrics, + "forecasting_method": self.id, + "timestamp": int(time.time() * 1000) + }) + def on_metrics_to_predict(self,res): logging.debug("[2] Metrics to predics %s " % res) @@ -166,14 +164,14 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen horizon= res[messaging.events.StartForecasting.PREDICTION_HORIZON] ) - def on_error(self, headers, body): logging.error("Headers %s",headers) logging.error(" %s",body) def on_disconnected(self): print('disconnected') - self.reconnect() + if self._run: + self.reconnect() def on(self, headers, res): diff --git a/morphemic-forecasting-eshybrid/main.py b/morphemic-forecasting-eshybrid/main.py index a2a9e213..545230ee 100644 --- a/morphemic-forecasting-eshybrid/main.py +++ b/morphemic-forecasting-eshybrid/main.py @@ -15,9 +15,7 @@ def main(): print("Config file %s ", config_file) config = configparser.RawConfigParser() config.read(config_file) - config_dict = dict(config) - - e = eshybrid.ESHybrid(config) + e = eshybrid.ESHybrid(dict(config)) try: e.start() except KeyboardInterrupt: -- GitLab From 95b72196aebefb9000f930d51451c5ab377e934a Mon Sep 17 00:00:00 2001 From: Fotis Paraskevopoulos Date: Tue, 12 Oct 2021 13:06:52 +0300 Subject: [PATCH 14/33] Setting python3.9 as default --- morphemic-forecasting-eshybrid/Dockerfile | 14 ++++++++++---- .../forecasting/eshybrid.py | 14 ++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/morphemic-forecasting-eshybrid/Dockerfile b/morphemic-forecasting-eshybrid/Dockerfile index ed4b71cf..9f595d29 100644 --- a/morphemic-forecasting-eshybrid/Dockerfile +++ b/morphemic-forecasting-eshybrid/Dockerfile @@ -1,11 +1,17 @@ FROM ubuntu:20.04 + +ADD https://bootstrap.pypa.io/get-pip.py /tmp/get-pip.py + RUN apt-get update && apt-get install -y \ - wget \ - python3 \ - python3-pip \ + wget curl \ + software-properties-common \ + && add-apt-repository ppa:deadsnakes/ppa \ + && apt install -y python3.9 python3.9-distutils \ + && python3.9 /tmp/get-pip.py \ && rm -rf /var/lib/apt/lists/* + COPY . /app ADD https://gitlab.ow2.org/melodic/morphemic-preprocessor/-/archive/morphemic-rc1.5/morphemic-preprocessor-morphemic-rc1.5.tar.gz /var/lib/morphemic/ @@ -27,4 +33,4 @@ RUN pip3 install -r requirements.txt \ ENTRYPOINT ["/app/docker-entrypoint.sh"] -CMD ["python3", "main.py"] \ No newline at end of file +CMD ["python3.9", "main.py"] diff --git a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py index 22569f61..bf4084a4 100644 --- a/morphemic-forecasting-eshybrid/forecasting/eshybrid.py +++ b/morphemic-forecasting-eshybrid/forecasting/eshybrid.py @@ -70,7 +70,6 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen def stop(self): logging.debug("Stopping...") self._run = False - self.connector.disconnect() def start(self): logging.debug("Starting ESHybrid") @@ -83,28 +82,31 @@ class ESHybrid(morphemic.handler.ModelHandler,messaging.listener.MorphemicListen if self.scheduler: self.scheduler.check(self) time.sleep(1) + self.connector.disconnect() def on_schedule(self, times): for m in self.metrics: - # predictions = self.model.predict(self.application, m, times) - # if not predictions: - # continue + + predictions = self.model.predict( + self.application, + m, + times + ) for t in times: logging.debug("Sending prediction for time %s(%s) " % (datetime.datetime.fromtimestamp(t), t)) self.connector.send_to_topic( "intermediate_prediction.eshybrid.%s" % m, { - "metricValue": 12.43, + "metricValue": predictions[t], "timestamp": int(time.time()), "probability": 0.98, "confidence_interval": [float(8),float(15)], "predictionTime":t, } ) - # for p in predictions[m['metric']]: def _train_model(self): -- GitLab From 4db3d6d45df45e92184cb04c88d0a06205d7cd30 Mon Sep 17 00:00:00 2001 From: Jean-Didier Totow Date: Thu, 14 Oct 2021 14:40:35 +0300 Subject: [PATCH 15/33] univariate fixes --- .../__pycache__/main.cpython-36.pyc | Bin 13960 -> 14506 bytes forecaster-cnn/app.py | 94 ++++++++++---- forecaster-cnn/main.py | 115 +++++++----------- .../models/AvgResponseTime/saved_model.pb | Bin 0 -> 109898 bytes .../variables/variables.data-00000-of-00001 | Bin 0 -> 1203191 bytes .../AvgResponseTime/variables/variables.index | Bin 0 -> 1719 bytes .../pre_processing/Data_transformation.py | 36 +++++- .../Data_transformation.cpython-36.pyc | Bin 6775 -> 7617 bytes .../__pycache__/preprocessing.cpython-36.pyc | Bin 6283 -> 6278 bytes .../pre_processing/preprocessing.py | 6 +- 10 files changed, 152 insertions(+), 99 deletions(-) create mode 100644 forecaster-cnn/models/AvgResponseTime/saved_model.pb create mode 100644 forecaster-cnn/models/AvgResponseTime/variables/variables.data-00000-of-00001 create mode 100644 forecaster-cnn/models/AvgResponseTime/variables/variables.index diff --git a/forecaster-cnn/__pycache__/main.cpython-36.pyc b/forecaster-cnn/__pycache__/main.cpython-36.pyc index 9ac341bdaa2f0da0a6f49a01ef61205cc338de1a..1f2986d120c235983a12815c1eff77d7ff86873a 100644 GIT binary patch literal 14506 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 uCk=#`dJbI!s` sGPGPjL%jhw2nojw3(dw1Z^djH}lc_t^9}b=l>hzoD7}- literal 13960 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 MC|oXlvT)|V0XTGNssI20 diff --git a/forecaster-cnn/app.py b/forecaster-cnn/app.py index 30d717d2..ab5e8d8c 100644 --- a/forecaster-cnn/app.py +++ b/forecaster-cnn/app.py @@ -1,4 +1,5 @@ -import os, json, time, stomp, pickle, logging +import os, json, time, stomp, pickle, logging +import pandas as pd from os import path from datetime import datetime from threading import Thread @@ -22,7 +23,7 @@ ml_model_path = os.environ.get("ML_MODEL_PATH","./models_trained") prediction_tolerance = os.environ.get("PREDICTION_TOLERANCE","85") forecasting_method_name = os.environ.get("FORECASTING_METHOD_NAME","cnn") #///////////////////////////////////////////////////////////////////////////////// -steps = 128 +steps = int(os.environ.get("BACKWARD_STEPS","64")) #///////////////////////////////////////////////////////////////////////////////// influxdb_hostname = os.environ.get("INFLUXDB_HOSTNAME","147.102.17.76") #persistent_storage_hostname influxdb_port = int(os.environ.get("INFLUXDB_PORT","8086")) @@ -33,7 +34,9 @@ influxdb_org = os.environ.get("INFLUXDB_ORG","morphemic") start_forecasting_queue = os.environ.get("START_FORECASTING","/topic/start_forecasting.cnn") metric_to_predict_queue = os.environ.get("METRIC_TO_PREDICT","/topic/metrics_to_predict") #////////////////////////////////////////////////////////////////////////////////// -_time_column_name = 'time' +_time_column_name = os.environ.get("TIME_COLUMN","time") +_column_to_remove_str = os.environ.get("COLUMNS_TO_REMOVE","ems_time,level,name,application") +_column_to_remove = _column_to_remove_str.split(",") _new_epoch = False #logging @@ -149,6 +152,7 @@ class Forecaster(Thread): self.publisher = publisher self.target = target self.application = application + self.tolerance_epoch_start = 1 self.features_dict = {} self.stop = False super(Forecaster,self).__init__() @@ -159,23 +163,35 @@ class Forecaster(Thread): def setStop(self): self.stop = True + def computeSleepingTime(self): + now = int(time.time()) + return (now - self.epoch_start) // self.prediction_horizon, (now - self.epoch_start) % self.prediction_horizon + def run(self): print("Forecaster started for target metric {0} ".format(self.target)) logging.info("Forecaster started for target metric {0} ".format(self.target)) while True: if int(time.time()) < self.epoch_start: + diff = self.epoch_start - int(time.time()) + print("Prediction starts in {0} sec".format(diff)) time.sleep(1) continue + if int(time.time()) > self.epoch_start + self.tolerance_epoch_start: + n, sleeping_time = self.computeSleepingTime() + print("{0} sec sleeping time before publishing".format(sleeping_time)) + time.sleep(sleeping_time) + self.epoch_start += self.prediction_horizon * n if self.stop: print("Forecaster stops after having receiving new epoch start") logging.info("Forecaster stops after having receiving new epoch start") break self.features = self.manager.getFeatureInput(self.application) if len(self.features) == 0: + print("Cannot proceed, number of feature is 0") time.sleep(self.prediction_horizon) self.epoch_start += self.prediction_horizon continue - predictor = Predictor(self.application, self.target, steps, self.features) + predictor = Predictor(self.application,_time_column_name, _column_to_remove, self.target, steps, self.features) response = predictor.predict() index = 1 for v, prob,interval in response: @@ -229,8 +245,29 @@ class ForecastingManager(): else: return None + def loadDataset(self, url_dataset): + try: + #return pd.read_csv(url_dataset, low_memory=False, on_bad_lines='skip') + return pd.read_csv(url_dataset, low_memory=False) + except Exception as e: + print("Could not load the dataset") + print(e) + return pd.DataFrame() + def getFeatureInput(self, application): - return [{'time':1602538628,'served_request':2110,'request_rate':426,'avgResponseTime':673.574009325832,'performance':0.626508734240462,'cpu_usage':31.6,'memory':71798784}] + #update dataset and return the last entry + response = self.prepareDataset(application) + if 'url' in response: + print("Dataset updated ...") + logging.info("Dataset updated ...") + data = self.loadDataset(response['url']) + return [data.to_dict('records')[len(data)-1]] #returning the last entry + print("Could not update datasets") + return [] + #test_url = "/home/jean-didier/Projects/morphemic-preprocessor/forecaster-cnn/datasets/historicValues.csv" + #data = self.loadDataset(test_url) + #return [data.to_dict('records')[len(data)-1]] #returning the last entry + def getModelFromMetric(self, metric): for key, model in self.applications.items(): @@ -241,11 +278,6 @@ class ForecastingManager(): def startForecasting(self, data): print("Start forecasting methods") logging.info("Start forecasting methods") - _json = None - metrics = None - epoch_start = None - number_of_forward_forecasting = None - prediction_horizon = None _json = json.loads(data) metrics = _json['metrics'] @@ -261,18 +293,21 @@ class ForecastingManager(): model.setPredictionHorizon(prediction_horizon) model.setEpochStart(epoch_start) self.trainModel(model) - - def simulateForcasting(self): - data = {"metrics":["avgResponseTime","memory"],"timestamp":1623242615043,"epoch_start":1623242815041,"number_of_forward_predictions":8,"prediction_horizon":30} + #data = {"metrics":["avgResponseTime","memory"],"timestamp":1623242615043,"epoch_start":1623242815041,"number_of_forward_predictions":8,"prediction_horizon":30} + data = {"metrics":["AvgResponseTime"],"timestamp":int(time.time())+20,"epoch_start":int(time.time())+20,"number_of_forward_predictions":8,"prediction_horizon":30} self.startForecasting(json.dumps(data)) def simulateMetricToPredict(self): + data = [ + {"refersTo": "default_application", "level":1, "metric": "AvgResponseTime", "publish_rate":3000} + ] + """ data = [ {"refersTo": "default_application", "level":1, "metric": "avgResponseTime", "publish_rate":3000}, {"refersTo": "default_application", "level":1, "metric": "memory", "publish_rate":3000} - ] + ]""" self.metricToPredict(json.dumps(data)) def metricToPredict(self, data): @@ -343,15 +378,23 @@ class ForecastingManager(): application = model.getApplication() response = self.prepareDataset(application) if not 'url' in response: - print("Cannot create dataset") - logging.info("Cannot create dataset") + print("Cannot create dataset, not data available") + logging.info("Cannot create dataset, not data available") return None + #test_url = "/home/jean-didier/Projects/morphemic-preprocessor/forecaster-cnn/datasets/historicValues.csv" model.setDatasetUrl(response['url']) - #model.setDatasetUrl("/home/jean-didier/Projects/morphemic/Morphemic_TimeSeries/datasets/ds.csv") - model.setDatasetCreationTime(time.time()) + #model.setDatasetUrl(test_url) + data = self.loadDataset(response['url']) + #data = self.loadDataset(test_url) + if len(data) <= steps: + print("Not enough data to train the model, the CNN requires at least {0} samples, the dataset has {1} rows".format(steps, len(data))) + logging.info("Not enough data to train the model, the CNN requires at least {0} samples, the dataset has {1} rows".format(steps, len(data))) + return False + #model.setDatasetUrl(test_url) + #model.setDatasetCreationTime(time.time()) #start training ml (application, url, metrics) metric = model.getMetric() - trainer = Train(application, metric, _time_column_name, model.getDatasetUrl(), model.getNumberOfForwardPredictions(), steps, model.getPredictionHorizon()) + trainer = Train(application, metric, _time_column_name, _column_to_remove, model.getDatasetUrl(), model.getNumberOfForwardPredictions(), steps, model.getPredictionHorizon()) model.setMLModelStatus('started') result = trainer.prepareTraining() if len(result) > 0: @@ -367,16 +410,19 @@ class ForecastingManager(): worker = Forecaster(self, model.getPredictionHorizon(), model.getEpochStart(), self.publisher, model.getMetric(), model.getApplication()) worker.start() self.workers.append(worker) + else: + model.setMLModelStatus('NotExist') def publishTrainingCompleted(self, model): data = model.getTrainingData() for tr in data: del tr['x_train'] del tr['y_train'] - message = {"metrics": ["cpu_usage"], "forecasting_method":"cnn","timestamp": int(time.time())} - #print(data) - self.publisher.setParameters(message, "training_models") - self.publisher.send() + message = {"metrics": [tr['target']], "forecasting_method":"cnn","timestamp": int(time.time())} + print("Training information -> ", message) + logging.info(message) + self.publisher.setParameters(message, "training_models") + self.publisher.send() def predict(self,application,model, target, features): predictor = Predictor(application, target, steps, features) @@ -405,7 +451,7 @@ class ForecastingManager(): #self.simulateMetricToPredict() #time.sleep(10) #self.simulateForcasting() - #time.sleep(100) + #time.sleep(2) #self.simulateForcasting() while True: for key, model in self.applications.items(): diff --git a/forecaster-cnn/main.py b/forecaster-cnn/main.py index 854d4191..75dfcf84 100755 --- a/forecaster-cnn/main.py +++ b/forecaster-cnn/main.py @@ -1,14 +1,15 @@ from pre_processing.preprocessing import load_data, percent_missing, datetime_conversion from pre_processing.preprocessing import important_data, resample, resample_median, missing_data_handling, resample_quantile from pre_processing.Data_transformation import reshape_data_single_lag, series_to_supervised, \ - prediction_and_score_for_CNN + prediction_and_score_for_CNN, missing_values_imputer from models.ML_models import LSTM_model, CNN_model, CNN_model_multi_steps from plots.plots import plot_train_test_loss from pre_processing.Data_transformation import predictions_and_scores, Min_max_scal, Min_max_scal_inverse -from pre_processing.Data_transformation import split_sequences, split_sequences_multi_steps, prediction_interval +from pre_processing.Data_transformation import split_sequences, split_sequences_multi_steps, prediction_interval, split_sequences_univariate #import matplotlib.pyplot as plt import pandas as pd import numpy as np +from numpy import hstack import os, time, pickle, json, psutil from os import path from tensorflow import keras @@ -19,65 +20,20 @@ ml_model_path = os.environ.get("ML_MODEL_PATH","./models_trained") ml_model = os.environ.get("ML_MODEL_PATH","./models") #/////////////////////////////////////////////////////////////////////////////// -#metrics = ['performance','request_rate', 'cpu_usage', 'memory','served_request'] -""" -metrics = ['cpu_usage', 'memory', 'request_rate',] - -data = load_data() - -data = data.round(decimals=2) - -data = missing_data_handling(data, rolling_mean=True) - -percent_missing(data) - -data = datetime_conversion(data, 'time') -print(data) -data = important_data(data, metrics) -print(data) -data = resample(data) -print(data) -data = Min_max_scal(data) -print(data) -#data = series_to_supervised(data, 24, 1) -#print(data) -X_train, y_train, X_test,y_test = split_sequences(data, n_steps=3) -print(X_train.shape) -print(X_test.shape) -print(y_train.shape) -print(y_test.shape) -# summarize the data -#for i in range(len(X_train)): -# print(X_train[i], y_train[i]) - -train_X, train_y, test_X, test_y, val_X, val_y = reshape_data_single_lag(data, 0.6, 0.2, 0.2 ) - -model = LSTM_model(train_X, train_y, test_X, test_y) - -model.summary() - -plot_train_test_loss(model) - -predictions_and_scores(model, test_X, test_y) - -model = CNN_model(n_steps=3, n_features=2, X=X_train, y=y_train, val_x=X_test, val_y=y_test) -plot_train_test_loss(model) -prediction_and_score_for_CNN(n_steps = 3,n_features=2, x_input=X_test, model=model,test_y=y_test) -model.summary() -""" - class Predictor(): - def __init__(self, application, target, steps, features): + def __init__(self, application, _time_column, _column_to_remove, target, steps, features): self.application = application self.target = target self.steps = steps + self.time_column = _time_column + self.column_to_remove = _column_to_remove self.feature_dict = features self.applications_model = None self.loadModel() def loadDataset(self, url): try: - return pd.read_csv(url, low_memory=False, error_bad_lines=False) + return missing_values_imputer(pd.read_csv(url, low_memory=False)) except Exception as e: print("Could not load the dataset") print(e) @@ -103,11 +59,11 @@ class Predictor(): #data preparation data = self.loadDataset(model_metadata["dataset_url"]) #if data.empty: - # return {'status': False, 'message': 'dataset empty', 'data': None} - for _dict in self.feature_dict: - data = data.append(_dict, ignore_index=True) + #return {'status': False, 'message': 'dataset empty', 'data': None} + #for _dict in self.feature_dict: + # data = data.append(_dict, ignore_index=True) #data['memory'] = data['memory']/1000000 - data = data.drop(columns=[self.target, 'time']) + data = data.drop(columns=[self.time_column]) #data = data.round(decimals=2) #data = missing_data_handling(data, rolling_mean=True) #percent_missing(data) @@ -115,12 +71,17 @@ class Predictor(): #important_features.remove(self.target) #data = important_data(data, important_features) important_feature = list(self.feature_dict[0].keys()) - important_feature.remove(self.target) - important_feature.remove('time') + #important_feature.remove(self.target) + important_feature.remove(self.time_column) + for col in self.column_to_remove: + if col in important_feature: + important_feature.remove(col) + + data = important_data(data, important_feature) #print(important_feature) - #data, scaler = Min_max_scal(data) + data, scaler = Min_max_scal(data) #print(data) - data = data.values + #data = data.values new_sample = data[-self.steps:] #new_sample = np.array(self.feature_dict) new_sample = new_sample.reshape((1, self.steps, len(important_feature))) @@ -131,7 +92,7 @@ class Predictor(): predictor = keras.models.load_model(path) #[lower_bound, y_predict, upper_bound] = prediction_interval(predictor, x_train, y_train, new_sample, alpha=0.05) y_predict = predictor.predict(new_sample, verbose=0) - + y_predict = Min_max_scal_inverse(scaler, y_predict) y_predict = y_predict[0].astype('float') returned_data = [] for v in y_predict: @@ -161,7 +122,7 @@ class MorphemicModel(): self.features = None self.steps = None self.epoch_start = None - self.number_of_forward_predictions = None + self.number_of_forward_predictions = 8 def getLowestPredictionProbability(self): return self.lowest_prediction_probability @@ -261,11 +222,12 @@ class Model(): self.dataset_characteristics = properties class Train(): - def __init__(self, application, metric, _time_column_name, url_dataset, number_of_forward_forecasting, steps, prediction_horizon): + def __init__(self, application, metric, _time_column_name, _column_to_remove, url_dataset, number_of_forward_forecasting, steps, prediction_horizon): self.application = application self.metric = metric self.features = None self.time_column_name = _time_column_name + self.column_to_remove = _column_to_remove self.applications_model = {} self.url_dataset = url_dataset self.number_of_foreward_forecating = number_of_forward_forecasting @@ -287,7 +249,7 @@ class Train(): def loadDataset(self): try: - return pd.read_csv(self.url_dataset, low_memory=False, error_bad_lines=False) + return missing_values_imputer(pd.read_csv(self.url_dataset, low_memory=False)) except Exception as e: print("Could not load the dataset") print(e) @@ -315,6 +277,7 @@ class Train(): model.setUrlDataset(self.url_dataset) key = None if not response["status"]: + print(response['message']) model.setStatus("Failed") else: key = self.makeKey(self.application, self.metric) @@ -331,8 +294,10 @@ class Train(): def train(self, target): print("Target metric = {0}".format(target)) - print("Sampling rate : {0}".format(self.prediction_horizon)) + print("Sampling rate : {0} Seconde".format(self.prediction_horizon)) data = self.loadDataset() + if len(str(data[self.time_column_name][0])) == 19: + data[self.time_column_name] = data[self.time_column_name]/1000000000 #data['memory'] = data['memory']/1000000 if len(data) == 0: return {"status": False, "message": "An error occured while loading the dataset", "data": None} @@ -341,28 +306,38 @@ class Train(): if not target in self.features: return {"status": False, "message": "target not in features list", "data": None} + data[target+"_target"] = data[target] #we duplicate the targeted column if not self.time_column_name in self.features: return {"status": False, "message": "time field ({0}) not found in dataset".format(self.time_column_name), "data": None} if not self.metric in self.features: - return {"status": False, "message": "Metric field ({0}) not found in dataset".format(metric), "data": None} + return {"status": False, "message": "Metric field ({0}) not found in dataset".format(self.metric), "data": None} - self.features.remove(target) - self.features.append(target) + #self.features.remove(target) + self.features.append(target+"_target") self.features.remove(self.time_column_name) + for col in self.column_to_remove: + if col in self.features: + self.features.remove(col) ########### _start = time.time() data = data.round(decimals=2) data = missing_data_handling(data, rolling_mean=True) - percent_missing(data) + missing_data = percent_missing(data) + print("---Missing resume---") + print(missing_data) + print("---End resume---") data = datetime_conversion(data, self.time_column_name) data = important_data(data, self.features) sampling_rate = '{0}S'.format(self.prediction_horizon) - data = resample_quantile(data, sampling_rate) - print(data) + data = resample(data, sampling_rate) + if len(data) * 0.33 < self.steps: + return {"status": False, "message": "No enough data after sampling", "data": None} #this will be removed data, scaler = Min_max_scal(data) + data = data[~np.isnan(data).any(axis=1)] #X_train, y_train, X_test,y_test = split_sequences(data, n_steps=steps) + #X_train, y_train, X_test,y_test = split_sequences_univariate(data, n_steps=self.number_of_foreward_forecating) X_train, y_train, X_test,y_test = split_sequences_multi_steps(data, n_steps_in=self.steps, n_steps_out=self.number_of_foreward_forecating) model = CNN_model_multi_steps(n_steps=self.steps, n_features=len(self.features)-1, X=X_train, y=y_train, val_x=X_test, val_y=y_test, n_steps_out=self.number_of_foreward_forecating) prediction_and_score_for_CNN(n_steps = self.steps,n_features=len(self.features)-1, x_input=X_test, model=model,test_y=y_test) diff --git a/forecaster-cnn/models/AvgResponseTime/saved_model.pb b/forecaster-cnn/models/AvgResponseTime/saved_model.pb new file mode 100644 index 0000000000000000000000000000000000000000..05529a4e758f905419178495bab1f837dba69bfa GIT binary patch literal 109898 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 z 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

*XjPt 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¨&p|H&jxQ-*}-qRNx8Uf`!81-C#IgKtFRj%Ueq`;=)=l3&g^`(0r| zq$9C{pD|U;p8TgVeqpY-9U&vW9w;@{ z0?C@SxG7#6#yv_P6PoLpZ$_d-ySJ0-G7Is{HF4qg|9m-a*DuWPuOa$}#$(cYbu3q5 zNWvXO;d6fn#?N#X){UA;_x$=zQa=yjjh%yJTgEj`=Zqn~UL-CIKk}NWxb<+c-T&~i z^lVl)DVON(+Cr_B4aqr;$(XbJ614iR!7wRX?(tIonI@JF4aT~7D*(gjm^x>Kp%hNqK+sR$YDeyjL z9KBj!NG)T!P`o=)kSS8YN%J$rbR{ErXLglM(Q=22{JiOvS`Bm6TZOwv;$Ybe1tPa= zJlkTMP5NF=gKn`T5)to24l#eo-#16#bc-rp|7V7C`j5h4od{;}q~D~hRscV`CxN`{ zJEmk%1f)ZhaaF}l$hb5CYz2?NdG!v|&*XD@N_-ZwiqGk7-ohERcw_HJ3DlmRi@J;} zpEG*Ev#%my89$RrdoqR&A8-K?dj;}5(SW^cTTT)#XTolsbj#Kc;3D#puvK7Bq(Zpz>k_ zW27)h#tpARzvB(`_?DAYZ|^K<=lR?oxAxN|Ua!dRpL1~bDJ7WMuYx(n?pXb>h?$|f zniOA9r_lv3sfEWUYEv@@7P>p)`q1f6a5e_t+DKn$l4-y-xW#hUZaIuRh4jAlM(jSEC)lQ zGbG5@ovN(7NIGXLW7FgH%+s42$t^xdBN`J1&p(^P;W69Lg=f!;C~d=^tz}GedL|xS zVF7EBMR5P)->CU#Jh+^2r>jbyF#47&!2ioJfChK2EKXPWT|W&k4YPDf`5eY8@icZx zJR&|JE4AN83`r>2uK}unO`j`tYf?BFuZwzt0smqkZ!; zo)Pv2JevREulONyX;Ls<<77<~-@B5>-|DzhzRLPcc#GYzo{}QJU1aR^61=@Rtn%Qe zV0`!KJiVNMj6Ue#J?4Kbz`eeMWLw5uxEu}QNvCL4g&k~2C}loM z>}0kM9f$tca`ZroINUT$phq(%!ne+F#-MKugkycBz1V6rYbYkFdwem~>^pNXYYP1X zl5jnJJ86x&K;D1nxdf-);^*mUtVQc?8uVuuPAu?;*N+>}vhpTce2k%sRK7v}V*y-| zX2|nVFNxltN4)1|6}3yWCvLa)<6yoq4rFzdA0;~tYo+-kF)5b ztxgJ#@;NdcLagV>2nU2^IA-=evSivaEFa?Y<9owk+}0g9IhAM2Z^$82_jE(SX$RC* zV{o2B0DP3GCN(v7#Qr!-7w#R88>tolUUAH5F)sB)DRJX} zSGF6!GDh92xH6@x%C6})+~?d=O!dZStXDP#nV(tYc+^;~HlPb8&L0nsl%}|86cV);f$^ zkJ+N^cNKDN`g8K_+zp7V_rm@guLOQnfg2p-i;-EHB>CY{=C8^OJbm>vMh-;MCnpw}abt6fz}sJpG_9cYp$i|#8n6SQVE_yyp5?ZMS>tm%BX0X$ zJv5lsOXcI{fc#Zs2(90U=Iyq)ajY^C4o(4wjVJN#kR+~p?g)Cj>zVGwRrF}DD*Vc@ zVP`kePj>`IeZRzQJNZlYMKUL_g)}Migvi`jy9fK$h)RN!v?471Tnm+!h_*5H@?V^id*4f+Ce^D$+jZnePObWwKz3Ay5l7hLS zqoFV1TV=196Ui?>%^cakn!Z2>w5uv7>CXyLr`nQy-un*Zx1Xmn-P!cWk7hdh+7end zDFNfXr()NZd!*mdhQt^h0+EglBsB0Ddog($8k(IVij$WkIX#}tFq(}Ouf@@=R}O{s zD=R;`dXYtavSj?aO6s=fAv?)I0{`^9Bg&@nY_;+(Fgc*Zt?*HXh0{Kf16pZRkKK)u zV|?kHo>k=b-!!tVEe_ktv*~Wr5=P-t3N(*XAhI*bhr+2OY(_;R^dQa0gBksiP&kQsDZ3DyTf$4Uc%JK&$B$ zs%GMfVzE}#OVdWUx3GtZoD$`7I+R$|rpv)6*`+|h8#TaR13a5>s8E}~;I?$Muf ziZFOaA@4y{5x$=)4Zm-dFxi!ScRBSZ>1lrlRVM_nln-U~)@Wg9;|=UsHxpbh>!4Zb zb<#aio1JZLjsI$#nP4>sD7y5Eh$!n&OJ{EgkLn`L_X`Ebz1jplo~IzA^ejCWy&cuw zPKMlDJip=;?|Zm>lDNOoVd^T3;^+mRKI8QWE2Eox)1oDSZ+zeVC7)v)w_@ zcodngRzWk2Ho^LL-QYwYME_)#GEYFBzBl8u01inNYbWx&s5oCT$Y=0QZt!7` zN{th`>5s*}h8ZNx0_A(xLB)pm!b|X3PITr%D{IKAP7^Ib| z^6UzppT<3;Wfd~uQuBiBzi^TMy)%QJ515M+>+Vu!yFB@PezZV;vMv7|>5s`KvS8Rb zp7V_6yFt?L=-h8{WVFU{Y&CJ?nOb4OS*vH!qPQSjtZ525Qt#OY=g|;Y7KOU?t5GA) z97`MYp|rdKyJz$B@Zl4nw8;u}d*e`~_y*$#DYbkSuw&xzyv-FKHPK-!;xDW8wR zI*()YvD7)z#=ljP+y=>Z@8xiLw>!*kZX|Dfl;HH`8PqOj3|yF*2WkqZs9~Tl7M!<& zTk--F1hmi&h3QDE<(5d5e6t; zgRiq^q2%R@BxYwD2{D@jZ!aH1u|nOd7oqWVL(pnisJfT<==*V(6&Ow;EeOupzGpPV zH(=nzJ0uuC5$h?lL6gs{2Y$Uo0HzUM|%;e+)fm zo+J-8Ho!*h={&z?7Spe&gsN|6vgv6fRH0`YM12*b>3t&H>Z0*no1Z(*{nbR>1j}&E z2}y3Z_<6Xi$-$XuMQ*xzgy2B*U%Ikbjr&oY%()M|Bf{$}6+Lm5jx?BnK9flA-7 z)2k>yUWfQ?KF^u*`Idu^rcxDGp1EL=1Bc9I$jDJYY!FMukXf2`|LV$dneZ3MvMq!8 z%QfLzLjn;`aln`D{4RS}iy(LVcTzV?92=8@p?;|jy)|$Q)N`ic+y!2^y+s3dMm=D! zu6;=-eoTPw0|e`NPQ&)q<8fy0HDY)>j%Fqo6Q^8V&g0-OEU53Jjn8)Sx%N21`AuhY zR3n)F#fCWL-5XM;e3=|>HO5T#5Y5=1fG6{d$hpohw0P82VwbR;lag{KALKQdxs%OF z#Qdw3A08Qi>@+)?M+6+SKV{$TilhHFKOrZ6>0*TAM40KKglhwjQs(Cq(sn+cNxJKb z>)R}dx^o2F7L0;g!|(9<-5us>{dNpZFJ$(G-KT-)mr?KRWcdE=EWPLJ3(dBsbZOC* z%C4^pY{Jb6==DyGo0~X^+bkbWd)mC%rl~XOr9GQz;<|ju3-~~SGOmL~n+e+6_YebT zN3uZiB3XEDHJl&&21BM7g2A3vbhj%Zc5|i+RlStqc3By_YoZa)%u&RPXJt5%n-|F3 z=kx7uj@5*HO;6yzMr~pvvXnF~m4&x@>rv$Ka+L0QL@L~>$!^;yGWn+zh@Y5%w_Z21 z7x%40do2On@o>hLo&l<1qzj){@p<`=@h~n+fbRk?(x>fw2kQ78{!H7Ak22!0)>cBe zV_g%^IR8!9_S@vnc@y*$%Y?hRUij8LlKxb@$d3EA6jww9fpNhTHf%=*|J#aVHgfq? zMxvWe4G$-sef*nbzdCc=%mtqoY{t@>6mIjV1hn{(3m&I#3-XHPpsUms3YW}>Z^q-O zTKXZTYMnRC-x)@(DDfQOr|Fp8IvNN54zcTU-%W&Yk0v|hWXR}aZTNX(G#9$f9BQ{Yqfa!?{zOl}N+Je#C zhbzj$tJWNL-9AUE7ft2D{QiSAN+~qn@;&Vu{>u364Pk@-in2Z`zuA@w7d%@~jSrhT z1VbLSpd4_Y%6jO-n>0SsNP}^ zJl}JHtW+As2)2bo=H_Bp^Ii@I?(^<9x0z(CrUF+rNs4v`f55`g+T5!z*I?aLClWB! z3JrQ5ST;va*j&^|R=k~rkrv_jq|XvebZyAI+f%unuJ*!`kr)invS4o~9pk#rnL*R+ zC15xqg|hFyQ}Kc0SiH&;ie$Rj=l=0jO1+27OAf&ozp6muS17q|f14JRD{}u)z0v@wi2d&OaymUL2<7A*xPPLWT&%tb(kbc~MK<7_q%-9H_gF^qiVXMGA`F(s?W0M5{V>F= z2sSEM6RROP{QPx13gR7b)8_45QO{Kz4EF@_R2vxln+it9PQoOqJA$z7j>wLfgWc{{ za;@DQALWdK4b@e2X8&mXA$g8gm+)TF-W{m-{4G`Yeo80KHG}Z+Qn>8*Mr_>}OGGP* zac|omHudExI+!F5M;lei`qMW#@LtLVZkHBr3B5zGpFfY6Y#=Rn&akHL^C07eDoz@l z3jsV6WX3&HTxX|;O+AyVILO5Zr`)+E#D$`X68L{_#?Oi^aOP_Y-RogSmP)Ol>Hlt3 z4)S+ulClVKKe7x&_c+1g$QXYu8b5j|0r-|IXS65JN@DTl(;KuoLA7D+@Fj*pYh#5c1h4cJc z1A;ThN%Y!gdUu=?Ik_j0JdxvpbF9uEg0B1|3Y4DNpP<=>DAXmJJHMzsVJvle- zSHxFt> zUQ!2@4WW?pG!5NU%E%Y(LvX<98ZF+H%*suQM1hhL-%+>5V`(y|v%0QwfF351^QWLh z0+O}+Dp0ND54-o}F)ZHuh8_){2r8v7$S*AcK8;-iGcQl$B6yBcM}!BYNX~;MD+%KF zIsj!~`P1_qugMhNHTHTY$6IT4Q#2j5*wv0;M=t^FwpW-kR`GOLA|yy`mS@%!@W=Qfai z&iaCByVdaUHXU9=dJ1z!KY`v3X>RynKI7WTGsB(LP-KZIG;Cj~%C$D$rI{9U_-|}ctRPdlkR?KHZR;S)&r9a! z`ws!D;!4GK&E$d&&v4y|8G_*hxq`k%KYZ7Fi1cMtVNHi8-U<^H4mvtRE{~eMd+|B> zIMhx1^J75W%$9^TjKP2t`t(&~G`BOlmRvuRixC1@82eS0YF|vj3Cs`LLadne;U8&& ztv!C!S;*XO`NL#eX<=XUTUJqZx=`JZ6|yiYpMkB~#Fcz$inUru7{b=Z|ygUa~=I9NPYs5#XT`^QIPS)3_qT^uGN-LjnQ z6AjGJj-g*>%YpQPePsKG26Bn5t{Am$3CS5g#pD)m!c{?A8QY0!a5#7j&f@c!Ck^VE z{c~fP|5i^!{ic%wEj3NDYN{_@X?Md#PR`g|_8KCjy>XiV5{&m+f;T4Bk$vY!qn5Ka z&OV*&K5t$`1--N36~9Zge;7$u{$oJ<7k@5t*+fBBfWzBg!r#1O zSbEo#?^mwG-Kt+e+ckkWe4T{T`_ggPDwPID9HB~&C@#~TLZp`|^11n=ptb!jEctsC z14NF|H}<+9ar_?>6*M1DJypa{hm;7@A%joeMpLti;cRVXJ1v>41GeFlFeSqfl?~0n zR_iyNTNlIJpHzj0T`J%rCx(qfQOw62OD=F$9DXwH#WMc?B<V;7`-JcC@viKoRh6*6=rEYOL{+YwS!&lCF9L0kq8LZ_9@_d^8SVc0 zLft+S4E5|{5@$?jp2qAYixupt@Qxgvx-y8;lfy)l=U!g*^@P)R@1SDiN)mi`hz6zo zB`e1*#4&o8uthqLNUEQuvZ3;@VX%uNKNt_z#%b(|ZHef(Nt78^JRi0FMX>6f4N8Z6 zWSebg&|~5gpm9wC*&t$z7R`3xU(JwXiq0@O`!@aW%Qlj?I~n_?CqP@^I9e*Y4DZW2 zvd8o{flGfZ9JUuHFMiylLoaOL7a5{c_Y!Qp^@`5Eq)fx>X7CN)EcUy#K}GgG2{2Zg zg+FH5A!`*(^l~<#3*QyW-*Aq19fZ;6cYW~p+DYi}-r2^6)#L2vv|(eQ}rZlV&`_m{H@Y zf6)cBdHG$S;8)CdceNqk@Fe)(i6gI^)WB*Q12uapnW|DVv>iAH9z*l6Cc36FaYhjt zy8DNTT6qZl<;>ybaYf7(C_uyJO?bjJ5DHIdkdQwN?oPc(*Ui|0VM``)do1tZ&9WZ$ z-lZ0r|9OxsA2k^_pC1RRO`qAI>4(A1-4c4vZMIQ-v>sJNOt616-`n))#Fgenw6^gq zG)Yf}PpiwQ`A{u^rkxx)cC+%If*CDpw1-cochO2a2R3=;)6Y7OnYo+7Ag4VOP8ten z+WiNFohZs}@NkB=dtG6kB5?c7Rzudd8NzISAMNaFPAxC?g4b>@VW<32 zu&k^go3^FWoi}#~^7hLEr;m{U8ot07l^?S-iE1)^yUQWlMue0$%aexd^Ud{99^Sp+PNtrRg`x3c69tjNQ228?5z{sZYBVzB#N3Zrdkf z4SfLCe7%O@1>~~vU^YGKd5_YApEz{47zw`cgxQubX9;pC+3Jav+@NknRbF(_bmuQM`q$Y%}Day zbR}mXxfDK)pM}qvJmR{io6%MYhu3@;>_No|?y^S@RrM2c=XC0+dIlp*(W)ZNW~!h} z8fd$7H1%F;$}PKJOdnd@qsKy6`eEH8=;)RqriJV21hH^BQ9XkM>{w3EOj5^yD-TKe z=>&YB)kj8OpHuOMcfebv&tlQYgY8IG!`70CjO>5ciBHK`GBo}b+&FB{HW?RC3u|3^ za=~Vz9rJ?U>Ab|Dacd|O(oZwSh{HsSSHxmz2CZ3C0N-Y*!HtnCjHB$L${8-x;X->F zY4+i{Nc(|%b3qx-vh%1?m;}g~9_JalCS3RKPxSU08N9lR@0|2hz`O4jv~ge~2=^ti zZ(=q;`h`X4c}5hI*k?4e$_;+}u7cjhL$(pq0KRgIaP7l?q%>Rz-$WnMtio2-b#f`m zx;z=Z0~*PNvmsF1>PSyLy^PtW2hooA&3_YVCKZlec5Njqxi==q$i%6N+_Eit{M*Hb z+RoC1@NuuO-1sUNpK2x);j_Co@%*<~{b%wruLHCqd2eO%efrIY(s-R97}WR0?ZV5f z!o_9ysLlg5x4b8nzk6BN%bMJe-7c`j@-1sQ#SX_8pM|o|i4e5D7-O}s(sf1&B&Pi^ zR;qF2*AZ1%%I_9~rn#VN^C9rm;WJ6^)W9dp0)9qmvCDHhh)7Ki4nON>ueYDz(!!ci zL&^Xz-g!-W-@c}cwz+cH7{;CYH4Yk%ZXruz+v$4O|48tJFfhE9%*n)-aHX3};oPX) zO6S6-jML5#kX-STEcAN`!fmeTb~{O!KOjer8h^&a$s*jNW5t;EIh-m_SWm=$JtXY@ z3U+O+JO;dW;+$CV&S*iTiVHlGaue1DWx%or zd02XWjxbkiFJ+i}bXD9*eBC-1joyA?Lc^oTG7!@L)<2|=os=ML#Rv9cr7nq3_W-$3 zUq}UW09$?IaA3VYraveFQ8te*Y^x%UCk_gOhxk6>r*Q7}!l%@2t{jLpS-_mJ8Q6J) zpEE??|4d2U$V!cRY~MV=pEVyIT9G9vW zch16|hlki)g$i1-Z4MH!!v3FbBtQx=1QXH7J`W0K&qOhGORli41sk-Z(NmXC!`tqr zlcuZVjeYCMu1+Nw8t;!8N7iASzBHSmERJ3#3($#Y{;c5{z(p%0vEEh=z84&!--D8g zvtlT`E7ynCv77Lg;an_M-a~zZ3dq?PVc7D7z<=@isBUcmTulJZJolY(erbkBj*ALS zlIOrfo|FGiH(2;@&POtD-fnX7OC))@Hx)&Pi?HfqFZvfu1Dn^*`se;!QGsx85A@=6mUD&vw2DttT=4*f`oI-07uks%| zN4N|b*BFu+F+iqvB=QbV0$CBZaNdSg%Ba5~Cp>n+?&=h}z2qJ#b5dZ>GY^^j$Fu0L zQv~k&WI~O0M{RKX4PZWac=l=v|pn}qZ7}CbcYfR%jIHEwdprf9gQw zE?J=|-``#Qq6}J2@iW+YyU@gHCdnVzh>=TfP~Y^*a)-D8h> zPaUyu)M8XScMqQ(xy5~I4Hs-%e-dPsO~CP!9t7xp2jAqm@Pdn{k8JrH%!u!m zTde_mM{RC}LnEquj$-hGIajY$xx(xnAx*p6jTd!aPG@`CcUqQNdI!h{q34m z?|=zy)!cxQjy-lHD4IZ9BUR`=j0Kkjs9rfp-@fy~3BI4fxUUV@eo|(xhvX0`WgS>O z`VTqhF9xqpg@Db@iO{Qhi-bkC)3+W8WXy+CDB@Ma%02x}gWDIeBVPOYE<`o0G<-&V zPWpm#z!8}BUIIO=O(8v`obG$H0IvE<{=5L2+buH8jbf8nJKI4or zet56Gh>Y_c7Nqfejy1PqS-l^T7;h+vNgAz;cHfiAkce84S=T}gGK#6uM&2dWtBk5| zra-<>3d1FI;cW5+qM))x z)uZ@5usIiLZw+<@5BW~$L$JGorJb1w@^i3h% zB}e&egEgI2tHf<_<9(p6<6)6XK9r03l8sBoBIl_I3$`+}Z-Ed#dL3s2eOS_~;e%&S zN%M@4oy@KWb7`gr;7=7P`0!mo=I{6l$Fs~)b5|Ia>OCPt%S@=7t{GN62&97}(L#7x z1gkH$<9E`FP#O+Zcf+ZQS+k&0Z7SDMrvafv6mvy8$P=Tztmt7KU>y}e**6W{*9GDq zBR%XAO`%XQlZ(7%28EM4;n{2k#eO^BpXWieeeW%h4m`x!TaBgvqv$;Rf%@J!PD02G znHeqFA>y9rQX-K=8KG24lvJWkM)ph;LW7E?qQX7TrGaQGDlK27rG@s;@BaP(ua_71 z-gC}#KA-p7$6^J4{Mtyae7!ytN}eRHdAB*~fJs=o+ll#SV@(_9{e;0|bMQj%Oel}8 z=N{=+*_~yIn5RLF^mSV*y(v)yQ?EDDB(@rkubjil`OLt%;w#96$%OhRs`Bc=ajf#t z1rm4Q4_w`S2*>%^z}d&P#Bk+?Misque$2yex-s1kwVnw-w@%1DZnnc{%M_urDFfH` z=Yr;#SoA9$X*cWWtkNm6?e26Oqe#>erl*uZf!`gWyy4MSrhBtDdXT%|CY7zYzb^*lF zLeOc%8=9K!09|XR;VSc3=EQr!E6_cTH9yW_(m)))=E5DgUo;=4-!R6heLt|Boz?h! zLMed!9Mm3=!%b5raw;EuF9)xk5@3B#0&iMjCq9W+yA>MBE~l2A+nJ%ytMEro zHgzyFMVryBSk;c?j`Km780aXhZDT;%Uf|N=B4p zV{;QE-6;g$0D(&oqsnV4bkRerY|!6al3s3&C%(D0&}^QJbwMA^VS{$D)*D4 z&J4);&x4Z&=J>`@9@c30HvFFEi|VtEk(dnt)y+Fm52k~Rq!q-Ea>0+6cW{#?zT|q< ze%FWAEJvYK23HjC;wypUQy11l7QOmG>{qMNo!l7Kz_^Z=P&xn^xBrnPzRR%iL^zg9 zr7eB*6CfPAYj?(e~k#pIrFA zFfdwlg~VG{(WRpEh`*^LQ9(8MHe^OdyPjtf{axXN<#{gXkUL#lcNsgDi9_7FF1prt z2A;9miaRaxsI)Mb=)g;K_oH6Yu-YDsl|B-K(Ghr8*#&j2#uFKNGZ1m?B3ibpxGYy4 z{6n_l`0b7Kir^;{y(I>}x@ysEb~frB(7_B-5u%oCg$~mvHf+CV4o6e(5vSLFIQ8TO zIw19edM?t0h0YD+b%DT`QPP7iNd;v2h#4SxYXdBMA%-b-J@uha@6-QW_26=IHuWDZ zk1l?~eoxerhL<-Z(!uxLC!sK z#Gem-5$04fXa4mFG`l{dV>I5;ny8JWOly$F>(4`n;+63Hcmj@6QiR)AqPV`9AJJxy zIrL4sfvr6X%;BL|v}XPj__^jM+$*vNS4UOM^3Q`$+L_IZqE&Zfq0_C7O60nrR9!MY%{79SPF? z6tb4a+GwhOi}r66&WtyCera$SKbT_1#$FWICNWmz<0fP9d1J_b^xTB+KEI$HW=_y@ z)`0OkFb>o`E>a&eCH~aQROVY{5vzQygz38e7ss@`M<-V$oGzS~W>1yF$j-Uon4&|@ z7fSFx&aGrY=r9eKz)_tY!!$XjhL$vY;gk*bnB+PRrlc!^*RJ=34jO<}`dL(`BeCk9 z82xXV6>J&Y&kZH(;lH5|ID#9Zitp5MtBoR9w~awJsWW7piZ?F3k;J+kkcJ1-j`!Fx^Y;$gYU|W@o)NF z7?$ZknmkN)du?KDKEENS`yU8=J6p*6w2r;(S;n6o*9dQh{b>K`0@MgR3s-9b_$3z& z8-_dfkq<86obp>`HgtnBpLzBuFVu19&s$!kCD4ybydFUw9!i4OQvEc!P#?>-UL{<} zL=+Xc%T-ek&>-c>ebi~Jk+3IA_jm%>l%q_^qKIAqBso=wxLtKk+7g>E|BsNMV zK-T>ZS_-3JiWw2+?xtufA`f8~P0(6!bsNumO+6-AkuAVcqWZk<+o70?fo{R|y2E)ji1&NAhg1Fl?o8GI7c>@ z>?a!~%|Y|a1#Z_@W!QR{1!bpDdLbf*+jPLG!PMs|xu`Y|#gDwC3TJ|__I4;nG>l?* z-kk~_+CfA~;SDLAa)gw4D8cq;?r8Zam^H6+2G4{XJY`*is#A{>`9JeeZt5T6uK5Vv z7P*4_TWi5Z8HCz4(X?>}P)urrFOx)tzO*XN%pJit-MB|;$`aUiy%bFDK1M@&Q}FY0 zW2g{#vFlQj>4cY>Si9^lU1wtrT1v<9#;Xwe&SENri%&q4w1?cwiWK_N$r9)KouF5) zh@wj>!z_Kgf&0|04oM;N8l<+orLPbCrO&k~Ejv(7Zn6=WvR4;U*S!Jd4SZar?u^9se#xnAHALlC)lTLYfVjljd6PVnSu zIR7oGiXM5g3E~~Ch~%F%jLjXQ<7&$r-lr}?|G0y6<;98c_(29{FL5Fzp_i$hRUG<% z8pP_{HE4cyC;fZg87Gto?8*thxZ`m`ce-L1N!u2~m7k76$q%AfmLUP+LeBJa;WTpg z&?z$YuN6HeaPEtqj9}~gnn-J%DST4$!cKPuT)w9S{_EHP+`cSa(kRAu2L|GcF+km9 zD`|~-DL(%)4_%rb*tr)g(%vzb=mzODX1DAHl%4krtlX<`abGfo3v030_Z<4%+ zy_p!&`Hl|sH*@jZUlQ99hl!NB4miJV;{GUlqMF-!G@1K@>MV<()Aql^%R4;yyV)0r z(ReLzoOF^(I%Kk@>iZ#hoDVzwSR|i+Ih=0aa*})55`KysPY`$&Bwp<4jrzzmK=L#k}7t;yWCqPeTGG=HQkmDu0;K>NVIqI*8 zLp8o+K|nlN@wA1kdb%1;&)$fw)25Sg7jx(=Il*mZ(@km54&p5^OkOEILA_m?X#MsU zccj1;HBQaJdG`ziBuocw^ZZTnRF6`z(dD3afrSRRYu7UMEnWDZGL$~O1)DOG&~v2> zTWog#Z`P?n=u%}^u4>MY>z~2;dNXiJOPX$UUxiI6x?oT-NHddX!|LUynbzW8u=;Q> zBb~6G9`(LMzs?gF{wo^nl9m_HH$}Ti%u;Xir^$o#6pf*NdV6soghS0(9SpG=59bR0 zlDx`lu4?;O%0sqY=wzo}4$9lo_`0X>fA?Am@eR6{Hd;+sPP#!yqia7TX0uyId z6I$>)VOUsG72c+je;*|1#{?_>s@QjOX3I@53VuTO+%yAefjzpws+gQHv*h*8Y4QK> zZI2UNQUN0pF@Xj^mhi5HFT4oWJCDMiKMQ#UXK#!-aD=FOUFLpHTncw1Qt^2IR>DLY z@(0`P$!F=W-1Kyze`Xzo{)MWz_tpngFgivII)4yLVnX3vJ4qHhL;GQM7#C^k{NZB>Kv~py2crNjf)t+ zij9WxMWguvpH>KQY$Us;n6p2kCh?JXZsYsOt#-E4B~WkvSHf(PW#vB>;I+hh_;gp9 znv@Co>G>87ORFt$W|rW$>8*mQISRP`I|K7h9%URa%z(|47;^JQ3E>-$fN{<#=qOQy z!m};Jw@7%86X(Iv4Ga|dSwr;JWRP`jqVGi?(hrV2y_v6p4O?z<@pr7n45_(v%N>sNhlSj{%jQ>AX?d-DRgo4N## zWFR#@QbDm#ftr`BBpI)y8xEfhg6u1~)+>`e;nvFeX^2fpK1`WGQCdP1m*;t6Q(SjNGlIUY~c`R=ofl1NQkd>wbCxRc4 zxw12GO?)`+`XP|wYJ@$I-#g*mk$_Rc`TdvRhp(N|N>|U^2SM2~yk>MTmDGMhrIpg{ zJiQaKTWpQkEB)@IZCgI0_|ZycDve@8z{ji;(FJIT1;0@EY)jctMc3=C^9V-hU1xofsD z+L#1_4%A9 z5=7%c64V{aC-av{2-yu8B5$*q>RgDR5)B<>obpkWQ_11(_j17h8i5)HqBQWuR4iR- ziQj(MLdKH5h8U4!+;V+=K2T&4)eTU9;`l_7%K; z&kFucT|k!R%fm$Sg;P4DO^UW>vqMZSXuq<+qREHI(cHtJcx^FXny=6Qaoa%3cb3qz zd0J#bksH11b`LY7G+C8xU&x}(PvF26Q7R|+KgYf?gJ%yzA$GYn1S@Ev@_1v&&~T&G zFdaXw|4u!HuIS!HHIQ|5H$-~grbkyCCpGPW=7uJq-+q`ZOfKZUN!}&DqkXWzZo2S$ zekMQ7Puht;z0H|tkAk()_He#YhAdZ}3wB}WNWeJ>TKiU#F5P^Z>Y*x*PAMj1JC@;? z7)k!WC*4BBHI!pbyy5AF>$J0bG2g-6DM<6z=th(Es<>V2f~NwH*L1-XiO0yN&6FAGC65Y9&0IoSG1R|! z&8W?p4cm^5!vD@~px23Bi)E zVvN9kbrNT*RQB;#X0s6STs|jgZ_aWfQVq)jE5XK1ID2=*WqMcnvQa0=(t3r(VZnZi_K&WB2=^?av zdY&Ym@h1vhzEIR`O1~&AfCVZysPo;gq~LA}iFiIAiVtbR#fTO>H76djo09FGb#BAW zl4jV%XMu$IEO;|!C0;mfNvQ22vhUhTdbP|OkBJF$ixdgAWs5zzPxr#|%SB}3-hI@v zbOrc1r7@xJ3b|_EDd3p@TG%7Kq3iAi3f-J&96l+HUiYf$KSO(r?W%>)O+q)pK?G*| z?Ip4;&e;6w0BKuSNgkMGK-spdBxC2&{9TxH+PLxR(uR<_`v9@iK1px(B;wT( z`>@d<(e95(1|IIJruCAVq)YMzMEyNa2VbV)BD8~Nk+B%3<4>f%+^1u8otU_?QuI?@ zjsKKmu~)qmN>(hO6ITuryUACnWPm-$*j@uVDv|GfHlHn7)qwJiX86p`6C&g&Z*8}P z)rj~<_UxR>ty3=KwjL4syi4YyR8K2>d=`&&vpb-7!6t6IB)AJRvnL819SF8! zqK+!rE#emAXjN-e6BzHhB?Y8<;0PVKI2Inp%QCqKbl_T{C~V!FV0Tt{7BBoeL)P_o z!}E>#H|WE|bpnU_h7}m8DhQ6G5bk}Q2ija-z~!ISr@>Qg zP~){O?h?5D#Yyw|Zc#DtK4A+3yB6Vb$%*h@I4i~Mx{ZGxPvZU^izbWbtcAqr^=RKC z&t^)>V^ctb5@*)Y>*XG;H-qMTZ#?;;a3oS9N zfNi)JbH7Goq0%JYez*u~uoAepE651jYA*Y$1CERJMl6;jdC8j4Q}KgQ_N}B=#nCj( zjDY$xNf>kwg;~cM$jNCB$oN_Vx-829e%G8~mhW}q`W^yfW50>l?}|m=otA=^AqY=n z4H=zM!FM*=@*Ud{F#I5nc9VwalLjz1@)g`tjOX2qiZPZA#MqiiaCJu(-LvNgd<{G& zWHqO-5}Qs#^4X_2y6`#GyK2X-={Licyzks~?Qir4XAE=6C4ORUEsid2pv&Zhdp!RQ zST?X1J+w8UV$}jPOePp**@Zp}vdOI|7y8ih4|;x&L_4h|I4I=HyBn*?1Mvo0*e{96 zKb*<#oP7Gl-W2xyl4pwqpW3HR3Ggw~rCRmVsmDca_S2a*5`52tU6^)|FVGo=r^|9E z>QZd(kz_tkGUsJq4%#|POv6QYIysM+zH$gmqnZ zurk;I=gO@hSNuld@yJYkC~Haz!>*8e;qL03)KpYDFF^$f9?o1Lu>K{wF)^kb^db%M zaeOMri|UZ)&GNA1(oy*3oXfA7FpHh*pM&++TZnpnEWF&gpTGBU4cqj&ge=OFqfV#9 zNYJMSRP$}c8M-;bU6e99JkWvG{3G&o50k+dRdXmFhn~#Ri1y}J> zWiste9KM(&(_ZO6VN)LN|#K?3o!VtoS1_c53+wpU)eG4hshG{BjXIYVyg>K;k$i>fNOG zdf#Jt7^SK%2e}=Aj_9uMir;;ziEmUb7JivVOg5eZ^R4yNR%sKRdrBAFk4{5{TkX)q zDZ;5G;e7w@B=*<4?cn5NM*bR0@#Pu5jpKr!+l`FaPp#tOX>yJswJ$CNMUsTlcJcL& zCH5$xcOMESbkP^Kh|?o`$bC^0$jE6R>#Pguq>X80SnL(a-d2Uzp9Elbv>=CzeMAo) zcB8X)SK{$73sRMriNiktSLBG{96ST7h6I31Wg{N(8z7br?)1>p<7Cl}{iLUH4O;XW z61gCAbURW=r=IqL=?`Q{U#bzP+^r$+2a7;||0P3s}1W1bu#gg z?z0j9`B;OW`z746s*b4Hd%~nc(r|3)6;LR$#;`VP80nVB%lCA`j8_*>ZTw7J95jnR z(wTzAO{(PE?NV;$f-~gVtc5f-Zw`*SIs$h1iLkqi*WfryL)M}BG`GlD2QH4cAS1O^ zG4DqJG>6LIxK&@7u36G-0~-V5`?q5H8g;UG?r-X#eVxy|KaG92zK6YY>pkCG{fE}K zrxWWhSvbqemX~wf!jIkRfzBUYAzK~mkC*J>3b}WBTT$zlF+?M#injb) zNmO22Q94Q+zv*;A{ihF9M8b#P=h*@)H=QC+b8X6Dn3UPTg3muxD9`}BWAKb&AekYf!Mxdh7Jh#br9Wz|prmvrGk8UT?$i>esz2}G)S?Oe_bpv; z`RNa$F}R$+^IaOZcME&E)F{T=Z!0c#J;!fZbBf%HFQ=o|_~4J1EbKU5&y1|k!x*Xz z{i4Sjw65;O>MuXJnOgto?%p(b^QFEkg&x8gX7aTZGHRzN zJ@9b`Kia)h=&?s*yzfL*-tmoe{t{ug4UK0*TRQNru#zd6d}M64iR0s-AEe6Z1$e*7 z;vY+_LOI`KT+^a{Y8IH$O52w=QF@OEU-lNNdu8)pl6iHjkJ*nT!dCB;c=4 zp3t$I!nNM6BnPHa`g6s0nqZ{`#ahvf>%0%l%rYbL&a;io>XU_am(*~Eh!?~ykcDG# zn%Pcr;i$YG^nKkpM_-QMPn%c zdYqWg+)r{&TBEg_1O2?dm6LK6hqawaBy*nz6zhhOqcR6+Zqzu~Ejk6&V*fB65u@O< z`zI2#=m`^XJ&t6LUqEZ!bU`BfEyI;efzK26GKG6`z~|2`;C<84K5s1vwu!=&-<{mA zs*Rwlp~DY!--eLNm!#X!mE0}5ND42pnCLMcJ{Vu3;m=2~{EgGxe~}|WUjPaZMDvYk&(@9K!wbITEC<)ITyxbVLl zKVdXrg)1s%bkmSx7c8#Ug`xH-#9mSfyM=k;G@~i7-!%^8c3t9Bq)tG~YhN6vFOv3mB*er#hZEy+sG-$vGFr?BJf1%wKhGP3xrE>=65oV#w5l17kHE97@3{q` zy-ZltaWZ{a2K#yrfy>N~L|2$UpIkQ_hf=SwxAq3EEAB`Zk8s$9Q;= zKK-&Zj0~Js0WU>my1(c(6Xh?`uzj(dkh@%hz0$uZ`w(rCUzG9*sEz^KW_xGC5WzgaIpZrxheF!%{HJTj*H?q$G-F(J6StO7K5Wnt!$AUGzx)2F3g zlNy>ucNP=eoNCA})5ru7WhH^L*Gd+q&qI&s2Y6?_T*KD$Ie4Y&3Q=;sM&ImuOKdG| zV8Gl5&em_^lC1VYnL;|eAIiW6i!}P>^B#J7XByV^I?-D`BLOc?B^$qOAfa1J;7>O} zVQdNy&q&*4{uDTZIgXe<^8tF8sxq`f;E}}KK_-fYo4eYmjp_^tlX!_86=D2#*;0C9 z?sr()W(+UXcp7>6G}OAJ2=`Gbyw^8VRC6z3dVksBuThtYaoTmkFF1~xjM0Pn!r5%* z-5$<1M;3E-Ym=KM0T3FUf}Z(_#FK8|#TJS{#ECvmOI8DR;|T2A9Z1#1-{K+@!8>zq zGK@_fVDj$@S8SFwvdxH6Q2=e|KuVOBD|#&8a4PxbPD`~5Z>XhI{(Q4 ziGFnx{g`>0lreR%JbxdG4vu20=~aOjxtiTB(?gu?Yw(+RIo)(Sk=iBu)6^z?E<&+^ z`7L7#wI(^JwdF4-J1vSXoq87fx4wB`df5h^s!f8C1%)*1q$AyCQwx#Y<}2O&zjIsQvh!PJuJ})qYI2r%9!=!jmuA8;!3D%t&BXEgOL5$0H5@wLO~h8; zYB)S$n25h+>z5o7pG4FV}pLeC|N`JgK}Qxl?bcWtphG;Cg8T) ziXQr%#MpNj@}ek)V;Am&HLcc=`Ai8@jIM&Fi8c$i#=P>2-6T&bu|ZeK9OSNMVVaQv z6QYvEU%Gl4Me^punQc*+_t};=eclGEjSa}>$^|5vH9(EdHoEX#BPkw!$=tD3fOVdK zP&)f44L<7#3r7W0<1?BVEaWO)?^UC+bIs8|teQ%dTR`!T66`Arpyinz4HtgAral`v zGRbiihBxJdWb-WY?`aJ>5B$a1CBtFd36YcXQ&hNmTktFDYEF zhF#A#(k&em`IO!uJRZ|d(tCf?$2$yQ(YFrLdw(ScD4r!sh4*NN!2-4?Hu0il&L;ju zl^$CBn@W$1InsNVU70yECbM~)L}A)(Ik4`UgjT}Ywyszm9y!&}Ee56dls?e%7XQ`@$hEV3u^B9fj*F1SijzK2SnRM;3y+mo@m^L zw^4gJm&>{IhHzHN41R?PBD!q9-AML)lMUD0_zyox&4LGhqv*ig3bYs~!ytEt`tqm9 z#F@XTSzQ>EO*6$`ZQ|^hs|lFaWy=0K_?={U2{V$|WmHz~06Dh5mur@mhTCTCq)lB0 zb;pf|E#s?5s9Oe#^m>A<)Izvrpn+EpP68*peo*YvB|myAsqsJ$ta&JcIdL~IX+;Qb zvn*vUX1piOW+!b$jyvNWQ3m!2dzJOhHhfT}Jw#vBfwAmlOs}-VRlXl!rr1cf*S?fg zOt3Ge`*0yH`oM83-1yUuZKk1;|nQ_Nw?dw%N3tL-pjq1FG)5wq!4|) zNg`^t3+^pP80ZvS5Ra4~aKQs2@_Ppa#y&vrxnF79I5n7-HX0`s$ifO6Khl;X!sa(w z@Q(~_AoJcB>K-};)|(nIYMvV)`OQAQ;l(3?F{95mesCd6H1>1@q(SRUBEZ&w(7XESp_24}aRM$fWXMZG1wJaE;sq?_^pe#*)yNAA- z+(vXxQ1aBOjn2zEN>==52O5RCShJp^2QAZ>_y5FE^{4?B8gFH1zF&s+vMhe|JjRK9 z&EQ{KrLt~YwPD4Uax(nU2;&A;aXSx>qB}m_MMuS3bnUbo0xPPPh^0i6q3FNF?(J#V z=Dvotd3X$S4=jV)<1%p5cQ#%T{6~Qf9kg(GDX#lrf(~W?+VM^it+uVy$&SgT?fmy^f1=8ttS_RAyO=vmIqcs~nomk2$?JVlsr ze;Gb@N`=ZOJ$z{Ig6X$Jr}yt@qcdGC@#_m~w(<8%rbG7u=bESuU7j4jdyY1DBuu!w zOnhPIDVaysTV10c{3O}J`#;E*N?EKNY{M|ie6Hm7Gy3$P1=a3z6IdaJ7+x=nE4qE@ z&ALf&%GnTNt`>35pAOQCuaqG*JeR)+9YW82A0y)&K%T5q!lvoE0_#VW-~QDV9pvPo zc?^rDJw|j?q&a&%U<|vX@i(Sj*TwAdOUQ=8GCE`0f3$k!Jm`OOjJF=$0{>k;0?v7^ zbXa*Rd-r4s-t5(-<`zSY`}$m>x8w}p=uj%0QwiwbdQSawH2CvB$CJkrT7qXPRN!+B z(v9;Q=zwkn)-Rj}yu>6pImaJPb{(O6s5dHRMUv2mO^i)+3K`sE0+xl2G|)hn`%iuz zpXHYUmlB^)c{4j0UT~W@&QNA&r+V?v+~$#-(h59X>_&Y*7(!xtBKP=mF3Tmi^V$Dh zq}!~J9!Qvi+lBmd*uqC#Xp~B0sP8UFy64VHsT;$EVR4?EsG}gPEvxU{uDAF*3zd&C z5V^kvl71GDLu#&g%y&85X(@!Dg$9gNMk-Edm(Hvn0 zrZTNwnEkcTjWO|5zr~AeKk$~QUnn9bqZZ+go2C#tVG42FHjVjH@s!*POy;x?OyGkP zd&%v7Wemz&BY2pbKttjn2~XB0FYE_!*Rl$#_1GU(e`Wb3E{{`5*w8ic5yNJ~j z2fP>^%e6^PBW_{|kY6gxvSoElO{O`_(yt}`DSC9@rzxnBDjRH-5F9?Ijc3bx* zlj<#5WXN4$K)!6kt9%>L75G+R+z}jKBf#5tlMk11jslbuKuEiFlN9!BSsgq;7 zc65^>^(5X;VK=6JIzx4a<_H~WC;S}cD){)?u_wof&B%RAjw;yl;(zVQguqJDyL>V@ zcP-{E8b`q8EOBfx63(U}PMq5<4_GIXjD>Dx__^Gky*IEK!`L`pqVpqeH*_Rgk_YLG zw72B<#C5FyP!imX?S}1f5%@e`xQh_D@dw?@(R^(jE~`?ZwUtFs)viM^O4T%mm|h_k=&}=fC^QDBe`M(j@&AI8?y&!{Oop;H+LHNFE~tg>>uLh zmEXt2(PqS;tB{fXevKQRKv7x+7r0&-S1;N`lL~Hum54Z|2pI&u&P&8G$qeR4 z{$_5zSO*3ts<=0i|50YgN%-7n%jAyg7qadGz5Q4zDQrq1eyUx}CZQ+#X54{>H}0yi zSkE2*lwBeT12e(olL{=x^UR4fFWmPt0QH=waPJQ7!uH+LprtXMOrBhWSKWtcrD7+w z_?3V$iq~+IvMhRj@_^a{ziE&1baeQwK;JFd3t0st1n;XHtNmIYuFvs6S?eUBx4Maz z`js;Ifi{eDAwiMNci_3l6%s+p$lJ%F;L^H=M&FO)#)}fjBc4m*D_JGd|NIwYV=IX-bMN5Dk2PeOx-gs8Fu+agJTO6J zfUG??hiGZ7Lpi}`j}R4y$}A`bD8)k^%9G} zEM2(pBpx5>!&Z+F0rh!CG)c>ZygaIjI*)Zh^z&3WD|8jcI(?#huX=GWFYbWJS~p4g zDH)U*ItoWrd$?T5XvSI!P`rII3JP1sB3Ix+X6QiW;%tz4KMCFAMWFMtJjBnRfSE@o z!qtE}qCe{gH*WM9=ot>>5`-MkAU)0avH6A9@FBT$LR#8Rpj&5 zVz}^42d|t{B2v>)I3tH)Pku3TqU#O~kA6kWn#UuxaE9DtgAE6^9Kpncer#NWDRvAP zgYv__%(brxKnEA%lV=t5h4>91pQhlojR~YZ>JV{z_k+7Xa{p( z$60=n%zSp4j{$A1Pvo9Ts)O|sk;cH=W7z$BrT~B9oZYfaj<$}Uffq#AffcU^{X(z0 zX}lC@uQbEn8`=D*b*F(BvMXEC?h|tSG555gj&L`Mv2AAqZcW)lE(`4Vq?$}-OxtNX&>uwNlIUH}b~63k2wX+fA?5W*5?{8NJKLYrz$UFgomHF2 z^HsgJ{qH6CW;Y4mbm?OJ9&e6e%j6;If^b(H?h2!4+hA|H2+RLGh$ilnacO%QSztMv zZ#`JRRh;e-x{7W>CgmQt?(G@KNNY#$3y+{+S1bH{R>h1zqK!scGg(FXBD7Eogoj6G z(B;!4(ejfVfAvfcES(WA}A?k29lT0zY+Q8xy-u05KeOGFN_h`1b2Ft(o2onjMAyCjK}`3!d!SJIo~RUwbfDZ z+CmH7sZ^3fp1Y`iR5_+b9N|u9%i^8S->ACdU&f_LS=gg4$6^0X(50Zu?lu#FVfzl; zz4I~7(+c1=%zwv7H>gmVR)2V@{)n_Z4Z&Gi5@?(tI7<)j0XEME-G66etCgm}<*TG) ztpyK!aq;v!=e97pKZQNAYc_rTek=sH_>ti&2e^M(`lugl4C~70W7rsP+*l_|7D}Z< zx>_q0OFdvDgzvEmB2 zwy%V0-^(Sda}?3^zdR;mMJ3ge3PJ$fT$#tyO2qKuPlH+DW_@8 z@v-=7=@Q(rP!A-6c@h}ij4eu*cw5Vo#GTGzHJX1jaZfy`h2>0`9IFmFsmGXx54v!2 z)j^{BVSp^LScz=-3f|&nJa;iq3zNDp6Ugef)2kPFDc%;i(){@~ia+hJ~h%+X9*+X3`O}O&zO7d^yG(7jSmpq&FkQoiQ{o`k{3wmxU#XM4#3bF7N09mfbB_>IF)G@Xd}!_t~LE5ja4qV z!oCvsY39Sa9nC0P5l25u)}Vb!Da^IYCgIwP=;2Wucj&(qnr1r=Mjd;^ooxI<m^s|4XcTaLd!mG$K?j%KkNVr!pyun;Re}Tv4h`cWdn!j#L_|eXCy)3FB+gI zNW>n-fr4jvlHEr4Odbc*LM5nvn;&}SDzKKXBKU6#FX)z&%Jh82K`zaBDqFuXi}`uu zA|EV!9;Cbi!03z(TJCd%98I2F2v|%+nj+A-JDjK;>}Uu~-ABKs_>s=%M@fEGENmY1 zWS-urw~N>6rkB2M#*e2xQ2CAW zb~a;}U{COF?4{QOHbKj&IxbI33lFwM5ZJ8(10#NtRpm=5(Vi}_MBLyxZf5(LS#+C+ z7^;sxMtau%f{N8+_|H#AvKf98uqkL2_uO|Bq?j8)v8fe%Js}eB?JMAlZvIETZ2KCT zs{@(nb4&0;P7W`-DozN@Eu)4KJtXrkGVSaYFs<%__6DAm**+zv@#(x%+#xt{;xV0F zVMQCiDzH|6^-wZBjk_WeD&%&RsH*lSv{`?H2@%Z}LjRM{NXP~nysRNp7Wv?6yLYzA zmNqog%?sOuACa)R$6+WxoTR*4g(vfBsQ&M6GUJFRHF;?X+0W-;xrxBiTH}eaDrGQu zq#EiY)nRSk4^okcaIP{2BeW&q#=j2Eeb;&NIc6mH!B}_>-xc#4S69%2ODSaO-R<<| z)m&@~b;oZ;jWAU4nr!#FM{oB&AzRN6!$-q^bgSPKvS3`eP}BDo?g*n{??ESQu#X|H z6AsczkITqXc}uR;F&~`Pj>Ty!x`@k)UfNgojtBSMS<%u5#-Vj{u8j=vH)rv8_2bmw0-SoBIDIC3C4erzsdSAzi+?_KTH^xZd)?NQm zEs@pa(~J}3l-hV)dF3*hEHG^6bWed3`;75hl^hgT>EKP3*K|kmNUVI-!4$6iN;*8f z;E-NA>~C%r{80V$_U82<6C{Pc_pb^bs5IMf-HEXDaV68w)Wjq6#*67{hzLbQ+m< zmToT=Jby8wIHL3|)sRdhO+DjaLUSbWA19&grdhCYWGn1`w+^ivA5x8R{@gryfwz90 z#X0(NB*7${oExXkA5>iq+c#-Y@94|8chWfO%bdmdIexf5M-OYCJcXHaC1}-S1%g+r zVYqP@y*ZGMVRt@|aNn&&ZIVPoafCh2t_;V~Ma#L+I%zxJKyVqnl?UbI`RF~|O&1ML zgx5}4Oiz*&f6#R|Y_S>x8uwyBJ#{Nxp(Dqh_>c-_%YVZgFB=#+G!EA!sG#H{WvIB3 zhHLsY*}U>Iv|_q8q-A^JzgCJl1x*d=n!Cw4&lc``ofCF++sxD$k-ZVk*ghkfMzGC$ZBvJe{sOtI(a|0p`|c&y$xj?2z0 zn?gd!&VJ5)Jw{5)C}op|N;`?t5=vG=6j}&T5|#3t`#PniR3wr1prZ9fQ}cIzfB4ty z<>h(qbD!(_eBSSD5@lFVM=J8}F*#+Jc4rBlQo92>s>Wcfn=T#GkO#6`CP0C+4*bFO zOjm^#_pvLBDIcp0*`@k)y-X4@=Fh8N>ggb6CqSi^CgSn0nk>>vCQ&A`g6%{AJq@XF zXpR*e8NQ5~5kuggl}@9Jztb!}pKkeDjGkNCMc0(tk-fjZ0eZOMz#mEaVMC1Iy}2GO z9c+esH`L(n?{Q3|>KkfUu?u9IYkAI3H7VP2170gq&sO=+3HH<|IoKk;odh0ABUT;}^r_1ortRrXx@(#Z{pq%v z?()y1*)c|VG>`Xde&e8Eqy=oAT}#hqyMphsYtZ;F0)kd`kzX=uICAI@+xs&RUTpKi zskw@{+Uhn~E}BPXU6O|Hheb5RVLTktHXu@$vuK>n6PG7_MbP)4fq0iWlli;mK+=EH zG1bHqPG;MZ@^_2S%KZuX@%F0VW~dlrq}5GF{Zpoyw1_l$FQDxjaj>>M9D^kd;8&0% zT~-!>u4X$Rv%iZD{nVr`G*(#rCm!EK<#D<@r*l{MJgeDVTk!hWL>@V85bEmffTWTZmQSagz+ZMm^@yY zDPD1rjeaz6Hi1Df< z7&@GSm-=2_NM)TccKS3Eqa^Du zX)9VHjBRoPi?%!Xaix$dHfB?co%&qp^qtr!>BQ+t#S(`~-og6i1k8sqAk{G%dmeZZ z=c-i5<#W*|e=FkmNr&KSzaQ1$WQEGtM}cdgE@rU~8hjqX&1nk2dOdxdb!0EeK9~qg9=YS)6ZQ0E zy)D@p#eq$KJMY2f_X&~N&?C)}M2Cw{2^&V6GqhRDZ&r{qm2lbZ^6)zcHveeH_ehbH-pXIih>I z6dmpz+H0*vuLl&kx<52}MEb)|u;=B?@W*R>eIG+Ux zHab`p_=jvxe@eM{9kkbr!D$7dI66id4U){^*zqCaJX#)XuB)&U_gGOsW8TlpdO-ON zQ?h4?7aZlYv_lQ6up_sPuJPA`$V0`{(JckXAIrv9qi>Upr=B$WTP*tRwxMCQvXGvx zD>NkUn4*D=)O*G+vaXPSu8%oOJeo7;$`SRf)Pfh(+g4h5XzXNE@P0uTc$JeaW~M0Q z&#j(%Z7$eYN`yuVsBe55X_Y!_k+zS-y{)6C50w(H$4jwdsT6+dSHYHVynAi-S6ba? ziuZMSKZ^4^n#u2L?dy)?HgR>_x@a11a1Epual6q)C5Z&pJ*8@jNpN@VTbww0i0z%0 z27;Y0IEmana3R7SR#wGh!KKYO|1Tx3ky&UtxCD;npJZ;7=vZKt`Ohe(v z_(XE)gCE#R^Zcv5^)#cnj6Qv$jxUCspxJLd1{s?n|Bg&VE9Ri*JOyDaxCrx7gYlgI zO5{%5B$w+5Y*;d0822uQ+^?9AbBq*GTU`b#l_&9hQd!Qz+)cP`Q7tw7XM!mwKCq%i zRv_apEu7$(3PX}pFlkl;<31*pnY7j!jlwPA^jv}PtL+)m)DVr`GGScZrxb{YP{DYW zqjcuBiNb$lT1D#niukUkIF71rqn+XMw60A8D=PhIhQVqS*R{pc_5QrK*oT>aeTeAj zjmOCEQD}9AcV$(6W8@FKBsRimEVz1}E;Sg7pBzP0P{g}j7y-?RkmO?acHr=vXjqcg zO^z(AVy*3Gf?A6X)V~n<<4W@9V%UsmS?MisQw(V00rM-DZr zOUaxua>POVEDSAMh*G1h;K9-=ZupR#aHdTXQQY{Dk&aJ?^71C)T`EEL|Ii_`zJ8z^ z8lL0v<94vQP7h*UdSU&Ud=jpr%=~S(2IHd(`5h)FxaxdYkd_cg#T92jvAP884pHV_ zUs8j;Kg_U0#uc1h#L08MC#T;b&8g=9!F5if;IczA5o%N}0+ zZfgo{7QV!pPhZlThi>A<6P8fI&zADPx?@7`D%vx7KArx{2hDbj!99DIF`oB6kszMs zoUJ|?`c^jz($(f*eUv9D{GkHZPTdyl8GVKdriDXMoj)Z)O*}nf0xqkS!<~te!d2m7 zT+-Pcm^$(%=IMT=WzTPs39%!&s|B*cw-cq&Q!NlXc*o8bV?{i1WdJrW=p<#=8@T$9 z{}F=(CFj<#VE#_rg%RZ`RNr(F=;&M}<8Qcv$z(NQXQ(HJ$GOuoy=+Et&kJIoFrx+c zZ^BT-D$xn&hdh6@nLfSvi^AtYl6ht&9e*(ayHD?gYacD~!$^kg(iq3bev;^_ZZ}vz z;UVWTLlOM?6sWkuB21mPpFCJQ48Hr0W0q_?ELmXy{jWnw))s3>kM$K^O==^D`C0y% zgnmMW3aI#g0T-dK3noo>=(xsaw)S2rQ5bU&r0gc)r%_I%Om6}#9ot`# ztgTSgq3fzf1fxQz$U~1|?5ZNZv6^KG|qW&hq=lRjAf;7JfDF2dxouLYKW~*adR@JbMtife3lwn0j@n5}3iR z&g)=Mu$AOYnTZqqw$sn*e#CVnVwjN@2CnL&Bl>sI7Un0(jGRtRC3lb#?OYmoTn0w3 z?IO1O$HPQJd$?!(o>|`9h0cbW$nfWEj)npIBX%~u+pUQC+(@qaejR$3`jfE1rOb+~ zL=rCIKv8G3&~_g0*tQhIXWDZyU)hmo*Q^zsKG93r9ogJdk4D^jB3xK(*hj9gf!y&G zwWz;&Cmibt!0@Fv*pbvx__c2@Dke6-g8kcQ;kVb=bm=WQ5powht=YzFoin%-V!S|RK#C~_7Q!hVe%{|+Q<3cfNCecA<|7DRpGfDai0^=uYx>t2Vj4zJ_p~npk_&89ncQAmXADMpHbM<_?aemLI)#_#ZhsJ z0DmW)V#NL)WZKVY!@0R17WCi36IJ1~qwGKWK6(#bwe>A^?dI>dRx`-v*OKtD zrI0Oaap!jBIiqpU4%qZwgNvE{or-5W=idpSGp=YU6k~j~eiAswdd2kc8(p=6E{C z0Ic1%!>&VNAm}ZLS)Sh=@B!WO{fK16RA(r;@@cG;eq$9imfLac92=UnVJoWVKEw=LEn{i{>)!O2DVt>F>WHa?{thhLGY4jaI=d={gbZ^IoFf5;rAR;VUEfli&Ngj)L# zk++fmX!p_-vOg>W*V(3nhs+qLnc@n3>3*sf_(I2r#iT$_z zcx}WEw*1a8+4++~@XL2}+BO5W)zJydWlgAPFTi`BZ4jsNiI&WE#G*Z$8UI(~;s3jB zB~=OLy|EpRI@7`!|28F81#u{U$qek<%E%+xr=<6hA3m19#;$*o3}bm_)R|8g2={O) z_5|8M+Ko@-Rzn*xI`;y{*0s>U18($2s|MEH@y1ZDo+iFNjbk&c$?YCfYB`PP8cdo3 z#}3-y$ENARzh?%icxx{d7Pira>!fk;=S%kO#p7U7A_231s1;&6SF3056U zrP@E2VnFvW`|v|8EPVMNb;&x~cQwFaEhU8zSErva8rT(ifPz}j<5R_&BvOm>ng4+On zsNY9)cfO+43j=WI*(X}Kk7rZN`AHP%P6p@%Dk-i=l}!Vwd|VL*sTks@&~@ya+dwTg zCeiYp%Ft3fnPdg8p{i}hki2yU$~Cqyp$=QgT9b09kv|JJF9p%XJA4V3&O4QK^=V=$ zpH=bmCe!NlvG6+qIsXsjSg9qkny(7)rSe4~Wwx;Dtrh)69x(nb{62HYoG$xfi~7Ah z3vTNVMsvOa&aaDO*z^(@W443&vE36p_`Cc#lUmw4Q3`{UCsC7qzF@raGs*t>iON=s z(@w4sJ+#WHq_CZ^c@~^at_looHo}9k*`)TA7T)zJ0r}b`bR3_TOPO&1+5?e333kS} zVs7YZoQ$`_Z`0`hF<|~Il#%~x2XkHIXr)gwJJF<53{e- zl=O#~pv0ru#Dc`(I1fMG_h?RZbGPC8>Z&>h| zPH$_zpRXfYHas3gl4oIgYXH*sQ|R^N3MwD)nZ6#GL%)p60VSRvDeuqoGL=fG@nb(Y z{7@6K6q;%JKnF>EoCu$<%i{d*$#~MDpS`R6hF#FvP4(~dED)Lj+R2}pk2@pbRP%Ub z%67A#t>j3+nYl!7<0MS8cZI&G)wED=FQxT-rq@mna`zviSzt%&wlBk#Q`cjcw5 zBR0{B5HsO>(*TU#Ey;I$`E#lNA8n|Zj^{Q9VA!20?5tWVFth(l7JpwS(&}_&&YSRT z?e-1AZ?Z>)E9wm~-G7nGr0Zk&oQp3}+?FL=^=~rB_egPTmtSXE3YH*VJB;-jhjGgY zHKFP<6HpGBLwp9Z84vAdR5&966*bzz3p*BI*}fbI7(BzKgd}kNBVR#elrJ8wJx53W z?WUGbqq#+q>bzfhE4?%2I1SLAgijCNWn@Gw{Bs~!(Az=y*dyc@n}Ef-X14j08r(`< zhT+?)h~A|=%n27YjBWl#+P#m_t*kOz)%uDU`L4r4`(iGvY#eM||DL_db7g)D_lRbx zE~Jjn(oxq)nfq~Y3M>r|!qwuxMe4&%klgzfO$YNa{c}Ch71xLQMma|Eb{Yv*C?``j zVz>f-ZCoeog|oZIW5iemI9b=scU$^l=^-S2Hu_AO_d(9eE&>jH(}#Eam0_Kime7mu zKO~rm!+#@&sDi~xEcUyJVn?-U3ZMJ5kxRtzpK|0z`h7A+=CA1Rc;0V;V_~ha0b^h* zPg>(zVa~T>^z^Vgr|mmHUmn&+Z^e9?_I-%h#kJC=sf5e(k>Xza{UNu8_d~)}DVQvH zNglVz3Qv>`VY~TWCfjT}4u6rwwR3`Tq-#6g@L0nA9Xd@vNBO{_|Lo~n{tjw3qmHh! z*-F-PE!0B60eny25_#HQU|Mk=|Mxy14?;_rI<E;qduj?|CGHoPh7_}Hbo*Rh||4zYAgM%>c&n{+mb1Zt+oW;UIFBIdhG=BA-hcg#x zBU@laK8<`uH(VM+Huk&0&ISV4lONKF-bRpm{0bD!xrbNn6L2QquQFP*o@*Gl7;E$P zbI+XO(ZDAeZ_JOtHHYqiqq`W)sk8!(xG0=FaWoOyXOj^#EXW!+4ahv)2hUdvv9%uP znrj*u^E{LM@o~qv^m){7#1PXhJjQif`~#CY4)FD<6n^a01K}lQVMS0p-=Vz)EBUj; zsqZ}--Ey4y{^TLOSg0X1(`ZJrFC3GKd2Z7KWP;yoz^}U&&{+6`tK4#yJhKd8`y%7{ zPG${>n5zKmo5wPuN0XT?nrn&mfzK$eFb*I6{Y6B)w=eWb2ou*UB);T*PU9UU zxX`>XNE~=aC1Z|{;GbVZozdk#|eyB;|_C@&MJ*O605ZO(W-zAc4 z=U6D8xgFP?zfCLR%<$L#a+2e9k)4=d+$hr^3sDZbc678@QRlK%O*pF;+eUNUSY^1>$*zRQK-i7p6w{VK9BwBC4))s^|<^kVAC9HeA4iV<`ndxf5&3l zGIJxEeXqt&(L~5pT}$r0JV>s5yf3(zEkT)jZ9ekB;<&{nqP#zpEM0h;wD3O4ST$?> z8n1@EYa}7u;SiokEQ9>^STg4ANVqWAMm3KoFkg;XVujdjV9zx`UDX!spZtU*oV3QA z;wjwF(G2e3H50re{6HeoY_ao$7^kS6#8g*Z!H?@?uQ4Y4`)*A_piyqFMxStP2lNTJK+g5g)#o-_}SM9Zf_n356_+vWXav9 z*ZBTvp6L$O{Bac+&zz2hTg~w~S%XB{03rg3$7Qyq7fPxu|@~}cCEze z3+-@(ts=Km&zWcy`M{dHZ(xw$zd90QZ1xj_>wo48+x+z4+I5EZS;V<)4Nk;;%WqJd zfxl$@Ha|{krVDDj-R1esV{mOD@4Jm2L6?78is#-HksaDB(|^s33%a_5%AA=;G)s1} zHPeqWp;C%;wpKflysVDqJ0gfswH#TVr~1lK4rV{$h>e~%n#kn9%hT2{YLOmhqz7Tr zLsf7)`H(FAF9HmE|B5zBzs38Egiw9=I;@ZMM9a}N;w(_4nccQAYKzQB-JaOiFpl68s6zbyS_b_+;T?nG<6s7pagnwgDpzk z*oJSF-;*hIb)wXwdz3YjaU+PNgWjCTZ1X@J*#j_^@om|CNf+VW zYDaLVQn08eQzRX~n;U24i|39I;Snbe7dj@g-@Px$|U`|&J$g^a(_jf#AP>8x}tpWpm~k5=u563t>3W)_e>B}ceuP*0pEn2-}5 zhVblX8vVFuADnq~2t4_Gjq#T(YJb}fo<*I+oi~i(ex?e}QVYiRbYmEAVg#cl8Nmtv zM|_rzr8UPdkii@K+0Cz#;qYfeEPAT|y^|{7@7z>cT4s&G>%=jAF^8`V&w*fiD8GBk z6eyZU(lCQrc>UQ{!4v;-(0i*y4=ol#U$--alj zKT*Cm1#4U%kvo4M(9Yy!>J(&!_usEZiH(yWwj~|oYwPGVQ4P#)c*Qv02YSlDlJ-w? zz(BX@^zpP9^0|5pJS**_zu$PFxsM`!H==>YWOtDH8*j6zN4GJdJYPw_r;S{lv<&6e z1cB{2FZkHJo5b=vBdryB@O1SAoUEAvUy7%}pO6%s{ca*rlM;ZdR|l*pl%cxKNo0QyQu?uN9e%ii))xGd?x#!=XUHZ z$)MZRR^iLlQq*3tjix;xVi&9rrt{l)x3NbUE|k#Zw0w6mOJmGQ;PMgpIFH|>{k%zk z-?K%%j~}^d(`xasNC2axW>Yr32P*x0Fp@E63KCY}53L+BYVKj$ov;=TBwxVSH9h#F zF$u&cSHTlCaaO)j0uvTzfu_9(EWWyunU%FP!#fI8-sEA*<7C*}F_(tUu%Vw!i^$J? z3k7Z@id?@t2^~i03uU7C8M2fZ3|Tjk7xg-gBh9q9py28BPTFJE<Lfx+Y=B zJ#AtB3qA|EnCH3qcwm&OD^y4LqW!F2Oy_$O&hyG&+;$=OC$iEf_mI3SDle(c6cuQDMXqEXY2?sQGY6>luaDHnK7zG7#j{UpS7Cj45*=sdiTk?;;Yjv9kZ0~wm5|Xe z%A}a~Gz?(Z@qVUbIDpRhb5PW=s~)6oPU86pCt>(&1|C&TLqD~AGAeomaQyGvDeeKs z?D=l!+&YXd?j=qMkyyKaBN_ToK&C<=*ED4`tb8AYIp9UThzu8_pd(~iRn9vzfi~V6 zgvmaeV0vgHHIi~8nF=T9n}tJEeAF?ToHqyC(~jX7O;s3t-NN&RSC9=xcgV_&=Tz)@ zA>S<=i&y;RIAgOoTKi-VC$~_ZyAr)g@IGr2ZCcPo+r&fYucybMV@0m8Y~~L9p!Wrx zx+tl9V#kfhl@cmBsa@PLZWE4C>!D56Kgel!SuQs!3oTaM1xw8x$mtHCO^Ydb{PZUG zUQMQ-zPv^`cSRU!_JCZ{I7P;0d*JRvsWkrTKJvS>2v6Jmhnaic(H~F7(cX;pxcX5R z#;mm>quVUtxlSJS>)*u4WV?%4aXGTV=MYgSt`i(H84WXhSEKt94Op<)4HkHG65D+m zP!~E9oJKjIc(%Y-`$IpO;DSJ5OUp5wvfqy98}6c=6OFjNAth*Tcbv4H zmm#~<0%-NRqgd8!h;=E7ocheGRA+nvn|4PM#!Zsr>Mp;fD%Wc9*X^a49oR=q?#hxL zxwXvB;|Hnu<%uY4lY+`+hd~zK5MwS7$E#Ecp1Js8LwhfQ1YcPA&lCR{f1xjrmeBX< znM~mLOtvAeiCpzJMoHCJeD61kYW+!NO7EM(s6!cWRY9E8e%nnnjLy<=PgL;O?Dcd* z(j^FWK1fryXn~yq?>riQOwG~`!}_w-WCK}Dk7V-a+TBdzu_lY$DAXh3M{LmIm7OMK%M=pdsYCXksK&26*D85S7*0bK zNbIa9wu&_7VQD-OULv zonx&Y&BPMlP9k``2wvVw!~-5`LOF3~bl9QAMcj_Z*S~6Tq-7Eq1u0{^!33}x3Zb_& z`Tmr#IY#Un7Cg<|LpH~1Fc);~$Z9WBK^MD;8MqQpYN3ZtlF{X#9WCVUeskKnQyx9F z_cFm|BN1Oz(Sfn~RP)Ae!CiBn?KwLW#!vZ8{PK5`jsTuDvF{NfUv?2|%}lZ`wGWFP zr$PC{LU_y1#ZM}FfRjcB`5Mdjg!LT3Q*tD(GZ_V$0~&aUTZILpb1ZpDr0FHe zs4$+R4;P%ECM!N-Vs$@V+bD*gLPJqkxt%r}@VT`u|IylpwYc2w4i#H?5f1S^_u!;D z=o;W%hG8#h{(WB%$*&ZAX3Lz{RmBS845DyhSq8X?OMuY*8(A5Dgsj({i|2fLNn%t9 z1f(Aj{5B1M9d62yUerte8?g?zcT~^~0%anzXg-J@yTFBCYEZWCJc?!{6Za=F_;0~( zxP2fGTIZjqx|VD4vL&C})SiixYp;OJ^^YZaL&_MI$s(Zwxe zx@mNj6x>c%r7i{%ynl2ej7_qDjor0m_a0pw2<-x$_*5bh<<5-3gqm{q%y_^Mj zcg;PjeX5AY%Ld^yk1Moura$d6(BWRjIe=yHJ+df8joW5-jj|GAoJU(Fy|#U$;NE&< z7V9=rrJqyL|F;Icxz3DdpI?Xji-zeNO)I#2%^vr5senh0IJ$iafjfT=i|(v?14Z{f zV3f2wW=1yADH&d{eey1dEu4%dZ`-NeHXU?S-2szVSiu(mqqHeF67Kh?67O~HXm@pl zaAb2LxJo&o{snj9aki7)e02}kZ`MH0_CyE=Zq_sMe><^PUL4qzY1CBThO~qQkiZAm zh+)4BTYc;ijg{p+ai43*V7|04tW=d`-&=;&TW-_lat(;SWsbU`Ux*vsM&w>DCh`3H z&P};NS{E>vIU*5;puqCa5KGQ};(0+*qzJ7{O+YV^zw?>fLA&m5TC}(XM_I7Uu4qfV zRb@r{%I?AH2YffI;Xn4+j7~={~yl^E<(KsLs39^h^Q?dK<~c>`gZXJbhuVQ zE~~Al<8E2=o$h2HiwcMjC@OzxEO7G@>DF&+$(FLQFm~fn!9Gtu zi@U%BXM64^QYtaj?e1cfe_jklj_-+Q$R6_YpgLA$ydr;NUBKvs89id6#(f>KpmVT{ znQJ-)kJm4O%WikcldrbqcU~Kn^Ay85*T<8u|E`GIPa!Rza~Q%O@$4PZavWzI3c(7L zeiB!}%P2-S2Mm(5CP_?uy$mN#)xok&8F=tXK7|i?^w^q4@>W(HgMt;|&HFGc+ItYU z>`ov@V@>HJgO{xC-ltUIP6!$5^}z?*(?PWK0jt&WiD z9ecvS(P$$a5p5x@-fQWY!7y^UP?Nhew3z-qo*`Q4wu+Q!ND6DOT_>IrXJLlTU!3yq zCarm7hBXNUpVBRY4R#2RxD+&5;Ef}dc9CuRcd4?p3ahDOAv8Zf%mnGAV%pCp*0W|d z4k#VqsKNzEw6B0i_3EOz5!&4O?NxN_sQoZ5_X;_0ErybFe&R^$RrLCh76dD*qJ95l zcor@x6d$9GOPq38_t%|_arHs!R>Cmhm15A|DWX!gX550g`QQ+)N?Tth;K9dwq-gGI z%yyOHt~!-~;lc<`N^L+iF8c*pv^p7$#6lqa&lI$JKR`w;{z=x>&w|35Z}{c108S*l z$I`V2;d8MQDY-<+mU$D2wbW^PdF}{s8CZg!$|S&`Z4-nA7*fYiEAhbNkMyTk0NS03 zN0SY+scOqDcJnhou%^dJouUxrPZ%NdyNKHF@Pj|uIke+QD2X);rw^Arq-lnfZn!WS zMi<9mMT9Q-?G*)Xb)%5YmBOSPS*ZGDO5-!OLtgt3*q5}?uWn<>;F=QVgvKLnHMv>00rlID(pBaAiRwT-+{o!z_{A@0u zF6XpR`PKt^)PdsN?{OF#b^@1#tOwn+v!vQ+9)$fF%l$iE%H^1bp?2qXp4a7!qrI-d zuTSbYD`7OZGh;60cEzyv^2RVWrdJRW9>UswSD?PT577HJq+ohVIR30v6Ye{5UGU$D zBXs1OM2xs;MZ(tjLqLU!Xiup-7!AfW+D$kkl7Q{3NF{^rJU@;67%ZhXld_1^?quA1 zp`UJ<$Gbhet`n77ch-IQD7n0-nQCo5PqukU<8RAHG^e?r2{d`f{+;OvRu{{lV-}xj zRM?MeJX}QQZ+GK^QOS_&agG$4K4h;->oKj(#l&sZ0M+^>$9o#q!fW4aB=q9|TCLLO zvt23R5Vwx#9^VZsO>WZ7s$#T0zYd?^U05V=#0NZ=xqAO=dLr0@^aT1t#K(BLeuN?M znhqpgEn=ex(!Vt%BkAcH6c`@@?AeO#YQ$*dQ%NWbAPGWls2xv8ZKAD>R4T_d)0 zU53)aF{|H`GW%=v$}}e&QTQ3V)>uH~=tNHc%Qw8=GKP2z_~6#*`@nV38ob=pQ95@H zvsCwv=wr_`sO+gEF%w$p>m8L~>&16%`Q6EA)l+owr4^{LJ(uiT?*OWYG@$jRJkLDj z=SyuX>5J+t&{8zQI`5Y-vFag={gp^QpO0mNMlB&N?Lxi}b(twWkU@VP6TwAYQ<|{S z21iLeqH}TzspM$hO`7V819Ru#?1J^wz8Jv!)e0<|12pcY3W?V4Atx*AiG|l6s-rR$ z^+Jzx-DZyl+%K@IzJl47z|VCzJ)_2b<;;|_8Th916kT4L zj19j&aOx=dQ$TBC)s46}UpM4IUf z5U9Qz&n3!$qF^mL8d5TPl@7=sn*n2U`$=HOL3j}Gl18uChAM*tWa@-NB=o<_f->t5 zpx|9YTrCtqLwhH?*v1Y7?N#(>tPN;r*mA8r4{PPdex`egAC;UUA#4uP=jSIP@RM}n z@8^5)p#C&8+5C}Ir1AHI~NC?MH_}~U13DS(B-#l>NFq(;1=oK9a8x3p2^61lm z1y)|0uHrAchtJeq`hxS@R^t+;N7 zg;|ej#ho8CeNqraEvccW?fxV40^SIc{Iu}NY#m&8)df^%P2jxu9VaIXEHQ3ZDjs!p zg#NZb=5^~?I5blXuVkv?I~7G7`NajJ`YLI&c@6AQuokV!JWQ9ZxGOsBe-VM(kgS&Hj?`;-Ql84wEDLxu5^M z9SFgqxDj~e<6QXO=#3`={e%~*s>#_lYxJy?#;4mRVBqOu7_~1HZhgH$4W)Qr-nUw+ z?Ddn5Y|Ow7ngpzql3;lBI(~P)2s4ZK;8am2O>=Fa3vX4BsYm($`Qr?Tc;kXf8+lia zULSq?=Omj((rC&XZ9LrWh9)+#q|eL{*AMnFu7Mxf{6SqjzV8{EzIYNSrz&v?^|wV^ zPId{NZUKSg!FD(+(nsHjb~vIg!aqmdaYSz!JsvO-g8r?>vtv6T)AlE0zU~i=jBY@+ z62!{rl+$Z zzilBt`m&OC@!zN2s*mY~!CmZIu{8GnCI{HotBP|DPUIQm`{>kN1Zz{x~lFjr$#A#eJt%$yOvYUGG zcZKi#&xTFBWAS1yExRvG{}zwLsr>)E;+rR%7-t4y7FWrV=mYHTh$&@)8Z3};*-ZQZk@N7ZLa)`tJMs5y1XXhHRf})QW&FR%LHG& zgc7HpYLgz%Be)^aVC-tzA}>gF!wCn{xOwVIBW%?e_^mD zs2s~;MO1F_G`w?e5}tgK%P|@{XtjP2x*uMovG+HVBEB0?c7`J*EnC@`AbGOvmkY$G ziDRs?E1vUwj{cYKlb4=~MC;&qT(G^28nw>h*?{gekM9{hh*1)j8_0p|SS9XGuUn|O8jH4RF1=0+UfPij<+p(Ax3N}3dbqDv;o+ApG#WxmiM zDx|A?eQUVf@=@#+F#Ir z-{asT32$6^>+JWNB8T&Ga3ds__-1vYkIpUnvX1xRm475h#Mi?%>rJpPXaW4UArp7L zsio5_BAtcDVyL~64+b87CD?LpF$O4o5Lq43f{QWFM4SaqG*7A9C zALj>AzoQ@N3mc{IUE3 zO*;OM%Ix<>dzBX2`pg?EYx3xn%v#>**F~2YJ5yl_--|x|7BnoM(0l*sK>Rar=K9V9 zWLu;UX+1JtIK|JE_Q{O{{XQ?4{^=Q&cKiljR}SO88NT$dQ4}5GAKQ4%hiEGe87_<&?>n}U}= z1jCxT{cu6bl;_wTre3nG*nU(CkE`d=105%E?6t9AP^`~oMwF9tQB&|s;3nLaXpHg7 zV?cIHI$A$+McpAIAWwLQ;g=z@Lv0kD+F}Govhu>MH9B}bjR+mHoP+_oZ%|FDj%dEU zhUIVKgodKoSai3N6d7M9nd%%>c{CHgsAS;7N4zUIdSUrV5L8_0#xR zB^0Ivpyw`Q_%7oO`+25OqU#W6O8)*Gfd!eVXD@-3V z1?%INP**P%K1YxRiB_`0AkkP*&dr1kumX47<%bICpFveNiO2@agO5))8Qx?H0bR3@ zYjlPCUHr?aO(*{K8^>tOPa^BT&Y+8%ljxC)Pr)|1n@EV%cr2|DJI1*|-u|1U*x);z zKl>lF-|7eZ!Dmd5j4adzePA~~SqeVC10X7OEE~5!4K5bPGwJKI(fY0~9ISLi75(Mx z;U(>)LC9dqZgsp-KMgagQqcaU7+dwAip=BI(-jdWETiavPcP4ctgcAzq(KNiZ<<6V z_YmyJc?AFd@hn)Y9k6EKZYs-p;@jtx|K2zdwHL|wFzgscj`&MUHa3x+Nk~u0>QHC( zToRPn347Em2r-`Y_)jKniCNUdDhuB)d`>o->Jrnln%MMVkV^c`Cta=+>5ZQ?H0xb3Dr@n*#JFRu zsZ{}6?(>O`DF{Td89&IRbyvBB1Fj_RkTRw3Lvi!qBiN?hjlDPoCZD}v%)q(Ej6I{! zaX_7MJQIS|OP6AtVjmg&>I@PcQ)uY;S&-wC09r??>777t>>OQ3#mZ~AhF}%6a?ui2 z(POl8=>s$~M`q08!&G4+lJNeC@Yl8g!o8Zw=qDp^k3%7-$?T#NvQy#OLNkndXF?zB zHN|C}?lAPFl)sawL*F;vg}x^ZW{7_!mJ7x};6BOGp9j18*3=)FkY9QOk&> zwBXC%({Pz$8Ts_n4L{%eKqjvfaBFh@5}}$E8jg6)YHhTDA7kgB|4<(7<-5;=+k-&< zMgytV_(qnl7pFc8#4+xWw6LpUF0-KUGgQrU5i0B{#nAjo(73jSE(o3=ta-EsTVG5D zsdGVSwdOlLYORGgYk8hAp9dWk`H{?%+Kq+Mx5)<+cm8g?pGFnA!{Z4lB9*N?D<*Lv z7GGCFk%la%6RU$Gr%e^kvn+tEbCtM2&w6@#)f@V{z6G8;-(;Up(L%9$Ev&P%AXeqG zNn!6gx?w>D8UE8qB#(?DmEzUp)JiEle*Yes>3x!0;}^tf&wfMy9Xdf?ef!4z&0Q<> z)(sMlIy(aQ-b>?}&-|r>G7U8EDN7E>27~l}id=47JM(*o2CbXd#Vl}ZVa<#>(7t_^ zaJP><3YLrEnLF7aB9mX(V0$arI6nMil#=c&SIaba1_x&Q89P&e;aE_Al__L%{R)R~` zE}%<;!+5mCZMJM)F0S}bmTQgKMXtQNgUinwaPCE3q*OUi6t3; z@bFq(d+`G0K`-#dUI^zWexjONb9q;)8_4~R#x>^(aG&RDRN1qKrid>hn|c5WZ%u&R zQTymv!4}~P`CAYkokVo+o)>;_AHkKLyv(fXxQo*_bP?~lx%f3e1DjQ{Nwm{*`o8o9 z{kTbsggOEYq}`*h!WTFn4KOB>8GCW>xmtX!;6Ze9{v*G>t3&Y7M%KLPDp-w4hM>6u z99gynSB*VRjBdPzu~#n9SMA;YMmK!WiY8@zKi9_a6gx4+n8=^_$~5I`!;dq*nD|2s zYJ20Tl^x&1Dr|&T8_v)X;#$I4!>Njq;}z{$<}aMV9u@nv4m?88%bAG;uh$(PXR2 z25u%(#jPF3LhAILbmt~{Oqo7fc;Vh@u;W>bOB&~0DC@BUM$?_tJVET3a1DRH)kgc! zeDsvRO`1$vnGZj;@Uo2_5qSQM>5(I~6ok`5C*DjF)ry-K-%7orhVEB3GLJ9!ujLzMtZu4eEAqaRSBVlCN`^F1BBabyrUsf7l_t@wh@>>!v)2hBB$9|qN~jRNL>ba|{_4N` z^xWs3v)6vt`@X;1%*nlHm@#4wu+Ditdew$g6RAnClg}tw&N2hbf7@|`;x5|gEWkqz z)6ks`kh(8r z>jWRXx6!S#3_O^rM|a=LAi8F@q`}7?x;yi!NBk+2t+a=r`-RLn`!aI=TN>1yK1ovU z&%?PgN?>>AI#<)jvn9)uA>@=b&d?Wo-)K z?{T^};~Tk>SPB+z9qGM2(d6(sBbdGVGQHC>o;B|pFCgW5q{eEJY7x@NBt=2(98Gea@66TQ8jtTDxntgx1(={^jjB3g%%z4@x*}4YG`(VpT0<7G zGk!s&W=t18I?+dd&Z#C>9*5GdLyKY65}rS5yA^G`n#sihM-*KUK~w&?Kze^59vZCz zQ~aZ;=HggzSRe|PlP}XJ0s7FeJBkU>7tuqZkr}zvlwcLZ3a}(KF!#rcpi`Vh8zw^xbV!U&E4&2DKfKp!6K z&*20y{~%5ajC1MGIyY3!{7Y4jd?$A`=976@DmZoBS-R~)A3a*5j^n-sv*Q-e2I-Ow z!Ut+9tf{XX;oafr+q;q6y{$)BmG_LwhXS&8b~<9g36f>qgZjP!ATD79>!!@bOt1CK zrq{1%n1=${@KOpu^%*^GaE656|3uu!i&2-kN?h(vO|(2T25#AzFbDUBvCqD3Mfaka zpwdbBrQB%rbWz7Lg?QZ97Dg;p?J+uT11emPgc*VC&vRNdR+_yA<{elrzKKdQ$ z(a$7D3`c?P!YlODZ{E*ucN*d(?vfkkXQ6oC02q!7Bc=UvR)5zP(6lEPaQ?eVP>?!L zAXl4@d9SKSbc{O6CfwkCCS6c$ZOXm+*urj{GQzk>@g8vneKKr)62BUV3C1>^MGIyc z$2?brBi9Wv^mPnXJ(U0kuXUJ$AIi+94dd}_Vhok4PQk`AtLck%>9EMu5GGz8MVX5k z*m5h0+V7Qur_6pf!b1a}YzU%v&1Ylnp*VOR7{yw&j{!L3g1_fGks2jm;gC%fm|4UV z&&@Z;H4P7Tk}4^CG-iErHh0Gf*_whb}9*OIH|NqThN%siw&m(sD=-O+{0Z$Dq$y9}$x?{NH*eMuuqnDO-d!j4PX1toGK|IDa(zt4A*uJoX zzASYUw3B2jsbyZYblDTKs6LyPT?+-5dH+bN8^`>x?In8G7QiO2+3?4u2)rV~$=J4; zf~!wGK<~j~vLqpyq$bN-7&w!;!336K3fNmXM z$*jp3g{!RPu+d_GM&DXN8>7FI-`mv4U|Bf{)D-3OSoUCdKo#$N`9{ll{W~t^3|U-} zO1dLPEFDI7T6U!ya>;jIk^Tq)KD|E^@?Fo6*5*h$Ji^~whN3yIId;LXZ4A1}R-buXkL@_@`%*;xC(nexD=M(}y8x!t zZUZ+yt5E-|oSanYp!FISWc`dM@X<_zXDW;lRQNvx(f8d}W}`KzuSu=&U-EC^9auPkXC>MoWRx-=$#Nf)rb8uFuL&HP< zl9Qt&EuSXmfXdAlX2sGjP?8l8`(3Vh!21b3-r<0crg)JTTedQ5Z5*idM^KyqeT3TS?c6@p*QS4KPyU%>QN*!0<*NncJ!dLgQwp4-fNmp$rjwlMEx%#2`C& zJg*I%pkLOPQm2R$cqh?``nGE0*@i-T?ABE)zY{Fk<8mDw=SRcPusKeD7!2hNT3k!U zYMkC%0Br{hp=s_lJ`3wb<6NDouFOtuT&qls-cU3A?m4{(@ug64la zz=@A?6Kp#7RA`^64PAEPG*#S&vzs}Q+bXBZeVa3f%b3wa<;DH6Y^yz1xlPBIfJuV? z_?bD(O#44fodCrr|hPVl*xWUJ+Ff#TP`Ww2UFYjX#WNY#LMdNXn$X(hk{+M}n zN1U7Dxsv(dB*BJBSCc@=Rp9f(5&Xa0AY*TDM>{!bct|#2cd?Mpv^zsx>H|qhNeB5U zA&WBWQ)yU%323*h6Gk0RrXg2EA+}Nz7tJ&RmkE7nsVd<7g5^l~_8m0#sVqHp^*5?) zHRR5wHFM#U_&J(nfnSdpEW2_I_Dh`LjE@FD!+dF;lf}>d>>yRDPKEpZXXy-6@#>&H zO|s^Y0*EaTr9+OR1oLAHvHDaPoqumTd!p5t`19S*_1AqMKz9+u`z*jSrc)ugdMzzh zx24*X_!%?o2$DzAc+Pwk+Fx3S%ckbQrqv_ln&K0tZ!zEZbp0gpS@)54-26?$rkP=M z`~)0a@`?Bls0sXqjNtI6QRsg}m7bH(rqy=OxKP_%Fx?pfIlCW$-tZI<>|2SC2cOZA z`4=#)Z!)%y7^BF@W9G)GAxqKEKdsJAm;=McJnPYOI_k_z#F^@4&*Z*TZ*@{@07kvEf~<2KbI(v7 z9j{svX69yy^C<(ZO@G+a)Dr9;%*Rw^e|*Q!zhxGMFhMzt5ro*mEow$z^Z7MTvsrvr z-;VuteSrM!8Vi#Z1L)ULy?kd(4}9Bfv6uhLCLJ|5jGf*0hJz*0_?!W~f6;wJfgtl*Gpx$I#O8Gr5JBz(^{G z5vTp{$=tV6Agwl*Ru>N9%arrnap7syX}!-F?QJKvEg!+BXao0;N(;VUiz3OUW{}c1 z1)BF*;;$w(UW5L@ZF!kQ1JuiD>-U+kbCDd(zC4Dzw9B27Q@l*9OfS(|_o;&Toxzy% z`Yll?bHd|#N^EnEI{NijVA{hTCL>J=x89t|iP%-s;OP<|+bPNY^3P#(FNfmk_}^5b zdo~1gby2zP_l4U}^^wb>a?~NuoBqAM7yFqv(EQj9OC+{qsoxOkk(A*CY#Lp1yAIr@ z+Q7@~aO(dclFA(CKvgBMxcLa)3WKOMKf@K*^PO}zuo~$GAT6LppP;3LBwp(0RkeS>ZM7a_%-+&b2YBCX1EE7#PrzW>RI>Sx94f_}rG79DOBY=x`b8p` zX84*(^V|)m)63HFAkYw+G!ADj>0p}ba8s1(DkFP@U!)Q>=HM= z+v#E*eez9!N8kLS)~UKsRuGNLV$7hQ&odo&2QKbaBq^CSz;3;=5Y-Iwpr|Vhnj!<~ z8c)57A#*>R@-UCp_7ugZM;%a8OoY~*@<5BUJNR^!15w(z(Mlc7aLIZD^8C+BT7CH? z=8pYEO%C!s9>ue{kJomQ@yA!-66g8w>f}#MTW!U`?mF(<=4%)<<|hf2^T0IK3-Gw3 zl!;M=zBRM8aZ12Fny$K>h@PsVN{-Xu@t?zFXu}D3;oZpie~uui zvWljR3PQ6vB4~c4mfkWjqj$9*Qf>EMx^|%%eed@M9o5qrnZ`+Yx@SJ02bqXpei~r$ zrZ+Tp)k^OBB>~9GNeFIDm*Mg*UxKGT-slrA!reHl#+}+PhmVba)Ar+4G-eIop}SZF z6OAU*P-_ER9#l#*0~_$->TV*I)Q@G4WzZ}o7-Jt#BdL6+?{d9z*i*R&2Zc6FXiY9t zds&A@XYL`76D?qa-2z&pd5L&gvAC*tIUW>>;n&}RIKBQoE$bJ35?OfxO+)6V}Uz!wQ+WLwffyu$#!pCN3C8Hc^o(wU~-VUn-@ zo9)P-gLYgH?NpUSDXC4kE@&a<#udWp3k$LTb`mCDXJEZp9!8!p!icmOHud&tET5n& zyfgL|nH4W47_78Il^5>hko5zq@3E1tstP5m@Fbboq(WZEy@y<{jw);)7>?f>5l^F^KV3A{i5D$5jQqw-6NuZwwT7&?-Jy?n_yGlXf!)40|tT;YO?)4COReww<;8a_O4$fE>IQy zbVA93AR)c8NEd!h+Rm!T|6}Lyd9|5QM?wDZad>=&kX1TmOnCPueqYRYYdQqLpHYB5 zzqE+>Mp=6Ff((S&8RO%;Mda_=Y51t_4){IU$QlKTfx!n+oP1ml9$lY@WR@ft^~R9# ze~Oun%HsuJ)+G^Fe!ml*@ro9-jKhX~!NmH$8&POk1vg!^=zx_D(S4Ic{Y(ykpBuvt z^Bo|Mirp})e>)m6S4irN{oprx4XO$v(R02G^3F_rC?A3Y{<+k4#0{zyhpRf*|KNS{ zs)9dZ>tVz15T^6STH5~V0l#Gv!5#8BWW}sB_Cm-Jx_S9O`nlZ^*V(yXq`L+(o@vY} ztpxZHu@!yJ>?NHo7Et57n--1I;`tA@;91;C-5hVx1&=?H*(vAgnq3nhM&}6a|1T7U zUJ>-b#K~~;NG(iONrMN0yvH?pE0nDpB{@b>X$5zCDYrf3NgpNT~Z|a`5@8ultw8D5qMBDf!r5pL37AU zvd8Q<>ordTT+dF%8L!ppXB7or`|*MgtQic+Cy<UzFcdJxA?s6-bbTB zL(vmkl{?56BL;fMG?Hhif!n1m@n(u4_s07#DH2KRE7V6NY7ASwbz-JRuj%9-fBZqXHn&a6S~;%0bju6SRO7Vk`TaZRPm_&lJ=! z&vq#(dr(c|j=184>q_Xc-38})l@rY!?r^Wn2Vcpp6Owub!Ks<9xT-Red16*TEw4Ib zss24HtD}cVRmmB0BCwqNIk<+dh~Ebl<9Igw=hLw7M-8Lsww+}kNq~f)7WgF|9Bp)h z{*! zC+}BqE#gzqtUiupOGt31cYL5@Y^^}?6VHj})ZzE#Oq6NcixVX0a5rolV9~WYrfuI? zRJWYRWlXWfkV?K&YO)>X9POmj##F-2XX&Iop^F?Z--9n+&llXvKaQ{EXF;mP8{FrV z0e?SLkfPI1iHVDXpyNXTkgOuFD1mf+=64Z)bZMtCk{ z9x90ilgQP%+=Y%@;#_USoPA#gCcgDFWNI#bXxWHO?kPC!KJVKivq3Oj3@b_w)15z} z@aWXhm~bFK;3vP8*?V>>Ci3U19Pg)aQ9cK+yk0Q9)eJdzHiC&xZzcgo4U9um1m1Eg zWutS#;h_91;?w;H5{-e;oIa& zq4gmx=(1+%jMTGK|CKW-c8!GWinAoxXAHC@YvYU@ZIm`~!nqYibmxQx^rO!MxZBNh ztIvHR(NDkAp>gu`dlQSgQ?;l@nj6MQnX_+){ZaA3DB`yvj8pz)P47tq-wQX3*c_RH z-XeFIg6QWY#YGwPS38sJVsmz4>J*Uw8b@7=^=Q{t50HNDLIjylVfD(>xN?&S$U6LD zJ_cK(>`DT6+VW`6C!WW%JDZg5;k&^6r;)ST(_n9*DQ$i4Or#|f*=!XvTsK1q@}r(J zS~I_qq0T_^)^j_bEnLbuG{s}tO?zaveXu$iS_x*RkuEHHIb1f z`?UCdUt9l0Pm`trWjnTdWcsaui-@JFi#czE1I}pKl-Tqh- zXoC;bk64{H;5&2HuO!n3wuOB;8{*bHQmn z?Cn{P<4-jcZn?izUSt;be@>sB|-3f!H&CL7Cmvn-#0oLj?(=~s`fNje%Xj^xI zN=O+9tU6<>B9ttM#H~^A;+Hs8yxwXxHCj@z=*msTf#;Jvf3P1Xx~)c0?+KuqAPFid z9gr>)#iTszB{zG{r~^s+Z?rhQ(r>C?815*JW6(zPODZ*5-S`15z<-GCv>umjmOi zC72syqu~v&%Vi%er97G)|GVvsV@h3QVf*q zMPSwDd-QijIK}-Z;O4e)^eA({o9DFQdR#tL3#p@lvL)oJR}orfyP>zd2T?vAPE+`I z#I^I~FxTlKQTY&0s*c>JihTa!IxM0|wbZF)Y#HM^d{!n$Y-{P~^w$!v$ifiXP0dm}kxPe{PMmH6*%Hdz}b ziAS0SK|D$fOwND6*6lU8p?3o_>H0Ucd)EZ}xHTY)*Mx`0{U8n-czw_EB_yuvgWHZb zneVbEVfL=wa7bK3F!=2oN%&6$zo?qSjy6h^0ZY7zNgk8s^_Uv6uOA#Rg+ zLTz#k;HaF2VBgPaT-9YW!GaPeJivE*Xr7BEU)N{TzTHLw?WNMy?=;rK7M^9jD_fh& zTOH?FMP=k?lrP5bJx$tWZjo-2-7s^e7<6j15?5mb;_bek@4YgI=Dvw+=dq>OxpfAv z_e>xsdG6(_AEnHTpgF*2+Ms_zD0w2KN9O#UPDV_YqDw(OEg62yWGhIaSX?GMr)xH; zPCCokY*YPhB;1>TJM_<5g_>z$?}Kc- zeYKnSM7vO1+xzs#YYkk&cMrD&zoxr>?!ycpRZtfGAm&%J!Ts}RI-ftU#y6Lt!RnvP z%oA!PXV)pXwXGhyg;R(c_`~hA$r$%dAJ=*}k-8(}h;zkHMr}(KHLg7jF(0jQ*Q_LB z`B?{lJ&}RiQAr4H8PxI43~+H`NwA>^ni__JlGc2FZxm0?+b>6YC&8Wg~&~4{rL+m8RG+@KYVF})-ZMMiXx5^V@YT7Ds)-AoAF4 zymRR`%@})&TJ%iC=UQq|7t=}K#-77BRrUCM_e?G~{JC(4pcH*Jc{7svNp$W}d+OnC zj2g#Op#J9pa&yHg^!{Xlu|dvs*Y2a>Wp)QP+9spkcQroaVnx;|I^ZtZZt`bA2y^v; zIg~tS>ABr@^d%i8TKX0kH^mj>Z$2lV*>iMQT?eL%o`iE!#jLHe0Vz~$AhBn)NY~8? zT;S#>^eNv3H+#`U`m&DaP#>Cx$%m#w+3&{~bY&X7FE0gQ>(%gxp(ajmG$n(_#?#V+ zBWQQWfTqiwgTqI5(cv6DLGXwlxF!t%ANhplBx`)*o<}rH?!dp~WDu3kW6sD`z@*lT zCh+qKJ=}T`nD2z0u$}U+} zQBivYW?qzfYq?`=#w5ITLlorqAAmbPFHr8aCcOLdi^(?mLB(v35q*VQXtlRd_?a9= z^X5T1S1p#j_4ooJ54Yg@Mps<%FP54_q?0DOCMv&<&kEZw!LdQAR7FP|=hnK>`Pm87 z;jj&fxv2u>v!CMU>T$5?+I7a-=sw+2qD)xL*JS5AB^Z}lO76Nl!wv;o(7v>qX1!lb z{p2>IWsoMuX3oVK)Cbu|PL%Sq=3Rx0w9E21d|og@bKB*t_I2z)U5UM9dVD1PkyH(S zBCFtGhXfUD`-j)c)dW-9VfNYm31oci&j2mSL5BdIX!P#vX)@2Rv)ekTY@BHwAoB~PTd>4E#)`HU3G4L$1 zk9wC~fvoHds7%JkEt*!VjUSR*@_;B|1I;Z4aC^oH!p)6>;)WcW zJ7*f`ubc;42OiN6GG2IR^eEiXA4Uc!ko`T{G)XXy$ZZ#+gGS5HlbZ@FEnRW)t|pQ* zM475LKd4QECoNxW08uYQv37S6h(N^74X0r^{%a5(N9! zG&9x`33!N|#3i_X$MEEOwk6>ZQ2zl3AMTf_{Vcbf5F<4KD+o;w+RUCuheeg;6q~42*9@mq9 zV_RA4>mPB<G{vK%G9HVy&Wdu;|`sj0mbBB8gwfGMOGG zCV3pr{e78!Up|@nIB)i&)~g{w}efza5Y7oQv+Q@laUc29d3~7%}fU z**swiCvxW*+4wsgE7Y|i=7KjqEVJf4degwC)D;4LE`oipAK_XlK4AfP@l(rJZ<$Yv>W-Trbm`(>z{I!~P!wD;AydXnA7U9RT zkL;E%eokmjUse|CHQXpbmo!kOkCf!9hCMslMQ{7`EK$qI4rS&K7Tz- zCYZ?M^fo)v_R<*7@0|j{_M6FrS@Lju&r$j2|@U7w;tyzd%hDn4_nRf3vh8 z-q{aZrq4oQb1_ZSsbkWt_6V#GJtJ$6)soctx)7f@i}pOYjh=~@F{ph!mvSjYu=2Je zb{|}e{;oyLw@3wUUAPpHsN?rielx*nq?{=A^rFq-{17}+|SuIJKg)&5q?wI66Rc}rZ)abdP&1_}P!<-0C zjP+*nmkMxf15Z)RHx~3&_zU*5fk3^mirSZ7B7Yt?@|o#vDE+k@UKkjY1t&C6WxPFV z>SwdDftnbuQ%35;3t)dy5IpXV;Kn-7BAt5*=tBLk$y6nocXRJZLn$ zZIDHssa|AKF7JO#H-h7KOL4h(6Dwo;U3k*j3wE1+qHhZ}p}{AfrLC7suH@XJW!XyL zZpZ7bS|UQ1V=-0}bVbpT=Rd9TjV3#03P5&e6=(Ne1YRi2VNRabfCY12@_Wq(G~{g# zHykh*_o}E1xYqA<_Zvc*F3#h8JEq`?Ii}>@K6yAVF)VB?o(($7;+Wg)LNvLcin&wg zaYLqS@VQhvZo4}Xt_CRL&mw&&sn>`0W8TniaJ1^M^ z=PZ~5TO0O4^Li~}NGizZO|?)t#So`SxDoY;F;Mw8i3HuUrsE9{GK;VJlFD>%%ztdl z=O|Ls}mZmavPH2R|HSsVn_#m0T^$GFnPXJlRCg_`x zOJ=@wrdxYg;#57V+5^T0vPjbklk8!3Koa#gC%*MSaUj`tQ6j3 z>)Ry-@x_K*)kq%q@s2d{JGg*bX0erhZ!C-5{C@uJr75^L&zW59S0s{0j}z~lG}!+} znhA_ysl1Ii{+4usm!5O6#=4NuO%Bkri}%o-93V^5CE?rf1KzVdlR71CVvZbFAf4mJ z;qFPU?1USeu*dl!{nh`6ao!n9G)H>K1}2@Gxv7&~?qg35U2maXhf`=!oC~g4`-EF< z)Lxm$>!QJh0xWPyfb_l`u4ZdDsZIYx|C;EKmi)0`8frqhyehhP&n!-;RZiyCXv00v z2D&6EmpWGz;5g$|obOae9C>sEQ_hoA6FuA}8--1tS~uxkXtM1qWR3(Q{MIvD^QV$TBMdl832I+d5>+Pwo$(Q< z)CVO&X0AAOiV4BqI}&8%XE3$r-hJ@s@him1J&uAXt*g90JAr2K-U>5COK$AVTCz@V5=eW>KwNhOUBP?AlN#M%;>8iN zYkf^+>cgw#;2i`0Gml#4PS&F#h9zXzw~ZK}aFO3By@4@P#_}9L84`Cmo(9>>2hQ#! z1dJD@(htg*Qa48`5DOsBmza~b&PE!h?hhkV?h7yXTQWIfBG7h99X7^0pl@ss@x2m& zv%bD3vjgPNXo?&xpXMxZI9kiNuC$}ZrQR5t7>P>jWpKsPWbju;+@L!IAjatn-* zJ@A;m?KueQ3Og|9$pDF2nMJnGSD_WRH-g;0IL3cqtU%>*1WL-N;-~mR^vhJ@PI>PY zEKIw?it=~hc}DxVJ3P}Xpj1ejjrn;qqJmuaH4+we|G~3z)=>85H2J&C9ir_cteh7* z;AjO2L4(shk}VZYXa%Sod>M1q9$C=jAN>1$#UX8$GO!VUZhpM zhs^ijIhap{GDPXg6OCS&h^iA4C) zm*3CL1q*dM)}-8k5gL6YW8G@;WoiaZoal}Hrz}Z8dn{2^Ji(p#R{(`JDx7^_Iv6Nf z;LHUzw8V6XQNF_nByRZQlBHMZ_dkw!xE)E}$;)UX6V7DWet{1)mxBI{3vkCuDM&Sv zW>_wSj#_cbJo2XAr$ET$0jaH z1iSNl>3o?iPFr@5hL~<8FAp}*e?QFu zqqktjy)pE8TBq+MENj5-8f4p*UDUkxt@ z%*IVHl@|4mhQAjp=uxM6sQhaiJep#Go-g$9`dfAKb)N-(@m?mhuWhlq_skrduN7EL zJ9>$|;qaZfjlK*f6^bxn#d+cFsYOiffw5fU+VQAXDUDe=*7U;X&0wwi-KwA8eTriW zj&C?Z6q3YHdrt*5evfqgD2GfX+@erGI zUKjN@=0kvz7nyftEfrN%=h+|%P#xGr3txO9-S-9XqbnW^R}Zn9|I;BG9?iqVf7(!B z^1!O(qyc`^pN*1^L!``XGAY#4g2D|YtkkwPth@7$XC;YZ%eHPr&GM9@LwVAk4qHJy!{f^*BMJ zSTX}$x3|#3s7#^u)p;cLy#Y;G^NH^i^dM2ZUaIyj4)%>shdur!Y_HlpCjap=M&)HG z$*gd~l&}(F;oyzIlKb%+c|j#ZwQzp8D1PXU;+YS_G%)`I**$1P3m8W@<8qD~T=zxC zeJ1GBqJeFO8r<-{YI3N>1%GHYQU$yThpkk=s3#EmR=&avsgLxl*)*^pnjuUI9z_C| zydhq9{a~_xB=%o!=KGt=ErUu#m_NmXM1Jo@a&${QR7QxSWI0kPpzeHAWA146Ay`>$iPLYUmd#qW^dxa`L(r)cpaO|uY z)ee;+4fZ;yv3eP322I27D@XAC!gY}I)P{~I)DnxSK4_(xPPLY52%g>4z%~7+Ne}NM z8|Q2wlrNSLw2;jt#KHzlpM4~4(+T80oz5n2pGd=klR$Z@m|*V-C3N4<(lI|SF$I47 zyP^I&@%X+Q^@>LWs<+dQ?3Z-(HyL{DHG`@{=5T6iG3XxK1Tu|TY|i1gr07osJ(!e* zYy7m?Ugj0e5*m=J$GgZ<({ACi{0MrN)yILj0+Lh~PJS2tr1dK|VoTFODt&u4H^<^5 zM(lgX2J2rYgSLFvnf-4o$p|ZM$)y<1cGf36r(MlnYE*`4kHX-0(JY=H*9B*IpLlat zzpy6Wh~!vaA&+?d*=FH4PM|RsuIT|Me+?Of%5aRJK9F>S*Vj_=nU)4C*k;Rn%~?r& zV>!gSdg|aNT8397v)HFk-_ebosl?4Lg?XJRptZ%%>E`Nw;=p_4-+p%h=1C7pGxNh8 zD{hdun*sQN*Ixg&X~5FW^UyF{4m%WENV_nTyL#M>9h|tD9kXQ_bcR#vS5twjMzwRh z$O)XYEDe@4+F)b7A&f{?b7_0d^1hJc?44O*WcmS1)=4>p`n>c3tFPi5Zz`fDU-O|r zxR@~R1(3n-%AVGnLhw9$)D`l&U1BYyiu97BxtDPZT}FKOio>`bcSsK=jBHXE>YJys zab@|mYe6Z|VVuBrQx;SnQwN#V$@r;L4zD}g;)W6#xKnC`)>CuXn$0cbwZ?SNDR~M@ zE0lNqWvY*dI`-(KG-hB-VPWG`s5BQ-e->u^twvr}ajK$_~6<9OZ106rg@*bTw zR%fLQX9Ci4J ztz$0I&Aqdzj@S=qKftr>{Ptkfk*!$pRFpGV;(`ISL2#vCi(7R&5JDD)k(S$giK^!$ z!Icl$qG(Mhj{#$TZm43I}PZS108c+_w*6$Yt`e(ns~Ng#acca(LkQRbj2fg zi!h_c60^ia1$#~{^KtUE!(UaZ3nA31iO(QoYTBCz6h zFvuw8;P8sMNSbfZ#fAo?syYkjtdk@%kDt=)Z$ezt+DmtHsi=HVmkbxl^4Z<*MB}+1 z-TPY<8DSYd7ZqUpqXJNo^XL2(CbK4QBw-2_GAqXPv7;43F}H6fr_S-dulcFyl3Y%0 zHoD;Li~8K?1Xb=!K~E7k_)TcK@Ln>O2&>}4Od-| zg7P(5{zw)d`b`#3Tf%cw8dzagEJO!r!J_FU zG- z;B&N`wX?rMj9!NlmDD)=qIn4~C5JGPepj%Z?=G7@?H#O6cS1RTmdq84M$5!2csBkf z_NT~W;Q{_WYxIYv8)@T&q)dw|Q7=hh$0?Ha#}FFTcGAG&Ub02HJ;z0|hWLU{PVSWthy0;q*i(C# z=mk8$`Kt{`U4j_Ad%lJ!>ighEuVi|(&Wxn%)Zp$EW5A`8P;2gJjF;O4`-68|gN@DZ3M8W!^DQFcQV(NNP~L9T=Xy>n2mHP%Ym!bGwQ z12(ONoAX?SLh~gkl*ph{)=~0s{A_OahEXtWgAW-Vm&x>exxvJA<+I0?%y4~785?N0 z2>(VeAU|7bnK%AgsKs(Lb6u%W?BOGlQW60VTPD67Q70TqxqWA7t zJjRN^U(ac9Jvy4&Mn9)v4|#5@(=gc;vVwKzd%G?2EphpiG;HnQI}j8aU|)kGPOP+~ zj^r1;XMB|?Pn2Q>D$;oJq!m_pm*CvS3`)zs($#!k$E9I1XjZF0&5j+|>o^8ikIWU$ zd}9v<)Ao?xwxT4k?GqX0-c8k$Z<2tNTzr41gn8Oyjk|e|W5`P>+?D-?viajcrJ)sn zFIj-APivEZY2&${;=DII;46Jtmkm=(Lt)Z+7dom&mo0msL-)*|ijD4X$yx&m&Legs zOccKhrC|YV+ggS^E)^r8L-io{S&{8t^TRjb<8sx$L+a$;vaKq2XmeTRM=lJJFS5Td^2)1pS1>w?8 zaKio+H{v-TG_UcUJ-l|YA|rwBZ;pj!o5FBK;cRaCW>whLAjiFVpn;0~Zg{?>8oo7n zLq4Bv=JnEkns!+kf7ezJC%bhxI-`Nw`j^1xvj3>yekA7IETc=0y<@{qu7ImAM9_J} z7_85y(qNgVY>KU`mD83W+;`2EF8-gP^Ki)NjpBGpLueOiNm5EvL+^dgOHx)OBcT); z$dBwzRw<&TLL{pQC6c=5ToOuUh9WW|Wmifx{O(`Sy50AA&iQ^npU*C6=X?fhUM=ID z9=PHKBY6l(*#`#YmuSRi3oifZYrMGsDNcGPb|51NS1s2OCccrw*zbGcYL7J)Y+EnR z9KMj=Iz_VHAv$cW2C(+A<8k(lUi3CtN6cBvf!D?gW_QL-Xm+%Q=QD=UWJm^=ZQ0zf z@Oqq;Bu~ZL>Z#hnM5w%1L(l$*9jTl{FmFF$;o{45*3t+IR#`%(LLVW?{TBCE^laR9 zeNHbwZ-L=$8in3p2g4S<{x^j?4s;di|@6`#D1MF}}nF~u>eGLQ44@x>#7~Dvc8%KMqQu)CUA!b2-Vm)_) zy4URl*9>dna`Aas0v3YdUN;(jT4ZY<^}{vojbg=KSHZ5>9f776AZtP9$&sg8fn$1uBP$ zN%9@&OUry#-EM$^>;jj!e=AMh6ptC9Q;7o9N$c`d^7T0bb2q4Ba zX83yCIWBF8J1c!Tl%5zE7dDR%AjeyAtY}6Y7W{6Y71f^j?p`2{>aPoP*gnlced|+uUx2g16C|#cGhi8Jr(7(}<{u>jBbJuY+=AS06uo)wLwfr5;h{%FF zqm`ja;ta~GZm`p@eWbQmBZZGHLz)RG;R|sSu}$Zixt>%Ib=uvG;)cW{lIDz&&|Ixf(EIcVNPwgS#D`8Q>#0V zHLG`lT*+xRInI?_IwjCpD`v~APe9s;Ycy_IC;N6LnN5E;fkGY>bBnb4(Do=Dp(5G| z)7HObwO7uvLAM{WH-69YuHkX6T=ery&f7qLHx^?@cmub>HyvXZ$$`nnPdMPD6~W-y zPFpLv?Sm?641(LVAP(>59JZqiTIH$DoR8n~qDa zHGgHbs>RH+MeK+5`mb=(Yc;t0*Idx)KLJ7^y<0Mh+<0MT(q@ zb98TAE7@MUEN0IXVAlSP)G+5XEMQNl+R+d6DsHfv&57utk^)8}wWXd16S+TXjrhVZ z8KML4!yeHKWH4}6k>$LfXg1jZzVMck0}VlRBjN{~S5L>5tItu@vkHgknbY))KFq}A zIvyz(?{S5FVY#^Lm5$s8Cu)B3ug~#V+Ifw)x+YD!Ibetv9ePw=b)& zZ$tAJBL8G&wqU2|1et-^Z2aJ#>`K50vU)bLXwJ1HHg8-yv|R7RBMM2vTI&+rm=;0* zY>r`9G8det|7L2i7vr1x$g0O!lRkrPTuNvBgNgL6^9OI>c#5T$ zSy1Ws0)A5Z1OCVNUJxkk#Zk(m=}-O!+BFHF#^541O=OoGwQ_+g@4T4dtta$lh%uPF zc*+?cdyLDw9l_waDK~Y6$gVB72ES>dQ*3W2-5-1ekGF)9TFi5dwpEkr`e@<4v?tWD z{s4?z84axXDL-zTKfInBNfmyrcx9L!OyXSW*?7_O9jpVv8=Fh z^C_NF7(wY3hC0n_{!YjSYK?Bevo^U{rO9Zf&wlbcIhA_9 zwiUXnI#_}FHGCa^f(^7tM#UE+VeW!rC_QH=lz&hWDq1#C`}sZ;a$^tdmIhL-#SH0m zu{-#8-b{LZeHC7u?Zl29OM|Af(L#3{;ou{R`pet(1b*wJ$I{VFWA>7zt~-3b9~HZ^{cns6W^Xj<*efo1ZE{ZLt7BkwB485?eky6K=R)VSnnTQpTQ5((%Q~5M?4^4{uvg{RVsTeh|e` z=OTkvp99J3JL>wD!tVAj+3?8nboksIbfQ+`L{ zndCt@y;lz7a?V0Wx~sJD?k$$QM2E&5j^vK?F{gQB_eejuR}1#D53$aDr*KvRqs-i+ z+>qQxp*vtFDA`>_SIyhZBB&qq|IZX8twG>FOjlabbe$$Etfn#THLM|VEDu`IAPnnf zm%n`AWY_y)&?8mYD(g!$I-FkI8jEw))bYkrWmYeGuPYxvz&leo$Qo};J1akO5x0+F z<)m$Fj^}<(?u{=9J-tOX@>cSF6D8hVDlkf46*LAPguO?VsLCS=mh>nIlegG$AI}vt zqvr)U;&y+Q<}#1@R@AYriu3r@&b?XVs~M8}*>BiC#XF!a-;Ax36e(o&65{O-V{P+r z_!)NtD(%b3-1a&S|8fOSTEE75uCl_(z!Y$WDus~W3c29LEvGWVN^<^jfxH%g~yt>5P_XN<}96MsS`UuC! z43xeNqsr>pbmK%V%U5s~Hfc3585dQ^uKthsUxy+5UV!Myyo8atjciYCG&~O*#kV^w z#Y<6Itf_k^o$22T*XJpascQnPTc#+?8@ra8f=+OEQnaa2iKlPlRA9m|OQ!80M@mD- z;199$A38skFN=K4H;CV_U*2WzsOezZ8E^)oB-Ou=A!g+f* zq2o=sNuOk;1$0CB!?G%D>0b0JX7g+})5wg2$@}wJ>mLKQx+Q|{Kl*~)j@>lwiU7St z|H78r&#>!^$X=RN#eBkosF{}~qv2D)Y}0%Q$_*06^R`rOKLytfK0(8}V^`zX_XgET6KtxR#(IRA<-1-GKX{Z(8fH&AMBp1$j@_Az_c1i z5`3a4Jhl(-Gfx6Tg4N;BJu{lJgYbRQMEW|?2Ht3Dkn^4(v^!!eo?9x=FMa_tN!S3f z!Leeu?jsJb9ZFj!M*_U)LK}ru^yQFv_z(V0-iHH8>v1m5pX`JSy(O5ND+d|l5;>jD z{ot~r6{5>s*kdhc8vJiEXjMnjpq)l!@uHG3k5sbV;>G_7wPyfO3OP|w>qsd%lKpUJgy)f#Osxj^P(9FC?*RzVYRF)ah zil1Ayu(as={BMP2)c$26N!{jhNC5E zw6Ieb-ZrdeKW1?-@9-Gdq`p(+zAu6{Jy~I5(0bPT{W<;ZnT>C!rO>k<11VU{qHX%2 z3wq5<$t)`$t2XI!sv)!3=4;RSF;|C~yMq%m0DD{8~ z@HM+B>EQ+b*ri>#<SnEOb58sUo@E^0O`G$vIM6zJX z9yIOynmtcjjRs~_WL4i6f((00b-V&-rHvxZ8s3k8xW1Box;p?SPE91!%~Iiw<5X$a zo@_i{T8ApNCt*>;S;4F*6=m}^AfQ?fbW?1owjz-}bp6BV0}uI)$0T5~*pD+y)}g*% z21~~V-xYm?R?@fy^7LbgJDKz1+nbm+o2V@r7c zb}iShZ7UYMUBx_SNTBd^Z(1;Igj9EnBE5ZR!AcdZVWj>+G|8VsN`HeuUe$=!mn~wy z?WU8}{dj)9%UO)lERzfo6j9x1k#x;KE#cDA4zlQRgqhKplO5mVv8W=ncFc@OO{jDv}xNy4pf4lvvMG)6xNp>+%LCH?)iMZfoPRCO~3 zt5X`J{ro6<^4S*Z*T_@T$hlxF?+F)m9EqFx236`hSYY1$qWj$gan>^_gtne!t6d(5 zE?6^qH(?At^EYA_U;xd(?n>J}PGU``?I^k=kNtGr!yl|UiCYphz_ZH_4@3u&<15j@ zcKQOn*>|1vRX(x_6P2k>Wb)-bXRnGbG238{OWt{wo&A%5Q-jpN z$Hz_hnfwr^&r_lJ=)P>(zzHz*oD6xM8iP8^&QX@ZGR$9agj}rKS^liQ%jr|x4kg+? zHnnc@rtGdfmTaL2yAo3*PAyV6{I!9-5A^_{%I!@+WxYOdJ0IhpnTWfc^g-^$Xm}GGN-`e~Vbk9b%1?X9|JQJyO_}0O z)9uT#K#~u`L>`PV(G$9l9H79fFHkdgHPe}u42S=z3P)`hlER&nqW^Xe7WZCD%G2(% zMz<@Vb|brcV*woV&Hax!r^o zH~z)(p5Gwisg@93`J4?ZO~<+KTv({aCrH{j1;k=f%ydmBoMV$Bw?i<7R<^7e2^hoc4+M_k6Pt}0gb z=OQz2*Pzfoy`^2|vQmXaC-`gig_T{o1WOGB{A+T8ZI*G99`1YzABIk%(uPsAeU|6} z2yFtxov$!?m@73u)}&=sed*LO8MyKNIy~bKfSke!lGuzDGsb(EtfnfQ3*Si=zpk@6 zBGaZLH4j{_&Zi*NAyUkL!Mw!|S9-teB;z}sj{ftb80RDO@lFm)OZp8L{#mp2<0|k^ zu?Ab~Dq+nF^U*6bk_I%tMTImoVcV=YaJZ7d9^Ep9_x(namsBDoEi~k}$%cdSt6ZA- zqn+JfDlhVVRbi=#y2x|`7O*E5ol=M35NoktG*dzNS=|h8`=pTXkS};zx{BT!*uu;?JHFh_s**iD?`_$5s-efi~XAQSJK=cDXm?^VVL>|_ltwr z{@iMbUKShmSZ_Ux%`g!R;y&Xc|0HlUE2l{ZY+U3|hLMq_7V(=KuwngW{CQmqH+!$8 z39m;|>RL@{;zN7NvU+cCQsX?#dRV?f8UA zSC+9~O7(apN968>DdMW*9BxA;2uk5Gp>2MlC;Q6YbehABU1xBr_ZMdJD?*yDP$Zmv zx|;%T^e2ZGZOm-zBBGtSLhkTfh<0gXt+}I#7hOji4UdSh2MW)vj!H5KMX>I((q zhcX-63^r)eesB;P6pA$8Ckvi%jrMy{R0z7223ZHbxeL5en0wQnsfTarm$6J6Qa z9reJaT)}O7=aa?fk#rSDQ}^af(k)9wxnD};Xt$aKk-}@L-J^kQs zcOmu?-6oP}dgwet7G^)RVH#KUlgVtArcaUrQKK?}{hffAS^Mvhc$4)m(Zo(1>fdD5YKlvY#pn zp1$vK+3W}k9_df2XQQC;#SOT0vW|C|zl2{EDxnVz(X8KfF~f5_1DsvgvJAIoIM99* zPd%C-4X@Cm<+tL{PhD5g_}rTh>S^I>uD>L^*^7YRUkJ(<{jogb9BP|%;jj#SaJu_L z#{cJpB2XD*LZNUW+q_P-Xijp-mr$d_F$fPn(E$%LrEW5@Hpp5 z-aqr1vG{IXJo6a-4(kmGcMsy;nxz!A-3`h%xzfZ91mhQ~3HlZl%xQER#w49(e?x9T zZ~uQ-G_VvC7l^#}^NNDf=})M#$%?KfSo1d0E_U+AOPaQ7B_6w_0k2J*X~E`E)VffQ zR%u3wIi>~BclU6%Hil8`fi0*z;W>M)J&Oi9pJ5)V{YG1KY_xV*^-ziR9xgGZ74 z;*zCIUpx!%)OZW`W{KUWsYdiAcOea(XbItBhrKCi3H5*ANuPy%nAqz*hE|zS-I9Jp zD>q^L2`7qu{GA;pg=VTI1*6B6|VS?OegoF@cD+cd8>BO`|ZZi zr(T<8_?1B4E3cv9V{dxgR?M8o&Y?cvJjwKcd(q9qHIhHqki1T%Z>)Zz>yDKW zJJJI~>c{af_Wwie8To9Gv%C12@)L7=#lX3<|H0rjV#j%C5<4Jvx6~__(@_mM7?$Wn ztrsN}KQI&Lmp$R)bsCs`c?@@TLlX_(^$FkQyoThshmw(f%%!G9q4+S%i<(?ig+0Er zVMX6u?qGKVH)MV^c|iwN?$nY#eY_nHd~M`^z5Py^bF!FWngaxuM3bvZUwmL$SU7Ol z4yFnlDAqL&)5WtY*P~07!Wq zZ$WP+CwR%;WEFgGk(+c|EJ-{Ok{?D=lFUx-)`meeMtV;&e6%Y}D;^C$LsEq$B*;|&Jo7V(i%mXot6|{AIl$`tw&#- z2IH}#Q{ky&B`s|;p`%gGbo$zOs2pSnLwrZm%NZWRO%c;tGD8)}!r#9(LIas9P8Q&j`q1+nm^R}yzk+Z?t(yu^;D zXX1L>ov^C055FQXgSj4$!agdw=vjP+iE=vD+S3~vbKbIBF}ooB1<*_jDc#)j0=k#@ zlaqQDJlP=b%a-&d-H<`_qG>4}uwO)6@KWaVC6@?@RkSO>ljQ5iU984hwh( z+R*I=oqG5h^=3;PxvM(>>_;nxQR*)Wt8=%jy*$F;nUXsFlekFJ+_yHhgQk7 z@$yg9>==!^pG9Db{6Tu=myX-r?ctHy?29}-FlHt zZ^Zl}?y$T1pRsM~JFbL8{`he@ID5Mc-Z!iPIrmS@yTlT%=!ami$6A)V^ch!HFq$@b znB(n7Be;$?Rq(+0Af3!}r}6`0en+OA+oUcF(3}N9;*QGY>wFCPR?lP=8rY4;nQYWO>J z+*p@d20X}!2KDVXS$GA5Ub0qL{3IEt_8Wi}d6!^LX9@LQE6(#TT!YM=o3QJsdQtj{ zyWshB2xe73WJ*i5z@t%|72CbUk*%Wp;>bldJ?|n&_joW>YXzyw$u4$viWzFH{f>{C z{_=mVt}@@7S}ZpEDSx?f1tuC^WhK^ci}wHeC2}fs;A(a-oqZ^>PEVXD0&y?0?DlPX zV%Hz01O%{~JImOCffn>zzCdC|=LpLY+NP zOH(z>!LRQ?IMry6MibiEqFaY4!NHHpoKCTC>INij4rd0T3J~WlrRx`T$UV*mDzhih z+xu0R=G}|h=RD%C6@NwVg)_*+?i4?yTpr$Kjw1h`jii?yHrUixxwzRyli*-A1W%sr3pyDXCQEvDRdpo`XpA<_f z%~FE#*)=rX&=ZnvbSZhs2w3p!JSy(bgiDvhNc;XEh}%7rn${9z`#z+gt)^h@E60v< z$)MD9533XY!>XtTwDUc{mKAtV($s<6stFfx_JT6@I{peii!>!+LLn(U-GdkR8Ihjn zE*SXmD63Jsios%5s_}=8^y7VZB$)xy8_|>CC8tdG%~nuaTL7v~iP9=1eQ7^GBXDvG z5zm&l+05BaRCKU}Z(Wj%Z5x-;r&srRpY8&-=FNT@SoW9+7n8u&#u{t}7(nsbN}89S zNm}C0DEb9Sylxb59lD?CIJ1Jgy_t&71qt*J^PFld;F5RZtSAUl zvo?}ZyfchqmFx(&48kI9rQ?hcElJQaHgmN-(6*-+{@ zZVfMvH$m0zE9}(iE0pX#m9~hT_Ofw(X``wN_1h8&UUMIC+UO}VW_PhIuU^4O@tu9g zte{BeufAY*zZ~ausE|pfqOkO_A^6?B4>AXDu+(c!7$|mw!)E`%TrL-HZAqi)f3@gc zy1wwH{}J~0vX>-v-*I+nQKER?YNVRN6Yyb|5^}Tp3on)&gCC-^NMZJJx^wabIn5dd zFV~#LDN18u!a^1JCYws;H4SY2pNBZq%?Wzx`3NBrSN7#s0d@DZGGD)wc)UFU8&4Ym z$*u?eZ3;BS$(C$i^#$R%z%Bbe5#8ha(t5U@jg1{I>DYH2lfV3ASz^b%xpW?V2}@x& z?}_uB$V2>-p*dWG$7J!{c^>5w=3)64AGrI$ku9m6FYZX+a*ccZ?N97#py!AV(|J5M+O%{?(pWo=Veh(Upo|)|A z21*K;OC{HRs5`?Q4t%P?J3&L>-J>tOev_ED4r&r3Pug^+{g*_xcO#eddpMN_JCLrW z6}0s2W-Z%9fAsP!FyMZ(*8I7owZ)D78=OXmu2iuLQTwRjc_vwRcjAxjHmo`>4bFRP zq|lL;(kDG7xbQzSy5ll~kA7CcM;SLWTV-!lzx)V1i*xAW{98=ttGwVIuLl`>FY%^g zH|whGNcJ~Koy=B0;Ep~&0$QUA_^gw;&{Q8r*>B^ZE5@3}KCy)6IyKUnDQ41_xspdf zKWRjb3#|D)nD6ED3vF+2;9$i-!gaktyUK=S*F7rwbjO<9Zi#<`XLV4q$&o@oG_p(& z9rj`4eQItWBgAr?aO==C>4@D+QKRGuw)~638@uF%ZwUfyTQ-P>#Xn_%f*bYheahmz z5L+#zLZr!I3fD^_+uKX&{BdpRDluAcd8`whR=>%%sXD;oHM^;SKgB5q7}B5Jwd}2T z6HTw0MADMg(E4i(UAA{2WtlV@oZc=endn7p;2K7>40Cak%pj$;Q}ILCJ$7=j3QfLp z1w(6};#^e&GL!EGYh%9i$FuUl^8FjM8#0$H>y}aUUk!m3U z(9g~W^>ZH5lI{u`-eLhVp$fRK{tYW~SqF2bN$Jb-6%b{vEliBN%T|2KpX9Q*u(A7Ufe7a)96EFJq$}(4X)dZIsVKs`gjq{pS0;c7@iw8T3=jU%EuMfm8bx%LL0L?DIJdckj)I=^1CK*_@MR z%$NgiqyJ+v_zz%Ni1hQl*>v@sBDTg)L&LK@tj<3Nt_^Qv_lJH3$*UYNJsc!hxZYux zCw5Wvi8I`dDdIh|U@ERl9Yd#Tj6|OPH@5r0F0lUd0o|M5vIbubA~_Y%EERBz)RH2$ z@1Sdw_j4mJBJQoIfOm3_*sCdCaH9SpTDvRJl}BsHSL#5MPH95VjVCV4&)Hx^vAi&o zvy^td2xflf?yz-7EvFZzOR9OYLR;=R;h|h}xGID^fUwM+a zI%7KiWhE6>oWUJpM)R)UY$}Paqx|FBXohnB4tal~uP!cd_t$XPKW+kZ8#WH! z>fgrlkxOaw5hczC1z<@%)aK%UO0&V@T=>caBPnMJpgX4Ct7ZlKiXkD#{N zKx%URI1RjFj2e9w@Ku9$a9!K?^9EK3o1zH=gF`rr<%+bfa0&N&r=~dDXv5#V@33X1 zbzG%%3r>k`kywt97e*_FTZp&1`SsW%rv1Ft@>hNi^MSa)T*JR&er$mDtz3hui9XxHV^!iVh!~j+@1f+1LfAamnTs645B!2XPL5 z$^R6t?$e*y{a%X4bn1&P?Rdxkp>Ud^t%65gJaF&(eY`@`HKt_N!Igv=l3BJE$p5~F z3AL+XV{Ivp|7;8vW%~RX$EhOI%pKE@`qPhD*YLZKzZ*U>#()B* zAU~42%l6^vQ(K|%*Ls*!^PQs44uY)dF4PmhhgO;BW3V!TN zFL+_A;TfjjWFtMjT}$xaT+H6aMNr=qS4gdkMOl40@(rF%c|N&xOqW5Vyeag(o{k_s zx2H;t=+CW{P^n@B!|R>tSkh5S7_^A=i&jvu(`9J>zPBVnRYwd-SFd6Arhn+BO z_Z7S!n~K{ll!cF(yFlxS1OnG9lGArr_Qho?ujxX|`1O=rv=66rI1`(ah~vIkLfc|bOcdwvmA^)? zQj->PEB}UR#-Fj*G!y!=#*qcc>@6BcPua^JeM(d7!#3WZg)b6!W0^CLx$E+A?wUC? zBY3}LxafBIqA4;GW_z*`+2^UPRbR~X_JyN$`)K9Yp^O`!fE8XwbX>8Bs`h)r(z6|y zz4AJXM%|1;}pkRvu zG+WP;M*0L&+eTaV-vCWMFT;Z_y}ZGG4Y3zKM=n6=G$V8n|F4zKhSQp#s(i$-o3yLQ zfn1|y>Du-28M{9!kLDMjMD?G| zu=lkR7chJ%t#K0f6k86W$E2z3{*p@&+j)hi_9-LJAS3SPf_BEAPypqgcf3ij!8GQ% zJlAB?28B+==Vz8s!iOAow7nOU=q;rI`$cB^g&kM^ z#0PnSkX7*!9SYvD-0EG}JW~UFFCXMDe4dIe=B4aeK7&u+i&&qhh(?!W@X3+gY-@HG zdUg&4&7XQW=z1a+rGLQ?*%3HruY?}H1DY51iWT2glKwvLQ>2#TPFc&kalefRo1rb< z5fpBT9uAQ!G$oTYieG0?Mcg2-7l6tqbTX$B+s#J8fuYlBs>KP)2o}4us~58**8%M3oof>17CQ)U>?O`u)A7WM zbogUl&-*Hrfcmf#IQa8U_I}GU-tp&2Zu|W|c>81&D=N1nVSFlh-JK|CyfB9WpRJ*6 ztP$}t`FP=|zEry2hO%1*3P1K)GP6JP>9l_(_sne}%+Q!bwVJk|E(v7r2gNMPf@p|s zX`wM+&A~}@h+ttcJs#mf0T1TVpUaCW@}yMc>YtMgY8oP08mG$at8Hji>NH;dR4`ln zq!qt34W^gFHOR-~2e;ZNi{n2j*T)L&*b2Qdv2HFJFBTCm)?gCM%`^AASL18;{}8t`{^;e+3+O z*DOpcjUDB-dL2yrah@K%v4G3=b<6@^u`;q_cF#-LjN?9Z)#)PL9ajodzx8EoU<(^L zB8=9KJ;>CCn~SWjP&(CV1J8Zp@Y0O2toV!swbF;M&!->q<1L%GRbFwdcC+XPpE#2Z zJp**&);O5G>K8KznMt0b9jM^zU>dCVp3%C&kRPy$Ee~CZAKuH;N#ovhN~$a}$fk3L z8X1J>m@>n=!E|Z11x@A-!M3697~r}dCU;K)?G=C7VDW!zzS&i%GhQR+ZwF99`F6G| zO#wb+h+xgvhtT}!3)pq^0$i4uO5Jlg{MisH+}dhQtG1~~hp3v7Yu5t&z3d*}JIjt0 z`WwQoO|xl2#8KSWyPZNVYQR}#eR>hKj5Jo+3R_}|nak2fj9rliGZsF@OqCg|wmq6{ zj2yXzetBl28(}v=U3u(oeS5*8~%z3X3Lo1_=;``j0(w|q1@;kPRwr?;N z;?Fmc^Sejf)XG9EwVf@@>yZ_z40Fl6-!Qngt1kpT_NJ4SuQ0}|0T(zoGwFdLQjF8@~)e_{)2?wW{!uO#$Obkt8ae}k6Ra?Cw_Kfm?Md)gVn zvn#{IZo_hQX}CimJC_*y|RbUhKu3UIn0>i zsul~HKN{hD?ojF9MF)jV*iX1pv5*!YvZ8AFT6(p&p5D!}rwx02VDzY9y!vn_O)WXb z+#bqGhu8EKJ>{J={fQj)cJ{!tZtqc7m`R7*-!RF!Smu=Hi=#|eGA%BXHYP8msX8XK zS4|f3b(JBsVkuT+K4x_}mf-RF4D(G;q$7*hv7IL(aAwmi_}eOWl(`|$=4b_lGpqR1 z`|hxD#s%#5uQx8sMSf&?%OX4>?%3Wh^P_cNC2+j1kX^VM263r>@U_fBF;C%yXDj@v zEc75taac-coi5;@ix+v@dwR5CeipjMC$X0a@$AZiHC%%EP6)WXU9j)^z&O!C;>~%I zTG?dM%uquwpJmLyz#aGX?+0pUYe`q{2eW&%kKA5O6FIwcz*gIm6kEq)qv$O-eK8D; z%1yEK=?I9d-b(XrMzhfWuJXa#Hqqj(GSqU_gUw#>fpt&2L06xgW&OvTz<^vM#A&N& zRlo1-Z(117_gY3XW?q0%`#dBEbj2KD+g_M>x`*xBZAV%k6=>=96ndn5jqgx&z&#K5FR#sL(rFvIHERUL*=~oGUYdt(VpxOf`RuWP2;7taU< zSvJDBe?_>e+Z4E27iiJyD5Ue*TA8bMAST);$@Tb_K#n=RGj_ ztrX=`2N%thSwY>QJ8;8CBN#pD7u#+*ke25r(D?iB@N0>I^y6}`c{6jr> z=Nb(QzAGc=eFW2~k-PIl8*|*oqpg@rPw*N8mj1fJ>FO4+SXG1xW709LN0lkL*Wv*^ zHTYru8Wy;v2xt16;l||QoZCsUd#18fuyqU;26&#u`TO<6jOq>agE*Y6^%$k{4?rj_ z;J1A_LcIt4WBn5k(NHnBmYzHco>@1u`zhr(D53<8q-DV;oyD*>&>W|3kEGvBi>7Fp zkdNMBQoqC~rAwLKE8b%lCwj8wOH^U>@WGJ%+m|z(lgCXc8N@ahc<_NzNB)S)a+)(D zitqWlA9wv{PrGg_P~IFDR`hZ#D<7{2Ru=cD!EPsfUv4F|%oRN|a&=HBxX{PI3%I=R zYKl1&fg!mO_&H}7*#&PT){q5l*9zIGPm|%YwH`cn-6#Bo4Qz~7I(uwu4cf^Er&0r^rk1-FXQP?Wf?4z6?#QQ>ClDGN8n&j1M`!4y{Th zQVqxHv}BtTEF5bB`6Z4Z2aOndS9HS~#G%bIHF!KbgH79GER-GGDaj*u?!WJSz(m#x z78{B#oTLhxcRF1-^m-8_>(6JN4PSVP@qEyJmBUW=(Sf|Vow!xAhMAa&y;M&p8u*Hs z+1mc}^$?Rb8|1^DIXqLS67%%aKGQeJCG-*ZuZp`RP}vv_OVk=z@zv|hyUb`X#g2Uc=-zA1iW9xJ{$i%2GeYa}39pfG$(V3r-G@KGY1Ze>fucxN7;M>y_B} zKH;?7avdFd5K|;GZJ6}C`f;d|_%oqgm3>GzVj6ogasMtAA-m56=3F#UDq^PKgPnlr za8`U*C<@Nr;+=G6Fzz~E#_df%kDE^>(viy*v<7Vjy%=O=oi4(bx-hEIZDAMAM2Nf9 z2%0%=7=>RA6U#|=sCs-E#s{U-xx_`3B6o@WoKk4j{&j5Z$~h#-3}nxY$1#%Ahfirn z^e}Zk21PC=KizH?>&bYOFT%%?xSOC>p@jo2+?OLAE`t?>K= z4eS`OgB(2i(Qkh>^0O4rmXBoNTQk7>4kJ=f74L@!#D1NgDIKjAy_DzNNV6q`q6UjR z(?=_5`y>bEY~=;ha)(lXlRcm^fv1%Zr8xH1AZR?pQET%({JW?cCY?RX&Pff0VIK#O zL!}QbeqD{*CwD`K|0=4uJBlh@+V~>lwfLsr2V8sG0fx{21`6x|pCr){^gN6yGE@t9 zWq!s#o_=J$;uWTA=#k2f6ZAFl9{)8fo>Z!|xy(pcn)+`wo;W_57PkH2G8JA+-hG+M z51R6n;d@7>a0i*ej3vx;`*r3aX456T0!cpfDR)?qg)K_@5OqmpZ2$O=4fb9LN!cnC zb8!^>oGwoR15)t0a||tYuEm9)>?jC6;WUdmEU_tP)tqLkS@uluNE z6f%;AtQHv`nW6AI-``*T)8kQ(#yR(WU)S}#%&MCzi^$mL0H^-mWYZ_KP(kS{_=FGW zjkomztNnT?*^xz$ym$q_;m)@@mj^@TnLfY

BYNkwE5rtgoTSCt-+NnzvgWcm@B-yci!m=iy1bwKzfUya!D;1&tPzK{9{umiurXb?(ISeJYp8z1hwXvpgN@vz4h;T{|PH zJQ>-z5}Lo}E15f^mcFJZ$ddX=&@Qcq*R5Je(}FBint!CG^|2ed!RJKcZ3Gzk`v}nr z^yIq$N8>9$eGp3kbjTxkI9>^)HYg*v;xjed*U$bixk}1ccwo381KtQ~Njlq_6;YmRu6tNsf~ue&8ARqlWdf5*XPGb4z_=@27KqdUA4iSMu7 z0^d{TacR0GBTyWn&2zGGe*0!Z=v8v4#GB$kIvX%_flPGeZ&}aZl9Z=%pna?qBmX;! zwDH>WSvj1DJ?|f>aig1uK-&&M`7rl#e%uf%J^_~8`c%&(1f_t_|H!g zqgTe!`)>UhJUkA@oS8}v?$)cO1^mtxq7UPopk6x(Ui{UcU zu)S;@UTV&S>7D>V+B2Z2L!QkO63$@G6xbT~2|s?*5Sp)C1fI8w*)=OhNL&37ou=Rb zi~c>O?Uwd@PS_GB%zI3qkAHv#s-D7cN3+R14^iPfIaQKjHe0y=X+Nlpw}v$*vY3oy zdr-O&%Y`;M!|37HP-cIeY>nPaR@pr!wcj0toAbwF`=z^d#ITf8w@^Tn)dFhr<0OtB z8X&vZN8s9L8W7W-MGhF*^6w&j8oJ{hnNmCp76hw6KObA&kWdGMlmF6!OR}hQx0+1( zwTcs(kK+2r>2v;m@!X#sCY*7tCD<0+q>3jFLS|b6?}2G0wa)Xg%5ftG`>JvK6?k6% zaw}nz)*WWaf3DnS2d?H@!z!p)Kbw4265!XxQ^@k4g^WaABdzinO*^-~#7R5y=sCsB zP?MIDdCAvAL)v$FrJBG1p@y09hB>cAyL`HX4w=- z^8HQ+C4}fjL@;i%4W#?>8TotmuyUU-HdlLMw9h%THEd%dCnnH1evVr?!<>;hILNez zHP%crI?tqJO5w`6$4K6i1X|bqf=DaJK=SNchoK@G*;f|F4rAx!6eG@a(n1iOS@8czC!0S3Aq1O<*D2suE0(L|&%3 zinZkQ&52lOD29^TRI%^k4>C9U87WNE#wBtIVCyFiX3o~QwAcyf+Y8A={dBBo(k0F3 zrO4n#DV)%=mxR}E0!0IJSQfM!TTbXwJ@2`!qxf9B6PXI3@?lhZk|!_|6rqe~*<|z& z(qIEUoc;3wS-JT!kxSuo@U{&C74zNLWgx=$l_{c4TOO@;9*sMW?S&PKzmTS*#keMC zDmr-`XIo5r*oPHe(D!eM7Lr8_+GX5-&~d!!`L^vAkv_HDUeW zZBsZcYpbVa9D$RoCXu&0&r-{kdSKcq1&h@mQiCz6jA>OWec%*`i?z~8VtY20bX>tF z8$Qx}_4PDn`C@vbAeK`wY=2i2+cD&K)P(*@Xz z%M_Rk-h9^D>=U1nQxW!zKLtSs?(pCES!hV|xa*!JRr|~paN*w!{I6*ZF6BkJjDb^l zvQbJHrLO|n4Qsj4-a=^N4N~XN*w9JJd#Uo;GxYMA6n1gFAJrMQfkd%UwEUAgPC3Tk zk>;vHx~BlX=*`AY^DT+@%5u2brv)pwXQ={j@5{vxS!P=#??PXq;z%+Y|j;F&MELObbc!q%Gz zt8P3eN~dnIM@==kiQaeVsKZlmR5gD;8Jk9#d#|A{Ae7$!Y=K9WUlNb*(=6R$31ODj z_(Z0c{(b%nHwBFa5gT<}Jmx-3cKJfjt~^PkhP+YiWdT`rYZD%mP9ioUR^WA1hx0vY z16I{@g>ly(K>GtfEbpI-e<#Ke#_Tidc09%#YPQU3Uo)YViXQBlpoDJ*f8oc7F8bm> z6(QSGMvY7ku%2fYqxbi<_|WPqo~N>$MX0HeDN_-8FIOZsUf%eWy5O!G zNaw85i>of94a~q93 zX3fd|7Qv|XyU|yI@6Za>6}l_(T-kSy_*TLX`+2YWhnK3{Tdhd+GIfG}*9I!u`;p94 z_+M5(6lc4>BGY(YTq&O!P1T-&wQ82A)fJ2%Gw-pB=iUHQDIH?gA_`jSLY^mkkWN_k zmW&=bMWxr@XYV(3pzYBNaIVAsNk?7vm!VUtM`gg&n!ium)&a|bw`|gAgY7OS?QS3^qgv# zyOs&!9TG9s67M5ry3$nBt-a zLv0^$R^2L0xyZA0Z+8-qaD}49o@_kBd(Fja7^EHi*JjCz>dU0%OD)>Izt4^m^10@d z%EBJIWUAi8=d(grk^XQ#|M%Z=E_vnxy7Gg)Fwo{1aeT{rqNXj~Kri+(O;cv1sBGdTb=HHYXU zwNPB(xsWZRt-&~<{Gm(t)JrfXyX!m zSE2#U`zn}cZzoZzdvP_HE) zKc2aX2lW4tkFI&$<>vHJ3t1oE76ide-k(E?dOa+SWRg-v`MAldF3e}w&!{jU5f&S;` z^oqI>_T37`MGMNY>CGrODRczYQvmNfc@By13HWaL45OoG3oAp__&Y-#W29xr>*Idd z=;H*!pL0;@T0V*Rv>h*+9E3T1PvEhL3|JSQ%J)ut6a5%txNt`n-C=DwvQ+z{HELG5@}n7CRli9(t-{hR54wSjTgev_f;S}FLN}U8T5kJveGbT zW)->XuZO`}7ih;yd(6M8h+~7raM{vKYV_9@-n)*+(vcBbT6~!#UpIhXUkxx<><3dl zB^g^Z^Ps=Yhs;?ygDmO3O)3MX2>vsurx}GmNbsi9bo_%$^j7C2JRP!w4evQj9D|;* zjS-4;N?a2OzC2&}U(qghptCQO!Fv2QxFD}OV(EnutP)~b-7)sx}(;WRv_a)caN z9t~$V%pk`@K-y~&h5j1YeUrT{a)_6&uDn|`UKFc z7L<9Di2~Ib=$+{&lsGmQ4}Q*~iC0wN*`62ZkZxA9c`eUR5x<46JB(>gmjWSTUrDvY zCUDu^L4yu$!_(%YaT4#fXufo?Mqcwcj=3TQ|J?qg=k{h)-MU{*9$BO~X3m}pzMDJn zvX&!u*hKbQ8lP?-KtwzHcUKA-$u&hTL19PNq({jm^<*JY)J4DO`Dp zUS;I*IPYg|-Y1GH3eKRX%3sp&WPtB~DG1-$eFOU?GeBDDB;DMgPB#plVeX`xV1K(M zmA!C)uDb6BIr`^N)4c%}A4D{WZGn&XHE{kjiVvbZi51T>`L8yXy`hrJ4(RFNY>Dl3 z!;);8pEsVIQF~9jVn#uz?kRGvHip%?>4VV;11a6)im1?ix4+^CkroXnZj>Hf0PdofX0wz!s753 zSUG(mCZBsjSBt3-<^55#+oXzJ_}NalNvDzeJN&@+FMQF?-2lgHDdFJjXu@qsBX&c( zFv!mpiy3Ef#H>YdG)@=%>UiHt=S4~a4EP>rPjHX3fcZ_a?2!$fv{(NFy`H?9J{2ot zdRG`?XtpFi*zJd(6)n*Io+GsM`ry+p8#q(G3^VX1bHc-3d>KyEscb*G^~EA6#>^n^{NgCRpNp8(D;+1p?!J z=CDY5A=!6Kmd4E3fmO+oh}m|ayCj1Om#xBAUJ`IvAsu3m9w1E#Ry1_{A?CC00w^-N zOrjQ)l9_jr&vUAf^#-qroYOHiBNMP-aUQy4_Rt<%Nz8dLld8)P@%jEsY{rd=P(M`% zj}P7>=J%ga-=Px5eBwF`@wO(TDlbBPl^(78@QU@5PR3)A_sPuDV!S5W#J)621_h_* z^t0S@{MMR<%`*>^*e-os)x8kw48_3VT_b(6_yK$^Qp3^=4G0<$5ssNV6ZJ-V1#R08 z@k}ZK@$lORX$|IZDC-HyzF~=Tg^c$TmXY6xpXJ*S+=m(1Bt$)Y^nCSs} zI8gAE?){p`+O847>N#CR?5P2~yc)$pBz65Dg( zBz(>J&AJ6!V4!F)NkX2*RFSy)UomCRQw2H91cV3%{f><)1lhom@Tn5 zHyv|&FVWWXlEULb`dB_aPO#R_1pcZlLYEjdtlos=)VCI@xziLF&!@zsx*q5J?FNeu zah$Rvm%q0F;A{fdl19VY1N>sQQb4{9Zx9$QUQ8w=)xvsh@o6T|!-PHk#p)(yFp1tq zIH+HZZqf6J;}$EdIhO;+j|ZaZo8=g^{TI6PT#D6?H-moAGqN{!2ktw+9$yZsz=2bp zFe4`d<8P_LZ}v3p-E|tCYWU#|%Lp=WwI~<9tAUK)uM6QHcETSU2Pz)H=Ry`4;=p}# z*xNI}&Q@umc^g*ZHX{wJ7|fyWKN|4SGGn3b@mGS^1En+&rs79Zh(98$a9-{lF2Cpr z=x(@9B||ol?|lB($<>Stm^VV#s;ooBvT-1{@Gd(LD+Xz^c<*rA6CA5#Ei_3;g5S$N zvA>TiueQ9PbY?4g-WCMM=e0xC$SfG^a)uSgNekD(X$)Q)3I)2WF{|t^ zRh!m@DPv37Maw3ET|e(1`ErE7sE>p_qQZnaIFYYSFNpZqOGLjgjELtpqV>1QR9qc| z1Cz?&lIwD6_{NIf(XhfDfrl`mGk`l|e-z2mG~u^hd`F1UZYu3|l{QsYpqbZJxchyW z9_3_MS^IPn@oFN?u8PM|&U3jh+xd6f%cY#WGvC=dV>LEy*@xFly{YW?Ao_}*p`u2L ziKk~badMO6M0nP#X5DzKXjXuyUw<-Y1;J!|moDzAFe9A2F2A?=V!rEtG|OHT&W*@n zz|i*%FXzeAEi%yI zyB+teX``n?w_;L%2Anz5Ls#hOp-{|8z}|a-x*t^`$!9s^9Igs7DZR|~Y-!w=+CvtI z&cQdIC2%~O44j@iW=QeglMTAC{ig>m7cHdkX3xexZ3U>9eTzA-Dk-#{?gi<`)mgc9 zdzm$A2AuSV2k z;}FnP&9?1`W}CMYvH)~ZhYb+QT@Ao)|NV5{7B8|%l_6y%YlVt81n_(LExs$IkmN=A zpykqqjH1{n5_s)1-67&kTkJ;Tx%Y8&iRM|VoqC&oc;QXMcD}0mE13WypO(;ZL326N zfJNA`b0^8_U%~f#^wL5Z7j$ShA_^s$jJZGG$*n(y3l_=4yC-#UR`UUp64p-CoIYaJ z(*LNRp#ip>4F~UC{&;TGh0(oz6bi~tlGW)kKojp^O2z)bXEnIZ# zf+@mZ^mWx~8oG2mgc$Ozr!h8A>}L#Cl__xcg9=#i?1vpf8DZzT%QQ3_G5>$Ou{Dk` zk~)*k*yu?2-Oz(==Cu_0J#)x_?^4Z+6>d?uOtX-Yvj8UgKc5u>k6~2b0{|#VGZ-j*YuJ0?KxqiDu4x-s>*` zHSpHkxfY#)Xrs@`z+)h4Xp8%nKi^E@TP%P^{RKOHka zhB%s))9DAEldj;|DDNK+bB$`L!QT&%HF*I_-f$&*WIIXp?K+ZW;Z2;Dn?rp%AWX4_ssmpWObGz-u?jJt_IOaGKw>gZiiesc^ZPt1h1OXcyLV1VewDzjMyA4pM79X%QQ5L)dVag2k4 z&?`HQq`jF>U1E2$cK0`6YrYzoUo;U8C;Vi@Y)Z+Kjq<{5@4wZtWB8w4kTYp0P~mnb zp20}jWkM&V49-l~7}u|-J{!6X9_nqa#E)-RZhXNT8eOUE#_@jXc^jvpa+!=y0z>rzIybtb5N z%c$D$>i|H5}7;SNm!mX4pbzQ#mdX+oysJtv^S7u@%##T z4R<1&>CHd)?170{DlC;myF}hIs$(yKQLKA;48lychGs z1PD=f#*U=LX!G?qwe^2cb70O88|1bNOjjz9`X4E5##0CCefk1*VkGfJvII5=`7Z3M zLU^mKPvz6z&`q0k@S|NKQ6D-_U2e|8w9IzGw7nzCt)9`rMhmL?d_QPcjZhsY1ymav zhn`b%!RuNNGtO*0^WDG$H>Dq8EPnI4o5pSINJ|!EZ0(_9>t2%%X)g>t!Dr>Q-tt=R z8g{K*G5(ue2dDpNfm?z$n9h*q&h`w@ZL;a)mB{kyXAeBdQ%J;y$O<_AJ_$p+f6xG4 zUs=>2gDox9@br5Ld*XOGxw7df+W9J=@i<3Xm8QdI;B&BB;xUX0kR`@a=ICL|Yf#^f zp-pTRbVHIRk2}u@u;<<@wSp(#VY2O-94^n@2F>3W zR1a0{V%b?)c&u|Td-F~W@h_i;(`W6a`&19(k01N-iAN@lH5egO-41X3U4pC5&xEJ< zq`ATCnviCHpLjI6Q@ajhZkvOW&{aW8cy*gKbaO{x{Tf|#T6`JDWycaKr38B%_d}U# z4K=sfPfb4C!%<#~eE2V!uJF=+^yxk{+w6tS4i-3nPY&+uY@`!)D`0<}85uMBGL0&| z&UkJ~qtaysX!xOl3)%CCYWt>uApQWIaaxyiZ0B>9sh*%{@{3Ns)=E6*6w=*{3L5S^ zKs%}!U=A+C`IWOE&%~VPrz*j@wV7-t=VTU zSAWnfCu1$u=&OG`LnzRcbmfGQ#(8P%ZLtjMGVK!2{^RHiGDOw#2dUPx>uh(}8=`J= z2EC^$qgnI}%+q_zUaZ(6_$JxFINUX)!aj4zEB{MuY;@?e2WwGyFc_tWu7T8Dp5ggK0pua_Mo{rzn3SR;P;$HlDF3bYIki%d7cO0d}xGcL@vSaaSw^< z3Qy>hbfrg~YG@+sNC(3*=$Dc|bl@tVTj{cEoeU-`UY$DDlBZx_~2kd)Xh#Mcsqr{<&0vDa}u$yP@(xVHpcH=deR;|cwRPrw}0MI%io5~lbI7~Yqu82xO$>EiG}C0Okv$TE9_n~Ojop+lQb!N@E3|fy3`^% z%Pot%F}Xxz`Vt@@We_f>29q~0jQQCt5H~S4blqPcCg%NNFc+8O^8Xf)owHZrOpV9X zy=wv#jG4+aUS(1L{$(cq*HYH2g7+g2+-AnIlW~PqCnm4m3%^I2n5@ygXuHn{)B>DP zar7zTFhc@sZ8SLX`K3(eq8!rwT9mfrd|}k`65-;&Zg5JH7Bn_Clf%YiXzp4Sw5k~k zwr~EUL+>2$*cpAHzeF#+DbvN9^CF4Tpfh;)Dbm>ub#QIRXsF0K1Up^Qu|M0L#z7d0 z*)HV!b@sDsZ_04Bep~Qc&u-4|nh$(RY-JSZ--Du(iQpk9f$D1`^uE;_o?$wU_mb=f znW7_bes>Ai{XQSkdlT@B^-^j(*o?zj=ZVv4|EdNBL;P6XM1S_|#Kwb7#B9cPl;Byg z&n@z3%!LbNnbkBbx>0~`{Krm_&FF2~LX2KN6Ep|^WBj(y!+9Bc5c};ob&MGxonN$} zE~gj&P8WPP{7H7+$iV9tI>?LcNG3V{B^7^p z8UnlqX^gQSE;fuq-RzTe$B{tPOteLbz*yq^JdMdX8bvbGZSloJAZgP!FlWx}VBYyJ z$Hi?CL`7d51~#lFk>Tz1?1}yO>9Yd%Hy?&bF-1Bn#hU-0@PW5gVVJSflg%+~A(mf) ziQ?L=RFUuM)bO_e!GIGpC;t&%X#2|?aO@?@>)Ys-lMCp>#iE!yDGM(D>7^fRwdpIl z8NzL=ZTK6_T=et!LM^&a;>fDoFuCXjOi5nH)o#F*(0rsst7>gUs= zQw-rystQc}c^nf1CBa*Bw6Im&6Rzvzg0F9dAb(K6rEHxG144CD(VI)x4rbR}{4qzKRIXElX+Iaz@;}zX z?|s^Qro4*YncdB<3L7TDXEebk<0V)RxWL{=i_tz>TKI9d0_Z++#v%S*AL9E86_)HH zhM6I-J~oqU@wf_cfBcAW*>_f1Z3%92=>wSZk>*u>C*yuNkkkYVt~HRKVa`_2ZLXQv zf7XnOXvAX7ekVL+%6k)1t$3dGbVzwP69c9Sf%C7xvQeh|Oyz^=y}QsMu>gZMS7SiB z5?H=DQFG(BJ0qhHXx$OPH27-P=q2nYw~x3&$*VDN!(s{9yG#+|#KwWz7>@Nn~ZaA=gl#hVf# zddekSvnY@pc;G?(|M+9!i8##Pdy^Kg2*Hy(&*9dZgP0wt2EOa1gl~Vw!|YvYn0#hB z{_0T%@o#_7E7O6PZPcbW&l`e|gf)D>kdHDq<50HgKD(jPmvuP&8Z9C#s8ZTZa%65F z+9uuR**;c8;Y=~fIG#&}Ur4g~i^Xx>B{LEfxfv&JTZ>jJOK|3~3@qGTPHvn1W>%bg zOP06!aeI&U;w|30^E^3UxJw}p6udoPTd^TLo}nP@G~>U=7&{8#twb$AgME=Qn;F+V z0U|UWaYxs?!(UTTPET$vs>bEx8e3iV=S~^+uyJoqr%@2H?ujhf&_HH%+F<4;j;S{@ z5j^aEM+7(WN#ch+R8_s47>+U`PNbsdX0{4;&*Zt##+ymuz9yRJJq7-qE+yl`_>7vY zDfO^9PeyLl5CvT|9QH|qDOZiL1u527hSZgQGN?)#VQ*p+MLYDTihi-L_~yt{`BI*i*K)h{THN0>!C}Q zxbWlocr@I`;IqmW2P3ANNP5hLg5KE-eYOj|+Lbwv}yTC{1Jo)nS5N_)|1rmci*KArbBd*5pTkkW-K=Lp6$@>BO&1JYA&3RC#IO5IjJl76|GeyTLVrEe6er*JR(Nb@tGgU z8eDdv1nXOG3)A$kfVTWnYG@e&iE()#b;1rFuq)})XWnE^m?*yaT~C*|o@5L|C9dz{ zGtnz`d4DT;C5R3U$Dx=*RD=JgjsjcW%qUnl&nrwNi>a=#|6|o$qPeiz&E@&;0e7 zM6>72F47f?e&edU-|5CftB0LKZfGBM6~qG5h-?8vauVNR;yqQeFk)En z=6WWUf0YJEGQfMehNQZA1`ciQr_Rb32laU7 zv0E!iNFO98BgCjl{wvaT_ZZ!HGy!BK+R4IG6aGJc@a-{6CQbZ9)n@DCxDT#KWm0hL z#lPgNra6`f!eH`+UMO?=Ljuy=xI!}@5ShOdeosC|+yCw*QN3eu<juRm*O}ub5^!|KFY++Ng}gBegn+4)ti%a9;pNJU^z}Yh<@bi^{mm2MM}i$p)V>O8nc0w>KftsnEMtXru1Er}qMk=8>y<~cp8Iq4*FNS1RL zK1g2-Nn=P)3+;P#omPsR#I@y#BvN!1o#Z*1J{_|Yqf^h2s~h&Q#aH<5loEN!y4NQl zwRR-AV}w3#kY_UHWzc)xcBG=+94eycP*tx!X8x@`HCfz5jDB8Dit^LgqKkXs)Jq*a zG)Vv&dW0TYI0v2U)iBQQDNWohLxSG(xv#rt=@m)9i$Of*$o~$f#@@x`*secTQ3RSpo zV*ZTfcuPpXvVgDfaDvp5>!6XVj1yCpq0r3=Ma+|-qQwo^3(s-m_%HC&^EjI9>!#lh zn{$!@x5-U)MTn3Ec0wTXI z;G^;=GBMJCE;w?X796{ctlkuinQ#!31)jKMLJaivx#CE0sbFhu7=8RN2y$8msm#fx zWKHWaQt(d$u9pWxa#s_cIb8@M!%3(ZrV1Yno(gL`U*V;IWEw0CCwG_TQJ1Sa@8IpD@m(k6Y0h!U5Yx(EU~cdwO09^!<3kq_-GS@fAEfu}}wY*H}V#d^>!) zJQu#~se*lO@uWrb6O~n_c!g`j|D?pBNxqdiA~G4jB#go3ToI-XX%mw-@j{^*pTpZY z9bKK|A#B$t9HXHH4`qDF<%6|!YlJRHKOINQJzkMJ>(dy?58aIVeV&&adcS(p&L~nm z^9e0D(Mr<$4zl;E&9FA;Cb7OQLB|QkfGHFS^y0HX_3bg_tAqBt(p9(gt-bxM>GiYI529bPTqJ!S2mp9nqhjX*Y_ljLO;hPt(mA1q9L$9e- z!C!U`9YwR|>XQ#+joAh-dD^Y&itjFMW{z%fC*N0f(#XfYbVcE3;0u|Ut5P+L)X^EZ ze{nrk_%}d2T2>H+<N6cb<1cYJ6h)o*=d!k3JGCg+BW8Vpyw{4?SzMdh^-)L2 z?x~5m%Z}GR^!#unfsn-)PN7r%QD({%z>F8J*rk7)jGyxm%O7Mj55Krztc4Yjh$dq9;5Q;d_PJrxB%HQPm&(!bpgO1xoSy!DoI3?0>$G9)3a@(OV1X?&qHvnV1}A zaI6nDDi_g-9?z(hQ!!ipWhbPnSz}AhXF7kG0eP0U7&L<7;In-$sT0ZJGuUlp%O{o% zJ2ee0%N4Mr^&)tPjDd*T9el>;CtVpn4HoiT=eglUXnNWa!VFiF4}XM2IqE*%GM|KT zfAz_u<_V~LXP9g~W{T%c6WC{~`pDb99m{A9ZS0X8T+%Z@Z$~z z{PB6D#&fbO4y(w(GdD3@<2MZgcyG=%i!IoYPFVNvSF4@l)AIUr9C%mec<5+f>}>1-ZV0 z!P#GrgXM*%NR2muAY>)I+;{{02D_-}G@kz7X$d#icVlvU2MJj*nfTjH=hC(w0^?h? zV2~BaVwStG)51kq`PTrrC=o3AG!JLIo<hj z_`drH807(4C7pmnk8pU@3Spz?KVr0KdDYLjE)p-!dq&^gfJ+sdxZ7*Dz_;BWka-{l zHhcHt^X(U?Fir%cSKGmc=9}c-d|O^e;JKs;`!Tls3cbwa)0BeI_-mU8q$x+@ZGT&o zjO`#oEsi)D%!XjyEp+?AvqbAS14Fg-4CmQIi`OSJ!o>`JX;%VqjjimR;zy(~W(GvR z7QsmG@h~#BnjD*>jZ$}S<12FlF|W5`f@}+}SeXJ=d^fdZnGZ=iQAU5s>5!3iwy2g7 zhz0ZeX=+^{bg=V?ulz6sclY9`xx0riY9YNu`(1uEAyz4Lq0QNL(EGJNd&M z^ymKF&|w@3=SS*^>wP(37Ygv^B0a&H{Agy~qdCy-GLC zVga~U-h=xcC&~I}$~2s3H*LH+M6SAI60``y&{cePG{c(v{Gh^~$M4fO zb%6WtCga=RCXgaM4dt)S5r*$>5^VOVq@0~C=9zjz@}+XR{ogbAS^Al54VDsq)$F8= zzKbw>lD}|ip(&iU-%VAsjWKCOdG*uLSBayaHXR7n;jUEk*`KmF5HxO~QAOt5%oY2g z?X4qqNjy<=dB$w&e!>DQnyu)p1LEBLJ`;Q~luP#K72x^IlXU6hPS*TJyFl@=5qRV- zC7}fyv0FL}jwrpYTs@>K^gCmM=xYEe=X>cv$yz~c@(ZfzUk2(=Gl-Z~DO{^Zuut2> zl&Q_9#>u7_rc^+U^^>6M{(UTHeTAL6%}{jd9u1XL#*d9gxcpYCV1Y7)q7&wG$LO;qUkR2&z`EaEOv1=_sP8gRIT#HX1@_RTvEmJb4GJ7 z_Vp95d}H#1bK|7=+g8RyQR;L;6%S@fLQAVH?At1dsyuISm*^4HJ^KZG6}>R}j~uKx z)6C5LnoT+?Em$;-1{)c9j4Bx~lt`NdVSRJZMCulOFvh7$D6@FLQh0mf$XXsK<-_Z&x#Y`a~Aj&r-mD-Lc4D#7V6bln~b1R88=7g_>6}zp4)-ztg@rg>%S^r;+Z0IRSt+@@ET@#rj zpPb;gQYLxmD+vJspK08qe(uH%2`!x}LR2FO*m{k5B|e3H^msfy)mBIBco?BN#TmE#ge(7f1mZm~1Jyb$d($q+K;Z$K*c_*WC z@B}13vB5cNJ|OA6g-i`BWIZj58LyTk!OS%rT?YKZ)^qq^HwvqT-1wY-z0le&_VSLqY-WtQ`eq0hibx z`dKuidI$B3&=ii9+)qwC7>)YdOZZN>ESgOx!duCwaN_y@cIM*{_ii&hy{b)eTlUe_ z^^S)W1jj2-T|Hi$^l7i3TLN5S+)YWjSb zI!u{J7lyBd_|aOdlk^pQa5|M*-+sYvng0@ZrBp!hPD0O=$bpI8cp-gq9Xz91$I?kZ z$c3bGv}*JrsxK?Zi&x{Bm)Xk1BylNPZoEW?Gd$R}v7&fX=Q=TETQGY-1YDK+=uOwh z%>HE;iStkpUG``I$DJC(W~{gm=VzyL5mkP8UU~_3cL%Y856;ll=mcdvr~XNqwy@CI zj3z9MC2d_tF_Q1fr85+;t@1W0&+TMC4tKCdpLF0u+8~lyo;!)9)N%-0Y>M}pv8yR)6y#~bWraQDb`cQ_p*7U z(Z7X#GgTH+?@tlP?Nr8-OLAexn^EX|s*t)*dqqD-NZ4jAvU!rGw`o?~;1 zmAk76cUGUEn$uO_?9Qo7n6i%WUHf)eQ!PhEt}Z9h7WUZdGzy-%uY`oOYSgmiSw6mT zxN<=NQXim)#P>thqrWsQu$auKnLz^e*WlWmj~M@EKPnwdAh92GFyBN6HxXO(YyL#l zT0HoCtulnIbb^AK2_SuE9Gz2YSQhnkw!pk!nizS3?{bN1AQ@i`=#wlLI%eo38Jlp2XuK^15AW}| zYNtK^UL7x7@$?MSP`ns4*E!>&3Fqjqcooij`6p7lWMQ>OZf1@3F9nkQR1L#Lo#DOX z2E1Tl3?pq%*{#uyRI7e9yOb-1#-kRf^YJ8>{8J{c47-_4f#IZYizB(&%_=9=I5~W3aOvCmD2|Sf7~u)lU;(U(X^XeY8ly0XpwSQ6HJMs|xECc)h zkD@aTr|RwEuz4OcOXfL4Ddg;DornlUX*QLll9V)PPND%375|D1Ni)%e{j4pTQ>jEz zLMo+FNs7q3-)}xRE-vSK&a>D0{q9>P3~zk7#hmpCAPKy4wG6+LP(u|Gw@-^Ud4FY! zW5gKux7naDO^-{8Y$Y52+eVr|E-n0H(G13|D&W>3M9J6dh{7x{`djD+E~7l5@4*I0 z4b_DmPc**komWQi+1%SSbgG!Zf6oarxBN0m zxilHkvK1x7HiOtBJ~*iZ>y5w zU)B+B8>`3$SnETRLauLxP2>@X&BHr0L9o{MG|Bs@592 z**Wy(r9Rr9YKN`kkI*-T@vuDWGdb?(irPH?s`&?RDEY3#tx}3b`O)BqnGo2(L3avT^yRYo57CnF?ee% z??G8}lN??ff;ojH^si19@v-?xONQ@~CxQ1#q?!rs%oLKxp*r+#j2Wy>&Y(}!7lPb6 zJIqORfQN5#G#(_RYKC>GV{b9QBi2o4t>It~-mJ$Ne#`=LOmN$pTI95!xik zBu1uRXuGT)e%W!A4)8sY1YsGftk>o5%>zWbBLos6gpkR(F|9t*AYWHQ(w2rX_qNR< z>3l~b{DKF_&E>N&<6A1z9j4;<@@|^EEeh;y+(6&wJ=Gtc0F|u{sQO5aUG+j2E?9l0 zQ9q?%vn5jUb3QhmxeU4^ujtmwK2(_AM^!$1Qv2x{q)~2H)o6pA&?vhWDr&tzpz6W9 zdgS5M8jg&exfDuYoFcRLr!tL7)il;A97TEGrNpQEl?KoDL9Rr8rPhLl^!eRt^2w}_ zp4zsEGZHF;URwluww+;q&mIN2&xUcprjZ!0Rl>H%UUW-a3#nrm*tPcqtVZP z*Dfrfv2jE(D&!9F|j6+UMaMu?~cBt+Dd#z;jb4g z_|QoO9@gOLum;CJde2sk*g&sxFw+}D*N(xZe#%gF zwuL@ia0}Z(4-}j2(9iTF_AA!o#xXfym^KgN@{Z7TCK-&D%K_3K{F4-aZ=|>4hj{M5 zFX-$!O>`xcFGT}Hk?GNuLHBO^HzMf{{`?Aor`zN_9_8Ef) zBWp5!?RtF7}%gJOuc=UaTlM5N_s8Sx8e!!I(El?#s_yi3_$E`AY*sy zqqUcVu**43D7S<6@kFs?VZa(%Y}f!=;iuu_H8oWByMcuo-a^B#qWJ6A7MObd0{*jq z1>b#^13acK zz@7QGaj^a!cn`<2?UpX&&ar-eG!lWmT17DJgbS$j`Ux!aJTdkYpOsczM1p-=2xDdm zl4tnW{5wdSc@|w`#}i_tRYd>0Iu2g0T?r#gRMCIgGT1QQSGX`_1-@IjpPbN`1Ydrt zaqcaDA$N8a2|quTd#$S>T)IOO{~S~z=1*SXtMm6sf5uBTr|C3JFjFF1-217#MOd9A;$wB3zvVsSKDWcjrqiH>lm8eI;hNy^HYN^$TR}qvNP>^L3SY z(m!TruNlfX)=Rr>5v>y2z$;xGm!6zX9kS*_Dzwvkb#P0#8 z=2H+K8AOCC8-W>Z#+d}z3Qx_c6o@;0CWDTi?7l4pZ1AsJM9f`-8wpSpI_DS&KYSgg z+yCu{8lPhrp{D>>#BCb6>3KZJq&I(} zg+mLmyH^0&Tf{K5*c=)k%z@1(A5)V8KeDq6dZ2$Z^PO(Bqu;xWiMKI=1q8D6YJDiCPAq0nsS} z5T>gVky~|w+XM5UBcfLDX>=kR&--qADO>z3^egMEAM-kX-IMb zIlkc=b+0HOy+^Ll;bqG)P_%$NP0NLi6{m=$#6Apu*aAKa=hEMe+o?Hom)ywS3dVoL zxJ`dn3D;)@bM=|aV3XQvR&%T)Jh`MO9Jjy^U%#+MbKjffh+ZVtWD0Tb@g=zAX*Etc zQHWIR0UqR^H?)@B0oB|uM6RiduJgW1U+x`)TN~aHqrKbFp!6#{aAqvl?qc{}@f!3@ zPsBMqBVzvHI2wB95T=&~lEQ}BC=x2cjhLxGv$i*k-x7i%FZK)0tg5EsN?NR@a2%`h zG8YHv7xHO`FNGPwV7t1B=^YisoUokEj9WUJ``#`leD>}=6I<pDPv(%;KsgsP2@tj&cObqg09ILcl5Tmu@UkZHNxM7};r5&C3ZrqOOENYg+eZH#FUeA{Y| zTU$Db+tOmrN`0?;{FZ}h5ktyE3V>QBk>xUD@#yJfyzgWq{QEWuIws^& z#awj=S?SJfk|40{j0Jn3wUBsmis0ea!KC!N5^wjnL z`y-w9#-1Lmt|49ZCDg%Fv3il_VXj@m3C!-BQ=@T@NcOsYJWEM|TYX1XnB(ZmO_kDR zjBhp3w9HF`JcO4&l|yblqbDZWJfPA(3H=|Y)&6=M89LZUyy zgb#mUW9VyqGNzUk>CMF8l~?dZuK~uK%Yfg56>N&|COqk@2fNBWpqV^Ezt~+Ob@qRl z`bs05Dt3uT@vf5$8+UjYmH_V!-?OjgsKLwE>v8coXZ-lp8m4vE(7)phVM>QC<0jQX zWxtMr{i8&9ZfFZRbJUu9eC?e;vr3!G7!u_K)r!Ikql@XB=0M!uK0rr(y$^mFlNgDq zo5{)uN3}Zq?EmwCjRD&r$n6ku9Hju(b{AZR${aak zYh5~AZp@sl>0oplYw7S>Kcev~4MbH8$f30TsxzHVhqGz1p__LREzs^ab zyCjQb7;nav*Iv^h=jpi5|1{lrHWcK~*3c};yQo*LBK+OoOYa{w2h)ynDz6@j5(NUZ z`ce&n)hXD=X)kBG~Pqv@$Z5+zg4&Xo0m4<{=yz3mJBE=(k{ zdB@>V-5ON+CJp%tu5_`eH2(B=2hUdn^lw@f?lv)^i(8FJ?ptNF{K$~}2piN+2!x(f za@g=<7E>^*l0BGKK_z$l;*PPQR3sc-HaCA@4<0Y2TZcr+{QJ+?$KujdcGD`1=5s8X zS60#d?{Xw*g%nCnio%E+(qy-2KQr5QI$dt0KqhP)K!rdzTr}=CEqHjHo$S*{0*3$6 z{cVeh@f=sM`B_HwN85trL1Sz==78KkU9PxSNvK@&2JT5aVN^>7tiHXA{*!(O@4tHD zvLnaXbu#BM@a`jsFmQz}j%%^5_&B?zmt&if9}u;pwrHJbfjzhR|9w*m^RT>>7`P8m z4W2ohwb2{bEVP8SB6HBlX`#A9wphGC7eh@osLV2Z47~7>EAhzWqK6()_2dxpjL+Sh zHP7WXhnry0{$H?e7Q;1^_rorQ6k4nk=pue7gt@fv2-!E&67L3oA(rb868F7FA=9g$ zoF2)eQ9GN+nZ>4D){-DH-Fh86MfLzusSKghZ3UpD=tZxE&(E-Zkdf=^DZ_oePM^+eV_n=Z6wLy`wccxsY(>J81~&phs(+iO$uj zl-+70u)L!nEXy-Ozj-;rQQz*MF@)g^9~I(N>J2JvB>3yyp)aI8xTJmS>ET&p(8JJ= z2F4Bn{da|nIOmKqrnacP+#aqpEk^ymUl?T|D||4g2<{y{&)gT~%^&@7C|)@oDlD7n z;SaKq?`cS`4iISADUBXJznJ4+E;IK?Fpk?3MHfc)vewy6Okr3!^K{QV^1@0A?OUzU zA-I{|9x5Prn=;6+z3+)dw-8?CHnUS4{i)is@o=7LpwA~dL5~RUd2$#MI2cW$OEZ$l zT;6ffA5w|I|5fsN(kHmDqJc~edIV1@Z^5BcCG>{FT?(fUvu8tl0FKIGa!nyZP?;wuJTtG1l)U{; zDt>6wpqKmsrc!;OsTD?CX3!t3*v4m)*OX$8X*KE} z=%ho(y+CvA4Y+J!z&lf>;`#24sJqz-omwWd$JYgdU4RBWm~0)!mhE_u;ci4$aIKt$z1D?H`+z9#ifpB2RY)3t|7k9a-iz- z>bqDNA&;HSrh?yvOUSv7hjeOGIH!AZoG_H1m7f%Qje=d*Ks_Z8xrytj_J(4_I8zQ#oe!&>ce;d%g z5l3!U?PRiklnYvn(Z-k84WRk@GrUcxyal=!gX;_6`#7cZDUZ2-YrMqsT;R1K~wy2B-3TIka;z@#IpWKn-+6&rR!+vbD-uagj18vswlUu2ee{TdE|q~v(EQ>R zxLIn#uXUSY`u$=|y6g-o$4$v#=UiOpRn5j&-l1>TpW}QVI&sgOmVmCCBl+7jo}MX} z;^r6*FoSC*!M}75SiUBOSlmqk_CYYj-F$}Ko>$=L(cPq!pJ^|PS`S6|hI8%6g?YLzZ| z%QITDJ5z}EZB^WKLV&hS+wst27y4?#Sn~L|S7msfADLdF1l9$8v^VfFdsOQj9nWNv zdHzNa6ZV&U9Gn*1n}U?dfr{ns=pN08gsA`x?`lzaFLMzU18_z_rx4V5e6z$QLM}dHyk4 zd~`n?jgN)ze5dY;s|&jMjDz^3HFVdm6ly+qC9`YfAmcWi%oe+8Ky-No`PNiJkFVm- zrNAjzF%(0574e;+M}KAr{h zutFRD9&RL6zL&|UZ&Ae1dmF6s7J*kp6UPnmJ;>&B%;>aXILUu#Lb)F8TkjpCWJ+K^UhM@6M&nJJ%Jm?NWJGiwhyb9ayB zkiRGFp|N8;l=;@7nNb-8hS{N%n-nCaw=oyy3GmE=vvk^XOI%axi`L&4Felh-*tBmG zv3uQ0ZI_0i@^YS8+xeNkirB}y!Ny^HSQ4f<7Xw#0k@!Y_7xXG=V@20B`cmf{-g9&j z29As2c4)K`(c(CI>{d9Qn%@A9wwF+?rH{C`YQXx}x}c<=K|?%6aKWA<=rMaGI0ksY zu4X&t^z;;{QIW-)%qCPl`Hy|S$^mXVFDHdBGr-3GBS|y1ho!CgbW2^m;F@Rvgg1)e zyru}qU3Q4L%HC%uSnGp!#CwwA_L(BzN&P9i7)y80B4c^4OjNHl*ncvu%6=G6%NEV0 z5$y$_!8;T_I7P7sXV=rq%@bhCL($5Y)=4gSU}6-qSO|`VTVXP^cz!MuuTm zPCm5#9L+N$->?>0qM+ZM?c!wpA8eDAhNS5t@Nei2UVAwXwl(JBpOX2wY0_;RZP84> z{a#Au#QkCI%vE99btfYFCZ5LgwAw$t?XA!DlpnV8mf>2sPJ4xyib? zD|{7REMYOgo%d|q5Wu8)8&PD<0d~bCTl~Ry5QHx~VYo|AD0%ZFRs7FU=oMcN>tQ|V z5p!YKAsrCTI*S&F z-ASN9Dtc=jg2|3DByAE)L?b`YRC8&%lJC7-{$d5%wI7M9<@}qhu)S{tM<*G9q>3x*O9TKjUX>H<^91WP6QD=U7I(_LCQo?g!{#Mx zF;ZWii*9tq!Ed1uT_VXIi+x1GvNVKCc-I*CmGN9u4eX9t1iV{7aJBXm>A5mYgS4)} zz8#Wq=(mb+;;mKa@^~%%QZf!2X3WHI{*G9?BmgG;I!T>xTL=rzY0%sRfpDCiqyv|G z?qSTvdyM6m$#}v3H{ZdMfJ2jmFj40%G1oPONhx)hfATQC^;P4(bBi!!A-}J=`ilO0 zcZ!^P@`lPSQ^uT+kLY!4Tkuw7Sn~}>NbD=#aW*lVR6c(|H$;z+;Fl&SDzTZQso9}P z%XK!&M*>1i@lXN-atZyyYpl8rAG8j{#l z9dIvGf?Zpe!una6gp*6aen~~t8$X-+m`{Yq;bu5y^e6gga5r_@Z~#aBd+(z1)f~G1 z=wrXUJ(lK5fd5xlYLK#o(H>C7{M9C?{caIz1eG$vYq50kq7}Hq`vkpIV~^6)VqszU zTkO)!g8ZRpm8Xn^g6HF7iKTZLUGTSr?q425gQhFf+ldn(9+VtbtN5Zn54AKNrnoW?U5&u5wcm9;x~T#cVc_TIEdi-5v0NM;>&oPNJ=K z2g&dK(4${Wrqqb3p+t0|K{QrbpcuRP=JnIt?2F_ zMuMa^lA3G_u!?a2_UcpSy({36wnS1dRs<_vcQR3T^|%_@W;|0YgAa5)ars((y5r{zH)cqd_!Y)YBQ;=ac+Z z6PX*V6y4TijEQd#2_hqAVAzMROz9+F8g=a?(|h+bX*@K*b8GDQJxDOQoqdor&yGgz zjZfIMt!^++f%j-hsbTHcKrDXpn61&_`x%Z4(M9|-yVvGC?buO{(s2oRa!`wURxZcY zhN<{lAdN+mve@xS4X@0~Bc_~y3QY-4^M6I8PFZlF7yDW3AAd=_r5LELj1ye{sYhkz ztYxdG3=?mS1m@8kE$$j~S|GRPKkUwYOy;y};#~5EsPa8T!|m7Up21WSQEiG3EbVb( z`DBvQpTV5o7l#ISE)cswbz<4LhenO8Cv$zrG9!25s7PljnRR3_&-MlqKJ5?lRcQ^L z30sce8Cm!=bO^!l5Q^yvh{C=>RF^h}^Iz0)Nm&@aFFyw>@6HvpO;007--OT{(UY`! zk|fXgY@_#5ow+M_`$_PjESGlc1ZL!ZUuA#l5NqGN7}n&bR()h=-J@k7)NLYK2lI}FWP56IK@$bWWmF+zC-b)WEv-GV9e(@$B5T8!gHvDw-A`Z9 zy_<~bR{m`5`t*?0j{8a61JqHucOnkRFQ&=oF))AZTzX|Vr=0oHY@b6^~c^*d#_5VvEvUThg` z-F}4z$g0!pFLYq;IRi|I4uZb9qD_bBD~rH6{TObFd>k08ST7V`e*yMw-A!$HPR0<=SwCI)3PS#jqQVt9 zH06#rS-Rsf3I007voK=7?e<*=?(BrsTIU55W{iRCG2u+Xb9pSYNTu2fi>QXtI*dqL zhsIh*;GE_t6jOL25P4ZfIM?m)ZRJ?hIQqLvj)_8#l>{y{iQ*28!vgMf78tQcFvz>E z#(h)(6P`)DpYK#k{^1!DHZl-9l0w4wI>H&rSe#Z+ieIGp9Ce=*b6j3Pz3>KWEGq+r z2d!~krzAbuvl`@b{4kC?Ciwlt5H+lvp~#?wig{Ge*%V(n7<)N}6Y}krgSfCEI`e!9Hnu%=4KFsR6sG)rM5Exky%ULF+HQVfP;- zt@*(3^CsYxCIvV*9E|(5a){iZ4sCdA!o4&VW#sbrK-p2gH)V`7ed;ZyXXh9e% zd)uiX(T_?3rYMIEA|~bozI0B!BRyfGOpc*zKAg8 zY`;I@xzc$!cBwIOea-ioCM+jz9hyuU|9c74E|XYU4anC&1jpyHY?0z9VwkSVO{?C5 zygL-*w71}_Ba(D4XyeC+hv|5}D-e4jhFan%I6f*FVttix^}H>ZZS4SWOEj<~TtKq_ zbfB4tDsdRG!XH($P{XK)RF>bPp}&vOu+x({D;a&^2bCx=Fm1+Hkq02a!497OdPA2# z$f2H2|KXG${CW9=tNO1mnW`u3#2xb!FuhEQOWd&tJCBM9pZ*EQ2{$$fV~y|ep4b$2 z=etVs*fEUmcsmy-YRh1t<2Q0ZR-JToAH?~g<6%@*1pGO1fat8T0l9`E*eWAVQUl&H zicQ}^jMX9%&+}pbQFT1A#1A#6r&9lWI#fQXpG3s5yzBWKvujZyXSrOBd)uQ)`+~&4 zqsJZ!Hy6`+H}`VmH(79{C%0hP5;^won+7VEe-KplrMaCG&qCciFM8pQJ&0)YnZEtz z+@V_(B}bIGNWEFaKd6aWXlzc?tCPX3=^%>bc92SW5y*csOb@S~jT_7OOmWLx46|0i zknRCGt)qZ&8R_8Dr%yC91M&S{f}8j*b$f0S=}D_$J+*v@>YF#T%xNKhTB-tjv@Kz& zj6H_zAE9HXMACe}$8>%GNA_(f!IV?ORsG`UNS~b#rE{dQ*>^EH+%3g{?;*VM*%zws zOlOpRH(-SALWEzjV7fw^UaQ_g=Nb3YZ!QbitM@oEs5Xcl{W4?>&vt!DUy-ysW;7$c z2&bLBC9qB^VCGCUg6z-Ja7^4mP-p#OC2#JLjrVqdnq>uz=NZFd*#Tg_(*`atu^|6q-?Eu^G}$ZeyYO+t zLO46lf@@Pf0rhudai*OtGyc*Yl47|JLgKD4=iTKYZL24HTt6Q|@^VRiRvIT(77p9~ zmf+QvyCieb8CW5)2@QGp#cT&LkZQLBMY(j`v@V{U^LhYRcR!=wbL;4fQ(jO$P8OeJ zdV&44>s0cPEZ1~Co~%sF&} zb)OQ;Y0P{`#{bl(^Axw?SgG0g+1i*Z+PfV#2Svm1)tT6P`3@0#VUH&dJtdom>mm59 zKIy)@29LgXh6K~=Olr_U>^2!;CB~@=AAQh*OCm!MS2zknhr)z&@FbXYCu2@_D*IeU zhqO!+=SH4((FHfRLhjR2^6cviJZ8TaR^*O?V^fcki_=t?V6|x=Z$5zl&n_r(y#Nm+ zccX|(DyE0epd*YgwZ%aGy`@1Fwp}KV|5N7o5OuUbI32f6R26DH@}v(fm(xAM0(!c! zk<}2Sa803+IAobk&-hFPkv*#T?My5wzU7A=M}}d$MLAuwib3ZovuNj-rEK?_I_l{W z#3>s;fCYiCVKAVYoa~l_ClL~Oc&`nNIa5atEdE0LCZsa=1VM1%+7pn--$NJn??xso z4a<(+hJ8N#y!@^=NtD0Bb83~zQr81y*7{zoo90ix2Kd3yGd-9Uu!y;yqsy9#Y9aUB z1A?9nf~5ay=A3^aE;=<6rM#Cg7wzN7jPcJ%;wy$by)X;E70ZKd^iJ->(yS^;(=K8p zuSCmDH{d|tV>q)#759#w0^gqt$pNE@LXmx9!Vkq3TyDESsCe%jq@1cDCwG>x@{NTw z`kx8(ev$!Yg=#u)#}eF_y$tUAmV;8L5X05a;d!nYmreOZ1|L&;`JXE`XUIpQdA^}4RQ(rJWqx!Ks%5r<{GUQt zaV>)=p1FY<-7GF{+7Hc+0_=XBM%{gk>GCEgYPe5=-rFbxB@Yu(HbI>9pVdOw&&sT% z_!_z|FPSXLTB14a1rW8LaFEx@g+ENy&r#fJ{bM51Aulrg5oKsbIN+0b9X(9QisPdSt}0_;D!F(L4kDxkMV9x1~zb zZr3SQi#AnfV6jD-VTa4GHqYv+9vx94ba+@%fBW%r2g{%B7BoK=U# zR_EZsS0ADwZvpYcb{HWXAdo4m)2`y`ukh> zK)aKa=ns(E>#{IYwUIvem_V<{=20CdJyLgV9@l%a04BPpv8i68aiB=Zw+)-Qkdjz9 z@N$Jm66b_WI=r=URY!gH!dTwgiUrmjUqq%EDAztIG51HM=Jd9rZZ zIyGTTqdr--|047RR3lN(hQldhU>`FB2YTL-{woMFNoEjoP#Vu#>(C3!ucEnW8YB+9 zBwE!=szOCGaL&^NayEMuiLTJ%1m9+m8`d9~_<-NcQpHzn_H93m>{9|aoe`2*_8qhi z{;W!ts6%0jBDZ(mBkHE#EzmyRNjk0?b3u#@-gCBs8ZSHUVWmBMnVL&?w9cV^S#xmw zdTSV&?gP@(Lh(KC%~?fe3lF*-1h0D^a3`F{s^1UL^~h`H&zb~?SMwnoOFC)Gl2{x$ zQBJIiOd;uM6%7jMsMNk>1#5dXI8|W%D&0Lk5@IBc{=@==>D4KbYCLT!y;(+&z4lYEyt+X zGRFAb0b0IpJl(qew!r1YEat)dF80;N6y7WEgt;jb$?X&cBH4^O*&bQTYP09b#eOy^StVpq>PZ%clxDCz!y^-UsBmPaHN4 z$1*EEG|^KXLauK4SZ-BV6Kxt2N1wx`xa}3c_kR2WYJ|G5VnRCYx3?#Y?ZVF2)*XBb@(wH#1oE0DbEHQLsD@ zO(*Xq=6@yNqCgw_g%j}B6e}+Er>3xbTsm~;w^IFGmtjtXGrN#E%$LhjaQBxrxYeYC z{^C8w(QunsYOKSzJN964hZ!z#%7BZBJ^aiCZZ16q z9%V7))EEu6xq+qr1>abaC;t37*93#|mgx7{k;ces!7(wOclv&q!pbH_G4B9cR_Eb| zw$ZSEst0GMaFyht2Y%U7MaOpV{M6cAFf(-pZg=P;o4Us0o!$dvZq-)Ue`-CqlJ^Sf zoy|or$1NE1Y6zV|2&}l20W!z=-O1@tJnOB_^-h+jLCuRK+Icw`BD@G5p%XV&Ucj+!@pWi$;!+`~p{;`6-E2xgZa!>7J8lep|ZazcjzbGkg|E-~%!fs^8Gq{QM7@0E!cj(4!+l$M@k)6CZ*JIR<7@vEA! z_OIBbo<&o1opEO5G9ob9iVn4Hv_a_sl*-40NJcHpkXlS`D~MBpZV_>CxWX2XvBXcW z6UnT?MJV&j7Sex+()!bLadB`7lQLBWxhtz6BEO8jm3M;7)bl7jluu0ge^2PJ3R=GQ zphfeC$o)u5HpJG0wl021PjzL|+UiI=+H{z_8y!oF`Y)0?feMNK>IB1*qWJv8WhTIE z1#HwBP3T``yjmTMpM5t$^-XK~#P&6vB4Z4zH+-h!Dy*?@nF3mFmIAMYNKouf#f0D& z_z9Ef*ls=Ga{tj*j|~uodq8xMg9aT8srs%VB<3lKO!J4L)Mc|HWd=4rIn$Z=**& zq^WaYAF=#C;Bq4UTjljd6?CAYi5v>B1J56?s6zOQD)-FqP}}wo^P>1WQ)gb4tITN# zo+e6rrWG-nqV9Z0-~}r+R-L@MyB|3<34Sc-KxI;P!qf3@VdbgwRkOYXfvoEvnm+Lg zQPg-Y=o>JB;Ey8Q>oPfd@tr%M8PVpR;u^Y2xk>ER;}8j&hKpx zS8XZGf))G5L++~zNX#fA)3f;8z%xa#;P1bCBAZBTy&L?KoKNLujK_wc4cLG140#sU zLl-RTAYX)~{P(=0b9x#u_KOu)+Ncl9FG@kexyNMdad&j_%>dgAQ}E~C+^Qax7(vq& zExiBk7W~!~aG8hs1OqxUKfY-2Jx&=KdeaXR8;?VfWp$MTp5r@4g=(w~@g?g8{f1s-KxZlIbu*owDC9fpe3n=|Vg{LI zZ6{P&agn(1)*`2SU(xxpgJk=&I+XFY7D^^8;JV`XLZbb2{PW{AI(p~e{n?_B$ooUQ zZ@eMFr%hPP_Hn{xH^k{Z)jOEXf5yz35iXpaWlL9n*a+9^rKpwIAZ(YfqE6+X==6vl zywqI-^tY05R^w~ZXmbpl^93~a*&DtmF@a8?3t&rhDrV=6CF8t!PjkZ^I%BdPlvvIt zdj1Lm=T(kS-&{;@te?z0eBgvZ%O*jW_i3{0&RtF?DS_*&Q(#BPL@+-2k&K?gVTVj1 z;(K*ru+>g3^UEn1b`8YjX>wq|-$@k~>(l5@R#+qxPK<6|rSsl0zM9BP{;<43i3WQV#TK3HzSiX^ww^W1Bu{>>v0 zZ8ZR$`+XRyk%t#MoKe%$1jT;tqXQQmxq%H6@#@(d;J@6FTT)&Dqjxy7&arjq-e!hl zyUxPUh3RDe^8?g=p*wE6yFnO|I1KN1|HY<|Zy+d|%Qbj#bi^wWYyU3AoMthca#x3J z=Vzl&B?MgVhDdM~&k;n1Nn=WC6EmnH4#h6l=)ePWddUjej1&P*4Btv_UO&MaHs7UU zAGe^@X$$Yls&zvbetn#PC007LEqMV6y z>2GGf+92)t5eN60V^J>Lgo&800+;ybp{ue=72nHW(3X%W)ZiIyT3aAv6nB#)~SG`tSMf_3&ZInV|k*$XgkohhFB zJV^HOBfpBDo^*~QLCJ$}shaXlX7s2UvLUJgj+I!#flIc+3e^Wy`Dtae?Q{y$dOw^- z?sB1XqVm91)Q|UBNmZ+8{=vwZ7I-S-J24%xVa6M-0sTK(T*m58MBr)?CTHW^Fnua3njs?8*C zAJ4Qsv4)n^*}}-DB#f7E!4v$M^;AM$_y)=eW{Sh^a~|mZVh=3p{y|@h>BH9W2=u+U z7Hh^Cph;^Orx4>nYU;~`XBQ2V8;63i-%kR{16EOSQ&c3X)l*Hx`%zu=U+5b zg0Xhe2-?oE6*_S>=}7(c#?d% zvJv-uQ^kuqV<38$J;(~XSid1-7&zyS;~O>5r(gm|3+|Fp={vYQ(Ns)3GRQ39*1*iT zz39735ocz2;{o68U|%DRRmIDw+!J%$KU#&}xDp8uQp3Ug_yR83Xgp>j55H0+#L7rP&ZiXKmmeGn+;&4D;9DU~* z<1{{-c?xuJboD`MF5G}zi7WH`6z|COYa~vO9pOed--SMemwmMr!Ojm z)FvBPEw|0(#As9EUE@a%*zBP4ZSlpx^P9I7U0W~4{5ad1Qd zTH|EsDczMA=UY!6{&+(sx!-_YKOVE2GLkE{au=D-pBmu#ERmh7yq(F9{z1l_^o3#V z$q>x#rW*s!-e}$Nq#TH6&x3wUo{q{Y;PgbFIHhnbq?7Yk;6Uzql%wq z-^7RCelcQ;MhPd%d%^;OgdC$U9HY)+UOeFAiP;9i|0cV=;UoFbhBP6;oODf$UQsMuW2V~ zoDC}$vx@4^6+(`aA6Cx@`8h=nYJ1z*eb08G)0iLmUy2{iyPiK&bq4p4(EhhfWcel9OVZP~8?yibp3yM2-iZ zP?qHy-%Vi-`gg(6rn~g%#cg1AHVG})mR1d_sp0g;dYFDZlSIr&ru7F3iN(!G64Skc zivQUT=k4dAom`WLyF-rBWoQdScNUTFj}15ykbx2HrrdZ9ewt@W@Nx{h1TzYP)5uA`d#_ykE zi27eUbXT;5`?+e=_`exU{>4Xv%CI?ju4fq%QymD1T1}S9rsEFbhN`PmyI7CihiJZI z9=qk(Vj3EBi)J?W6II0ns2;f#_YzfN8uZ8Im%JD~dtE^M(tE1L#njQ`k5_{8yj)zd zXdDEWiO|W5m$PZhb-BNG$yHZOeqxx)O7dW;3Itu1gv9y#G4%8`JloYqmFMKrh~Lq8 z_P#FUXFsCKZ52%Orb0X}djc-bK85X50D4!P;P;V}VSV*k{5;ARJ*`yHv~w?8v_zcv z`$w{tlKOa5R{*y&i%~iACK+?x9PYDTeBL%2<29dE#d)eh_QP@Hc}zd8H8}%6{7vw} z`Z5we;7HqNkAv$MI+@hSNmO)29EnoML62!WtKK&rAnt3IlOMkG;N{9vdUo|Ae3Gb+ zOZn$Z6g5>{Yjf}8r^|orgbG?;pl( zvIb>qJe%t9;5M#Z{s8CvOcnbbiT%=!SGo-e|9y?PS zvADwxee&k>{Q5k~e4PQ#jW3AU)@ihYJ%y%IRI&4uF%zA-hFl=axTl7hJoljsTg-N% zTDT-^?@c1+$#VtICOu?w|69i6yramV#|f~ym&#Zzn@Vbfb7}7?C5(t$!JHpHL;nOP z;Krxh(fH;@BC9)@PFZ_~+*KF@?)@?_Q^Of1jL2~Qj~3I01@fHC-$Hz^{{4oRpDWKF z9wmlj9ztJa6gT={7S5-}0vm~kbmK}7YMwKMPGfU9(beXhrgR6{v`!qCEN0p7^8A*r z_c#uFxZ{kr^EkTNiz}#Bfs(-$n7c{>F8wgTi;~^U?>;F!d3l&z`FI~kt%sPE3M$OZ z>9c469fS4T+W8)U9TW`sV%JOsOj2?OxBpy;_JK1r?adovx1oZbm)U z(#1J*O30MVKUDtA;VLWnKu$~g73dBy^yXSq-1}-JaX!xX_+pQ7y@|geT=4}=F9^S} z=KBFUuXZ0uPrOS%81TN`%t;U=p$LBAhGfD|cU;~)4h6HqxSo-XJbS1V>WbnR)y!yk zu&aaib!$|gQd)>>?e<{&oE6YteV54S9>%guFBs3H6xbx~L^}TN#hz(=H+uPiv-jBK2`l;@cIYNlET%gJfy8QhzhvGhvIWHeXu zz}R6K{Kw?st?x=$GR2=ef9ed~{>U7Mn)GPQn5oF>++YvRRfTPj)5({Fa$5S@QqVYS z0ezn9iDe1bNMfrhxpdW+vNp=qOu#ehcFq_Q+H*;GiU4bjJc-xSYjkIt2zd7!VT-9c zmcI7D2kU<`=NC%=xfV_P-*~|nwTZY&%2qI;?+xAxU52yM{OM#%O zGjJ@|mt2T1fQwE}RJeZ{8i*Ny`Ux>i&+ve|2effrLk8M7isE(~d3vP2i{?DksP>mm zM&E{sXg7H+@t1Oh+YQN5s`DtMu+ad=}*4t&fhq-$26CGk=ldG3A~25C02C!IXF zul?@Kfos?CMpYzPU6KSMJ8kHsk`zo>B#ut+i`k!*M`2dpGPK=O1NSbdLAB~Q!K3e! z_{>CsinR-fdhT%|%HNR~Mu@@dL=(DhmoZV6UVt%|Yw?@Mc3iVV6OJUGv*RNC$)n-V zOl^H2-598bMYH1sQV~V))KCF`?RVwby~T93rW6=={>F>%zA+0N+-c)G5Ik#6tA5eB z8nlm}MB(aDuzxBFOFw0jrPEuePjw1LZ{-=0MnRm%+4)eKy+<%dNC&r#v&L-#V@x$I z!Lpnv+ScNXI&VU_v>TPYNDmJX^!mG!xkXJIc zWbZ_I7WE|XN4hz_)ySi1%f)fx*#nr_(nr-BW)qFy07Dl`$mW`S@;HA27ics>f0QSY zmz8tzn*4lD+r$N3!du{$j4O<09ibcgc*hl#;v^JBKaWdR~dkcZZ-z-jXaRUCb zIEPnXIFgs{hGaoX4mUdM7QLEiNY1VwVUF*#1Tyg@E?*{uS8YCm&3H+eYxszSo-8A# zx#{pRUL3@=2FZqT>E!j?OXPZr8{EDYKq9Jm&hsT_R9zwsCU<4gZM`-tG05*Ix_FQG zi!G>kM1U=|-PLoAm3f|UE74KNxBu>z#4}ET z-k6UUr>c^JW@fnZ+C2I@{tW(;A6s?Yu@(~)Pq2S)DbtH(qA+WWGCtKahwjl-dN

wHt@* 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%0DGq3Qci={Bn^dVVpJ_E;(vJ^Tk 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

c&C3sZ+mSN`lBMWwDz1S`5=AA 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