From bad12e8f4ef568159fcdeb9aee9e87d0da4cdc2f Mon Sep 17 00:00:00 2001 From: jconwayNV <35616408+jconwayNV@users.noreply.github.com> Date: Sun, 5 Apr 2020 21:27:37 -0700 Subject: [PATCH 1/9] Added hyperlinks to TRTIS content in Feature Matrix --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 61663b00..1ba59c12 100644 --- a/README.md +++ b/README.md @@ -67,17 +67,17 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. | [ResNeXt101-32x4d](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Classification/ConvNets/resnext101-32x4d) |PyTorch | Yes | Yes | Yes | - | - | - | - | - | | [SE-ResNeXt101-32x4d](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Classification/ConvNets/se-resnext101-32x4d) |PyTorch | Yes | Yes | Yes | - | - | - | - | - | | [SSD300 v1.1](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Detection/SSD) |PyTorch | Yes | Yes | Yes | - | - | - | - | - | -| [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT) |PyTorch | N/A | Yes | Yes | Yes | - | - | Yes | - | +| [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT) |PyTorch | N/A | Yes | Yes | Yes | - | - | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT/triton) | - | | [Transformer-XL](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL) |PyTorch | N/A | Yes | Yes | Yes | - | - | - | - | | [Neural Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | Yes | - | - |- | - | - | | [Mask R-CNN](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Segmentation/MaskRCNN) |PyTorch | N/A | Yes | Yes | - | - | - | - | - | -| [Jasper](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper) |PyTorch | N/A | Yes | Yes | - | Yes | Yes | Yes | - | -| [Tacotron 2 And WaveGlow v1.10](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2) | PyTorch | N/A | Yes | Yes | - | Yes | Yes | Yes | - | +| [Jasper](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper) |PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper/trtis) | - | +| [Tacotron 2 And WaveGlow v1.10](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2) | PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2/notebooks/trtis) | - | | [GNMT v2](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/GNMT) |PyTorch | N/A | Yes | Yes | - | - | - | - | - | | [Transformer](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/Transformer) |PyTorch | N/A | Yes | Yes | - | - | - | - | - | | [ResNet-50 v1.5](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Classification/RN50v1.5) |TensorFlow | Yes | Yes | Yes | - | - | - | - | - | | [SSD320 v1.2](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Detection/SSD) | TensorFlow | N/A | Yes | Yes | - | - | - | - | - | -| [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT) |TensorFlow | N/A | Yes | Yes | Yes | Yes | - | Yes | Yes | +| [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT) |TensorFlow | N/A | Yes | Yes | Yes | Yes | - | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT/trtis) | Yes | | [BioBert](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT/biobert) | TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [Neural Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/NCF) |TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [Variational Autoencoder Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/VAE-CF) |TensorFlow | N/A | Yes | Yes | - | - | - | - | - | From 562684692401f39528422897709f0f9765a5a7cd Mon Sep 17 00:00:00 2001 From: Sharath T S Date: Tue, 7 Apr 2020 10:28:45 -0700 Subject: [PATCH 2/9] [BERT/PyT] Revert from native gelu. Breaks ONNX export. (#447) --- PyTorch/LanguageModeling/BERT/modeling.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PyTorch/LanguageModeling/BERT/modeling.py b/PyTorch/LanguageModeling/BERT/modeling.py index 788b712b..003a210c 100755 --- a/PyTorch/LanguageModeling/BERT/modeling.py +++ b/PyTorch/LanguageModeling/BERT/modeling.py @@ -117,11 +117,11 @@ def load_tf_weights_in_bert(model, tf_checkpoint_path): return model def gelu(x): - return x * 0.5 * (1.0 + torch.erf(x / 1.41421)) + return x * 0.5 * (1.0 + torch.erf(x / 1.41421)) def bias_gelu(bias, y): x = bias + y - return torch.nn.functional.gelu(x)# x * 0.5 * (1.0 + torch.erf(x / 1.41421)) + return x * 0.5 * (1.0 + torch.erf(x / 1.41421)) def bias_tanh(bias, y): x = bias + y @@ -130,7 +130,7 @@ def bias_tanh(bias, y): def swish(x): return x * torch.sigmoid(x) -ACT2FN = {"gelu": torch.nn.functional.gelu, "bias_gelu": bias_gelu, "bias_tanh": bias_tanh, "relu": torch.nn.functional.relu, "swish": swish} +ACT2FN = {"gelu": gelu, "bias_gelu": bias_gelu, "bias_tanh": bias_tanh, "relu": torch.nn.functional.relu, "swish": swish} class LinearActivation(Module): r"""Fused Linear and activation Module. From d996f545429d45ad78edb0a1ba23df3e48880f6e Mon Sep 17 00:00:00 2001 From: Przemek Strzelczyk <41076710+nvpstr@users.noreply.github.com> Date: Wed, 8 Apr 2020 15:12:25 +0200 Subject: [PATCH 3/9] [Wide&Deep/TF] README updates; results for 50 runs and small fixes --- .../Recommendation/WideAndDeep/README.md | 30 +++++++----------- .../WideAndDeep/img/map12_WnD.png | Bin 61145 -> 36201 bytes .../scripts/benchmark_training_fp16_1gpu.sh | 2 +- .../scripts/benchmark_training_fp16_4gpu.sh | 2 +- .../scripts/benchmark_training_fp16_8gpu.sh | 2 +- .../scripts/benchmark_training_fp32_1gpu.sh | 2 +- .../scripts/benchmark_training_fp32_4gpu.sh | 2 +- .../scripts/benchmark_training_fp32_8gpu.sh | 2 +- .../WideAndDeep/trainer/task.py | 24 +++++++------- 9 files changed, 30 insertions(+), 36 deletions(-) diff --git a/TensorFlow/Recommendation/WideAndDeep/README.md b/TensorFlow/Recommendation/WideAndDeep/README.md index 5ca6c66a..efd1fb16 100644 --- a/TensorFlow/Recommendation/WideAndDeep/README.md +++ b/TensorFlow/Recommendation/WideAndDeep/README.md @@ -48,7 +48,7 @@ The differences between this Wide & Deep Recommender Model and the model from th The model enables you to train a recommender model that combines the memorization of the Wide part and generalization of the Deep part of the network. -This model is trained with mixed precision using Tensor Cores on NVIDIA Volta and Turing GPUs. Therefore, researchers can get results 1.32 times faster than training without Tensor Cores, while experiencing the benefits of mixed precision training. This model is tested against each NGC monthly container release to ensure consistent accuracy and performance over time. +This model is trained with mixed precision using Tensor Cores on NVIDIA Volta and Turing GPUs. Therefore, researchers can get results 1.44 times faster than training without Tensor Cores, while experiencing the benefits of mixed precision training. This model is tested against each NGC monthly container release to ensure consistent accuracy and performance over time. ### Model architecture @@ -62,12 +62,6 @@ Figure 1. The architecture of the Wide & Deep model. ### Applications and dataset -The basis of our API lies in the observation that in recommendation problems there are hierarchies of features: those which describe the person or object _to which_ we wish to make recommendations (*request* level features), and those which describe those objects which we are considering recommending (*item* level features). Additionally, these features often need to undergo some transformation from their raw representation in data stores to a representation digestible by neural networks. These transformations, defined by [TensorFlow `tf.feature_column`](https://www.tensorflow.org/api_docs/python/tf/feature_column), include nontrivial operations such as hashing, binning, vocabulary lookups, and embedding (indicator columns can be thought of as embeddings with the identity matrix as the embedding table). - -In most APIs, including those implemented in standard TensorFlow, these transformations need to be computed for request level features repeatedly for _every_ item on which we want to compute a recommendation score. Moreover, if the model is being hosted on a dedicated remote inference server, this requires us to send copies of the request level data for every item as well. - -To address this, we built a custom GPU op which computes _all_ these transformations in parallel, and only reads and computes request level features once before fanning them out to the rest of the batch. Besides saving on redundant compute and network I/O, this implementation leverages the exceptional parallel computing power of NVIDIA GPUs to provide massive inference time accelerations compared to native CPU based implementations. - As a reference dataset, we used a subset of [the features engineered](https://github.com/gabrielspmoreira/kaggle_outbrain_click_prediction_google_cloud_ml_engine) by the 19th place finisher in the [Kaggle Outbrain Click Prediction Challenge](https://www.kaggle.com/c/outbrain-click-prediction/). This competition challenged competitors to predict the likelihood with which a particular ad on a website's display would be clicked on. Competitors were given information about the user, display, document, and ad in order to train their models. More information can be found [here](https://www.kaggle.com/c/outbrain-click-prediction/data). @@ -215,11 +209,11 @@ size (4096 is the default). Single GPU: ```bash -python -m trainer.task --gpu --amp --batch_size 131072 --num_epochs 100 +python -m trainer.task --gpu --amp --global_batch_size 131072 --num_epochs 120 ``` 8 GPU: ```bash -mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --gpu --amp --hvd --batch_size 16384 --num_epochs 20 +mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --gpu --amp --hvd --global_batch_size 131072 --num_epochs 120 ``` If you want to run validation or inference, you can either use the checkpoint obtained from the training @@ -356,9 +350,9 @@ Our results were obtained by running the benchmark scripts from the `scripts` di |**GPUs**|**Batch Size / GPU**|**Accuracy - FP32 (MAP@12)**|**Accuracy - Mixed precision (MAP@12)**|**Time to Train - FP32 (minutes)**|**Time to Train - Mixed precision (minutes)**|**Time to Train Speedup (FP32 to Mixed precision)**| |-------:|-------------------:|----------------------------:|---------------------------------------:|-----------------------------------------------:|----------------------:|---------------------------------:| -| 1 | 131,072 | 0.67689 | 0.67542 | 546 | 414 | 1.32 | -| 4 | 32,768 | 0.67677 | 0.67647 | 78 | 66 | 1.18 | -| 8 | 16,384 | 0.67669 | 0.67594 | 30 | 24 | 1.25 | +| 1 | 131,072 | 0.67647 | 0.67634 | 654 | 454 | 1.44 | +| 4 | 32,768 | 0.67599 | 0.67652 | 226 | 183 | 1.23 | +| 8 | 16,384 | 0.67688 | 0.67690 | 167 | 153 | 1.09 | To achieve the same results, follow the steps in the [Quick Start Guide](#quick-start-guide). @@ -368,15 +362,15 @@ To achieve the same results, follow the steps in the [Quick Start Guide](#quick- ##### Training stability test -The Wide and Deep model was trained for 72,951 training steps, starting -from 20 different initial random seeds. The training was performed in the 20.02-tf1-py3-stage NGC container on +The Wide and Deep model was trained for 54,713 training steps, starting +from 50 different initial random seeds. The training was performed in the 20.02-tf1-py3-stage NGC container on NVIDIA DGX-1 with 8x V100 16G GPUs with mixed precision enabled. After training, the models were evaluated on the test dataset. The following table summarizes the final MAP@12 score on the test set. |**Average MAP@12**|**Standard deviation**|**Minimum**|**Maximum**| |---------------------:|---------------------:|----------:|----------:| -| 0.67594 | 0.00204 | 0.66906 | 0.67785 | +| 0.67690 | 0.00081 | 0.67432 | 0.67821 | #### Training performance results @@ -390,9 +384,9 @@ To achieve these same results, follow the steps in the [Quick Start Guide](#quic |**GPUs**|**Batch Size / GPU**|**Throughput - FP32 (samples/s)**|**Throughput - Mixed precision (samples/s)**|**Throughput speedup (FP32 to Mixed precision)**|**Weak Scaling - FP32**|**Weak Scaling - Mixed precision**| |-------:|-------------------:|----------------------------:|---------------------------------------:|-----------------------------------------------:|----------------------:|---------------------------------:| -| 1 | 131,072 | 167,875 | 221,550 | 1.320 | 1.000 | 1.000 | -| 4 | 131,072 | 485,242 | 547,683 | 1.129 | 2.472 | 2.890 | -| 8 | 131,072 | 655,665 | 688,481 | 1.050 | 3.108 | 3.906 | +| 1 | 131,072 | 168,181 | 242,332 | 1.44 | 1.00 | 1.00 | +| 4 | 131,072 | 487,719 | 602,027 | 1.23 | 2.47 | 2.89 | +| 8 | 131,072 | 659,533 | 718,820 | 1.09 | 3.11 | 3.91 | diff --git a/TensorFlow/Recommendation/WideAndDeep/img/map12_WnD.png b/TensorFlow/Recommendation/WideAndDeep/img/map12_WnD.png index 68d01cd70bf97f98b79f3b052041abc8e751e395..d7ca9fb25cacce2369ebc544d137b1b18c65c668 100644 GIT binary patch literal 36201 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
    N;ncWhs@ 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 xm#O@3i~H*plM)kF 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 AkN^Mx diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_1gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_1gpu.sh index bb5f4415..5c3fa349 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_1gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_1gpu.sh @@ -17,4 +17,4 @@ set -x set -e -python -m trainer.task --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark --amp +python -m trainer.task --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark --amp diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_4gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_4gpu.sh index f96ee4e9..07c4108e 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_4gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_4gpu.sh @@ -17,4 +17,4 @@ set -x set -e -mpiexec --allow-run-as-root --bind-to socket -np 4 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark --amp +mpiexec --allow-run-as-root --bind-to socket -np 4 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark --amp diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_8gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_8gpu.sh index 4eea8c55..e46d47e9 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_8gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp16_8gpu.sh @@ -17,4 +17,4 @@ set -x set -e -mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark --amp +mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark --amp diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_1gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_1gpu.sh index 6ac2cc13..21bbca04 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_1gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_1gpu.sh @@ -17,4 +17,4 @@ set -x set -e -python -m trainer.task --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark +python -m trainer.task --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_4gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_4gpu.sh index 43b653f5..3638ec6c 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_4gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_4gpu.sh @@ -17,4 +17,4 @@ set -x set -e -mpiexec --allow-run-as-root --bind-to socket -np 4 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark +mpiexec --allow-run-as-root --bind-to socket -np 4 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark diff --git a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_8gpu.sh b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_8gpu.sh index b2ba6063..46d05334 100644 --- a/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_8gpu.sh +++ b/TensorFlow/Recommendation/WideAndDeep/scripts/benchmark_training_fp32_8gpu.sh @@ -17,4 +17,4 @@ set -x set -e -mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --num_epochs 15 --model_type wide_n_deep --gpu --benchmark +mpiexec --allow-run-as-root --bind-to socket -np 8 python -m trainer.task --hvd --model_dir . --transformed_metadata_path "/outbrain/tfrecords" --eval_data_pattern "/outbrain/tfrecords/eval_*" --train_data_pattern "/outbrain/tfrecords/train_*" --save_checkpoints_secs 600 --linear_l1_regularization 0.0 --linear_l2_regularization 0.0 --linear_learning_rate 0.2 --deep_l1_regularization 0.0 --deep_l2_regularization 0.0 --deep_learning_rate 1.0 --deep_dropout 0.0 --deep_hidden_units 1024 1024 1024 1024 1024 --prebatch_size 4096 --global_batch_size 131072 --eval_batch_size 32768 --eval_steps 8 --model_type wide_n_deep --gpu --benchmark diff --git a/TensorFlow/Recommendation/WideAndDeep/trainer/task.py b/TensorFlow/Recommendation/WideAndDeep/trainer/task.py index 8e859154..a66c36a6 100644 --- a/TensorFlow/Recommendation/WideAndDeep/trainer/task.py +++ b/TensorFlow/Recommendation/WideAndDeep/trainer/task.py @@ -94,8 +94,8 @@ def create_parser(): default=4096, type=int) parser.add_argument( - '--batch_size', - help='Training batch size', + '--global_batch_size', + help='Total training batch size', default=131072, type=int) parser.add_argument( @@ -116,7 +116,7 @@ def create_parser(): parser.add_argument( '--num_epochs', help='Number of epochs', - default=100, + default=120, type=int) parser.add_argument( '--save_checkpoints_secs', @@ -334,7 +334,7 @@ def get_feature_columns(use_all_columns=False, force_subset=None): def separate_input_fn( tf_transform_output, transformed_examples, - batch_size, + create_batches, mode, reader_num_threads=1, parser_num_threads=2, @@ -357,7 +357,7 @@ def separate_input_fn( if (mode==tf.estimator.ModeKeys.TRAIN and shuffle_buffer_size > 1) \ else raw_dataset raw_dataset = raw_dataset.repeat() - raw_dataset = raw_dataset.batch(batch_size) + raw_dataset = raw_dataset.batch(create_batches) # this function appears to require each element to be a vector # batching should mean that this is always true @@ -509,8 +509,7 @@ def custom_estimator_model_fn(features, labels, mode, params, config): with tf.compat.v1.variable_scope('deep', values=features) as scope: deep_absolute_scope = scope.name if params['model_type'] in [DEEP, WIDE_N_DEEP]: - deep_features = features.copy() - deep_current = tf.compat.v1.feature_column.input_layer(deep_features, params['deep_columns']) + deep_current = tf.compat.v1.feature_column.input_layer(features, params['deep_columns']) if params['model_type'] in [DEEP, WIDE_N_DEEP]: for layer_ind in range(len(params['layers'])): @@ -640,7 +639,8 @@ def main(FLAGS): dllogger.log(data=vars(FLAGS), step='PARAMETER') - create_batches = FLAGS.batch_size // FLAGS.prebatch_size + local_batch_size = FLAGS.global_batch_size // num_gpus + create_batches = local_batch_size // FLAGS.prebatch_size wide_columns, deep_columns = get_feature_columns(use_all_columns=FLAGS.use_all_columns) tf_transform_output = tft.TFTransformOutput(FLAGS.transformed_metadata_path) @@ -727,7 +727,7 @@ def main(FLAGS): estimator = tf.estimator.add_metrics(estimator, map_custom_metric) estimator = tf.estimator.add_metrics(estimator, map_custom_metric_with_leak) - steps_per_epoch = FLAGS.training_set_size / FLAGS.batch_size + steps_per_epoch = FLAGS.training_set_size / FLAGS.global_batch_size print('Steps per epoch: {}'.format(steps_per_epoch)) max_steps = int(FLAGS.num_epochs * steps_per_epoch) @@ -738,7 +738,7 @@ def main(FLAGS): if FLAGS.predict or FLAGS.evaluate: # inference if FLAGS.benchmark: - benchmark_hook = BenchmarkLoggingHook(global_batch_size=num_gpus * FLAGS.eval_batch_size, warmup_steps=FLAGS.benchmark_warmup_steps) + benchmark_hook = BenchmarkLoggingHook(global_batch_size=FLAGS.eval_batch_size, warmup_steps=FLAGS.benchmark_warmup_steps) hooks.append(benchmark_hook) eval_steps = FLAGS.benchmark_steps else: @@ -775,7 +775,7 @@ def main(FLAGS): else: # training if FLAGS.benchmark: - benchmark_hook = BenchmarkLoggingHook(global_batch_size=num_gpus * FLAGS.batch_size, + benchmark_hook = BenchmarkLoggingHook(global_batch_size=FLAGS.global_batch_size, warmup_steps=FLAGS.benchmark_warmup_steps) hooks.append(benchmark_hook) estimator.train(train_input_fn, hooks=hooks, steps=FLAGS.benchmark_steps) @@ -787,7 +787,7 @@ def main(FLAGS): throttle_secs=FLAGS.eval_throttle_secs, steps=FLAGS.eval_steps) result = tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec) - if result: + if result != (None, None): dllogger.log(step=(), data={'map': float(result[0]['map']), 'map_with_leak': float(result[0]['map_with_leak'])}) From 4f0f43b9a503809279ca474567516643e454d902 Mon Sep 17 00:00:00 2001 From: Przemek Strzelczyk <41076710+nvpstr@users.noreply.github.com> Date: Wed, 8 Apr 2020 15:21:57 +0200 Subject: [PATCH 4/9] Adding Transformer-XL/TF --- README.md | 3 +- .../Transformer-XL/Dockerfile | 7 + .../LanguageModeling/Transformer-XL/LICENSE | 201 ++++ .../LanguageModeling/Transformer-XL/NOTICE | 9 + .../LanguageModeling/Transformer-XL/README.md | 945 ++++++++++++++++++ .../Transformer-XL/getdata.sh | 120 +++ .../Transformer-XL/prep_text8.py | 62 ++ .../Transformer-XL/tf/data_utils.py | 488 +++++++++ .../Transformer-XL/tf/exp_utils.py | 56 ++ .../Transformer-XL/tf/img/model.png | Bin 0 -> 711129 bytes .../tf/img/training_loss_base.png | Bin 0 -> 335249 bytes .../Transformer-XL/tf/lamb.py | 179 ++++ .../Transformer-XL/tf/main.py | 510 ++++++++++ .../Transformer-XL/tf/model.py | 539 ++++++++++ .../Transformer-XL/tf/run_wt103_base.sh | 98 ++ .../Transformer-XL/tf/scripts/docker/build.sh | 17 + .../tf/scripts/docker/interactive.sh | 17 + .../tf/scripts/inference_benchmark.sh | 30 + .../Transformer-XL/tf/vocabulary.py | 170 ++++ 19 files changed, 3450 insertions(+), 1 deletion(-) create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/Dockerfile create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/LICENSE create mode 100644 TensorFlow/LanguageModeling/Transformer-XL/NOTICE create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/README.md create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/getdata.sh create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/prep_text8.py create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/data_utils.py create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/exp_utils.py create mode 100644 TensorFlow/LanguageModeling/Transformer-XL/tf/img/model.png create mode 100644 TensorFlow/LanguageModeling/Transformer-XL/tf/img/training_loss_base.png create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/lamb.py create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/main.py create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/model.py create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/run_wt103_base.sh create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/build.sh create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/interactive.sh create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/inference_benchmark.sh create mode 100755 TensorFlow/LanguageModeling/Transformer-XL/tf/vocabulary.py diff --git a/README.md b/README.md index 1ba59c12..c6f55be9 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. - __GNMT__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/GNMT)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Translation/GNMT)] - __Transformer__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/Transformer)] - __BERT__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT)] -- __Transformer-XL__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL)] +- __Transformer-XL__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/Transformer-XL)] ### Recommender Systems @@ -79,6 +79,7 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. | [SSD320 v1.2](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Detection/SSD) | TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT) |TensorFlow | N/A | Yes | Yes | Yes | Yes | - | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT/trtis) | Yes | | [BioBert](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT/biobert) | TensorFlow | N/A | Yes | Yes | - | - | - | - | - | +| [Transformer-XL](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/Transformer-XL) |TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [Neural Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/NCF) |TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [Variational Autoencoder Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/VAE-CF) |TensorFlow | N/A | Yes | Yes | - | - | - | - | - | | [WideAndDeep](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/WideAndDeep) | TensorFlow | N/A | Yes | Yes | - | - | - | - | - | diff --git a/TensorFlow/LanguageModeling/Transformer-XL/Dockerfile b/TensorFlow/LanguageModeling/Transformer-XL/Dockerfile new file mode 100755 index 00000000..b2299f4f --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/Dockerfile @@ -0,0 +1,7 @@ +ARG FROM_IMAGE_NAME=nvcr.io/nvidia/tensorflow:19.12-tf1-py3 +FROM ${FROM_IMAGE_NAME} + +WORKDIR /workspace/transformer-xl/tf +RUN pip --no-cache-dir --no-cache install 'git+https://github.com/NVIDIA/dllogger' + +ADD tf/ /workspace/transformer-xl/tf diff --git a/TensorFlow/LanguageModeling/Transformer-XL/LICENSE b/TensorFlow/LanguageModeling/Transformer-XL/LICENSE new file mode 100755 index 00000000..261eeb9e --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/TensorFlow/LanguageModeling/Transformer-XL/NOTICE b/TensorFlow/LanguageModeling/Transformer-XL/NOTICE new file mode 100644 index 00000000..bda76718 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/NOTICE @@ -0,0 +1,9 @@ +Transformer-XL for Tensorflow + +This repository includes software from https://github.com/kimiyoung/transformer-xl licensed under the Apache License 2.0. + +This repository includes software from https://github.com/salesforce/awd-lstm-lm licensed under the BSD-3-Clause license. + +This repository includes software from https://github.com/cybertronai/transformer-xl licensed under the Apache License 2.0. + +This repository includes software from https://github.com/cybertronai/pytorch-lamb licensed under the MIT license. diff --git a/TensorFlow/LanguageModeling/Transformer-XL/README.md b/TensorFlow/LanguageModeling/Transformer-XL/README.md new file mode 100755 index 00000000..b678bca9 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/README.md @@ -0,0 +1,945 @@ +# Transformer-XL For TensorFlow + +This repository provides a script and recipe to train the Transformer-XL model +to achieve state-of-the-art accuracy and is tested and maintained by NVIDIA. + +## Table Of Contents + + + +* [Model overview](#model-overview) + * [Model architecture](#model-architecture) + * [Default configuration](#default-configuration) + * [Feature support matrix](#feature-support-matrix) + * [Features](#features) + * [Mixed precision training](#mixed-precision-training) + * [Enabling mixed precision](#enabling-mixed-precision) +* [Setup](#setup) + * [Requirements](#requirements) +* [Quick Start Guide](#quick-start-guide) +* [Advanced](#advanced) + * [Scripts and sample code](#scripts-and-sample-code) + * [Parameters](#parameters) + * [Command-line options](#command-line-options) + * [Getting the data](#getting-the-data) + * [Dataset guidelines](#dataset-guidelines) + * [Multi-dataset](#multi-dataset) + * [Training process](#training-process) + * [Inference process](#inference-process) +* [Performance](#performance) + * [Benchmarking](#benchmarking) + * [Training performance benchmark](#training-performance-benchmark) + * [Inference performance benchmark](#inference-performance-benchmark) + * [Results](#results) + * [Training accuracy results](#training-accuracy-results) + * [Training accuracy: NVIDIA DGX-1 (8x V100 16G)](#training-accuracy-nvidia-dgx-1-8x-v100-16g) + * [Base model](#base-model) + * [Training accuracy: NVIDIA DGX-2 (16x V100 32G)](#training-accuracy-nvidia-dgx-2-16x-v100-32g) + * [Base model](#base-model-1) + * [Training loss plot](#training-loss-plot) + * [Base model](#base-model-2) + * [Training stability test](#training-stability-test) + * [Base model](#base-model-3) + * [Training performance results](#training-performance-results) + * [Training performance: NVIDIA DGX-1 (8x V100 16G)](#training-performance-nvidia-dgx-1-8x-v100-16g) + * [Base model](#base-model-4) + * [Training performance: NVIDIA DGX-2 (16x V100 32G)](#training-performance-nvidia-dgx-2-16x-v100-32g) + * [Base model](#base-model-5) + * [Inference performance results](#inference-performance-results) + * [Inference performance: NVIDIA DGX-1 (1x V100 16G)](#inference-performance-nvidia-dgx-1-1x-v100-16g) + * [Base model](#base-model-6) + * [Inference performance: NVIDIA T4](#inference-performance-nvidia-t4) + * [Base model](#base-model-7) +* [Release notes](#release-notes) + * [Changelog](#changelog) + * [Known issues](#known-issues) + + + +## Model overview + +This repository provides an implementation of the Transformer-XL model in +[TensorFlow](https://www.tensorflow.org) from the paper [Transformer-XL: Attentive +Language Models Beyond a Fixed-Length +Context](https://arxiv.org/abs/1901.02860). Transformer-XL is a +transformer-based language model with a segment-level recurrence and a novel +relative positional encoding. Enhancements introduced in Transformer-XL help +capture better long-term dependencies by attending to tokens from multiple +previous segments. + +Our implementation is based on the +[codebase](https://github.com/kimiyoung/transformer-xl) published by the +authors of the Transformer-XL paper. +Our implementation uses a modified model architecture. Our +modifications were made to achieve better hardware utilization and to take +advantage of Tensor Cores. Similar modifications were also proposed in an +implementation available from +[github.com/cybertronai/transformer-xl](https://github.com/cybertronai/transformer-xl). +Refer to the [Model architecture](#model-architecture) section for more +details. + +This model is trained with mixed precision using Tensor Cores on NVIDIA Volta +GPUs and evaluated on Volta and Turing GPUs. Therefore, researchers can get +results up to 1.5x faster than training without Tensor Cores, while +experiencing the benefits of mixed precision training. This model is tested +against each NGC monthly container release to ensure consistent accuracy and +performance over time. + +### Model architecture + +The Transformer-XL "base" model for WikiText-103 dataset available in this +repository was modified to use the following hyperparameter values: + + +|**Hyperparameter**|**Description**|**Original setting for the base model**|**Our modification to the base model**| +|------------------|---------------|--------------------------------------:|--------------------------------------:| +| `d_model` | hidden size | 410 | 512 | +| `n_head` | number of attention heads | 10 | 8 | +| `d_head` | size of each attention head | 41 | 64 | +| `d_inner` | hidden size in fully-connected layers | 2100 | 2048 | +| `tgt_len` | number of tokens to predict during training | 150 | 192 | +| `mem_len` | number of tokens cached from previous iterations during training | 150 | 192 | + +Changes described above were made to align certain hyperparameters with powers +of two, with this modification, the model is able to achieve better hardware +utilization, and therefore higher training throughput. + +The following table lists the hyperparameters for the base +Transformer-XL model for WikiText-103 dataset available in this repository. + +| **Hyperparameter** | **Description** | **Base model** | +| ------------------ | ---------------------------------------------------------------- | -------------: | +| `n_layer` | number of layers | 16 | +| `d_model` | hidden size | 512 | +| `n_head` | number of attention heads | 8 | +| `d_head` | size of each attention head | 64 | +| `d_inner` | inner hidden size in fully-connected layers | 2048 | +| `dropout` | dropout | 0.1 | +| `dropatt` | dropout after softmax in the attention | 0.0 | +| `lr` | base learning rate | 0.01 | +| `min_lr_ratio` | minimum ratio learning rate (for cosine decay) | 0.1 | +| `max_step` | number of training steps | 40,000 | +| `warmup_step` | number of learning rate warmup steps | 1,000 | +| `batch_size` | training batch size | 256 | +| `tgt_len` | number of tokens to predict during training | 192 | +| `mem_len` | number of tokens cached from previous iterations during training | 192 | + + +The Transformer-XL model addresses the limitations of vanilla transformer-based +language models, which are only able to use relatively short context, bounded +by the segment length. The Transformer-XL introduces a recurrence mechanism, +which is able to use a cached hidden state from previous segments. During +training, the context consists of a concatenation of the current segment's hidden +state and cached states from previous iterations. Gradients are backpropagated +only through the current segment, although the model is able to take advantage +of the extra information stored in the cache and therefore is able to model +long-term dependencies. + +An illustration of the recurrence mechanism taken from the [Transformer-XL +paper](https://arxiv.org/abs/1901.02860) is shown below. +![model](tf/img/model.png) + + +### Default configuration + +The following features were implemented in this model: + +* general + * single-node, Horovod multi-GPU training + * training and inference with mixed precision using Tensor Cores + * automatic mixed precision training (AMP) + +* model + * 16-layer base Transformer-XL model with hidden size 512, 8 attention heads, + each head with hidden size 64 + * the model trained on + [WikiText-103](https://blog.einstein.ai/the-wikitext-long-term-dependency-language-modeling-dataset/) + dataset, using word-level vocabulary and + adaptive softmax + * embedding weights are tied with weights in the classifier + +* training + * training with [LAMB](https://arxiv.org/abs/1904.00962) optimizer, the + implementation of the optimizer uses [XLA](https://www.tensorflow.org/xla), which enables + the fusion of elementwise operations and accelerates the training + * support for training with a gradient accumulation + * base model: + * linear learning rate warmup for 1,000 iterations, followed by the cosine + learning rate schedule, the initial learning rate is set to 0.0, and the final + learning rate is set to 0.001 (min_lr_ratio * base_lr) + * training for 40,000 steps, using a batch size of 256 + +* inference + * support for single-GPU inference + * each token is using the same size of the context from previous time steps. + * base model: + * target length is set to 64, length of memory is set to 640 + * positional embeddings are clamped after 400 time steps + +### Feature support matrix + +The following features are supported by this model: + +| **Feature** | **Transformer-XL** | +|:------------|-------------------:| +|[Automatic mixed precision (AMP)](https://nvidia.github.io/apex/amp.html) | Yes | +|[Horovod Multi-GPU (NCCL)](https://github.com/horovod/horovod) | Yes | +|[LAMB](https://arxiv.org/abs/1904.00962v3) | Yes | + + +#### Features + +[TF-AMP](https://docs.nvidia.com/deeplearning/dgx/tensorflow-user-guide/index.html#tfamp) - a +tool that enables Tensor Core-accelerated training. Refer to the [Enabling +mixed precision](#enabling-mixed-precision) section for more details. + +[Horovod](https://github.com/horovod/horovod) - Horovod +is a distributed training framework for TensorFlow, Keras, PyTorch, and MXNet. +The goal of Horovod is to make distributed deep learning fast and easy to use. +For more information about how to get started with Horovod, see the [Horovod: +Official repository](https://github.com/horovod/horovod). + +[Multi-GPU training with Horovod](https://github.com/horovod/horovod/#usage) - our model +uses Horovod to implement efficient multi-GPU training with NCCL. For details, +see example sources in this repository or see the [TensorFlow +tutorial](https://github.com/horovod/horovod/#usage). + +[LAMB](https://arxiv.org/abs/1904.00962v3) - stands +for Layerwise Adaptive Moments Based optimizer, is a large batch optimization +technique that helps accelerate training of deep neural networks using large +minibatches. + +### Mixed precision training + +Mixed precision is the combined use of different numerical precisions in a +computational method. +[Mixed precision](https://arxiv.org/abs/1710.03740) training offers significant +computational speedup by performing operations in half-precision format while +storing minimal information in single-precision to retain as much information +as possible in critical parts of the network. Since the introduction of [Tensor +Cores](https://developer.nvidia.com/tensor-cores) in the Volta and Turing +architectures, significant training speedups are experienced by switching to +mixed precision -- up to 3x overall speedup on the most arithmetically intense +model architectures. Using mixed precision training previously required two +steps: + +1. Porting the model to use the FP16 data type where appropriate. +2. Manually adding loss scaling to preserve small gradient values. + +The ability to train deep learning networks with lower precision was introduced +in the Pascal architecture and first supported in [CUDA +8](https://devblogs.nvidia.com/parallelforall/tag/fp16/) in the NVIDIA Deep +Learning SDK. + +For information about: + +* How to train using mixed precision, see the [Mixed Precision + Training](https://arxiv.org/abs/1710.03740) paper and [Training With Mixed + Precision](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html) + documentation. +* Techniques used for mixed precision training, see the [Mixed-Precision + Training of Deep Neural + Networks](https://devblogs.nvidia.com/mixed-precision-training-deep-neural-networks/) + blog. +* How to access and enable AMP for TensorFlow, see [Using + TF-AMP](https://docs.nvidia.com/deeplearning/dgx/tensorflow-user-guide/index.html#tfamp) + from the TensorFlow User Guide. + +#### Enabling mixed precision + +Automatic Mixed Precision (AMP) for TensorFlow enables the full [mixed precision +methodology](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html#tensorflow) in your existing +TensorFlow model code. AMP enables mixed precision training on Volta and Turing GPUs automatically. The TensorFlow +framework code makes all necessary model changes internally. + +In TF-AMP, the computational graph is optimized to use as few casts as necessary and maximizes the use of FP16, and the +loss scaling is automatically applied inside of supported optimizers. AMP can be configured to work with the existing +`tf.contrib` loss scaling manager by disabling the AMP scaling with a single environment variable to perform only the +automatic mixed precision optimization. It accomplishes this by automatically rewriting all computation graphs with the +necessary operations to enable mixed precision training and automatic loss scaling. + +## Setup + +The following section lists the requirements that you need to meet in order to +start training the Transformer-XL model. + +### Requirements + +This repository contains `Dockerfile` which extends the TensorFlow NGC container +and encapsulates some dependencies. Aside from these dependencies, ensure you +have the following components: + +* [NVIDIA Docker](https://github.com/NVIDIA/nvidia-docker) +* [TensorFlow 19.12-tf1-py3](https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow) NGC container +* [NVIDIA Volta](https://www.nvidia.com/en-us/data-center/volta-gpu-architecture/) + or [Turing](https://www.nvidia.com/pl-pl/geforce/turing/) based GPU + +For more information about how to get started with NGC containers, see the +following sections from the NVIDIA GPU Cloud Documentation and the Deep +Learning DGX Documentation: + +* [Getting Started Using NVIDIA GPU Cloud](https://docs.nvidia.com/ngc/ngc-getting-started-guide/index.html), +* [Accessing And Pulling From The NGC Container Registry](https://docs.nvidia.com/deeplearning/dgx/user-guide/index.html#accessing_registry), +* [Running TensorFlow](https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running) + +For those unable to use the TensorFlow NGC container, to set up the required environment or create your own container, +see the versioned [NVIDIA Container Support +Matrix](https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html). + +## Quick Start Guide + +To train your model using mixed precision with Tensor Cores or using FP32, +perform the following steps using the default parameters of the Transformer-XL +base model on the +[WikiText-103](https://blog.einstein.ai/the-wikitext-long-term-dependency-language-modeling-dataset/) +dataset. + +For the specifics concerning training +and inference, see the [Advanced](#advanced) section. + +1. Clone the repository. + +``` +git clone https://github.com/NVIDIA/DeepLearningExamples +cd DeepLearningExamples/TensorFlow/LanguageModeling/Transformer-XL +``` + +2. Download and preprocess the dataset. + +``` +bash getdata.sh +``` + +3. Build the Transformer-XL TensorFlow NGC container. + +``` +bash tf/scripts/docker/build.sh +``` + +4. Start an interactive session in the NGC container to run training/inference. + +``` +bash tf/scripts/docker/interactive.sh +``` + +5. Create tfrecords before your first training/evaluation for a given batch size per GPU. +Use same --batch_chunk and --training_batch_size flags as in the training. + +For training on DGX-1 with gradient accumulation in 2 steps: +``` +bash run_wt103_base.sh train_data --batch_chunk 2 +``` + +For single GPU training with gradient accumulation in 16 steps: +``` +bash run_wt103_base.sh train_data --batch_chunk 16 +``` + +For evaluation: +``` +bash run_wt103_base.sh test_data +``` + +6. Start training. + +To start mixed precision training on 8 GPUs on DGX-1, run: + +``` +bash run_wt103_base.sh train 8 --fp16 --batch_chunk 2 +``` + +To start FP32 training on single GPU, run: + +``` +bash run_wt103_base.sh train 1 --batch_chunk 16 +``` + +To start mixed precision training on 16 GPUs on DGX-2, run: + +``` +bash run_wt103_base.sh train 16 --fp16 +``` + +To start FP32 training on 16 GPUs on DGX-2, run: + +``` +bash run_wt103_base.sh train 16 +``` + +For more information on the available options, and for an explanation of what +happens at the end of training, refer to the [Training +process](#training-process) section. + +7. Start evaluation. + +To start mixed precision inference on the test set, run: + +``` +bash run_wt103_base.sh eval [--fp16] +``` + +The `--fp16` flag is optional, however, if it's set, then the script +launches mixed precision inference with Tensor Cores. If the flag is not +present, then the script launches FP32 inference. +By default, the script is loading the checkpoint from +`LM-TFM/model.ckpt`, which contains the model corresponding to the +last checkpoint from the previous training run. The path to the +checkpoint can be customized by setting the `--model_dir` flag. + +For more information on the available options, refer to the [Inference +process](#inference-process) section. + +## Advanced + +The following sections provide greater details of the dataset, running training +and inference, and the training results. + +### Scripts and sample code + +* `Dockerfile`: a container with the basic set of dependencies to run + Transformer-XL + +In the `tf` directory, the most important files are: + +* `data_utils.py`: data loading utilities +* `exp_utils.py`: utility functions for running training and benchmarking +* `lamb.py`: implementation of [LAMB](https://arxiv.org/abs/1904.00962) + optimizer +* `main.py`: serves as the entry point to launch the training and inference +* `model.py`: implementation of the Transformer-XL model +* `vocabulary.py`: implementation of word-level vocabulary + +### Parameters + +The complete list of available parameters for the `tf/main.py` script contains: + +``` + --batch_chunk: Number of accumulation steps. + (default: '1') + (an integer) + --clamp_len: Clamp length + (default: '-1') + (an integer) + --clip: Gradient clipping value. + (default: '0.25') + (a number) + --corpus_info_path: Path to corpus-info.json file. + (default: '') + --d_embed: Dimension of the embeddings. + (default: '512') + (an integer) + --d_head: Dimension of each attention head. + (default: '64') + (an integer) + --d_inner: Dimension of inner hidden size in positionwise feed-forward. + (default: '2048') + (an integer) + --d_model: Dimension of the model. + (default: '512') + (an integer) + --data_dir: Path to tf-records directory. + (default: '') + --div_val: Divide the embedding size by this val for each bin + (default: '1') + (an integer) + --[no]do_eval: Whether to run eval on the dev set. + (default: 'false') + --[no]do_train: Whether to run training. + (default: 'true') + --dropatt: Attention dropout rate. + (default: '0.0') + (a number) + --dropout: Dropout rate. + (default: '0.1') + (a number) + --eval_batch_size: Size of valid batch. + (default: '16') + (an integer) + --eval_ckpt_path: Checkpoint path for do_test evaluation.If set, model_dir will be ignored.If unset, will use the latest ckpt in model_dir. + --eval_split: Which data split to evaluate. + (default: 'valid') + --[no]fp16: Whether to enable AMP ops. + (default: 'false') + --init: : Initialization method. + (default: 'normal') + --init_range: Initialization std when init is uniform. + (default: '0.1') + (a number) + --init_std: Initialization std when init is normal. + (default: '0.02') + (a number) + --learning_rate: Maximum learning rate. + (default: '0.01') + (a number) + --log_interval: Number of iterations per repeat loop. + (default: '100') + (an integer) + --max_eval_batch: Set -1 to turn off. Only used in test mode. + (default: '-1') + (an integer) + --mem_len: Number of steps to cache + (default: '192') + (an integer) + --min_lr_ratio: Minimum ratio learning rate. + (default: '0.1') + (a number) + --model_dir: Estimator model_dir. + (default: 'LM-TFM') + --n_head: Number of attention heads. + (default: '8') + (an integer) + --n_layer: Number of layers. + (default: '16') + (an integer) + --num_core_per_host: Number of cores per host + (default: '8') + (an integer) + --percentiles: percentiles for latency confidence intervals + (default: '90,95,99') + (a comma separated list) + --proj_init_std: Initialization std for embedding projection. + (default: '0.01') + (a number) + --[no]proj_same_dim: Project the bin with the same dimension. + (default: 'true') + --[no]proj_share_all_but_first: True to share all but first projs, False not to share. + (default: 'false') + --record_info_dir: Path to local directory containing filenames.txt. + (default: '') + --[no]same_length: Same length attention + (default: 'false') + --save_steps: number of steps for model checkpointing. + (default: '5000') + (an integer) + --tgt_len: Number of steps to predict + (default: '192') + (an integer) + --[no]tie_weight: Tie embedding and softmax weight. + (default: 'true') + --train_batch_size: Size of train batch. + (default: '256') + (an integer) + --train_steps: Total number of training steps. + (default: '40000') + (an integer) + --[no]untie_r: untie r_w_bias and r_r_bias + (default: 'false') + --warmup_steps: Number of steps for linear lr warmup. + (default: '1000') + (an integer) +``` + +### Command-line options + +To see the full list of available options and their descriptions, use the `--help` command-line option. +For example: + +``` +python3 main.py --help +``` + +### Getting the data + +The Transformer-XL model was trained on the +[WikiText-103](https://blog.einstein.ai/the-wikitext-long-term-dependency-language-modeling-dataset/) +dataset. The WikiText-103 dataset is a collection of over 100 million tokens +extracted from the set of verified +[Good](https://en.wikipedia.org/wiki/Wikipedia:Good_articles) and +[Featured](https://en.wikipedia.org/wiki/Wikipedia:Featured_articles) articles +on Wikipedia. + +This repository contains the `getdata.sh` download script which +automatically downloads and extracts the training, validation and test +datasets. By default, data is downloaded to the `data` directory. + +In order to test with other datasets, the script needs to be customized +accordingly. + +#### Dataset guidelines + +The WikiText-103 dataset was already pre-tokenized with word-level tokens. The +dataset features a large vocabulary of 267,735 tokens and retains the original +case, punctuation and numbers. + +The `getdata.sh` script downloads the data, extracts the archive and renames +the training, validation, and test set to `train.txt`, `valid.txt`, `test.txt` +respectively. + +#### Multi-dataset + +Using other datasets requires changes in the `tf/data_utils.py` file: +* the name of the new dataset should be added to the `dataset` flag +* the support for the new dataset needs to be added to the `Corpus` class: + names of files containing training, validation and test data, options for + the tokenizer, dataset iterator and desired values of cutoffs for adaptive softmax + +The current codebase supports training with word-level vocabulary +(automatically generated based on the provided dataset) + +Additionally, using other datasets may require changes in some hyperparameters +(for example, batch size, learning rate, number of training steps, +and the configuration of learning rate scheduler). + +### Training process + +The default training configuration can be launched by running the +`run_wt103_base.sh` script with the first argument +set to `train`. By default, the training results are saved to `tf/LM-TFM` directory, +and map to your container's `/workspace/transformer-x/tf/LM-TFM` directory; +this can be customized by setting the `--model_dir` parameter. + +The training script launches a single-node data-parallel training with a fixed +global batch size of 256, optionally with gradient accumulation to allow +training on configurations with less than 16 GPUs. + +**Command-line** + +You can launch training of the Transformer-XL base model on the +WikiText-103 dataset with the word-based vocabulary and adaptive softmax using +`<#GPUs>` GPUs. For example: + +``` +bash run_wt103_base.sh train <#GPUs> [--fp16] [--batch_chunk CHUNK] +``` + +The `--fp16` flag is optional, however, if it's set, then the script +launches mixed precision training with Tensor Cores; if the flag is not +present, then the script launches FP32 training. + +The `--batch_chunk CHUNK` parameter controls gradient accumulation. With +gradient accumulation, the batch size is split into `CHUNK` chunks of equal +size, the training script executes the forward and backward pass using each +chunk and then executes the optimizer using accumulated gradients. + +**Examples** + +You can launch mixed precision training of the Transformer-XL base model on the +WikiText-103 dataset using 16 GPUs. For example: + +``` +bash run_wt103_base.sh train 16 --fp16 --batch_chunk 1 +``` + +The batch size per GPU is equal to the default global batch size of 256 +divided by the product of the number of GPUs times the number of chunks. In this +case, batch size per GPU is equal to `256 / (16 * 1) = 16`. + +You can launch FP32 training using 8 GPUs; the batch size per GPU is equal to 16 +(`--batch_chunk` was set to `2` because a local batch size of 32 runs out +of memory on a DGX-1 with Tesla V100 16G in FP32 training). For example: + +``` +bash run_wt103_base.sh train 8 --batch_chunk 2 +``` + +A summary of the training progress is printed after every 100 training +iterations; this can be customized by setting the `--log_interval` parameter. +The summary is printed in the following format: + +``` +step 1300 | lr 0.009998686 | loss 5.09 | pplx 162.70, bpc 7.3461, tok/s 138037 +``` + +which contains information about a current training +step, current learning rate, current training loss, +training [perplexity](https://en.wikipedia.org/wiki/Perplexity#Perplexity_per_word), +bits per character and throughput in tokens per second. + + +The script saves one checkpoint: `model.ckpt` which contains the last saved model. +By default, model saving is executed every +5000 training steps, this can be customized by setting the `--save_steps` +parameter. + +Evaluation (inference) benefits from longer attention sequences, therefore to +reproduce perplexity values reported in the [Transformer-XL +paper](https://arxiv.org/abs/1901.02860), it's necessary to run the final +evaluation with a dedicated inference script. Refer to the [Inference +process](#inference-process) section for more details. + +### Inference process + +Inference can be run by launching the `run_wt103_base.sh` script +with the first argument set to `eval`. Running +inference requires a pre-trained model checkpoint. + +The script supports only single-GPU inference. + +**Command-line** + +You can launch inference of the Transformer-XL base model on the +WikiText-103 dataset with the word-based vocabulary and adaptive softmax. + +For example: + +``` +bash run_wt103_base.sh eval --model_dir [--fp16] +``` + +The `--fp16` flag is optional, however, if it's specified, then the script +launches inference with Tensor Cores; if the flag is not present, then the +script launches FP32 inference. + +**Examples** + +To launch mixed precision inference on a single GPU using a checkpoint +loaded from `LM-TFM/model.ckpt*`, run: + +``` +bash run_wt103_base.sh eval --model_dir LM-TFM --fp16 +``` + +To launch FP32 inference on a single GPU using a checkpoint loaded +from `LM-TFM/model.ckpt*`, run: + +``` +bash run_wt103_base.sh eval --model_dir LM-TFM +``` + +After the execution, the script prints a summary in the following format: + +``` +I0109 13:02:31.304439 139903273469760 main.py:440] Evaluating with: math fp16 +INFO:tensorflow:| loss 3.15 | pplx 23.32, bpc 4.5432, tok/s 9946, ms/batch 102.84 +``` + +which contains information about loss, perplexity and execution performance on the test dataset. + +## Performance + +### Benchmarking + +The following section shows how to run benchmarks measuring the model +performance in training and inference modes. + +#### Training performance benchmark + +To benchmark the training performance on a specific global batch size ``, +with a specific number of GPUs `<#GPUs>` for a specific number of training +iterations `` run: + +For the base model: + +``` +bash run_wt103_base.sh train <#GPUs> --train_batch_size --train_steps --log_interval 1 [--fp16] [--batch_chunk CHUNK] +``` + +It's recommended to launch at least 1500 training steps to get a reliable +estimate of training performance. For more information about the available +options, refer to the [Training process](#training-process) section. + +The training script prints information in the following format: + +``` +(...) +[1,0]:INFO:tensorflow:step 99 | lr 0.000990000 | loss 9.22 | pplx 10069.60, bpc 13.2977, tok/s 136092 +[1,0]:I0109 12:18:41.333325 140403024426816 main.py:333] step 99 | lr 0.000990000 | loss 9.22 | pplx 10069.60, +bpc 13.2977, tok/s 136092 +[1,0]:INFO:tensorflow:step 100 | lr 0.001000000 | loss 9.21 | pplx 9981.87, bpc 13.2851, tok/s 135309 +[1,0]:I0109 12:18:41.696926 140403024426816 main.py:333] step 100 | lr 0.001000000 | loss 9.21 | pplx 9981.87, +bpc 13.2851, tok/s 135309 +(...) +[1,0]:INFO:tensorflow:Training throughput: 135959 tok/s +``` + +The last two lines contain information on the +average training throughput measured in tokens per second. + +#### Inference performance benchmark + +The inference performance and accuracy benchmarks require a checkpoint from a +trained model. + +To benchmark the inference performance on a specific global batch size ``, run: + +``` +bash run_wt103_base.sh eval --model_dir --eval_batch_size [--fp16] +``` + +The inference script prints information in the following format: + +``` +I0109 13:02:31.304439 139903273469760 main.py:440] Evaluating with: math fp16 +INFO:tensorflow:| loss 3.15 | pplx 23.32, bpc 4.5432, tok/s 9946, ms/batch 102.84 +``` + +The output contains information on the achieved test loss and test perplexity, +average inference throughput (measured in tokens per second), average inference +latency (measured in milliseconds). + +### Results + +The following sections provide details on how we achieved our performance and +accuracy in training and inference. + +#### Training accuracy results + +##### Training accuracy: NVIDIA DGX-1 (8x V100 16G) + +###### Base model +Our results were obtained by running the `tf/run_wt103_base.sh` +training script in the tensorflow:19.12-tf1-py3 NGC container on NVIDIA DGX-1 +with 8x V100 16G GPUs. + +|**GPUs**|**Batch Size / GPU**|**Accuracy - FP32 (perplexity)**|**Accuracy - Mixed precision (perplexity)**|**Time to Train - FP32 (minutes)**|**Time to Train - Mixed precision (minutes)**|**Time to Train Speedup (FP32 to Mixed precision)**| +|-------:|-------------------:|-------------------------------:|------------------------------------------:|---------------------------------:|--------------------------------------------:|--------------------------------------------------:| +| 1 | 16 | 23.64 | 23.58 | 2943 | 2011 | 1.46 | +| 8 | 16 | 23.36 | 23.38 | 439 | 333 | 1.32 | + +##### Training accuracy: NVIDIA DGX-2 (16x V100 32G) + +###### Base model + +Our results were obtained by running the `tf/run_wt103_base.sh` +training script in the tensorflow:19.12-tf1-py3 NGC container on NVIDIA DGX-2 +with 16x V100 32G GPUs. + +|**GPUs**|**Batch Size / GPU**|**Accuracy - FP32 (perplexity)**|**Accuracy - Mixed precision (perplexity)**|**Time to Train - FP32 (minutes)**|**Time to Train - Mixed precision (minutes)**|**Time to Train Speedup (FP32 to Mixed precision)**| +|-------:|-------------------:|-------------------------------:|------------------------------------------:|---------------------------------:|--------------------------------------------:|--------------------------------------------------:| +| 16 | 16 | 23.39 | 23.37 | 202 | 161 | 1.25 | +| 8 | 32 | 23.33 | 23.40 | 330 | 227 | 1.46 | + + +##### Training loss plot + +###### Base model + +![TrainingLossBase](tf/img/training_loss_base.png) + +##### Training stability test + +###### Base model +The Transformer-XL base model was trained for 40,000 training steps, starting +from 20 different initial random seeds. The training was performed in the tensorflow:19.12-tf1-py3 NGC container on +NVIDIA DGX-1 with 8x V100 16G GPUs. +After training, the models were evaluated on the test dataset. The following +table summarizes the final perplexity on the test set. + +|**Average perplexity**|**Standard deviation**|**Minimum**|**Maximum**|**Median**| +|---------------------:|---------------------:|----------:|----------:|---------:| +| 23.39 | 0.0878 | 23.24 | 23.58 | 23.39 | + +#### Training performance results + +##### Training performance: NVIDIA DGX-1 (8x V100 16G) + +###### Base model + +Our results were obtained by running the `tf/run_wt103_base.sh` +training script in the tensorflow:19.12-tf1-py3 NGC container on NVIDIA DGX-1 with 8x +V100 16G GPUs. Performance numbers (in tokens per second) were averaged over 2000 +training iterations. + +|**GPUs**|**Batch Size / GPU**|**Throughput - FP32 (tok/s)**|**Throughput - Mixed precision (tok/s)**|**Throughput speedup (FP32 to Mixed precision)**|**Weak Scaling - FP32**|**Weak Scaling - Mixed precision**| +|-------:|-------------------:|----------------------------:|---------------------------------------:|-----------------------------------------------:|----------------------:|---------------------------------:| +| 1 | 16 | 9,104 | 13,004 | 1.428 | 1.000 | 1.000 | +| 2 | 16 | 18,169 | 23,856 | 1.313 | 1.996 | 1.835 | +| 4 | 16 | 38,876 | 50,310 | 1.294 | 4.270 | 3.869 | +| 8 | 16 | 78,626 | 101,954 | 1.297 | 8.636 | 7.840 | + +To achieve these same results, follow the steps in the [Quick Start Guide](#quick-start-guide). + +##### Training performance: NVIDIA DGX-2 (16x V100 32G) + +###### Base model + +Our results were obtained by running the `tf/run_wt103_base.sh` training +script in the tensorflow:19.12-tf1-py3 NGC container on NVIDIA DGX-2 with 16x V100 32G +GPUs. Performance numbers (in tokens per second) were averaged over 2000 +training iterations. + +|**GPUs**|**Batch Size / GPU**|**Throughput - FP32 (tok/s)**|**Throughput - Mixed precision (tok/s)**|**Throughput speedup (FP32 to Mixed precision)**|**Weak Scaling - FP32**|**Weak Scaling - Mixed precision**| +|-------:|-------------------:|----------------------------:|---------------------------------------:|-----------------------------------------------:|----------------------:|---------------------------------:| +| 1 | 16 | 9,891 | 13,791 | 1.394 | 1.000 | 1.000 | +| 2 | 16 | 21,550 | 28,306 | 1.314 | 2.179 | 2.052 | +| 4 | 16 | 42,616 | 55,430 | 1.301 | 4.309 | 4.019 | +| 8 | 16 | 83,932 | 107,999 | 1.287 | 8.486 | 7.831 | +| 16 | 16 | 164,675 | 206,906 | 1.256 | 16.649 | 15.003 | + +To achieve these same results, follow the steps in the [Quick Start Guide](#quick-start-guide). + +#### Inference performance results + +##### Inference performance: NVIDIA DGX-1 (1x V100 16G) + +###### Base model + +Our results were obtained by running the +`tf/scripts/inference_benchmark.sh` inferencing benchmarking script in the +tensorflow:19.12-tf1-py3 NGC container on NVIDIA DGX-1 with 1x V100 16G GPU. + +The command to launch the inference performance benchmark is provided in the +[Inference performance benchmark](#inference-performance-benchmark) section. + +**FP16** + +|**Batch size**|**Sequence length**|**Memory length**|**Throughput Avg (tok/s)**|**Latency Avg (ms)**|**Latency 90% (ms)**|**Latency 95% (ms)**|**Latency 99% (ms)**| +|-------------:|------------------:|----------------:|-------------------------:|-------------------:|-------------------:|-------------------:|-------------------:| +| 1 | 64 | 640 | 1394.7 | 45.91 | 47.18 | 47.98 | 49.47 | +| 2 | 64 | 640 | 2560.9 | 50.00 | 51.30 | 52.08 | 54.94 | +| 4 | 64 | 640 | 4326.6 | 59.14 | 60.47 | 61.21 | 63.00 | +| 8 | 64 | 640 | 6621.9 | 77.29 | 78.50 | 79.01 | 81.36 | +| 16 | 64 | 640 | 8872.3 | 115.34 | 116.93 | 117.98 | 121.15 | +| 32 | 64 | 640 | 10441.9 | 196.00 | 197.94 | 199.43 | 203.96 | + +**FP32** + +|**Batch size**|**Sequence length**|**Memory length**|**Throughput Avg (tok/s)**|**Latency Avg (ms)**|**Latency 90% (ms)**|**Latency 95% (ms)**|**Latency 99% (ms)**| +|-------------:|------------------:|----------------:|-------------------------:|-------------------:|-------------------:|-------------------:|-------------------:| +| 1 | 64 | 640 | 1315.2 | 48.70 | 49.78 | 50.54 | 53.31 | +| 2 | 64 | 640 | 2419.2 | 52.91 | 54.17 | 54.73 | 56.13 | +| 4 | 64 | 640 | 4012.7 | 63.76 | 65.27 | 66.11 | 67.81 | +| 8 | 64 | 640 | 5650.1 | 90.56 | 91.92 | 92.47 | 94.15 | +| 16 | 64 | 640 | 7041.2 | 145.34 | 147.20 | 148.38 | 151.37 | +| 32 | 64 | 640 | 8051.3 | 254.14 | 256.58 | 257.51 | 258.39 | + +To achieve these same results, follow the steps in the [Quick Start Guide](#quick-start-guide). + +##### Inference performance: NVIDIA T4 + +###### Base model + +Our results were obtained by running the +`tf/scripts/inference_benchmark.sh` inferencing benchmarking script in the +tensorflow:19.12-tf1-py3 NGC container on NVIDIA T4. + +The command to launch the inference performance benchmark is provided in the +[Inference performance benchmark](#inference-performance-benchmark) section. + +**FP16** + +|**Batch size**|**Sequence length**|**Memory length**|**Throughput Avg (tok/s)**|**Latency Avg (ms)**|**Latency 90% (ms)**|**Latency 95% (ms)**|**Latency 99% (ms)**| +|-------------:|------------------:|----------------:|-------------------------:|-------------------:|-------------------:|-------------------:|-------------------:| +| 1 | 64 | 640 | 1053.6 | 60.75 | 61.59 | 62.02 | 63.58 | +| 2 | 64 | 640 | 2024.5 | 63.22 | 63.95 | 64.76 | 67.33 | +| 4 | 64 | 640 | 3309.7 | 77.30 | 78.33 | 78.85 | 80.12 | +| 8 | 64 | 640 | 4713.7 | 108.53 | 109.66 | 110.26 | 111.15 | +| 16 | 64 | 640 | 6075.8 | 168.40 | 169.62 | 170.28 | 171.88 | +| 32 | 64 | 640 | 6850.5 | 298.69 | 300.42 | 301.04 | 302.21 | + +**FP32** + +|**Batch size**|**Sequence length**|**Memory length**|**Throughput Avg (tok/s)**|**Latency Avg (ms)**|**Latency 90% (ms)**|**Latency 95% (ms)**|**Latency 99% (ms)**| +|-------------:|------------------:|----------------:|-------------------------:|-------------------:|-------------------:|-------------------:|-------------------:| +| 1 | 64 | 640 | 929.5 | 68.88 | 70.43 | 70.88 | 72.05 | +| 2 | 64 | 640 | 1757.6 | 72.84 | 74.30 | 75.08 | 76.62 | +| 4 | 64 | 640 | 2696.7 | 94.87 | 97.02 | 97.58 | 99.19 | +| 8 | 64 | 640 | 3561.6 | 143.65 | 145.98 | 146.96 | 148.18 | +| 16 | 64 | 640 | 4190.4 | 244.16 | 246.34 | 246.62 | 247.32 | +| 32 | 64 | 640 | 4567.7 | 447.96 | 451.19 | 452.77 | 455.32 | + +To achieve these same results, follow the steps in the [Quick Start Guide](#quick-start-guide). + +## Release notes + +### Changelog + +* April 2020 + * Initial release + * Support for FP32 and mixed precision training on NVIDIA + DGX-1, NVIDIA DGX-2, and inference on NVIDIA Tesla V100 16G + and NVIDIA T4 + +### Known issues + +There are no known issues with this model. diff --git a/TensorFlow/LanguageModeling/Transformer-XL/getdata.sh b/TensorFlow/LanguageModeling/Transformer-XL/getdata.sh new file mode 100755 index 00000000..51c134b0 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/getdata.sh @@ -0,0 +1,120 @@ +# BSD 3-Clause License +# +# Copyright (c) 2017, +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +echo "=== Acquiring datasets ===" +echo "---" + +mkdir -p data +cd data + +if [[ ! -d 'wikitext-2' ]]; then + echo "- Downloading WikiText-2 (WT2)" + wget --quiet --continue https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-2-v1.zip + unzip -q wikitext-2-v1.zip + cd wikitext-2 + mv wiki.train.tokens train.txt + mv wiki.valid.tokens valid.txt + mv wiki.test.tokens test.txt + cd .. +fi + +echo "- Downloading WikiText-103 (WT2)" +if [[ ! -d 'wikitext-103' ]]; then + wget --continue https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-103-v1.zip + unzip -q wikitext-103-v1.zip + cd wikitext-103 + mv wiki.train.tokens train.txt + mv wiki.valid.tokens valid.txt + mv wiki.test.tokens test.txt + cd .. +fi + +echo "- Downloading enwik8 (Character)" +if [[ ! -d 'enwik8' ]]; then + mkdir -p enwik8 + cd enwik8 + wget --continue http://mattmahoney.net/dc/enwik8.zip + wget https://raw.githubusercontent.com/salesforce/awd-lstm-lm/master/data/enwik8/prep_enwik8.py + python3 prep_enwik8.py + cd .. +fi + +echo "- Downloading text8 (Character)" +if [[ ! -d 'text8' ]]; then + mkdir -p text8 + cd text8 + wget --continue http://mattmahoney.net/dc/text8.zip + python ../../prep_text8.py + cd .. +fi + +echo "- Downloading Penn Treebank (PTB)" +if [[ ! -d 'penn' ]]; then + wget --quiet --continue http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz + tar -xzf simple-examples.tgz + + mkdir -p penn + cd penn + mv ../simple-examples/data/ptb.train.txt train.txt + mv ../simple-examples/data/ptb.test.txt test.txt + mv ../simple-examples/data/ptb.valid.txt valid.txt + cd .. + + echo "- Downloading Penn Treebank (Character)" + mkdir -p pennchar + cd pennchar + mv ../simple-examples/data/ptb.char.train.txt train.txt + mv ../simple-examples/data/ptb.char.test.txt test.txt + mv ../simple-examples/data/ptb.char.valid.txt valid.txt + cd .. + + rm -rf simple-examples/ +fi + +echo "- Downloading 1B words" + +if [[ ! -d 'one-billion-words' ]]; then + mkdir -p one-billion-words + cd one-billion-words + + wget --no-proxy http://www.statmt.org/lm-benchmark/1-billion-word-language-modeling-benchmark-r13output.tar.gz + tar xzvf 1-billion-word-language-modeling-benchmark-r13output.tar.gz + + path="1-billion-word-language-modeling-benchmark-r13output/heldout-monolingual.tokenized.shuffled/" + cat ${path}/news.en.heldout-00000-of-00050 > valid.txt + cat ${path}/news.en.heldout-00000-of-00050 > test.txt + + wget https://github.com/rafaljozefowicz/lm/raw/master/1b_word_vocab.txt + + cd .. +fi + +echo "---" +echo "Happy language modeling :)" diff --git a/TensorFlow/LanguageModeling/Transformer-XL/prep_text8.py b/TensorFlow/LanguageModeling/Transformer-XL/prep_text8.py new file mode 100755 index 00000000..1bae4ae7 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/prep_text8.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# coding=utf-8 + +# BSD 3-Clause License +# +# Copyright (c) 2017, +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import os +import sys +import zipfile + +from io import open + +if os.path.exists('train.txt'): + print('Tokenized text8 already exists - skipping processing') + sys.exit() + +data = zipfile.ZipFile('text8.zip').extractall() +data = open('text8', 'r', encoding='utf-8').read() + +print('Length of text8: {}'.format(len(data))) + +num_test_chars = 5000000 + +train_data = data[: -2 * num_test_chars] +valid_data = data[-2 * num_test_chars: -num_test_chars] +test_data = data[-num_test_chars:] + +for fn, part in [('train.txt', train_data), ('valid.txt', valid_data), ('test.txt', test_data)]: + print('{} will have {} bytes'.format(fn, len(part))) + print('- Tokenizing...') + # Change space ' ' to underscore '_' + part_str = ' '.join(['_' if c == ' ' else c for c in part.strip()]) + print('- Writing...') + f = open(fn, 'w').write(part_str) + f = open(fn + '.raw', 'w', encoding='utf-8').write(part) diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/data_utils.py b/TensorFlow/LanguageModeling/Transformer-XL/tf/data_utils.py new file mode 100755 index 00000000..e5e609c6 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/data_utils.py @@ -0,0 +1,488 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import math +import os +from functools import partial + +from collections import Counter, OrderedDict +import pickle +import json +import multiprocessing as mp + +import numpy as np + +from absl import flags +import tensorflow as tf +from vocabulary import Vocab + +from tensorflow.gfile import Exists as exists +from tensorflow.gfile import MakeDirs as makedirs +from tensorflow.gfile import Glob as glob + + +def _preprocess(shard, train, vocab, save_dir, cutoffs, bin_sizes, bsz, tgt_len, + num_core_per_host, num_shuffle): + file_names = [] + num_batch = 0 + + path = train[shard] + data_shard = vocab.encode_file(path, ordered=False, add_double_eos=True) + + for shuffle in range(num_shuffle): + basename = "train-{:03d}-{:02d}".format(shard, shuffle) + print("Processing shard {} shuffle {}".format(shard, shuffle)) + + np.random.shuffle(data_shard) + file_name, num_batch_shuffle = create_ordered_tfrecords( + save_dir, basename, np.concatenate(data_shard), bsz, tgt_len, + num_core_per_host, cutoffs, bin_sizes) + file_names.append(file_name) + num_batch += num_batch_shuffle + + return file_names, num_batch + + +class Corpus(object): + def __init__(self, path, dataset, *args, **kwargs): + self.dataset = dataset + self.vocab = Vocab(*args, **kwargs) + + if self.dataset in ["ptb", "wt2", "enwik8", "text8"]: + self.vocab.count_file(os.path.join(path, "train.txt")) + self.vocab.count_file(os.path.join(path, "valid.txt")) + self.vocab.count_file(os.path.join(path, "test.txt")) + elif self.dataset == "wt103": + self.vocab.count_file(os.path.join(path, "train.txt")) + elif self.dataset == "lm1b": + train_path_pattern = os.path.join( + path, "1-billion-word-language-modeling-benchmark-r13output", + "training-monolingual.tokenized.shuffled", "news.en-*") + train_paths = glob(train_path_pattern) + + # the vocab will load from file when build_vocab() is called + # for train_path in sorted(train_paths): + # self.vocab.count_file(train_path, verbose=True) + + self.vocab.build_vocab() + + if self.dataset in ["ptb", "wt2", "wt103"]: + self.train = self.vocab.encode_file( + os.path.join(path, "train.txt"), ordered=True) + self.valid = self.vocab.encode_file( + os.path.join(path, "valid.txt"), ordered=True) + self.test = self.vocab.encode_file( + os.path.join(path, "test.txt"), ordered=True) + elif self.dataset in ["enwik8", "text8"]: + self.train = self.vocab.encode_file( + os.path.join(path, "train.txt"), ordered=True, add_eos=False) + self.valid = self.vocab.encode_file( + os.path.join(path, "valid.txt"), ordered=True, add_eos=False) + self.test = self.vocab.encode_file( + os.path.join(path, "test.txt"), ordered=True, add_eos=False) + elif self.dataset == "lm1b": + self.train = train_paths + valid_path = os.path.join(path, "valid.txt") + test_path = valid_path + self.valid = self.vocab.encode_file( + valid_path, ordered=True, add_double_eos=True) + self.test = self.vocab.encode_file( + test_path, ordered=True, add_double_eos=True) + + if self.dataset == "wt103": + self.cutoffs = [0, 19997, 39997, 199997] + [len(self.vocab)] + elif self.dataset == "lm1b": + self.cutoffs = [0, 59997, 99997, 639997] + [len(self.vocab)] + else: + self.cutoffs = [] + + + def convert_to_tfrecords(self, split, save_dir, bsz, tgt_len, + num_core_per_host, **kwargs): + FLAGS = kwargs.get('FLAGS') + + file_names = [] + + record_name = "record_info-{}.bsz-{}.tlen-{}.json".format( + split, bsz, tgt_len) + + record_info_path = os.path.join(save_dir, record_name) + + if self.dataset in ["ptb", "wt2", "wt103", "enwik8", "text8"]: + data = getattr(self, split) + bin_sizes = get_bin_sizes( + data, bsz // num_core_per_host, tgt_len, self.cutoffs) + file_name, num_batch = create_ordered_tfrecords( + save_dir, split, data, bsz, tgt_len, num_core_per_host, + self.cutoffs, bin_sizes, + num_passes=FLAGS.num_passes if split == 'train' else 1) + file_names.append(file_name) + elif self.dataset == "lm1b": + bin_sizes = get_bin_sizes( + self.valid, bsz // num_core_per_host, tgt_len, self.cutoffs) + if split == "train": + np.random.seed(123456) + num_batch = 0 + + if FLAGS.num_procs > 1: + _preprocess_wrapper = partial(_preprocess, + train=self.train, vocab=self.vocab, save_dir=save_dir, + cutoffs=self.cutoffs, bin_sizes=bin_sizes, bsz=bsz, + tgt_len=tgt_len, num_core_per_host=num_core_per_host, + num_shuffle=FLAGS.num_shuffle) + + pool = mp.Pool(processes=FLAGS.num_procs) + results = pool.map(_preprocess_wrapper, range(len(self.train))) + for res in results: + file_names.extend(res[0]) + num_batch += res[1] + else: + for shard, path in enumerate(self.train): + data_shard = self.vocab.encode_file(path, ordered=False, + add_double_eos=True) + + num_shuffle = FLAGS.num_shuffle + + for shuffle in range(num_shuffle): + print("Processing shard {} shuffle {}".format(shard, shuffle)) + basename = "train-{:03d}-{:02d}".format(shard, shuffle) + np.random.shuffle(data_shard) + file_name, num_batch_ = create_ordered_tfrecords( + save_dir, basename, np.concatenate(data_shard), bsz, tgt_len, + num_core_per_host, + self.cutoffs, bin_sizes) + file_names.append(file_name) + num_batch += num_batch_ + + else: + file_name, num_batch = create_ordered_tfrecords( + save_dir, split, getattr(self, split), bsz, tgt_len, + num_core_per_host, + self.cutoffs, bin_sizes) + file_names.append(file_name) + + with open(record_info_path, "w") as fp: + record_info = { + "filenames": file_names, + "bin_sizes": bin_sizes, + "num_batch": num_batch + } + json.dump(record_info, fp) + + +def get_bin_sizes(data, batch_size, tgt_len, cutoffs, std_mult=[2.5, 2.5, 2.5]): + """ + Note: the `batch_size` here should be per-core batch size + """ + bin_sizes = [] + + def _nearest_to_eight(x): + y = x - x % 8 + return y + 8 if x % 8 >= 4 else max(8, y) + + if cutoffs: + num_batch = len(data) // batch_size // tgt_len + + data = data[:batch_size * num_batch * tgt_len] + data = data.reshape(batch_size, num_batch, tgt_len) + + tot = batch_size * tgt_len + for b, (left, right) in enumerate(zip(cutoffs[1:-1], cutoffs[2:])): + mask = (data >= left) * (data < right) + percents = mask.astype(np.float64).sum(2).sum(0) / tot + mean = np.mean(percents) + std = np.std(percents) + + bin_size = int(math.ceil(tgt_len * batch_size * (mean + std_mult[b] * std))) + bin_size = _nearest_to_eight(bin_size) + bin_sizes.append(bin_size) + + return bin_sizes + + +def _int64_feature(values): + return tf.train.Feature(int64_list=tf.train.Int64List(value=values)) + +def _float_feature(values): + return tf.train.Feature(float_list=tf.train.FloatList(value=values)) + +def batchify(data, batch_size, num_passes): + """ + if num_passes > 1 + + Here, we use multiple randomly shifted copies. + """ + if num_passes > 1: + data_len = len(data) + double_data = np.concatenate([data, data]) + data_list = [] + for i in range(num_passes): + start = np.random.randint(0, data_len) + data_list.append(double_data[start:start+data_len]) + data = np.concatenate(data_list) + + num_step = len(data) // batch_size + data = data[:batch_size * num_step] + data = data.reshape(batch_size, num_step) + + return data + + +def create_ordered_tfrecords(save_dir, basename, data, batch_size, tgt_len, + num_core_per_host, cutoffs=[], bin_sizes=[], + num_passes=1): + + file_name = "{}.bsz-{}.tlen-{}.tfrecords".format( + basename, batch_size, tgt_len) + + save_path = os.path.join(save_dir, file_name) + record_writer = tf.python_io.TFRecordWriter(save_path) + + batched_data = batchify(data, batch_size, num_passes) + + num_batch = 0 + for t in range(0, batched_data.shape[1] - 1, tgt_len): + cur_tgt_len = min(batched_data.shape[1] - 1 - t, tgt_len) + if num_batch % 500 == 0: + print(" processing batch {}".format(num_batch)) + for idx in range(batch_size): + inputs = batched_data[idx, t:t + cur_tgt_len] + labels = batched_data[idx, t + 1:t + cur_tgt_len + 1] + + # features dict + feature = { + "inputs": _int64_feature(inputs), + "labels": _int64_feature(labels), + } + + example = tf.train.Example(features=tf.train.Features(feature=feature)) + record_writer.write(example.SerializeToString()) + + num_batch += 1 + + record_writer.close() + print("Done writing {}. batches: {}".format(file_name, num_batch)) + + return file_name, num_batch + + +def get_lm_corpus(data_dir, dataset): + fn = os.path.join(data_dir, "cache.pkl") + + if exists(fn): + print("Loading cached dataset...") + with open(fn, "rb") as fp: + corpus = pickle.load(fp) + else: + print("Producing dataset...") + kwargs = {} + if dataset in ["wt103", "wt2"]: + kwargs["special"] = [""] + kwargs["lower_case"] = False + elif dataset == "ptb": + kwargs["special"] = [""] + kwargs["lower_case"] = True + elif dataset == "lm1b": + kwargs["special"] = [] + kwargs["lower_case"] = False + kwargs["vocab_file"] = os.path.join(data_dir, "1b_word_vocab.txt") + elif dataset in ["enwik8", "text8"]: + pass + + corpus = Corpus(data_dir, dataset, **kwargs) + + print("Saving dataset...") + with open(fn, "wb") as fp: + pickle.dump(corpus, fp, protocol=2) + + corpus_info = { + "vocab_size" : len(corpus.vocab), + "cutoffs" : corpus.cutoffs, + "dataset" : corpus.dataset + } + with open(os.path.join(data_dir, "corpus-info.json"), "w") as fp: + json.dump(corpus_info, fp) + + return corpus + + +def main(unused_argv): + del unused_argv # Unused + + corpus = get_lm_corpus(FLAGS.data_dir, FLAGS.dataset) + + save_dir = os.path.join(FLAGS.data_dir, "tfrecords") + if not exists(save_dir): + makedirs(save_dir) + + # test mode + if FLAGS.eval_batch_size > 0: + corpus.convert_to_tfrecords("test", save_dir, FLAGS.eval_batch_size, + FLAGS.tgt_len, FLAGS.num_core_per_host, + FLAGS=FLAGS) + return + + for split, batch_size in zip( + ["train", "valid"], + [FLAGS.train_batch_size // FLAGS.batch_chunk, FLAGS.valid_batch_size]): + + if batch_size <= 0: continue + print("Converting {} set...".format(split)) + corpus.convert_to_tfrecords(split, save_dir, batch_size, FLAGS.tgt_len, + FLAGS.num_core_per_host, FLAGS=FLAGS) + + +def load_record_info(record_info_dir, split, per_host_bsz, tgt_len, + num_core_per_host): + record_name = "record_info-{}.bsz-{}.tlen-{}.json".format( + split, per_host_bsz, tgt_len) + + record_info_path = os.path.join(record_info_dir, record_name) + with open(record_info_path, "r") as fp: + record_info = json.load(fp) + + return record_info + +def get_input_fn(record_info_dir, split, per_host_bsz, tgt_len, + num_core_per_host, num_hosts=1): + """Creates input function.""" + record_info = load_record_info(record_info_dir, split, per_host_bsz, tgt_len, + num_core_per_host) + + file_names = record_info["filenames"] + bin_sizes = record_info["bin_sizes"] + num_batch = record_info["num_batch"] + + tf.logging.info("[{}] File names {}".format(split, file_names)) + + def input_fn(params): + # per-core batch size + per_core_bsz = params["batch_size"] // num_core_per_host + + # data_dir could be a remote path, e.g., a google storage url + data_dir = params["data_dir"] + + def parser(record): + # preprocess "inp_perm" and "tgt_perm" + def _process_perm_feature(example, prefix): + for b in range(len(bin_sizes)): + cnt = example.pop("{}_cnt_{}".format(prefix, b))[0] + tup = example.pop("{}_tup_{}".format(prefix, b)) + + tup = tf.reshape( + tf.sparse_tensor_to_dense(tup), + shape=[cnt, 2]) + + # tf.float32 + perm = tf.sparse_to_dense( + sparse_indices=tup, + output_shape=[tgt_len, bin_sizes[b]], + sparse_values=1.0, + default_value=0.0) + + example["{}_perm_{}".format(prefix, b)] = perm + + # whether allow the last batch with a potentially shorter length + record_spec = { + "inputs": tf.VarLenFeature(tf.int64), + "labels": tf.VarLenFeature(tf.int64), + } + + # retrieve serialized example + example = tf.parse_single_example( + serialized=record, + features=record_spec) + + # cast int64 into int32 + # cast sparse to dense + for key in list(example.keys()): + val = example[key] + if tf.keras.backend.is_sparse(val): + val = tf.sparse.to_dense(val) + if val.dtype == tf.int64: + val = tf.to_int32(val) + example[key] = val + + return example["inputs"], example["labels"] + + file_paths = [] + for file_name in file_names: + file_path = os.path.join(data_dir, file_name) + file_paths.append(file_path) + + if split == "train": + dataset = tf.data.Dataset.from_tensor_slices(file_paths) + if len(file_paths) > 1: + dataset = dataset.shuffle(len(file_paths)).repeat() + dataset = tf.data.TFRecordDataset(dataset) + elif num_hosts > 1: + host_id = params["context"].current_host + # drop the remaining batches + num_batch_per_host = num_batch // num_hosts + + my_start_sample_id = (host_id * num_batch_per_host * num_core_per_host * + per_core_bsz) + my_sample_num = num_batch_per_host * num_core_per_host * per_core_bsz + dataset = tf.data.TFRecordDataset(dataset).skip( + my_start_sample_id).take(my_sample_num) + else: + dataset = tf.data.TFRecordDataset(dataset) + + if num_core_per_host > 1: + import horovod.tensorflow as hvd + dataset = dataset.shard(hvd.size(), hvd.rank()) + dataset = dataset.map(parser).cache().repeat() + dataset = dataset.batch(per_core_bsz, drop_remainder=True) + dataset = dataset.prefetch(num_core_per_host * per_core_bsz) + else: + # do not shuffle, repeat or cache in evaluation + dataset = tf.data.Dataset.from_tensor_slices(file_paths) + dataset = tf.data.TFRecordDataset(dataset) + dataset = dataset.map(parser) + dataset = dataset.batch(per_core_bsz, drop_remainder=True) + + return dataset + + if split == "train" and num_hosts > 1: + record_info["num_batch"] = num_batch // num_hosts + + return input_fn, record_info + +def get_corpus_info(corpus_info_path): + with open(corpus_info_path, "r") as fp: + corpus_info = json.load(fp) + return corpus_info + +if __name__ == "__main__": + FLAGS = flags.FLAGS + flags.DEFINE_string("data_dir", None, + help="Location of the data corpus") + flags.DEFINE_enum("dataset", "wt103", + ["ptb", "wt2", "wt103", "lm1b", "enwik8", "text8"], + help="Dataset name.") + flags.DEFINE_integer("train_batch_size", 256, + help="train batch size each host") + flags.DEFINE_integer("valid_batch_size", 256, + help="valid batch size each host") + flags.DEFINE_integer("eval_batch_size", 16, + help="If > 0, enter test mode and process test set only." + "Otherwise, process train and dev sets only.") + flags.DEFINE_integer("tgt_len", 70, + help="number of tokens to predict") + flags.DEFINE_integer("max_batch", -1, + help="run in debug mode") + flags.DEFINE_integer("num_core_per_host", 8, + help="number of GPUs per host") + flags.DEFINE_bool("debug", default=False, + help="Process only the first batch without shuffle for lm1b.") + flags.DEFINE_integer("num_procs", 1, + help="number of processes") + flags.DEFINE_integer("num_passes", 10, + help="number of passes") + flags.DEFINE_integer("num_shuffle", 4, + help="number of shuffles for lm1b") + flags.DEFINE_integer("batch_chunk", 1, + help="number of accumulation steps") + + tf.app.run(main) diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/exp_utils.py b/TensorFlow/LanguageModeling/Transformer-XL/tf/exp_utils.py new file mode 100755 index 00000000..1d0dd0fa --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/exp_utils.py @@ -0,0 +1,56 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import dllogger +import os + +class AverageMeter: + """ + Computes and stores the average and current value + """ + def __init__(self, warmup=0, keep=False): + self.reset() + self.warmup = warmup + self.keep = keep + + def reset(self): + self.val = 0 + self.avg = 0 + self.sum = 0 + self.count = 0 + self.iters = 0 + self.vals = [] + + def update(self, val, n=1): + self.iters += 1 + self.val = val + + if self.iters > self.warmup: + self.sum += val * n + self.count += n + self.avg = self.sum / self.count + if self.keep: + self.vals.append(val) + +def setup_dllogger(enabled=True, filename=os.devnull, rank=0): + if enabled and rank == 0: + backends = [ + dllogger.JSONStreamBackend( + dllogger.Verbosity.VERBOSE, + filename, + ), + ] + dllogger.init(backends) + else: + dllogger.init([]) diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/img/model.png b/TensorFlow/LanguageModeling/Transformer-XL/tf/img/model.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4c7c8e3e1c21acee26f6cd3e8d3d6fc7f62bf1 GIT binary patch literal 711129 zcmbTd1yEe;mIew03liMj3GVLh5!#+@MYu1_q_y zURqj1QCgZ(!_CFU-q9KcMjt}Nkd-wiK;_e3#}N5>>c8LNy}movVoL9B zySL7LoBbL_8_tk+yh#-)U zz?z4>W^BwzWP&S2HTeab;o5~W8N|7CtSzXXYb}Kw2p7p1(((Ax9{0kUNi>h!{#oDRLryp0yuqZw$u0RoRX`)9*D0>@Orcas01)I= z%k$1eT%GWMJBME)@J40Wbb{Gz_}1p4Fl5)(R()X-hpW_5X&dwd;2ZcnE5_*-q?r~k zlFmqDbUHbToU%fo@Cl(d}Mg>!xBjq22!~P5=b46_I#*%?a=r`nB zFYNZNwQJE&7@4%-nARJxtocmppd6MHTgeQw(S7kRzgE!k~ zr3ynlB{oB;wt^N9^OX=oB7jYvX(G2FR-EA@0_|61?O?X@l)KR|FH)N*JH!ozlWpYK+p~SVQ%Sze+&E9iI zAifwy7g7*u5Y|R0MPCqg!s}LeVJR4@L`vEU8eE(>EH=zmw6 zCTt9xtca$_kUq^MuHnzSl2P=R$K;o$4YUOs6#Eg*kDDlr<*v0 zTQ<}}?V@brTR(xE&6Apn($2DVx`8U0#g^2%2P*DCYY|7Vi{*soKkyJxKsI= zDYQECAB_;IEh@IFf9ectm1(q8a7jqpA@Z0Khd1VWWq76XeT&lK)wC`vDZ~GstKpfkLZr*GEhRq%iU@N)XpnAt(?$e z*QnMx(|sxEnL1xkSXiu@{(7N+Q)pjBl;5K5-nFMQuE(uo+d8>B#**RtVK0DHf7FQi zokOT@sBYGLL}Q%S*G2{Z_#5jJJs}S=mmHp)93cXaFc16I+*Y`?oK^x)Q;uJRDsqU0 zp8=tq6{W=lMGSMoMGIB@-(3nQ3cJ+0bYBu-hr9bJ`^`!vqkC%dtF}mcQ^V%MZet_l z*yMnPYjTxx6tSu?J2Cvk{Dk8Cn*8ROyBXS9B0R-k{4&`%S@}C0!noZzmHAg}=gr?_ z34gg9A02Zs?8aBahl>ut&q>o))>F>6Zn3V$>yNTeb<%N~b5U)2^TWh;&Fsl9ZL6Zs zV8!;w#J%&5U9!3R;$CoNlvB-#&XXX&YBt+l}@E%meRD?2QX43#reW2eNxo z`#5(}exXKzKzBDUY~eWpbU_j!2EjAWQ%_CL*WOFVZfkf)zjs;(uCtG9`5Bs6nzWpQ zS`AxD+bGIS?V0E)|5W{1L#jYZNjmrQm+&a*ti5jcPy5Fim#$UQMq8_49GC+r zD_A#-tF%DHJ9ez*i1UcLh|~cb3@kXW_ z%WP94&1{xH-N)~DhOfW8{`7f3258}EVZA*h^5WaJhd$w*ohRO98$A5U8r7NQmr+LT z`6G3|?6GWVa*ZNDaWJW~u6Gf1oM@#BUf(s3W4Gnsr(4KsOBU|C+{C-cE%qtGEf!I~ zR#;0E>bu=0xHNqYL@55mZ!c+&G$U3LUQD4#F&Z)YZJgGM-Z~fWJMwI(9{v%FNn^8? z71apAa9T6#(hnP72E>%>`Ojs5&G!CYH)ji9|z ze%7EgoP^6+lrfZvsI*i+=7p+b(|#jQJKhE%U(ZqE5MEygME6(j@l|w{s-_P|LRp@& zN9)z`h8roRIq6yaHB_$Bo}E&i0$tvP4+F2n%>pqWr#goNXLD6IP@56>QJqktQM;V? z96KR}C-HRRaZZX$Go5qxN6${pPCuPQS2`LgSl_XYyd_@bw3UBS8<_Z%bLP#u>{+;& zf7k6i<9z6BplGMKL*6U8asy-qrF*4AQsz$QmfP&l1_M?Dj2}8~7f7eXG<-HkC3|{0 zrGvwNkH(HhGrQs~;i+Q`k~=>QgG#?EjgR~sagqNlZzWF?Z&Kz~^OuO2n_UW^{wlNdOm4$P7zof56kHSgr z(CY?14@}he*cyIW&H5c!`wSWq>~Oc18c7ympFn^6V0Ne!p<~%Oq$8 z;$<1`Ag{H5Jb`L#Vw`?@x7Om7?s=ryz@TYg=*-G%5ih3_NP zW$(e@Cw1byxIiz+>OI}*X#I4t>4m9sXJ&xIJvsPkOMh=MBZAdNJq8Z>yQ>lkjLWoO z@D~`E%2zNm?ZcUVQeTH(U~%A|anvW)aJJzkWVvCcTVOsH9FcqQ%IQp#e00?=?0|K2 zVP6P}qU~RI=E84*B~y(W99Yl4q*+J%=+a?nS%_|FxxqATarSEJ(cCSKf}nT@#wYLA zaye}M@PjDwv+OhMOa)d3SU-yj8rQydRWNXefx)Ny^9!r^j`kb|1`feqTi-)pRYl0s z#fi<_%EiK(&Bw_VIvNH>#778v>16F;PU++1=>OO|TwJWs5v=aM&K~AItj_K<|61g~*O9Syw{)|2^{{twru?(6xrK|ThbT4m zpN;PR{QC^;yslWdHMqos*4&{r_#6hrP}JG40Qre@*-AyZ*JE$e+c8 zH0*t>9SvmcovfYRp+^%F5EKykYn%Ug^Y4THZKnReXL9p%aQuDh-(LM~>Yt+ssk_-* zL#gzK7Gj(t?EmrXzs8HO{~^@h2=_0p{Ph&d7BLhN_WxnA7|Q(Zt2!7M2^d8gNo^n4 z;~XR(ZCQe_t}A#cMXA^Mw6IcV9o`9X9`Lv%{cK*cQ5KMsPf_SH2&l+RaQKd28R3{1 zJ8t7}%MM>4Hr%7m3Lnj|7eQzkOKbl76FI(TW2=I;6WJGvsW9kD60aFy>Au3Je8kp( z`~QC9g8*w<%@~R=_5W)&Bdm1yi`%AI4(^hA76SzZ#d(*5f}$ee>F{Q4VPUN^@~~Ka z)+9l5*&sHks=Y|v)a}!+l(8I6V>REdY;XZ7cNOtOCLNoP?rhn ziR(JCwYiv~nEV|uW12U87Ol!%zF^H8DCeshbZjx(zIZgV@gn{-QP6I6=1Jw-l_0<; z8ff!_eA$8hM#w)vE^mKCc(MgC6~oy6!2ADVtq*yy5hrrNyJ4oB8RitVJh9lImnQ-S z^<178$iuHPtvabmBs^vvsh&>=Iodeb*fnk-B~oE8w5syGW+hJ3PT;rqKbYX);IeOp z{I0%5=4EFe+Z^|9&?%)zWO7-r#<^^Ck{LES0+h4(ZP%H#zkQ^ZjS{&0>0f2shW~JT z7M_=vw{nq?fT^9-9v&7Zbomopsb33sadF{%Yh{9h$7HqLmUh@3{EGhR3Poa_pN|i} zSSi(QJ=v7cc{Reg&8r2J1F`v%%B&}+ub;skXkkIETlpRVyyg4*v6*nn&1yX)BqYbz zR%Ae3NlA$LOjA>nQLieS+bM9V!=Inead9(^fZR5ake`byNj%5=`uCifukq+)GcXNU zvTOJ12=UTwyYF?=-7X;(R&W#^^UsZqjm+B+Bn*r3FTA!(6C8ma9u4O9vwIAAFO5zs ztGQ*Mp$1AuB1qxcw~-wUrKe zfhzGVnpt+kMwTc7cISGF5#>Frv-cFN^7FxukW1km+nZ2(ZkH;^C`%Q&-al2-fUf)E zt@Ql`{a}7drhrXj9o67-sal>?KMLNO6{pE0=W}Pk!|Fh%N{Aa8h-f6do#3qZO5lyS z@9&~420~_O?Xq|Mtm5Hs$hh3Bs3Y>lkn?Fng2A-@+3Vlis2;r4symb4`mSLMrK3NAP45c>4#Q#PpqQpRnJRc(Q6G_k>0 z>Qb(#e@x6tyZJIf8XX(kgev~d+YyVDLE~Ao_2CdV+9Q~tzZ^)#16NtkRN5qh z;p7nMgGdnCa)t4N8utcH^qjawU50B*ZM3(YFgx3(rmf?$Co!n1S+b@Jz5f0@Sf z4{*Og@4V%5I5rN6|I<{Os7s_s3F6C`drmaSmSx`Gthkh>vFow@&>l|u1!;MD0i~P1 zlO0ZFirUmJp@Yj>@m;vHP)TGOQE$5Idb%+zxsZ<~PGv%A*49KWiNZ=!4Ep)`b>_g! zb~L++0ihn+hj;O$f=NPlQ(skfqJK_g5|}gxKHaPA+?=kh6fs0;+M0CU|1MYA>AG2V zpeMg%8<9!QOQeyvA%5A<3*z%-kY5kUCg!nAFb8U4mPTREvz~RmJo|?MhF{kG&s6b1 z-?xU^IiB8Xl~@r6-CrHjcg2i8UM?S1wXx0K6*PG6<#?LUmZ)Y9oGkxv_^yJIAyQL; zwh?e^Tyl{Y^z3Wf=_IG65qxN zpDN(VR-0R1K3@z{*b=`$CBl0z^jec%?cG_+ey+;SB@tImHd;m3&S1QHjsU>o_e`;} z>Pp=$FVElIOX)>-htCqP8)W zCX3%C*B)qautgsYsBj)leZK5`ICb9(btJTz$j-C}j@XZdq*A@b$cru{tQ5FZ6I4Jm z;Zkk0E>Dvy`I>D7igM|C;+wtO9cms!eYq3{tzKC-bQvHSS#uiPB`&vm9;xiOtTm1s zAnD&u=pZ?FLiV&d;oQq#&5Grw*)MCAsHmo%bgwPO6LM0|-c`IBd)0ET6*I^cYuF)o zt!?13Tk$HU%jaTSWyi1sF^~BOhDdXwesw13-DI~}rWSe7{b8wAHB=;iLDjh=@M>DV zEXA;l+w2S4SP0@@4uK!jEa>LE7b8myJkGzt6F@&&{FKcvV$2%yPcm!3Wnu}`AFJ@l zF5&Ik*zkTaPV|y!Z+PtVC^Lv1O7$zy=PF+zjAs^59{S!W#o^>qS|@p+-@5PZn)jN>3Ws{TxE^8D z%yeeFm4Uf_xh`w_^}L~T`TdX#ymY-^VmXR0`dP2#f{{BqG4F@nDP_D39d7o=$+_IKj@#U=G_f-yYo%P3^vPt$=I^{TaU$yM z0tMfA00uDRM;l$@UwG`d2XY2m3X+*=57CF_VfUPt8|-cHb~1%FeM+t}dM(pvW;bgU zlj#NZTOO?gTd?(U^C#NR8&o7DQsBTUht@*?*jXxhF@^^fCo=s0GXv6L7Sm^-S{&b* z5gwG1+FH+7q%Gf*7dQjf<6jKqHv*5G?(QM2yQEj#-q8=UGw5*v5oPJdlZ$rqz`c5vv*Q~V@YZ`;m}zGPAOPa# zZ1le58TDY)0>n)Eq-gqxzRdcUvKRp_*M9;z$gPn}Sq4I|-#6GLngi4F*7Y6N4RlMy zfp@MnuUbY(MbvzQ*PV_9@&*Os2&BpR)$94rQu-ZDeAxHm$uVX|xyNWGwZb^+^rJ)w z5(_gs31#xVPL^$lEmGbdnE&EEOPP&jkyEdyrdaBJz-J}4-}TwcIRuL@spX0+0h<71 zzVQU?0&}Eep!f6GBZgyxBrfe+H!7JfBR-tlnnP~+Ec8o*#@=h8P)FGc%DF8rEv76Z zsPg=HO-&Q05^aAeR^|EC2;yctyffxs;Pc_Tc3Hs%AE=@&DV@)0nb3FjhZvXYb4jWB zLVLmqLmm*$plGYYQYGt9GrR}PB{nM6C?Xg4IN^i#sGy?4l^f&KvHf({Vbak`G%sHw zFB%e1Vx>luh$i;(=zh6D%NF$Q6``mfPgTdw``O$KzO!+4#4L6gDkbCC#`2Q$Qz zL6L)ed)?Ik6{p{+!@D_-axj%Q$Id~+2CDKg%5s)i*iRK^++pO}at5*lc>dZ`np>lm zd>TtucxobY#p%`6%^2!hQcFHJm&bQv^c`c{+!$3o*Xvb-C$|-ST}EIj*mQ`Ob+={a z>(0!629gCH7MwtvP-Wd6+f+;FAG)){SsR0IGUGAI_jgwQg05C#0)TE-aHI3uhepG% zsD6!FVT0uUXc%I5UuXL}1v73K>iu?z<-3^wnQ7?3tW)5WfuL$Qt9;>-z zY<&00*z|}#`3h5{U-{Y!`l{N1-{}f~pA91O#Mt*o{dH$1;@a=-lTfvUgd?g^n%tK% zZ?BB*vJBIw1tJlBS3kt846zzDWA;bk^}0`rde7rq@(s49`Of~!{o}$NH`yICl24CG z4P-gD4wseAK96bT7VQ167@je>0(%GxLsFX(5K7cB#WD3TSwAV}(B7>t%Ywj)VxfKG zhCqSm`sk$BVO?aDG;7nJ#ai^u-kNtSGxft^D1UNpMM7aN>yu!ixpHZHfo*=n&<#FV zv5@_Ouwk(}*9=s$;!k z8H8}(@}rHTpNx;4pxa)AJ8W~u(L}L^bi~uJy)3s2gSV4Rn}9iyc}Xmj@18lIGp{n^ zXw>9<_uq=C<768M8ukobB@ItsFJ(q^?^#?Et!FmFLpYiMtjVN&O7^c#R7Ab|M6*znYn{S3oJ1}~PvSun zK-c0Ap(uEm1O!M+b={1?E^Q}#+?u_qy=W?vOc%3BLn$Gm)&DE8>&E^X42zCx)n>Sp zA3g|;U;=3fW>#XzT)+YZ;Tn9q`g7M^kFFFC+;#9H;`W91G_uWs-pP2hY_s({UhaTp z3Ub?;o!y3Bda=RnH;~|&5E|F!)1kNrfjp3z01bh_1ozXGJ@mYJ3hi}t*W^e3TL7t>de((gz^*q*cJ1mNIMZz_xo-!MjPX1s zu(2yy-G24G|11UJFyEp3BW%g|lqFsVGUNe5!zeIBh&Ek_*`dW5C!lBu>)xQ1^}rw9T}Y{%4Rxjdddloh7@Sjp$I)35-(u& zm)&rcR$wXGT&R9I!~xKz^k^!si26qMidbW&+Ro%DM0?L)G>mdXiw|$d8Nm0C_1n!wJAOIbxekGAU=X%p+{!z_>g3r>S|_!|nU*5AlE*3}h-iS6 zJwzdB(PZxn($7ZU`u#QW*$dUt3`1fzg2kPiO_p`RX4E5o-4FaGcz0t=3r>TUgs!#0A6zx#j6(uT*D*)8F@OkVKH)-e!EH!fDATlA{S+u&mmks|$c*duy8z7NA0qblZTt zcDj>xpLsQjH|QJL(ljoyJgovAum3fzFN!`}3RHNC6_vN7ZJfjjSKAzB$m3}xcYZs; zTK-m=Ymv_-@POj~mVwc*?jSB?H=TP8K;Om{~HIe!}*^=je*iMID z(J0~FQJrK7ktW=_WOt)*8}>r&_f!!`ID?273b| z!H*N}k1p2YzkQqat){+8Zo<_-6VgIx_Tvoj$@wdo?FK1r#%y$r@`it5|BnxpxWPW} zSlq3U8e$46zxUBDSSHDED6_?SdRok^L`X6~hu_P-B*z#S~ z4KYX-4&QWf!NqTf>h03JK&dvb6AtH90a5{1i52%7Q8-n_zu`CJ%H1QOUMj<%G@f_( zq-$$y3AwByE(nz;lSR~8IG>tlEm5n9^x#Ysx*M$*yhgm#CM9!(z4;7bX0)cR4rixp z%%xRwMTq3%NCCtMzEs$(NzjnZM26B*+{Hv&f;H-&0UVT^lw`rtT*!4w8_?uutE@Da zD-4bYaa&2fjV}dom(`Q6q2z7*R0f~YZLRw8gijXjQ*+K@H|#6Upl4t`sP`3y2+Xr- zn^&d5TR#H=Delt0<9`X3@D)Zwlh6bL<#KPl7n(zir`69tSbgm3N<^)sN+?g1jI&n3 z(S;tu@O8~vT@H83TP;NC@HYre@Q!P(yw0tM^em>GB8F$Bk#GO$@&CpjD~wI|E$Hb7k!!|hcLiI<)`B z>%aDir%j*>p)4OWuD3xyZQgkUgl4k?(wMh#r4M$w3xA>pZ>$<6W3}H?ly>KvJ%21t z=1g%cbw;s{b+xysJ8SIUSUMpKl^!VesX zpbqEcaE>cicl|G*kyL3TqwHyfX$KEi*BULphNsWBDMrc#e`n+0G2KZT*B(Sk-OT#H zC%;wC1>*riyVYjE!AcW57&L0T+AW;gnL8-yUICRCLFC28@wu=0`T5OIOd+;_pNgu7 z5CL*ObQ;37VEGW~PFr014+KOc<0IMGwEiD_hkrogWTj~^W7<;V$9tW6Pz4*##U@gP zfgT)zME6MeF;c~_X#pWJ1Omw{f6MUB`Cs75Ka9hF-?-Yp9%6Zhgy`IpivbB&nGRN5 zy87=fcBZ?6f;bUTbS%GK()=P+>Sjh>ocqdx_JBZ)46tsVgS!-oclhr${uR5a!Odfu z?TuwZH4?e1^*56%i2?DeX#q;v!B6Xu%^%uIl&|1Q#1$^#2AoO`>FmI}!!}q;6FI`; zcuW*FFlrc35q3R9{x5UvR_> z|I#7$^1xq?w>|x%CH6rKA{`wa(P%pR;3#`nOo#vNmuHF8&h>}KA69=8UCQ8u1d)SZ zWjJ#2yl`o2aQ?tJ^h`PjX1ScY!Px>*FQV;bBFaEXo~nAtzpazCFd{cTh>MW7u>> zo9v{bqr>ZZ1fzywP{hras%Oo8rJ|y04Op~(LE{bi+bNrU;8+bCC7`$|CO-Zi4`S=x zuPY_!wj!AyrP)*@&CDnf(Fi~Ou}zt_xspqD)_`7g{*21LX1l)MX(BBZU;b}k8avqC z583S+EV)C`8gz4c$vYrn1SuXNRrmY#MUO7w34T%j4g$%C+8aUvS4#50J98jZZT94r z#jV6$R5kymsOeu|27`FuY#E_w;>hRp`{0A8)NX63k6=?bx4J`uFm#fzG*&|ksCwRA zFPO3?lYZd)hh+cl#ubD$^ow$+YQ2C;!@{CK^LPq5LNYeEsy(WJP8W^{>+4KZg+5(Mhff)%2AE8*+ zP7e|VPk3J7z5VfOi&oQ{`h-74f?#DON<8~4(&dgf?Do!Ad;eJN&rNVPLqeHk!u9FJ zRyf5r)EWGQ07pMspk|>7m@#4d`-=OZ-=d@+t^q+An~C(yCbmdFY@&F|i?jlt%9h>i-tP6p0C}p()BCrhtV?!*IzEM02Q83IMi0 zGXdRC1?@(Zx(i>|OrBp~%dRv!O&7{z#1L}AL09Lnu6v4msPh^<8CPH`l$c zG2KkVf+jFO*St4kp~TK|>Qj(?h+%GXwmbZHhCWFrk(nU3!2{>FnI;m+HsK{I7q94hnMw9M8dkcU)gCLj?g*H=Ng(DcVGwu2Nu2>wk){<5|L7{T?>T*Bh^5Ad9RbG)RL z(wW#&euY;^+osWbd{QB`oH=+fAonIZNmZH{mVi&h;;0S`z*Oj}lvcag3ix&h+SN2O z``Y5Gw#M9+TX_g@ETxGwIfaZ@xtZDtRe8!UWvi+}vd8^ zo5a&>BM2jjH{T=ZE%1*FYZl7oL+elj2M@`$- zU%|QBcSco86nm2f-ZH9Amme-2CQ60wiXArQk zumoFU8<;7Coq4&;mlu=vtAA~d4DhS!HaZUV-6-o(Q}oi)Ijw$C+XG}Lb3Ub-c+YsS zR&h~*Y{A2^t-b!h^ByEZ5g!h((^dQLZ_fgtm8!b7&e=?MEpIjeIXfN2`pP`I9^cJc z_w8J9U|4!oeEsRryMdU+#mjW2p!ECB#&r&gD&U>r3f^10fB5phZg$y%>qX!%Zt{Jl zIRV=;^&s`>0@+w>%F;S(JY;Q~`-caTYU;?>uNAN{XwXFD*l8Zs<7seND&eS0!5%F| z4og!%`0%`0#9!Qx_^=B5n|n8!*XT+71Qb;icnrFd?h=%tAysCEf>{R^-|oP@jI*Sq zxToV6c-tM06*)!U$JN*bBnb!+8YVm(H#-p?d25Bi{Pei$je*kS4OL@Kb|O-y-iS!t^FV50Y*sOeubtKCpdh}-$f)hz-Mx`7 zSH6>01!|*McA0R2a>A{^1DRX>KC3cDC5pjFBWrmj|NaaehdGJ3GXM0@|CqCXp79qDe>`$lt`Fp}ZK>TkWPvrBuo|Ze5kgW+wGpNGKbq%gD|2mW9=>bI&H+2yWn;d(Dwq#^24`+%)6^VL_Ec%rg zbt^J7VYDPq=Nysc?h+D`CpUsf#0-m0Ysho9cD`}*%u`X+4ZooiWQe(ppqhu4I;X0P zg+;EWq;0Yy6A}`XtIh!@qeJFDt^`*;kIp--)JWdv^vcIkwpzVTc}o_3@NSxs=H$Ck zi(3h+(3DV&ol7N7aa7v9C6UO&ufyw295v7t3_0zLd%PR?(PPn-`Fhzm#U ziP5ad4uX)l_f1|W2EY;2yo^OcUsD~q7*`9|jtSE98SyGm1CTH4z8=>9=9K%o6eu{K zr>~t5xUW<$o(o<)ao-g-ul#iZEyrbe54B#CoI|x@=rWq`i8_yB&{}hbon!Gxq&VAP zywm|AaHCK2L^EjhICkCE=R@Ybld|_fO^(3_~+Dt@LY=D5G(Kv6y_miM3gliTzT^mb zN`)YzC+OkF?tade6iY#Z4Bs@E_xjlza`EAa345POT1`{WH10kzo$1t3F$_#bwi~HI zYnCL$4O0=8&_rvo&Nq4Jv#>1rY78{DDTEe~8MR7cY9jG7Yf|iOueN3QmN=`rvVDps zQ6c)qKcAl-a-O&bYeCR?2?gKX`CN7`HvmGWYc=)+0o$}AX>pvM z;nyW@sZ4uh12HQOvkS5=_fDeV*wGxfmJsG%+8c4lM zHfdIUO;28B4Pd1p5U(`(F>=5T>0D-P{VZLe%t(jW@Qbc5!nrCY=JjYQa}ek^_WX#x z!Tq);m~G=nc}RC8l6#Ge;413TW&C1(GQ7Efb!CvV%iS($D!71u7;9Y>B^ z|GrC0!W1ZY!S^yq!3oJxyfc4>V+a=lDHC}`>$w2Pnb}9egwM$1y!4E%>G$u@GT$IL zx}Y?wXfrzF_Wz8@ zeWpebS8VIO81?hMWOYGz9l9zWusm*0b=T9L$b6@?{3>u3-EO|3MdfPuX)>94>=lDO zv;-CEf7&vr!suT9T1|KHQP3qf+Vr@i><;QaO*x_PQv2nEmF=4mBshd<1T#pZOrLN( z+>8JHTaUBpUdBtG#gZNDe&)_)H-MD&e8nW-mZs1ZyeX#D_!HcuQU+78lp9fKU(AZ7 zMXVk}9;uciOhVVvvCeE}rGaeN8NhY;(oay&an&iGaDOIFUjqHlk%%8F*sioE%Nbk% z!pj4igY3qRs1C7^qK@qZRtm`2{iFNVC8q1DWMM=~jYos{yrZ()d|pPKJy1xvF|T&P z9{~-6_45(;BE4Kv9*~RdcH`w^J&!dC!dHb0F8!;8_xrUrT($g0_mFv~OC>ve!#J=fv+*_Nk0_bg* z9>&4>`6v9~&Y+th^&Mzceq2=m#Yw-K@8-!}2JM+&(B%<4%3c`WZfO7O^rR|HNBnDY0L4HO_4Bub9{UZ$*Jz zmSNoK*UU0I4FXE{4!wN)wfMEr(qxG}R_!lA?(*>T1K5(2%m9=5L&5v`)RF1mX zmX^fbv53|>v^mBC+6G}VIarsU_>1~Cwpa#}$sB{AWJ+>z+EzbV>*v{t!fvg1U4Fk~1~w0#*Ge3>!2D`fJ?PY^O88Pm7GxbRLph zKSSM9Q7?s*)=PiUbYAZnHXrU~xdmiTh%6>(z6@Tb*~{&p{8+#9W#iiy+K*+KNk0UF zn)a(3ge(Pf${%k?cTDVo6M8q7IZeQhi%TPG@dZH_tHe$fn=;?!a;8E)ONf;RTfqDE zo0YU2kdo=Md(I`_8=};~G;vXafgk&nN>UWhEuTKsAHUmkuN^+fZn6|2$bt^?Vq@88 z840R#-?vOIlf=|}-qkh>v*+m6;ngZt=?S>qU~h{086hlG;HNLb)NmZ~6XY<$NpYM! ze0a^AZnTTlG?g47yy>~4&A8xz@$Ul} z*s@ry^7IBt+kjSWQOA`ac#?(6!NK~y&Hb}Z&SbavIKp5k>fEgJCEG8p% z$mRadfO*sQ=4noIm8Dk0kti~VS&tj%RbXJJfZrWO#lr>nJdHbWzEP%wIj+Q;$G+PdcM#XA|5*p2 z7*GJ(lXv>#Y3E{RkW+S`qG{c)+_%X4O$#}?VS}vWAr~W?+-umkrGVozmwrMo3@=b* zf3QC}=m2$D9zrL>S3TBGU+6j{be8VJ)a;tox z4zl9GwmO<8Tk$q~YURD#-YL8DSO@Z?4$l$v)qHneYZc5HS5E6B$+LZC*eO`h1bytZv$B|+!7>J6Uv=;J*KTl{c6Bf>{# zxzQ=QSaV>=V#-0F9t4gazV8K#bzYQYwa?f^0lz7K1q`RM7;P=cfKI&WBn+Ab5)^W@39G?{q9BVQEHUsH;~=*Sw4I0iwEa>I z__B6uH`l6D6-(mda%2AZ_h16^UJEOm%%Iwm=Ju7fWh|3tBP6|fW6l9la)8R2Rf))(zKNun*Bw?H6z-t5o) zAp>9-8ktQaYLh+a-MsrFU!w?*m+xgPfA&Bo#+6g-@8W2xRs~os@5kZ|uQ|Fg(@t25 zrvv@XyQR{+FGBm{t?<7&EY@0H%o|!@(w-@Gy1QRK8xX03bUWR?JcJfa zdUNH48Yb-b-^$;+(gDnuxY?`E75QsNn$Zl(Z1>|@0!gW0F1Fs(sST?i6$Y_q!>J6jbtYQ@swGBuHPxaF_{Z@oG-3 zR;z79PDcf*6n|HU+Y-S;yH9l3ZP9;Dwq9+&so_w`s%nMmh@Ebp_t_L;)9r_lx3 z9}PWL>2cJet#~)S& zC@gi!-p|oyiv_%29jxwO;qK}&oZa6R%WP;jq-TYi(u34wB<;A_yRc;1E!pTTknnxJ zYBYUB1af#D@^q&!%Fj|C1WFTnFRyCZ$6*}(4r`?KY!>EKu@{r&oq%RT5mmrL@XI^z z~-?gU0_H6lv*Oq5E1DmC$BlqFiaQnQC(nheMham*JMlRcP_{ToJYxPIhbj|G4Z|r zVPuMsL!xaAK|2USPm5THwhi-;ZMp|d_AvAl)(4K<(l+(_C6nTX(T08jv?Wn@OeC(X?^S5W>5LMFIA%FXW}`trtEszU}Bwj2vHuu zF8B9NxMeVwek%aO#K!_{k5xYcYVIv-2-gsiko?Igh*#FVH##ghc=6&_1DNlBR7KZu z_G2BepXtTv&?pVp`9gxM2(YbHx^9O6W5zY`O(ItUN~uhACJUVso|#3B?V|OK**Ok| zx0=cylrCd zPkAhl3TtiTWuVd7lG=p_6D4qR0`GSt?itE8qjWi{*sbw=$QAKQtQ@%(>rO<3KPHw*lK%nnlO&S);9z0Ph-w-oG7aNwyv1 z-MP<~M%(>8nng2aNX-T0lJE4(M6eR&ab64B5+aiRm%Q{3hiCoYDzXZ$77LyW+xtRN#ua1YI(e z053^$F<+tnet+P(Sdu;qnK-<15`04@^tm=(JS=@McJTUyWV>~KPLr+`SxOpiDQdzZ zIh(rmbCCLGI`0an*GQ9oo29rIzGdI~wjdXOth!tDq|H*;`M?p9dCw&3#ja}3bcZ=Y zq4Ifpzu(~zy60=*H&GRjqr@?|1})MLRh0s`B{tU{IkO}|RP&Cno6A_%#sb-iq3l}*Q6mKDB%*96Yx(C!ce z+_%)1Z?TU(O(OaXXcxHN?T_Zb&yNPpQ#c=zVJFEqy0XwYk^(I(EMgzGpq)OP?DyO6 z#b!4YvMj_^JN9nKgvV~aZEcxHq&|nOKSJ`{1ov@$SpPT}*XeZ2wh!_hTl4Fk;F*GS zla-R8Fw{0eqn0nPOzsBL67yDM)olGOOvmosj~4+;^n6l{^Qle~qv<$uAWWjSTxIb7 zIRw;#<-n_$$xffylGvZts9tAFG%z16`l-hsBA+-0c{~)lUFm9<+Pte-1`J$&qwi*HOW?tM$|>wT7b>+#jsJ1a0_N9-{CkZ@q-DCUsE=pOC2z|y2+g46gC zhD&m2^Tow$Mtp-`zlgX`am38cx3?ETLYF(FL4CC+nQ@U}5@#b!!p_&ydK0*E&(WF^ zHn+tvBBmnk8iMQI-4Y^v$HXaWi}3J>-Fmu1^cDByWe<=w8_60_?V;R zPdl*i-ruHpA8^q+ntb{wVy*zW{rLEd9z56j{{XWTiF@cDTW>hVr0hUrpr^)+#Nb|6q2OWJR<1x1_!Nx7=|4V$ z?}?*^Q_`-rNZz^#B^wOHO>xyxAo(!*k9Y;oi07P_UV6zGE!cED6pJ(4wj3OPOqOkt zX$>4t=rrp=Uf!-gB!Q3Y*y_7czZLaM4>VJ!sJwh-0*CTh&D9 z!Bt2-x)+Jk{u0;!jDWJu;9IDq$UUFK_vA5@tkMdDyERA1-Yyt6el}hgZVzdAK#UN5N>)d_^u-AWw<9oL5hNen zio{i4A)xBj$X}r<>L(pR^eqEWv|Kej`Rq%G63=b7+;Xci#P9}hIJWu(-{M~C!7bo^%7%5@)-{CtqG;aB*{ zqN0G(b&$C7J3#7Ef!f{Bt%>x@FW!Rg_q>i_x8068vPCYpYR@iR0vWRp;Uo*a?Qw!7 zLvIi{z|Qt*lu2)tMJl1e0eEY8Z}EIn%1rzuiAtUOBnAj0bP zE0Z66#HhoY>Wt;XZPc#2{(6Mv%Y)bN?19FWN*Pr^ittI5iD>uWgCNGguS=$v0ThpXYxD780fyfZE#D6+GgPcbqR(|>e+1ArBIj9yP5xALSh&?|TJ#5K*T7#WXxgv@jar6a>cCnLIqJVChowNH%~ zXVxE18rgI`6ibHLwq>I3dg;=ovK`-4v!Kc~a@pt-*tl({>mfY*%rm&Udv~M53yssVDKdc&xUecz6)@9*T$T0_qHpj(7yu^dI2d0@SAAjNoNo_`ac` z!lyH5ic#v_Zl#MA73&t4Evs9#Y9*d~??%g(t-Q)O)2+~HKkReo_OS~V%*TW`-omWU zK6OToDUwe-zjI;1nLv-Wz5Dbvll44m(>N2u^S{|LvA_9U`kRkFmK`@_agu9@mLJ<( z56Jgt*x$&)d&+zaHXZZBOa9n0@ss_{yCSDg5CeJ}3deQ<)3N0xk8|M)=OAmy z0v)zRn})r{n?7yXI5+vZY&AS=*l;Nxof0@g`g&8ZR!!Xh@FQr~t{w8{&+oNtEEgIs zP&YDu+{^fR;V%{oSa1B~zhl#L$KhtpTj2IvZ!tT$(7UL&2Fr$HK`y#@=J^+}``-M1Vo5CCJ;yj@)vHTR&u%0*D#seQ5N; zf$a67XjrsrEq;Dx7#cNdgp^{HjQ0}XkOD|Oc?8Lab|PulD)@$#fPZ9J_~ea%XldYc z@(|`s{{UTvJ#1XNj*->qw1Ubm1+^>S-2P5JlSR=$4=w-u-!r)Vwp)-lK$PJJwu?8H zmGBWZ{!ta-E35dZnMplySiC2#7o(|lqWG+ZfQXVv4a$cp(`MrOLD%5{*^2ER@rV-| z8tTz}$c4r!oK)d9YIN;8dHgdN*uNkAWp!*S>(+^XkbGbpl6HuD_~KRISERJ?DrmeY zC5x9Sze8KG=Fi0#{QOk2jmK}|eJMK?oVi_B(%+9A1^Liu;R)HNe&U0Ja81{C2reUA z$H|0~Z>U%b#-Bv;k=?>*1$;y?Zt7Bg*{>bq@gd<~tXn)E*R<=46=6lOaL(tbCad)? zw*B*&aWaE$wJTMsWLEyqo;^F)U92-7Wb^%Z-=R(0wiwX19>(-to4;Z!+CTiZSxx-*#EIUqH4Yn(0GK&*hD=iT#si|@yr+9Z6v!KlL{Zpt zWkhBnMc4+468O-uQ+V>@1$b@N&*H^kj@eeta?9*mPdRSOF=NIj=-s;y9_ZH=!>?|D zf_a04kGQkG06vF>&sgCzLHNuSJ{>!C@|5DAH=i;!Al1hQGsReC+m zuUiM)}jER#q0cH~;`Z07*naR295A;Z;|TtlqbeH=Zmy%{GD?Z>x2E->#!n|}5`&D=@R z=AQywlO|2XgIa$)er+3+C{`3HMar4+nUBA0?aML!fh{uj_)ErTm8H(a0x~}HlQBa4 z!JQcQ>g#xL>~qE_gtCD#M$Vlg29}53Xn>NMuH{Oh=9=HufPVW$hQb!O}w!Rss z`i2%lYT`+x96KnC{zj^d)%>DsBA{R-5`2R&{?!S%|Gs+-pBrwt;hgiU{w-sS_?{T0b??#RLT`WB#v>QX%6nv$;VmN6fBW5X zeEs@eXjQKYd?KZfDOe1?L1Nf{>R;)9#N*c1Kj0S@1;40Drl0l+%wy`3-;o{IzH$j3 zeR~$BeDN)~RZUw_)OxzSZ0ikIsCMtx70G^q`1Jj^Wy_vOoLsvQd{3SI&e|dGtkuG< zI0A~ri5y)Bv*vs)6CT}g=N)(8A=xsS3T#hj!%9s)Tsg-DB3-+7fxqyW`SBD~tx{3m z-Mhv3aGkuz55vD?HTX$g@-cPkn5jz%Tb9CK`kla-8u;w%1?VB3g6_Oi_&k*Te8`%U zcl2QE?;nuk?U7vAZ}Fa^MWOc0v(MuF2m7N(ql%`V;g~eDe$D6^6n(dM;A1bUL8#5aJd*)e85kB38kF8hd;v*H$EG$~NbsxHqdJ}o%JwI#K z=SE>`)6VgSoI^LT`Tz09AJD2*YxHYX2agYIiBjTSDr>p~Km5FME80Hv7TSqUV$wVB zphSrhUNctaJElj^p17}1E8N?ok;uv+7o+$$5%Kcn}+>(RSw zM4V6XITbJRa7|@?A(*{d7?83~98%?t$T9S=idPbxRa46@!3d`(#1WCrF8Dg1vqb_;Su{S^W5diN_rS zXfPEZV{OaXobZxAwoEHltdRcW5u@L4Qz;BLJp3}M)~q8tx&%qtgK%o^X6#?^KK?op zjyHZ>ftB;WHjCfxyYD_@#9-6$5-iSVO{4jzpLz;YrcOo0YPB%zmSLz7unz_OPNP7B z-heC=Oo%^?Lr4CV#j;EB%Bb71;hz*-D+_$+vA1&N%FeXBjSc7dpMUN-j1$AdxFUIR zYtOdgQ9a6x2Lt?N8+4f;I1!(S)!X-D+Wcksdg(f|)5MdqsFa?iiPJh?m7&0Q)r~jZ zWOn_roHN7YCk8cRc#;*2ZUousQ{mfQTtw3aXLhe7;gRcpX-hmEHWzxt` zwiA%a6`ufcmme5nT*Ie`u}f;=Y55&2|MQBHQzl=M#r?NTEJPI)*Pvn?G=Aa~5zJdU zSC@IJP{fBs$cSn1O3V|G7BlYw0P!-41;Y4q1gV;In> z1#TJGQ!02tq_A$Vb3A@XCg+YJH7Q<<|iv6*LAZ)4%*dT??*rw*HpBTZ zcRX{geXbOQXhg?i%i6)q7m5}YB3WpWIYah=+4H>Y| zpp54|HCR3e4<0lttoO_0!Lzq?b|^T{V+_PHv+PNtu;Qw|!m|2t(pO6i&t}b=d&Np5 z%ZFRNj2=A(N5w_o)3UU6z^w0{Uj3=qwhiEI@OWl<1g<|8HXjDNPDNAl=0b_cPg!vIpLZr6ZWaH zg-@z@eTkBlFC|Kp#H9B>Kq>KzP``eCr~7|Te2-W@+>+)+F+`@4`sER~qiSjK;*u<$ zUqV97_<~#8+Oet~pHaz3g9dr6A|T-yiscKyf}a*($%=Jm%Ls1iYSX_Q>&AuViO-dM zxMF_Ek|h}T#G|NErUVlHJt$tJ#3QPVRn6AFly5}dp%EE4j+HHr{Nz}QZy*B1m^&(; zKYsc8Lo8ms16Q?eV-`W=79W;jzIb%~TDPS8%?TPJ24DLiDZTcAYL8dO9JnE2%k`m1LHY9%-ic6ke{p1^*Jh;brT;P_s zo-Ff_Isemu_@$S};l+{St)*>aG2ItgCrt+Q5ihYc2%>zLn!vtTWFhIReJL|bUqsn3 zLA=Ux3#6zL#WCrVx$@kS%!(m;Uhrf-Y=7j#6{}Nah26{IJ*!Ql+9EHDtSo)9Pk_9a zq<{7i7t>a!VESWeW4_ce$otAKZ$XqO9EOtzc3`~7%2!?0PUONEkLP09@cGUXJ|D_N z$BU2Lfwt{Cirz%F1`}D?^fA)+^4;wt?3h*CK?0fmJulH&9Y_7%%Zd*og3l$wl&3@Wq|P(%X66pp5gf^7LtVnKE{$=0o0`ZYeCYk=Lii+;k9Y}+j3|V+ zXZ?tZ;xV#L-8youZ1w1&!E)iE$;Tgm+@VXjwX4~3oW?-pl6lQ>6q<23-eFqQB@_)W zh}WjcHlU(M-~`CI*k10~EFbC;$cNsyULMvNF-619YYfD)vFypzCCCILWo62O1lp`w z?&uPJod2U4-*@TKMcT3~evtgwe3>uV^v81I%J~<>qwWZqc<$f6DP9?KKl*f+`cyFv zMI#C#EV2X&$U@iflw*j@>nClf5}JzKQMX1l{JwrWUVZgdqkrNSsorG#;%FnO`0&FI zP5<1oaXn1^a2mR{tdBAU{iWZ{hpM-X$+sHe|q-<>bke##8m^F^^$zzpj`t`fhY? z)flCV7eTnx7s>?%Q;wpjw5bYGcN*8KifWb0>cY#HXCh~iOEs4o3Yn>tkxR5si}+t{^h*NO+t8}Rj4Um4?$ z$L_lwt*gZ#HZlT5qz#3Md{9uvz!CB;FHyiB)r*CqLmOEv7gY=|PI%kMAbeMGJ4egf zTj~tAY8)jV9_eZ8epzJx`1Kvosz$8LErp>_{t)SFL|2?I1T=!FP@)i;R*5xz^eZ3E z#?mE=!8wvbvTc^Pap7DEy%~-ZgP>clZjP6Sc1D-_{BxB&H@K98e zZHSvyD}&0h#qq|BdFCC}TnvI@V`IIhzp>AldiDvj*p@p-^>14ruZVm_Hf5tC#2_fI z7?K4WT~^V8p>ix74J*nVez{WkY~c#CqY~$2z3JU;`vS}7rv(eps&#AGu^}FB-O~>@ zwX0f}c!Mjmv~1Pvz$DD^U&c%Vr=^wlqo+!RJvY zj4MZRS11}g^lMxO#S(VQs_LUi7B5Lj8yCV~Rts}QW5SBBka9@Q$@UcSe~BAa-v9*F z?q)o{BrKbWq$6UT>Kl*V^`aeoe*M*~hRZEwTTU@#{aGw83WmNz?naUD0ywecL!`=z zYASl;|C}MKs!t%eZZCVoxWxd@63ovTM8s%m5Sm1~Bi_4ARib^%fnjvJ3#NgIBGe<@iNTA-+DSMlnLuD#i>Txj4ppA3RzWoWxvWzA)C=FT+}S^RM^d@l6fIT_F9 zn}%eZ?0e|Oj^^c?EXEucD%{ZMgWGddELj8(^l6C?M3J*uR&9Ax;NG`i$)NwP8^|YI zCe_Yw>|)E$x=u^@3MC5Tk!xC;l?3b8ud}DU;*<4f{trLkwmuyZTTHz5iDLIc+qil6 z37_&ZAilR}b4;E3fmzk=6<|E95Pz8Q2hhJyPejVrtfypq$)JiY#iL6l#Q!nPc$VWk zHeur;L68B4Pb6G6{decymdTZCw3hYr!{fxQx%fM9PspGCtdH-l?3J4z7JQl4WbP zgumyaaqTMTE}q8TnD835$zJT<5V)uOYp=a#wr{E!atyxWozXwC3=&p8v|m$(_P5}6nA!h)VT0xL8}!kTa8{}0Bvj;s>?{6x0!DQ#pQo=X-lI5gxg;d2<* zib2S-rHhSWd~TGP^`Fmxg8J?~j<(Dd$hKW%M;<7bu>Q~m?tNF+MOokdBI_NN?XR{7 z7uoWuXc_p4huDNQ-ywP5CK>CCk;{s&jS(K}5=U_-e|;CRh4PBg%y7(;?UA@@&yxfB zk_%<=*>mP1L<-X?+8=o%#4AvA4J2<_f~4(#n*|WuN-cTMS_D<=0ACr?$1iywNy3T7 z9f@nc2gJb4C$=uCl`f8ldo>UbPcy;sj3>7(@}XjbhT3yxe}U?C>Y{0*y0YKFQY6Z| zDX4N=@hDYQbPCg5bPB&AY0sK8or1_qtG+R^a%j>~w67!rp@iRm|3m7!EJEUd--84B zP;O)W`Q$U%idF3B8Wc`6-j$P%>=n6huJIxjP+GQ;7H>dF+y6?dOAEy#*D9$??Zxw7 zah&+|9ppD z22ZU&Hs5RI-TTECUtsJF9S|onT~=gewkaA{RVY~)Bl@=y&L3lwjGb~LT&TSIU-QB? zL_L{~QaHA7A`->pLb8m5jxU@n_N~VeSg9okz$-a&o?fWa{}_x{GJlDhLoyhbNYNjMS1f zkW#ROFq(vfJtAAACL{0uztFi#VN890GV+%!i(xkm#Hv-RO_6MxmqYpfOCDGb)|~@l zaQD=cPniB<#E=84URq()o4jA4l zSd7qKFy6qeLBF@~vF|2&6?^RQu^8H>0v_sG9rZi(LWp=TKK{!jS+KSP$+8gR_)l*; z7Oa$Sity9B(5Got@k~A2Jf1P5M`4F}I%ay_z{Zw?-fte0?Nx?I7xOs1E;Ma~kfYmh zYWWvPjj4;I5HWpWzjJVhthG;&xuw~NIKBma1`WpKXC4Lpb#UuXdb;(NV4v@=GDpUR z=2vy@is#2Xh~_1Iktg-E$WSLt|9e`th4-t}T0Ht5#mU7ViP36+EZVP%@xwZzqKFPX zd-lQ~fBa#v*fc$z5zE24Lm9#>_L9X+Z%O4DJZK$DKv&R00S=?|G#I*F5i&c?~D zf5E3hEBMGF!Lq44asSB4zn>RH)q$ciw(0-oCS=d3QhY#1k?$-s=_p zjb)Q0^1~GID9vX->befNt6P0kDplAlhE5bYk6uhT&g1`tL~-*cfkq5Bw5fr2?(2s? z{#+&t=w34OYqtL~kv#N|ciKeXX8pnZ^5~2wjozG{2ml2 z+jk4UG5wokpcq%(Cq`ED#0xtE)5|QJWe~)O+=44741$>E{(bxLp}ZjOylDVp8pw*Z zVA(c63|)e1_B5-|6UBIehA#neP2nT%*8HO?z`t|@ByL|W6D_+DSn(=ATz*%oS`AIa z^9ThZuG;Zb!wxoRDq*;amz~4P+IMXF3h6)9d4Em}0kUw{7%uJ$7P{~9<5;G|M+ z2ix)43C2cZQJObMwlATDkomZMjQaB6@PLd^q9FP&Kv~ zLgWQ(+~#MYV2mFm3eGy^x%(+(!bubqX#zzSlDX`nk`K#4B``y^m`Ew7zwo*6tg@cb zK!z)jYnCl;F5J1pv+GUz(sMN^L(Q^L$Rh@Tj+MmeV`coC&5-ReB*-64tClvAHl(Fz z>u1JS>e1{XK+aSUZrHfNBw5=3DE#w;!e7Q3K6whrRy~Dfd?xO1#ft!qOZ{Y<&VaZk zY2&j>@TWpa-m^(Z_aMAxd$j1%2at(J4$eI}*!pM7(WGI0S!Ealzl!bPS11~ZYkxB1 zjlc?R#2BcM7;?lq#%HocSn}Sr2q@PazT%3TdRLLuzO(f93$kWFklxNxReE#`oxb5cth-utiCJUwS2`!9(3N4MNBpN09h0B)O zWg7$HZHwOnYxOk-WQjaitfG+%Q)O$uJY{O5Rj->39~w*u4e`7{4`+uDA8~qZ^E585`DNRpTj`&E`~jVAyamPTc9iWa*C0i<7Y{7gQnu7C zBk!yT^S%*6Jr7cTb^s{0>AF2*N5E2h)qReJ{G+@4tMf zaTgbhWOush^JM#ke`S*6?-eUiSR%xV2a~J@({IU`wQ&BtXxpehzW;Wf7z7>6YBHB? ze0o{+)!wXBj4w^Qco->X}t~GM6BC>LDAZ6vOyFI6@70_|9yB`CiO*Aj~AYM)-2p3ADh0piHH5MeKQT?UViCCll#Z! zeTiDFy5ZE4&twfjJVF}XXck@gN0dZJvs(a>H{+Ll3ZGK7;a9CQ8nwC#@4oT^w(b2# zJPdsR_G6yT#Xd$`|7q|t{gWAZY20{p?s_#stF@Ea)LOD&XBJXKo(gIG00K(LmdxTU zGPrgx_!f%A$wf0zOgz)xIc_1^cj}D6gNJ}y0C`KW_1<_gx$_>>5jpG5k8CT1m?#F+ zUeKoajM?7|9x?>oy7$BbZ~cz4wVL46;?HD9i2wxGzt+f>0YytAr0Gzk?B9gMWwT{2 zsg1~0GCwDC2=!Wb!nm(w!LS5+HRHR=8`!W6hYugdxN+l5*+x8YAF8(z`Ma`giM?|* z5?6gEZK#hikmtg#z%unj57q;xR(yx}1KZK)`q6l4^5^E-cP32&cOvj~E~YT@hvi_H zH*cPJ$9@x!jd%$CM!bVO#mkyD72NQ8<7qWv`CQT6)HaOhnKpoWuDIq1-M-Q+n}bmB1H`E@HqU08ozK$sIKA>X5_%D@Wz{O;aicb7#QCh!jIx%YxI~g7}B{3 zZfsjaJOYIpLk{bCH9Z$wZW;@bK+Ec}_-MpHY~8vQZ%Lb^u^!{t_n#*+vg5vOQl^ok z#~`j~e%#)vu6WrJ&!SQ%GG`-;xB$*9m~&pkx{)7^#tO@P>399kQWvRJSkh$S$Qh6I+NjSf2g<)w4On- zvnev;)-WKdcyZZYv52D%i}x0zAeYGkuB_(EmmR7ps0`YCMTwVsO59l|%j&dzGTM_# z*$`16#l}WsolHL4!J8*G21;|s}=KIMcW~vC0Tv6;Jb%`%#v3W*N{s=_J z#F*@J0GClFF1 zUKvJGXUK@$7>X2|?G}v~w_~boxuRr(xJh3eO^nd^$?8rD59e|X?SR#vu|bx24fCT}pz$`)Y||41KIyEG
    c*RfmB1C(0`omtuB{TX;8W1K-J^*eO8G}z& z>0S=J!rPYUHt=_SPTR1wx2N&T1#|6uBz(ZPEcmEhvCZ&(@m&kWhx$y_L=@+rV2cOa zINBl_?Adm?ZJ<*=#7?`vbE|!=TPwPp=(LSBYwdGO-fNf6Ssy0%&z-ITFiiu(AH>HV zmOl__ub6Oh25|HNALsk=@r264lKUiV4>oXWSle{HtnH%jv%hV>%POkoYrE*1?1lxG z*z)Rm@_SgdD8D~QiP^CP@<+6oY~=nj__Pmn*;bWxukiUlY?(HE&^F2c{G7H-yDZ?d zL|cN%w$E&t7Vr^HE=v{4Z&1O+TMs;JUpeq&`^|-Kv9~UKjaFCEguo1Zes5t&jJ+$~ zu3TXYvmft!(0+UOzlzpg``sn)v|mbHrwLu@KqL1!mK+z7LR>{RM(rCt(K)QGD|@sh zSo>4;_HmZ&)$yce)KW@6@55yo!|><+huedx+mKgBwv3% zUUT=Adk^)7LBk|{9ohgp5Iu=*!_L81o(Mj1+Bwcwuk8CK^BcTQXzN6LW$?yVW@5uD zJ;ixwqOw@(x{c5hxdNrme!}^|e|#8JLr#+9A1BV`uBxg!*xU47L(4Lv$c99&A$dFCWS#mO{CXNBlY7?nn1vcXMyj z37rWazysJ?*lpN8acsPP_)WY#la{SJS^Y>}hqbj6+koIt9PEfDeN!g>1_PGZQk3tu z0~mk>*Ep98wgcb+Pg z0Ny|$zb^byKC}VyOuNuu!Z*GmFlFazA8Z2r`^l7BD1Gt!uz#>g;2GKvUZ!2*GR6Il z0d|b98a9#GOuS66A?D)~4&f(!GTMax8fd13wQU;j#kD*{k`MX~94L?YJG&*Eua^#K8)ODugKk0p#gpqBFoU+F6S7bH zxekP0=p*H7H|oR$Nv7M^o?^+_(g@W*5tu9M$*^`;&1QI!|> zEbwZaKIa+g#bo2z(i6*MSLed+OfFSnHqOKkoOts1Uv!tmRpct^xb;2Li; z%;ij%6G#o^sr=k2x)b_H^~a`Z5|CaJnlWsLYc#o6EB|QTP58v~s|%_ zF5r=Tw*-sU8<-CKrkidGN*Vz^8wq8%SAh|Pp0|KdEJ@KqlMG2{F<>y9aQq2`l`=WD zD8km(wh*|*XhLz)srdDYl!?+n*|5=R*fV`wHREZKePZsVcK!T|?YucF!V>V+YAa8HPW=Ft2pPW;eIt9V za=>U0r!eLzr_VC=$0dZRa^E{M22@ozbN zs0aAa7D;?gq;hJ{I6gciYqb2F+M2yw`VSid-d`9$aB`W%LNNAZCd#Bd`aJrIV>u_P zRz6&xV0WOua=BcvJJ6E^i2Qn5`Z%Y&wFEu{N8^e55Kw@&+X>JoFocf8=E+h&=%H&# z1Z}uCE5C96N_`LXq^Gy<*sjSH`!!KX_~=bJ^rQ!;yi7lqqT})dJ_Kb6Y=Dp7!*y(M zuwcxfUg$NxqmOZ>agNEKHlPYkQ4fZm}`p$q(e$9Pz)9*$_j5qgyTl#ibT zPOgipl@-5^F2FyhU!E*{;2oVnANIgK{CbcqZJPx7IegGw1fO|xZRw&V0R#M<(RLhT$`Uw7xHjxWZl(Xx(NdE#K zWU^8CxZi`n#>%Z54(_o3+i)LBxQocv1fc^wu zSuZ3o(IubHS#y)N0Z^C?837-*1bbfi+$VhgdH7*lKf2CLlU+X0bBSF$_k25}OWSj3 z`)5{%B~95fjgr+zJ+buly~9u2FK_;$UEg`0y=(bvY`y}JVuv? z%hBbXMq>NsyLUWlpW65pyJzo1_Lh0q*}L&^WWG8=ui4B<2d>meUGkSyorzHrE21I zlGpHI`QQtp$6SXd^JV=#1)s6QVYNp0m9cS4`N~<#INABB12!7+6MSW1R1U|J%}W;g zaUQGn#VmAd%Im7ik2Mi#+)Y7W#K^_5ik)ugSH>*jE$D+=V@OZ02>6#9uWiJ$lz`{XTU=R%JOD2$ohUn);IUTQfH zf9N=l=smE)e#Ty_n##jc_Ez*Xb;n-bs`xq2E11YZ9G)?W=M2=@{XQqemb$EPi)}_; z$J(zq`UqdN8+H}8GCmMIF~;yolhX1?TO%{n9p9AL2jdr$W>&6{pQgAuWhOC+^T5Mh zBGniyis4;r&0?2DV8A(M%WX`C(k~RQN|xukjAdSPUqn__|V7V z$@`}38}hlnNmFi|R+jIj^bNeyrj?Rovs9 zvd~pvgzUiQ$;1ZvCUIm8pv~a3+B3g^NzBfV*T39%WQIil!LO%|;6WWJ*ZUOx+Y{wb zf9DUm_Gc!I#>LB`KONG`Z>_CuLGKe^K!(r0~d5Gcra;(e!(+d>dARz zrIM_Ijq58P&r%efISW1!_8PjFGHDBV_I5z;R7wF8jZvPzQeMACIkX3|fu2D|eG(9P z=vVN843$cZ-QdgE&F5q!mm7E`F-adjX~#5uiF?w@3we{t?*&)7Byoam2M6ro!RHh! zctFo$wXnn39-D0~rVS9SZ`y?QYa-CO+6Mi~ro1ifU1FUbdg)0o8-+PoO}&;>eE zgPjus!7<>b)*wk#HBlK|;_>J-?XIHj%3v~Wv2kjAkC>ip<8UrfjpVuH??8q>@#LBO z7{8YB`w12l9nKYYMp_NYjxaM2pm5n9$%VWj#FIo+7K1hqYH*}6d>frGntae73*Vy$ zTdp)~sUHRy%5jF;3cRQT#)i}6HwIw0g3LG&l%GZUItEUg0Mg0Ahe3sMzyYin`1rW- zoCO~b-gVB7CcDg>G1CSo_S;4+0Z&l#OG6La!w0nG)$|T~mx7vCYfG>Tx>wucw%){+ zV39&cSxi+Jj!blPd|ZA!SUojYwqKFHize#uebb>`c9)hQ|Be1TG<$8AePI5L_Le2r zXgRkPHhYE~6)9|A4!%-J;5bunHt>+6MS))?8XeVOFvON=qy2XOu(nJad{|q8=?%xG zPP@7561yhSK8VoUG{hO{jkj8 zl)M>#P=_GLDl!CqcNPM_dmgYi&b!{;d-ezHDy`B}4E#!US8GF90B34JUOo2GBq_ap ztM`95vQ^sPI{WI*2PHfAg-k!yeTjYW%-^(&=AL0II~H4anJvL8$qi-V)H3lA1CKt6 z-fdI@BXl?qo9Medpy=xA)~w?tpPftjPQuYe@8G!b@P_0@Y>#x$tl80C=ix%~ zPeN>xm!Y{?Grw_c!H0(xjY@HR=)2T|00R%x&^z_w(olWTnl}; z5rkf*@sc8dO@_ne57|#<;pi{=CORLT(&#dA?D=3P;mqPlQzrVR)&!5>02fSo3)SdB_I>0Z!g9jY5jvwS_+<{Nm zjoA0#K>{Dzn%@LmksWZPZEC>>z6q*uKjU7tgp3jJjR)w;-2?ylAJ{iuCwvFml9w%} z)nMn){)}_8M1uqlv@iS+0H=@f@(6jD1jKpx;0W)e=x_L1^$)yb*Q{(^8QR2YRJ}1p z2HKT=g*>7Ms0(sK+k;V-vZy2Z(H#MwLcJ*iTquWrG%+zA`We;nm)jPF1 z>{mw=BomH5)p5T4`l=7w`Q4{$b=U=A>t%V(AutxLvJ?3S)$Dr8M1H`B{)MmZe3Yqj z)zjSX+eHtK@3Zd=JYj#m?XKXf{dCV&_Ku~m(keY`gD*lL&;7w_yi#v$biJ<_R-m0B zzh|G`B z#^(?A+n;Ux4`rHezq#VgcE;?b0b4pI`i%aYb_{gDJTQ$6^U};CLoe7rY`oL{e&?OG zYSwD|yK_EjuU&GPUTTR}ONrtGLPhzjC0`AQRgy^Kb~IWYc4)n^CD^A2?hXFAntjPVjXU*ltv!T>24ZU{6K9V5BF}&soP- z>H|$3Lh?4lheGEJ4Gx9X&cK@OPxJY7+e25XujAtr6|(YNiniAyiO-0(GwYVG%s5gD zKBdayT&4CecTd{$A(kNfi7|i&t2`KaIb}njs;bU<4rnefhwFXp7XAR{0@wqb)_S zVaQv}Kfo@*&cs&37IFKjRN3{O!){|$2zaAE^RS#14ZKcC`hK4HKkb%AX3&4sg}l^_ z6;LQ+?HOysc+8lAo`nbO#bk2*d1NeF&7ZOBWa0vk@Jd^P4dV)S1NLW{`l1uptX-p# zx$=ue)Qe{l$OFFJ(@$$B&e5c=f zOn?aiSti-wqcQQM8kWcm3EA+~?eW>^!`SD@3-#n!F1fsdGx`QShur%4a`)A99@~V~ zv(PvAM96eCedGL4m$T0~JIGEo9?+r0!g=<__pRHuT2nKtuPzKP3qcFI)ntM8#81br zqF*<{<|)TJZOX(P5))9E@P>XXr{f$K+U)%E&#x*o(4{^kWOT!Z^}0tZBduH!`UT}f z6CGVHd70=X^f37K%n>f~EgGG?EOZTek@ya}CcZj#wKC~P;7F>}r(CZwPVurF6JqHP zv^oAGydXPilJg6%)h2SKp;s;sIuyP)Yy3W>SkGFGPuR<(a&qdJ(r#hw)?~112_J$* z3%D1(M*YB)ehW_Eiq5IlkKxs0b&OHvc&x@xwd?TdeTnak7rY!wdFA?2k|yoODu8M8 zhhC+=MR|Nkqet2Hyx+d9=c8ZLYC!kz(~C|=$8E8;1v_L~5lFu5gm!niq5U*l-L=fl zIKI$Ujdt6pCg}`L8;kk#@>}$eGLo&8JQwxuC_g-KpQmt5KRI?E)ItHHP1^eFi0x_D z%OkCdfi-Jv5BHoHr*kUoesj3_sBM{lNW___6J3F(=LzL_p=FNoy#9S^R?bFLDPp>o zFYY{`XXV-=Y_wG?L+c!fR4XgcrcDZZFK}64He3sZ@@aO&%ycwHh0erv(C3Uj!!KlPor;J=K7Zf4& zOp8zGn(86k!z35Y=&<&AJ=S+gvJbiZmR(nKSf_+Ot-+$ew)shq_ ze|5)s_NV#x+C>Wbt`I&waeP!(qF8pG{x0zuR$_t(i^W_v7~JC70M~tD3 zkQ*ue0zXGJ>g+hW&$jNk*B+JA`KP4= zr|P=b1NqssaZ}KhIq6J)P?oh{o$7j=s`6hhHyZ*jR|EjCH~e=tD(Q2h!*Ga@ZDjsr zJmA>AowrPOhSh3tz_6(*1+hwT@BPuQ;lvXdMZa*36+f6rfi1=ox#%*^qaVSrQlP+T zCXd_~$A|ApeVe?emfyT3Pv8ZImH-1m3UnnYS?_A}U0#qMbQNvOxIqAf@2nU^8Q4>_ zHRtNFryL&wqVU=X`SChK8$RKYhZ=kcF!ITo92eS;C4x!df?QA@Z=@nS;6qS~U>N0+ zzZQI;$%nu%V|KMbir0s--ul+J1{^6H8lL!0JvcfptgeG?fV_YUZSHyezO+Z^(l4n$ z*b^W^E(s1XZWG|4eOtsASRrF#2GcI&cZ}1N=k=^j>b7}4`mnY5x!D1fFV=tjE zz!v`NDF=MNK=bzhojm8Jw(4CGCZ3{k0nJdR1 z=R?aE?0Qzy!JnFF(Q?=GTJ8G^jD7FfC+yREv?bV)-FEJ*wf5hZyu~i>J+IG=iW*ncHnkaSJqNR4|*tqqL4cU`gg_bST{$|g^!SA_1e$OYD zz9p=lyRu!A5H;DQSrcU7>!|wTF}*cMD(Cl*kBLmXw9?SuZobp*9(mmUYV`-~(w;S< z!TXD=T>+UB8ao@2q%-{q(X|YK14g zXc0n<;f}I=LO*CU@k@e-7GW;W&<2i-*i(aj_B{nxKezjS`OT~jyUac`?-h3a!VB%3 zIV<%-ktPAhSBHg8L2k;`$J>_4lbbhfw&^n>U$7Rv9+)oihce>6ApMoVJ^H^^TgU4o zh(Zd!p!C_G^gY3FbP>7@okJg>@79tWANK_r6LYc$q2Gu^Jt!mc1-EOw8Vve=Rq&Ow z<5P_%uTQmnS+B?O$>$pzOUTO0%lR9J0R5Kno4!iFJ=uxAi|)bJY}L4RG7@?oyNy0f zf5w(2VgCfXEoGrhY{swhNhq$9{B|Z9@M-U84|XWAq-ZsPIpK)iOZjQ-U+iuY{R^>v? z4!;X~x_3@*hzoRfbcX!+!0}W`r&Au+eJo5XYjOJ3zS9Qqjjzsx0@~4iUh0|b7nSIt zYZwdJHkd5~bqeTNP-xCebhf6BsZDVn9uVWaL> zy(kCzv^iyG)i?0!FT@~&$%L+p3o99B)rz8a(Ht9f-5dklzu?lg`7hC&lwSo#YWLkTv{% z@;8Z2qZ4I#>;k!@y?I6qzggM=4A3|5$+Lx0x)J=rWuf%SEa_|VgnFrtIoY~tFp1aS z@lD%)@q5#LM^Di1v^nDv7{NDvDorZYmy+@V9dr(pfXELPv^yX2qQ7aEH28R5LZ3q` zOB<%C4|(8;F)H+>n681ptZhL&5ques%lS^&3@Vhr5e6!UwCnI*dwA$M`}(d&>@No& zGShR|8JYmJRIAqx%MahKAi+w-3SQZ<%vNkQ2tw?i{oQ#i6mpjRNP zviMafEBade8*CS@`I$mq|H-jQvuIk!WpilaPuOxx=kWW-n~v!d#Q=QbOlZ?W-JAyJ zh!(U=Ow(#T&2~tWh(?L&C?Dl=J;;#Xkm6Y6carnTN)#p=!S^wl7rVNT1d3YNC`!6M zdB0bfGydK46^`*kB1?os>|_94_3~52Mu2?bq|SwUdmcZ=%c=4E2^w{V0uv}d06rB7 zMZn}1IxoglDMeZ@UkDJvQxvuHLqt~aFR!riP#z9EiCP{o|3m;$U2xaYjSECmN6Qyhvp!6-TwjLg^ zXZLNfZ%QG4daowAjBmH@*1Y}J!q?~x$}{cE&b-ZQ(I7TW0eJljL0_qws8ddM@oHr! z@nLXE%XcZ-QC(!o1baVWODgPwGHfg9`rsqk_Np?7QE-dhQ?DrF!G`n99cJ2}WS?j_O~a$$!d* z3zo0HWy^Q%zi(CGSM5&V_sz?$v9+4z8U=pIKGhgamg2aC`V^Xc@W_69VPu=#vHKqT z+x_?1?&r2C=sVATW$xv6-NK9PoF1)`G+S>#NNzj@-t+_2oL+LG2YwiV4Ej6-NLEpiN&l14Rf(p6@`Nr-eAks+t52p=1#)J6TS{VWT<&GxDtjYTv zJfqK{Pk@Apm|(=iH(&XH$&G@r?&SEuFZg5~Q!6oWNIG|)wid$P!)~RGDF?eX?(loP zE76KyW6Yo(d0UboG=WtDmy8|I=V55l#>8%|1un;j@|K;Z)iFi85y|U}{L{v?EBI3v z?Cn~T*O6c%lOSkIdx6thSDf5J*#xAJRT5>y%W)pV#T0)A)vgEC zk3EPVrtD&$st?Uu>_Ocb=Wul@D89&5mt(HD$G%3<@aVBl%$*s23miE%2xCzn(d; z&HkhR9{YX00D)Hgp0)>@90YjLzGW#vukXhePjEB_B&d6Xv2XQ?B)fpws+)TZI{knYqO_E z54C9*=$30r_*9nYrI13M*b?m7L;d#6gOAt~Pv2p8j_QRXr8o6lY9Bf4x9nokU!m1u zr)&u(I;7waR>3CZQy%ofX1!%Qst3V7xiJuFz#sQ@c#s7K*dxd#lLfP+B7TKBF~0i5 zL-aFxnZC*xf$nGQ@;FqMa*}yzGat*bt5&UE74%s$U#-8P$%9nzA=Qdct>ri3zVRak z`O(#$~TPfX_NDdy#O}Qz{Vk=OR6pREO5m?0UPR0^15I*BQw+kJX}_qXEs|d zmn&Pha&<Nb$+o!hk+SF;?seISPkcZ& z(9!e(&d;9RZU+w>4D{JLI7?aKCjH^rCzH{TzkEJlwoiKgtVeHa_{Juu-O$1G-*WxD zQW?<0zQh;BF7`w}MP7&-(FS06Nd1==29Zz7%32=%pJ(RCUQYVzWF&ZnFUldli7v)g zaNMeu>G|k0;7k39X~pY{Ucnwm2GK3li*}!wI2!seG*~Qwlm;W{Q5H04%ahrcutylL z&;iId{80}df2!f**O`n4zQ|vx2|-{$^7@Zy%k2%?;pM)8r|nBS?zg-4JgF_j$86rT zR=v(L+jbq-%RWsr?DE;mwA)Kws~<14?wMLuPyKNA;px`1x5@T)XimW_>2%Qz3ms5K zFigT9l~tk^$x{(qfj9n4{?rQghiBOQz1pp(YuxtEp0I zN#|xB)k^9kOm1Se9xYH&n79+&7t32D#FylGev?80;afQ4r#YkVO-HBM{5>;mLKBu) z%_xemgzSkwQ*VrDiFWiq5CgwLvlZ?oSD{`}j_7w0gTnRjJC-*h9%zL2FJ2F)8uBMt zs{s)#^)0U+2wPq~WDg!#r;_wWbNdB$L+&QKV9sh=lHBr2N|a6? zf_Fh-WUC?d0hfT!_(T!+Y*bJQk=AI|AUCcFIL{sEv;Wxsef!<*UlXaL_FGGT#@@L2 zDm#7l5^J5VAgThtY}Vy?#>;bBoD2A9a?ylxv$Ylj#{I+3*uU(!*Pc4?lv&F{yLryV zcFmld?40hEc3J@+?hTWq3ivoeoUfE9n}LKt>Mi}>vrlcm-F|J!TkX6az4ad2JlZA! zXT22fN!meGy4}|Ol?V{c_+RCgY+#X~@?ZUrg za=D>wFQ185TSs?=f%Hx-0e|bB2Y}qJXczqa4(8(C+^x0bQNzy+RzrlxD z^F@5-Rez{^D)>y68FW+fV!k1IwkFkmB zPB69%+u_tAKXJa0djdB+OoeawClQ?DQ%g$X!(=JOI}g$`2B!_ur!C*>K^tUA@PZsO z*2nz;`T*@q9{?9VB=8{+NFB2z+T8D;9Bd`}6lKG66wIA=LeM*FIZ2+VA2g20*FyJD zuSO(jf(iYVaT~o!5G_8DFDvhXPs!tq89XS_63PlhffeV$oPG=b1e37OoW37xsTcT= zkRNm&_|!wsd4LAA!JObUK|=7s_H$XPRF3;R(7+!gKE!g_+YaushxR;gU)SoV|IX^C z@)NIZUSscB{4Tp{@%d3uOm;oe8eV#kUq!0NAB0bQ^?LB}`h@MlX?5H2!V4{-VEs9w6(0`k0Z3POSJ|zBT~=@|Xyf|^*4f`~{7<`O_qXhdt_$t= z&ilAt-nh^f=!F(iWOGjXd*Ni^PaKy}CxJ&SVaK82@WRYDcRpgD+AV)@e9$hMvC4iw z_cnXQf^%(6*K)m3)Ky|jut;{|WmNl4A40$F+O=EyAX=f2cB&;6vC+-+QG)i+j(nXt zvPYH#o#}n5QW@UgoEMJp%J|1aLxR=r3vw-bsiL$mSgD+9*C-R6NnMsM)x_Hd`O1zD zz94l%Ut+KEFvanS<5`W*Q*|94`?tqp3DTY3W~Yj$?B&)b@7c@w(YphCnK%VwIO$}x ztNf(tGPG_VUfk6(u^%48b+7Hn1QMQl^Y zFiTmU7uxXZdeP4};s{OjDK-PPKOgiS_M7_{Y07b2sP{z|T{NY>V1lm0_5=%TMYpAS z*qycAy)2IYNyB5-JlM=k9_#GvvV1-l+BLHOGg1=9Vl>DCvH{Ovi@!x&6M5vEqU0pl@~l{(^`B{AM3EYksnq=VT@$#JP(tHqW)By%sHKM$DyHNJ8*E+7U`vO`V#U_ z8`7Sh(xKzIEyO%bNTGiKNlt@yKFp8-um zSw6GJ-q4|K!Sq=)OREMpF-ZuYUc1Z4-#tda1O`Qu^HGY%%Sn#-=GO{m3qiW#JfXtx z_&w2TK23H|EBPFrsg+o@J=o!y(F#FK21=5gJmJKrmN{Lg59$7`3&u2=NR!j1Oa_YX zRx~NjLhL&uvL}7xM<}N7-7giQk8BIZ$8X~9D2iOnIQfNqqypQ~J<&GC&mY32G)IKJYYMINvkyxc$bK zFWDRBTxRcH{@So58^K>UluHU+;v~2PnGg>nM-SP(yPvkddGV|Em7(w2_1%}*A7AiE zE!BR3&DHYtq)>lUV}j>NT<8xGYAlG?cW@vKq^u(KseyZCt@UZUfOG7RR=nMojCEQ2 z$PByYw99NxSM=slC?V+I6U#`jUiBxzO$<+;kW$a;1=NYYiUE!>NU#>iXH6~_=x3En z#|YzXh0dFsyG@L=V2_mgpJKf}+ z*d5q^IOL>y%5k3Q_XMOp-~~;bX7m(qD|t$*w+L`R1HH>c7i>uAVb@@n5%lId^=Nc* ze0+PUdUTlMgRUn);rO6aT(_sGLvg&0RhHlfb}KVzb^fBKS(3=m+&+Pe9J`fnV@hxpIYQFDeEwynW())cT#EA7y|)V{1Iv zkd`L*^MNn_AdgH)K_?Kz$je9ZF^Tp_lj8M6MwqyZy+L2X)~3I~FDoE`mD5i{J53(S z50f}lH|!ePmf%!c{*z^ReV~cnK_8$Wc9h-^Q@z)n5;5x$LnWwrbYt_Q}O>vMYM^*50heVRhKn8PS$^tf~{e>LPj8zj{)T zAIU0X0PTeQWKFae4@wAP?mK$W?jL&A{;}^HcKhD@>?-*uzkkMW+EsJUu?5=JjJ&L5 z6gW=|T%p&|_f(|_pXqi)TY_yqyj!d1Znkd^Jf=h zq`yEz`GqEDYwj2JZL{z1dcywSUH93#5ycYPa`v{?Rd!a(HTL?mwDs7+71qLDE zfYjv*7HmU*2%695!{i0Z<3l-o>P`4Y^jjW;lCZ7nNsbLi^bx$`M^X;_qD!+Tr^$V; zW0(X4O>{r)Fg!dIY){&NhtzDfL*80+2DmdO#BFjfH!JVS{Llsu_#(cJ4}i@KPW}Ko zc~7<9&Ko!}p5e3LyYZc}zzAG;Fz-HHEx0%z(D&yY_!ITYjML>vyV767#2w*7+d?0{ zo%eYDG~XQ`W{~gIitA8jBjg6!=m4;Rp6dnZV^h_VxYrZ* zG5r<26}^bKIbZ?qEVjXU^4E$B<#@Ydf3vz!J+z!}ml@g>eBcwACuYTO_^)TB9qLRh z0eXC=eVNRQ{NS(9w>V#~>_eYLC%pgHOV4p}%%Qh;Z}hT!Pj^pMP7ErQWMZQS~$QqOK%Wanu&oR!)Z zY+h@(&D67535%YC>!l@8nR!&J1C7rJTX^l5s~5Z?@{AFE*;x!HEV^Pu2Jlzqgom0hz)c_D*~hOeJ+pdkr>&a%j3VH4*lqyzK1VnH)K8gZG7dk_O zn1L3?Y=2+BEnc!XDE?xD)=&n6EQ*uC3Z9*B3|UfI+O($&3G{eCLn6pt3@!>6H#|^w z3}6H`8Z|gl9{4c$HVhxtWkO4#Hfy^K21xM12uXtv*ujtHF3UlfZez!_Y@>p{>qa)) z_XeM|zZlY+jYs-zfwsK*uM1yqm-L=#XLRZfzUEGwI4C7ICiTf4g-k6h)Gd6e^$+~W za6o@aeOKZL93#3xCos?>)Bw=-O?*;0>B$^{q40TBX&7~Rk$px}-(Sd?O$dr9&3Mvp;{b|T1&Zo%Ne zp~3*fVTNxWisDds^1Au&T8>V`@j>4$U$#8dDJ#8Vo%MySZ_uMmGD1J+^Z9^JBaG&( zd^I9JdKvt2rm0JDTxbOGmzajP`Ab~v%f;1+01t%F6WC>q?nl@M1QU>J0#LO$a4uIo z&^$7BB=mc98#)Ue#@OTfF$)w<7hQ`^VInX(7aZUdp6Qd+fqsfz)@Xci#@TKQx;W1D z1TCo#yuvrmKKP*LvCFFA!@VRQKm3SIO5lS4A~Xp)fe#N4S&|x@Tz+VWdiXEZcHo2j zv}y_U)vN2n2l{N|GBh|8>{YgHAV>!`)VG%4EBJsj_<+NJWC=L|A6BfQU(qID*2sh( zg`L3IP7szdYe}>hGLLNlEo6tW2z#ERXF3B@$oi=Uvy7zAvj%*b~rDCR`2`; ze`i86fnEQiRzLm0ke16HeApg8@Qj|?&9nEh<<;C@&=T1z!s@UsdUI}cbie!xE%V=(85)hl}6Vdr+QP+(A7 zv}u*qcC83R8n1KpT86|fbjYbc#c^iqp#i(2?>_sbjkn3~-)SFO{F8Q5?gp&@yee!##*Gp6sjcd`L^?;; z^q-Y%wdpu4)?uv%bo_|@bk7y`t7m=Gu9$z0O&c7uk?n)FQn)i2$mI_L zwMq^&-~%0pFX(<7{noD)0m$%$zVE&u<1BI*_XW$5ikBJTGdW3MsxQb^JJI&gjNRz_ z&GJR?6+Oji`MIn|r$K!pd|J$PPF7m+{P==9w(khOGWb9<4L)%i^?vud)kDW=M84pr zpzoQiP_O*d!&5!?(qCUrr4e8YL|YlX z_~M43-=K?qOTWWjNt>vzlqKrAnD8qYYl$Nh*CEl5NyN&zCrcUO#xj2>3mrt_VJo`2 z-sC!#It&gBhHVge`I)k6wQHRwb`=u@@lo;PXj^#Z1%R{9KBvfkt@UvE!(PYFBKFP8 zF!kW=H2sLLP92aHFlQX2eqP5~@COIScm4YH!Is9?02jtG>^11uic6d)>JfY`tsHaK zS!b8rwk@8&(s##%JnjeJU-JS6wmsiD)B&$xKs6to6Le`i`V-jj0$Dzv5BPYD zqaIuWZ^E0lMYmxiFb4WK7?`i)kIM}9Klq>vkacVj?95sdxF9#k_tQ^59rQ4he;EHf zo{HaEYkVrsSLjQ^1v})-GaEBe%5kAxvCZHaJvL7(&EpR>DsA1mCB#lIIPZL$rAePC zfPGrk_qlyr!t=|2-g%!rHTt6F*&NquK&@I0sMYrAdFe4Ne({?2wc#1KuLjhlXo;@a z(b!@VXgId;n!Bgj278WZbT#t8GInA_uLhy{lMEv9zfF@w0eMU)qjLw%LQr_kXZ56h+*^X%Lz;^K;O$LhYgVa>cC(8{8DMOKmaEs0s&P51LrNb|$c>>|W zwdjsge`Adn`&uezmUAU11Wh(a7E+DL3!n^MC=Lb}26+d$5hbA12=HS7)y627a?dK7MAT2sz(4c5$&TLWexF^sdA0Lbkj&Z{Shk|<;#5@=f zFQcCC&|~TDTIqV7;h8$c@nKLXhkH;q1;GwmUg<4{2|d``J27g{@9ndPhM%=t2OqMB z3HmCi`L6B@?Ap0+v$GZST{df;wN2MdWOXn0*4?zd&)8pmwT#=A!W*IWU=r?C&!%&O ziw};}F>RuLC@@wzV)D-8d)M2o{ok=q?fQmJ_ShfhZ?@Md@SC5tP!m!#^IE}Sk}Hy; zG8PT+VWJJe;XPV9?uF4ldr(`Z5fp!TR9k{6DE`jw^X-PYKW}Gs=WR*rT+ZW&f95Ja4V#+qG19)8t^zzy zXc6m(e9eEUKm4G}Hp@Vv&k`KLFwByi4)+iY!5~3LV)!gruuw++qCnH@PQIXD_@c!9 zq&Pn4Dx7X1-K5It4oh8vy$h zyUb~#O9=vaK*wn`;s`EGEXW$@DpfZ1A*joQ3j!9b21&L~@;fd+aURpqay~d7)qdryV8jFwR&byWVAL+> zyb@i+2m3Idz=yFPxyBAghqtx03a=hJNBB7A&|Sa&1=;%ZL(r>IIdS@Fz9XM*Z-7yj z8M_;aQ_Ki zL|()V{=w4mp-)#TD-cWh$LTvhlvNAuz^nLmI}h23uPDX!Qgq{Xy{`_7UB7w%E_-ax z3t{!sTlYR9aF5z+I?uJgSn&b7XpXi}(8~yHd8PGdLrwP`)OfIQgUwg}0-r`D_y!Z~ zF?3uO`SH3jfd|F0nF%lQQ+~5w6M?i<)vwII(cZG;m3DS#&SuHC4KHt~o^jpmG~grP zqlz8Sc3NAs6*B%MtLJ`cL~jww-+W!?`S$MoFWQB3)&w6DdgCA6ROltancHUvXx%4gex&@b*&ePY51jpeyGoOG<}^o>8;kv?(B6&<^u0c;4!ix(kUh2MMf>)SN9@lA z?~}8z$?9Wh_T@7;0vN3@pYhCiJsH&Jp4w7Fg~N(8LLR>XLK0jJL9_RGOlq? zBa`#wzD^RKv}HLR@IgSr{hk6z3u6(t(YFe)9&*$}W`58YlVW+P-J+u7O&q)I* z_>%;Y^!hcBdL~koA5vq*Iuj4^%=9_>Uff2EUvI>B#&v87e?hZen&=R4#Ac>{d7HY9 zt481Rlh6AndX4@Iuk>5|46YG#pRIAXOS;bWlHXIUoHW-Ni_oR;S@Jy|zKh=g{~n{FEWgLgt>=ioq3=?@$4k<- zX}nzT6VSnj>}Zc{9eAa_^jjZO;`dei?r|@0AtuI4@yH}&6n-gsjceGTjYy6yV+q*1 ze^oDSY+Gz7+L3-lf1oVK-07#qp1OkoC_&f0D}9m4jP%zt&pa#8=lLwS@agQF)Rp)r z_4pEwjradZj-B(`kH|T?5`K{pY>=7FkzZTO7zJO*A$}#eGqDT#VC?obK#aSSP{S5p)*6rZV6xcvnF)J|CvSWIX;GqyKlg&^2YQb_)We!SfHcQ5;da}ntx@nRe3ycZbG zl`71M#*W+;Qt^wQ$bKv{At*bcM%@8;42%pwbnHebJ8(Uu;K2To{hAEaDZ?|`H?|g@ zF{b!nbTC+F zpe1ynlcWVcl*0h*3Q(ZmrDnv(Fp}L59|(GUfngQ zpk@gAj@u3G=h**JQ1kqr)nTQWE(JB42{bBjcbwpzh_VG2dpaUNOqyu~K43w;crZb` zXTito=i7O`cyLDu{C=$e4r!k~_NxnCV{cx3^_0LblTzGZ@cRQkEd8eX?VmVgeFp~Y z(c$OquA#?-kG2FmK5nn-IM@Ds#ry5T9?kNft;sIJNAKlCgM)&;vpd>tc|LEm+GOlY zerj!F+77-5W*;~v2Sga+I6@e-JRIYQo-CE(_xpAFIYui11b9LZp~Eolq1D;ZY0WZ5(xlLK zX)>0{!~OJA9=u|R=5lJA8jQno_|Q)=YRlnMhOHl()6@(3aeT7M&ksvQqCPdrO}%n6 zN$KTpF9ibLUfr5RO3=syE`Giq9*}PWFxXE78lhPWU7R*_2)e9UPAma04G|jtQ*#q)BWp-UdOR_{0i#$o*cf#qsen>p7wy3BX_@){D;`;WJzICb$p` zp&ry>3OMBtr-hx zOUK6Zc%70*RXHTaSK16YbbOd_<-y#}&aN;Xc~F;|Xoodx)`m8&R!&q(y1$I?*j#hx z_J;P!O55{;%j1tf9(;qG#%O}NjHxdFmAHWh?T^gB3%Jmyn830`<8zN>VnsfB@I_w7 zn|nxLiR@D@$3`af1$@!g?rUYG51;$@^8kHXs2la8f2k_rx7VW_UFz&O;{)<+rr7v<6Hfd?LI`@yj{z zW6LYb9n%DpusW=^yt;ev3Hz(z2W8jy+oHDB_KC%Bu*>35d=4(5xb--xSc$R4^#f(&hmr8qK6Jee-L3&;y3?8e~M1oFfYuEL|cM=UR#1a zG4g~I?mYY8ysNZ2?0f8j-ZfzrskZ4;eV*Whi-u$FeKZtQ!yoRaFJa3Q_sQjI_jRy! zu$g!OjJ}|M;_IaG1!3Lm;=UmK@JafD=pOoNJh|*Sjrg^CzC#aPjDNdFD=g%4`Ql{A zG<4&9Q4jZ(!3SLMm3i3dI@DXDz5R>2wwtI3P0UVMs#YWz|x zKgLsyq#AM?HZnGJe5`K>VG$vIgl&qQf!=6DqVI0nxJj`--pW6-xb;V}zf~&B+W`HB z?drA^FTc@;`S6exOo)BgYLisr0UeEAg*Fp{>c!v134OF#F9k9Q6#s$;qgk+Vp1}sJ zvH7-ZB0cShf58|4HXPlC_Iny}#2!UABbUSq>rLor>Vofc=+NQd8-P7JI&E@n$q#?T z{@HSs7ccmY|Ar3_CdiWGQg53k`D5&1JmwhzGJ~AflfVI5_|ss7|3!V$tl(R!T;v73 zp+~>s!8~#ZJtl%P&V$YDS(-%ORKFdVh5YaxOd8#%Xjk+N^wF2~;_mfe0zKFehe8&?Ju~mY%{U(JMF#1ctX@Pv zim;d#^yDn{Cv2P~@9tAL##xWZK6WiSjg^@)^PectZD;I)7bG)m-%YI1$J#{psy`i5 zbPZ!36M*0qdEtd~79$|lE9*%{yf0B7^l+o-BQF~^YzTNTZllL)=}Sp|`R&*TLDBD- zowIDq{yzKSrhDzyo%h>!_GtkO*;EUswV5_-wqZS4-6kD(_3WHhKwfFfX3saCgR@gi z*alsGbEE?#WibPrUOY=H>~tJxvJtJ`Gu#p7bA16XRg-59@*m}H(tcy}wJH!3X?D&z zVmp0R9pv8qeevP_uWA`(GEnq*)A7JJWGA2AR=6QjT~P)I#D6Dlo1rbvdbGtED+BEl zKJocR6>dvVq0ZG)>^+DmbE%tR=VD(A#6h-*?qq={W}Lj1@>}}RGbO=#vmwL`0->YS zOU&;VO%&+%9ovJ!!(g9PK*^8dMaeNRVkn>(7#LAJ<>-YrDs)T+4wNoSfgP1nFB(Zp zmIkE>{TX_5fO{$lA;w$4r$E=MS?dwZ13of@P;|B81D$}+uHDA+`#78!BGfD3L#0$X z58S~o27G+Wt0(tuwC^iG`WGSS+h;3USKG%H{e)fFd$yh4vCI~>M0+Aaj{xGh6d*K< z9Yo)Y^3x!E;M4J;t<&J+b!0Uk>OVNX&%QhGr2S3b*X;iNPum-NF0)@)`aZj~=M25+ zI6DMsCkjiuQC`%(lRe_i1ejc8|79`_vu1}HRK3DgiqgkS-*?i&C zqQN1;M_Z<8qLkx<6NzD4??4$fqXKwp$vbyFWS`u6tG#vZwf3`1ueHt@ZQ-p-+9P0~ zy7<5Z7NKss6531cL%rA&^B*?dWuM#m4Lh&n4Ex-<|F_++_+ne!5;=!KcIXsJ;k%B| zbh<-FwDhqa7JPr#llD&v`mP&&QX}h9Z3%X{UAN!@J6FrfFK(Nw*|U>DU#D4=n?T+F z6nbAlUj1w>M;vw>3>;Goeq(F!5k5I8zVOlzJ89e?kVu z{{5rjegYFXo5%ru6CH-3hD!<+`oVp=0M?{`$j>z|5AJ z*3(pe0%8{Ky$@p(@sNyuiylg&ALDA->7dhC^#;92aA>V2Snw7m$@3(?dtc%@I)vXi z_1Jd@v}F{!kq1cxRB&hsIJ!;=gcE-lU$LL+9be;oGKm6wcsKxW(2v(Y!NLhYz3$+% zq40(dwkrV)$2vZKoIpS)2tYuG{5bg7LSdDk0xr}WTsV4)({!9q20ku7;FDH<;L&km z{GdKQ{t-OouLGF(sA22m1v)&^xqy5+8I$P--H?WDvGfj#fWCVC%K| z>HWjc*lk+<^r5gN*c`jL`$D^}_w9C0x0b+f)i!F{@(OE$7eh*IdDUoqsBe%TCXUAN zsU|(zGs7dq5p3C`+;xU^46vHm#cooUN!$BTdFz{1;8IHnDxcBpTy^w z4Qa9q_!L)%J+MvycH4XBTw+)E{=D#swoIEny*xg&ZPaAx{SxY*OvnbS6g@M#)&6+n zzguThr~O*~P1-toQPCev-ox)8Q)+V(TaA%k)XJ{6ZTp^mlvQGn9<)y^f2&rBz1Gg` z%7vFr5SB>K6@1LlB@3RMNF9<-xmh$G8G7FC*#3ZhVUH$|9XlwW`wDx%w&cES-kD)_ z*dF=ao{F-q`y)#9U%wjhiQLwc=-cQ(Y?Q3NAmt)oOcHco2R(r=I8XFStw`W?^8N-5 z^c8xBzD=MTy8zwJ_(Qyg6*pS3bz*gej{o+f(}rfFlCO3&fBu4^o~TCK`xJb^lly|y z4PV)PLAOofb*VRLY0U(AMZ#X!|%&>7H`e;LBIjV3plmE*HkO zO1^a|TG(JKMt;z_(BlJb_-C7=Zuz~-)VJ!9 z{bb##6E+Jxpl`C)BTf&!NLwTSj2TSo@JXdv^bIuOi!lg{=%0=S=jl^?kau1bq8xbV zTD{n~t_2TlRF1TBJ#>*hXwjdDqr?y*swm_ zij9sO)tek&+5}xj`Cwm9qAzXR#zarOcqF-5Enbls>QD>j;Ede(OJiPdY;h)&(U+cj z>Zzay$Wu!h%(=+fD?MrN7oA}bMFY0u%PZVe4Ie5`? zjkud)%F1<}sV%+Q56!T{EyuJv(3GpCtK;sjcgjL8Ui|4isF$@gvt|FRqhW%P<^_dG zG{}vpNdKG=>KQHZw{WOS#O`!-8B+0j`+}*6BeL*Gb${t+rdV z*Xa28L~xccKI_E?%n9;0&1ljxtkGnnTJeDn3e)QoA8=g}va$>YITLz#gO8x*14HZV zi$f3DH$4aEUK4=K;4fx2JVe=~9 zAboLkyWKbVw0&{-5qn}(lU=kW*v&l`+O@sfGEMj_jp4)FpH45rCqf2(1_y^^FzyU; zM}2C>1s)ary?@Vh_RAZ;Xy>&pvtQ1?K|$?#A&8x96BQJgpgtrf2J!tF?TdNKmb>lu zw*I?L&ayvPb+f%`+0}a6_q4EVd$A`3T%v~sU_?5gtpheG==-p?1iMZ9YJP>FufphW z>bb-|y!>N!QSVw?*||7OPzpEbkJBq9H=c*1^Y6#_wJhI#hBO8i#!ps5!Y83&n7|7( z2)rPJ@kD)G=A38x0Y=T9VQmREG#FO@;u^*c!DyTtCMK41K%7pzoaA@PttSP1q|4xm zAVyk8+Ia&X9yVcsPLoVw9OK}kUI6~*N5Ak_foVdpMK+kIB*3Md?)%6{mKJp z(BV@q!884ow|?nU9>6Y_Kh1gSMj|-K_nG3UQhnkySpkK6s2fM{#U>+BXFjEpV^2A> zH%Ef<(7_I3f*yU8wxYixKO7w!KTe@78q<{zJIL|Dwkw%;%8iwO#PJDwuz*kHyP~V$ zL;KU$d2>f|_(JG8p$z&U&+%*n9j)&A}Fgti2`Yv@tCW$!~0=%aRh2dl%r&o1a$ zqt#CrOPI&uN@o^GQ}G$o8-)G#q$U&Hp-ED=?qf@^BU&96 zeBK-IS*5LzI~6RHMvQ2c!H0SPOvnjP0?{Z2F2lc;Gqv zthSE6sC%_&3oHGrl#WeA?YB!o(OWeU=y%rNYEO?mX>VI_qrFqB#9pCQVmoF`ZfO|= zMLZKE475cazWWak+B3tO?3+6uwm%)XSIgOLwS}|R*zYWRi(RQL#?I=|sxvK$bI4Eh z6xs$VYR_bfpQ~1fKvpKF-73_SsscH-oR^bf)?`(ZdMzSJD?GzssWYPdf)+ zPr^)E3tq{t#t9V(9_tt==so&!W(?DCTwVIUSfwH^K<*MoR0wCf%mKpT7fyR zVT||j#(k{{x0Jku9Z6rp<_Bw^w17Nv&Qn_KiHkxHSw?2uPJmWEpD)pd!bW8|eLs4+ zwH)c+;Dg*FJMfVuxjb`peZx4&2ibSOD=p0_`bKidBp)VK;3qQ?2;7mOQu+ow;`pR3 zvr;~=AqZPdY;y`snKH;U6a0z z{v=MskuuUImllyjksY3wBirct;$+?!LoPF3 zpV+0Ezb5-qEn^CWC;Jle2iCb|1&12Bb$3%xM!6MHWNsVOH%i`$xYA%tn z0?vUp>Eq@jVHKQsZi#6a!=iiQ6bj!9nR!+{Ell(|ZXJaQK?gJ;XivMxU%1Xa{3+bT z;ONNRt+m!YwD#^E(S<#i#S<$5@Va`u`+n=p?pIzLu*7CEpZG)Cf#}r`V zP*8pXoH|$RECHX^;JARXmk(}P6J=pYfDgf?YVs2W7o#^FS(#^@-j@7Q|2_7HJHMu) zXV@oCd#k-+@s+kp+j&KSU%ib^ophD5SOT8OVIva^)^c@EWwUqpN`_|4!?5_sy3rpi)(0;D{kNn%imSAhU zmWQCPkPP?nC&++)R+AgQp-^^PL7@uP6g>xuk0KDk`J=+OTt)S)VmbnT4& zsw&NwGn{k;2nPB?{dxGR~r&cYc*$Dtz`qbnu)7I|^rp|Nh= zx}Z}Dnh`*OCf8~S+)^%j6@0K=>rL>-gbaAej?cKpiD<$VK|ul<;8QM8n&g$TH!BE@ z9gbf0@q%uPoyhnos4}O3kL+g;v}Yy|yMb{I93zM`MJAICf>5N^~#=!VJ<-XG=c!Ldma=Bb4S*Cv=FVv4Ql@GE^UnMYD zjz4hYUOogA3H;M0+#B_UwgKTYBu+Bw-aY3@zt0Uv_p*vm^6FA4mm-9KsjDS5g*l+ zz7Ouz@ZmZ#;P{|Jk%2fqlo9GhkR<32=~@{9yoADvF1yBt!s@5r)9R=HYgm(j#AzU7rRod`Cw+s*NM#J`^me84FUKGfM?fZ3r5FL&>L)IQaJ zmpwK5oV~60TDxiKb#`(0>6*a98(^vc3C&F*&=-O^269R zy$G_(KECkv+A{4dJEMS4i{2=NPFOv+3Oy2?_X-d^koYID0+J2Ay!|rd| ze_i^s_WA{vhLvi=)>|cvy~uaKSC-6o=>>;Z_1dQoe#0JnV$jZQTVbC&?-O>zqKmWw z)Z{9$@W-$twu=MMo(ZiYwQrmKVE0q@Z#(a`2lhW9SG(JOdEV7_&4PDpOR&>z>8yE0 zzY^{#J4#3n#Hy!=-*kE7)Zo=^d1NM+PvHv|`V(~ML;i+8dKjII-sox z5xZKnXmQY6rF=n`g?JrGeJ5YN$;;wJImU8+=W^BYiI+;_{r~coNuBV+QT>Iovlp=1fb4~OllL=p06v9JUdT$9@q)y| zQDW-YFHXy2;?-!v3w8o_A-ai`Ir8~@uz!hB@eG1%l_nQ4X0c6iBNO%+FDp30Rz=P!2@*V#KeFhKswBW@##t-}p?s5L&_hE2?Km5*055BR%@C~RJFI`YCKcAK!;{^BPVla>$9 z2mkn5V8n#}v~dHPywH`3wio^y6P&=A2_n2)LcK~Q@6YjToTFcY5$yzTV1w)+6Zn^< zWX5SAuY4MTjq}H|CHj=>2rnz`(RsmNLw4ww_?75}TJ;UGjI1C-&?2T@P2UhFU|YUM zCfWu)K|3KkwZ=rS4WL6C)2GlkX|bU`l+U<;tRW-#|Ij2}gg%BQem89aPVq$k^UpuO zAua(R;Xl>6!|FGkTKT4Dq{#-mwbfjk<_#3CbDxhx9N{yW!YN(jo;jk?qHV`^ z_h?II(PDIBB8@`LiF#psd3)HQvq}3-_kH{RDc+6Eig# zXu)u^R!!348>$y&1$<%!I5v(IGy*P3Vki8L5h+>W!u3#Sb)xa|x$7(5nEYvBNL6X_F@Zy6B3KV0fT%ruh z92j7Ux*^Nua^ax^3Wh<22|{V#j4f9N=l!8Wz4&lHJmU;is+aQ;FOLDCh>!M!Y||vA zQo(E{0de0E1vPntuejw^2>NQG)U4GCYAWbE_Z(Z@vD6k!*%C~SP@(Xk{HF8*=W6P) zk@6GA2b?Nl#5DrHXxOcXhwPiXAGY7_yVC~smg3EGueYCDdaYg1rTu#KrlT)yPn}pM z-SOF?NjA@pY_abQK5l=>mSBhbEI;e?5cIu5Tc)vc&b+WCnBL@6d122;$4BK>OUN;X z7Ufl{OF23WZq#u|s}}wJmOJgsd+xJ8S@9mbM%$H9I;;LfgVZDi?!mYs4QgwzukU)q z{^Yq^?OS{9wb%8&!rptvJMEPV&bMAoZX&V55gOko0&#Be$cR0s)r5YaEy4bF*S%UX z>1jQEJxyDJU18TRxX{j-voZvInPlZD)K5&o5B1HGirKT>7BHnO>dV`p1P5?pdgoMM zEdoB#xlBG|0wG2ghE+ZvZN2A4j<;L9PLxM}3|Kel(dD!^4kmQaUGaOe;88AbE%dkt zeG|tAXQo`DzTCrydV&u@0rZbM4H%-1PdPe2D(AhPaeNp*eymc)e)VHj_aDK^Ad@8e zTX+yvnAllQRp{5_N5*Y@W@LMK8P#ZF%i;XtjN_Q|77^b)*j4I&x626JJ^y^Pt=Qtl zi-Pk?kN}$jN4DM+A7AUG1wPajo##3*4NdNO;f3{KaskdhK~Qufb@Wt<9?pHgmJH`X z8o^e6a}S?fE*JE#(A9)`5A0pWQt%--<8KTyMw8$1aaz@mUIuj_c;vsU-B;;4G_WJU#_LikKiA0T z*bsQ-4KHxP&ww65sHUdLKE^r!xXr@-*cxC<*_>zGf{yo1?n%p&^Gtqhmt3rk{94u{ z<&)@B@CVP;`0;zl3l0R02)O%$8SJcbH2gf}vFa`T(1XyNLtc<2e~{q$v($@w;`r1; z!^;b8svltEdZ!w_aF1{WAA*A5!^kHg$E_utl_Zlmv!<&U?9I5}$JU(wui$NFzU# zOMWK2j2t~=4{Q6X|Fi9zcFXWRc5(Ze_P1+(U8}^NZwqHeFX8w^Ap9#{oM1a<@L4Z> z9vXVqZW(&e9vao^xti?qPPRV~G z&cGA)QEeUlra4#GTbEt0twm>-+$s!zkpK9-iptm%+9Ldc-afPUUTTkZ9<%?k?CphB zVwb8;g^7l`0l6vaV%3p1D<2zt!TxjS{r1m8_lxEcdrjAc_USbrvP!;ePC5`@$Aj$NH{-ma zfAKr~Oa!!;N+Pp-g`$?roTb9M4f` zE1$>#Eo6}7a#V>P6J?n2874XjTgEhSLC@pc(q3ukFkVD{OjGdn)7(>uFXx}WNn2;3 zC-Df0u^PVs*{7XXu2`wRBpb!vyQ4K!9@TPt=Y01!Kg>$o}xm3cHSHO~@0e znp_i4Mdoa)2^UHJK@_PyY#I_B-#Ug zL)*CyNJ|$SXlwdr{9b65)Heyj$PKz;hJ5;&dJzQ~MCO>N2PW`D+i{L#xdaV#7CIQ6 zRaYwX3D-BZ$RO>63}Xw@z8s!4$8hp5iu^UX|_tMsB`ckw(?c#`-z?idF;q-0-7% zsb`~0#E9A0zSeDyii!s2yaA6X`w>c@@k{Dy!ye=(+c`NY>zUT zqp8>4(|xgBJ@;*PZud%C(kcfgED0VdzA0N?l>?#7c?K-nf@7@%F>OU%=?fS-j!&r~ zQPzYin`bnK?a%HVddB{)@9Xxpy${-Tofp`<^FM1>X)@3JnOy;&alHWwJ~O8aZ#4vy zU0&1@@b?ZsZMSL(_{R@E8-l*?>$%jf%D>Id>t3a|Bzucnrh)O)pl>OzPCQ4O@6#$y ztR92&-~;H1IZL1Mda_E-?Fz#F+4kG*gA0GcerCxv)-kJuu~chTY_!32M5-vya%+L zp7zyL&Y$hM+>mQ$gdm5oJqg{Dejls=W!Wj7Dma_J% zAGiAdsMd!*h+GnEsx<&WU&hA50VAM?eO1lI^LywU=rsC2_6E8E`>Ikxukse3ujbI& z+7j$D$|U$vN%vHuTk0BRq1Px2JzPujx>Cnl@o8y^@S%>S@bNkmY-Rj#$9G_0w^%+N z0z3pj(zH#QI#MUf+`BizrxEhw_&~Rs{E!EGZnNGPV?1O+2X9~^gMP2`=-5y%9y~C% zf)CeeTaE<4ylomWzG7$cP!yS|N8e))z#ngq(O1BzS|UGzD}p=N4crSqtu2!eq3|`H ze)<`^@Iq~GEG(go+)#IHWAwtr_(Z@3{ym^b+4bT>dHzspRZ1|CxWUT|DQE zuq7C)pR%A3MAMtE(>vnI8S0C(71e}Cq_2eZCW|! zf9||XPrzF3_m;oiUbpbFuu3fTV1h%^$`3xrg%7V>MChb9$mz$#5=i)jS^H{`5!Lgtk&X7rjknm` zrcV1{?hTe}n_qe|kYpjm1|(zK#s=*hy9zJOjP=_uu6ULGeEvqY|C+FxPmmp9N&E2+ zRJR`g{vp%&>#6%SBeBM zGYR)~=u>=xjwnOLuVF{HuY-)`^Z6+g1E^ELMfD=lj`Ur0_>i^*AK5<=&cCF-U??%$ zAL;=<*py&{UEmm$qr^SLF}82-FFrsApZW6_C@wWQW|h1DRGqKY=W+P~8^+dZ_?)Wx zy7&ptb}6}+VJZ@et{K$n7b-2V3KS&y_EH0cZQ zQn9@g#HnADw2h0Nr$C4HpEtkqOG(%;U<)?nr)?NJ@olkdePtkU&&reQ8~Rhd`iA;} z53=lXoPeO}Px>VKhWo*oHlr`3Nv?0e103id;O6=-ZCiQ2qA$=lv5^}gJLqB(zBc@2 z)i>bFDmt`3_@I-i6ST@D>cV|sNPW;(*oX9O^d1R5()3Tqg}#Ztp&x>6J&8VmzM+5e z5;eS3s!zNu=ZA?M;F8PbLhKx$y;@sSZisiN&y1=sKBH~qzyn(gUGBO$YyIGfzDXUB znQDB*>y!KrE&4e1VbvP?XSL**cs}Zh9)%7Qzp$CfQ%Ux?4mKp@h84`XA03Rn9&CUX z#TvEBFaCa|CL2lNc{y4frBf=}MgA75z5s_f6(0eoK6ba{hnpy$O6>S9R~dY{`-}T9)Ve%0oQFj-5EpJSQZClmwd6 z@TZhNLrEAC`U-vY)5q}ME0m`2FAr!akTMktZGbchWFYh4#F=czj^j9X;whd7S(YVR zk}cc+-*=z8q@(M5ukMv(4SsC<>P&n5owe6qYwdOR=I;qdxAhnh$8!YD*!#*{fX|e~ z6t%G+2wO0kA{hr^76-)yH#hFG<@?$4>J|Gmky~P$*&+4${6$)aj zRuJ-zmYHd#wj}*E^aDOFL}qGR`qc3BNJ+$4nu&g3(u5&em8R*~VOv`Fmi=n$Q}(?* zk4a$}ZQq#s7k2fSMZq|V!w_2(U?heqAJmphRqx{*+y&Y05J6sy$hkD ze0nm3y(06>62l1s4}EIl#7UhBg76#!M<(S^S}^?aL->pLJ#QO|H3}i+pmag!2=N$4 z5U|S2;DZ2nDh9?B9D*1_P-xTP zGtk@Jm3}qQ+dPo#@BPsy=BtOx2%D$=?|EPVW2-Lc8^z!GS~h%;sW3bs6QYdP)YOFN z^bOB9o*w>)Q3$1#fFT4viPGvT3guF6JkMOt9Uu5`zWmAC0X`UOzz2gw+Ik{-#Kt9* zY>a0dQT9C@eKqf|><0~le1gkkRWDk*XhcY`;@IAkLj*bs)Bc#?XTV5WQ zy02NYCX997&TQ#uBWW@CLj#->Qe_~=85%==!~jHDtVTsSIQN1r#;=~j$J+#b@7=p6 z)Qj=0E5T`i_nV8+2rP(;!He>_=7`*Zp)nr7>IXmgK``t?Q^aLVhDL~w<0@k_MkAaX zI6BVpe7bs0+mKu7@2T%C*F4FCag}-{5|Taj9&@Q9<1xRf(;^3L(trW&g$|rzXu^#-HV__@|SQ#`LrgwOtfd#1RZ-6s#65OTo>))Vz2^vGx>68Z>wFt`jZ zi0}!k-N;zjtQB2$w(JXAUOl^Km3^b`WwR!2T~adB{(8*Sc9B*Xomn|KtPaa6pVR@J zhmQ{k$e1y97w+ZrC&H(D^uxPEuIC-XFPRLbo*rE9q0Ne z_8SM@wikD=wqI#WuxGI)XceiCjXcNRG4{hYU)xMiDU&nE;C7uSycfqs@1iF{cXS=b z+FW!U#wzq2CNAN{W3`nf+k17U3(^PC1sS{01*0v&dUkv0p1?3Q59;l@GP(}qMrw#t zQmU@ZSc%-?_@t)oPuE@1c^FHuM>_qa!>2#B@eg(BIRvnAz>|IQ&-r0jNChAB}A4M*r4)7<>%V{|u`-WpsR$69f zo_S`6I^@!xba9Y@>0{vRx?#F_srTT|*w1MPGAZxNCy%qWiFD`{#08f(*1lom#*VW@ zA`!|bKjcfE=NcRrus!?iv)gDU*YxS)x$Z-|sGFCOE^g{Qr#E;yG9fy<>yu6^scE1M z@PL<-9vztXK_5WxVq9Yz>|7icQuF2-{f~TTN4EEqE^X>P-XUW&^i7`myenkU_*PNw zFynPfhY$A-HXaOiUFy%oJnccxGHdT;y8;VwcV}ApbDu zLOsx-NLx}8tvZseZL}YL1I61GwU- z1y^ulw0kE!{A4bM2zkHOI$^Wa~!4UG8Z z8oVs}5@R=*_`O{7NR3B7r!P@Iu+FzHQ9krWU!Y#JD-+G6mL0zaXF_NXxa)kUK3-X- zRe>MgxyyrVf~Pr;E~yoC50iN|R__t;*xr}P+p->>`2 z@dQo|rCW0da9ZVuq9>hZ-K$p4(y!y(~grB5{X1;Q+M#8jnvz{!PC{1cEfZrOtj;Jvw|iJ1PGp? z7(fG#VN0;x_Imv$dqP`YeRrR}{5-tPCYH>wFO2&mJEwY%&63e~lpIKg%6JD>!4XJC zU(h9wo(OUJ;XP$~_u0y#F0?lt{Wzm2lrszF>UD><+x^?0w=ZsgNCeVopBwuwyMFvd zHe1_!m1!w=0_{5{jx`js!#h@BBUiQTY@d#wL)8hJ#U*D zS8GeK@%G9csB_GgcGC{{0TZ(bTvKZz@A7!P zJRbK@3=r@UW)axfR&2Z`9TBpf?+}lCiOVFVPreYJGB8BYhY@7y$NnBj*Bb%sa|zz= zI6jF)w4GwQ^xkIp4wHDam%fNVn~G1m^aJ%?Dn4#R8K~{aSnu4(CS&qHJm_5noUdSr zp#NnvKxC?!=K)QlXuFJ+DLy=d6>FNBnuEd?$ybpQpUNM}0|OBKhrBTo?Ag61)D`}S z(a!7a@>!;GyK^673q0A&$|tWlKI8*FkrI+77xf?TLD@%s#mLXkjU1`?Fn%D%A>ZOy zfs&6gig$@3OY&xXiT?RVS`Bt=(Vb9Siq&YC|VtfIQ}C&yoR{QVC3zNOI+8~)P%C)@l(s} z&NcZ`Ciu*m6XBDtU7eLdK8_FRIZu}l@wk6Ld=`GocmSsGI~)lGj8;m;DNOk4RqZ>{ zXqyl0wCA-t>^*yz*^-7=Ws$GYmS79*(#bd4g5lGpAC3yE!y*!(^K@r**mUirzD#m- zmwxC|@Jq-hm3}A#N4Ns%NOf{}VKv+zZh6EW+5duFIc$-AblUsv{OZ$f)R4+HLl(Mo zo$y&-uT@a@y)Jx~+LFdq$~?m7@+t4Ld0IV}Ez?*%H!VIYvpa!yK%<24&U4I+Uhb?gY)u`f*if9$H!XGNK{IA7|DeiW}a<_BGBa&N9?ldf2R#iQ2S!ZH zGbW(Z&X_(U^li${_5EZkhkEq{F36Nju5W@Xar1X3rE^T9vj>Yt4ddV49C0Is`tvqG`8*}}ap z9yj&6u|fL9#`VGB5W0g_;6c;@2a)au%BBBiYe#2gfD3IyzQJLY`gtEnO&f0~eS&s? zkFOHLyJxKN5RcD2zh=G{I-@*j13p6=pcnd9rt&@CT#vM?JHhJ#-7yAtMt|NuFyXz> zHsoyV6O1+ViHw16FBuh{gJTvv8ya!jAnC9X^+f1yU!o3R3nuO>kc|f8xOiG@rv!LM zSNnqJ>+h*qi(b6dxXqs1waV_+E-H`KYd4%DEjC7uK*zN$*ly{-TZR zx5Y`G=-~Bezteu^d2uJxyJ?Soa?gT8kP|i&Dqs52m+ZT8zbr7&lUw|Wxl%zA8?9u~7;bCJdHxP+mAPFu?TUX<%L$Az(NRKrj-{ zsT=td;>?=*pX}iHz^vnS&81xMaidBu_<$1wE-TbjR8~mX5fnEu-cuhvdvrFw#Cc{4Bd{W1QdjH< zs{tvHPrNhaQvc54IQ?)eLlKd{k!t`;`T+Pac*gMwZ&i6l4p4(_m%faAYR?M$&X$L4 z#lf|9WAz30XA`cJW6w;h)^hF`h%szp^j#->F#7&#?@PAw&>JF{YWp}_ri~CjRr+d2 zTc(v2$cU$khA(52t0na`KD%&Op26wDZHw57`TiZ`z%w-J-90^|ggS z(U21c8?fVxQI@=4rWJmEvGsBL_u8lJ?6R45%goQ%H51RVN#*SVMf;XuYwUjQsd=xy z78Sd}VV=##;F2qAYqVJ(-Lzl3YVagYw7eNLg8lKcw0otHVS%d0K90Yjq z0Vmp<$@l@k#pyB?A13Eq=*y|xtd;72599R1mr3=ovLXC3lS6#^Y4@piU0*oJw zjqt2o3}NxAVDv$DLT<{Ybi?;3hw+ImrhHe%-z97CwiCj|@H-ZCuHXvsUMMaeUkf3YnGh!vk@N#}A(As}5jnMaCt6umR&Z zu3m=c)6++2fOl4|HWtfRkx$?~V>EX9$(9ycAihtKwzfvbytvH6IOF)R+6`ZPf)9K* zkw^p@XKan*lda6|Jfj}q!uU`7@(H{%CX>m7x}wu$8k3PHzy?|=uP6`kDU)`(96^5G z|DZ3v)Mc`RynRxKGJJfBXbm~wS9JzQV68 zID|!V4)GYPsSodpBgREAf!>%zq0dnc^(Fqv43xwB>JC1%)$31w=`f1pLs?)-`=JAl zd>}zOB*Ao zdy;;@$wM$MNkKptW)-Ama(MaGwx{f0c0Vc_7-Qd8Q!o=(Ck}(Txc2&a0m5h+nQPdYh zIl%}QY83FvR`2dSqdn>RMQWbJfsbt3v^nU4OpGC)qzlj`eGmRYe?qQe!Vg{x@9;o8 z#s~BwCNm;k@ObEZ82Zr#d4JBsJzc*$CWnZYq%H^_K^KhU6UUizaEarSPFL=C?Mzpp z9EV5f$93hV<_I4jYtv=>hkK_c0?6z*NX(xPkG?js1=f6Nrzj#QT8Plde0fPTOMAfA9*Jm)^D)Unjheu&{oIA<4|A5GJZHjLobYH)E6EH zE{uEp;uHJc&aNDt?XsmYE6eh}DbMScPoC79u?YT*Q%5Gg9B(h@{LnG6Wz3s5ug!T3 znu^DzF0Dsp`w%wtqcv}=v9V*K716=N`x5=KrvtVbXmsJig+b>@tyi}4JTC1+kEX8K zXeXW*?Zg2AdgI5tN#!@hcdP=xkuz0^KHlM7kRF=}llt%*-Y@UAC;1Kf-m9;^8tR8_ zwkrW0jnxpT7j=#65$W=yz0ezJ=v(NOQ>RV~QB&>U#PtBrht}Ztl!fCNe26s2qMeoN z`D8oB-}kCjtHMfN^j*K7Ep6&EbZzDZkYPKc8E+?P_-G3{!IlNhxXw)-2*maHT<;N| z*(W|6w>^R{vM2AsIeO&DBc`v(=b1q!{&IZ)r!LXXAvkY$3c?wNP^L16*B4rS#ZhZ4)f|1HRuC`JJBuE-9g~+C4^eH~ z>+9F?GW}j|ZHj6@J%?)LqH(*6tZtZ`kLAoW*ejo`O*}s@BekMKj)1W~P%75e)8+1m zkQ(d6>!=nHZt=XmUGe89rtWwrN*}Ln$LCym8QEi{CHEkRp1d*X7L!;$PYig`m z@1bb0-i2OLW2^S{ZQO0I$msjPo~3pl%XrIZd3EJ{`&P{@wxIenn_4!`stU`ZF9yZ% zPL@$K6+Z@I=*RIXl5m(WJ}4=?+lYSf+?1<|=%zppF9(h`*~@in?dMw`vtP;KWp?RI z`~GR4wkt-TX_JOVla>vNv+>|gTT%C>J+yb3-FpChj@#ARX6xJ9GHrpDRi9Qq-YT_H zj{JVZfY1RSmDSUMcZ)$0+Cf=M?HlRJgBkH9=pk*1#+RLU?tI8TKkS((j+_W3J1@Lv!GY;*S7@ zVnU$a;O>FGw|(38F!77hhp>j=?g|j`;Y|pE&>-&%I%bJv1a6$vP=4|iV!ZsGKE~UY zF>f^=d=NOnhc=`55z^wLzKbx6um_eX3677KkyE)Ic>o;22jhs-kK;1{s@|n4=Gw2i zl=&YL^*93FPcb;+Ai!!1ohk3Bm2jC0-pJUKDL5Zx;)nhZ|MUJ&J&?;dV)&uYP$!J$ z1Rx!pVYdN7e4}%DU7uk z-!b-kIq^8ix5U9{0^KmSGUg!nWx^+ydgc?y>jh1(UcEYClCQxL;|T4A4tU3LncguX z4n|T8witbBCv;Xdtg4O97=xe>#vqI>HIn(k0$kk48mDQ;n)XH_PP?3w4+fpZr477$ z>P`8)&s+m(X*+GA{XurZNSe&R@!=9#3mnl0!I9OXSgxKpv=u!NjKLz3qqobbG&SVu zSP>UmBE)Ge+&Bq;D1&zf{a{q5Poba2-%Yk+sW0yxS(AKH@gc2al!^}q`N}datuERB zus#;q+ES|zL$=t{dsf=lS^czmgIRHneQwkhcEQNGHb=&=(ZyBCRX!slSZne-FE1lo zUAy{>yrCb*r@Qn6PL3}hO5o)4rj`SLP+tW8t+ofVqYd^MIlTPwgo|x{YuFq;Xs4Q7W*^pvA=k|Ob2~$; z!zRk5Bgwex!Hr}QGAD=ccv*hTl}5poah%l+JJWUCa8KTh<>-RWKPVTvg=fcgLB{X? zs0%tyS&w>E(9br>CVOl5+T=;v{#!hYzmH8O#Zw_jEPTPIt0!o}4Z(%0xFu zS71znPfeRXtqr3%o?bulV{9aU>Pb54%5&=O=jqDp>OGeZs1IW-?*Q8EN>DX}a|ZG@ zG?OWKd!Yg3X2ve`3jd(OpOc<*$C?bRM5i@_J=zU+R5t zkJCa zp`Nrg8x6u=!4UrDbs&9ezxHQfiR}rUo_7GvVPivHf-h4haXo%_G4gzG#!Y8@WT#HgYY(6nhxB^5G8nKsSVJ z?;=F#!XN6vc*qg_yAr4`_E!2nd1VXq5yo(Ahx99WD`j)e&x7LwjlrMj_uv5UDJYCS zn!;x2{ms*L_vq#F&KMJYEbU6Z^dD%3ymIYJ;6Z?n2&sK3+|2UF(|J3zmYQv7++i>7 zS#7`7Dz?Agr#arkT8Koe0cl+&+dAloZ4#}`)o8I){qd-{+x zXc%BR$?u8;_ z4?R-4V=})Z>aMKn)2x+`I<$vuQu9mRYs*g8Y)FP?vA z_3O#!4E)rWy5?Gk{W z;RjyyX}$nuwV%}u8|^pSp0WRL=kLW?itT?-{&Txw!i6@YY(iM-e$$~{wo3RsQ~Rpj zQL7bij_edZGqfex4Pnc)nc6aKv<#tqEqYuAU-H+Eh@twaj3C~oo;U{wR(P6RFgZBO zb%smmiz*m{_hY-4+vhjmW$%?i_k;c=sPNzmP<0^N+FWZ7?|R9;wC(rW9&D3+c+^$) zfr(exxx;74k*vs8Z(e7w>|SecmmRSG)K+rq4r(dAqKWob+D7b>(esTh!6ue!NnzpQ zA=EEPH_&HqhBj;*giZ>_frSa!Q6r-XD`=2Byxs_3#M!o8j(l1P!Y8(TVjQIgVV8+3 z1bYk+@F;{e7hW+Wcz#p|LEvQ5Oef9m(8g?WL)*7)4GJ-WZAN_LRE0tVJ{Y~zO^jzN zXP`c7qn~8E!RJ&8ZT-m`m1Dp1=zlo&EdtJW=#MxoxD1qQt>AAcfH-&~N0DDDe}v~@ zSYXU{`4gVUkFWcXAqW_R7^`tgf=?j3AqSC$GWs&W&%q}jWfL6Wd5%vipQk-2`xuid zWi*91xZLMTE^#od;4B2zI8qT0oWTm2n6ad<_=?jH_&@^~e+hm+Tx9tJKD3pz>F^;b z#&-;1i9{k8PmtxE9w-NVFh+9(A24+JkTJF|@bUIzu)zpJ+wuwELLL|^X_p&*JYVv{ zs6@LlNJ9r;=>6B@G2x7H2<*Ux9|8Pu6mYtse$ZlX2Koo9Nny;-*We32)ZL9~;eE#{ z&vSGh+Q~E84JPmsemoBbXFUTS9NI8u(GQQ0kM^A>4YcE9oF8MwoU~KwN_o6@@Sz>~ zl<)N8_|O)HW)IMm<1=Wm3{1k343}PP~ zzQ`__^d37?ABIdU8L3rZG?AuEqbksh4I6A zBk6l1Ae%96!8`H|)D>Ndu^gEjo{|k?;`8wUax|0c3CYOlRMa6g(07T4tU=v~$GZR* z^g=J^WbrY^1?DQeoYeYdyQZ$t40+H_+Lx)G(2KVZyCoP=t~++N8?=e$(@%*}a4knaG=t?mRu`$M}9w`eOdIV^w^_|RuE^$m1Z#zgF$ zjw$bg_uv!rvFuOUDK-mq?5@xbZFYVG?WAJEJC9>d+&I6PC0kA*d@jcSaPG^n_lQj^7-Tqf29Bw37vn zAn5q;WMo8Er15u8?8e>kDbi`-uA-?kt>diA& z8$GI3ws2(KSGO-X(}M~8i6eC;-O0p-x=@C%%WYZ}+f_-Zymc8>#E4X94@ zxy_p6y}Epsc7Lg{No8Zg?l>%PfD=$_eD@dfjLDmnfU`@J?uFa@If3bP)PCbv1*%7Z zyj~8LC=WUG;PfK4qkcinlY#tnjdM(ioPkE~9bygT`Y=bU3GEnp#I$2syE9K)x@0AE zojmj0+UuYCpu;s60nL!kAGKxQo?H5}WVx+!RH|29@il5&kep2TaW9!Vv^RM#0#Xm; zBvsNXM<97Y?NU3Bs+}Ppr6OHBMxIMDvkZrjCd0G#+wFP9-;+O&-wUKbowJ5yepEKl zBiHR^WKEjm!?Yt4Os1~_o!lo3@?jda@&>K1-yeid7+$;$+Gf4)%G8?OYOCTtK}gx+CElwrnUt8b31)ljbY>~O>TL` zmyKadFjWnL&!>*Lwk2CU%Ig~aMEIbzfDZ!)tM?oi% z73Ve>i@t^w46)_)>+OGTy4$7~jj`LNzQ<}xp-1 z1cUDclJ0%F$%b3nXRt`s6#)xDmC2aNQzo|w;?N;V4T2hc2gMM&I&H>jL0IEC_n2hb zySG-tedPU)@P~3Zyh>Yw=_~BGf)?-d^sW9JysqH0NngE`mX=u}kvIV#gf)aVuz=_K z*RL+*=>F|lS z3xgp>X_Q*{qZ@s}foJeaj1MTw;Dzyoc;M}PG>&&X@7_Fj`pE|$=!fx@_Bs7HcC;VE z2Kmx%42{TbF8}cyV>DwZ>3PmQ;vnb6@yVr5CkrdDUq0^$C%Fw9Hw5{*rluymXK*2K zgchJhXn}L&d#>Fmj$8t^&f7?Qw*`#c9nR-h#~ z=K0jEC*x8+?+SeKp&#Bka+l*%p!b{31NwUefvEyvKe#6Qu?XZ@=Ufa0U zR_)(lkM3P=KdWCBwt>2^e6Ib&~;1;Piq zb{fb9f9QuX3B!7vesFjR+ahaq+@EV(iq?LsFY~4H}Qd9+}PY1HkkAH zIH*ah#r{gG#s25sXY4Ce{>-i(y-**9L=IA{7`vu%i&lw!*1od+el_U0{jW*yw|DEK znHsGad_Z4NKDukEJzKjfS|zDzy-ktf^qPaC?BVbH#ypC_ z!*1Hj4lg8jmFbi^f~9}q4{_d(OxLFXygwj_;R)PI<3HG&?(?AF7LJH9E~yXBlIqKicgrrx48EH=J_E%@*xI& zk%@8aSkNYu+~^{`72@^5p@6nAVV+CywC?_+S^9iym#lDx#aC>8I#bn(Ffc?JY9O^VYcg`Jxt2- zfdS|7u?b!d4RRma0!QRcOiTID3}Z6*GB7mXu8}d7- z@rhv@dfK{mOR)2R3%rIgg8N{Y3Hy*~5C6ed0Kb7|v%U9p#WLPvw}KyFr%DaZGqD}g zZ)qcA4Kg*f!Ez0gPN+{X=X+GS(AIc+p;-dmhQRgkdaZQUJlJ+u>tnR! zmRZgggtex}e~S9N2>i^t`h zFRf615KI|3T>#<8GX`M>n!>{5z$>s}I4BzAow?*pH9GnCH_1qgAX!sW6Bu2*&8ek3 zKEw%z?pOrw)$Xee_>8O`X=6u4UtKhb!EJ5YY0LJlwcpF=doM;`t@QJ*$_4hZsh_Zg z)w5*a8*9UQam%Y%wX>emMkddoAMnYQe!wDNq$B+e!*6YCgO+%I&Hj1ILt65DrQK9@ zf!%c4M{Smze436l*?n6V+i&;2WWU=le3a;2<@4?1!e_zo(*izKL)y1YJ0`~=XbHCH z?<8wOdiWt_?%A_f6No!4kw~-|8PXNQfXJ7itO)g;4foi(rfv4qS)bBiH!T={*+OjD z{690cQ62k3@b}}#v~^Nd5mf1m&>Xbp6Oqsn!m@iOBWxkSz<&sM z|D!~~d+5hJNAQD3A<(%IA+_AB^+}D~3)k7|!!r~+6lwVH^y%$O8OQO#pn_29%A_07 zz53b8@HhkQNc$Zh=;!FsV-nJ9!n+@6ZON&=Dc$;1e5X0#FhC9c##iznZeIq+1w+TGRja}~ z^g4D{FD7H0W<0Lrfp%sin;KaH2K_7cv{vdw>wD^G!e84Wc z=%VmLUZFRqu=NnPr~l9<3}1|sK5^Aq8U9|O8>bz|2CU&b$XU<_G=tnm8sb7zv>O8? zI3S-9;8E}+@^M@`tH()yu6hoZq0=3kc$d_>v-;6iZ$~^X_rPb*-aP@6@{%%}G;X4m zR+QO}!~1QWw!C^qTVCB!`?57QuMewyes<(#c7FBgHdkN6jVh`#K72SX0~kiMusW=$ z#IZl=c%&(SvXMjKJK&Scgo4u#*f{;L8tM`0aIeeZyrMG`&H;ug5{&?ag+7`T2#?IrmQ}prJu4VRRZJV~M z>23RzR*Ah~!XNS!@umMwqyd3$*2 z_iT8pwgE^wNl`rSt}kgP4nekh@C;orOd2NbR^=7Zwk==_uXSAzo`XRi`H5$7T@XEq z=g2rr3c;707su-|kj`l%_`p}d2Y!mK7uS^?AM6uDwXy!uwq~nquJn_N zPquW~${PsJdP9E56$kiRe+rC2LyFp0X~~5SJPz_1`~_Y@pbrvw?&BG}2HgR<5VIFmd;2)zP~wxGp>m!4@wD($jsv>6@^Hpsv( zFH?>?yMPD!1#KoTumeYMsi~<6S%STnms-Zjx{mj1%7=dQtpjOz*R($!wv27Goj9}| zjA*<6Xd5y*6Z2pU{ou@jqYHfx3`s}5dYfh(ciI?#Ke=G!aiAIagwq1_Lg2ac8;zy?g{KhAGRL;OU4;5VXc-e<1Cv7!F%;N!FdKK>kioP41P_$_@4d`LsU0f_j} z1^A%5&YwR&=1$vI-@*QXjRG3; zK%et+-;#qO=X@}S6VQ<(5f3Ll81+@)y?T4|sYB4gWh z-fzH;AL-FAu-W4L17E_ym?PMD-ucw6t8pC%j?gQ13%{3Zp0t^M!O`En4<+=4n$3I1Y#u}wgVHu`a{q)20P`;HewYG1=hk!MEcbYlXFa{Lx`w9O4F9CosX+A z9wEcg6ZzxRYqE~ri=R72Bvq8K`j2OmJcg9|!&Yiw)G@D=$f=K&u2rnNsZ@)V6jKC+ zw5Q=Tz!f1$YW+)XZ~R_+;`Vq^F6~dE{8O*P-7GiT^XpK>_ROf3exdKgF^pn#`)}G2 z4&kmZ1Hw8To<`HDvIPt=FakO~3=W1s{TWn9?}99hgaHV_&Alp#=jqGKE3BrbB&2sH zldasodo?_LePP`>K6spSHYe*=nbk z&awY7{sy~1TY}A~n5ZqU*atD%imNxbyvhgfxR8>Ke(2(k&+w!WR-(zZgBl1{$l>Le zTc5O_)IMvMmQ1yOntrp*sZ3admdXFoTld*N)h^MNVB2kW$sGH_gg*}WOfR2kV~VT7 zm$A`cAO;ksP9heQmJj69u?X=@H{wFh=QZ(rK+u#GxiXn!-|J$CL$Em0{fAKm_f{bJAa_Ua)GoP}fT))AN3 zJ13uSYoC0@KKK3K*lB+>%0?AdhCUsffCLEdfPVumuq-8xi|`XB@!V*DA!Yma9TL=b zh5m_v3g3YqT%c!yf_}(-`XvHd+(0qVu!z^!c_%!E_9C3s)M&D3ROAfhUhNnR2nezm zQV?cy;b-x(2I@KOWX!^Gk@0Do=qFd9b)dHS5A`1S2q0Tw{NdPHK>k9Jhp+L~nWu3B zh<^pc#5}x{=g4KqY4Ao2Xki>L(DJa;XGnoOxl7r0)}CCR(+2n$vRP*V{zw~9+Hq)c zc`l9*cz_S%1b8xTH_HgX7n6E8_{qLh^y8Xg^2B zTk@w*F)7V8TgNi)((k~R_rWn!ApI3rToH_NocDHMdnVeF3w9NxkeADtQ;1OJfpv1gd{(w*S=^wb;%g?E~p>v$_F20GO(O9X`-@@9OI6N zA7Kn*<*CNH27M49qg!c_Z5!HP%Xcre`}VwSk2kDT^kRFzw!FH0()IfAL0evxjt*O1 zVWa7bEx|Hk6MMjW10VW8ry)i^6Xj&chY_S>TVxzwzOwZpIY;faPma9EE*-NlIK(W~ z>af4v{gOT0pbtX^m)lLl&ax|~XiKoF88*4Jb>JHW zcrAJkPN@VOec;RB$>a}whw-dP^u>6_GbRbM@#2ut0Q$qb1Rr!|K7i?dbwTLIZ3+K3VbIrY4fd$Mu0*VSJ_O*G4=+Tgs*{6CwfG3S zfv5E&GELlRFw(gPUbosd3k=Z>h|g>GVa`YbMvYP@*k6< z$N?@FdOQ3`+gX)~K8S3HF6z9<p&~|8sz&j>gJgw{GV8F^1^e5LBGOQ07gEM z-&uW5=5u$r$cJ{|H#o#0xA49l8$U+;W|J^D9B3=zH*$1L%HgC3-#EVk3uGZ27oZ*T z^88L_`?KXu-^QUrHOUsO!!z2>JEyJ80mR$k?Wxn2R&T$(CGaEghbH)umH_?1uW|f< z|AGs3p+Au?wA2^D>px8TGAr@;buM**Z}QIR6Y!gOT0e&e!;|16@M?Gq?dC`v`jl^5 zNgj-o1ZX$a$ps8O-(2d~Q*o#Z^(W+7K6T|?Lj$Q>eR>|)46*+~FYqMj5`BTR&W~K@ zfM(Dqpg(vtx?V0H#Pk#f>GI({&OKdYH+xy-7}ujauIF;`V&6ZNYdq^-5|n>uu~U8U84W>!wN(L;x8 zH6S?{D^~QO4YxbD-CyqheStGWvH{mQ8SxAB`0Et$rXDz1kTtteD{ zL^jYetqfigt$ss^u1^@qTCG`TX&iv|j?kw_IMyg%$4@7oUHdV9FPz5@gS-0hvQVx%Ft3~F~?W2=h&Uc8PxpcNsV@0Hv;$v1@1^nVjZ9h+m z<&opXCDVjk;XIkflg8t=ou|tv`LIKN+>2+Vbe=SJ+Lmn(oOGDk!E0~PqD6sOLnz)^ zdZ3(~vw)EzR1w;UHA8CZ2cy6cgFpfUK=8)^gD?goBrl$0BxbOHp>oZ+Pb#>8(jNrZ z3{CBD8)H79vv&kO2qh?X44izm78IjhyRD_U#U{ugTsW%C-l*Sf_ilQ{{&U|_Tf>%M zg`@1|;fw5|ksq>o@_d|7qAkHXYLGopm~0o=!Q6~+`|{2zu)z;{r#4^?Upgu*@vcFZ7oL+2VB0l?J;{r zD+ax%a*oZ_gh0vh0=xU|C+rs(edYZ0&WZ*0@oBf(8N+AT)Y7pwwqm4~q}v*5!B@i` zI_ujWuP=^C86oh$boHcP;q-&x3V)d}enK!1z;_VF5b98j`4JamC^SZ12x#YY_Pla|lZ8CPyU;R2=+x*?a?_OW?x=ormsm%b3+yyVB-(y5VfkjTkNC1Ce zl8n50&euN3W$?#=!Xx47KE9^IhI@_=MnqO|LBXZHgt|KL*%YqHhgBOmBD=DJ49YHJ z2Zl8id~k7tb;zKf{&9NA2OsDMqYwDdZa0!aLpc19C$v~oQxhg$UwiGfHhjTm?7i16(ky5|?op`Jb<=xd%ob zJb%AVJ(53tw6_EGqMp3x&I0&RPbO?Il0i4%1doBYpdVr^0-Hlkhr$=TJjbX_eEJ%F zk$l`3-C3D^{oL{K$sDfJ24pqS0}h3bPa=^B?F65l+qUa#%?hg+G0a*<71}e0*4Sb# z?fuibm$l~gemh$qhJ0=E2gB;HGxcFeRbhGfFeGdVrmx{JVf9CSFcqJ)*d%ZA-oa;+ z#;7vM=2NHCSmW^)dqQ6b{$%T8_PYbG*_EYJ?L(u_wc&+j`f_lY{Y$O%o}>G0f$+I~ z^8agRY4zOcoxG||JS#$96*?ZbimxY+8oKh~Bwv9y^`{W;O5l(Qqn&bSL9fBs4*zgnXZw!r!Op@s#g9DbdyHY^ z#n{An4&Ol+gy)=U0d9n@V&aWS*0xDW#dXKg-o_zadDIhrf-Mc+kxQWcw5@VjWe1xRya;EX zxGfG{1DTwD$T<^|ID8;0BB#TvxX(55`b%JL1A9L*ZfANAWG)kaXggyPA=NPjzC@mr zr%Vpx8d%Y0=!tfN+v?S;1C1h6Bcnqn@NnKue+tx{_E3LlJC|{W_l}K@BV$v%58%wg z1T@YpjO{oZ(PqZ}W5*;j4Jiy`J$(|V3Em0#f*W>?{zNytCu9>DPpKD??5~78*Bl@14HnD&pE##ZXD}ub?A*}v<3ODth6kwT$rs) z#{hmq8u&2u0o@UxCHfTiu}{E9_|aZ|&?$~}&}TyW8GMPfU;?kpmEUEnV^2Lhc<5kw zm(++1YlXY5bI@DzAH>?kIL;r=gA`AxwnJH7*;MNy` z_A*8hpzUn3y<XIxbQF+p4ydh4!ZQCECb)CO%lfTRY>g#3eX=v}gyMjg32O$?jEl z&(0U^{yME>d*qOf8l(^Av>MP(E$y&Xwzl(2r)W+*p_OmP+9)mlP&BAe<*E-;w&pj} z*+AkH7@f!ObVQ)+kXGH2bI$=e2H~{R9-=fI?&y|=8p9!|qH(ZR2x_&am2M60B)&G!IH)7^Aq|={t-5iG} z(p1$Cwnq7ewG?SyJ{i)rBz`YCkKZ9->b2(B%n`~<(<8vAGAWFZ_RxWY zR#IAGjmNYnYQrXbeDmw}Y{TpJYi);R$C~Z>inHwIsh_m7t7qC2IdcrxGUzyn!0e97 zct;2fFHKo}jg?~qE_fGnLmAefU~j)*-`e(wz23aT&ed0t z2COlJ5+C8rh22c~_ow@DEd1P$9cU+3>Akgk!^A&I^tf^31Mfv(h4$dVeEoqE zF_3VGHSdH|@Bj;r{yQO3?1s}1!n{vf#vY$?r%o?^JmngAiZ_V&27SZdkUfyg;BkIG z-hAf?@H`wPQQYbGTqAFx_#=xUgE2N^{D2QIR{Pg3#Pjhfo_BvecN}OZ23ZUMuBba6 zUU$EyeJK9OtL^wi25919G;-rSJd^Q*Ji!dP&x4ok*ZuM6b;Rh1Z14D_tE=M!-Oy&} z1Y?L#xPk>=USV*1_0?B{a}@V5(sRT}62~W98U5`ZZ9$$uHlXf~fgh=_pVL<`7ST>* zjLqve2Yn5h4yO>Dx^Xn4f7aC0gh@u1*%^;B152CAbRKbh;5$w~Ct#B-*y(57sL?XU4YK72*4uA(EVl3L zUTmYaGSW2_v#hLOs6D-BxxLV|Uigf#+q6>9#UswJIWiKCle5cEoL%$}N2zGbG{GDG z^>pjHpC9@exX^CKU-|&S@u3|BnzUfG*q^=qi2b_u8N0paqc%~x@4sz&*gm`M_jdHi z0lTOcV( zLDU&OtXP5*IDDJ&99f644q1Tyh%U(3HBfQLL>Z2YA2Y>+e!z!S`xu8#H5^jg?RZ4T z_WtEOCpCVrU&r`Tua_Mw5cwaT0iQru0Iy6K@eE#$+{0uce8mIL=x_8pCfsXkYT9h$ z#6uTj5)wxj`Y1XWItemUu%&xO{ov>rU{k}ngE53QcNUmr2Nyo1pnuUe5AY$JeZU31 z7OeRpQ}ICp{F@Ime0(G=@1#Ek#|3!~nt`vzX&`M~MHj828QRB668^5i3Ve}~(bXBp zjvS6wxuNZj7rY7_ke?}!v93SsUC95)$h0e$deWchZ;3=A^gZYXoS_TO!3k{8Q|UM4 zNg2=*X~7iQgqD!2D7VvhlJ-UQ&Q0exjK$Q|X)0amJfp47Z=fLpc=2rO)-9rw%=`wM z5BQ+l!;|_uzu{fOZ@`AFOtS?rAU-q#zu}s`;Q^X~uh4&xhiE^T@i9+Pu^cf+j|tb% z5CK_{5a(IpMj!rh+MqAMZ=iAP4cUU@;xZp;xaR>q1UZOt2>S;83I5}&VM8O(9JtV* zuyue*JP*&SKODh`Hc>y?;<{D3x_KK4MKj`wf>r}Mpsm5=iD1>*73bYr4e0b?HPU_M*eM$T z8SxH$UYs(~^Sc{LTC|$6oPrv)y%pPB;lvXUs(M@C89qY?%eBK#@$s-_m{)-YWRul%MyKJS+wO9Kk2L;0mpcP9yssNu24a*WfA~g7HYe*aydR79eh+< zqeX>wh?-IlRtI7mwY_S8YoYQ9g(UM!iJR{w71YE;JyguHM5lmr*2&D{0cw@3;eoak{ji}bv zVEWn`#}Edf(PBObzvKn8#Tkh52t7j{ClM*t)9c9lp$!P^{J7=^R%%eFgyVyv2aaP$ zjj`%s!)?p&<1`S= zF08N@4{NE==C^J3&YwmvbA+`ARAI;9~*YM zeR<^jWDKv-DpFb{X>hb`9+L&F;j7`KqXcfO3jQ9#ML+oC^>Mn0`WM@4L~N1!9*633 zjTbw@J8@A25y}w!Tu_Bi!JAMBc#dEOe}dPbgfTT?%5^YA8kih`{6UWCfVr=2u@rlQAd{DeMY}gR^IC!7{oQi?= zdYc^&rys{Fj?bxx!Ku)u_XL4-PMmkH_(AoD?ujBDZ2_b^{Sc5RBHu_pe)!UBQKGuuB*G9i)5K zm-oEg)GuB~=m#1g#K#Y>tK);Q5JL)WCk@UV$aKiR!SO{nu}v8GfLkVfJm3Cy1Rs91 zhd@8UAn4cJi(`mf8y=N!RLrDg71P4s{?=q7T;`Sp$KY{xNep{;Gf z?mzIdJ>2-3n0lf8apeO0Zxh~W^R)tKqI8Uv%K#>Kso(_EsxRpX=!5Zo?Pc|cqvJzg zLY4;)_zJv)dyY-K{;fw_ZQq_~%e{k|PknIbi}uYOkK2ys-8QSB!kXn6^YDQ+vdkCT z4dpZJ`x8E)Ey1RT4?`*fKC)A=;!PYMVbmW3_|SH+z}U<={fcY)RU99_vU_;V)gVmSEGgN)lUw@nJ~x z1ttAeXsE0<+?6+FEm*L?=FguWJ3f#%bmMsVbH8?78MQvExyzTy8 zT^D3EKF7o3__fmyX=-X}+9u^gf>Y>^x0`l4KInp+`}htYh(GV`=BsACU1Zks&l|pN|c2{-Ix@gCPSE2idZ}2FCz7 zhcUzL3F+z!%@H5D2p(NgQK^a3i6JVoAv!8{IUG80YQb59u@Kt~x+|FR44I)oE95ch z*k6O=GQ4`YEnK)T)Hw*6?c@LeKmbWZK~z&+9T#*4Cg5p1ZS??uW*lSE8D|7|G<+PV zF?cp(nbQiqpL+u#Kr5%uIb9v8bLR@=MQDbAuIW4q9Nu_it#tR{!J&ix1NQz=6HXq` zCh5UBj%$C%i1!TLL+=EqsdV*re#5&b4FUa?UzE>CVb+n~@Bs$SFV1i1Zv%zjfC>D@ z=^z~@eh(f?Ux5yw2XN#b{DwA{mz4)zLf=6ig2xaS?BLDg#*Pa#M>_BTp+H{0>5su_ zgRugB<1%2nx;nqX?!9rt#_)j>b{zu!33-`o^*Q$4X!te5j3edL6`q}7a}3m?0g|II{)VFq2gXDCnnpY@D4AKYzA_r9TB zPoB45?pqlVFq{A3Pz8IMpR1fNhA>o*= zcS(3J7dEWygm-B$k{?t1l&<+;lkJfK7!Sz(L!0fXy({c{dzM)J9xY=xWTf3vy(l=j z%&VGe^lLmclg^h~ZDoTauh0|m>7Uf(bRNft zy?kLJ2wb6GiEii{V8Xyrt8LMKwE6e;MEz>Juxy$=vU{m54IZ;fHTbx_e!SVe2>JtBV1sbr0tq~XzQxy!d<}zAj1UIj0UHnS zmra^fA}&fX@t`$=$KyW28Uic=OMe$!y>0QM52HJUgd|0k|SHOocjQ-^`;qk!-BMf|rRW6{BQ!#jZ z{ar_6`f=MSLle)y24kE*_xPtG76Y|SL9mr5!8_uIY;mOZNHAVtFr<&eANl!vq^;04 zh7J_@nwpw69*DsjK7f&Iuneq>&-}PI(1O#ex0`+qjniiMJu)bGfsHHZ-bNI7@WWt_ zK@A)kBN;24kCH!f3&w$gK7P>dX#8l@u|D*DKiRU#~ju9t2fDdiwM>~1%oY%_f3A&)&^bhz4bVT4tzay>F z2hVYoa(M(jv8*hT$#4oH5TD;b2wqQ@>FF!Aq6zvJZN{jmE+krt^kv#~RQFk${-{^(Bo?Y<@U>w|LcAJk}PmCdoQO#V|_G<>!`e88E54@0yHmE=8E zK-ESFlIWv<{S_B48@J8_8mQB-`IGc?LAy8)Cx?Rkd4wR!najlC|kl@ zn=9k#Sn0}aFOJEyT~|(0j^Ioe=-coxj(rilUpc=-&jXWI$vd0HSF1HS0e|M_0loy! zjq8H&ai>ArQeIxxrVD~;U$xKc+|^?$KIq8cgAEG0LEmLN`Z7&+c>o_)CIKJ#HS!<# zPE}pdX~%5|`!p7{s=esUqmGU4pf7`w)6c=igJGM8{_Ke1@3bpN?+>KqoG}WTz;+2w zPPHY(<9DUJQzZ@Z3^c-6=5~ZkZDXwCM;gXB_zW_E+xh69=q9YTz}B(I&ftuE1m8vX z7)XJ(f(?BxlT(oQN3a7I>{g@!8~8hV1OaTg1~(=v>9fQ~#_|f($GmSOz zwh$jWK&GZ&f(7Fg^Z~uV%W#Bp48f(ev}(ZWrPwbz>r1?2Faj3>ZAMpz&gdsqRl`Ca zjQ!~MU`8Cr+gIzzrJPVeKlwu&oZoa-C9r{Z_&L9Ue%!$YXAb8#I8FK3=KKbpGmrx9 zg-1XGnVb&d?Qv|tlQdupzhT_N{^cJ;vBEL*!y*js2m=q#`9836%^I>#W^mE27cd|!Tgnq!Bd~(6w%kAqU?FAdJx8snmUg)W;EQUQ0 zryejOzS|KwM}~$svqd9;m4ItxU!@$!$9Yh?GWyHCoa7eX%Y6B=_Y=@+Ekrg)+Xt* zSCyY;bG67pjkX1=Y}+L#vV%}gGRF=@Qck;XiDIPay75atSM`#???|iGJS;y}DE1KQ z?-v~Ph@_z&IteQ$DUJSHsa6*%Zq`~BC0fy6PC=dv&PyIn$S;|fKkxiV4p9w=+n%$h ziE6lg3ixAXO-HU#lV=(|mM$$?L z?29h5`7@{4l*yCqoO92!GtWFTFxf*#H0e~_Xipt`-5y!L(v}=wFUl#hKN>#QuCBhp z77U+ZQ_IF#Wuc5zA|s5W1L4a?e}}wJ1a1aE1d3;$eOB8?tg^KlRDbu|`$DwyF1yO+ z&6sM_rq?T^@u!KL;}<3>BwdO#ew%+9TtW><-JE~q{|OcspN5_(J)P)=m@ zRU6djQgNXlqA>841%?P0bi?4;^UcmFN9ye5^JT}=Pd#PpWGH$4jdj)_Lnr$L*K67L zX_LkWY|dP8rd@c^MZtLkg@?&XXs*8CF>`H1M1YF1WzXJ@33AsKSdeKrsPFJ}5s`GAv9; zI=&19VYRbY5yyx2J^%a?d*Ou_?5*`1?4HFh*@RIeZ2pXCR#{qXlVwPOZq7aT+<*_` zDfmD?afj8;${a|~PrxThKU>sq8k$<{#no#AUA+6Eb3@;{;KB>-yz|bLp+(z#DtP*V z)aFyMu5Ir@!yHZsizSyWTfSU-cyF}Fo?dLbw{Et1i_W+6&zx&Brq8fTFT2#{%{wE! zKa^G!wY6*4>g$g6Hh13Kpy*;Sf^YI19yw4$8#ZbH{TZ3{_19mwHzj*KyyPXT-?rIC zC1%)F7c3HuPqlgaD(>P-E(x+J1`ylJRWiQy+>S1=}weJ>?vBEaL zy~UnivC7u3dL=aHo$tQEW=>6n$t?O-B9V|G_K2K08f{%ktv$JIseON!RsuS%39;fy z_UUn#Ys;&7Hm5S7RX#^ru~rD;t*34YmMYu#H|)R%`bXbD*LmjYrzN*;u;s75W-mRr zSadViu6xIMHbZp7m&)*DCcEfQ_00|TO2Y>GWy@mwMg1~aoa&`753vbllkM7Jv+c4G z^KEwJ6dONOTR`YOA>h;R*N1I?OL2Udh+s@d|9O4=MtkP5$ewWRAHCaVPM;=Sd5&Fv z>E(7%J3)MNOTo7p`e5 zdIL6JWMg!%4bnr(OrkRv zl8PI3XF?U(8hYSEP4K}cg|6N(Cc=wJ*1EcV;lmZ^2waev2BO{t2E0f53fMsV&;$J- z6(6p_1}tl8YC<|3$>@jNW9;Gw?T{BVhCa&2Dm))Z<63Il`N#xE4CavF4YUp1;(Y)N zae9W=Kok3A(}CYWFV1iH*am0D-RKlJ^PpFHh+{(<;ue}y9!9J6U8#p1?!-q@M@8BWO z4>UtRf(Nlh7`VOh#v0+qww1#|Jo+iLfiJo?@P$n z^bzFcS<){Ux8gW@KJgD(6(P8#>}amFrL}AA;hjtEU-rnx*0e|Sm#hXfREs|xwQYl1 zZDz?>`=epg?6k^BHnOBgWf0L@NNX9ae)@1v)5GX_=gWs&Yzs8@F{yuBTAkCo&N>+n1(G$hrjnjAuuN`LX1;U1?vj~=)87hNAyoD!}2GkRB{ z)ek!wRz(^Vup<$vqJW>!(B?sQL}r>jqvXdD9EbF*L&hFkM=vZHg(u0XaN4cl%_5Uf z!&q5l;F4H`SsUS0a4J@EK5;Tgip7r*$$FrkXTi(tl5 zga{`HB;*MI`GU|^a6dSq4TH6`3SV_Hsdm?0ciGp!{`Iz+z2~g4HtYQBtU%apSo)a# z$Fpy>J-h8wx7iu*z0ejHZLps;%JJjq0h?Wtu$!tE%E@K6%@ng^%PWk&FlfHw3-6dd z6_IRPUj6li`XYEA*1)n@jzHi3_P1rEdLmT!;o)`~aptUkle)rvQ>DyHbm&kEr)WWeLYz>CrM zJ9pe+Pdxs3K;gogLR)m!g*NQ8b8OS5&Gv8q@hgYNZu-Wp_VC<#+kbeU4B~PzEuCPW zs9Inb>WkPjs-{`AN>Xu%597&~ZWzFG@d$3K&`CI<&hQ45mV5r|zwFbuepaO%4kcYN zYq*`RiIky5gRQoqMVP&2o04_7{`%|flb`&A1pDe>+~hVq5<#CI3RETmC7DIPKR7m2 zl!>PAfA4$tgFEjG^`4@?*Iv8Os>&ol?cQPcKeNI1h9_pX-FmCt@`+DqTgK70MnXMG z4+1WeZ#Zf8^*c{iv)hL_K1|+%&z=AJuOZ(W{k`U0XIoWik?`4R_X(f6WQn)k`f2;b zCqESoG$>DuRVadtT@2g)ZnaXW9`ywuD7!0J+@`*7W=ow8>L*a zT7V`FzxhqOP!3+mjX1oa*uo2N4noc&Ulja-92^@AArC(Ip#A;d|9vnF(x&q-zSI^? zpJ3&OciVx&YFn~wr7eF=U!W+QEvJRQ{hQC*ltdzo6|8>Qs4v4&b{R*&34Sn;@j%y~} zZ@I-j_-B6>+TYTwZE&R$!;fKhJ*oU{DvuAVN>`xbqGui$?6v!B^_zx&-# z%s3g3uA4X7#?3s->JJaHhwl7|y_u}QZMWTKH{N(-7*{c%;dn^@#BhY8DF*$4+^=XR z*zk^-2zyRC&z=AJLwn$X`vU^w_4m3PF1HB_<-noUUzgwgeS2Jsz$M%Xf~QXfSya=FetAo0-{jNWtaz4r>A&$Z$6C+8*Xw7KWlvGS3&^vU1bV=Fg= zXO~`dxs`qT412I@o5pxyCcblS#Vot7dVyAvnq{YzPqYzXd-3EdNl9BmS8Olz&yt~X zC@Sb(`M`M&eDv|h9gkUduNlLU>*2{vd@)wVaTus_emg#g?XgE6vD^Rg>-zXg&UFeGP8L3MgimFaZQQ=w z?uy~_L+M3xG%3xb7+AoUvClD9ohrex!ExhW$;Y4k%g@US-x!*A`OGRieVVp|F4A}| zedqDVI@%I$x#ea}Bu85kAs<6Or&4fiXcLn^=*r($pCO2Bf-PaVYze#e?6e1-UT?d@ z6SG@C{b{@T=9_Ka8E1q$@qCg|PRfCDzWn7c+gHE(Rl8F*kB@!qV?k!<&GO^?f<`il z$|@V<*#<R>+k9B)7T8mDM@ZhXQR zTnJ!^V+Rw@^sSnjnl^_J>{8rA*P!n)$qz=oDM!cK(w%ds1J46~%Y2GEWcYoK9v9p; zY}gRm%{{PiXIz(^aVX-x^Y4KuKgVgoaiHzc6Jt?oe%d zJ9Hsr@_}gIbXo|FO8$Z0;7|r1N!2GkJ|8h**J1mj3F9XO{sh0FPr+k&PG6#5flIo+ z8!xjzo_ky4b<5PR;xyJIdU#!WEA38*K15)FUf@-Z3C?5mPk7cqa*%Q?Qn8`GczaSE zOg%1R81tCbY||~80S}y1Ig%b;1HBQCxfJ-$Knrm?h}Yd6;+dV zj-H*nsFgSC zqp#9IY9|S!4~aZGiYt{f)yTaC)-de2)m3VxEeg<|HhWfE{dCjMiIXKbW?7=7eH6;p z6Vm&+M~vS~&7Zh_&(rxe>7ldT~q`MMG>U;UP3RS1qdm-N&e@| z=7j|TDG9py{Ri^))p;}b-I=*_=iYNQ!#b3XY!`>F9DUCi1X&MBkt(lUO^*8a?{8jw z^v6!`tlp;yiiC@&o_Y!&e)u6e*ABt8w?2satvVud-x@-7(c`LC8|1E8f-S2TVd(*X z-1fj@IJajH3^;#~iF=%qoPuI|vFTin)=8XRDgS||#h~SlL`E(H&l>;-QAn=p-xdAN zzX(YY0f;Q#hN!Gw@bLDD11EbSBx3^DI!O7MXkhiT#(w; zD1B1`V-aSQ;Z77ODa4gdMJUmr{!dPxtUhk>;zhXko_p~95986JStc&&mW^69A`lZw zl%L=L*f=;B7CVremyhjx^D%4XX59PEIJE851vg)JH7)(qjlx9&u&lPlk5;nYVI8~U z@A&cKarW6~o1))+L05Ebl8%I^U_&2YZ=0db4$@}xu6>v|XEk2@d=iaa;%E@?f?2?o zF_08e)`Z#}X>hzU%MhS<@80H?doJuo`Y_~Tr05d_UvDoI+8x+Iz7c&U%vpt(KA%iu zsc5|U)>}kTX=n_C+;K8^Jes&lJg)S)cW^g!X)OALASNsjzBbZ_ZOib_PSR)YYSL$t z$yy6C^1lB6^v_Yi>c2EmAM?p4xa{)FSr`vIeeX?Zo#=jp zMU5t%5kZd*&+VLernN`zz601Yb37Jp+KVSX{sEilEu@9A7DNoQU~bh{p2}GIZ=|P1 zA0d}qK4b`15b^W6ejU;O;;WF7o{5Ouc?gI}fk$#vY?=Q%HZT1X(>B}jz*8@q>S!TG z@#xhz>Q9q@jUm-Su4fHh>2v9YgRm-R18y905qj6Bf;lw}i5<^}@4n4Axa247jckOi zd4>3O+*mv`;u9msb?DF@O`0?{w2|C#re!G^tx4{->QNOusBb-G%4CkO=a}qozo-{_ z_rCy1@zIDRf=f_l8#scZv1!`ZPWmj_jK`mU13RSDV4Q4^*ffrRAG0A z4I5@?^UOo{P$un)i2Z92P1!ZHX-^dAZp4n6-(WYJXL;uYb|mOf8=3|{rn5`Ip=I# zc5XMMdG11u2CWfMzYU6(|At-Lh+yfTh&e=_y7k`2j4Qwm_YKARwl-|=*@r&iP0=yB z3DSdTz@U&|-$!6ft1|IVo+BGa4_=kVJ}>8C|) zAw)}V(Aan;lGTq%DK7(`J7^>&bCqXr?2oLB8i)&L=;vUD7i6EbpGY{8>DO%AgZIAu z1-n8sF!cJXxp)n#J8>LcUZKM;p%<&-ivYHeTQyMGjK`w zY-A=xn*KN0Fgot27b1vv7T>|IIxn{1s9}_tjeBrZS&AmTOoQQ7SyPvV*ivABh zOoO1u&a6R@>vxxdffm%&Pp@6O#w-jTJXnBm_AN4QPU9kbT52ldsasK-)7(mWzMPyK zV+bT81?gS1aHcthg<7I_NPcj))3~=-m0(o zMD$R*O68y0m}`HdcDQrbPSi}QX^e+fty<0N9)^~dF2fyp$CWl}1L{|W@S^@$MjEP9 ze0-dd_vENlvu1LIfwP_!zler10@1PVSD!3i5zoo^;YgzyeG_*{uJjQ-)EBG2*+3&X zwF?=mq@>WffPJwH!esoUXT(z)*JP}!BzmYlY5bBAkY%9hN(a|>xt{+w?z@&%^;u88 zSxuhN*rV^R>vD`v=DbGzjhq5SD<#oHeUt8y(V^Oz4Dv)f_0j5w#Wz;F`Zw19cx7^> zjY8+^r2317(gDhGQs)&K%Zu$w`Bo?@ zw9E5W+Eq-n-`%V56VZTP%bkUS{0+S1gG6{^H)pH|X)TlJ8;KSSZ{08~%^Bj_Mh6b& zDI*{u0`UdTJe9AGU6boM?(5Cw4(mSG>#ona?CXBjMRVVS)D!QfL&c8uTadeP8+PXI zSGw9;$sk#Tmw-x8LcKJf@Na(Q%4E>i--uc*Aw1!j@uQ*It6fDoc2N`hn6A_ zz3mWb4xKxVy+ida&&0~Vf=t%VUoIH^l6lINR!5XY-`3EE-}zwPe(c=172DQs!VdoK z*|`T^bh3z!i$+{>0%B4U5K$u<-hRF&)T@}nMr*HN8b`@ssL#CWreMTN@8F_yxyax}<{_N5W%1~28tzT4u{2(}`s!=YfAFQacj&G3 zWHC_+>Q2ivJpya zQ5%)MQuykhlDpE!YVi8~bj%pYv%FucI=J`Q5y)zm4etPU3=ADmwr2~9S51RwAVZU+ zwV+95D0bxT!lz$+g}|oCpr3eu!vBz8*=gH_cJl-=LLBFxhIJDa)S|O ztb7gQxbeoS#~%#wB$N-)Sr74xD@G^@vPLBP}>nB`q9Vmcy~?H~7?Q3(thQTr4ZW3?eDr`{)z+bJ9ej zdwd0<@kudKosvZ#!D9Dhn_9oM1n=J73B5YDM0~q}Of-%>I9AU9iuS{v z))vzjuf-#D&=4A?7T9|5c_nKsK9h8kL6D4XDm#fjT9lYGXO0ZW zA~PP?B&!BRGQc_)w-^!`+g4)Nya_ZaE5Y*<7h>nqxp?uFS1EsVsPO2m>~fyz{6rTm zR7k1%)?07VQRiV?L<9EQhdqTx*{$FkKx}Bvl}mT7NAc31;T4?$?^>jjA9;x=uv<25 zz~`es!fp3HgcbvP;Kh4}BfCKpqdd`kQ2&%pN3K89G;w{O=p$W%yi^~&|2~ZR_!B(& z@ckH=;mr`p4dGLdvZ&gXbPD8|vR&&@vThbiB2uxkAOJ7C{w6+r_ZXoXqdvV^HjKLE?6-if)-HuF`^6apqQCL?0P33jua;_m;SsD5wocA3r)ia5{Jl`s~NpsS9!c zd*g8}kw1qIAC6d}Dp+||anY+hd#fH=47=*eA(;Bx?|7EFguc`zB+~IgMnIyC?o%t# zOu0grKt=yDqf7V`BY&EOr=EP$Afszx#LBnID^SHRuNCTIie$N)z`dLvhP^-pbEBSVbGXQ8J?wK z^Knyf4BmM9VRY%znYVcuUA+ulWSAx+dM#8-K2tyBu7)nEzeOAEE4<~iPd|mxpN!Gr zF_X|*2Mroz7U5;Ip!#cJQHzRNhz%!tTRu^PWbhzeWOYa~J{UJ{9In0VK`NUpoUOms ztbgBgaWj#aWyBy9Ajy+5oKHY@)}plfXm?H)UDV$Q0sb>ao_N|N@`S0IbQbIjD^hq3yz%%0 z=-QP|);uo+L>WG-zp)nTt@)rkw<(J@s<#mBMt}S{CZjX;%dYt!k&Rm%TIH7k%lF@ZkB5doj`eGZHhYZJz1P{e^VVCC z&VE;hXBv-W2qc;)scnf)R=&r`=3jr>D!=-SDN`mBUGQyuN8|A0rQUrQZQ{CX7@9B3 z^er+X(wHRuhx(e>m{>%|9Ex^xyuAL+*DTs-teHG%l8IC@;m043S>%|Ssd)M6$B{)R zf`EWP<2Y>@k;$OyFvojI*8FeHw;Wu%U3*|FX5=oxw_E?j7rW%;<7AmuK&b7ik=PbMPCDwcN zm@|LpW3G?rnzC}eu5(H*rE#8c*(z_*XZ!lim^=PAeDcKqT(16g_sT1;I(OZU~Ve@9}AxcnEm`}bcMG3=wdD4nS zN(T^)f(M9=48>IgdZ2Xw4&3qV+gR74D|)21fQLV03zs@4(9ULkMypimFH@rzePj&O zp?MQLeCO3@(lCR@bW~C~2$9FSijHM$-zBB2F_j0Nu^U&=U3 zZq-9@$`3qnzd1SL=KiEls@eYweO%g>jH&vztc}k}pMm6`=bn8Aue|zNwOe3uhi`0s zM=5(`3{SZX7zIC(!aI z#zEu{${pkz$*sD#lnd_S8!yt#k4mCW9oylh`)@%T8U#J`$fL%CR|^}4j#V`eIa)=k z=$tEkUVPz2tlzi^quzK9{hOu0o3O=(Z_3-2+7)fnE83MmWsffHTO)uAMXhP5d*^@t zgU`8eB>I?{qb09YQQ56*RR?`v83ai&UYW9+@|N7H#SMiWRQj4>pZc8L6P`4VDkPt< zS+QY}XC#xA@mTGRe}TcFIOnV^1SVvnTi;I&+N_kYsi~lMW^9drCR)(Hy3fZHutEv|%5$7EGAVEUbLV8yM{_S313gZJpc}5f z9HIU;6s^fIW4aIN;l)3AINMc;#w;2KHOs1xVfEW$$GjOBHuN4esZ|f1I(KGUl=87M z>B1bz<4V?VRnuJW5pA?!C}W^rEgRsz^V_0sVw9N=78@R59j$7TJaVa0N~E*IwY{2~ z`Qbwh-KW0zrkigu^IR+6sxJST%3t9LWen82btBw2unlS_Mw|IgG5eef;)q6v(I*7g z^lZU#4S0x)v7*n-4C^S}mb=r(D!<0U7oKN$IT{1Kaf?%z5ajRFB~;MH;vJXyjyLr% z&4@nr&_$gM^3;9QVQRb@Ok=p}U<7T^M@R`mnOAyi==tbQWFV2_FLOcmB^7gJe_!;` zT=0=AFyN67@C?JLzQ&NDLa4CvH5pdXM*W&e9rFsTDfA0{*gE9{DR$ekDF zMFi_x7jsdP;2A@yu%&=PlDaUMD*dn2jGweTrr7@m1wpsemW*g|ytu`k|7-NOSI z$uaIpIvFcOi~1Y!j*Nk<;~+OT>Tsoxj5<_jAu@NZ9e}Ie`2w}Vyx}$fV+1tn3rAEc zcKkL5GZwAF13#?5{2Ok?)59O4)3p=rM!H=Y1yzTB$21-n-q8ZR41xZ``I6EjH(!QU zk@<-4em(p{!g1iY_uz=jLQb(iK6>&hT+cC1;R4&pfRVaO87s*6MROe)zPNj`+LZd6 zk7?|p`YK(=P{Z9D5>cSnweT(6i_+y2fF=V`>=%IrpT2-EMvgZ9jr8_1wv)^xy40&z z&&=7XQ-7m*#FtioL)zRv^bYju-Wg%5e?&lJB77R1g?-EZz=j1=@bjK1JV9gLXPKBw7+y1!eeXDn)NGq*KCf`w3f)7F%Hwdc^$*P`WD}h`_||xT5)YQI5@-@ z9tsIaJY)68)qytB>Ad>ND|m{s99;tOES;#cGZM_Yk(@5<)RP`8EXJ~pJMr$fztSn> zVsn2skzz#;@r;$khf1Q0nSZiL?X~A)>E0at%CJczx6i=J{B@kDc_7il7sPVIF3#G* z7zXU@pn9kunnFXMcoQC7tx@_#0cA)qEzi;9Z@t4h`0IDz-4)H*+R=Qn;t7|1>zv8e z%$;r2>E-3_#+1?D;qwXQ)xDxM>NVE4X*n6fAbPrdgZ-s9hh5pUpueU^*n=kz(p zKuEgWS1G$9gN!=lNvx1$o$G|-(bqph5`TVOD<%Vuof{CG^DELCw#3^r=pnjl3EC5pLYCa>O#j+=E2Y>~o{2t^1_B8cLQER> z?Kk-F>3h)kf=lSpI2(maC%})iP)}1lXDqzv$yi2j;-cUG$9-DcX7?i``tK-S@C}k% z_9PT|1}8^js28@QP3txl0*X7+$8@Ar#JosF%=`rlG2)&p(L883z=@9xT?&7G1)c$s z@NYX9B|FxjXc}n~!-W%e00qCjV}!cet8q2r_-)fE=|m3q;&V)cN^3zvzWztohe?l-t*-bU*G{Q zQa^A>PYmhS7?uK0o}aph|4rY_ALoAgd5v!l_AQYi0m!66^tUBB81v0|oO@31YJu`# z(PtDx%)K#Ugz@H+5sSPUHTXJdBaz9KK2DlBuX`dnCJf;r!FcJTFVUcWJv468#5{L` z?EA02P4yQai#{XXeDe@}cwR;ke@`C|q{N0HjP!YB)Yqg>{R;XhUyJ_#Y9bt?a8~)% zM~ogdl3~&Qi`Q-$K;*63rd~&-kJ?#z+bUuG)&5e*KcT_&BqewDry?Sd!!q&78T@fNs^vetUaDMQLOhEDcaVRB%qi>UQP_}zB z3KsnUzoZ68iwQygvhjFnQb#QsY%96@w^aFs+Bjs$5L`8Q0B&j%gD5&XmqjKM z8E6_xR!ya>dNwDcB`BWz8N4Erx%yE+`Rr|YMy126VNdvNU4S%??bwDeBAL8ykY3~| zRbA-wBfWp_;uwG5pf{(G-a{~coJEnaM}mt18?}Xz5u1$R-t(MyYP&z zZRFS(PUdT;B;miGevi1=7^0}PH1h~7ZiY^KR%*7LNEB1gW%Y)7BzOyM$P)o@x}+AAeCVfG=7{3`Z!BoHCxeM zb7d(U`(JhyGV=H1r4cWnZj1KFpYC>k!@WA7*BPPfj2d4ZN-tqO}!#<{H{x|Gn4pNU$ z1I6>c<+#2YzHKfdSWq!SR(*%mdQI^DFDp>6dlS*SI+#U|%A}9<9xGO?#21{Oshom` zugYZgX>t&Gm_`eWX#hRq=Dx_PRl_K#DXo~c!7lsIoX16Gl`(4om2YWO!foDl0588i zk|FBOK?1{UC{>4cr8)>LTnj*p7ca&eH=m29qEERYkggm0STu5_59b1+Piky9HZUyk zEANm#efk(D8h56TbeGn*{hCOIGUmDeq8=F1y|G!~kYmxw=n`thM`Gs6jd)}9R~Xd4 zuURy+cvEz8$7IoG6z77kz4kg@X865+bW-#>5nV$0Tv&6#s4&izM}LEQ4DTd)!^*cR zX)=lEy;G-7MW1u~7%z3}oz`z`sO%9MJDvy!zOExOB+XXxyj~66r7y zO(%;8Ur^plK+VQ&(6B{YbZplSjccdj3_gGKHsfGWuW4(z3k{$$GWZ@kyyoux~cVqpJ%m_bL&SD$?x|GDW#w5pwiq$q~2Ps%_{ zoh-zp)k8{L6q+?^Xq>L{cIRU3w?7&q7olj%C|t>+_rI~eCsQViHVXIj8lCR$x#u2S zI%ohREPR0eeR`vIdM(67hOtd~ASON$iH%yLepU-~Y}*-`oO^!!?F195uQ?H_B_FFj zDY-j+EV>A(pG^(XkNyLZQ8WPn@xl(chkyZk|5g8VO8nv4sv0*D@)k(*Botwjt z2*+=K^Am#UxYD+LdlULng{V$+5lZCMR}R4!ln3v>asUx{X*|!UESb$aA}%EzF`*%d ziU>z+h#%JgB9Ps#7cRc~Mnu=BN$27RX&~i;)~#D3H8s_IAJL||^f%HOJvRJNyzt^n zxVe8PymnI`^vJ4Z=1s8-854O!mNQOIV zrHRx#2|Sn18xQ*OjdMoJWU_k9D28V#>Ed2HL-CFTQ>0 zBaD0NQ(SshbG*z*3Ip0UK)sqVNFc&!6xSKG))+?_IEk{b5Lr7nsfBcgB7XG4Z*d@R zH@s>DBRrve{I-g4*soQN!%iOMz^cdJ{p!(U-D6!V&)#~qnIO8Ht2pm+&g^P^&Dk$F z=*TwZlkYL|;Wuz@`-XV!#=bbOZGF_?x@$Z`4MzqCm~hOZQ|*K(v}FX7`l<2wY}^d2 zVq1)D#1L62(G}}*hkvi~_a5~dT7|RjIg#IE(c^gMkIeVP-YfbjOxUW~OYp?N+mXl6 zY5yBK5I6L0MFTs^GIUakw)iGI*sM3o@UBO89pn`{@Zy{AA)aG*6RyktonG{)20?=D zZ_uE@k)=QFV|8|F7!vk>`spV;_r&99+qEZ~C+!D0q4r=%iZVibd(hL|Go%I;dC6)? z{L`zsq2j8{(+3HS+98H8Yj4nlL>;P(46MQHv};kzPD4C7uUi&~)A_n4Nt+S2M>F_tS+ ziT6*C$cv!@X3w5YFX_8*KfPrK59|+bdNLZ;C_F&g_`()YGlBvD06+jqL_t)Y22U;? zlsSrc%oRJqpcfq=oj9|OsEME&DTt<};rnC0Fq1_stXL3_ZaomQjfj7Q#3Kd6y*FNg zi!ZwZK0#q9Ei52uf@t_e&sT=+@C+jSo_I;27i1u-j+-b4T+2jwMiwGTqxau`-zcb> zlRnD#RNI!G)5J=#c-7`FDTmk;|C|YWTjf^F+gooRiZGA;c=)oj%)l$fu7r%gOJ-c- zri3V5F@(R4p`vE=gy|;6vgjjagY}-j%j@5E-72>rman_{HZ-Xbgxd$SGXjaww*KxL z>ALcewRdcIAg0cl&+uwH(Sr(^>VOU+VN`V#eTH0r6I!N(;kN#y4+Rq;NSz3MWEA5^ zt8WRv-oW`nx>-Z9H>ic~pL(1NFUR2s&lN;>Otkobs8zGyjzm*)h<=j>v>scxUYQ2%wU>Jr$2q9$Ed&sh94b zdD1HPzPx?LBYfVx`55u~tEfvuCt~ZtLmnoahF4LHVq-U_V6>dj2+Oh4p(1j51dX0rDzSa_9chqK{=z zBSroz58Z*(j5;(Xqpa%3`Hmp9{Wum#J}cZu)XGSB#bxpuL%h=4ql|Kzt+W_%q5jyk zg&tRLy@LxcxZsS@NAy?ux8IC`rsjkF+tlSe&hvz-rDrAk zhXwgFT(BQLo-_|hGzJn9v-&ct&#w&H{8M?Tj(_|yjZQrGaK79N14JM8y-p?i@k?dV zCp_5S(CFh|=b>g&BK34_Oh0}6r~k!Q*``#t?c2BGHlhdk7w^WSm-j+abf`fcJ2_nf z`yI}AB141m#jmrFnv#O*q)WK{&bv`J%7&rmb>IR=ph4~y?T(jpU2VsQ3y3is|NmID z3=7t5p)R2-jWolmyj@M^7-9^9XuPJd6;^qz-{Y12WUg8D6jH~n^!Ogq2zdPE_tC7& zIq(ahJjgkgoE(c*&qQ&~pYU#W9uN}8@_6zm84WX1P``Ky?s|E&8T-!Z-P;%=R)>Da zs)HN|C1-Z(KbRrX9!KL+ItRzshF9&5?7XSBq&(=s@vBfYTKG94+FpbPtvaJihxYj3 zgAX7y=d&mSYC+M;^JKo!zwutH9x~Jv`tGF3Q}79S=(1~WKqQSh3MRjf60acmH0z5p z|4_;{?5`*v+c=ZIgHOhWP2Wo%Oe7=Ad)wDFMm6f{atK={Uqc=VldP?(zbG+?Ms`Z>|) zlTSXu%{SkI>+iZBkKTC`8et8BQk%i6R%?#yoJ(+xz=OI9(Wq!C9lTmzh|rY!Xw;}N znl*2U$7uNc{%bE8r`|-$I~G4G@8kFEy5nD(%ExrAoAm726K&eI!w5Pxw(r&xUhAf# zXzib{wYY$D&6>t>Tp_DH!s1{fed^Y2h_-{S!%u(A#)L0Mqwj!$29ZoPt?V)5pP-)g zeT6C|XCN7cz5T&R6DBn}E}p;*oJ;K4fr42h;oa~Yc*N29o^r7*G#YVfwb0me6ZS0q z1y8;I9nw-$(S(M*?z~oFeFKXw>L-Q~q3xS--{GBi-o_QpVrU>mbg?WtNpc;V3)R$j zrNB-=i-W&D1JBIv@XKsPV<65ITDCw+Mr}MYY?uk(-HL12)gf%GMH|hZKj0eT!$kbP zmqzoq^=*M#@eynnPV{SoXw30R4&~N5ii}{Iq{k!N%YjEnj5Mkq(M7r@wWs`&A}r3! z!Pxb`V))8W@xuCVFh6e%Y7h~K*eFB90CW${K<}7l=p54obwZO7;mx@&`!^W@ zm74*vzjFR_?YUgfs6YGbpYAx?`Qx3_6PhkN=i_#wAx-+|8+^e)nAex*eppcsKc^?H%L;|Hc=9a#cjz-XuVWKDc5yf3q+=6pxE6UN zZM5zm;!nfXdEepZtTI?7`75ndC+jY2 z|M2{D{lx#2hcj6vv5xh7#5q>fo9kn_>$l>=2VTamEj#elBbTFZ>v~52p!G%3$CYoi z@55(OO72}1s-a~8ZC}azAyzz;Wz@a3@Rg$N8WhdpW0YUNXfBxkcw9Iab z=3R+;W23PKm3F?3&oT-s`_dn&l;VI>iy@u7{a~X)*gGv7jt%os#*k08+U@9poq&$* z+nOQ@_E`{-)?icFK5N!2^Sb_*Tt)e{0SXqA7T&(_uG5Z-2JG1A5$au= z5PiEgpkxaL+l*FJ-lZ4?oh_*$eCu^YG3n%AumipN4>EbpU@UG~ha1b>^6z^l>QtHU zP-D{|W6`Ha=S~RCpfFpfJ-y9Wz@9S)KHRs}pdwg&7L!U8oE}7%+6Kq^Ipm+_u*Ff4 z$wjEf?YiN@f&K8osE-XV8oE?wVb644tgjXa#6L19Q|i|DeB+^CO4xkgdYwp@+ORMC z*%*|0v;BB*vB`^qt$3+)&n9}NFNRNMYk-hzP3T>H1s8=CzCmH6WKmdI$?9J!E58%X zX9>L==ggXkt9o}L8cC=L$zi0E6V1TfCxsyBiIa$|nnCz}{Ex_GU*^uq`W~Xsx|Pc? zsB^OlW2xf}8m@KLeKM{}qLu34vpV7TsZ+3e^(xm}+;-m*0%Xv(W!-A@ZP(OTDyzOH zN+0#@@~o{%#qo`U&c&}B`&O=4;kGn6TEQ2v-znI!1?P2Wa?9pzn{5XDdf1JA}3 zdTOp%vHWPS`TuiOOo93H=9xG2s1t#xq;z*|G#$~`p#Zt-oxhUSZ6AioeqvGjCy#3BQX8fq)B3EhlR{ywR;|9F@-uq^OtWkC= zDyG{}E@gNbqV0K5fv<7Y!#9xfSpvK>+Ys?(9ZD#d_;BAAU6V3NDZEpfz?0Cy4dViE zO^=2|@_U^giEFF0{AVijHEY)3o3Fpd14C~_CcU5#5KdV>!pLN$h5KP&HxstxCI+R@ z$Y*isl+U`Ogs2lGn-;($ISWzsTTw2fqL#^$V@|Y>JyZ2O+4ordqw(-FdLTY{L3?DR zb0MBeSTD9E8QS^O?+jbb1}I)c1QUk6^=Z_d2L4n$(pXB@yh5UoKXWX-T9eTC;wwxM zme8rkY0`9omkg7?};Tni6RsiW+ZdxC`|?RN>_{>5W3?+!8Xo#KX8WUYrenoq%Ki0-JjE49 zI+CO}X@%?V7>3z1|1<^|noqfF5`AQRv4e~AW54|#y&A`(q5mElsHPY`k)ZBDV>@5M z{Cft5JI5>~zcj{B&~MW<0v z(^~Q9m6eJyUw&hB2`)Fd<*w)=`pA%M+O$7R9Xd8lHi$n`GD;6~qDl8RNQpt87Pau@ zcRykabqPw9$u}ojmdd(|wIVxG)g@UU`_n62w@aVR|kUvp6@mwmlE zC+oXvZo6dRe4O98CFgWbUCW8KYu#t35oc0#7zTH5hZ)m;hh)p@k}MhtX;EmSz0U59 zd;a?~QUgm+#D#dt%4Pd^!oK)t>gO2ts!li9S4^Xhb2XkTof<<2{!65 zeOq6HqIL6$)H)p<+P1=&58pM26hzIUY7wdakZRor2zGK+xk$C#i2ho?vH(pzo z(lCm0OpD98NM9303&tDtUJr)WwXgmYcA}4#)jJ3AAwIaiZ7MppX@$!#zZ?n;u4M6~ z^&WTpwRlH;#n9VtN8@JMxS>k}BpzHxqvnGUB4qKRiDoUyC%p}I;ZsPX92!6~%+abD z@SqO7|E(|Jb)qfFF!^iFWgRlQXMg0*$@;eHZ}iQ3bnA*+y3|El5cQXAQ}%=VP)u6L znY?t*AsYF%xXko5q77qyqh(q&Mqby$kU|j%WEAV}?aJaAAw|CSx-&e@@CWZjW6CT= zODEANGmUfcb6{Wo8}%1+Df@6ydh1H|$G>y_-VvpA;>ijk%G;Cx{!`6eH}%`bst%W^o%Y2?^KG|?r$AwIho zZhh=s^dBXxI@BhNLQ5@DtY^ zxh_P6@Zx2p5&Iv%F887=e;0~4u9xKRfxo8%gX)LliCZo;dQwHNu$*(OHtTM5aV@X< z8-4SB?HikD9CG$8;u;921g3q6hOU2lR-tzNeQX#=WSDy|?2cDneGNZN{0ZBO_G0{& znYe%c+h{iPaSUDlHm2`ciKJ2=*oZj3#lwN{fGAuL*BXze^}+cyJEKKp9mM#Az?1J& zSTM^Fh$dR)<`&MC9rfEXJslIR|V5$l;<8z0_17+aTb#MDo|!@<1$48P|DB+z}Qb;8-KetNyq&c zcg4K%)39K|G@={ZoepzSgq&bHvRsGi;oMU;);Y89eBcCgKm0Z;A7!C*=vaHsRB=vo zB8EttIqp}ioW0mYZcu%-uBiGe{e?EXCb|{d9mph-(wzg^nERf2_89|ipo3%eGlv-j zDaNDX(kd>oUQ(G!1(1?+H!UkCPMCmB^%4=eKZnZ8V$*3BFZdCq2X;{j+zlmrHp9MV zCIz-)Lc*`%{w&xM8o-0fVGYpOw*#r^8R*%qlR-r}aNvO3TDyxbQm{$UHj4;2HA20R zR-1tRp1+1b9$E?!{|%T6&jkr(%J$^vPX;mdT;W+m*`&%T32@7^hX}Gx)H+ zsoIs=fI_L&@&Rhvw{k%xkDW^yikD8Nz((USdDjp*$-d$@F033ti9+#7xDBPndwd-@ zR?i^)=rzFjw~g!3+M7wjawT^ICf_r)vHCE1<}1kp+1K*oJlR5suh_}T^RZ9I)->$+ z8JoyI?wl<8Y$hD6QaWMGWvzUy!QxnTb@uI^Xhirvr8TS9R1D-No7b`4@lTu=eKfEx zXNXIsI*AOSbP9_hvf`D+ZbpqrlaCOqs#98*v(8kfc2bn_@I2XXuKR^Dl|`6CrFCna z`C0sFPX7O7~Z45e!mrp@y{%-a=&WfS>7|5mlQxU$p8JfsW_{BON8%Pfzn;)7aL#?jOI%1T<6O~4yu?K^=~^^i zm9h^nn*W2*86>pqjqKV9ShivnR)f_;mU^;>y)AD)xdR|;ie;o>F8ieuEq z$Y7(WKK#z(ACa_Npf5wPzb{(UOUJT>^RRQLdmD7P*0_+U!qaEY;zD3Bl4HYMFP+f7 zcu$5h(L_aU-5>+=XU(WKvd-#NPFbf>YMdF%HMcuyO)2RkgQ?I!Kb+Mn3)9%gOBdzN z$?6j}l*`KL^a%Ghs9Vl4=fvwqJu%U!>Lf**M`Sc_Eecre_r&u$@jEN>KH1`);47># zOGYZ6jvZ^By8X(*sNJe73inVKw{#qhUGj~*Q@r$BqwBU2>CTb!hmmolCofq)3yz&R z@JMWkPVL&_sX>_rB}nK-O4fYE9JuLb`t<4em}n+XKlM0T)*`YhofW-P7($#z&Gr=& zIj)mNTqkfW`<`J@!%e7Ng#wj9D~KY{y?K2MX$=e?J{)p%s}9NHO^xR-y#6K{vr_%r zHKwtyHwxEr9=>C_p^;}u4D5@>8b=GE2O<9b-y<=j}HmBcu!kG~n=| zgOX5b?W@>sNTX7&sX3O9H|qg%A}HC!dHlK=1`*nxyB=+l{qVxDJ1~}g*W^i)On%j& zznMYf-cdBLdvr)Iv~HB?Tw^0m6hhaQSdWG-e-Mm-j&kaMxhALn*f^sEgrR8J59r*c zIqn_yFkXG_wF*ZjH)4~c7S-Y%q2RnpMC`3N*LO_ zA$45qsKX$Qh%#D2ePHQ^KT*ncxuk~8al_e7%{zqLr8PY9jJvie$stM#<9+S5*WsK& zgE6>wR|M=@j54D7$;sZnf_l;eJIy$y@k-7)3jbb4XD|EWuiznlVct&oZJUjY&pQ`g z&mDmKZ@aZ|oFO#O7w31Zhrq_+ z7`}KUE}QWT&Yt@eUS0n!Vhi>n21NX&iO)tlsZ(>47z9Y~{`Q z9F6zNSG!fFWw>#DB4$^Up?z|@W3eff;}SUYbSh7CCzjk%7f`6DZL{Q8M5 zq_2(hjEg!pM!UK-@fqo|bK}->9ZqEkHckriRTatFcR8h^o>n^AJK`ANC+vN1#OQ_2bPi)k*+LqF)l*U12j7KTx zcoS}booxxPdE{+HY-j*BY};X!%2pkYQpbP&DV1FxICs}>LORulpM9?xNNfr9;7Rz; z(!4E3fGyokTF}x|o}ymSsiez33NV}bM+G<+qqK;p5EUL_Netgngv97@%+1+MlzoO_ z6N9*EQrR_;-nDxV+GN#%Pr)vf(z_h_xrPoxDNx-@_Rx@uhAyH-+5T-73LnU|_+m%8I*lMs{ z(Q{w4k!QZ)CAKA@JqS^$jNVCxhuE${Y)%EOXwE+Aw3F4BSih&8;Yns7CAN|jxQaS) zDpeAXNQtNLMv7;tR6qgOU6a0rv)?I!LcS;k_!9E|l&HfsDDq$=`(q_}N?5|PIpM|| z)nhlk)|3<`K=nM?q$fo0Kzbr8?IS;0^fxEmd{akK$OyvzW%Br69 z6gzB8r2&J&(g?YutT4|Qx64qdlyVw4p%pB5M9tbJKMRS|-DqP9@3J|V?;Hoi!ifx2 zu-hrqOIF>t9bOFKD)~$b>O-NI&tJK{O#Ej)#{I!fi#SOnH0B zSCwp>^LLdMQlt#eD?8~s@89Q?&mw#Yk?c6gzNEHMOqcE3c1Tv`zGr9*c`1`~Bk>aD zSZm%xSs#@3gKE|@#oJH*scPeb%BF*Beunqi_oz=+ii@uSztTc8eC1&iDm1Nj>#p=sxm5=_i6}({ z6J?mX0)^Q#dIOG8(xI4nAbH0i#)@C)#pvWE>SV-A`#5I#haoVz0czFC#FlN_D|pgm ze3~0eE>>)NAv!2j&zVTYbiUe5y-{jPnvuz!a~_MUPOJn@`GB+y4KfcL*zctEi9P-A zzDskS&D(Pk9~}oD;~;V><&|Lv!yGZJnvx98t3%SFmXbA>JC!yB&uPj0;hbwLN!B?dW4YD*tzYx@%G+3a6&XxD_w2K{@%n4g zs#ACK0-w5_;NR&M8ph8c0?;b>cOGh-3gGR}{hQeb2cdBGS43}X4ZmjnId+%8m!X;a z-~FC>e!`DGR_Ji7Z&7(Aulk%+W{p>pccwCwqf+}QJ3`Wk1etxl8P~O_>f8Q0(uhtL zH2n4Jd^_h^H8~F}B|6Ue@a266=X_5Yxfp})8e{U9GiOe<(zDE)KMxCOTzS)f-$Zgs z3JPX?PUD0I@NGF*3MR_OvGDKxI0t_s#?Sp0K6Sgnr$G-hSM{k!B+~lbksVH>sd_|w z8T$n+$25yK4bj|mBj;5iC$(+cj(=?#x~C6(T3=xtVl`Lr?{cT1k7OPHu0vVNG8E1G zj*b`%u8u!=`7ReGb?5X^$p8x$vYhq52Tk zjQvSV__n%~h&aE}AZQzrOokd7v4eqM+sny2JyA6GJI*y72^8;{4eM z$uY&7YbM_9Z$e<<4s?%qI?7CEv=YfV%G+J(;`#~YNd42VlW`l7?dx_Q1n*9_abB>E zZE6zxoJ&cUX1v`4e$59GCA>KbW`Ajrq5V6MMqI;{gJ7%6hT){q+JL7&wtJMo%QpmlqqA{e^4S=i+zl-w>!XGrjn6se2@ObiKuQ&F ztk}^>r-6wKRCL<>aZ|BxojcyI>-|=K`n8^M-7i1q$+B%(k%QSk{)UGx?anY)u?7{$ zrIft$_(^=>V80y7`P9Jn4b06;f1gVma_YUNa+{q;H5e05dH`qiFuUwxzyjt=G>!1Nz~M}z1fBK8vT+U7(cKJsHQxUG)QJXPr%XGOdP`<~g3s5X;mfxCdva~yDJwd_F)KW{?n+iEtU zwdEATpLi1n{cK|xm^uOl5t0nb0(%g^h}8(aFAcCZUw~nK9KfIL3rI@@+=>j9z#}Ge#REL*M4- zQArYN7GBS6ZL0Wf<&zUH8XbF5-cVQ?NA4O!Cr=u#8~LmWd4$N7Mbkers6l?MFEJsG zWbp3Oq>q`viMC3veXr|&71yH5vac9F_y!Lev`B_Gh@MM+V(7G9@NLkYV!xL$BJ*o; z0paY|8d=qc*Nj4mLxo3LwxOpAsgdJMD)IFV6w;*147JMn$ERKwc(QGI_%Kv74eHdd zXz|BEuS1`PJxL!rJ1Arp!(wUiL-QUfXMHK_BP5REYq`NvH5)*@A`;~9#dkjSSVUQ|qTp6JDJ(M5AOA7;1_&3kM_f$^~UQK8?BC|otD!2Jne9-^<3D?geO zZnm)`Cn-&oJZzj-aPFcIb3U0Ivlfms?MrjQ!*vQoi(N6fT&K|6DEK`|7vIJVy%Cm3 zeF6=zPC(IOUg{2;^14XZ;*)i*8I!zdkm%dAkJE#7%?ySeXIM+>TEt5x>~?Zf^3slqA{XJP?Rw+tJMCO<&*JAYHBJ54H{&A&m39FI~F5V!b>YLt4b)%>1Uzu zT;1w)`c$b@mN~pQ)q>b;Qvel6b@Lj`)Sn1LB`@nOHnlTINAV>_Bwt+#L&N&orT*4ts$cA8aBr zkkF;Nb?uC($OzMBJY>u&exZ!vqyu@xbW!}(_-3^!(#G&0ojn_6rWh(LXXwK-Vu)Bp zG`D1Y3$d+ri)`a?XZ!#xo-lohXvDsSG&22=ct%7reUcU=86uYF%81yIoR*5a?!Frz zeDGnl=x=uH*kKG12lnlQ z@W=ES75$C#X7}D&krlF=HKTuE5ZHY%F#wa=l=>X254L{Qo+LF|$J`AL3_#}=jp@Tv zK-4W~|K*NUvBoGl$*Z4HYFfXJ(-=cMB7WhY;T`oiG@_IDxoK0nqP9lfQRq+U1j|Gt z&Rgr%sm-f^!oXV&K-Rm=1vlAPW!}DR8?bvTTGvm9jJoA`WV)0StcPYD{&YTTz>r@k zvmu0Y&&{M`MsQ7Bm)H%rGb~u&#I~p(nu1{JI7-WiTrGJ(wC8;?zELvt7R}8!;nwV% zOS)BeoZz2sGY>fLS0k{VCx4qsl76lHD)x0wi8u4y=9M|-s8t<;bt(CDxdN{745M6%I~kZu4AS0 z^GEKNXXE?^I#71bZ{x{tRzPQ(g%hU{ZLJYv7+%iltfst9EQx2lygX31W{i1Y8$nP? zX;@ZKW_>gBU36LbTF0*Mu=bDm)uHPtYhPI%H(3u_5AfH}u>9AeopnxmS+{ambyAqQ zLK=LnrGZlz&j~g4WB~~*BfG@t5M18B9X|eeG=c$Y>sv@b=u#5tB zZDd#{hP$#6`NuP~2E!Vyq@j-rO1Lk1$jZAoI*ny1Vc0On!R266R%ia7@32Lds;*CE=C3v)`UC_77(stB zc8Hm|ZTl1JavzZ|U2-7EeI2bNWd}QN-LNN!ct!qhN zreGpssbi|>E6iE<+lW5$;7&+LU^sx~*qyT!UJS426<3!FbL$D|xPe40Wt$?pmUt@9ZoO#Y;~p%3#vm8557g`b_BjoA!`*Ro|xla0=w z$rKtw;eu&jevuhaPvz~RfOxL3*kNJ@E5E>?K>fI7vc9YOov<(sH$=>0tjbgUHWE~J z?#nm%goZMHs}Yhl2A&GFO*a4N#wxe!5kce&r9Jx#4F4Q9a-Tpc4eyW+2MRS|BGL%? zQ4kdgvj9;9Lw>PA!`&HTk@GuDrhvS1$rrH6}HAHpK-x@>uT&M50Mla>g-p<=kC}G zSnV@1GSYm}y`Ew4h)iXD*BPV<=a@=_O47-TNP8d(g+h~-3Z|TLiG#EtBg2-QO#|HB zJf^%x1>4?oL=->DWz``CQch6XwV8C;w#FF#2&Kfx?F=(lM&*cuVZtQ0+EQAOS17MZ zK4VxPBYSKYov6bOAq|;a+rQNhn+tBXvG^yLVOW(6iUj#UJR+lhuULkJATK#`b9j|N z$OrRaryT1M5Mky%4jKl@`9VAcLUr$0wNTlZ@!Dn?-I+60yYcbyL8nfgP^V6viuqe* zy;0vcq+CARzIrK2*=9T_tDE@@`xQ^}ktbzY2SbA?44o8ej_uqh>Zj&ChPM;v1{ox-n@?9W=jH+Lp5#g_~BejTAD( z^Z^Y3~hkPBQ&)?DsXN+(WJA8)6gYRj%XlSOd(7)gK{b)?z)m^aHs>Rx20G{5 zd3hZ3-8>0hWAVJ%NMWd%h}HuPT2j&M&seKc*f%Uh;UDiav}Id(a$TTs>YE(zsn=vX zDx?8x(cG`$M`x5WItT}?`T<$>Y9VLSW`iv6&ScS8Yx)Z6QFF^ZyM2}uwS{A~A02=l zTev7Vi!@?m)7X7*!V}yf!b`KhG=82$hn}B!t&EP>QyHfDJNVV_isZ(v4M{9CFL$Po zRrcMxcbVNJ$|$~+n+q5GNJpGe@U7R$Aa@i_dEL-QM)d`gNAO+`I>Giaq2@#*vv9wO zGWLS8CZ9b-1utd)tW??Zj>)u&H&%bMji`=FH8L1^g7tN*pTj<69M7;#G3~vW1qanE#+VgqM&(lFf6zY7Ket{n2w>+G*u6ZXD2!l?9MbrL=GR{v!f`iZ|-3J>tZep9F z-qp>M)h~nxYwhr4XH~2`jW^UfQ%g8sn7kkN zGOCdgkPLpz5NKphbId#>e;)0Rr;nfXkd>4-_Ydb;o^id$y7#bO^OW;8?&j}z_LpIS zTq{vwPbrZ$lm~o>pp(h4TI+JQp@?!eyXPaaJjwiBZ&zOCpR&M?EuSPz_F(yb(mL2a$c{k*;VXg_bQW&T}8 zx?X-y#jf+%m8YyruD`Cub3WmEhPk?)^-Jj&=0Drl2DDbNia#VPi;!&Av&P z_{SWyY~BnCb#^8dN*2v3<5&ElvinhC(wueKzB3PtCw~L`M$$lwNF0buIB`^{4ljlj zaOBJ~(B~5V9c!i$At{j1pqDU zeIDc+mEE60etNo77~SsAg(HSEv9FwDg#1z(P1#pXF};Flp@q5PI5rG5~<ERTbG(pCth5Taxf;j2~EMaWnay9MRciyaSgFxgL85fPGyYYo5Omx z6R(Tfyq=GWib6A5nOlY@C!WLU-D&k{_3PI+8O>X>6@~0z)zKa{mYv9J*sBVfZ_j}O zeD&)TbnD)O3kZoP^5nnv9*aH+HE1Blw0g@Vf~o9|3$yM=4Hc*&GrO9p%H zZ}1}es2+9e)iw26zGhUdwed1r0n_auKxwjc}tVpOF>}U8-RIsSqJ~#g3Q8DP-WVn9&!v1n!x(NG`HTyW z#VdX`G}0n{iD>5Kht-9gEHkB&4=q$dbHdFx(KNJETD)i>4&*FC>85!!)~0byT64lj z&o@fiQX0FI?p)7y_8V!JOvOi#RV(s#~`%G*45zRr{@~WaX_n z+wkGTF?8rq1kzaZbYw!;va0<0&Y77R=JdSDt*?QL1Rc)1@BBQx-tZxoxB9Lxh?BgWA2ib#vo9- z7Uf;pNqJfeHI<#Wm7mq0XymK|~s|bje+l)o0dBa>~l9x9q0DlXJo5%Z&NNVa{k~IoTA7g39Yvgd4jrs8btdxBSIvdcsz(i>s_}y$MG7ZAN9dR z%J;6@gFMD@pMOeLe&)cK=rlsq|aurHa!@TfJ3B-+n}&vot(NE^GZM`0(QM_q~a^mr6)DHp7r-ZVx`*Thi!;3f#27MSULE&G$Gl?k5Hc~_bF`?af zH$2DCNOMl##x%ksjf$5{p%YUJ(y6QABU^kOqKnelZiD8oOAMW>3N*lEUe%lO59{o2 zis2m=LqkK(pV(G}a_v*EmywI@tER)2*@bPao#}sVNkoIrpfL<}99oa`X*7V*I5^i7 z>Lw#I6c;*;SgX4DXDWYdOt&xl-K;PAwz$$bq<92Ins&m0*%%s%pKPR`>5mlog=3a| z^$cUg>D{mo{HW(psunGZ{jkDH`viqLqp_%M)a^wb4)qh%-}p4_M@Ne!?t7{isdoPH9s0h-l zAidWRN+1b@04XFPy|@4O&3h9bF)Sc0kN7zyEV8^YB7d-R*aK)O{}B9i^zmniI1gmcQy=molo( znId$@k&~r+Z+iJL1s^%<-7WV%2TR(w&SPcoX$J{bi(nyhWDh4d{7zNln?XD^B37u2<8Z0CnA2xIdWa}E0!wmp>D)Fqt@K*!xG!tv_ z=GjI|*S8B9HEyP8qs6Dwg(hTHIpf;<_u)bys0kJ>TxjYuXwV=82M3$7?Vxl*6+PWI z6BoT8S*`W!*WWySRzexFd>W!6<~K5J-gNQJg%B-ey%Y|r$5mw7c9~5%ErPsSbTs!U zMx}4B5vbf7#Z8B;n77kmc{K2xbBtA=y9$5p>yUuIe}4x)vuDpmeqd7sGVDa@-p$;2 zTg|Xw*OG~)u$RfF1vgAcPqG#*jbB3s?;;c81OW}OH7@{DHf7=VYp+DprgTdyp}0FI z(GS}o3%njZXeG?FXip*XJ!nnr$M6chucJ$NE~=yFa^&$OPNbzkdJi%S0MZgQ-AlRI z;=}&t)v6mdZHmU&ao^*KC!R0@Wjn#22t+DF?hyaiKy)JIAMM`GR0!%j@Em+JdAbpB z`f(xT!9I6F6RSzP_U+L)yfuEFzuasfc>e)>5{b`y z-%iKHmt2BKr<>3dt5xl}yGM_n@M+i-KP^~;q=Pv)9(+V+K4fn9rDfxTF>`RyMHiz( zWMu7W-2X>4>D9ZpY3tU#Z15Y65_>U2 za(Xgknjdj;2&3CjP;#YF5GtqTre8OPqM_hXEWb8c{TQNi{j%Ti#pj>niN_yDczF0( zL0wWLyYBky@z$6b*cU)$P;P2CgdW!#ZzZL1D<~v7kIH3zO?!RF)BB%uJ9&@Yv@%l|g4q43w7R^OZfruR%4|unxc}*V->j>wBQ|Klw2f4^W_?-lHP7gW0#vv5GhkB zX|t@(pgXaDcPzem?NM~@-qR>doy6*$_M(Kbc;=9hMuyK^w__jHW>X+Wk1k$D7<)PC zBaorM=9|qQUxoozm`7PA`k!|%cQZ;*x@`f&W%V_iYM$IE+gsTHpH7&Af#;q_{-fh5 zd5@Ka<|qPJ#Y#7T`C)1e3)d>@q_iZSE6Ps}6w_v>fY znJW8ajssE(l!BT=Bv!pOC-=AJ6xF?NKgV3Oa5KFGQL)FH@&&E$jx9-{!xJ0gk}z-6 z9%6hg6(>~ zIQw3;cI(uwJI2plV%BuR=UDkT$r5~hys(FB@;Z&4G*1QowqI#}w4O%G7#Q6ei#TxSdi zyu+wG=2ZCcZc5tW_wvN`oa=+gE4Cp-UdYbNH&vB#|JjnH#Hw^~AH5-R{h-jOQu6xDi7g6`lz50Q+e`M$N1Z*mFa65dxc3ws-jWQ+cEJ1 z@2Mn>WfpUJR$t?d_<^${`T05KltLL0D8fd|E>vuxvL@-pn~JD1vM;02m*`3KA~wj2 z-xcn=oNJ9r?!STF+;Y7fH0bZ|=%en8j>d%g+;2`zKZp{pjUXl7=Ix9uONJ+Aj-v99 z2ls7#%zQA!Ga{X>D9`Qpt$x=8HkLI^I=lte!(M7f7&<*Ae z=TCF6KJUOc002M$NklJ4=c=O3ndAG=y(St*RvtW>HQ*5L z%J&_)4vwd|UUz-2&f8?a+oR4O={|dp>#=%XTaGu2f9ar;p}P5I7yc{p^pEl(x5ez(6}&*?75 zy*97o4Ch|XC-v(EA>%*>3Y-x}RKoEl89dngt;f}x$}k*{?aX;(#D@+Yip7f;*Od2! z&*?duFfX{^0#nwUi zwM5$91bp?)HwJ-AsJLJ~Z=EPUVxlBuJkfIg$g9!h*{oSJJoCt7*h`DhALd74568I* z4dlY(D1|bMnSlK$sM?lz0RR4W7Q(rKb;+f}X$9#BFK{N>b(Cr!^JO6*4;ZgK`V>}f zO~#CMvB)T<8-3zq=Y=B`CTt}b7xOn|<#xm$ti)Y+++h^SbdS5^V%r_wIvnr3@Di5B zq+-sRohTwc5_lgEK9g6*AeqKGx8HUf@o@;pZTaqgY}v9UJ|FoSmTcXN*=u4LR?p$C z@mTQD*igv)lU8g;8i%Dj@A!-9ufoKg>Bk-4sXUK7`^+==X7YS2TusjtoI9jAsSuo% zP98+_h+HYlnvUB?hCeH3KA*sPI7o}|ant9UrjHmg!YFEs2Hf>M+A&aq*qd*;#kA{_ z&pty^LIQj_ZdQ5+a10;@PF}T&Z)MzT@g)@{oL{*)Z^lXTt$X+E#fRTJyu4gXd?b)P z8}N}r{@r)oW$+n4Z7y;dzQFLU@$BMTJ^Uy%qhL||nxP}oRRu9J zJRGgV=PX@~pQlX6TW`KurEq&X`<3`h{T*#gKc2Uy`WwX#dXIRJe0^+OJSNXug8VX1 zcrm1r_;$5l;jc^|6D?7&Rw>JGVkX|rQ{jU1b1-Ak8mvwzz`b|=1)7iCUD01Si@&`1 z;){)9<-h*(E~0nDvBjhd(TtQb=q0skEM|VK4;3bvgk(IZDxVkeE6mHmm`O8`kOSO% z_g#iR)4M#K^m9CPaV&X-kBlHLx`+xaOdpN<4he}27sil`=G}{CL_fkwG6iB&$#KTc zSrr_!eW(btmhsu2ef>S$_@_UiXU|?ImA;Rq9j7D@`;{<|7qQ{Phnq)yGrzzYnjBorg8CNoJiVaE=Kd8i?#8KA+84Wy-pQG^q8z zqkMD9tv*z5i%(N3e!cS4^T^;@<%dOEa4@&P7(j@}J6ci}(T^X6)!P%(4DB^;9*Rqc zUq+)E2R`mfKep|yC`)+qUyopQTsmg1-fk2MrA&4-e1x%N30gZ&T@{0^$%VL^b9tE4 zsKDKEv9#abX)LvA%9q9)bKtOtjc5GA-@f4dL|Gj@trjl&j7s(NBGBbx6s?;;1t5n) zO!4|@G;pNxBNa8hsqmUK<0Je!Z6bzVFbqv8<8s$z->q3^-Fy=kEMA7x)Ff1FXUMB< zzrt_8t(>FEP`GrIk?U5_vtQw&FO1QF|9N-QOT{7-tsKwsg}mZ{c*M{89LrX%p**x3 z*P!(bEcO}hh>@k8P^V|<-SfwwJeFfC`&IGgUyU-a|G?YfNh8mKU*Bgq=53tMDjBk7 z62EVuaV(85s0dTMW+F=Rvk|>zi-DnO( zE?o3Ey|U74J`Hn<7)q>+;lVVS6|Vl-U=%Ry?}iWBJ?l$TzQ!G^+~JP2W7j{eTemXp ziP=tNaPoE~QM2j2Wd#jS*r(`~ws6H*v;HijvQOdSFBx9A9k1QSe6tveZjxC_C|X6? z`UyA~)Cy~|gK*A(bBtksjW5EDPRhvT=BqBnlyApl-x3-l< zH4{)w%;XKHl-_HL*8N0<`r*c_TLJL`6^HikO~kC(v&~+lHlxp$)T&i$)0Cv9gHX!# zMB%*mjORMZD+-r>iwYSq4Y-B4tRO~n3=gf)SVik5(s99+##3wV;?Y<${d-f6oy+Zb z=8iat&)1&n)~#C^vS|-M2Mk3k$HFI4p0^@Uu;gpwWwo-j(18&{F8g2jPlH?Gf{$tR zm18{C7B2jhioleawj6?lU5V&Gqhsy2DY@HtBktJ2Ap=bsHa2aD<65)0gi5{U*YSO5 zCAK@|pt-3@%jWQv(hJ9G?YSKKXND$8I;x#Jl;eMXJFG0`)Niu}bg66g-{z8@Xp`#` zY<+a@P%`ynIgLY`nv;LrbEa;0tS`0Zn7SkygF3f?zm#dXu5i@kf7HR`aJ^o=?)JCM zW6N~3=Wv{D-kOf~etXUSK2mwqsiPt#LYrY*LNfB5duygqhhRMFH?6)>sU)S;s2P>? z%zD%O+#d8CFbECm*EczTNAEmaV}I4+{Zu4X zK!V8j9Q;22;&bDT=!E$GV z8t-xQ$K&JTns;Iu(>)6KWwipwv@g7w?6A+Ih4z7%Zkpo`f2 zEW@mnM9(npFuj|1qHD}KC{1P<527J!M~}G0ShFV+e;+m1;B(Kt_Zh~`-G#qujNWlQ zT72Ae^UXN#{9#z|>s)OA?PvHiCZ{hg&xx7r2}Z4-w;>+SjhczuZoP$yQkR-?-I3`R6{uZG1{va0OhMGHf>h-9 z;6m@sp;#Bz99vSknZj#cQeI6N=! z9U(1R;ob)x!;0x+X&J;ZyD%FCE50EQl1=xx=NqqbB{7RAV9H0y-mUPYMOk^%NK9I} z10R0!Ii8_Xkvun^O=%!KnEdyhcM!Wbg#x4xkipPjfjx&CMVF!|@~*_Fj4p#qw#;;d zIid#!&9&vJ@n#N6jaq{DpT8f|<}JpDAAEqmXNjV=eaGj}6XlanK8f{fR%10o_>`va zMP#vwL@kXWo-i;WJQ(84K7py$dO56;+fXsw5G`mr=O?Tn~&)+`$k|=|+)-S$>C) zs_cqSPGK>=Td)bUR&OJ(^L~}*;xo{+6MCd=lfi`z*DU?^^{raov*h}4A zd4Ti`X-!W!tx%R4XTm;tHDt(KhHO+QBd;c%jG|B(*I6=d^la3YiZBd264KIm;QDRN zW(>dhBDW67XWy|rP+oBU1=zNEBi1kZmE#O$2#x7+R5%bH&-xCGDl+%8{ltOZgM@`w zV|jdOOz(FwD9K31nwWj&P518Ai;9|#(7LtY)t_(`Wbmo9VBHR6WgbMO!U?l~I548D zn_m6Ans(-Vo=eXi+o&)e#1KdkMsdo6M_+n4iCMc8AAR^C?!D)38eTO&;X2ip0u*`T zAOH9}zWsgzJ#OT}hl(u<0ad2`5w0P;8ntJi3MCfKKBe_K6{qAq$dlN3)oX&Hz{Z%f zWVvaQ49ztcy6f1ZKBd&UbvV~W7vjrtKOuJA5^k7MdIFwXTxxYFlufvs?1K| zd8c<@d3nbnq6)BZ9p~BQn7vsnA%dsad>$sx@Xiq7F3NQ25?=a;x3lBT3eaSIuieq*BnMyc6 zs-LrYUGvoRUHMvfZO>0nOkKGRshN4lh0CEb9lY?8EeVk7OSeJ25m2`dm+L3jWACBo z)%5LHTV2z=zdxtC2L=b>`Wr66FUz-aO_av>{rh}JI-@n03<>hM=A5^Fr^(i;b32DJ zuP!njM{y?q;UA)IM+x@Zq2Gt-L^)3EIfp-0AjnY5H^2|!okcsqsvU_mn4qDS_>yYb zkMvW0RQPP80m|f6J2B$2OVG?Ych_`}*Go*gpaD+;Bnhpryz)wP>qcS8DM%VXB#>-H z&E+zBa(Vadk?`Oo64A9EnsymrVk~;mg{lWFX3Duh^5oIKEzgsIiQW;9*Wdpf6BwFg zg)v`FEv1$BLDZ*?X1!NK+M}-Tw z)+653NLDOzF(n{#>mSjNRugTIl9q#S#{Yt6J{*G^X$g9=@DV*rNom=#WyX?M-p6D? zb}IU-20s1Q`!xS}ET&h6#C&>nNm`2^l72%}qYQ=%@Wt-3Tofkcp=((Hngr3k92J8c ziFfLL{%H`EC0`L;{H>2m!s`>3V&bCp+!TJ>C|y~LN9A>gR7ES!_Nm?y{Kn@c;paVz z@mcaL>ZudOg7c&kMGnb%M^H#X9SugB}N=H`mF0=@# zk04IimI4mLhcqR8rmx`~Q`DI0E*)Dhy(m4(;*n z4?iF}F#{1aT4^5WfuN3q;Z3*fa<%Ol*noT)H_y`I;Y*JL8D1e6KYaln`qvYd*m&lY?{Nf{X##=@yAlKxlm~a0v$C=f6BA>UqQ!HzYSj{JckV;Nwhd_ETZ{&g0~q3#uDBIj zo(eD82m(VRd*>vfIJh-_+Zc<#J@*D(#-?EOcVo^7KH`&;$zLAirn&ez@#B9q>Al*& z{QP{RlWwGBAf<7weJY6CZI8TwjuByK9oYjxrCC&9&!8*rZWKz(y+7R~GhBiXtB@VH z5wjOA$B3stHr4rpMkWe>>TZ0!7WdV82sJ1tC&yqex{(F6F#2u&e6zj@A$;$Ue8zmv%w&&7SIR*Q~XY;8&wMoWDyFjGKx4IO1hU-R@bdA4XU1;Q7_e!7 zK3@LlYfPOs!zgH8Mk5?U*AgPJJa-Lvk0P;L1I|rc_c@xVvC2_~!XnGl$zH9Mf8B_e$ILdHst^D3pKj?1@pt&Jp_!B=tx4aG z&ts?Jz8#~nxq>`RSSS+Kufe{#DTrth;=qSWQI6!mM@Bb?@X5y4^MubFCq9puO)_`k zb!x(;Q0wH}B+N=$g%5U2#IyUSBDIkxE^N{c@f)+SpI)?@H3~+9y8iGboj3;bL-U+N zmf(eAy0l*(pKN3a6Be#FGR)il{O2kK-;>#|oG<94A6(y~t*`4^a8H6`%n1!`&M;_A zuz>taX3{Q%5uYG`U(<)oeCO;}R+gY}0g@%$@*2G}Q0Ds$l^8p8UWuQL^<{;|bBP zC&yZ@u}o+dhUzJ&7mAYT>F{NkOD~3Pky7LS^lZHF*?7e5+<|v!sL+BT`A!#B$J*xO z%_oc$QtcDUNz$WcV(9hvqH%W_GIG<0a$GO+JH?x4ah+8Pe;Q*b)S51OQ8}uT{Eo-= zxrmP4gX_LtfXn*z#Dfn#R263HWWC4ZZPUrhulmc=XkkGpc%D6 z^4L0cf-rjYXomap!=OvAMo^2kC|p0;@W=k$FQM$4URdc3-<$k#c}5}?>E|1ayvYA( zt+qO9JMMexH4}wEhP7JjD7ho;sLpo0@ui{Hm!E!&;M|?)bJ@)ZYTKJM!4Q1Gjj7nu z6eSy{aKFtTRTvRZg(p<_tisjb(-6NMk^@@e*;hs)j(baQzy0=EGv0_d{`ljMkyPq~ z!OcCjh2Z-c8#WZ_mYRe_)vSF7WFx$V8ryaf)wf8^kQ1hX-%}2O*hk&HPg$Cm$F_g~f4s|x90P`4h^|8~=lyU1&ul%faAL&%#C5tn2o=-oT?Gxk{QF#iCF{20p1bZeQ9b@l zLrixVZ_KL7$&-=8HF)IHIB8pU0@qcG@JaG)?Dk1V!mMqS|JOy&b}h`>;Anlqv04)u zd1ChZSiCg$SKRpcUFdnyAhYf?n|lt%+VLXvE~>troG-RKdsM0VZvX64Tz|Xfwbxyb z!bnMqJ3+y9@bkEtXxqFVxW@5fe(&1L5(8GtIp*P@?hk^jxZz|L*C@92kew)sfy zvSkQA8Dq>^y91AXF#{Lhb|uca=0fgE9PY7KwLG?(9?GR>^FQx%wA)dJ{q8vHIOm$j z=C(D|@lctrXI;M^DTmIBc2X1fW88$_aA}|RXw{?vu{rWPx8=$RMf zLhoy@zKV#5h$GTnjS4|p6rC!CAb~6bt`k@X3Q-~9L1@{}DY_wq;Gjudi|v907_QtB6sxXtUaeA;MyH7^Q}zV-n!bMrBl7LyX- zxx2EII)m`gri#2!XyB0WK^xBn+)ViUqfcVg=rITq-EcweTa*pN%z5N3aW_z`?NX%>RR+Hgp!L_mWkNzK+kn`vHHV zveeV`?w|qVWNaF!-m=z~EBJBa#zA3ZA{k>|$+qW2aI?&bEl*|YoKfaT+lH}J=6EJ{ z0=`O|fpuB2NH5PrlRC}OXGb7rKJgP)(2J5E7d@pE)cJ8iDdCjrT*mP!>0mB4Qg}CU z*%sU}@<(jnlZ^M?eHVA#eUIC0<{k;3l%j)Jn;wJjcFn;g+}vO%0Hfl86h;JwF>Od$ibQ&`|;)MwRn!6T_UMKAO*yMPOl&*K4t1OTzmiHShIN>JtsYlM;`f?@kDVp;A0dz(&;&XJcsxx3D=r5 zX^dGjXX2%|-a~o?6|;Q<*#9Z4Z5Cm?brfx$M(=aYusPGijEVO>@Q_gk`sJ5jpfIj> zQ{Ij_wVi%6k7x<#nxy2CxF^w^vg4y%iOT|7R*ApPUw{|id>5$+vG8q00UEH~<5H|y_8Z2p-HQkQ^^{QtIurO<8kO?JHP>8&RjXDR#cs9bc-CEdm-c;1 zQ9-<_1o--{c|^RuaFIfgp1En+0(}1MIIjJIP)<)KUZ8i-&Vy;OD&a>Zl5}+6X@n`m^t0`t<>J{mIo0=Qu>i1kowlXef!LOD#x5a|Ni&C ztJd50UDQ@YEZteU(NQ!a1!R2}zaeE8jTLo*>X@TwXFJ0pJpJ;UST*(+_&2S`&9Yty zYUB{SA)r1a#N9COXG~ijjqCsOEw-&+g*O?3PvIcto%eWX`b=YIF|zd#E}|K&2{l)V zj?}+2Hmhx-p{S@$c;&MGgv)DzKLWAO7g459YShuFS* zALsQqjaS}Ng^%8$6ecyk-E`AUC!`Q$d3sm6k+bzG!m-Ui@w@#{9Y#cinj> zo_+2)6P~d8yRh%1wjG6!{=4EM52&%Z`!F|YHQw7f8BfHH#mdYL2&t%#e}r6&S3BK? zz9sGP0p%y(&RvW8b%_tl5I!=b(Rbk!Yw;O9oA|6FK6l``=U*@(pK3ckY=Ra$=5<+Y z^lN`%I+mqHo&?#_8kfzC5#Z<8 zVN`DVaO`wMhBZdV5MLU5MxZ2V2TFG=rNKoH^2v2j!q90RbwZ36lj3M9c4Y5Ens;No z@%033TDlbPz4spa^yzD=XUjfWbv@nXsQ&7I;+f^uXX=cZ9A`Yy`~1rhf?O1*?lz&G zDyTT7uyUUM^vc?*m)X3Rr$iqb5LZxPeDY7@@XwK>@YlaSggZHZ1#r!w(OI6( z9q*qh#(AIaHszXQ)l*!q+VUOOTk}4X+15R{_q9jRo=U;O)b`gyZMXGvoN*Lu z%7gPceE%U-d+ZJYF_=sVVtn-?9|k5rz{E04{kANHJ{;JDwB$MHjLt=ljd;h`;Q zEJ|#AJrQ2t*Q}wW_+svG6lY3xkc^>7;^J*WX+1M~4)z|%!e9RLFhbjr-{F0ZcX6mL zEXY|mdpuMxeY16Pe0M%jH<@Iw>Ic79zwF3V^=Wh4qq$2sm|GpsGUv>59l7jt?LB6^ zA#M2A;rK$@saIYHd1YSc(6kO3QejGau_mcdCVd)m(UJeO1})*<_797<;LRWA{P_>`wGjV9Il`)IDaVaf8aq}aKQy;a?zr+rbeA$_0HJs5(H~e-Gtr}x^(G6 z4b%@XecDvK_|kvygQ?XhTztWJv<#<9S#HuN@85?Rv*%XT_t8iGi4oWT$tZK#4O(}_ zN0XyEzTR< z9OfN52gB^LLhPbob7|^k%s#Llb7&0#dW`a^^hB6P9Wrhd%yGl*{jT?-SNB$!*Judd zXNaTw-(&1xroQx^+rDiFvoV)`FoPZ-C}40__Kv^Yj@$oohY?bV8LZ8Wo2pzhJ_WRL z+=t}{wh$j$*5_;o3ieR48-}}@T!o%xEfML{9KAbq$JMV4!sxc0@!$Wxi;pKS1=%?a z84!W`q`6FvQS(;sHZBYGtY^8&ecPXJcPy&(Y|>+G?OU$6n8}x&OJ1b*<{!X1DoD*u zU5C+`>wuD6^zvwl2fYTOPs8?z45r7Af^zs!un^I<4c>U;b#(3&iFb(4hrcXx;?u?m z%d@DEIem3J**!;kmI`)%=DgNPi%zE6j8FCY={>5x^2(-pNt@e70g>aU7%u&3!%2&3 zDQIfE*1RR}eO)?r#DCv?4VIB?!3x{`<`W{;RLP!bA7pXG-c40(9+r9)g>VM^0fG zHb-y4Hf~TWT}5SzyD5MjHf)&NYyg>xAK^p%fp`*)3EG&~xLU}KG6|UV{uMH=ZJRb` z!*ujlUz$=zTyqsd{5_GIx(DkwzKb~OZYw=RLD8Le-DN_kiBG8Q@i;4w&&$G^5{Ajut*oKKTS%(^JrM&p(f`^GBG%uA{PgqXxmq&C0~O z6^js?oMq1c^`QrG$DL;uAMxP+w79Vb28UXIwQWwLAa@m@qKlOJ#m9@E zQvcF5@vTyP`S!c9m@wfddaHdKpYjou4d9Z?=b&NZX2{OV$I2y(k+476Jp3Pj|GQD> zkY^wXja&sJN3PwOzv7BdA(b~uIj0H>(Tp(C#+dq(un~UxeF?pE?VuNE3!O{0!G#JHjm#dxZrFz|eu2t2`)E;e4H1co0#;AMUMoitKEZ zf|62GFmH=vwH(|u)NSw)-6$ElV?R-n7pa}u3 zpaTMmyx>>ig~*PP=-;6S*S?+b;m4oi0b1@V^&vJL+P0_BV<6HqDN9(l4+qQ@aD(j6 zMwXz>!`d!Ou>DF^x8sQBBD)sUJY{828b9q?P<)W?RsVVO%{RDK?ue0;zkNJq2^zAj z^C?ScP_Hhsa`Grk*hQ5FM|$R|r*IoL5VeL>a(%ud$Eo|Q8hadMa7rFzF%*yU_!CcH z9mDJ1eAA8i;*sld)dd65yw?>B&rAi6q-ch&;l?UG=Oga`J&yLJXP|EIpy$Y)8&_h? z+F$U-TW{m>#~w3Ae3mb(YQrh1{i!e1zVEBKUh?w~FyUB!_+=_?X%L3GG-4|*qas7| z4kmPU`MxN4(9?nk*Q!30*TnCN!xyXeQ(1ZjUVlv<5ic|qwq>6B+Mn7d=-sN1i5D74 z`IGp?=?q1GZg4)jb!bg2QuxO)n2HKst$M&KjG@EQcEP(S3x%l(m^oz{ZvNLRi0s@2 z4?Xl(!yB9}*oZfjQlfaCbIuuH)>`*G^CCPmZ@~>uzmGcfd{~^ajV?D+P)TDQ~^X^(BXgpa2Z#`Z1ex{p=-k zP*k@C`VAaJZ4icZ;@ni3O(P!mD=!){d53j@S9uBY5~A?il!>_fLB|?Zbfa+0XTx|S zj7sR0R@jVu{Z+H4wR+ob9IRM@9xdv@heihS5H6$1@_n0$Pbxrz3(tIp7W3c+KEoC+ z-?$l1UHP=ewPwrbivC2{-vwFu~ zJU`}F>|;o+$KHMlVI9Iz$^2U9>)A>ky4iepp5PCu+z>o-U2C0VOOE{JUR$`i(X_Ox zh(o`e|+?hi+V*OxQ?HZ z&8X^jkIJ^$gt#U)(FrMdf9eYSFnwWHIJW=V^n7ImZ@qFW*sLDy@{zV7!=$yYyZ- ze9(pP3TCHit~?Q>TIWrMkx6tx7Gw(&=MD%z<^1{Z$OQC^JoLKMO;E3XifSMI>W zA5X%SS6ogfI=35{qN7jSdK~_64_;I<0BXZeg2&IOu_*V=r#k7mQW6lOyKC1jtX;d- zSYM0jmDiJr(`S>}ZEHMG$g_yT3AAiU_o@WUodkHtf}`4`O$Gf)QA&b44V2nQ*s&u9 zn>KF5?t}z>-)SuBq);W7y22%#u{pa_sY*g|O;p0hzSCoQc5TUHNYwdmB^Z~mL4r(S zAS}eF2p?^_NOM_9%0lbbt;4o$+YlQUkEobfWOGxcOS=eTZP<>k(zS^xSL6~{xPxaP zSH?gBUNQCB91tVEYgatmLHC~AJdkikf^gd=;dCT?WIZeEhix%Ckd&2&?(OLXBC0@Vx)Cl-nlvT7(R%?m zbL-a&qJmIcBb@5fx33u&MQ^pWUme0nwR8;jC0y7gaPhn8;7-g3uM}%r8+l5#5gUt(>St+3lV}PhI2uI|>CP0kFnm&DCnV6#{Dvmh!6j2IXr*B>;`hN|t`s zlZMjLGY~?rWt+Eb!H(E?4Cvhh?MQ3AX~Cz(xW%V>9nL5q{~tfx^*!jlu3fXnczKhD z1#R4~T)7fO3}xD@C#_pKzxM6dmrBUp-756K@w{FsyKIlyZg{eYhzP@r=zb|Sh-clg zV+Z2mcOfP=4*T~eGRj7CbmBOvFfBR?pU}`2=8>-09#0)=OI~e0YhzwKsuWzrb7)); z|1O?2JUrasBi>~5=FL$5mq#UikKMD6*IT1=yS5As*akg%^fZb<+PGG#wb*FFs5Wk^ zuEIjRmo|8$7$s%x=2X1Mp$8m!X;fbk4i+Dcm%>M5sKJMx6W0+R@ntdO&$f_(;G^j*d3#z;-N4Yo4Axdm4P)ZOxeumSsI}H; zN7~W4r&sS@hzO4`*1>j-U<#;(AL?G}W_pjJ9ko^cOCF?b+vCY+N%2K}OPkJ8T-Ewd zI0`SViFB{}(|WE6W8=8q*|r@U$)h!D6k>RJ%~u_{LEW!kf790lh48h!p?=rKWb3E4 zY8|XUjVI!>L_fkrV~Q|n(69lD3b}de#K+Q)D?Z{~)heLNCAIW(Hto}GY|GzyuTwjPUQG*eQ@ zPDjOqI$?OW+4<;M9)^&7KSZ`^hfvP(n)hrQQ>YlVYUL_KZ;3`pX*ue0Gi}bV3n=LK zMfWb93@<1zsFCD(G=|qkeC&GAwn^_w>*U?s`Vp4*0y&}-hqZK;& zv_zMXHi&2%h8%7rrg8n-IwBl)EvWt>S;D%tYdH4AVJl?`jkzugrR*w-eXBml^A6;9 zI#ba_UQ0BFDb+@NYN}WDwV*cOHMR&t%_|zS#ly)vq`XOp4~ih4thJ!>Xl`4-ew~@i zW639Ph~7%sN*fxDbaKiPno^F?hx1i$!!y-X2c0`rN$=s`3~BP}E3X=bfP3z_$MCSH z>iyVqCAWO^(SKp-(q&W>yM=#ul0JIFj~<6Bb}oZQZZbT(UJ3+;ATv7$zs;MC|9M9l%^YUSJ5~6ciE>3l+ARGW!wEnBr-8WUmiy3S$Z+^F6tg^eOIfOL z%R=NOMq_PWLwf3%frWGC;7KZ4Jw{w4mpEH+(OfUSM(YXjL+W!nUUbn#)Cg~lQBOU9 zp^Zz>s7+V+cO3?AdS#VEu5v0t$8B1T?>~DBBY#|kRuOG6ZuBS&9x~)iywX4X%$nY# zFcI&kHK)d-{Yeb7?B#9N5L#=Is9)GGXgk&~N; z1#@Q7TkAWBr82a<9Ltl5ltgNJ<{xgrX}(d|h(>hO`apAWIM-KNmyV&Qet8PGb#PnU z@z-ICxsm8eZ;Az*=Aew;UJ4=xWAVBz3=j4WHf`BP&&H3K@y1<46Kamu zJf!uO)|ujY#XDxl&JHOh062)1ol zi_bs)2$x?m9Q6yRw3@IIfjzH61w)-z(3fxG?l?^N;d}i1wULJE=gysri!Z*oiibSS zUEvQsuBP`WY*JHF8I6Qqi^=au-XpoS)~FwS`Wb%wejNVu@Ld@3=eyCiQ+H!9=gmH) z5Nm}DbLrLPa_lYk!Blz-f9}PXO})m@E53|av@WaZnSZGAC*h`=c;qZ9%5TZujfLDV z`R2eXDheiW;p~B?G?J#u6K?bEg*HCT5F40@bAvjf9V01hjoFIFZ+y_y=(*c2!gYhX zFx*jnjy0ZU4wv^A{bl47U@pUiJ^aZOllOtQpTMANFJ=@r-$M#7=1L78j>V2yrT*G7zA5;v=Y{K;-+wO6o z5Mw|3h93JS;=!v1;fBH8(79C;LYm#*K5S6}-<#Wy)Q>_L9o5vM zPO4u4kYAUwFh;E@GSchD-b&r@H;d8v5;dHh0XwOlbRDaAC{%z1zWNgrtMgL)5k8^;(TFTY zWX&j?T32|R_X1X2wtG?u_q{pwWVBfM4qlqpkiBP|PL-F!JMPmibnDzB2I zY5htq&cyc21k6uekJl;qMNuO9)#-w+^;#p3?q4@%??PO08g8UzRSDVDDQRo)SgWh? zOqW{_LgBD11f+Ruldvfw{p=$)SzH)|adRPrn_dB|yQQz{^|1Gz>7xTn)xyp)K(drw zG8s04*0JN$*JDpnl4caN;LNkXq5xfj+vA_DhvU-b{o#3#-Y+PmYeWT>c5U04_PV|w z(V{kAM2`o!0N3{j_A6};itdzL^P3a3;G-s{RvQL!Is34J0`Uo{E3r(1U!M@%Q@<~| z`$wR8Nj(G?`=SBecDLZhY@^1FkV?fwZA3{i(QatEw%6h#D}Mq6>}b^=RR%`9q81+D_+x^ku63qIb;!mM>9%aK%Ms7fVn? zrJ?;)l#!q|A|k>l>Wa=a7u!_*K6}2lAJvC#zt`9xA*0%;{;x4Xm}neSe^z^4+o^js zXA~6`QjsW`^pl1TR6>^GjO*NL=l9x-h1#VtQAzJsO4i~Xv{n)?rhXuPO~N$cBR)&` zSo*06AC)Pk7%8+1M=3w3f2m*Tw~{NK=EQ0Gu+J6WD8ZGK&lQT{ND4uE*Y+MM{fK5X zX9^pQ9m1z6%aB!*erpra_7AJY&Qkf7U814CAzU|V+r!5B&2?7@F6Z%f>RSd8p|Y05bvt-Sahd; zb-M6TyY#NKF4X$a8jP41TEj<8JiR=8?xE4chKv|YPhO4j8OwR6H?FJK9Ss5-(o+yE z; zewT{|Ty{*D$5Bs9lM$JiUqB*UVHD}pW{T_S%OdYG&M|R3G3fW@3NNvE#RLT)b zQ_vxxEiUtmM4L(~^pw{}i#mvOBOLt~@nqJ#97oRQ)146FLvwV>Ll z@zt&cHFs(3)>=^G&oQl)S$^BLZOBJ9F>{pzmeY@m+Wz8;FX9z$l*>cNJ*QY9$Q5_t zHQ}e9j5kf4@6xp!`cUbxWn~8Hpa7ZmJ7U-VR7{%iqq$9n7f(La=6KC0e!C3+=yq?SL3P1S%n(axGFwIN6GsG=vhkRRLqVTjQZvqyv?wD zO2aO_9FhL{2yf98#f>AeWA|RnrAHvGN7bjEfBrcmn-&k`ZrG^4nv=x~YEBU@;(s+( zYcEab!?{l&+;;EU&5(=}=*9P0gG-lQ{m{EB`xIrrb*b!-v}rNoHm||7D0xIILl-KA zJVnoKS6q3e+x080DTIsqiumEJRP^>IooMb>KhhdZ*R)R8{3RpwpMLrgk3HrXZ+g;8 zWdCdLNBhW*C@(GH+)rgz8mVktyV_v)2^C|mr&nyPE8LA{)Bvp;L?@cV72-VgK&tWT zCmgg-q_BDFXHvS;x?suT#a#cti#c=Wai=;IBL=ob0DeG$zx&{FH0yN{Qu1kl9kmfN zXU#I$+=r@<3LUuG9E)G*f@zpdJVOybgQa9><;-wo(Is26-_WFR>a z2Q-7(|NPJ**EO46^xAXPuQNM`%)^S-Z|>wJ!0WYJCuUD#DyS6GuVoZ723CIGgfn=ez7?~RW z4kL@|QEs+{nHKSbw^=x){6p4+o|D+U=xD1xeKv@ORI>62CvSQQDk3)7MS0k?U=_Z2 z{cDs`4%FkJ0f-0-K?{!0P2&rZ9Gi;h`0ZF0#{!vNAYY^CHX5srB^iYv*NjrcDdIqQ zx|1CgMdX^u^;?6jj{2=XrP{QJJ{cJ4rKj-4YNJicFA{j#wyJ!!UrFt@44;H}n#?02 z9M+#!uxay|8{Fi>zE8DTOo*6!;UHm)&WQ%Zph(zY@v)ewiT1m&(Vu>c(JSFbLU@G3 z>e%9GpH-WnQJqw0y+bjrVmQRC>K#iPUrfAy3kNYL62gRshZ_Nk#YX~SOFvo!SWH~; z(dK|KR9-EdwD7TXWAmSEd{jR%l9MJ)GVbc9PMwOYufE#U?|(h3I%A@C$ht9>)}JfW zwqkP1D*TqUlA~q_{@G+GI)$`1ia=|4Z33B=t^uKVs_iu>r2E3hV#Z@=-Eh3$^Fg$& z)BLb!tKF{k(1wF(M_zA)qbq){`OJkg_)*jQ5Zd`_gX-ceQDzF(jLtuj;p=e=B&>_#@%A@@nBM zVV&CNijOR9G*Z%KVI}oV;jx=XzE^$rO^SEAf z$M0&7Xi~h0`o9E5nsckuY4vuiKS;pep+h7$$%0MOtLJe?JkQ(n&w%n$f0>v^dNc?FQImc9wdCUZPl~v zcU{*yN&QgtCpuFZhOZYs&WhDmd@MG?LWT}%t7t~Fqj5&{R=cEVpmqrtVWD>~UR2k^ zIqukvdHWu0xw@`?EB;1C6~e~|@15AxR$Od5)Lyk!G^4&FK1`b#9{g8S>==_oJL1Je zQ(8Y-S`lt)yT)vL&Xh}{5MQRY3n$T;lKP?Y+rFi9rvo27Lwu*k7r3Jd;Ia_v{@tHMTWLE&qY$;0gS9((>w9jowhsgrtsdT};3 z9*n~xV(?}fH;ju9qLV+vGl#1>QlM?9ZYrN7mrN>~i)}dm|_HEnESY*8l*!EPt1D>$Y68#7tdEL@l zS;-YYbK(qtRDW0cZP$Y0WwjR67^L~yD(`BX)?BV}LSw0ve>8_Fzc$Q-mDbADX+ll4 z*yy|HM}NI~_M)e$LozGZJj!=ElG=SH6oM@N;xD&v--gwz*U1)y7lX z?CDeBLr()kFBpbF+(49Ld3Cwu?t!02>5L+#NzLv$za6q@%nr>&uf+Ew&QyKLD~ zOr7RXa8Z4F^zBd2WSueO+(9_^+;h=^bf-D&Y{2CpJ#ysGE0p*i@pr;ONpq6;B%N1M z9}>+hS-KqS=m~M-%H>q!aHI>)ABrKg4j(dji1Fqv#Z4u5!bkj|)>#@uHSWk8uXvhr zdVrT~N&JE^(OO+03N=>Qq_JuvJ&Z10x)jUkEhwH|G-IP;c)5Tc$|BgOF2oReOByt2 z5JOzI)uirL*l10m^@7G?;UYd*>vGLIT7wBEVITt@;S?V3Fdi1B+c{RRUd@o0E0$v} z6+9%Mv5#wT3EtNIN;i$aTEg!nOFa<;$^j`3g+^`6uITOV94i5TV_=_rOs0sX-iXbdTk& zYdbC$JM|m!(;6qWCK7$99oiexT0-ANPvQfVN3(Oj~45!S5Vhb<%!0!)fbO2HP~6lPfpr2+Xso*F^kB=avs^j- zWZupJeObJ0|ms!(~}0)xp~+dL+1q>w_)r0ZCD>2 z%L&~fL!(<-wCd3j-FtUJ$KG8K(VevB#HPZ?-l#ods^ZdK{Z_K4>~C|@{%~Bh>sOoA zWI2Wp^GK8LP&tQVri+eTj<8pb=hh=#NXaFK-K8$Q-l&dr>}WhGm3mXLhgeBrD4Vap z($5P;c?C$^8i$y*n-R4(nzTb2%;SynLC`4z=XHrhSJF)TzFpBQyd^y^S$a}gPJXCaPKj5i>jkrI#(y+}!cOn(jNW=q$KC~DAo+U6L% zbiWtlxd#v*DU+4dql|`1PpR?yu_0yy#x;zibt-Qx;J7~WH(+C3Tz*x53?WaWu+)b| zC^>QytFG`>9G+C|GckbM300H124Wqx2$g#=)yZBzytZe-FTQXwahiav5{zrBT-z;7 zl(ZPI??_Cc^0?-6y}!197qhQFG4jGe?Ghs*A*f9jAIp5%^E%pgOB=PU%%LgoRDICZSAq!MLtle8kLXK`4QZ z@=4HRuiHH4#7X|pbHy}C8(PfNk&-4AHBB2pX0qZKXOuZ;-MA@ZCuXKlLpgn=QRXE6@F+u=z|eato4XIOgEHH(XIvdQMNzt6x0zYuj9(W$8rt=zML&$JW;#weZmflNK@(v}l~sIHEo(1qfe` zFIl{<1)#=fEnu|iWbu&zM)+tfiHL|eOc_Wxnddl$swzAz{aCzgU0iYfzwfmR0oQk= zcdmu7#&gY0XX|^kZ59tA9#n0$=Um^8J!i%rUQplY)~(xNLL!^T^*(p_F8)B{g7^xJ z3*sGwhj=Qx*&`mrcu#QhC9Z9C{ciCQkE<|PmUnT@Q`<06`!)7Uc)E4lR@AFo&nWeX zFB1kD%XCe&q4wyy@XLPrEVfCc8+xF{zDHvIPRe4>nSHJgk|JM7H@X+$) zs+;PnIYi1Fq7N$=v)43_XdNfvnZB!U=zj4T1|#BT1=^NAT-#-_(G*fboW&pOUb{J8 zoA5cT-ugj<drGM|D>Fg_-KD^O{rDk3>IKX~VWz`E-wdyV8Uylpi*qehWjW0krCF`;%&?^TI>tMO&gP{Z>B`4toD8L)R@nwoKR7 zS$tHU{)CGZ@^mz`RtvGQ^|w5d+8_bF-lys=`Vk(A5id)5wZ#=5-EVn#m7y_5W&DnQ zNEEJ=q0JFtqCep(nz8uVI-Sa+o-0L2^#Rq@CL?5I=Qnk660$XVSVa$?KhneJ@~m|< zovVj?L(at&o$f(caC74gXJ+D3j7nRIK0)pAWB12!e)HZ~nz9)q6Q|?u^F&ECzM@{(118OWipsqX+jqg)dV0G4Nu6f$v{s!GiD?v!e zPr=F#@X_zuhL7e8y(^u7^$7rp4J&qYK;RP{59kLgcN8ntv{`>{RR^Y)(FaJ28!buB3VUTZ;(x$2i%_vyRl za>=K(Q7E3qb**gh;l`m|3tIlrw$VOEzlDR6!G)M9WQ3Ay9&_UVgAcV?cxW8&)vGso z;~u#A=9}rM=vA(>4jQAzyKleM;H~-2m5;2A^mHPxOmmOgq>X3EZ>_9TJfk)?1`HU0 zJMX#+?@}fqp2`}CN?vMtD?Q&Gaj|vQQRAujx!jyw(@yc#`coejy@*y^`{b_{;4&a)?B*B6`R`L*Mx!o)J`c2ODRF?BmK6X*`)Mh#wKo@%D_b9l6Xa% zgr)k66n;cI_t5Lt4l0L8uGfM*kH$7#7d{pb`yOl=wee`{s5OMvWNNeIbsDqvzJ-zA zz2&RbH>7ASnzFp0#&c~HcH>(7CXP44L~DJ~*qwLY#qmb_1a;kNys@~bEut5-U-Oju zg3f9F60fTyK3U_9=BrlhJ8HMisSJ%by=l;?aMZWmb{j^%`Gzr~mLYW*ag{QrFcmML zWS?t()aDOPyNZk;4^iq{>PMm-eOI!)x8`Ll)6qH6itG3x+PePw>oI)zaKjHs5iNj` zT*AT}hCb>~c6_qf*#1>p;SnuZ8jw6(W2h9PL_1O(6HREm(RiWnI;Zu!t}CgX8jCJu z2*-1&6qQFskF2b0Dx*<}fqPCJIz*Z=T=`wG6fS29o0`@SDKxU!Oplq`OZp&dt zBCn*^Y7ajodX!=x|IYP`z&ZZy(7b6V+IlrXU;zy${WxzCgTeqR<8g~mUSP~ZQZz^9 zg}M!c(er`<=rEugDsxNFx+ECA3NkV1-ir`apY&3%4*Y`@0mva&6Q)w|FdP5+aaeLN z+TtReEcapGT+bf5?NH7`=c<2m?W*7;ah1^Nlpub(WZMO248=vQG%&R&VvV)J1Uw} z!Kxu~;dt&(k3i~+ilAir6u;YARf>k3O{v1fo~VA_Jo-?6U3S#6X4IUwA3E4)@m;&# zp%M))hjKC`mm}^dd|Rq zge!;Vv%jjrX-^+IS`c-{WF{iQhf`3f4{z#q3ky#w*afFiw#jYRT;fwen-KwO2gS{?n zqyQs^#!lpJ0g1DdsIHbsC4kW4PK<{bTQMYRldfBQLF zF`TlJ`}yae&HL3e?K^R0N;IkH{YgA@fEJ9h{#=y05pPiNTT!@!BV{{05lU;uW_{7Q zVOtbZ;b&R$CVa4aIyUBQ$NiyKQW5Av3~baHIi&@7JL>Vv~(|Rp(QO1JSe=DHBbs95E2L^KvpLq zaW-NnPU3x$*2i z_aVDP_ei38K@)+)=f_a^6#NNNPy7rVK{o2h*Pqbm32g~>S8M!rY|mz!U$fT!e(7)7 zlEx*rzrWM&X?euHeQ2Xy*09?Cdd+X!<@49s+{)_pyYoRb1=U>v2$As($F_3eH4*_|DaXy&c6w>Mv6SFHMNTi?9K7F22Z&yJ(E zcl#bYD5u*DDHY3Ct+3|V&B17<9^?mKl3-+GOe23rO4;=A>ygS##xurOG_E50AX^FQ zK;~fhAYU1y%s;%4!SRHg!Fb*(0|?oS5yKas$R3;uBxDE%5_1>N8XJbb%F2aTHa)Vh zbCvnky{SV1pQ}9xjQI&?!Y^w-GG{U8!u!089Su)^&iGEJ+e{UR5AoCdjY_GjoHI8xB%refkHCpg0Ae5s5M#&2d5+p9)_EWUCHG7`rTjz{RT za@EQVpD=$QU+W9xA7~D}G2q;Yn@aSdzdrJjj|7nDOIGv1vBi%$#CZmXD>URD&(LL| zC(k)&JQ3JKLf5A*=Z$bP#~+@r}S152XqGJO=yM;fS14>9Rl5*bMA8_ zQ8tVR(df8-l!a#S9nX?==R%U_(409L-kAz=$N9nWurw=?ZPyC|-qw){+k)XZPE8LjGKfn$DR!L@{sR9T8_)jp$E`1d8 z@WH3;M_S?YKUm>&u)|)gk3z0n{YQ4`-1BX*Rs`DDbI@+yahH8`=S}ju)!HXkyv=@N zi2`2g7TJS`p0?L-{(@aFW4Zm|s;g~YRbxhGOMYx0&$ZPT`N?y~Ri*+)(Wf9 zDmaX{XSZz)^D?#$^2o~;mX;J`n;Z@*+yn^ns}pIWIcteWR!Y#qkO_U+p<^kEzplAJEt$3n_ZMjpl- z^R(N7%v1QJni`uzP=?!rd^ExfR<{Lt`HsAHTM+uVEy%NCY~?V@8Swvu6a0bvCo!)< zKYr*^(AHldI*EL)aK7^Ur}L5dnbkY64R}$V^hY^u;5Yb=A0H+?rmcJ29}4cLGhMtd z@q?r1qW55T!3XHfj8Xhi_-Md6nVdf4Lnp%SNUmJrwBhLOB+E~gbL0_xKtDr+Rt0^n zRS*y~a2p&N;CH|dK-Yy{tlGv4dh#Vxa$LDT9leq*i=j_4oi4nC&I}EhgOJbA3p|nC z=uhwf;{zUHEIs+;li}P0VZb>_m!!Nw&!!F!DtG#v4z$4*=RFBHU|%?n@DgK*RbF^b zzw@qz1RV(!Lgz`&={}y&p`jx`=*J4@vvdyKNg*F9s^~velJ`{-9=9pzYvd;M;T*Ub zL+}*50^bnGgX|6dU(NaC$KT<}>B=?Z5P5SzV{o}-Hs_w4hEs_)4x1ktJIEY(1b+tn zK@br7FLMz0nUgp|8+04w4Pz=>-X!T#T_wMWew69$?Fn>-$2^^C+6-%7tQ&&myISn7 zw#V&z`sn`V!&>dBzt;b=ryJ+!Kp!VMn#~=>1`j0)UQI zYsGlQlr?FElfGI7HpJ?27!~m!f*8`sU^zatJiFCk$@-ffsbp&uCj7{P&j+0H8#((h8bEB zxJNe0g6TFu0EmKP$Ty&TfWa@5M7t1p65km1ER$(?nOu2t-HVFzWQZ0g=hGei5AT_j zjcvie{dk%902eRM^dlguOl}74QXPV(Iz$%&f2QkYFRLa&6Tio~u!?ck$8MEXRyC)_ z8s}--_=P6|eS2n#w&FARiohy;_LS+11loB|1yTtUwKCSU?yn7ACN;ZXi^Tru&Yz+?0=ITwm6 zlNXL0CMlHNLd%_Ms)gV#0Ri3^IVc-Uz~IjhJWyCX;rxX@;E1A92%hA@pm6$}G9F^E zGTABlSYl7iHoa)DgY^n`a% zcp4iE=eN-C82=!;N~XcNdI`o!{+V2)=y_GrtiU)X=OY_Pl9_4Q|2lf8A; zMfUQQZ?xxWWt(O7i|p9(e&Y+#>!1CueedAU?21`0vTr}{uk6?6oojO{8m#a5fPL|~ zAJ`Z6-eMnH`TO>&#V;_0%|(-zH&!4n9#BzW_L5~wI)0spItR69cKZ%{uua>dwQ9-E zK%Y8$+pHJZ)ob2v%bJ$h;r?#>@vaT__j`UUr+AJ1%gVRetCn11%d}NmOy=-K-X48< z%nNTE4DguqXUPzlpo)@oahUs04BED?eYR1nNZqEdKficTj$bVce_6wM_NkTcw)Jz* zvNcU-SX0>y>+S5e-Ouf^eXT8ep`x!tQcG>VWKhxwW-KyBoIW@oPN&3pbJ_&OO4qz> zX6%C#vc=^M{f~S>b}%+Eka2#qMI-Z3I-L$O+GP)Pp#D93_6E7^{F7m>0tt1h##Mpf z{VH1)1)QId;RJX37eHCrPWwwAJ2*)ED>LS0$A2^g(P{W%YVF#!!D%^K{;BpHhafMc z!5K#wjt}}8{E-iypbsyBa9S5aAEzri4NG`KALbpu@AXdBF;~01_+mv4oM7mi;0xY3 zgxnzweQ**XFQE_mx6>!dBhUvq3Vl)|@Q=emy=+AWO$e}@D#>wTF1YHds{$?1KXIml zKXgc?Q&wIU1-Ovk=MbKwwa3A|-*|O!LTX}Fk@?|@;fF^tiPaUrRa~z0+VaNl0;63oqmv}}w+9!Aq{)ueo z{AKdhRm%IoM8X*jKY#~g3R{kGg)IkfkemmQoh)ZRch1}}Zm7e@Ao-vb^}#=d(#Ol; z^mh7qfDzA5Wpe&uOyH14j_^_|x*uul9(;)78s4G5(MRVmSSZ>g=%f2iA6|MvZ}_KN zG#rT&&;yZq)QhZVRmhR@PXxWt1?lU`Dy=@JKK8`ds!tx?W_K!><8KJ&=-DEZW~E)b z@RfGyyz}im1+>hso@K3C3G{mk1p0%m-&S{ZkH6io6;QkN(M;_s`{<(o zWiQbdV6$d4*)#3C?8fasv#)7IoR`kLz`nEQ1Hn#i)^h(O#vA?5OC96}^5b+$NqbPl z37~h#kFZ6nB;7AR!nd@w_?<`Ymn}TU-ZuL}dxbsO-7({3r8H6g-n%FE}!% zC+B;I!SQvvaG$)q+;{zmJf6?Xoi0c8MaCLq5d5J934Mtl$?1~|$K*Y92wrM)Owucv zCsa5^{y2;rku?M;^70(rh2RVDMm`a+0WH7-nZtc_NbD?hyL>5$H*Mh0qAYdzGmd_q zub#=epKFc)KXgC*bnrVgLI$Jr12=sQeViu1%6+aGCmgfuP2%f);PM6@JRRhXuWpVV z0gqs3pi844BO9O@J{)|M1Ob6F^l;ochn{}zeVn{@+CW42aw^IjV04)Mh@Axfj2UbS znW2ohX$Qd0HOC{ zbK-Ate-}IfFCkmN3Ec<0pa=KhFJw+G{QRENfn!QK6DeEXgqxH2CukHgpE#U{`@8Ik zBirmJEgS6%ZTH)ru5BWY-icVH9n#id`?T@of|_P~UE?xaSCzIk19Ppiw$291v`~Zg zemYvI03L8q@P|cTK;{B&0^{uK;0sG}zRVY|8aUtb#*rLqgZ`L3325fXx zet$arw%<)=9Xj`?UN}VigzCZ*ktsR?Gyes0Wv|8u+c;?}FoIYJ@*zN@Z-(Y4y&kIR zJQ1%HG~Ed3IKdRIU*;&9aSg;VDWXR7*Fk3`B~pi05}K}8y}Z{taV(UG;0RCSKU4ys z{GgjZi(&UmKSsCxp||KyPd;Yq%YHqJuRYjSS@d;1; zCg)N9%*pUa;db6Xo|g=XYNOlw8&2W}83qEkX;vlPsXKUF!9T3{BOhq3f_W6YGyS;y zSrWIb`ctOWf~Xi?W96hMN!Jm9pbxZ!R+$u`lezRq$bFK_n_=TAlY8Wo5D)~>DU7ml z{q@&t|Ht)VnMD_FBUe%Sr%Y7G390%eP0*De1~>{`_Jleb+Bgb*LO)e~G#ZTA&w&#q z7Nx_DAe3AbmTUvY>BCC}jDzgw*>xwc;bR;Vr-nY!zy=-Lh>iu8}GT}#usSp`y8aIgqm*& z_OO=n{-J_7z7)RxY`2#*Txi#=dY4_?yw+A}#hcl3U@{l+mFSnY{m?$W=SGE2rtNwy z_x*~+&$o2#{2-@UJ?Fc7?zIm+`(=B}yqAZi;p@so8~tN)DKv>xA+c0j5yc9vK4-q5 zsH$D~H^8c<`T8?_9V_~TV3z}O{2uSNOY7I!bt~UxFPf(%^%@r0;bWcl`K14;8|NmKtpeXR9v5o?hT47;^R$Jh?J6)j*bEyY{pyx7g6_Tij z{9~DG3aP))JV8?sEWiyZoIdC! z0bkL|pXY;*eB>dRg0?4HuTR3|uz&|IG2m(B3A!c@SKve6Bp-YLU%)rek!yI3>l4i< zg58siJN3c?@L-@%q5K1V1dG!r3G-y01G6XSgWQSivGTw_@C0;7(g=D$L++!aK?C%5 zwsat6XcY60)5q%?ZFG^(Wjt++mfzto#nJ5@wuJB1mQ{xi9_RhU_!!tjyf86yw*~#;S z`@8gE%q6z8Hkz;C8|po<|3Da@$Rz?g;DM>0l5|Ph$*hv}^ZoK8wCbaf1NZ60Lx;Vj zalQS^>i62kbL2;8P{2!tUTE}bwYgn;ZP(stJ3jb-kyhhM+B!}jY(eI|nWE2lZRN?b zd2;b~E?W>?gO{i7V{+XC*@XSeM={77bew#)GJ!zuOE_KlCm(+YzRLG-67Rc=fwtQf zRDS;X=UY={Q}AI;A{dj_6uKpR29J@L!*V633(q(wAHU@NT;-4Ke6nxK?jYn!6ii-6Z3aUqkz-t^$e5&@p$Yv! zqe80~v8oM$KUE5HsX3xR6a{Y_s}ZjHmWfw`1jDfEO}VzfBA8>ER(?4enVw-)oGPvK zL%>J-JOyP^ZysPpmZ)J4F-h1OoH9|$oD5YG74i(jkDeXeGRbdpgY#hzGr3Ma8Olp= z3bZNHc3_o9wQ7+9TBxN)tJoY9o!I`WeJ+_I-l%I=;H~J=K2IMCYL%PNERS`svX8O~ zF4L+?q=0L5It;WVZ8$$66O~uUBG2#?9y(6`(2v8j4nsY=NLJQxNj2olsxG>W{)Yb5 zAC6U8?FX6=1Qhx+B1zaPtg~6Xpz9ghYOYqlPOT($v@Ti!Xb{|Fo3r9pxqk2({1<|z zl5nY!NTwuj0$vP}XfalKGfewN!MOI?Ywa_i`HWq3(M7{sn}jRS;pHzzINRE+)}MU>iN_=gt;&^*~M z6Ujdad<|!-5FPvliROavbz}JYvt^^cZj|$`dyCDfU1J{(Uw^K%GiRo3fxiB%jJGv= zwrj6_d*_{Y?T+t?xV`qLskhqemR@dWH7cH20WX1v)bBq(w8h@@)D5;yOT)i^&FgI` zUjpi%3(BH#jpS?5#R@F|Z2TvMK2dwnXTP=td+hMDc6W=m1dEqCpIN)wu3hx1@OA7t z`ucUTqPN=zdhL$AKetajcaz=U@sPc?`K9&;%jE#o7HLgdHlO5eP(OwuD?88^7~$~X zc+y1iQ6LG7qeL72<#4C^{;4B7ZG*o4{I*^g+|{8M2IaHtcV=B^zrOl+>|A{{ytHnf z&6qANOlhEB%jxfLvE4GLySuw=*34PK2x816m3sKc>4OuFF`G)Irqm1CfKb*ShuixB z8G~G4B@PVyF5%4T4aglF2^{Hr#~lNZd^mM6c%TbLVm|sH$DDttFYpiDRO~n@Hh&i0 zr_&{U#1C2T{dGFQ53CM1a}+DQ;4E+l)ai!HNbvfLeVmMA!4J8?{5sY3vLp@A`B~Kn zxN%Cm<2e@&$QE>S^cQ}`rc*|rguF>Q6~PDD=Z-U+iasa0vnZQB@IEp%Ngp2{)JI?l zv?+#v%2Xdb=W@JQx|S+G^9Rl^<_P8mR#gFC=8beZ9c(dR#0g8n3CXq3BhZoGf(7%3 zfy8qhl+X;FmH7vn6_ThQC-1Y*KC7)4U-(cGIqV>~FV!!>-Y)Ij=qAGOM1( z3P@wK2a|nSN}43=%Fsvs62`LVb4*`~@=?e}woKDUGhg7Nnf}9edDD9P=T(0gf`HC! zTxv}fGi;}v{a=3OR(s#JZ%L?h*tKW8+FqZ!+|F)H1v{Cx;2m(mKe1i54l*Z|ifkQ! zmV{|4oI72BCG>;n!U%}A7T+2^3c*f3(Y?uHf`!C2drX-jrGCABn2OvL^wji>HF^+Eu+n*!) zn2&p82tg>wWXkcJAgH7*NE;;QA8f%S|4bx)6J58{ZKB&Lw0?9*^a=ccq{)y!g~C>< zeDEkiA-v>g)lm3xq~tt~KFAh6=oaW-r(0r9=ff(-82U20qw7X)cYqUq9CUD2$3*YR zmz*x--?Vv?opt6}McE(u>Mhy*SoYE1E&E!+)`aM}&|yF;BLF`%Ai?M8M*YY7ZSK5i zwMgzGqg_s8OCYP@8R%C?Lg!)?R(PzCV248LEM*?-OvVBF7&a<_Py}+&@7SfxKkz;F zB{CTqPSAq$i}L_-p0ci2778Q!I34Guc@WB4UM)rPpKMrFCI}}@$ z`Gg}Q-6&sjx{#kSMW7zCI4ETktmljb6MpFAJPv)3v)~V1 z;3H%X_qpZ={@Cb@Ex(5@1l_P3Nz?(~!B>pELK1DVRUPu|Y;Aq$6>j2*aPjG^&ZV^@w6(_CV{qJ7qewwU9HuC&Td*}OY{z9?qHoY?bq%C z3U=viIBv(}(m7rpQ&(yrK?)T|PgrA{whfaAX1lE6)IS*uf=Spas#8?Ux3$(oIdrajVjnO~Y<`V=Yei47M-CUnmfnp_~X`&s$bnq0QQytz3^3;m|Iz(5t;X4`6 z7}y~I9E=#Au^)y71bHp7pj)B&q42m*B8)41l^UIQ$9KeSOr(Y8|lg3yQjtc5X zr=u@*rz(w@fL&o>LSzp~pJ?H+Y`ER%1viv1rw{r3*=Y2l3`(=phhUV6#AE z)(v*|5x)MMDf(P&FJ1ZDcJAyImYy-+W{5sGiSO2)ub`V?G&ffw!YF!Bz3xu3)xJloq@2`JjyY8ZWLPNolKNt8oQ zGKUnBoGyKRN9~Cxo(L}|nR_NP0Rw!G&Iw&`w&Q3R6w@_E_ih!llL8P z0yAR zNW4Hv>WJZH3I0Sny7RR#9oE)PJMFH6kK4cZ+-rwc9I%G|>Gt6> zuCNzsOE5lqm{&d1e1%g$dA56>-L&&A`;+ZAMIVNw-(;`XN~miU5W}|6B)112&{wd( z^YjgNS>w6(u9a8Y{Hkb`jj`H;(B1nsG*qHL^wbH_1Gqx{@tlh7`?Q?+*uS4_+hAQi za^hF7uxl6mx>kl|1yp?$QrjHxX62x7>4TZSd+tViwBu2G!`zqJJJP?dU?IIQjqPOm zf&aAOwhlbQDgtf`7K2|lAC`z5!>XYT{zdj+^r%B0!EDzS(f7*!{g$>C533}V)!XmP zeu2Go#T(>DSYv0@&XFG>UVB}296WqTAEWIFFBF;gSIT}tUi+BxM!k<2f7m+N^znRS zIeOh=DVwiMvQGMrYjhpvC|+`56CxYXUl`x`RgurhanAE2?Xm@T582Atcf7FAwgrJB z$v@2L@K44T%m?Uca6gQXDFi2TBf14!oBy&V=62>|##t_2%f{Q~6Li52JstRtG0EhI zd}q8c_P`fin}j~VFIOTEKb4AnwYi@AJ*NwL#?mvQ6=eL`WFC|9$lJvhB6yzu1-|_U z_J0j5ae`^^rhL&vxfyj1zM`&Ia+}fIXgan zl^6H{`hW-W8Xc8D75W{y$`PF57j!jn<{orp>~QVL<-f~%j>V*myb*t%>IA;bOU%#M z70hD2nBTMK{#-cwxMIvAZ)kfm6S`rn4rZE# z4}hQk!tNpHE3n?4elZ%%0j>`k!ahSjvdBb=|ujQP31lA#Ep@;JZ_bEpZ89atv292^4_u+xs z+QP>a^}4MI-%WH1nz9%s`A%uy(L?s=p=ZMG8=q=>P|Me}nMRK-)rvqn6biIkA7iYl znQyOXS`qAtGpgrU{jmxg9FRS!2#wxy?OMW?U|No4kfSqXptnpgEo4Vf2wO!JlvEBg zjg?PAEJLCgr>=vM&6}d$=vmZ4@;tgT{4dW*A)jBw*W8p97oPhcf>T1v!g0o-;|lVT zZ*-wnW~q~%D)XBlD1u$UwOp&(R2~y;6r{m5tA4UA)NyTp767Iyx>}b653zk1fkeXs zIzY@*08$sgz`1_?+GdL_r3g9-km^r3dKr$AapA5Wgwy0RGRJL1bj+10SsT2Si&)?HUz-H zHzBEfppTx#k0aiQulydDf!`#W*m^6@6jzdU$P|k2C$CQ;SfXr(2=TqdHC0d)zJ;!w zu#FsnKdcJHu}XnFYzamX&p@Suq(Tr>+>a_-raaYJIf${;s~|D>3%sZ_pf7GPp#5+b^pNd~26 zEVM?MVZwtxV<|t8TTecVtemJggh;F%cHB}3bB z1P@@QA35@}3xx~iEHXZ#FUgaNq?dL2;CO;QC@ik%2e@+xF6SSV7Wl{MQwUg&d@Z~C77!;_ydTeVsfNS9sFbh(!DezyX9&bH;+ z@`^3Nl0uD$W>$gu+;g|sf46>1UpQWBUp@cN>?I4HXA7#L2<;&SNbP9ln9n_Pvwf@e zR{P{xAG9mxUl8gePb`iLAyFoePzY%(WiypzodjhkrjM_9BWYl}y4vi){ZHBtS{|^k z?!R3$?6#LQy;$_QCeUYD{ld)Gu~hj)$9DV1wma-&JHIYk*4f9jb=Ys7@giGUx7f-> z^C6`wLW2HaOtG>9$}vVb<7=uUmj%EX{sFImL)dic<=Ec6d%~AU$QoYCF~0H}$k9tY=!0PZeSH2Is`b>K zCHWXSkuaJu2zkLxzakru9~jNZ28^LxMlUZ9aYpgQ2yy^JmzRi18I{DA_L#Gre|TX% zUiy@BTqR+his#Vp-h1z}Z+zn$cHMQ?g|WwYEVT@tNZegE<7B}2cOIO`HYc-g`U71B z2L}#0=EY>`Mpm%6$cL3b^( zXwlh`kIXITX5fmfJny{of}TYmp$GAdmt@%qy6o67oId2qH)eehGFiuH=S~}B zD?i3EcoH0jPRYDUAHz4m!+6QyEPCo9G{K7@%0(~b=jnE&D`fI!0m8gBoPY307M6h7 zWe(@1OhFO|C4zt|v;x|IJX;<8J@%YFdieRFr}U-j2HVhipS*|j?BcFwd*J2=>>u9x zX?xpwzm-|x)8T15)?v46CDe~T_Z{2Xez(1O!5i&&(^rNMLy`e6kPy3bYfr2F-R2wQ zLDVWatN+N(YB(cQHC6P^(9>~$Lw8?Uxa;^)dzOzvTA#45@4LtDIr3u>aK62z`Ni52 z?Dh7%*=rO8G{+jsqZff}xqZ+6C+zdGlW*AfU$(g61@^^rKVmOkz=t8T0?v^{26OeV z{xjbAN*-G$l}b%1TM&Sq&m+1-aO-ub?djfc4{7V{Tea1}7qOEE_S>a1Um8|Pdg0u2 zY+3yxYt~oJNiJrER92*gD85^rBMP%7Ol&N5=jqk`O~a4Ii^^3nDv! zn``7EfCTwu*Q1nCeG5Fh8gu$v8na;A>!h zfv;JWx1uuoXqtTFN7rM{gLj}0@kT91W5g`--Xq>C-RRHxHflo8~T-TEeszy<5=#}(oqv-bT1_2 zmFl8w(;fxY$Su;DwPlzd$B7zAURwYoem4Ak*v+Br;kMT@R8M?|eBdRK)6f>loepi? zL?A}k21~FK$io&`B!V)4r@Au==;&BLK!-kb)BO-25}pcoWnwEVXhV<)TSj@=P?7#5 zK@89YME!2GMU40v{f9d`49v}Ko48MLBm>Y4OXdOm@aLH1`oN!hX)sN!^#}Ud=rIc3i1b5nZ92^$PpnPEf@PilJF!VgR z;L4`YSop`=Ov06`tzzy07xk61y_Y76qsRMgQ^!_&`tVk}@4(~sx$eg`Gj>a`EwO*D zf3sb6(UsO%-Jm53>w^*!+KPo-_whcvujL8*zP@(+)c!l{(uT9`hwDFQXE(33`3n9} z2waps29Us-UbXi{EtCGS?ccP2S@V8-$MRQN?R0%{l4oKm1UJAbMGDo#^a)ddz-M)z zP3_xlQ`;6fIG?oZSSd-)&DYJo)V_btU)l1RTF$$s(PqiH>071&%cF;%v)gvwYuE0T zlUR}6|8LbF+ocOGutjzHT1NPia^Z}!jDif$!JjC$Bk@_NsL(&-n2)l@1x;>~BmWl% zw%8MGo9$ai9zU;+7!Eu6|F5Cf|jRRwlIksf-HM@avTr&?K z=XhB}{}I?nzv5&XZ9Mb!RG?2he-sOb(_^CPgI-2L|H2uDQyE7XG7EeQ%)U2S5115Y)h2z>fsI$(u~n4=s0y=Wx=I7y4)COP0xXPCYog=^OaR z9p$<5j`tpIVRzyz1SjkWVCFtQWZvvqv%{7Lv^7n(hU4Rbx#;sa0^z5T@TI<9&ELpV z=+Ar%-Mzj-aUnlEO~&{NPkaAZ@K=g|42B%GkFuVlh_Wo+f*vy;kZ-EjKQFB6p*Q}j1{&MH#qXY>bn zGQOY>&%oXLhojSnc@_G=Z{%SPiEKhqGLP;`S;htSC&5O@onq-j-?^ik`o^2EKlqPb zR<5m_iPb;c-)&DG+GbB5de%0yKV>&`DX?F*;(KQQn*I41ud&6A3+$fT?z9K~`#){* zn;WBGpqT#-9P6~7?)kY^zxj!Mv;BU1_xxAd+t0nm(v6FQ{Rq4nnj?RGn7M%r#!{~0@P&T5;N_(&o{ zn;2_&4jlmb#(3iAvc6ctl!9N9ZARlEri~tGBN^MQ6{I$cE)VI0nU5clo!sAIubTOM z`|jC)YAc(T+Dy@9R@HDjnL0Z{M$RBZm?t?;+JZ?Kx|DyPY-Qv*iMbj2jARQ!H`kHyB|w{!`Vx`= z{^~ru*k=x)A4wze?de7?<}~yycov>2H2D}{-g`>hvCNfD4lZg9i@1$>l>u2ZT&#zNXB5B*6X6S@fSKmF9xVau$0<8;yQVOOJHh5c(zMK=K@17*CWPOLAC{Ii&2m$5Q8LWe6ObrhnkcR#o7~ z`yy;S=*2Z~@k=J=b)SQ`9fZ|(HL9#66GS^QM5(@$>k0D2Ywb{m`J-k7f8?sdE>qd z-~ea%hp`18Fy4GjQ3vw|Ww7IsH{^%D$$6H1&O@{jv!+&!sDWx%~-i>)kDe(8^ZYCV7`O&27=Uxyu{Y*o$VKX>(^Z zTYcpWtEs6cFY? zK*z-L3ZA#jH+ z!JrdCQqI%UrM88YfJBD@(WAdw0k1l;>Jve9nUrWdj4ROx-k~q}kxrshC=)-7vXu01 z&VV2U{;5n5;Uq$wN`OkxHux|BF^S_GWWpG0!s*D~yYuJIvx(jks}LCB7nCL@U?wXZ z-PM|KnQXzC=cDmdl0K9hEq^|^peqU^lexbH%9pp8`_v15M~<|IfF~TVC|lsik!P;B zdf##cFL2>SoGbKw$NIuGc;fsmls+hRQG4IBU$U!bKi{rSU1s(AdJ_0b zB0t73;{?eW+GlEGR*5QUJJxQS4{x`hwLNNox$kGvMm7Zcynp_S!-_ZOH?OkA)y-M! z-Dv+>mAhl#L-xLBzGeG6?zcD0e~rC;*(>cu`YO@`V}|H*GQb!Jd=Uzt!L#sOsgn0Z zq4fbL|LGg=pH8jrw6$Ze-LK%N8?=?&U59_F>Z2epL^q_&mlRqpe;r>4&Wf;$2-1GX46wf^2un}9ebbt^rwRZ^N;`dkAo5F z{WKXcl%fsiv0}%4DcYXMIv78^NSRT0a-c{t?c!|M*RszREnF0wo5hr!sJx7SbRl#U z&T)#Mm*6ZaG~slCJ~*MqlLCF@+(M3wIuW%{?YdRghjOQ6TS9V)r{!k+> zAE6I=6?NbM;&~zT@$umNQ%IR4Za)5Lce@K2`#CEdBEp_kSWI>bPeWV>fz^f&yjW1Tj1jOjGB3* z4C-4|G^{S@fgXTk5FU43ooaYdO3L7xn7f#Zc^S(K4d?>C(3reVyHGgCA83Ic2z@9+ z8Vh}(3H`HA2ybXn%Xg zYqe$Cd0N6>tFP#zknFUryVbt8`yPAWb6=J5(_tT2@;ZCdvX|L9E&CryYfLP+lZV61 z*X0BRAty?v%Vz^v#B~@$0uj1+{~W}RaAc>p#D2{FX7A6eyYpUoWS84}=3iki*2=%@ zX0OtgVB*z8JB}~%#%)35vfF|jz5Yb8lTML!!4_<49HLK5%abw}dt-Q46k9sLkDNe% z1J0x^=(a1e4SAEq6&m}s&vW3&%Xsn=P{Gmjj0Bkb5}bcZ=}Q=?-N|_7@?2x~S6sdG7yo?9mY(93G zggk*h=-ueq$mv}4foI?q@*u0QWyg}xmylV`M`Nj@*fPKkj`S^oTEHHHZltszNBMaI zPjqaaQ;r`gn|_|3BYBt;s283Yt4zj*etD@ynM=CU3+$lOb<>Y+$dTuMxZke$WZ}fWOng^E&S62l#5?34-tlY95K#$&bH- zx>=cv@li|yo=Dy#wXtGqC@wE}!8gzYo=4s=kMIN6s;cThqwMkGbmH9?t1B@^kR|xg zbIBW*!_CdJL!OcNYa|SyXGH&TDt~b!0S}#rI#ngB0d4KvYxijT+^_Gu&whGH@7y#l zW|qygIa(2Dzdjt_rT24}H>|V^XRfl94NGixRil+j_6+pP3OPDpeKH!Vv_)81u#Xhr zLtLGndq6@qe&q^SIIh5kPMKk08?o#Rqg)dV(#uv-O4)5-2ZX?gxDMV6dh#=#4<$zJ+t zSF!p_#~j)B@sP*~pW`L@l}ua#*KsIGjtu!1Hl)xjPJ?bBL5Q3+Ba;GW^FUI?L z6RXUiIG#8$Hw?V&0X5$G3oY;bLNE|tDxy%L+!3Yg$`eWl$@Au_+v$TMSStE3sT24z zRvz+l95GygF><0Q2qspXP!!-*$1NLIc$sG?UEB4-$Ccj|%ZJm)%jcpE_fTY@G5muP zGnPaf)WJ(RjH+T%7=iIP#OSP;Ue2m=)}^l-S)Op?;Vt%q0}tEHtahWXKYyd)T)T4N zU)qJU&a_ptm)dPxZn4iO|9}F0NGSJZ)8#%^KoNm5x9xqkjA&2-&@fF}h`D1mwtWxU=MHYr(n$yHl7@BmPpdv) z7tcN0R-?SiAs(v_3cQYt$k;;Z zgOdlj9{4AfDjEMc{R6=N1O9m5tbg8myY|{^gTw4CZ+T0YBTolfz*8jVpF&?AoDSWJ zQ-QCf851e-_jnWYD*<$KwKCaMNbnXfe~<%wWeASQP2`;Or1xzuc)LZP{h|;3PT5Gp zZ%-|53wWjJin;ixCO zOfDFa(Y#O}FaOXcI%Y2CRIYYMy63ntU(oM355WgGIfqW@=Omv8rpd7N-wMU>|U%uXXO>&L;tlVh*>bZp)D7Ja z3b#7Fh`~V*ualgYICokA54IO`FZ>5hc!5JXj--5a2@my$@*aTXHi|zh=14ohPG2xr z)6Zi~tjI$GPgVg!C#kEe54Hzzrkn}t9b>?3#pyN+_y58Na5 zrPGIgFU6Oq(1+kHhZ|T6O;KM;JBx=1a04H>L3{t`#C0*~)P#+%d_%a>8g)cJt{9ut zfioNWz(4fgP?@+vGH0bEea6c__!7V|!ZWL(JeRK1^O!Bc;DZ6_=LB;+)4AIo&_^Nv zb?6~`yi3c~S1ho1&bq`dYkrru?n>FBn&z;AE6%h2K?SJF7U=2g4J}R6SCu<@+w9xh z@3ar>xJd)0(>|R3gYaR<*^Mc!m@2yy-cjx(|G4Y%_Lhxy%`;!MtLI!{Z(Vk!)s;nZ zJefB%G=@K;@ocinXr9zx{SR%&UCC-mo7;EThStaJi>>$BFFGHW5ME&KnR~fiKL3Mu z&aCCOL|cMYvAUAdplIrj`a}I)_7mavuUl`ndk#NjuUDD3r(a>uZ$8UrYV{y>V6e%P zb~1H1-1PHy*@EzCIvv?M{)~LZregRdS-0~}axAc_@N->zWhXynH@Dnx-{!@Jdim8e zFSM)DAGZsdSKD%J3D!^+e_k1Ijcg|BA)xi}k;v9z9z||2pBHNj@`93=MX9B!jE+Dhg6Ll}#$XF#D`N|mihqFbS1CUQ(ATg{7^~SY zIP;g9+E19bSiy!P_Q+WE75u1dr8X54^EdN4M}qAcqs))!3jA^hh^r3$AO;)hMzde89{BVsuhF!!*eBhLgEBr#= zqo=Y}7Cb;c;O0n5!p%Ld@eT4J4ECa{JmdJ%|6Y#3CwKsRg2cE=@=Gq*(FLFneh=)3LX+3qsBQb$hTX3V zEnjRt`VpDJ*zgsJJO~;-7)josw-8(fe()XR%I$QgXEr>@8|Gek#`9+98SR?7S<#6! z9{S|cmk(*>)L$IgW_PqaY@cg;z*@U^*mP|NwsP8RJ5(`X2Nfuku9UMrIW3}=4$OxM2vzQrbn+?0^G?zJSJ$QPAjw!xX?2* zn#=NAsmapOIe{G0HQcF#l~Q`OEt05{$QapnelN1?{Be|T=w7m1Tt5fh<_W<$)mrU_ zt-n~&hm}_dv>|{cY*j`k{ia8vb;!4=dzC%f>YbHngd@Q&{nce5NF(GWKV=h%TUGJ) zS_HftCCErOGua?~Xos6fx%krS2+t$j!&Xu8E8a|b&o|1ECi0aD&BqVvYqmdQwIpCI zQvgeuwu_rCJL;$cUixNeVGngpfHa9(ZV< zRfpJmtYdyz;8$?v{zydwym{&z&+XuOaDjzzCF&A`ntMz(lbvW2;}xR;M_E3hJ=t)L zr9EhfqK6X9#Ka_)RPe@9CuMjk44uO2K&POOfPwZ=M(H13Frh?p1m{9uI5~Z&2So_} z!`K@S-vN&+R47Ho)CD|_8$8I@uydN{1YX1`gMx;F!1zE3A$ghXbMJTZp-_TXppP<+ zg+4g+#=}3*0V5N|lCL-mp-UM3DhG}pz|*U*KX>&W)YqTS*-sBXW}iLuptOuOTV1=_ z{$lZK?V?#{*{XUi(XC*Pa?L7L(-rw2(-j(#sEc5k4O-st3tMlsZ?^r|p5M6MzINV+ z?IrV{XY;F~84+cOwv&PpxVhKTcf|hn>F?NMUEAy%=e^%9kz+KZthS*)xW#_d`jCBYzk*%*_uGZ_=h-Kgzr!w`v)0yVl_a(V^CjTDFIY;MrP7~l z-)7(3@e}*Ioi~bD_4W@d-eLc1$*>XBVp3D4IA5#!Z1a)rcBfW#x?T?P13g=$NiDJu&3mc7iapoPo4F!v z4d)JVssvO1C%3gimSS*YKr!BZ$Z;H`+5LBN4O8O|gpOD`+@@=MFfX^Zwc5f33j_ZE6Tj^I$+F3F>H!Ysc*c~^tI0fto&yhd zhQ9!(?n2?94a$?KgK+0(Qjkq_~M4L(a6kCtCO`q|?4!r0$c+&CUm?hd$_c zl=pg|C*^81R-EIKWhj?SP9I=lECjinXfK&}v~$``rBWdqaEz9Qbn)oL4LW(pK#%S2 zK41?WddhxyaHHMG)=mofe`WnTd;79?+xl5+v@+0qYb>udy`oT%i(V+oM)FjyI#Nqg z_Odr#ZMXG5VV`;Ee*2MD6ng#Km)kqiziuy(y+m0O?PuGP^e^;!QmfN`bn^{XRaR$z zqK`vX%vccek3>s{p`c>{lb_QkYEuRDpVg9fbhX&e4{WyYw>)V7eMrGBC;IK`#*6Gd zXMMn)*SsbKyEMf(0*ePd5p30Wd_c5)+P=8;hxUbiKd@ypR@xWN`H)??=pwBs8@)89 zUE0hwO1Ka2ZkMgY7{}H@M86vvs^?Ja8IT#&0DGRUAZ`f(fJJ6AQNqsDt-`n$h*jVt)Xms>)`HsL(AF(neDHo3U%8qoOI-v{W z9+=TvIdY9{Nk3%t=C~rqjd_`}@G|oiwB*A^o3p5L$iNWD#3?XO>}p=7t=c?vl) zma&H!pM{L)Ty^H6C-cF~L__J*dFc9uS%m{+Zjcl54pKmnZL;{pOY6a+*tN7#-E6zKXk!ac%D^RjkYKwIH$LP_M_&ad_!fkiexTN%E67e zA?QJ%6MV_GXO%tL(q60f98>U5kG9~NF1MPmYD6$lGO^+f&!7=?3|5`c%1U}y*?3Zm zQL)fw{EUOjvZ_v4*+;|)HXu2ZOh>>lIX-Sf@!EU*Fhd+Ze{1lJQ(-MFfR~73xgQLm`Q4~6KLWL!RgAjN*KPt1QVZ* zi3yv;pCXP^yCiQjXVb2iauN$rWt+C!J1bB9j?3h2ThEJAF`qI7cxlr0hsI zQr_u{y3A-MQ25KeWlde&8W{ zs%MjC--Y(hruBCDob!VMvOo^X+UZ)}Uu981`W30H&GF;_h`s{QqMLzSk7#9>Zz$m9 zdG^Dnm-&s%3_&s-M1j;+)R zN}iB)hkT=Vn!;EucFcJ1AbgDr(rtQ33PGV5%~2?$8I^qH`$H*?vGbVs?6vy( zbCt15Qk_Y1zr zZb?{y1&08JApM2h;W;?r+{Q`ZFT8WXn5++)@UndGp1pQVDF~5HO`tW5VK|!y2)vN5@d+)VNF1ch%z&H{R&SN+% zwr}4ievATuM=CRwpMei^A!CcL@d|Mg6oLoHfWc;6ooHZ!W#e=S$#s zS~-2_dvtT;e=+o-9+q5&KBeFvp96w3xuQ5nK4sDA=p%UV$tRx-&NKR*04eT6oBD>) z>t+6+F4vo#UXekejLRfk$#cHUE|fmW{(x_gJJ1w9MjygB99x0Wa{J^7Aj5f^66Q1F}v3@0OeFp{}RxtLMHyteO+$8=gN| zw%GIRw!M6YK58oD(UD-67PbVFo%^$vjrNKC_liC{?aUcx+g~kxy|#NkFMPQ>PanQS zA9zrkoUSpQ-KX=kR$Kbkjyvtoc51aG+2DV*{B8E?C6|T|N));n%0wj1k0BtV-(DsDg&~l$`?0ig~>iPEW=8Nqm^WJ6WYL%oj zX3Wj3l0>~het=?J7xyx@PHYP%ZJk_vOqpB>-o#es#Uu1VA8=T6w~^KSX?>Y*e4i?$c!>xv z=9^be64`Ht9W9%zG|H{Rraf_!~hO#RF~@HBLQC;2cHe6hQ*ml+qxfaLf9ZxS?vzj#hP zj4NbDDwVQyI$aPCP#5xsp94qfQ&p-#{1o)wIW7mQw_9*nB9~c|t z_r6Hd-s^GyKJtcf>F>{ydGnoPhoEC1JN+Z7e0g)-cOJzb4;;WtUzaLjXSu#Xo!|yf z(8e%%lVuM$ZP1%oNeI4~ul`5g6ylFV#-V>JAWoCjLx%$ z3fZfw0ehlPtFUSy1UPD>PKK386tr?Q1aqK$>X9Btqfh5CP=3uNK@S9iuw7QSRum$z zgEAz~pQ#|aoqQ7R1Y1pI2(oEk7}b%~}aE$2`)u6w$9bbe#&fFlk>N={QRvRLyBy3qFK%;z_8WQD)>f))l z3*6ya4V9}tuAxKCVa0UlUI#%hTK$MsZ@AB@IL9GU04##e>!^@>piWzZd5}xTe932M z8Z~j!-*8`5Pz&`}cd^oruLc!mcitI-IIboG!|-YYM5>sr-w5&=)XF_3dV4*gEw3UR zg_Hg{l$>W0V@sFd4Bym>CiLAvmFOW`kX4Fdn4Z~D|A)Gr7+#ICaLTx-JE$`awC*{q zCImz2Va!*VHsg~-@o=Z2HwykbRu=`WaZ{y3@?(4%a2YD^oaj$WcN`WFM71~x5x(OQ zhGPXU5Lpu?hNmk`2-edv0Y63ylRb_Gob08-g%=_?D^UiR=t@=ZNOXoD;0u&caAVR$ zc|oyZvMZKfa3Z5*q1c|G{;rWiTnap>1G+nXfGxXThZQ_fj<|-77z`L7wNlhjCQu5v zUj~k&1S_%Rev&>YkK>|`V1qv3!Fa%6$i`!&{>pv^jwn1RaD3&3GM=n22u%$&f>Xd3 z$<(f|KX-Pu*+U1PvRe;6Y`3&Otozy$tp0qvX8AQ*(PgEjMZN zAMLYNooUzq+x2#0(G2_Cb2r-`KJ!h5j2^T_g9f$=){aN_$KCWmd1{5c8Ew)-j%Qr;qav^y!qc_MEl^d!X$}`;L^gA07U= z2&gT=W@<~Y<*(M3V5>v03tOLg3iap$u@*Ug)h}|A-qrG$eM-y0-*I?@y<*mj?44)5 z!!Dh7p3SO|WXSi$;SBF$OyP*Yal-h_ zWpHQ8<~e~rd-m)OG7KZE5M@12RR!IKKF&8Bxkm0W9>I$vIAS0&)-ev5FADiWf%=?2 z^f~mwa9Xx}?DWA%#Sq6}#1TD_{8JDCe@QaYPZwNpf!%uRt@g@SzS7?Fp7+?7zx?Ik zBuVnfR72N!m+=PtWBsCNs^En)gfGGwYskn_CF*5`O&k#DN0X7fZ)m%1f152@xG3O6 zA0bajg^pk6LF&S}iQZZYhkLT#&6_s|`i$oML_YFE@4>ltN+_yz|#FSOu0%8n;do<0V@Lg#wQxcx|9 zVGqz()B{c&ne)Bx$e#_Tk1Jq@|LAXM0`Gtyuw<7R2~X<7*~lD?{sJ81O|%b<;UAWM zr@xVDBf*7@LK(&uWzaQ%1-$5Mo)PduqMm$pIel>Wqc2c~@dW?Dha~DMG)4636@7M! zK8*n;?&WL0n0ovAB3z*l@MWhUA>y{M|L7-p1b%isn!Zn^QW;y zhHVG5CD_*Pz1qt77xvAA580z#d=xU%eor5TT&h)F&TU$*<>|G0pll#$%10ps`Y41H z>lBsox*+PAvo!4 z+itf{@4nGKy8L(SszuMAkdH&4v-hdP1+l`t7`(%>VNup3%8*v5`WMW1GS zSMw!W`SuSK?6Sg^DA=WDT4d{H>d}d+k8LQkR&AsGqdgDW-)z0fp6Px%-bVXMyGW}E zL0c~u*@NLS?;rd%&cpEjgxfk0#pyyH>OXz7wQHX}eBi0DO42tE-KRW*c2(o^?BBIY z(mLU_LR*3*S4j%|C#(XF-v6o#`Q^4Cb`#?&olXZ?Ug-RgBvxx{Td;M|D|lgDjLb^b zGupZHj~~e&v(2#Wq1_f_jsYIv^7(wUHsD34kK2OGHRGWV{NuJDbIU~Y&uBRQPkGKu zO@8Po=&Gl4f+x`}IW}mUnX%&I@|UrJ9XgirUP?Nm`=BczgU|=Cxqz`)`~fe(5mNAmJRo{g4} zlh_<=UyBT*&&QL1fnbyXv-FR#Ch&6o5c;rP7y5H5l?pZr?SSJ*@PZfPfimcot~&#h z_vL8t0Ry%c$@T5g%8c}!_aN9g*a5EFj+8(98G1AHK*y!u@q?^dy~>(rHwSx?`^>HR zV0FB)We6Z5Km5i!E_lbEXSbW{nm)qjp*^D8^3^c&* zf=}3z3cD0I{n<#cLSN>DMy-03lsA+asa!UE^fSCe9mt$wllKLDTdcfE>OaYLkuR(` zv_O3ho?K(&xc&pZNF&J`eBa;%EnVJBFU!w!$@V!%=0$#v@ds4W&u7YyLIR$VlG|E= zuCY?M_vj&e^w2YQ%f1KfGx`AEdbJyZRoWR^4QQuUVBMo=gmY>aX{FH>`anPn4%9|l zF+*Ryg$wo-8fKLOIx4jtQSVH)KANt;2R*M;BcYwRF#$IX1B5h9_u_M&5(`0~P3-}# zAf{DMdS(rk$<9Bl&P;tFm+B`-LpF|H;8iI|WKaP*$7;~-gSn77lG|H|AYzDVPMZ+rLe%udgykBh} zSrWm5E5T_KcsE&Bpi#0SopT9o6a)nS5d=gkKPpLYHpPVGA%F8Ph6frQIk;mOk;T8A*@=2%gl2a!qurnbrd2u8;UZsE%MTz>DXi8ac zKG=Bq;0|^aM-&(oN1Vx|Vqx&UbvnW4#nurT&hdvjp^w9xT`$)to!&1vJD_7aoet$( zIiv4TvdACCp%2g;ZBmA>P|Kuzl!`u18;3I+j~rl(c#HBVaNvXz7~v(%^q;oM73f1- zEOFl2yWbwumSA_XB^Y0S9&51+W~{Z3E`FW8aP~R2yiQ*LYs;&O(Vr zo!p+aY=Je;I@3P2`!@T*_Pgyhb1t{Hr~b$;nR|BO0WZ*BaI$>*A3gOoyRdGRz5mSD z*%IxKN)LIvBNCy=hfZ_o6Y3Xgtd_J#TY_!WmSDHHJY=6eAm`@5L3@#w$p5&4U0yKf zY+KdHmT6kGCedDU+77kpVV|7k538Q9Z2OUYcHgZwzj~>CRu0lD7hPk96&|81Zo}BDoIZq*=qN+K4zb3WtAjF zvsW*-KbikB1vi}^R!LeY#kEo{dryJJswASYP8e)4syxHEBoGKi9o{7n2txt<#*(OS z`?l?245U)2F&V$bwhMho7|j?h7#_T+#PGp@!O6l8#|Joi{?XdWMIXNS7%zQrPT|mi zKEU&K7)Qg3 zd5-zL)Oawz;&d#;;W-+NBRzLM;fM@jjPmmO$l)V4d)Dlro8eF^HaR_@4?2-w7h6wu zey<1m5X^&|Bl&&Lk90huOz5r1 z+Og2b+bk9TIR4B5I0r|QwT>6G!Qn}e3}v9J>#NN9#Uz}A(1ifDKv(e;by6Qc5>C0V zef4W$)j1rx4o9*bXaYWdWF9A9sScK_3`wrS2Z5y>h>8O0DB=N`V{YmR1_P%Ftus6)T!hUbXRSGJZp^_714<_gn+81a9yX@#@ zOE7Jjw(mjv+Mx}iPoMop)5Z3CXTHxa*2fRa8W!42!R2YF_f>%gOXypjb`SR1ecDF* z^V@E*|8Bj*Uf6Vj{ndFNv6n2kz~*VSB~ny2qKwyk@)6CW z9;eIYLA17`hr>&apS3(4uAo86tJziUf`WWks?{qqnpWa@njskmF^0Di-Aa)=>UKoyM3wpl}t1!Oc z8FL;1y-uGo+seSKKBT^+F9G;|l_r(~-pBBS+u`uK-=EmlOJ6(lA3UFu{J}?B3Lb(M z%&(-e=wjo=())ryXyg$#4S^l*b1t-g^7F$cLC0*2?V>`@iwd@BkhHSdYy;7TO)H%xKT4 z&vjOKFnfL(sXR16UQ-Sl@lgwQ7CJMyVHco3`TG#BD@kW?@<1Z)Qy=%x!J%t02^*Pm z*o-3u9u-q3@&;LtT>zd**z?r`{J=tfY*OSEFu^~}%?gNJ6ym%+Gd)UjIg9{CHQ zIdTtqgD(WX2=WFRQ{L(4?Pee8U-BU5fTbj3O7$UcNYFZoH}`^Cs5}xxku1`Y_d#1b z_u5^0fAZbd2ki$(9@k5QK3kxbfaDdk{rbC8Ja~Ei3cG0LYFpW`#G14^5Fg`XhaY1# zptwG^&l;5bhV7mRdSC?{R(WAdtf3xI`vDLE6v{=s27E!ni*^Jd4C)m?Z?ghz7)pu$ z6VWIT%2FmqDx7Bic>UZ^8wB#y9*|$IUI898k$=f)16=&PNM@D^?dX|aGO=}4b%$*F zb_D^=m#k1w(a|OaW+-R{d(j#pop%9{t~D{;yD351ab6f81^+_!A39)!!zU_ zg3Bp5O}MZXR=3(65FFE0Uj)17i0TUWprz{J+~LdIp#JzKuu(5TJ04rY<3Q(dqUSMB zbC2$z=1@lVI{jV0Z!o|`fYZ@NEr=mPQWslo1t?;AW(XbE>xZy?mI8?ew6$2*90e0; zR*@2YL~E+x2$K4rB=>OW zR3GIlG^RQhXzMfuS;0qvJ~SNTPa*0daSJ^BIsmAfed1fTnF|4IQO@u;DnP-waCA5E zmj~3JsWI_ve5b<#f)I>EE;ETSS$OA;uZhA-gB}hgqE`{72z7+%WW!N7#JO`46ap>% zEAc`n%iOh{d>6+gH1WZ5a*pxe@w&l-mk%gxD8VQ*v^}1Ffj-pXU&+F6rAolfgiifQ z!v)2ac2FE#@x|$jp~HR3xpGEXej_EP4@wbE7?k~VI@&sovh?|Ab>yobr!)!rcwPDO z7IPoP3S9Z&z(bKBf|@Tm`6}_5uHAOufhX)MS`BDxx4!TxvXHNof)RMU-@K1$q)ovtPafH3ceg%j zpKRM;?cJL-Go5p4>=&FO=3zFiJrc#yk-bV}w{;Cw&O89z%#FF`eC9&t z4iET&X3&m#1b7PJ<>Yup#?!yl`TyB_4*fU=v(=_V6mpfLmEL)a~j0*Od90zmNp-1wukdf*}N)m7_UQuCd}JJh{B#iXO9&9jE%xeP;`6dK&ORp0x!lo_L9>! z#d{$30WCQ~Q~HB;^1=t$d|<%*N{a?7I}lR;6);)+gpTwdxCHL~xvD#(jo?c=17;k7 zNWI8y5j0IwFfoA*$OF%aNJz8Aes4c-(@84i|?0nSz(zgWLY%^LH+9zke+RmGz2%qD%)vi7YX;HMB zW3nI7TY7aApaJqLE<+4C?ckAKZvTfJe?K|Yy zgtN=x^)`L0eOR%LAb2ej?A}NHsi`wPTQu-uUNn6=s>?yV7+v{($&u?NI z?Qz;h`*-a%^ImF;w2d}P+<}YZkVUHCJZKZTJaUY6G{$N@6ZQB%9Z9k6^*%)vUfr?5 zw*>pw?e}Vn138d2&9L`PIoB?q^KYwjl6G zK_6a75rv@M^hs**;ozsV3ps~uK*!12g4E5tR?HTJyur>vn}8k1umzzJb<|8B@p!By z^z`&f7fhV7qrP7shmQi$$IKhdJ>i5J_lK|M`a@={VxNF}TU)ZlWi7RYOn~2?c;X2k zGi}m6>LcyT!wfwaT@!r}n~OD7=4IN5o>5MUb^r$*6WR>rG%*<5fVWS2%+qpK!9I_* z^w9Zsqh9{7XLcL-?3}!q$Se-~~;PwWU(fndiX3hM`UI z@kKd~4u!DcKl+J!I<&6+h1lXVB?W9UvDl_dHLd!PE~t6JAD0&jGvC!c)M$2+>zU@3T}v#Zmd zeI{{;LzdH5&=$I4iw&7l0v$YX(6;Z`?mQQ^NZ7OGwlCU&&cXO(T-HP0V6#CN9B}CG zsHarhc#iBQF%F4#O8Zu*XP#7@zBxY?tp*tmvdTd)D|;nFpi=7Vy&@vXDu=%Ve2h|Yo& z1r8PJB#(mPHS4@TCAeT|cw#=od18;8Ar(F4aO!A7uKrRZG>)O5?)ptX%Y)=r0yVv* z8$?1mFuT#C&v2K%Da=<`20D$}*Qc$yG+!wa5D``SD$!>;BxSRIc__P`2u?eb2u|HNn8@+xsAxo_qeI#njuIY4hlVEq zDd;I^GeQnLt#Y!$vE{JZb6D+yXS{#ZC}4Q>9343?m3-`pZ{R;7@6b2>xB~-RlG5p6 z0K9D80d=TcLI5hMsLh&fY)l!tK(K}^($+-z$J~&f6 zlsXl;lbg!ZCVqh|=MLU)>V3BQyXlZ3y~)9}|fSQyH^c;HJs_W4mfa}x zQSyREXio^JYWfBGu=tAcFdXy=g97^Vbtm{@^q_q3^*oC%DD@~F@ES&)3q6Ex1-$0; z(F+K+QHVYUPSC0v+8_d0q=r7j!9Tlp@3NgccG|+WlWd$8tM_&v)Rtg7>_IKk{#ajs z{)iCg5`%9Xf3|&i)^)aW@>1FaJ!}R{Pft zx7ruB|4;bne)ku*^yQmN@skN@L&L|3-e`s$khWB;-1F8iBhAGFJ6 zo~8Q1mdR>x7{@~`e#hmHV6k{j;_FyEw(s5fq}?QEmz(!Jptg*%cT7ItEJGX9lz@^B_+jRf_S&LJ7tuivr9AEWTh2WtIHEubgAhhlK_VYUC#4zFsMd zKQNI&yqv@UWAQh_z+=eq5{@<@gUT^_vN+O?EPaqc^m8mGS4$u2K;E#>z`_Mz_teWU z%HkjAwBx^Wf=(`+~}6Kl@oX_&@Za4>?~H^3w}VtLQIy7Na{B>EiwijbFL- zGagykV*#VAMVWE|r}_ATE8y2l{uZLZI7Ob&7w8)F1#*N%k?5DgGUZ-FAGV)jL9U+k z34Si54|A3~Xi68PPgpQxY#<(Zna;1$gkFh^5BdNz7MQqKO$uoR{@`0L{t3G9@{NTx zc!s%~#Is#HcS#@Yb=kmNNCYV6LKYX94`Y$OT)7|P6&a7Nz+A*Uh%P)7ZRjiJp1?Wi z2uyHu2M8@F&(n(pqS4gTYNMU82v1wV0eqNSNz7Gj3)R`#<@^I3(evr|LVN@7?2$I` zV?Jep5n2EPJpnl#bgQOKS^9uycA-3rLpA5L4SIn0dO3pAm(YoY+Jl`3JzPKX0=pi1 z@M9~{2I=UeXjeIPGcIwaMAq_&yDf1vXz**oLxJ(JG03v+L?GqgqYY<(0mR$Cw=6OYOP zD7z(CmY;x6!d~FZ*I#z5v47usr+sPrEiw`(+UMJT+pd^#jx8KB+xAG#-Tl*R*&TPs|jI)(Kc+*=Q=jq-8&z*f7^Di-Fx6s zwPmtht1ZDUp7Gmu#*`(pm-XUjWdB#`&O1Vh@?Zv4xEHkAsOU>S+S+sRaiK4054K=90TtSU%;U^AF_&k{b1o1i6Z0{0jJ`(31$`z>nkczbo^wJm z;6Wd79ZvcbtNYjY5(=QZG&d*n$FDL?;D6>uezd8U6f%>!HSC2!hDR+`4Jb<+7;D&D z=<19)WDs&=D7|?Ap!6cz!4bODngSkc(L*^mMqB6$>L#iN?ZOcQCm`-2i_n7xO-y7d z@sZQf7UW!fTrilkOexstOQd?x1vnu;X)kLR=&n%*&kGaup)J^6Y^RDn20g-#g!fn< zD<>iM;gxW-LHC33{m1zAu)7XQ0b^*{@gn;Drr5pimhX(GIdgpIZ4R;IZC>yn(+-ao;b}KeQ?21J7As z;vPjT?Wb3A_tgmn!Dg5&GgszdB zY?-{Nv)%5~JCq-6zt3*iqjzum=zQvkR-374K--UL`*jV2bH}vVO4(hf$`NR~J}_vO zJw*go9D#cD1HRXxs4|UmGQe5Jx3A*ZAX%!YCr1;JnxIGiKondGQ+m%GH}tBnNzNuX zcI0y=WcN~j4|s8}0A9XKT1Q+TYfu3kaMJv7pKLgt;6MRPq5$EP)HOwV19^3mXg)pi zS@h^a+)82lp$I(glc!0vk-_Q?B2FW2>et(x!Jo{7r4&B2AtfMGK0V9d^po_DGNsv* z8!3!z7H^wwkPqjgK5dP4tTAy0;-1rl0)CMkiTX53^kEw~`p0piiR$YvMRVesAwm&; z)ZzW4dr=>^JzA1y)O$}k&fpM4v?L-6c{#GDXK_ur<5TkVm?{B=SMKFhI#bY3(;J!F zd2q$<@ethE&aErm63*L_FO{4SL5fI8I5M@!DGukVgEL2X^d@N1rwBnr0qP-GFKy1Z zjPejGYS&T!aiAMPL?V^J840JLZlY|l-B`*5ULxC`JPcr_DZNLHp1_kI@bz<4(nmpS zM~8a_@Tkw>=zhVY6hdu>0W&X#;GK8gX;)u;wUErCUt0|omPSaR9FRg_R0!e)&CcY6 zp}?etGB6x;B$QsCU=J64z&T!KqxhkSFkzys)!H6l(7(W|H+`T7KNJgI3gG|%?$pB< zY~arMTzNCI5FM%9Hu+#=T&NCTQ0C>iB8~8Z1{k%{hY<%16lBI?t@H^cgmyMHG}@S! z(bh3$l&wF~ZtJ%_X}2kC`&aipq*RM~~Ru?N8d**8a%8yX#In zZ`|p2!x?{Q7b&{X%$D-Q!53>B_25Lt%PjaELmWP;Hf8A&?SVIUAMLdJk347p`Rp(4 zALTsOeo!wAS{KNCFGqCIH)Z02an-9Xs{Hr&2i38zP~NFNru(aGzP zpwDpd4|*QF3EwdH(Vt_-jkO&++wHLE#7jdQC79d8ksVrAlF%oak0?*#njdh=fdx+d zj;c&H(O;AYH;yjbvKeYT2R;kW@CI{WEC4dEqA!qmIWu$SEPoCS!2z0=e6g1LqmP>#715;_ zup#cTaLc#_7BYfyK%M-mrcYXy{^e`*(J5~Zfl5V>!H>RW-ojCeb|m_-aMz+FxHBIx zw`JQ>PMh+JGs378eL%JxSj8F@_&9wuzGy=&DfD{a;;3`9K?}+)P4;}(cDsMeI=gN6 zV|GKw!xF}a?NZq%U(EeCJ6n!6IPFYql4GU*;RMvD2tw$vF53%~S?4X$6njtvwRMNu zj z2cvJV|Ec}Mwwvv<3xCV5nsdIQ8_B*;=bMrMhIo*r56&()N>SHy2e-I0Gh2cw zD(WjIoNZq|`9pTjv{P*1xHjXb)XF6iMe!Z4L0{wLh?1_uOY! zO}@acJ@tKxF0?!kE7}8{D@o|_*ipzFba}6{5xgD%_-SVx6Y`_TjTqiy%wV_nbN z=eFOaRpfPYh+1ZUIPXoqMfB2%3lt@3vK)s3{{fUKs3o}se#m*`4e~x-JY{XcqJ_)6 zxkF#vyDcc0!@Paq0iXOqANrU%u%7gx9{30P z@RDto=GACZxw!r+=IiIo7YFvN<>0h-`st_p9G>m}7YBxeW5LUD_@=F`%`?{1CPKGE z7Mv))WW9wCJ?77w@8g$wxR$vXdB6*Q^m=sHdeLT7tMts48Aat8dM$E}x>v7W?YeC) zm-8_WJ$V-IT?X&j^l2*6dC$R1eiBX-I0&F`Rbz8upCH?i$?$vVtZ9uk9l&QO$In>P zN4G^DgpEWWRbod{j{2ZAYk{-}m^c?z%d_a0&HGiS||{W+spMcqTy$^bm-Zz~&X^G7lqpjRC+c9@* zi(&vJAQ@2_Qv%)4okWT0);36o6g{O&k#uklIo@#sTw(=)^CX4-13V2_+)#h200`Vz2>m4 zk7%1QwxNnL=~*5hhmpOh8-7oJM(x#_j_N)zOY0;=mm#121bzHE%9c0+iwHwFDX~S^ z!BN=IWOk}~DX-7Z`u`;Nk{W`}JdHYePU0H4eIiuW3CQy)6Wf~+JqS90cZ04+DpF0) zXl?B^Q@#d?$=%<(QGr8GE8txBsS{_Q(YvJ==;+asv^AJNQ-4!5if8fjo4S#`mz*az zalG=a!lrBeEem7_czT>q0h=3H9EixnR&(%C+y@bNsuAj~Y~^*3t>onVBd02O=%~=} z?c@|G3Am1uqnbd-!_kv`-=sI24;=OF!Pt83h#aKY-V3Ls;F$#BehA5R{7s-mEnGEf zjN-7wR%Ii!vJ10HQ7B0$p2a4~des@q2k=m^YE4XDz(EmV(G(>FVJC8 zUyE72M>YG2yjdD&@uwdASR3R>v%l|H6(w{?RU(xWeAM__a2zX}t4MDZB;(IsOWI z=v{y?_dkwKdrybm-}#K))Ookv^veylzgtG`sGNO#=4E!_j1?a0d{*mZg~;z0nL+1d z`s}ZV``iORJi#B|x7NO+1?)fHr0v0)CfgSmU#oEN7s&BSi;*f;3Qj-7!OvJU^)K|L z@aJ;5suf$uLo|1~rv1~QC`s!SCF$<=$L)Jt?y=hy)yNJv+uOAz*ySg^+0N2eu?q^L zBsoPB`WDirSW6hU$b7=jvN(ayt@S=O({CQQ=2i%cg;1RfBpkP=~ z2l9<^jEuneLQW$`krTDZPh=VkghSD%7;VeB2kz_FCtFhjtq0Bl zi$$$svYhAe5`6y2Pkz$*|NZZOzb`nx-7Z`GA4}OTHv0j zvWy?bCQb#FZj)09j*NAF^-e74ARmz_{My>uT$aH@#dxdI`jJ=20C=%h`o!D^4k7!| zTI3w@=^S9%}Xz!$V1Ug0ZA^Z{PZFrP9{vCtlU9P=w>%1M+X(JpiYY@K;} z;gb_T0xRk-2Ue*(j9d5yzQkszM+&^53w+N@XPk`b1L#DZlNAYd%$Ot!YJ=JW-GVOV zQ76#>Su6#A>O|hpkTZ2tQ}XgC@Tj&;Q2(%SrC%AdGwMVi@Cn?|&A^{Tzp`)-jc6A% znlK@WBE|D4!+AN0{J@9*;TPzGJY#$W|C9r#R36~7h>u)G=GVeM^gZy{5)9mW^o8lB zBia&7TRYvk|8cuv@1wTu$a=|_dG?8!S18)fGJTPnv#I*%VN`ZYFj+Im^is5<9zMJw z0@bdb1NIATKmGr0zS-`QlhKuv&bQxM{BApc@+mf@XK;5wDg`%a6!Xc= zTOY8GJois_^|XuZ?I*p`BeX^vBX1?gDC_XWn2eF_y&ZPnk!S6@&pd2j+OJ4JU2CjG zHtiqIeS=*v{dC_VdgiD}`DnM)m)LPmp#jy$oJjk+Mf*qgJZJy1?pFKqmLJ%d)&=&r z%RX#Z%sJ0;ipDz_oB=>fT;L#rJVPEZr_}PYxtKjjl%zHLx7ZKce{SDCc%Q9)dYx?A z3EC3ue0>z6C`pqS`<7q>q9hHl2TLHH-o_SWE@vwp#u9B{Tou}agF`9(6#A@Nx4v%l z37({HkIGT*;K5{jXyh6%P2Cn$LWX1lzh9gM+BQ;dy5`joPjD}^8VnP08DFm5c?f4D4BA1Eggi}#9k(Wy0 z9PsH!#u84e+>7}ay_Pu#8x^||exZKGG;J!kT_Imt#{gbiTbtW(jI)q&rEnbTK7Bi! z@&=pgsi&UuwYi+^2=J#r=wF^O?ik0|!0>MHN*ss6pXcyD@&^8dwj3$XuU2^jeyrQU zi@aN^H3iSG9tclD6UI#3$8N!a61xswK^LWu;gxE67a0bv8CStCQq`;03&9nKb7;<5 zOSN*V7%j0M&;_4awb~jR8ttSdi;VY65AR-WH*b5;zOwT{dA#hD3s8$3fkxS8MFZO0 z&}S<~&#^a8Tx?6m&$qdXG&)9+SizGhta=kS!1lr^!ngEN6qH^?1HvifupC`_)=h+qoY=^cz+#9uKwKQ zNNAhnRkYLX znOaG*w-1ZPa!i3&pvO_XPxK>lk~hV3rGLa|Nt?LthnKxaL?`D*;WtKGmjQ>Z-MAOY zPt!m7Ewln2_2dV98A)-{Um0Y8?^6C`5-1$d!BWHT`-D7Vn z-dYL%z)P&I1acn#fwj2v8ID(ddJPUu6W$YzCP~~#^3Q;c)NR_<&@B--{r;ij)lr$6_6bKX@eq&|)(1vQ;5%tg>_$JFg z^lK$>!IK0m!U{@O%1K9|^7n7INB2EzKiv6{{pjEml9GM)x(R362N!)n9>^!#0xd#L zXw)K=1Y@!#7^(*%FA=PMQSb*bMGrJ-fw^0Yx=-w1D`%0r>@RlQDlKJ!h24c41I9mA|2G1o@@4R)|OyT*?%Z(rWpchcNfD0Hs5ef_1fPIY){#c3 z7)C4xD0Sv?{rp}Q3}wpVOrP_=TMFpruATPKu4nAF?GM@4b}0mWUx%I1w8Z|O(HGh4 zmtJhA&s<_t<(Q@Hp0ZPy!%6QK9-?2l&p7qP5$)mI-P7$aJuo_vJwe05^5tGfJ?S9kPHIPRIo08_zJ{BC=5>24TPtyt#%xyhvy92*VkJbB^f4c7N1W zONx3hwBVnSQq*&~%K4`j9A0c?F`QYjfVTCZFFF8o6JH4zOVmL>u*mcI&wt*H=(oQ0 zt#;dOx7nqaURpB_#p{<1t5Bvjt(2GN#3>>OCLJ#Oe`;iZ;74eD0Vk?WX+=o^yq}7t34=*O^ z(^kG7mc76^G>b*G!Qg`@GKzlu%2&SPc(KhPFt`tV76nQ5n6m?yEPa>*S-68v)GKhk9?F7^a0;m{VU)`07o@SIEsu0EJ$Ut;4oX zeBj|*UMbqmLwi=)_jf&D_jJm+zqi?5H~Lh2?V{J&nTiH9ceJ)a(YDA?)3*eRk3w`O zWP2eV)WtI*tg@Z(V|$;m8#do=f4}pmHm_x_{q^GO?9v%$+gxooHd3pEy=jCY;6%R_ z!YsUoAIbZeKCbxGGdI|xQFH9~mcG?;tE{)GMe z=DY3Z2PKykBmB3goNbpcd8f7nTWs@X4-Rm4VQh(533U=4jC!LF0{+_0?e_hRciP7` z=)(|22>OHE)%KPJ7u&K43uLn=>o`HnfKkpdXoF3HtwYM?a#hXc1L%@8%%dc2Jg6d#ipRXKFN{*6zllCe2CbnR^Y@Os| zKy01ium!PoNNsIxRnf-_r+=bd&>cC0{lF3VK%X;i(e0Uckw=xL=vT_+ZDrYl%)9lZ zPvFHI!izi-{4<=oa@6_jV{r>?oe=#d#OL=LIo|^LnMA1@kSuS&j}{ZQYCo zBC%r2F&36CJ-Kde@%IDL-|AsYWZQ@Chfdt6Bl-?{GqzS<7nHn(W;hH%!)g;cCu=L175=Bs=@;_Tu1XRx zp$YuXZUgi&@WOtp1Xi)U;5nS~hBotKOoe@co&`U_H;jScnQCPc^ZRqpJ?H#_&Vchy zrF1Sv8}8A!d^|H;@`g5pKaRw#ztFGrFF$w*T`Oo<3dh0j! zxYlbPahp##k$}xd5l34_+N#bi_LJwHwwrc6Y`5;y`!~Jkm_1^YcA{vt9j2(ejjeXs z_>=7%MFUzqex4$+YJEm}H?~)IpP~UthZgs7$fuDwwjjP`OEuz5qyKDWl-=gZ3r2}3 zoS+wX3yw)9oH&RGgtN%eCNPOK5QpThq7&;Rz_?HsBkJH}gp%dKLlmG9iqeDwTo&$;@pAks zy3AIbccY3p64awf&P8L|d)*lg$F<&3@>39Pj&lTpB#u~Gy72nAUeU)uL>OvHc=I@T zc`yJ9(4t{-={NG#`MqLoN`cgHC~BqBAum*70*SA1InNW}g+i!|dQo^t5$dvT3T=tH zQN*be1$qRFn#W1V5(U%S2|p!$j55qid6Z$48H{|Pp>I*{QFexlKEXeY`U6l?+w94Xb@sDekJ{JvKBU=jmz_T56#LkO%WdJY>GsmLvuxg^nWoqk zu6X#uZ=N?wkA269{zKVO{v;gyg9-=#L(K#`?b_*=*;}+d*a|tk5NW7Kp)-5+MPw|7 zm8-zfU$kYnzB2vFv;UzlOrNlCEdQ`wIPEmYl6IFP4#5{#?f@isB%EC~$=T(xUC-K& zcRXlc-+8wdH}~3w6Ia^D$6sy>dZ*YGr@YKgnljh(^T+AzSE@CIlYf|=1kTI@dwLGq z?b{x)FDV@S&-XoGZFZ$8j~+*B7ZsUC{-6S0KU_C(Qobd2`(n82O0IhdwMK#ki}cJuJYofHvIpfkx=r^k=R7 z11}=Kk?GKe7lpiVK<={O#eL*(tqGhNqwo-4-GV=hjBRagdHscXyNqecQK3(fO?>Tr z%{A9}|N7jgJ|r4bleVD>8Bq)F;LW@V9b&s*7BkVi(YZONT_H2!pR!V_OpreoDshw| z!K*XX4>3uX4Rer+fdPHs7ieDXB5_m!&Lrr=e2pBymO^ie`{*WIyKPl2UA%PiC;AT_ zWsEYGaZaNiQX^Z9RRK4FKJYJa;spVGSuK4WXTjnn1M(p3Zt#a+aye~bE4_(@e8v~` zu-$f~GP%dIQy0HN`ovmAzrGjHt3T%Xr#0c9XxC5>v-Th#Yp|MhsIS|eJFrbrO4rye zyB@I{_OT^cr@d_Ka{I#kciZ$XMbB-SZl}&Z*;<>l6}f0RU`sHyxm1e!um{;{d3EPz z`@yz*>@(Pdvim+h`}Owv*%#U=`iO(bs(rdgzTh>=)7IdtQtZWZ%50N;@}+0~-Jb5+ zXy0A&`*!xE#VKl~am?bL)CXCTzT_EOf^F>FVUOtJhabrv{N~P|3-=y7t7(yaWXvUY z)yc20GiRS-*lke@a7coZZ;Ri^{0W>Xw6lA^-6ltxFFyaD_K3DxzGlX&?6=xpW#>&> zX5$-@50)Z7Fe^z>E^Hkl!7b7@=FG8`B;b(x`^IeB;XU^B-nI6#9go`Q+hr#!O45kY zC)@v=_XgR?dhydS(k_|*Qky)!f9r>YHl^u89f5O6!I%%3t5|oUP3VHmFCmkIwnNofNFU%cA2Kf@zC84vhzeAr$f8!a>JDo-r+}I!$ZFc3H>A-2^a&zWhXMX z6J4j=@l-DD7z5}I*c6O2>@H|eJ@t@9$O>c}IzN%BYe^v^fDv>+9)NqZ^h4T$b0T&N z_67E1$ct+G1(^o^=v3G)zzv%;aHzCRw1bb{;2oSg>Oto`4w5I#r__Ob20rfzh%NIz&Fh2*b>xLFL|?XUx%FC_V`#umQ|a4o=$aeU<6<1 z<&E%X{308m3%VO?1<;1Pk-yUV;Ynl|JPFNRwrQMJE5E3pafR(q-y(-A)sqX`;QFoz zykfkrC|3(-rurZie-x>XeU^9~rHM|sCNO8GxL^4s~7 z{3C50r6??Nw!jIZb6WC&6i>6@vc>$q{v^%~nT*-fC`^-tJKKMa-mP`8PJI-ot&_T@ zYHLL~cDVD8+Tf8{C=X3_^pw`&c&GRMJf3qTvu-x;R|KC9Meq^+hZRYtdmK&}q9scx z0WgI}G42Kad6+3If1H+S?81pgPFiw0A##zYe1YWB^XpHM+x;1`XDMt75U~e`9Gp-Z zM5orBy~11bxFRLt+=K(tF?nnB;<1rdknis-%o69#ax4OWw!Z2f$Cg^+Tt&T+U$VwT zN}7}wDfkkQ(!6>aWP)#6CNOu`G!Md=U z)?q0(Fo)_dQf`gZ>;LiYuAcQ3eW$A@V;1CfP5Z1K_{}a&$ zCUuN;CIlvQ6v3e5aMd4SQmd`2M>wO{FnPPeCkGVpM=|7APyC?|FShANl<#VA2A|+b z@MUqA37v%t6sb@Yz#T&lrHV4-t)?yDj3N#k@CEL$(MMwq{((N_@J}Lq^jES#LF7C_ z6d~Z-yE|<4{*89;o~P|!cHM7l4?QRM*qL_S>KNDwtv`mvn?L8*#3U`C+wB8SK53jeI%y=Faca;qAYMQvQTcrKpzTb(BJc= z_3zh~V9y`eqOW3~w41iyZ?|?RoaM;T_D+R>zii=e*h)o7nm1;;M@iavWP@!ywlUdC zj<)DGRGrx-V!$EW!JEYeZ4CFfS?bHz${)M<1mIW8tav)3mi9Z+3XHX zw1YnQubzEU5O67aSD_&tY-gu+E@r`e^PkriB_BVg? zH}2?%!zQx#g-+-U80qL`%(*Z2gmWGXM#vcSg5gd$)=*Eii(SYLWC*f^@y-w3gX?M+ zod#=jyP_s--MY4!%CY)2@5o8yOX6RwzP{SAq`cyi$P85Bp2i)qx zKLHE5&I`%8b6NCj&Fie_mu+orzUT#=YE3v=te2B8a}o<)^hJEVn1x-5_5m$$+<-?o z$N7Rt3-oa<^9Hb(hv0AM!(7ecA2cDN5%hpp(D8ZRrFnR)_z9Ypo4lQZ51#^`#e3@D zN20E>C+Q(71uxpdOI2(h=52nJ;7b+YoamlfU{QZ=(L6n7%vg8aqc5Qgv_sx-q;0&2 z;C`ibMU#;2y}do+n=vkP;yyZBwJ-xl{>ZpW>4S~~ZD>O^@ZlTgRr(Ja!H?)-(YM@( zHjD#k7IG+$ONA#1eUg_0zz&>;lRi_Sk9dEul-F66sX;mdJitdGTjf0S^#1jBx9qe( z-~E6cJF?y;wdCxhGhQh>?NnPfet}JIo}@)uSx4#@zG&?s8juon8!FL$>Z3o~yZ6~o z+aI+rX?w6II#=5@Q(j@$%)P``D*QdsXZ?c{*{IlUg^;N#>MK^Q+k1M@DSPmnYj3e{ zZ2Pf&e#!gnRkP2L^(#B5OnWfeMIDMiZM%-_x5xLau{+uyv(N9i+m6a!p47U;J~{XG zcCkKw7_(msjXMt5*%Ov%v0l24+UrsWe2;5IKeeC>?csMw_TU4%R@v9r{mA}#`%mnw zai`ipt@yNEHfyEL)^=kg=c6=#Ka}#%s0SFViG=)Qjt!a)2FdGIhQOD+Z2i5aW3&BY z=i_#x?7=%a^g&U>M0?NF^X*baNn(rW`D16;u8rGm!-4fC?Zm6dw|fxUct-sRoRR6^ zja|jIhv*B%Y{4j3?GfCNH_#_+<#J%<+awy3jitf?^vP(Eu5 zmQyErvh)dC85vf}RxTHAseIr`Kg3!BdP6zr7psRj{3XGebqj13=5=(T;YiH)=vU~Y)KhE1eu3Z7Cl~|hi0GWiih8C4a@NE- z0!JF`rJ?4o!Rn6j$=Vc-g5ZnHA;K3rGkOr)0#gr(KB*)HzahV%59NW6tVVA`_pe6+ zK6WF03S8I6>i`)1!5bc=4z`rSZecAD`9=!+0v)l^1WeXKIMSc+A-GdtJ=zfci{80? z$2PYa>#+s^zR{n+e)7pDogVNE@M#NM;^HRLcLrL^VQpM9z?KzK4f^37x_wtp{y@(W$j+ zbe>qFt`@FOiKz~BNblVaXpM^YLz~#Djd8_xY0w7VtySK@kMIy{Fw{jG_|+q!cOuK6 zd8K$p{obFt@Np^v@eXcdXS?0MOVNO~-Dls~^O$ZPw8`2QOm2v_UD1FxitS%IW}$z` zfFsb1QTi}Wc2}?LuA?f?TX*;)#y)j1`}3}jZH&a23h1ge6W-d(NrW!Jfq~~y#`_9h zBawmg^fI|g9ZCiF62}OA|E*{=L|Hj3XCpG^w|4?u3LuVtnT3-*kGyh(z@ep4P8Xwh zC_sQB58)KlC+CZvF(QaQTIn96due{~%AUtw zUeSfV#t}&I8q@}@0nr|cMds+&02MVyzw5py<;R)Eqa`Wg5YApiN@9DtUiWZGvZd(c zk#Sxsgq4EKAM&_Rha9ookt~UV6X--{VfpER*5(4V-Uy-u#U>s!bPKKMhMW172r*?Lb-P5#^oLvi&L zAfk$a;PSVXV_;H#$`N&_LGtZL-&oKf^vY=L%asagm)gMtit6jxw1l)^+%h9X@i{ zC(EXh<$cvny)M*LXXnu)3J3qZeQV3l>>t~IY71Hy*q0Xlce`x*N}JazgO;#wy=%0ZlLY~t934Nl^adufFXP5i6CD`}1 zCD?6y@6(Jj!G3enId(nR*yg%i%U>leMx&Ygam!dK3xbH;AqRTiK!GeMutq7MrtgV6_Y!B^hb35nbQ#CeIiC>&J5 zm53M69OJpr@DJLQ+n%Tw9D+X3i1N^fh5dTd$8l7Bv}@Bw@sFaaL7&35fK%NPmHrB( z7(=gn-RtbCtFCe#q};w7s(HW(J)saL*TD;~dChC=YhU}Cz4yKEwLksSKlLBuB%Tjd z&u~1Cx-p{HtXY%ab35)2N1gS62~V>i8gpwsU=9X@g&r0i;iKTC!SWYA>+bIH1zpPW zH6064@WycA-=qaP=o7e>+n?k^C!-t-PAtwZQHX0~B044d61*M@uhCBQR_H@}qRx0$ z&XMvgcvE)SFw!T+r}Iy9dHhq1b}V%7+_lr@$q9%AfAlG8A}3C{qo6XclnbdlshQRp^6W2Hdjxw_MsJm3e(ZAGXyl zm7H_cd5Jwp#8x?zY8$HOI=0%wdso?wvIl>D;BjRbYu9Lt=*x0%w&fER+I(#hJ*Gi2 zO_mL|+QII_&IF?y8_IGzrrpql?ZI#!c}UxXeRK0|_HVoIw6n*aYF|6~Lw3=$Gi+vy z`apTH8PKa;w=UY4WZd(Jekx2+?k8Ixv`;+$ZTqcRSK2#Hx?DD!9M$wMo)?x2`hcr4 zc>>?(v_>y908{3*;haaa!N_&?eD=!;eQIOpHi-)?`5Jvg%2KDX#S_J;W{x0A=oR&#{B z#Go*buci1M*X3pFFb-nN$>KR_hgzclv?bb;*n`?y+@t0`VBcVi=-z{N(ZsXuuaV{5c^>w2hRdd)zyr$3P{HC$#e8D~mA^{1eCHbG|t4Fu$TNV6%{hgNK4g z(BZHJRdQ&N^d968^sWVN79VI&%H?vdV^wSWWMM*U z`VRUKwI{J97PwA`ev8c!&ht?&_$sc89U~7%e&~eAXZjUA9l2T0#0LRAa!g~+I(6Bp zZd2C+AG$DJ&|!(J%laZZGx{?$LTARls%G2pYLs z9v{htyeT#RQr}RCzKnileF45C!VNTu^;hO(=oR&3+dLF}p2v8CUvQ$q8Hh0z>j2fz zy;Qv+Zy2lCxwVd0#u7jHq(k}-@)Bo5Y)zb*IMTjq9P6SDK_7H1bhVS(+Fa*>|7*oR z>Y!igH*{pq!M&1{*PW5vYA@-4-Z8D}*q|tykJz_&JYc^(@T>-b**t9vw(poCZ<)sM zsHyhm35)D3MFg5VhG;-~pD5mqZNZZ9K!hLZn+~;qgm^W2m)U~Dh@3k*wPn;{ZL5X0 z=>OFoKS>ID>Ew@|`@M9eWe(6l4WM{FVXNV2acG*hmu3kn9;W%S;1egIz%@XSBMPZ% zo#F^FYL{$pIau_`5y*dXxagWDyB4^fT`kGt8Q}aFwf4i!Kc@p|MqGKy`U6cwmP z5pZzokZ?%fT`6BuQBss*c_48%5I$Erg-M6jZ-5||DS`U!C0nE(X` zrL@|X{e9N5w@=PpY^9|Senc0d_&ELvQl2?5kFpL$@V%Y{oIi5D0eC*iaYs`)4o98S z#gmu~PU~oEdh`l(?l?oX{&PU#^h0IPxv^VoU4lny74HxksY_9T;LFCYKHomAuUY&g zda*jXZjQk>#(-4V_YTmCUm82o&ZsvelJLX zOCa+g=_}_89;hEVKca|I^eH%d(lf?T;F6-0u#;y9h{xCGcqvcFpKR?3@Y?>mLr?%m z;Qs&sLI1wVpZrOJ5}oz}Byd6TglU*06DE8C5E-IM@Itvl`D8Hzyz6O13|2iaV3^QQ zCNKboq7k@ZL@?Qo8<%W(m0e)qkhZwh{q38pi(H7cAJDIdmD6^Ay);l}$ z2mUB`TQ(;l@1aj~L$WnRJTG<(`miv9k%eMIpE4eJR>>lJG5E#q6{Am~QkYjjz(FD4 zpf)o1L{<^tqQAt z^OpPV57z#tZSQ*4erM)Y_V%_{+R7<onb zSYuFnXnbnb1D@|VvQHu4wUwNd*XtD}>CmBPJWA3hX1~fVoUy`ApR`C`>yxaR?FQ21 zeJ23GF4nh^FMA9;xrgCK$lI-3x3~<#sKOY17vG4JZrvJK$ueWtGS*U0XVMd*yy|`%Q*|$)RR8oOB-n) zju#7ZIoB`B!PRLa!qVT&uh0cq0^Y!b566!mC%6mqycoDs2Hl@_1?`5aGwF-Ok%O_t z;&fYEo9i9$6L5fA?*xxh7xc+NAN4`86nvl11&%Y9SI`1^1&*BKu*cX6SmaOImOup# z{lW`&7Wo+;yqGArZ5`?h@a3ZicpW-Jn=Ef8HP!x?RuY+(`j8XRrectTK0Kqn&;wdR z6JAhZn<2A+!;xRu;L&zJiavaB!T7?F6`8}@!cd7iDNlXS7X6QYp+4wSs$YkKJJfS* zUg|4FpRDZ>_F!k%bu7mhj2{?~$c+ser&+rqJO=4c%2 z_8^PU(6di%Rss+4r{m+`h2=78&*}_9qM8WmnET z&lc$e6zop62jfGD#BwO!a(DtdBlE7m{(5&b&gSG9eev+#=j;QkziCTa=h*Kqd4tUz zH6?FT4am=34ePLb5awYIKBP!Jx5UQ}ef#X<@hk0rFS*XnlRb#D%an|>3o!lT2bCWT z|EN3gq(1DyA8)zOKD|!%VCNe9@3UWH*W_MlXUW+JM=Vm<9<;yK6uLZPAeSp{3sOgd zW7-~7OyBI3J@}NO=KfUn;GfAJ>^r2F8Lf-$Q*&NpFPpx?PMvg;&6GXp+s~zl=G&_4 zN@znrBJXjmLw|@DY}kUxp5VREG1BU)J_Me~8@B~DZrj@0Ts8v~e2S&G&sb#qqqFd1 z&cgOX7BF|QPLy4f3RqEZT*oos#&sMcKeP<`uttOaN?quKS^7k|T8~k0@DFk=_@`Fb z<(ALVBzsRDA;u+Wp}8+f1?pOpn2Z6=7Mt+i5^Q~v1uCSMwW2=q4f;_@TgvP)_jqX#>&WYZ} zHsiFXmV~|peZUo1E&3<|+9MGW|mDPZm0x7R=Z!x4i1 zgy$Reu{05TfKS_yH~g>#pjjm;=!d+*nFBineHrIE|L{V}2}o`KhqFYrr)WDhXvPjMbcf0EXjI9nuu(O2s07N;@ zrzkgF(-nk3h6j!+M>UP~DngK#3*ga){B@ipb$H$6(d`CB(`oJyk1Fa)Z>v6nQ$(Y_ zbekuff$}NEwf{Q730$e0|GXS4tUA3dT(w@L=ro6MHp075S8JlkTJqNe^+Ed7vjM+`6Y%QJ;?4AvrX`qX|vY z;u(5G9bSdXIi&!u^S~kMioE^D(og#Hlz%qB69mGdOks>N3BC{s9EM{-vYu@LM~om0 z_gIJtC8D17l!Apb4-;I;I_bKUPngtEWO{mg{3Q;!&zd>Tm9~`UN>x+!{h$wq3plp5 zwUxw`ypdRRLHS^^MscEz{2XU30+X`&qg?h#TcJ;Qsu$ChAKb%uPN-e2) z`D~4qpJ(aQB>Lns^zl)bj=cy0PdLJz-TM^+euLe&=PCOKg@E5I=M!t5Yrm_lonAh5 zg(A`9Y>pO6M~&2^E0lj#xT3q_hxq@@yc2F4~ST7SO!JN9hX zCj0K0AJu~PVlNV~T{+{95cPJcec+6<%Tsc8xogLx_Qm#lwY|hsHl}r{eQfsScJYj} z?39V@)jFk!vx|ct@F!R@=oSwHM`(IL3-P~bf874=`5)SU?*4^ctgk8mdg*8E<=TF1 zdULWpO@eD_x&+*EkKl7ea%cVeb^ekA#kPNeA*D=87Z$}yL`iz?z-D_uQIh_B+r9QP zLcot4r!B$GwaXX1&CZ;<#1@R1nRi~IjPpEv!@nQ~56VoG;p^i)yAuaAzG4DTUQ}Y- z)=SCHq7!|?V#bE`8(cn9Uq5}axs$eW2RVVU29CVs<{W-ytYAQ60I{$TJUkFe^;gu3 zykUWXg=b_A__C0J%p9%+eOQQL{u;tp&fHiy;?BTSmHU6?J&04wv4C^ zfA(j8=5x{e-~WE+!{GCJ;ZzA6#z3RykD=O83C!Wh8!w%fEnDW}cR1=O1`}D4T?8wZ zC;E@^4}U>Z9&e0rbaiqYuzu>pj0x7jqQtfe*lUsD6mH9TR??T7)Aq5(|DT{L!Dt zIQRiQA9&=a{nS;Mct*PdX5sU~Yvyow2%M07T?k$H`MfIl$JbB@q4H~Rqh1#AaZZ6g zrP|`{5E9rs;0fPw410;bjTB|#TEs({b-s$l z{`|8NC%|BVI!_;sv7pa!@Jqm`=63K8i`GsbjWz1abE}9I_8<;9+qF&C(;e&W-rY~y z7iAB2A6{q8Eeq@;(=WCQr!Kdp;}+N~g`{uM#~LK;LEj=;=gxmRLc5?Vh%h5W-D@ay#Apa6V;F2PvgrEI*p1RDP3YbUOHnZLd8i6CUsZ?&zPWqj4 z;ER44HXHg0Kj^f;+ae%;1hn>EWk!Tq;HrP>YZXtL2vlGntlW)84BSVUWCl=A{V9Cdnd z)XA{Am!WW)lIs*ukjdP};RV_dEeVGywv9S6 zNgw?v%1fk#wn-uW76FscyuU!EKhnx5B%=DZW2)n*u8%`601tqZTtqM#+KW@sQK?3~ zEn0&*taVdOrQL#kcxvig+i!wegYwh=z0eH!*#@NbkUhoHeZ!)K&<}oT-O=ODG)IV* zqzE|B-BAr#Dd_$R1TcRutt34J3S1^=sy|haw@)O;sfMl1$d~-#M9FU?r^Wud(~|%a z5ea;|6-BChT;ljfBq_?{oJI;z&RgPB8SPHP0T2Bm{SyV^UII?eQmRY5hl5eq%qBY| z2em98=PRO|mq`IJ#{}(o#(AWuEBl;hx)0wUOJC)=1Cv+KFIloh^WfrU3Zq|6q?PhK zm@5j^@tC694-v%y!#F0B{wKqKMqBx6jmZeb0wW$FUd^OGoY;a76BY~P(1{83MB*4P zR7&*``zJE#p)5m7@`GzEGKVzG@^wAwg<=u(0T1wmKK!`OPRK0Qpp3?11j+&Vxn>bJ z%9o2D`7xqNCF!F@K=K8BP=Zkm+uGV(VJNq*YV$!K_!?s?+Q&T-VKCh=)nM4C5b)~{ zY`2H@thOKSdf0B+|A;a)+ndInp|AL^uoV*(;(YWB8?O+Ah)%x#>2h4Cx6&prp0E$!IPJ-D7~hFdIB`{ zBTvpe^Gv(*&O7s8fEMC~h~!?E6s~_-d$ZlJQ9lbV@s$_!p)ZjIv9J^Q>UE6%N$4X(Pm#jf za&3A3saHMa!YS;Ja?73Qd|4TBqUvVuhCaL${_uxC?BnS7e((2uej;*E=o%rrP6S@j zU&tL63VB(<0$lLbiNK+pI>3`eL>A_`*4EMG6subv#xM28Vp}o5^c#5c;+F+pbX?>k zW0SHcA_aZo>$K?KY~A34{3ans!Id8iHY^CCPa?ZWrSvR+nE8YJFNZ$V4SkqLvh+cJ z8O{{^!$M|rb5mX(7t)7o^i~q>LC1zRd_@R-m_L|H;DgXb2g93u)H&Fg4jef0gGS6D z=vU~k;i%>OrIA@r-J`js*>?mJ!5dP$r6)!F*gB*Zw$PcW55yxWq@eDfR3=s7c%NNgBb(e=tKY0bPvkMV_^f{(anOhF@P6?$1Ya)){tUxU#n>ZVQ1aqte2 zOPJ%ZLr)ZaoPWgM&qm7YhcZ}s?w8SQ0v6cwJdwLGq-Euzq`leg$mX7=F zQbpK#&q-I?1yfG5X^KWmzYXi9uV;99DZGVfC_GL4r^@GG(( zUL}DiJfD0JqW0*2L`ix?QFD_mqVLJugMYdB19r}I*@J8mT@WQHft0kgltotYa&VIL@UfD`q3Z*$l9xCGrc>ZF-h32AXg&xUuz55@SwI+B79fon; z*4E}Y7Mn+EttZOI7(yR>^2sM$hdD|5z>p(D87PZAgC063wPDc1h?Fv1IAar_zf74r z#m856j*B)GJAx~;T`y-(aAe&cc@zo0;1?{4q_+`gs&W(h1pR@{3VpFbhEv|)oWt0ljnoyi$+oE!?$`?G17W8#o{$5) zkAfHZMGCsmw#OfT+?~6zm*Rfp8|(;wq8EZE_D)XnhC0AC_;j%Hl{{lyz&o>NX}fK$ zuLfO;!EikwYgZ`KE`5yu_@3uI!su6aK4=F!H)uj>w)rEPZKE~XHhHNm95utPR5YMd zCbrq!(b}p_HrTjLdY7)FBd2IglKhu5F$ab)~0I z&P2`9!3SnfVE`*01l+=V@jT6%eXLuJhty(u0d&sN+G99&IP`vaV4d6&9y+0)acm*_ z2~ItYa_VT=C#RQD$#s|TJ&L0Uc^i4dl$56pI7xKPkt1KeuBbxYD+%E%tQPgV4ruF-nG zA1}(HSb)hM(`O^()YGJG%#Jq8Zr8o$eF@IJqt*5ql8w6O>-<4iZlv~9%U-=Z@6?A0 zbMlpz zos`2dr%Bs)(LSO+Iox6(15kSO>cKbN`U@v6U>udBlyBE18WR<$7#_5vLH$2^YvSxg z1R;-@<*<*(J*uY8CPkzI=kD<%J<^thOwymn;T$)hL!76lPMWwkkWNuo9C6B`UYwjf zr}Ivf4G!f=a*w|3hZy<#?<8=!pWGAr{aqQA*6Emc2nu1&WQp+P<@1S7P9n9IiGj%) zWeB`pObNQMz|D&Ql&u#6M<#CQgToAXWNE}Xh6syzL}X#|W0K|P3$epYPw0c9L0bXPD>~RGTheIR@}Hz5pb4oy8Y*- zU)cXx`z?E~!mPh7cd3om!Yzs_N~tFy$>Qc_IlDX}XBR@ie|`7;`ut(1T{7V%_7_?- zK7U#g0-i0?f)deAr;l(NGG!Qmvb2M=u2WyBZo12Ue}fi&dphjn^WS8@vEWiWP0@$q zOWbV!A?v9y1AWI>nI=OR1w7BY!Vh<{_9J`kNriyFYsX{uSw%@Y*16iowl1+x%)U~Q zi&oe&g@EU);p4XiOZuQfbUb^uy%-}H&KS_}IsG0l$byE|)KP93>fW+tvm1FBVL_j$ z8>0{-hH-$ghV0=bGe#k@iZQ|bSI<<6K8y<%{Z0gZg5#kN{4-%aBhI5vnlna9p#9T8uu?zp>zk?nWOY zD|m)%Wd25Gp|^ndV2dh+xCgHybBRtCjv%PLX7Q9}7dVNLiS_-q+yA;!(ms zTE$6I&Uj>O4{9M6-T_B!n8JiE1Rk^l9gY__yyQXO0Dp84`Y?IP zBW+w{DT_AB$kur*1g~4aPTQJJab7GeOa1T+mM3BC>bWM$ilpbxk}A9T`5 zlP9?@3Qt9ZR_wv8UAx^LyhB@p{R3Nq^>)}x$DU@NoBs}b$z(-1kUfaKBTL`;X23@w zgUABpJ&_0C7i0U@QK*VUeZjLxgs=yHu;m{6)bsyh@0oRlUEOwx?7`;a>_MU>`4-W;SKCjvKV)Cs zb)VaVub8k>TSULlUOMA+TR3ix(E>qDSJ>KY7Alz4mOVr)h6cgus4uD$VFbrjMLVTLzNw@-Q_+* z&PL>j?3@*Kqle*ejNE4IfiH3xdh$CFwjh0oj+Lj6bnBQCqMiL57SEMXn|h0bm=KJS|5Cr8Xtip za~$If{fhC9o*3&r!-XessUP`=-h%@QIXILML9*BQxunm^&Ho=vvqY^a~MKhx*7P+J<~SaNwYHxJj-r zq0gb8F|Xk40vz&kuUMjuIDSCCVl*r)gHDDH8goI|S)n5p=C9Xv*vNbcQ)o*B4TC1s z2~R^)`iyyu`Go!tycsKl(IxPPCbTUJJDwFDp~bFUJ4Ndjx5=hz{ggEg%C?MZDa>BC zYk0I0c|(5edB#QX9r{1E7tU7L>hUXvWY7YhB7Z5~%9iDQMNfB+=jA;dYcAM@SqHvs z{(7DxYv_O0B;bdk68(sd#8_m!hpeFuGiS_n{wp?Cf-dxVR<_0c!RnT6UmnMk$Qsv?C!a$P*ea}5j#)k9 z^kL*w5D>0W0G%b^(cW}i;UI;h8%}PXS(z9M&?}szye{CV-vV6JPu^p49y%n4D)=iI zN11$q0F{G*`or@GJ?dt=Hll1LTkj=MlR64(;@R={V5PX5WvlEx&f$ZWy$Yx!9_X4a z-weitw-&4IZ2Z)rf^+TUJ4)xnaJ+D|2|hHco`L)S=Sne z00tf?GcU%(;0vDd@`o}5#zO@N2Yo0KFruG$`I4m%FIK?u zM9~N3YyW}$$>Nh1@SEhgMbsHWz(2cxlfJ@y!v22ugK`SemS8P&?YhYqcvK#?1jCtQ zw1@K6q%4JleMm`&MUigEgz}40OM6L9VG*cNF9>kRS<|)MekA4R6I*^HC1tN&H{)`9 z)9jboY2(|D3kN@BWtj}LnZBp)=!g7cq??exd)HI;o2$QJFByBX{qB<2Yx}e0g=#nh zZIiRhs=e#&_8pJ7vx{{;qgiR8ePY%t?Ls-bESFL?a})}hCY&?{2OU>uWGHz|xF*W6 zUE9yLJ#1fGdy_rX@u>aA^h@ox+ODt*6lrIIqBD`GE9r+aI-+E~r5~`6u~sjeM``?= zl*{Ffll_X4^qj(2-mh@=-%$woyVw$}VZ6O-^11pdR$GEiIoWb!XL|nybe9=IvsQeA zKJ+cd2#XmQ(xKpUgy&8~f<7z~AU|@VPb@TG5X1`?jBO0)293G#T9`&YVmKj_VocN% z*B2{&Xm`9su4j9H4Xb_>fOiFci(LnTyR1CDyjeyi<-q2 zHY)%ztXVPo_b56T3%=+RCprR^@m4pnh$3iG@piikefyJyWeZZ|A^_I&AEZ{+(EdPK5V-dX(+TfJ3 zAh$reEza(V&WoN~O9DRqQHmFsUwK);oCY5BBYid0!hbC|Q8wl;>So+Sm%@1x`fv~Z zo`rtek#%wfMix)kJt{zq{It8+f+2NNFVCUJA&q}%MSa2F6;xGKR$jz|0}IbAkcQJz zww>@b{f4a(_6=hIeVA)#l+9l@B566wYOEz;<3;^K0Oqxa_pGrGtp1jrF=nw{x8#jBSKDEe!XDglq{CKg z%d|VTKWhJ5A3t;)e9G;?kIlT)w{2d|#}9>DM0=|e3YCX4R7g@j3agq*w4|SHf5g7D z_6PQhz4zOjrd?w1IqB7I4^C}M8|Z|rSub0sb#$xClu;Tdp7e|; zNkq-PPxj#VWXs>SR}NB*ippnge6zh_D5Dd5T;_Ch)?LvCq7LJT9E$j&E({cS_L*y5PKy zTz2_XIp~T@1pka4EnP-)60-5v>BU6>bO!V(qE5n>G4@{!Si;NT)2w+J{(*0YW6YFl zD{_Q!GgzH5-nMVY=4yAn0{sWu2OH!>BOj9a6TAH?w~iK6GB7mGNOcr!xJy} zxepI;94e77?2u@Gl*#rBa|AesjD)7VkAmL{%SHKm9l?Wocpt)?M9Sip(2%W$54jTu ze8oJ=+UJTDE8Om4zD3Wb4Z%0%;D`RbUOL4YXPn`6XX}mgu!XU)Hg4SH^{`IRCO#c@ z+UTV>{4$ih0XLlc;R)t?wxVilYjfJ*)B}HmYuI7s&<0vU*TLjXz}eZp)7QbVW3Yo6 zTVWGMo_ZhY9};{DjiPPQZ`t~gH>|NBW55j^4W6fOSr?{E@J;C2+49+Q>MBRxL>cV8 z=bn4c=|Nq{8(<6<@6ZItO0I!Z-K@TaXr z-5IkRg|6)?hPV~&K*?*MfC%0q-4?vIerig$+zm-uIM#W^*&c^J2Fj< zE20k$JH3iB1PUn{nYw95B+dnkzQCNL4*ehLV>`{I18v|(RG`*&tqUqY&Rp(vBz(c$ zizrW8Dv1(AA?{_Kr+2*G{&UXK%ziV$D|xQ+dW4h9VYQQ^!^;-Yji|RljyTW-Cmgmx zYdCyVThk?5#T}ZXH68Cq!Gry%QUxiStsT&jh$3{1ZRS#TrEW5(MU%q1sbMIm97TUr zeejHL&8EI`C#%$(2U;fu;%|Sw$K%l7CUD^@DW6>VUlnq?3%8z$a;(+3aVIcUa~wR~ z@Oz-3Pmu$#c^=p$Ar!T2j?igCs9c2U-70}3s8qHHmm9LpMUrM(dype*``W+#F=v<^iT z`YdkKi#FleDdl3ll#ly&ud7*rw<=nISuXboLZUQlA7*Up~(cIVDt+TU)z#qK@uxV?VT`S#Aa@3nI$FSSXH z3h$5ek-VOro-WE9g|h$P=ta9JpG_fm*2)p-bF05C?c}h1ZrMBSj0q=sHk7mH_iwR# zcRp#~*Op*E>tM^Y7W?i0%if#7*>x26{x!R1w2nrbC5?2)+9k`DWgFYr2Fwyjj7e

    C>q#)3PsJp-@lI2SVhD_T&8B(|gFiw*Gtebk7cZ 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 literal 0 HcmV?d00001 diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/img/training_loss_base.png b/TensorFlow/LanguageModeling/Transformer-XL/tf/img/training_loss_base.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec24fc9ddd07251bc4a1e8f2688eceff43211a7 GIT binary patch literal 335249 zcmeFZcRZGT{{~Lo8nlz5P@(KiHmQ`6WQB|8o<&qaD2XKb&q+Hm_Aq)}4sdmG!C@ePw@7DK_arJf$e>(TfvgEP{o)WRw|4 zi)1ri-pbIH+WR3%>SlvlKIy&k`eRQ>SQsN~R@Odqoe41)^e(+qs8{!FFg$v(R=B&Z zI{dG>NIUlX`iC~*mjC_fEHC@9{omj4m!1I`Qi}h5q0@I0)&KsUdw`7ne}A`TBiH!f z-+R<4v5o)zDNSL%M*81hNxZIJF8zPqLe48Mvj6#a63cV{cLV>o1OK-J|F;AG|8}6~ zgn;wZ4NZ0`{MmU}@OQ*)WLVhExx+LxE;UODa0K46a}Q5lz?AG&9^-vuyvT=fk+-Rw6>JW&ab(PU0Q35*i$j)4shv zU$FenE3zS{+vDo*-o*~95{G%iAJ!r4ny+O1X@>9amZ+!qTzUEC4Wm=sy`-M%a6aD$ z54bD8%5xQ|_Sn_Mh$rzHehnKeUijsgXAr`vV@kJs#}4+|rj3wkY2@JaPpn*Um6wxK zelFo26cTbmmi20O@_26Vu3%O*IV!(%fs{v%{H~?Etnjg{Ou%78ReY}Xdf*$`XD5cg zou^lOcH-icxYJPmOA+U(H;f6mEgC+fYPFgJ#G0(#U;Z6_qqgnZ_5H=^yV@1zZST%q z&9Mw-3}(Bc_@ltdiMso}Nuxp4ZmADyN$MQklZEDOyr0U;F9g!?-+UoDp3BfJc-dM$ zlv7Pw`VM1)VzfwmzC+T=%1UR{fz*)m^zNz@RP6Om-R>s~exw$=FORh7c?O4uUWpl8 z`BSz#LejIC@ryym&GF8>PKJ$JdiL)vQBXAE5OgXY(TTUSUrW%;G%B8KiPSHeAxlI?EsV;biP%?OBa|U!J9%Gd<9I0d$)b?E zy*f%*CFx4q_dL77_hv1eMbovSG{UxT8e69a>qgs*p9|>iJ|d)qj~B>K9Y1NjQc0sdh>(7Za?L6BEZv8upF27qd+B1y<8e2nkU1ZNcKJt`NEnew#Z-sxs z3E{u5!1bSe*pv9K&3qu+XX`qxL*`IR+H(=d-^{Xdmo8l?@mLKC4Y1+(M6D``} zCT{kfoowq?y+*MOJ80RuR=IHtsTo)xHtVxN#t=*`nDJ9(rP<2Dq-oo`*ssBCCzG04 z{XPYbcD_CzV2b^8nfh|F`NiqY-uLf+t*Vk|k_%Fb7IEOeR!WkhTa+*5tPmsCR?UzW zd#`wP?ke9~9Qwdoe^uz{hpqIgFs;7P(In+qxr8%5yOwZLhB+NNbA&HtQ`68y7;E3W z8BZM=7RD^=`|#nnDz1{`e1}n1At8;^r%xxU#68x%^^=TN(xXtSC3XQ$!^_E*Hp5;Y9(OWbRkwQIMBz(hepsmY_wByZQ%@jNtsv({D6#%>YpjYD2jxWF6p4Dbf z*uKlm&`Z3|!p*Iuo}@dCH2jUZC$cTgPKsQGWX&rRJ2YSM>Gu^J45^ z_=0s`@}g=QV&$7(pWi*bc#w`RwKiJRtnHm)-cn6mj}ZAV%CuTOr>1x{8!Y^yl1lTYy;R`uj~7^MmB@9XE!)@?H8=E=?%)e=>C z=F{{_bXS+>TT*hm5}!QT6DoO-+zeJpzHQqRMvJb(wx602fq}1ZXkk@f#V5=6kKo2K zW?ZvkV`GP32S_OU?4ngIc5|L~ovc5z+hlR7pUl#De*6awj0&dqHbTHGqRtDSNiu1C z>oOc0YTr|OdsB|n+KThV=Mp;eopu4Ns_{oXJw2y|-8(FD5@6ph6Giisw6r=e<^;`K zUmQDgKOS*|RrB2&H#axcY;#SAq59MNPbgR~@@*y@j=W~W?I^#*Uw*wq_CDili;iqE zi8Qm8)B$H$uAs-#@X6Qq!wmz)QF_9#+=@Sc{#esEEw;GN|1gdcb*eR_gKhBkVkIN| zMw7oj87Z`+>iGBd-FR(W7sI)XjmxSk-oI~Ob?cKSPsDnqrKPKL@7?>Wce+mU)TT|F zrhcCi5^B{ba>=SP6WmdDK~d3hflg>Se|4_IzqM84I)eH@G2(oGhoc9A@wM!Ecv``u zXkJ6#s?p#Zx161+(~9OIo`#2q8;jyU6}YZmkE?P0i_?l7ni&S?V&;eY^+-ucugpl~ zovC#_o;LX;6oDjiu%f*DP^NL6pqsn9T@lw#8h&e`iJw07ob}5l85)lefvNGsIeoJu zJH=U1RW&HXW7Xv~{MtEtba>bVX|B>Ra(Qly&$3`Fds9El7a{8&FK5eI;~O4&&)ueE zQ;SR1*IZvKg!3-ObYvP|Vh|Q?>vzyz)20mFz^Biu7^Y_jH-!G3;|*W+J(2i85Tr~I&s!7{F#~IUz<(y%yavG z_`ZI!R@T=C4<0ZpMM_9WaCX3fgKWCp=leSp;rsrv@}X2q;u~d-aq>o5$gP3n&5jpL zunGvMy?pu7wDGM!qL}?ab+|TP!VzKHa&4EFMl})nv)`|(y}Kdn?CQ$K!*jVK$EpP> zl+mzePkpTXL4J2U?gLS`SOhB4OYz>B6+5c|ki57SLeoT;)Q!(&HmX=z9 zqeXMFrV93cYG$S>K_%|J!>Br~xQpt2{hL#LU*zQF8)3#2L6ze_3UJJ;^0KnBtUCGc zwQ?*|;N`?Slhjj`O-&QAH8JjUn$1a9F4aVys%x(BrZ{Ln80|Fj=Vw{qyO1@Lrue7u z13|JaTUeQx&YcgSYesO!c03CA77oF4;!mXgwn z8}?rk)2|)s8y-#o);fcvnZWA7 zhb1K?NNWB4{lSCIt4p(up?V%HNzIAsDOv;$l#`YHmZ+9wKh-BI+i=*b@TFFkDG?>} zvC~=Z%Z@~@z8EQ(sG1PCZ~y)*+kQDFM#j(FJ9bj@o<;Ul_oL#N`t5{tn!mobTocY& zSXfA;VFYFZZV;wX;!(t@TNv-YJeL4(ZO^s2o;u$Yj{I#l_q#3djmzvv!s)wPki{F; zR+s%865l5UX;5?cMk{U_gB{t&_bFiS}2>J&IOpXzpd4bwTewE7p3M7COTJSV`M z*I^Bt>QaL&t(~$J5B4%VYHCvT$*o$qbw$9bfX(~k-Ui#|LO8BILXwLZD_9y``&e80 ztGD;M?&!-iK1Y7R+$IMitwdJT=3quq*_uJr8c1J{kYca@{OFzc3oA4YV%KbVL@VKT zE5_n6y=2$1N>nO`1tV*Y4ZtV|6sX!-*mVl1H2{pyml!trU(w|$URxR!GiLu=Ep6v`^~e1qt;fYFEMa)*FUmqf1glR&3XUnY;`!$ zdRet}o%pzh5U6080xdB(V3A-4F@LOS5 zCvJR!H{WT(GD^(3;n*5ZNCt3d%6)xj88>!zoO}9mnr_h}_+r1WsLii?-vI9TQehQ} zl`gf^8t;r>Bxq#3%5WUh3Y|D-(~4T*=h&FV9Q~0a=9Ys|izg(s>H7k8LIyJf3_4kJxs9qwz3gZ}6IsHhKeYFoQ>TIL+?cANIU{OauXY2h{00K)!b z-6bV$gE~$>f=7$1!h3xWusw>4abd0NMU>?0Fa^ZOaGf95w!uMGu%#6mRG=K7K@h5$ z)*=k@#nHd3TCd}*k2g`tRscY2Bs)iAwd`xT{UKMU9YnQ* z=UKGB|6;!U^gP`cK2BrY%XI_~=Zf+6tSa`PcN*-9e#hzD{+!NCdG5Kk=$rbIn~Ys} zVw6U}^bi1mbA@7*(6>jkfBt+{(+=erT>ka*r#{U0M0b=ORXWPKX+|a{VSjPYwZgqr zR0DguU!K`oW|<@EAK>pVKyiVcNA>x-n$6?+Z531bwczGY~q7@07#Ig-j!=lL8 zmA~6c0P0i?Ml(x<9uzS;C?Qm^KJ{xHn<<0bs>2x^YG?8$Jw08UEYUm5;1hXf5mLB_ ze*$m{wMy9hv@M@;tvz#U{>tFjepF4~Nps6Ph)5B6X|jfl;HOEL-=oqkS{#V{)NTZ% z;s6vY7dSW3ZN<5M`N#={u%pN&Vgd7G9W9+*?+oQLW(iCcTD2&K3Y&b#jv&TpA)AlG z0$f_}FJMao-vlzrn>NK?cFsPyXU_|O{(16D&O$_blfl|(WGu6Ap6mCkm|mQ?81cr- zi$qqlr3k>nr?*Z1@df1sdmjKZHzAUNBaoor#v&~oZ!qY1K565kwU!Y{7TDuU)%f}~R zTpQ)Kd~4{XPZLss^xzzzQbg~VEea%*34Ue82)F}z_6q%9gKLbnbSKt_8{-5#*W6@@ z!f~d{bt1324lzW3ID@Nr;iF+8BT*dXblS=n+kEOr2)c}Nf_BcIUQ!o%smMr}(uZJh zK79D#Oy@b8l2dKm-_T~xDl`40wS=9h-l#)kba-) z9~zhxcbyCC0J1wJxsbmPMeRua%ez%!$j{*&$e~v{jk8gNwf5UsSy?qFsGLWMC%9a^ z5^*I>*TQms=o>@#{3;f#rlAp58zX-8{Tsh)&53FQjtEn#MJ^7ZlQ^c4Z?AnM)>rIg zm4Vgi+-ELN->RLz2C(Mq=cj@amOT2(C*K1O$ewNHg6=cl&bthR8IeaOdU)k& z&VFC>*7Vc(NZ>p2n(>l#kI+dvI=YdLoHT+Wkk!0?RPx*+-Qwb6KdVxnc9F|$^%#6N z9=L$Bcl3KolEdhC*+2sW16x|X36%RBXe3`HTibWv)AXKOxm})U zd8LInJ*E>MNv|`=&~7}Es%mYWju11zd*bL(sofF_FF-r6v5Xd1r=@e?98g>|BCXo5 ztt@KSc@cC(;ICi5f}T8iv5!ekC<4Wp41Qh~S=07|^a4-@Cl_;-h-G==7rrFQ&6x97SJLSsGZEC6jd z3Ua$&pcW_AS##>dpq~3+RMAhl{*`OF@$OdL#XmYNzb9)Jj{(>J0L*q?%UW*!1B@5h zk!lq61wlmJh_uS8WOcwg8Ge>OmfbN^N$)uXLUm_GXS5 zKX+G`4`KfX_A?bW*=5alQrp6two!8B&s|;5RR^C5cMsgvG{-fT$2`-Y83Kmz&X6Fr z(y7t3l0>J8t`S`RwnQtZZ`8yY6kvu~1M7NMK-<^~b#w0sJ-63;l}@&SBd7B?7Z+D3 zk1z%KJ7aGfra^O=+OBmV$A}K#^`@Q=cPRoBS&kh$jnw2^OViumul8d3O|EvX_31i^ zW%JZk`0lHG`{7rptjt2Hf^$*#PDcly4J5K9ReCN>H_(3*0bBvN4hZ?6fYT;p4-lJr zp!r1b)}Lz}I{B(_F4fA%v}&o^d7H8#r(@(56xjcWJN13uYqt!${hOR)=Kbf0{K+%f zD?Qhj^~Bc}dckKftI{LyGMj5D=4n+hT&>-G%R=yK#>`c1cTlnIot#6D_z$qEGAkjw zhF?c4qOey4aaKK6^=Va==FS|3WYeu=$THtIum?R;G2}IIi~QYz&8&b zZ2MtTNo(4Y8V$ElH^1I5S1IMtGQ`2c zEG>|iJaX>v^ z*>%AZzm0JopvLCO!8z0}TzF7sPE&S&XJZhH3S&YkUshjbbd?z8`EC?+1KA}dp0{ha z@7PiJ%Y%Z!__4G5kXv4qO|3+edBdBB1lb52uY#hPd-=kpOD)Jn;KEN3)FCLYZ><^E zo57N3TL9vkA)`cyyJq8*4LEs@$s(IIAh7UTb%`x5EZi*hB6V3F%Q-+vsoFDII}9ux zK_uBjNzE=lsM0Cz71pr_yFRgTXuYp*yd;_O`SS&}WR1(WZ{MDpoa70}F>6sY`=0z% zHJwLCyBEkXfnZR(+~;-d9Jk66bqy7#c03AC)6Y+i5z!viw8k5zMBDrZo}(qJ?{7XmGbx7z(*!b5z_PQ|ZA)L&a4aI=(rk+!ld$I&P*20i zTJ=%FcKm3^`22c?3JOhwq0BmoXE`}JOY;+HPF>C?TZHo3=ZRK3NnhpSbM+0nJC&_5 z?o!Jqzk^JM9HAN4D|Z$B`AA{fRhS2Y#Fm3hMLRQfCAyDY2It38FO1l6g^f1Oc0i-P z*sh{qjb9lob4@tkd6<6#z%W1D;)g?v&Mx}&ii(PnhbLp|KR;!N&eqS;61Z7^6zEy6 zz-i(;YW>;1XO~1M*+CYWEX@pWP#K)ZW}Rlh2t{@P0yYz53h2ssKwT-#Y_yw|yLx+Mp4qtpkzT&9 zPr1Z4_?v$`Fd`xm#cvh&jv=lR|Nm$KWR-!C5oAvi&X3BSuXk;+&a-Pzo&T$q6>G;! zL{ZmC2Ske8@EUM35$Tegf}$!*;qvJiQgA{`m6B^OanmLfT}4YhcX!V;saz7SHVTS~ zNe$;SCh`GFW_uyYLGcz?@bMpZr~sALtafc2#qGa6E0;7`JFlUWPTa-5*i(2NWwp*& zkfjild%;GL->O?a_d*oB83? zP2@+TYIqD*BoR7>wVhvIsFa*R!ML$^$WlZnt})8NfFOC1DsNAfXv1%(SG~Ycd^u;j z?4qC3QPZX>CMGshD>~69dj0(A37;eYQaNDFP?T%2i1y4Nc&rL1?+Y`0BEA`3rFWVB zipUmVv~@u;_Pu-e4$J{Oc7{~KnYABR{{Ho~@DYu`*QhL(<@)6*qHdn+uNy#pY^Q!0Sd8F%4X*+ipqAoLjmi1p7)j7T?sIL%zW)Br zG2*WL$U)PZnNAbBMPO8R4Qg|3n7UWw!M`;W)|-VKe~0Dir0I%>W*p?wwbvNgtchmB zP0IqUT?~;wEL)J*9R*ar#$qoA=I-x2Om44On~SQiNNE*8W$5-+Iwb%)gi2NxGZSBW zkA;^?V@+WE(cr76;3~W}eihu|%l6#x^2$m!adDkM)qH!CU{0NO!xa?i2k7ZNIh5Ig z;3cMgpPv#)Hg5t)rmUr<^|Yf}cuTf<+wp=QF%!bVl~S)|{5$hIHEm44Cx_>)qTiFt z^XwJSQ{)D37b9p9@$uuw>K5>65fbkCi!P|q0Ed1E)MTU+?4aFB{yUpq8N1~v<7sSv zwV@ZQT4JB=7dBZUWTf4aNeA(0hE%odoOGyUoL!e4h^XKiqk>lw8&zuhKUL~sFQ3X- z&*J_Zw+{#P+&=7+RwNoOod`*ni!-;d>lJIGa>)CtDNLZ~ydt9-8bqDkN0%;KsDE|N zFDgdw5JD;uI~SKgWSlb{#2)7U613bRTxn-&YFa!A(E6cSVbHgKrMSaf5S(H5XNxTJ zwgznpB4{sCsTdj=jXb*~!J~K3VTX1A3KmAR-B^+?7$a9&*2Y_#3r3>SHKsZSKzDJs zsSodJ+I4=;sPNE5W}xG=vFM}y&TSYV1lo-*)AUh z!oWLgV2}F2=bpOes|0B*bz13f>C7oFu$ti=sS-k>wtWwDo%@5$o;K_pB-(b!c5jk* zSLkrGJqZl_6*8aUJUx)8S5k}@2hiCvUkfhg<0|}fConLOQ5NO;WgO9w$Ir!G)e(^5 zC!(r!`l9wSGBBJ$C0OuEu!mVpth4Z7U9_k%=gGcm1i)X}n?ml?E(K06kN^Dn68(WIg2Q2FVi zTA!W;w-Jwy)WLY2hlV~xq|+Au8~F8Xv0h)DkL)12B^#WO5dsgv$pZx+*t5r)qp{%F z!s6mEFiOti(pXOS_p4S#v5y|@@X1AWI9$9u-UxrM4nLY2Ytvg1F8_l4YPP~9vB`V; z_U$`j0AiX51wP>?D<0FbA$0iU0^ceii+@8HbO08OTaA7Db_7wf85F$vcmX)I>M@80 zh-UJc`#ZkD^{3b$Xo5~H+xi?k#o2S9+YNEh9!x+)+VaeBuYFq@GLRM;j%gqWuU6QD zoNWRNz@b+xR>!0QvLFo}ADJeKh%+j|o{aV)D>yRq5>R&{_Crt3DBwH@go+*P>O6(a zsFtAI@4Hmo^@vtf9Yu05<5*{&3P^(HOOmTW#w)l0zexilN=TAxLPSLuK4EAS4N5ns>*UwY4?pfgt2eB4|OIvD6=`H|3^i)tdf6 zKjD;d-7t}$k=T`eki934J~gcQAL-lF{O`;3C&T0%m;b%tl6{~jhdR>C0g0$1Z8dlO4_n^X=xgHg+P41zP^EsMW8c@px2&l zk<`<3Z55_SG(}LVsv)!^cqk*qhV&Zr~Ak z`TjpGbKq4kcNe=yXV0UOyNM6L1G01>dcPmTkl- zt5hlut)Y;smX}cs;L+Y6dIH*}xS@zUckc$H zR7SmPf>dBsh}2&ZK=1i!RXt5the$^;w|;GJ8*{Yi%)Jaiu8ayq4V(lM6O#$(UJ;j> zcxT1wff_)_T(uKeQz6iiUkq&c1z^;mt1i?OGoKFX-Nf-ha4`aQl-Q`Lwn!Ka{D?{@2lT=a(c-_| z8|^%j5cl4&ifVPLii_yH6Gw=|6qd;XqVnsbA~+&ZLkU|LgD)eB6T{55_nzw>xMK~D ztJ$jHSc7q0bRNUVc*}ftw;+q@)HVg8Wq=rV6V`%0InVP(n5}O>Knsy{X=yDg5V&ez z#`8r231ipapawSuPD7ozf&EbmCc%UWl@ENJ;39^GZk{`TKCqWA!T$bOLgYd; z?iwB68E1T^+Q0wV;MPtMfyBZKCW=SXyBix-uvCKC3Yu-1Ya^4Y)m*ews2_U6|h78;_1GI+zt z$P~$)td=89^DKE;OUo5-I7Mg*q!L^Xn|iV}%{(CX2)gTanIv(@085A{O>vj#A!T5J ziH^3UwEz>){<;r}6aSomtn56{2d?i=l!ViG6uc$c*zLxRH^m4IVxh~dDsLYNT6HB8 z-7pkPe4)%*5JJRQY}vAf;G3N32tAtDofrQYz#jDH>k+01?HA!bOSloJb=2M}Pz#v1 zDiL`IG827H$<2ch6}-RkW#7iTW*RSL!StaaViOb7207|S914)f7pxEsbb&gGojZ%( zI`29xs6db^5-WestShO>ZC>9}mQxP}zbTSH$>z~I>q8i)maN~J&3v8}>5S?-W ze98j{Vu`avI7LkohD_WyF<~X)N_VS=RD9|)!>8iD@7Rnu$@LW#2=y``!Am5H2*en0 zxvW=GiDn;4F&9F7_NjehHr}@XD?u?LroV|ixK?akjzuC z`Y)zMbL(SHAWn%aF)+$=y@Kdhl1Y>xo6v~6yq9@&=opJxNHW%>=OljyM3v@YLGyZm z7$Vl9cYX;+p#~K}bD^`{>{!PYv`W6@L|4+eDu9OgUjA@D(Nmxmwml1Z6A>v1VIbbu zqFq~g0OFTuVLKT@^M=3_EfEJ}jR$iLUY$-klv8KQU2*G{Eh8XYzN70(xEC8Ms~p-W zall~=vV>ZSkO!pepZVcD7!B58f7L+(isl+nF{GWlyiu;_ej!+CFmSycW zB0!OlEV%wh+=>g#NxQfN()snR ze^lYQzW=B$J5>q37y(xv+__@F1PXT`A$8P0j9;J$KnN)aVcED6D0kYBJsW@RRE1r= zohV*b#O@G;C;&k0ix)?Az%jbc{r(280SRkTaVdiT;eUkgJ*=7eqJQ6B=Le%qBC{ba zL^k%Kav;P4GOBf{Oq~2XX8;% zK;-iTCF-`7xz!VY!bKo5%0nxUbcHz7x%p{$}ZOX#LR@+$_o-nw-Y6&@0w z>eJ=FKeh4S7rD;4qNF`WkRK+1(PjnkhgO9%+YuKtqe=t(-dGXpz*p!7Ux3$M0Zfz$ zpi2?98=$=U{C_T`%>pQWDh!G{qQee&OoURl5JAwwv8Wpmeu1zFe69`&)B(r@fJT6@ zFB0m4H_5Snh$z0XdjE65R7x`TQUNLudj#;xc&OMyXQVev$$&{+DPk%AsMOdM!mzq@58yg!g2#E}%JJtGq8bjf#}qT2eWIwYi;j>x+TvY&8GZEH4-sTpT0!? zqx^q=G?;*>r~IJW&^)Oar3BwXGAl8#SO$YN;HX=*)i4Q-sXX_EKl;t!PcEzq*-idB z2QOqheq5RmFE)Q=`0pxCJw~1+uwbAnU@62M`N9l610Uk5N(IuPT_E!2JFOI`C_>Qn z%*giq`H{>{6g7gOxs;SwUUX29YP^RnRmp$$1d3Q=wBRozZ51?UyLM_o6dI}QJknY83}Z6S-T}S4^ct;+_!Jv zT%aRjlqEE78pUx!WMn!^>8DBzZwEemRx`E|ayVbxoBY7k?j=t!-5jbbHH=V`q0A3r zMB!0X?|oKEe^p)Lw8 z5QPF7$D1sdxGMFIv6ibVMHxrkxwAq^rKG$T6Z-f{k%o+}{~sqwIKd z6)Yr;o5@^jd449TlZy7~Kkaj6ah(4&@Qzhsk~P8M`!1KS`M(-i&WB!zm63lLJmvoX zy$zg$u7+7tHX_y>Jiok>ZZ^ExP)7qX1VJZ?7{Ys{8d%gB-(RsiLXrO0*G9{yKN`8`V_TIOOZMfp3mZ=t znFpLZIHo(5(_SsUm9J{#4Hz#z-uw}sG=VAJHOUi=CsJs+#JQV?v;Ij$n5bGhLrP(N zz>urOZm9kk(N|im2mp21`S{^O7Hd*@$fs(?fbS1J4SjqyMV$cnQe&HQGc?`Bf{iX@ zn1m<(93AGbh;w;R=ouXJ+KY)pKxJ&d^VH3#D`rr_m4%_sg)j&y&*)EZvHhn1+`W$i-QQ1Ny1MQ( z{ANt=g42%BkBK5R|Kuh3Wy`^Ul`|yT6UP}C`p2RL&U{2oBdK+Z+Ul=nLM(}Qd(RPS<`wFVmb7&jo-(e)T6d;_w3H#nRPPu`_DFo@K=5e zzj5_lpNU$2Wo({SAYY;3DX~72jKnBC2Qp{Fnsh`wSVsdo<&wHB4aY%bfIkFQYzzbEc{wl$$pU=;7synOfG%kP zdSH}A$&YeqU9E`P#KS_(68J{JXA>2@+O~MZ+QMJ@lT92S{DT8+SkhKy$YzV# zlmnaM3=epdX^RMo_DV1ve!MuKDifDwHG4-a;9pQu>JCV; zhseHfq53?F!tM&hbd1AL$*Z8J*cs00WftGb@p2%$<_WKvkLZ#4lA`yFUrx2w>3ilE z29HqxPUm`~%o68*Z|TOY{`7m6Rp=MornRIm1nOCbGeXIdqwgnwn zqHus()u$I)1s5y>?sugl51b2j9X=r~f7a-16BJy)8 zC0wn3;NZwfmS!=oHZJM=KD}w=`dMFv#~562%A<1cim;CL8x(W;r7~Y^+GMSK#HN0W!KlxrRb|FcBX<{ny z;!EmD)|AXp+dONbw4DDAa9W-vrTBB|7e)=hy_{Z0$7lvE7@~GXvqu#=UP8S3;qF#~ zT^Lu~Un*dfq0#i>`Z<9ijc=U?J5vo(g-X(ovYgNGsj0HbI~t%6d51OBrv3cf4)$SP z!PrOddFI=Xb*yh)ydSn)+vcVw(3;`(sqt4r&l5S*nW;x&X(^tgrX$_?T91n? zs#9w80#t^JuGh4jJ{TZuL6oh3|BPeGv&RUn?C(S0Uh7nVSw9cfi^V#U=+}e!OJnB& zh+kJe%^9%VR##OvGCUI|yxFgrh;mH#;A3QQ%km=E$E%>8LrYpt=D|uzo?ZI$OLbXk zFWltS9B%3G_TG5f@vlFXHupaDL|Kwcy%4<3+PSkkB4jY*=)_TH4Y44jES4Xi-3#y4 zWNK-^^nR( zHg)TTXIG^dJ01DluJ7lPE;`Cmhljs&(N27}GfR~7y#3-n>4WAHqw61h4Id!l;gwIy~^xqU4P` zWp3Ir^dtKd{d5NzWldz>CJUc%p{U&vxI;E1xh0hAn0?nk(w;PB#g5r`u2nJm&*GYs z_FS1>uUX#8s{4{PK|V7zO4Q@RMnTtk7P@gaw?eSvKcdN%*msmY0rSU*fTZ%sJCg4D zrrdjzB-*xo0Y1Nftv)+>2^e3QSivU)8z(IiaxbFNIx73_mPVi9n=eL_b}nMM=IK?_ zcirzeRL{R>WZ`I3@*0f2?mzTKyX&^6V1|nl*eR6jHhd$5S6Txij9(td%-F&AWG<9z$|@q33xyY1c|zqd#FLRPhNaQwY-5~_r_@f|F` zZJ$y)CHsB|4SjXzry?~Ym4=k|F{#+_BP2=*$!EP^Z5oIXfAM}+>a^f)MXD{EG{_Zp zUtnP^V0p!6V~^VdzAaT^Ch`=Yz|kr|M8=A-@w2o5^{3#YgSgfpMJIuv624l zH$Neyycbt4XCBz(-DT)l)44O1?SL$)#BRA0w7mCSdCr#Sc;()4ZNIFnxoO+ECuC9O z`=@v9pwcb&U8KD*U9k69U;jB$cH%ztAD+#hC=X`#OT5U#av-62$D3AT zsS1C+%NLI^HtsLoRQgJJ{{6W`2ad}TRxVqp9^O4Qn0Hs~8Q)gcjSG${yi_u5-B0el zXWL)RO(!;1cJE1xkJQm?C0i3p4)2xLwWKWF`1X(sua=ui8bX@y+SQ!FK=R@>>1wSwYF?YBbTNu&SjH$i9HsjqK3G>iUu9ODJvu6}r{SZ>i&7P zwufCaYHcr$kc9AN9uMMWiZUE<+s6mJW3)wdbTV^mb1VwTZbZ zYU;bZ8u>7JwCBsk7k{?zk=XrNULcSDf0uzTG7urZw())P<_zC7Eqjwaedz^eDW!Wz z!+$B%@=65k_A#*Rhz(9;xhL0PdyTVa%V*}A;LZy9=gzukF4aT}*Rk0K-foDK8tG4z zmf0@0SfIZ8&)NUGUyVxt7}-8iis*jFF2&~5q*^pxcXQC2afF80ZPsX_)?jV$73wEv zE^Va{GIY}%8(`shnrj;~J*9FxNWT35%jOL;{r8g6pD9lNV@{f_S4Y`%TpLr`9ompN zY}p$xzf`pjkq_$ZIpjb>G5tPJMVBSPt5m(5WxuLz9DO27p1z>;Tq}fDE;T5pVdg&KN^e=Z@XUQqq*5K-S5H4(}vD@ zHeAwMUlyGl%u@~7!l>7j8n#~FC-L{qlX@j5v)}Xf)(53|NXYsq^bVhOn<9m542pM)+oi0kJK4P(0m`MDlTE*l#fdZXs+!K|P( z#IId~O|!1EBZf`6bFsJPdd5S@nQehuU;LcByYP; zU&bvmn!rLyj&Ys6VsyI=G7dq#6(HNY#S7HtZw!4v{w56KaSH_ng`?EXv(xnb80HRJCGZK;2D6j*R+g1onF#mN2vJl{ z;iY(c;rvAltWEhTrLdv!=Vv#hDo7$0wa;#nFI)@@aE(c%x0Pd)CnfnMxBZ&BT3z** zeZTI1k1torRydw6ZK6+V{^?gl2{TEEqD0gnr!W7}tCa_NBBUQ|I9yZUGnLs!tM9QZ zD{d&u^r828Qq`|jmHF=7li*-)Q0n?<6k6Ncm#-{N^SI8LZ~JQ#Eyswuvhp2Jp^PU^ z7+`Y_abF`rS9>=bTT;H8@V!0C9NyBm3k${i`umSDF_A%L47up%b0f;i{H6(C*5V%6jD^u zW5Ba@8|_jp2b?I+>B6!w06)Etx8tp!e8sEi?${PW7^ zjHwAmQgiKPEBSj)D6s}>Tk(FD8G^o;_RI-cADzb+Use+Nuv8sTz6_ zsxDcJpwQ4>Q1Tx!lA@H_iviQ9BYk~+M_F0P(ZTmZPRFF+UGVj1jz1l`c{%6ZJ6pKK*Z8cXAF2Deb%8H^pY>fMb}^dL&X{F}+_N{m8$PegD$Qu0l^ERYdKLM#`8$6Vi_ifopb1yenh(rnu zEH}h>Gr!yRb8>QGAVSK~Q4r%T^id)X(y9Zao8?$a>mar! z*KLs(d*}E2w>c(p_5oDNKo46~n0=)U%x5}m=AihFsZGr-#@Bw8Kb(#DGHf{a<>d2g z=)nG-{`JcMX7LkbzmV%3J7k1UqNDvGFzkgKZ5su}UHo*-S#}jZM8oZgdzslYZ3Yz!H zJ=Df2+01(H3Y%A3v{sVc*_Zp8^}4UdwcB&sH}MBvlFB|KdUSVgL{z|c|hjvRh9QusVDa37R786VitjnT+7+G%cX{(c03fF2qP8CzRk^<<6PL|>?*I4Ow@ zowiRbqg_R!*o&W|qkeIho*O_)OdKWj9xA7}eD_GtAkZ|4oFGm7y#s7eB|$^|ewscNyD|2P31 z#Sid=Zy0^ToOLgBL?59K;DLIJ#y@(Gw5gvZ*9Lm^5oYKW%Q3m>mM@zS&l>qvC390P z@6*yvZF3h@Kd`M||1>zK_A=;n-_4!3{pWTo7`A!K1oUcddbvk)<$i_QTa$YmM|*)I ze!?YXB50J@ZQMO63DkZN@u=NlMX^vg8)M!_(z9eG%!1zy~;oWVNgJ3X|Vndj1%r zlbIjb-ZC>YU(2M0T44vi^i-JI*(*I)F9HPI^YPhCg2$bh7OsIIZ5{UM@?3X6B4k~9 zO`V10W>frLj9&X-tz}(Z#RGTmvsTr>SXu{9UW(!0SkTUYyvpY;$2{leI^7z7-7BoA zf1s># zH%J3QGfkrA)YDS_`!E#Ay@q`+>wK5?gO@<^lF76}{pXls)RaHs|(kPsqoGvi# zgP7|tJ-10RTU%S9Q9{Cm$%5TIKYx;DXzW1Wruw-gJv0_B%Mn60$MJDY{t5T`F>rCEwU13LOkO8w%|CN< z_chq>`}t8o6@jPXJTPq$kb#>oi!?bEqq|EFLg@DE*9?sNwqsxKudfVBey(eI?x5lx zSGaWN`svf8gsY>)ewsDdw!KAFNy&@Aj*y8FU??w7I4U}t2g3z83NJnZZwcJJMu8&- z8i4*pQ19$KA}A<$vn7=l*~%M7YL@bPg73vJ`c}8lsr)%Gu;uB6zs$_c0J304bQ*=X zcvAIBQnPB2Z(7G7uY8p=hHM0vfAB*B5D=z%NYXOm}oadm))lymb2mDg7LnZt4V8U(mPte2IE1k%AJV~slSmdbxw(n>lX7y?vWzCcUFfSS2dQmVzPQ3p&DMQ2(hF1xNQ zWYlIrFr$wl=0CHu=MYwp?t9oXKE4Yo2El8i=a#WAN=h&Czl{SJxp2Dc7Q0b{9oR$e zEl_(+Sy%TlP#pH}Fy+2|n>=>D6@{Y8HRauUk?){0%5I8_$2L;SV>-Q=^M-#|D1*0u zD@-{+<6vqulb=11{kwOE&6XE??T!yzl{!Hw%_lsbNy^SdPVGx?^s%Cm+V(V4^#L`N z?O&#=Ojoq{gSB!=-(79KQXR)-w1Ip2`m>>H2Ws1_WVr9ig-3M}8VC8~3YC}>!{1Ib z%|I`G4f2U7mQ9#@Bp#M=MAG93I?#lyIvrY;0_= zmk&HVy8v(e1`vSy;d*DT4RlTSq)MZu1&$xz1gQuK$)h8}`%um`n6hzk?ZyQ^qWt*6 z68hyvuJiN>0@gqQ(*tf>3W^W=$0vDt_aW~yvnPLb3`a&og8hl;uaRvY{w=LW15xq= zB5*m2pP%0uYin)@H~f)WUup7{b)W9-?fnKh)m_pfB*gP=7Ql3!Iu)vd?)7c-#EGg7 zmeQJI^}K7I2X{yCyX5AH$;suwF4m*pIn28X+v24T2>_}is+t)N#>dA?+1T))pJ_AP zz=TlR3!R!^zD^e4RatlU^XcMEiGEKK5)v>uy&GCi6?4pVw^O|G*-c-OYtyTwr8V0x z!Nx{`M=yOq*!u&&_}JZDQgJ=`5*AGqQ8pNA#7M_aq|>4HEVhCbgnJ|Ux(I=)YgAiQ zF2pLk!P^fBm{KBe64C1#l+R&2*S8#glLa}FhK5FyNeS1p&Q9$ev?7$~$VN@!gnnV* zVB5}}=ZKk0i*);8Ww+^?Q(FDNslO$1pb8*rK!_q!o=wV}JExD)D6NAdP}b~0p@-+T zpunJo=iP~njI0$L?=A^|^uo5CnT@RsnA8RxeC+~9fAQ27)ytRnZrODt{s8+G1h+eP zHZd|X_Fw`%7X_=w`l{2jC2m3rH3^(+{dlhzs}L_gKPCD=C|77a(9Ng0^in0Xsj>s% z?j=sy+!+8HLn1$ihBPdw3L=y*(PLKNRBKyX^UWXoPbwb8K9X#pZ}Xcs)Q3f;5}yx( zqjLX;5ZGmQYU_>;vD!Bd7Uxj)o9r8prapd~tW=fkW#3i97cad9UOfF1tC}FC+qu8> zmdKf7212CVUk%1}R0Lwv9kwQxkUo98hafz+9pfs3<~==N>yATzI+sga=Q)>KKYi-Y zo7X#>W7S=Op@;jZ>#yNiK{tQo3qTz92NO~H=nCBW(?g2!O~1ViGClC9v#@7w$U+J+ z8U6Xomk-c;S^p~Ej)%tRV-^n&G)uj_4#Sgy6%*AG%86@uT?3=$1uMY8c&;Z&88`UY z5Acon=KBgK&Ond8=fDB7+frW8X!SZ_kebm1>h- zU@P-KG;{IKiVwNr>lHjSONommpXAY=sfcA;}Fu?Ee6A15d)pb()|9&(Y==RDlPz zvAObOLAwRr4l5oaam~c!Axs^g-U@tjBa^JD98Z8F9+9J}s#=OV2&HN{Y7Bk64?XL@ zwr<6fd#Eusx|yAWV-mV}8gn!FoVBB)jFQqGq58n8?u zavp7r+YSByPN@U&vDBqgVvnCQoPS(S5xpecu3ftx`1zHgPP3jKxQGWX?Sd#&>$En>(a@@&zkb~zpf7IfeooFQ zP~e!txQ7a#;1-x!SU#ZfwD-UPZ_M{S)0v0LvJ9fqdt?+;Jqwe)NOqqvr6P1&t8NQB z21s526XG+ZFI*;wN}|7?3=s@PEpi|YLeckS7evdSgM*bu*I-z?u^BeFA)>+}4k*`# z;r z#Q_%*6-6E;YGth8x#budv4M2~*mQKL0wVx*VSn;5qo`Dq#P; z>Fw>!VJ6jdY_aq_9D@f9?l(-X+P>`kZ?A_)?%brAyuER~%m6yjUEVpo-n%m&GYZ8+b}PP&=MzuXO`Fam>1=osGE13{OICP4dZbiC zg7~Irei=ea1vfW|HJin~A-CNE(JY&U{VsIxRn;LMps{rv>)rw{d4uw|}c9`f%B`h6mw{{-8;gONNwq>|d@%rh~HPCvl`ZG6YAAwF}3(8~# z{8fR!e>?K)7p_D86JM$dmU8q%6Vx9z8F!JFk5Sl3Z~PuMflwju?+$&HtC=`NR(UN< zth9(;y;*!6jL@$!l8ujlIr3Qh+3VgL4UoX%YF7=a|dpPUihG6 zW?n$+K0Y~l1fOyMBL2;ij;jbHg3Z(+iA~EUX1f`i8DQRJgydy4xF0CL~r=BV!* zIgn!fy|YLdl_zy-mMlO5TS|M*X?z@7K>|c@%6iLhlh@W}v*2{XqzR7`6+{m~*!brm zs6^5VHSss(W`Xg>qxcFFO22;L=!ay+2O<}*L9qNVJ9{1ElI5^-T1vOgwZM5iJ>k1@ zt$1xqm8zInf&1!Lvxo;9$Jv^gkU&91!3v6KZu8GkR6a6lTDb2qG&F>>Y9*;k1T%x! ztrrkcOd~f1Bk8$8J9s^&*+i|`NO40CO<)-4+GBXyHgDO26Kj>8UTeK3kj@JTbm}&u zy?I{Hd00CvEKGjex?b3+->lr~QI_6ZK`;}a9932RuR3u5}yoRJPF>B zaALbzj)O=LPFU>oFYv?+nr=@g25Aflm`Ta-STZM0cRARi@d%C^Y=A0RuU4`ppRW8j z9v+Wvsw+FQ?S0(F?wC|snr+RzbQ5h&>v*cDI7)Yh@!sG*em1KrcLOy?RNQRNr>;e# z*5fnx`)T~*BKJLh5vn*VLPs5Yke&d%2C8n!o5s(vPbA)&(C^Z3Svjqh2<$90JyrNw zUfzwOqM~khAOyPV@o60$9p$a9t>0yVW0U@jYzfpHiUw=W6^QA5@0MZ`TuY?Z5>6EX z?7~0{sJNLK&;^@7G^^V@kB6rmExMY#0bASs=v8i^7`3=Ek>d~c;gINPf2^)A_`T?+ zDj<-gq+Qb&q2XrWKu1<>LdrU7N4?D-cXfq{awSn88@rP|9%9ca&^hYqpqOK_+P{V)U zXK26!Q#ZJ6f{B)k1XA#d2@Ai$uX>+!V&l63dvG2KKOKe;!Iy2bcI{fA8RyYOL9;Js zd9VTEbWt@UR8?J|BN@@J2cj>Pe4%}sMnVJFgiKeF3JcqLXeCxUJq7GXYPtJC8FRJ` z*a$dRs3{29csjLw0kxW&m-pJsmr}$_Qe2e-1e17n-@SWRhF1*y<(DMqqh}&CSCGTu zhY1x}ITJ!=wp_86^IDPy#0&hAhEzECLNv34D${bG!nhO`y8E5>gF)MyL7G^D#BEmi4*h~y@TLFBW*l|0&C!56?-px?EJB@tI4C;yL2^%46Ejsj88<6~`vj zg&D)Qqvif8yuv zCf@hkWz0CphZn!o@Q^jM*p~1>^1Yyx6elz-2W?AXYN2S9yP27pwYEGdhKFteek_Vc zho*>cc1ufD2Py*xQ_?|UVH4p1nJY1#1|q2^cm)J*0X%{{5slYM%*xt2I^~UxYr*^s z=Xay$;(U9-@00RYT8%B4uF`Sc+mtEoMGmRmeZ*w6dioi9u?Dv|;28uF0;o?-0n>OH zkd^P4!1n7ctp8hgV-6p$Hc_hywTtlo}6n~oABYL6svUbY03>%<t3@CDNN8^@ERj)Z&*lLciN6ZM9Ky7j0MmY?w3`sY zbEK~>6l#rhmwIjWw)_-^l)_r0b57>5fBv{?Xnc=5`~*_g~M)$6^Top(!F&DKNAK(OTP=J46Ft1EJuD-mc<7K%w|^sruz7+^Z{500oDg$B+2Ev= zzG`gsTMZm&gVwd+4cM68zpJScO5a+~X!M|&M?-A2UubCPiNzmhLQ6!d{yZK^F*;zz zDHGi)?|E83c3<*-#O|?UUcau!eH5T8GEtDKT3OcBwFNe(L$K+c&^h&Ma*`@-e+1`) z2dmO*zLyCyS@>-^)k-&-HskwglxFIXaM~eZ*Rr;@h%V9Aa|?2KL4$wX0KPw(7vSeN z_2m~4@T)>NNBxteX&5Aa)Tbph42|bx)|YUxu-pU%`V|MOTujNa`VB$Hx!gxgHePJm(#g zf^}}!FbTT~G;hJ+qj5m|j1@iU`D8jLj^HJ0Z#J6#ZL}=Q42**t8e;ACEpkv2UMo>u z=-jqzgLXpL@+wL%Z{OARym#+YuRCPhMv>kfvi-}_ZS(!>cJe)Pc1be3vc}iq-q7e> zYVC)U@6+G8Z+r8IZKcSdOh!iJC3gnhzmwJ3z}OoSw)=-BNgvmt^Xk)&_vktN@r}5{ zmB<9Y1+L*qS^ab8B-o_`cHcd&rln>6TS1|oe^u+L9}|+FiX8S@DBZ#I17v-<>B`+> zlV2_1KWgyze^FRe^n>3kjx}^BL%^qO{CCcfjR*v=fSO;Z%ssY3EX-;E88_jF*@Vfs z0=}Try1IV&=*M~mYcQqBkeL&M$j3sP7xLQSIy4kQt~BJ}za|uR@K!lR6_ucF|L1uJ zyp}wq-4bhtUm#b9^wc0K2)`;F5B7?y6Idu-$!J34{a04YyvX{`VxUl%LI3g+k* zreV;3?di$@66#lQuw7ZdsA+C%8-)3C2RHYs(#2`chIqNZr2VE%o2;GVaFCw|0D(bE zI6WBPJrlbSEl!~9{QOGNrypW|AhNvH6RmutghR?{&+oPTT0L=#%NE>MV!jEf3wNfa zrXavUKCk@x9L$O=0B|V@l5xbo{NSKv1JJ?#N$Ijbz0bVn-MF^D75SfOI`2o`M z3cBU)+qOP_FEw47Z_~1butaY^t4o!tbVa^TEbvUS<%{h%1+Jfr+n19(t7~)em)kqO zM&H=>@hvWMe}c~Wd>^k28QfJ?bd1u;QS>$NwY9YQ=J%Tc#VH#weBUca7R7?z_^foh zUU8&9!&?yo#IM@cwaX6wjBQUO?oLa$d5OR*}6> z28z3kZYCrn$0n~O5@NiJ`G|;cBs{PjuOjawu&i(Tl+8&8Hyc^T>FH_G#VRP= zIKetdNdUy;3V{V|@29wqIRPLGKpv4X(0nrQ0)SY@!Qlsw<$8>>1Ykv<9su@+y*19A zf#9pybiS-At@B%gt1?9&)n|UkNif`JA-s)bPC}_eogjHNh*Ru|$~=5bZvok@l0WEq z8#FzI^j3J~0Px-bhr5gb@K_(NyjZ0nGk`1fXcm2ITSaE3kfF%T!a}Wf%B&f*c$)rIwL1XP69o06isl{PI%9b*rE ziApgdbN3Wzer%byR#8#OTekA{njve(QRK!t(#;Nq-H4*w^E}3TVqfK(;V8!K#y)hz zei|;TL^Up#J`c0>IN?}p`feuHwffA&-kjOAje1 z(195AN9zv!yB9|eK^G`SO^FI%&Vw4JM10wyQLsMKgQ3=Z>sc{{Yw7CTksl(y{raT8 zPV>@Er<>I3@D9e=^tmZtId5)$6YP^Q44On8L(w$9gW;d8OA$4jDoqw`PnVGP3@9Rs zH)=|b&OQTjvJs&MMN{;K1p?xbCWO|&HMFuP9D9D~<5p75* z19<)nAcEx288egN5?dRa`fC35oScmE;p~SE#~Bhn39LRKN)zBNr>dmnK0tj7#Nyoa zh(8R)=fOu&G@|w+Rmq?)Uv}w_$@KCGpvEiKa_QUj3^5%}S=#E}4R>_4tf+{Bp0V+c z`S#YVv<1$nRoT|2aB>^q{yDl#0~(EnwhnH zNv3h<^_Des+2my;b+39{D0ltNAC!X3n&GnI+RURmQ#8Iu9`Y6@Z|-yqTNCb_$6(Zy zd^eCy=e1%?PEAah1iljvL3hLC@=0^ujvM$w7qJGabgZigJ)5u zz`B|M6}xZwTx*KgXB|?G2aUgB1dXr~2x~~SDVvltzo}4En>*oKZ``1xw6^R@(f9Cz zk-X!g>(!-Mi{dF1IG@PKNREQ1ji~BV=8{k|4Qme%54SVcrm#sma#Ip8ydu<3Bz^T% z>?Bw`OybeiCI@bOlMM?EHTmuSfOWwOY5B!d2;#d2+=)ufGtOWy8h!#ky);BcKg%ao z2HR+bfp&@W2nS|OLyJW(5YYtmrx36$j6?Vf-qGtdD70fW@Cme(-=ssQJwRYZ*Fiv@)?>i3;2-anI8OSak7J%it~w(7s@f83%OU6nU&z%kVCx9e1;- zE`e44gZbLD2WLqYL`QG)torM%OGJCr!OPQXyddzP12DWreHWLr1x@2&#Kr=jF57^25c zSHv!Lx3IJAx?j7VjqTmlrFc&-(AEs{PUTA&_$5EaOS{?UHQ$wxlA@vHjCOxXEG3+inLq!W9Q8A5-4SK>|6~SvaruDe_TmR+Y2Pi z{ihI+B#5+`rperPpo-#Q<@w_E_J}>#w*hW$$p3bLIA3 z+KA4r2^G|g+Tn~}^o<#XWoK4a3n@}BjLlrARnnyRf6%ADups+h{=9$YtexUaeEe_P zWovOpMxRZ7bqw!qrgp_ny$$M?Kh)~Ls3W@V{`P|tvJ7ih9!d-I>9L@H;5206h^Yw0 zt-l9R#fWQ6V|dZ_ic=CXpFa;1qwA@mD#+0QP_T(ySO*8mGs2fb?tu-a2=p7g4KR8JtFRmpabhq_%zaj0%&=SwMlp_@QBXC?d2*aACQ3z zs50B2ax$m7vGJI^JOwleW`pO~P9oyy8gv$YAesm-L!d(!DVhxaHCUQuaOr0wq>KoD zp)PZUH=7V*05INGRzgQX4eo(3lF-c7Tr`2^LfqjS6F3^enG&TaK%8q(VE}RS1%x5( zI!+-ixburOCb(CG3gWCIs2qY84V!^>F+)*E!qO)IK+;e!kw8@XRd;IVhC8H90u%DE zu#gSdV`y!51a^K7@5KK;d({!Wd27S9D$Npam&qH8l)a zmsw3#J$O#!55)LPcn+AXUqe?!p3FZAFt^zP<-0&j{h-Vx{HhqnUgZ0{tF3*5o{Xpj zP)TkUzw3d98&VwkOKLF?<{=G65VzCd1C5~rCnOeWvB=6sHw3*5uIo9bufG{QB~rO7 zpDYhgs6SLQLLv(UkAh-i$AIj1d%r}Q!g&ZHh&BKUz+gy9b;lVmD zE+lksBmV%%z^jWx%PxV)?%syc0IfQqRERtnSR|4!BV^);M4Dy=Q}5%!v9Vw@6OemT z<1!d|$fWS|X)t$S85o1Zyd4yzh&Rcka&8i88yYpbR~`T;Na-9N(JU37aFs?9ZFcYs zNLloe2}wz`u;Xo44BAW&B@2$PLl4!q$;xs;j93Zge;pDI!ZlM%a6^y@s5mgruVLtX z4<-Z3O?htS9sBmJ##=KJ-e2_cr3pA`#XJZH{L!%;!CZ^2giH^4n6b*8Ad{*z7qNGC zt^^(jRwEc3ZrR6=tk8zM_NJog9UAhhsZj!s!$$ZrC>ig@!~~!<4Gof*n3&KVE07dS zPfI)g^A)+00;iu3&GhQH9SQ zF6BwXReXsmZ9To8=PqG~)}fSJP3d?#>zzV)=_N1xyUK_SYj9R(uL9uA22$iveiL}Z z$GL$JFbF}paIiagwdaZe_Ta3neH(GpRNj+svJYZn>LRR0H=>XR;D9TihB{2Wcs}Ua zyx+r*xLHIP$6J0WX|=3R#uI+yyX#PIZy8b7C<8e>J(8M|A_V^R;EP27&%*e(L)$KG z06Ag)6J-0VPgiqubE6RQB}5_LC?zfJUDC)KL8iW;Ae7I z0L6Eujrq3n*qX;5FSMgHxgC%pWty?d(T=_XPR09RERn{^h?tgf6RpwiLpAu$z z1LMKlG?QKNjTTUpXg~V+B&BFEV77TGN)061RulY0mvh3x!shr6djcI0k;X(xL8rDS z>!~WLx-fWc#a$cNr{-*IY@$%1gi&aj-dtXmyD%z6l6_hWQQkC0mN_WO$O?(Pe*OB3 zcIG_e8kZd}x)t8}A7TG%AUbo2RrrBY-}f?xX`?hhL%D}P;X)N|3R;7x~uTV4+lbd(rAW?9j zd{!a-(if(UoMt2hIURDxWGbX3#7Uxrl z9;Bm;S8`r5!b#}#Ni@Fk7R0 zVUaD^??ftv9tUL1EfhW9#zBWq#BhMZL6w$sVi6c)dVUY~rZJW^8TyDEhX6!4P!G0K zJDprK==l8E1Rk0^+s5v0uCq_{$*j5_-B41}E6KD!78XD|7*e)(~DCK4*u7u>0F@pL+`li#$j zEt}@H9y-41)7DjAgq-3bg}bG{{}yNnESaAUx39PS#cmK2gLiTK)TtZjz0v1G;YdY+ zv|E=oth$zP`{6pF)SPSU>J5!+rgm_{lzGmFA_CQ^I{b~%Z<&c9- z>M9RT=ZviFpGsZx{9f(AAH?ZRz_VBKefzTuUTOyhq}HDs+tFV!>%x^z91XwpA(p=V zsz^s|b4B3!eZ3LkjPX$dF;!KZ75lTTM$36ve${``?Du}VaMX8Ew#ap*YX9nOESCqb zZ2INcbMe#rn$0>3Lu0lkLStw3{t<-h&bSc$FC|juiYNeXgYgTiwpSJc6~W7fN)O7H zc2=3q#_|B7;-uZErKF^w4){r0owFp_ar^z+?cqvj5QFhg!2&$+pLKdD{9RSVWasIx zRJ9f<(|7NLt>dndFyoqClWp%Lf8(BB_v80l=x6Cy%)fduv!*V}c-*a1eam{oq+D5e z57W)2PXE5QP-yw{FZ=|AvH>U1c@q;~+>}!K{o%U90gjNaQp!MRUmUu9KW46Yj)ZT& zV-~soY7OeiGjt?4eCZEA9LG0>4#mxJ*KSOT$BQ?}h59J)XJ7Y? zUp{_F*j0U*j-Z_QV`G(+MPfYfuKV>%2hx3L)E5$O9SRUcW-ZKAKNQybhMfI`t{8dD z-jKiGG1;iCU?Kl*3!hIh8?~N;N>oUr=l+6z8fC6jWqoUUikhx)jD0Wz>#lEmubnR( zusnOjMDyn)@AHTgv|8_8O$9eh@oylku0xpnoReGh;`)=V-K<12!vJt!FqY5o7O` zOiM8u7%1bpwC%zwpL@6dEVyRn8>>`43$E~pYqO_tdqh6U?R+zTDl6ysY1Lgq`(tuG zR2`7~xc9&B|9arZ5Bi(u!R;aN`%mJnBmX|qt@?i!SM0kgt+5>Y6k7YZ%^eXso%Y%^ zlwn=h%QbY;+aEBC95%k1sHLasU*BG394Bw#wTaG5vNk#YjPyDUv-5X_Jqk-onI;0H zQVlvb{%43GZ}H!Uq+9*Rq`2>WzVXP#^eZ}12}}w#J51Z92g1%qb|fSwZPp4LKK+D$ zfZs~1KL}X3N>t*Rpbb8}&5UmZ*D=;PO;-WT3JM)8V41kK=lH!aWb9W=(%rxp>E5UhrV^6xOQ*3l!;%NeHS(3_Z{A&b^Mg~&(EnQbe*Ee_brES z(iWrol`*8vd_ncxKeyYzUr9dM@|MtFWVpX5+qUDl#jN`2?S5ej+|NS}sp-_|MBKNE z-{JZ{T7VELirS}N;sc}Mfg$=KOgGMyN0@b;Fxx6zbNKjmEy;P|!JiFviNUW+*awRg z6!xp#(|aWP|32yO-`zg{--8`I-1%0;Vs_&sKeJFq9X~al3&+E2RT(XNzo~Q@G4HLU zAMmr6=6RyjaW6FS*^``g#y+DG{=29Tm{#nr4E~%>ZyLZ}AQ+vp{-1p2|Gl`A|NG|~ znXHM*R?b}5dY*wHJcGhQ_om+ZOr$ykCHuE?f7nU7X~DCrLPFxpA_fLDvV#@4Tcy_A zDPvHzt>log6}w`E1=;zU|Nnnw{O<=S+BRMYukZ^Ed8l@3lg9pjb0Z$!Fd7QS^WVK; zlWx?nPWRT(8}ab7V!em_+~Nx}>&hlCP8oACDaN-4Y-5CO{;#|Kf4==&0I3g}aeY z-%G7{R>p8Kokuaaqu7UbLdlkL((J_qyZ--q2gj%Ws|t;QlP|NdhR?_MSd3D6$S;)! z@JK{-QXf*1+zGcouAsJ5TR-deY}*HoByLEG)e?_iI=kwF{U%z0bxFsY*Wsy0 zD7rU}js=qQVw-DPWHP&O$|KO+*vHjZBWK8m9Nv_|Gb{CQ`FjIMc92l=zPgK zPrCNNR!@VBjA8c{O^QC}Y+6m1;~plr>Fb882i=WJ&e$GEHF}@vd(PJMeaFVDyI;NT z%li4{a8mM<7lNaW3Q&EVrRpnDl|3@^bdm{-Fy|@R zT;d!VrhhEC^Gt}}p~1uqtI9-OmzEBP{!Sl;;E#=_y#XDn=eXJbe#!rR*Q>T?1kz@c zpYk<-(rKb1K}@?R?W9&#${tgy-rjGAQzTC1Wu15+H_P5(I@A>|hwG%4e&NjSt?o=ve3+wB{(i7McA>$mLCN$}1YQ7h3xQ=4tBwxwo!!^X%Ur1cI1AyJ!mV8_wA3$|AR?z`7KM zpgy$8Nr0qi0onsfgewtaf#Yar6mVYhvkeU5>SaMAhdt~5)A#l3VTeePx=ahzspvd+ zMi2Z`41oY~x|E_Z&1?QjfeJg9+~I7;N=23+N|4c5U& zO}C4SWxBh&G5&=ja24`FZF4!`Junc(LcogAiWR1445n|ox?(}|{lXXr|BBPepf8F* zIJFuXv$Xu7(}XcD6=(`96LGL%!p3Znyx2MHwiyFT(}kmtn#c`)P)yZ!4Z_ZKWJ(j^{{sYsnt*xz6DZt+h`_jWL%#a2Hw2#LC_X{`6kQw#4?#L;+wFuVr zL4fy%C+DQ_)kuZ|TwEA6C!y=Hn{%8pE5*&ZB3KJh3v_A7AyZ)xDdk2OS`dKC7FvBB z?nGE7k%jR9*A?HyrKU(Rv7WXAjvU=n5EK*y%hG)yiaAJ>1N-uLx(TzWQt>pbS2eOw z@|{aIA$!dB)&tIaB*f=->2rDYZF@JWM(}=QW9)UGaCd)lZbCG4jnXdli;;%$b9e4$ zOs`NfOn7Ckd~?H{b4-$~)KA18N;n_o@qgNSQ=?!-jr)`Ca0k6LA1pPtE}T+1+9`M= zWRF;}AfvykzkRUg-*V9@g|^)G=MwNX^8Sd}6<;VhzpA1Fz-1Mn*4eNA0&u*VLyAEJ z>ai+kzbu-XnqGzoiU4hZZV{a=2T|FZii+fg%7gOe=6hg-5~V<&ZvuD_i3qET4Ghyi zKHPyJkzK+*snrIc0%+V@GFPSrp?M}^Tnx+>c?KZXvsM)0;?2ttX+wisgO(h3;j96e zoz`ZO#_eB0BB!Mks3!zd@;k*!{>WX85tRce_9GZ6(w|o&=s*N7E?34qx%7m4S?c!n!m)t zuU!VH;DD}lKo0<^In0k^DKloG(H(?%zFN?rZF3b1-}A8W@NWZpqknlzq7Xp^!@Tee8%^(n z7f1uB9Cm>;qCkiZ?EeI||HRZ(MRhfSz(}S5A*;YW!@*>N8CH6>KeXk^xzFZ3*ke#H z9oK;x@*DJ>W)K|W`kq|eg+TyZSa&Z~Khp%*HGit;i#Pz&6{~p{XS|$#&CH|%*T;1@ z#4ro9sc(n%9#PQG2&iCL?xJ6f>_b7 zUQKR45uMK*o%{nQr76sI!=DR+!2k;xzrB6tsQ|P2Y1i3-`&4P_scZ0IE@s+HyuYb9Zy}?N- za6s4oydg*63OQtoJt;6M9KHXQVbIG*ML^?s$lo}xw=%?4?D+k?4}jm^zP=++&fziu z?$YzS%}h-RraF+aOmJ+mOI)bm$wPo~g6TKzAsQ)cuWFbSYeq_OZ{%}wTOQt_7#`9g zxHGWh2u=r=a!l#s$fZ^XwE~1N-47ekTV%chObH6uXGM$1QWyl4E=F#O20jQQPb^4? zjG+r69AL~y$$)Sux7Cvgyf!G!yLgCl%d@K34R)CNxiEtnkg!o2a_WT0wbP)eQve3vY1na{wyV@J{ z!)6zk8KqJdg#g8!pq@&8b%O@j%g-MG)44{G>UPTqpqH9p8iO@a9{cRQWga-ktPfQD zGhaj4}E-0zw%7V%8Od&9ANa}d5i z^zrGXyiufW96xb_xYy0hy?Kp=qLe&SobhJ77W%f50~{>ShE1C)@W@?%B;V(iaVE`~ zt-8#Y%)bp(c+0!uyRG)>>R#DtgNdqh!YmZu>Tt(XIhN6>zRz4MVuB8(s;I^q-4A$l zBDPH*?NeT^fOTTihAnK@5B_jANK!PUD(f-rEu|AP)w|QZ(mXdj;_n~))!?A#oFk-6 z9<`|(9sn98Mm2J02>dkdL#LMSAymE$u-6-CYBCp?UBFU-AV1p%-T3L`tF{GDGMLR) zawfNC?NHx9?o1%;b(v*E5a_@hz~7nWdnQY6YT{Y%@k}zrzYZaQS_ZWw#Z-cj z47?KIyyR~b&7!80qodC#aBazsQIZe(2rW12)2IY6F!J2x)7>z z7rkdRz93l-CG-2?)l5O-5x!Nh_xtyESf63IDWTwOI_N~ai=9+|d)dOB9x)!5^Y|7W z6M|C(*34ea$myT_7-r_MFA(qI$VA1dTnRc~gD#6}o0==|DT46CO%UnYjv?_Dp&&>6BZ ztstx~bW;kr1vk7{Q{{Ai7+4qHnI>o)&1Rtk7L!RCN^JhIik`l_x|-e_3UH)TC1f~c zHueE4Y=&H#g2Pm1U<#I|-W#k8!WUn>d^w5GEKSQ&7tY*{I^4ZgL9>QxyO1Ke>w24N7#KRQlKE#8bQy#rXR9{0)jWOx~`NYB(FTQ^JrU-Gc zHUjIg05*9HSbs*q7cPV*JaccaH#!*L?@5F!jg<_?@mT-O%6OzO9)Duy)8MRl)EJ#D zXK{F;Fvya~o7!5&l`B`Ge!f9>ug_cC9Ge4M8E$W&xPouwV;*r91Rp_@lw_t?d$gq z{U##8Y@v0c=w1f@%lyZyU-}E=xV2w-SX-AUZxWomjonuz)@JwV_`{5;ZQ7gV)xUm< zdDI;z;=8xWXYGB7hW2Lqh1KITf|u!36YFJZFZk0~ikGqug~h2BzxMkU(srTd$v=qh z?J}an73tlHo^OTk!x)y<%>L$It#-nNDeh2zz$1T2!wh;F($irt1d%`$l47RhdF<%X z%fs4VmJe%=(6mIE*;WPi)?fnqnw}bGJn^-{)XWS`jS9KJ&1^nPHW;ZV#6!PUdYl5e z2d)Q;h`%~_2U+~&RH5L?c2!7YGM!2fo&Y@onYKW9>>%ppW+~?YJo-5Dx$sfkw|oge z7&2463~2#@U=S1zNNPZVe+_$b3N3BdW0+CNRnid9$D$^6p z)eR`9?hoyhmX3jp0h$sL`SyT!VQpM|d?V-$B|2YljrZc>8X#LB%_gdRKNOnbqs!*Q zokgKw-N;Q%yrm#`aFqdZAwv;<9XjAI5QjgyuXhP&Amu`y?(UNt5D#trffomksp zb7nKcbi>k;4J}%ykv(zxnjsFnBWS!cova6n&X!!l@qGKB9?LG=TfDJ z*tyrY3#=k67j-SagdSW)!%ft|e?u~NzivIyhffL>8IJossU(dCzy z9%~(i_%(chGgaxumO(pkf>EIRD1>mu!D4{}k|O>4{gD7JnYoDJf)paNBHSoe%HL)J zHJaSMNB$8CqTcSo`oWePo^CfeIXN*tZUmhN`Htum?;|h(VyPO)1}A?1-X$j&k5Q#{ zYy(588Lmg8B{`Q2zL`oTgML?)R;)dT)q=B$*Jm#l&^NF-edr!GOS^`kZx==@F67I} z&%y|XcQ=~5j|Nu)adNELDqDxk1j2Y;!nmNpE0~o?)RntklTlS5(!?6_z|=W zG!mn~B@CI{o6}D31beGp;vqpy~EOgl#yXXBpdPrPu zLA>eT3FPgTjo+WFF*+a-ncdv+#qzoDhK}UsX2#qweZ%6LkF(G9&-}PuUF2GFUf>)R z{j8CwVR^z>+K@2n&c0OLcDJMuuOe~riUgPPd(jM%0?Bo$KAf?iqT64MzBm(caqy76 zDgV`!*T1`0*6nk<7w_+K`Aex<$l4b*i#kpoA6=fS3cOnPL0s;hubjti)$w~uQ-9C9 z)BEbo-zo8yb{pO)r+Mx&=5S6y%r#GUA1K?69hA&%`}PIGw#4%j6YQ(3`KON&6-Y@- z`Hh<&=pkb<%a?Nez7A7VKbC;}Q-LKtFWjPxPSp~ z;cS<18e&GD(>ECJzpN@6r5vfehkSk*x|xi+XC=79SijhP6L(#}B%%j0^U+@21pzyb z9{O|4;dj=eM6rYtM*b+xs!l|;;Z8mk5cs&r@hiTRfP-`!bZRW#Sj4}OhZ4@9@dG^o z76@-RU9vO|Oq_!{T}X5%?gZF0sYyi2F2U?Sx`-2Bqbf7S4CDv`J`!Y-e$|5fL@@r+ z80v{^7n)N8kBJJYUv78r-#>ZZubG+%mq+-; zuYdck>D|J!opl=Wno~{3w(`^-T%6ZJ2};|)p^UHrx200D3g+UMQ&L{Lr{W$*f-o@SP&kP_`~;O5(~$zMW2v(4@} zjRz-Z)6-9fN=p7*Yn;vQ6JhUSy%HO-NGB%U8X3Lf?A4W}&f((r?}8aT zJ0E47(%MjGZ(CsS)%(`hgth*BoQ6-owh5iXLJfZeSK?N-`4?(ZL;@)y}6DS4Mt+_L;c+;BU9X2VynSy)Qn{;l=~Pu z4vmbS95hOr)pNhF9`7^U)+@5#jZ28%0-yl!)b>q7U!eH+1~hO37^=~tciyE$;PPYs zpLacC?+yf6>R7FTjfWzD^|C<&#z z5-X!C=2Y~kL4n?=spH~BIYDptebP-GKPEn83OqKL6Q;LVDRbm=+itFncfWD&4^cdO zm1Fy@-`cG&E-fht)_PR_oud*x6b>;$_h#0HOA17RI_A&8m^2pF;f$*xG4T#mT@Vq% zy{SZ>k#KqLR&-Iib~Cw%?VICj-K+?7H7wpxvIH%REi+qjx%IC%;|RgCf(^U^3C1<> zDUw_hK*pLJJ%Aq)I>*O=y5huqdPc55x0>R^nW{(5)4OP7)7!?v)5S5XpBGLjudffp z!k`%k%=VdS1Mj`NcMkyuK&wnJGZK~xeL#X>LWXIIUkws}GIOMH{`1bzj0bxyy!n<- z)W6aPqU)hoJNse`lN==*3sK2JC*2QC08exLYBoV{U^o#OxwvF0Vca3Xv@G%<#7--X z5T)5F{lO1|gIWaMpq;a`IZ!TwWEDcHD#%6>lyU6m-g{<2zyw+Ssg+m#WJw&gzpw9+ zW?l4 z0k!WSEe?D?cUyFH?*((lN{@wYv0VGF&NYb1d-@3MFTT7uP`c7MwK=<|^KfzKWcXU6 z1LlTWSyJ~-sw@;K&HT%_9hG_V{A{60kYLT2v??v*RL= zvkO+=!?br_T6$4bl%C)9WbzO896}fkHAV6E&aj`ibwszlTdl7$9%5rXiGE9m+(A1J z4{2OVh@L?NxgFs+PT%8m2P!?_(mhk~iV~RvLo_pYoyKWf zF8A;Gqk1?h3PUZwd5MxuR+x(C+4|x@_I?h3NzUrl_g`n9n=H)Vi_9z$|JJ9y_08($ zmB|-{FT3n}C9lcrtpI>F|E9I4q&w{GJ#$?TGTL&7m3PGjRATzRy=Dp3vyOH8$W>dn zTj|-6^{%Y?e4260=ce|y{hh|&7C-vVGYrtv-oa*h%L`n$$j{>cOI>72RRNX#Wc6ly zc!4nw;#eTw6gUr(JJZGdQtoi8R=bNW8D8FtD8~CmUATQv=ZVsuo4`#U;JO{^_Nm z;DE1OUhG*8@0bP=lOJ{Z3#>93<7}fz(GtOHw@4l(&EWS(!K=%6z5O3805SpjXJlf- z!!-x&SYr1=@}!kIlEDp{;hUqzZW?(82HtooCurqSq1j_qjsgECCSDS`)z}ye$>Joa zBaNYj=K~;>qyh4nT3Gab`BDz=wGy58rgSAiO>^^a^=qCfDXs98Kd;5C2LLr|p#-p_ zX|90|8f9fDHBsi!`D&#H-_ud8anC|0|70!(cMolfOSwdF)EN@HLhvAZdU|N-f8mF# zmtOVE9Puj=9-AH`Ajwxn&1EY!EQNJnS(+r;zeL7k0y@ESa;|TOto#f0El=DE-W(ib z=-$oMJ>mTL*qMe+nsRrXd0aUe1loUewxkQ2jtT&bYG4PT8rFT-()8;CRzAW{W5WmlyUNLs1Lo+06UKND%n2=9lP>-SHO$F7ZZv z{^8u&$;iN9j6oPAPd1=?OwZLqKQSgmqgIFBzkjRR)EFl-Xr1p7!IKy#+b9=4X)Gp` zjfe+B6aO^eJfL}UoMJ2@YGvYwj=MT{5hg^Pk@+m140o=<{{HcHli<5yVb?(uBISk` z)X77V*r2?}j5h*NZQP|F{ko5qey+#J&uZZ61Euz__~nIL7)Ai(S3|f(fMI~&{b*@T zaCNulkQ^T$$)YC_)CNy2K=qiFG)_)3<~FZk7dlG+p0_cU!2t1Ym8L>G9lNqPGt~5ULv2T)v-ptk_@|ev z2EW}+X!2I&8@Dl;Z2!7HuKYr>{>GVG^?$3*x`F^L#s&iycjm+mP(7AoJ5a%rGQY2A z!cY_UKS6Ap{#sol?6Hf<%^;~CpYlGiZ?v&_I#g(d{{Am$SN8&B6oC!^8=ws%0#L8{ z&pjE>dp=(Tz*%Dty9lO_DYwm-nxSx}6vF;Xm_iD=dy<`lgrNgSo&Jk;SZ?&j5wH2v zb@X~hToo$DnTBe-T|eAK-C#MNVY)S^vNm&EihKKZAIM7q_GKjZ=p_T#CPr!UAGiXD z${9}XTEvhcjOZKKm?WI1;a7uo`B~zwj7ng`G7+U7h~2YMHVE^*k9M$ zgM`m$x#?W?%RhUNuMypxPX;kBQ)>~MoYm7}t$~sZz3Q1^{LAT}oT8?zhW>k(QHPI{ z-E;7sf9TwgEPmg;7aN@JOxiM*Ir-o5aEQwYD$Sj{Q$p*RbI(ViFX4zu>QZwR1P4Ec z%rfU^Y?4&&aNYmm*I~V4TcO3yH4pT%e=NMbezAMc^Ip$2HZC{n1>UUfJ8!pEeEdee z$;p?Ni}V($VaKCw{#Ntr++dkj?WQ^0w7U60;`f^)kSFr}ZXp-dE9GU;*F@(e_D^SY zi8S(a3gXq5|)Tnw;E!UuqfMNfed4O8B?Db_DF3Ar`AgA?_%*@z?1a=S$C{eWtocSf^I z>8b?_olJOg%GJLxf!Mu&G-%85Cwrzgp6v*Vi&@Kkz~Y(WF=JcfD9^CEvc#qfN@nNL z8=VL&SURe^I9jjyQ^MJH7Z)Fs^n|m++tz10KkEDCK0YeW)ax~|@5bwtLl34>RU9@x zZoD&c*NKY3a*1v)shq3qEN1`wAyNMn;HQ5e{C2x_OkB350`8}eltdky`6nkprke;0 zaszuHdBHcta!;Dm@;-=I(b60gh7jp8Y?+!)uhZty2&xjwwZX)ETxY32RJCR}cMsp} z?ER1swe);^FB2esN^;9{A4_>#Mxo|j(Tne=L^*W|__d&!8=wHupW&U;;LNq$b&;eO;{BJe<)|a8HYG);Xc;D1> z=?0r-QbmTFZ_)VP-j{pVm)`D0~ zyWE4O=3CKV+#BO(2nc)!JdaP>rU6Y}7}IVbsr)WOnGosU0LG~0YTcRzlm(sRN^Yh! zZUzy)AFyd-=HA53bS>xL4NV=uj#O#Bk1~evnEC+(twhEv&F_)V_pz-bI`#+)BNwAH zy4ytuQ(2O7aXxaRcV7uUi26+O^(bH!CsTZh%J{Zkx@G9fzqe;~8jnsD_s)D}yie!u zYx&YQH_rL#@4c24s{Qeey8`)hh8YF+TUa@Cj5yymX;`m>%d2Cn*B?LK7CWVAfA6uy zktWMLSE-Z@dTN`)?0;DEZdodbxm?dArY{#Qo-O~LnlTu;-fF(A zZ<#V?o?r0y)}z}THo#BdPSDa3m}Ooc%--R zNN|fsJsQeCz%Rnn4}*8A24d}bvQk|Wq@D$y5{w+-L?;C&3nHifz^ti*FiJJ?P4#H! z^fE?p5=Y_?1_VP&GLhJ@va%v1R2=Xz{8YVAU(l6xcgNu*LE+c%#MLt&aH+$J8E&y7k{X3L(QMj zJr6D#!NAXJ<}=c8EKg!Su!n+(T#ODUGf4R_@G5}sR!#?`t*!YIf8N(0KTg0WaH)8T z<=?c4^jZbrdst%MU^7VpoK;g~eF}hK*Z`CP<9JBwFP&|6vt^;9s3}@T==ugOt_B?S zZa};`(AhLfPci`u1h2Pl%a(eQ6%G)sU}S~M~ZHIp3Vw> z6e_c?a{B)x?7PFU?)(1F>Y}BsgrX%QqsU$@3PqAFGb5{zGBQdF84)EJ5kmH!Eixk^ zBP%13Ei3Ey`l#!Ep6CAOcO6F^UH9GPJkRg>8SnRNy;);+-Ajzm^-~I$?~1E88NI?O zuaqDt9G8ikfOemz!abS}#vjt=?z@YO^YjFQ525D0IQh>6zfqv!`mVi6wTI`E4v%^Rk7V$8&C z(bJZnP&IBxs)v!#y%b2FpAUs zvG9Z{T6GeSf}eO1s8@M9w-k(@FZ0`M`|C&$6~G^oPY>l&G0{yp{K%@rMpFmHjlLi? zw-vHZWD<1#{HghT0S341t9_f#3fa~g_=u}m2IG#2TW$yUemNkUO5Czl0Cx#>gxfN! zsSUxc-!oG&Tge0IiXa9Ag5@kU3vcAqQv$(Q5iF0%ao`XF7-mqS5NY3eTc~tV!uDXP zC;dXR+d>FjQ2zA-Jx}pT0ZozwU&t1GFuMu~8*jmlnP(o_P6H}WBZ#42B^wnj<|%ch zlrVK6H3)q4U4FAKY6(AwhpW+4UHbf@jEm8Su;n}dN__eKG~Jp_KC&J%lZ)9TnB82H zYdk6?wK8Odg=xmOj(WE^hfwd(9~s3iLqEi1S0scdDRdoy|zYskCh;e6Pwy?88#PCfcF5_?UA)|xzB$_ii|v?4Lu;Z z<)ERLbR%sq`|JwbNw}L9`Yto z9z(Q8Lh&J#Ol*e9B3JDF=!3)u|HXu8IOWeRAN92~UP+HsAtfryqc4rMG_De7t z8Wy7P)dKk`!X-BY3`geFsW%sSYmm@HRTdbd= zK?e08wju;VNa z{r$42t^1&sCHw?5Fj-DFAm>m_yH=g3a{cjp-}(w2Ied z!Bq=^r3-VKq$ip6z*$%Y1?j+IkZ7j^N%=%uRz6(n0UJ+gwI*Y=Ur0((3V zb$lRv^F$N}2`A=7Ks^ZX^;4#WCV>sGD~Pe=?s6#V2rTUGey7&Z(ZRtQ zqbB$;k|xytJALr*b#mVCuTe9f&tSW~F@Q_~M4DN+^Q~hqk&DD`(}}w#t1_nYb~fFk ziBPr4IS1ZBSxLhtTf1Er4h>2HP7|}LH?9rvDXXuo-u8-KYpz>H{_2`hoo&@M7j&zP z&kWpXQ%foCm$E^pl$s*xYoU7M?ehzfwAOrMLRR(h=jXfAC7T9@%O&0yb#ii2rX;D3 zhOO|uGOjd98xk~YL+lFH=l_$i}^vb|=>`+iB-IBaH zA{8e%nV&H`H0 zI0Z$;cPQS40C5zHpBFU?e0o~nu4VO$?=EWnpr3LUr3fkAaL^OgT=)F0p-W@)XJ2wG zZYi7R-aYipaok^)++5eGj4#N?^13b4u;md?a*PoPkqxkCtWyy0yIlGvqPE}a!<|>@ z=i_Iqv;9tOiTRoSN$0~`zx8i=UeY9LRi$aP({nY9bmWQIuDLRvqTH=@;Phh1M#m4P zU-#TiU+Zfudf)+Jpl)xR@&i{*foJp|ROUk?CPNbB(np25-AfudWmjVE?JXx-QPe%3 zeohb~@w$W1u@>TV2f}hZzWy`vi13;5qmG@w`NyFV@xj`PJA^H<)s_0kplwvSrb9+i zxT>VPRz+-}>4l&AK0SA%xgGYFH6#Z1SDOoL8E;BDe8uv#!Qga1pz^c%(xA!D+CUwi`M5_jxzo^trZXJu-_5SWZu5mvCfi|C z`-d~iw*J*c`kb3y>Zc2Sd$#FhblY#SDT;`N-rdJ`Ei;+nJUso!11y|J^A6F``aa&C zV7f(ba<6K9iGu%Gt?g4Q>nts7mJ$ykxHdUM*PhkND*jb8k0CIB+R7&M4+i zJZCKsOnr?hk-UZ&_XdHk1i+^yluG3%E7K9xvqB->AI=@=wXFIvC~K_4K6cvE_>rNp zsPS*AUk8+XKU})~Z16#mPJvpS_T1agO7lXOc*~iRL()>GosKfs@85Fi#NsGp?xXF> zGh4j`HyOFuN?N%*Dj<@=r6u#{xBIWRm;K?x87dMKFGw%wNEkbd-BmDi>7TIFG@9ow zyr9Nsw~lp-{Fv+Tis`)HkK?*JzMbCRSDu^J76O$?K-^=-kh^^A<9OZnZz#9h#obp~ykRhomQy(SdMWKLl<=z(=M{W)}X&x4#uD2@U z3SUq8#@ehTICIi4@A!brp&o6;j6+{mcOSXsaGJ`>MOU=??_TLtL4u1fyVl?5(7E1^ z{Wkftl>$5e9pAQ)%G)QD)jMOyg-kC`f$~f)$%d!7wQ&2UkK{6vn8tLZ4>fKi1T;m zQdUpwVSFRymGm*?qUONJugUjcYm2Bnvm6Xsn0uI(L}CB)5sGx~{IzO@M%ZTVRd}4l zLH3Dz9<{6RYf20!UA)CkTX~a@#q=t3LsRc{V}=fh%k2DQT^#B5F-5C(CcMUUl#gD> zU{v*TzFl&Q!T*{6y!-ZayzgHJgc9mI`l_5bUgLs?kEY*I0;jk1Uirjeo+;?N%r$XW zu&ac{L7~_z_Or@AT~WvAqO*?uak&WXf3ItrKkKPToV6tC zNXF2s>#P$l^lE<2o*Zcj{`)sr9Od4r5o~oZr*pt4ra3eqDv|k9V%W#R)C+6U5~m%7 zQc^mOT65)gdQk}{Uw5{@_g@au(Z{>~s&ad2voD?h$<4x>++A`}-7Ml@&JX%|MY`q! zk?iDzdm>bFDuvn^Lw#K*(=$Ws3pqc$qiln(T&_<4%uycOJA2!YTAyxO`G>&$&$Az; z`_E4|IoLzb*iHm4d1rc z2Y4sCzDSMX-~4}Lx8O{G1X z>?nW7`@n+rVPlu}lSiGM@AUuIeCs;efA@xWe3nc`VvWf`laQLCxR|vf@m_llhUdgp zHdTcbJ?W%uGuBZ!Y-Ic9RR0|_+9zwbBV|J2w#3`}VPS>|a;|amxy7!*Wt!?!Q*1Q4 z?j<2TR8Dm(Bnt0lkF%DGMH}eFUzv>)zZpzD+WYLa0XG|4TH*hC(s&{#&g}X3VP`Xn zpQ<&AE6?9CKVn65HXy40V~m{VP#mvg!irHkj}>a^8eHqC`ueXuPD*3Fw&7kP)AC*D zuIoelFL`!el`u&!cJY`A_Q-MxlDtjh>6V)K{&Z#ZB||3v(bs8KpSqWQ;+?v_Fl}oS zG_fQz`k$}dbo0Nvp(I>zO9G`BX2r(A2$26na@bMwX&it&i3RP zZ`c|oLgpV&#g}t`?a^aTVd|}y$tXDPdN1|aZN~O(zmzO42ahpFEKYyyAKjKC{sj)Xp$~pG$xa6BQU7l4Y%1WMmMgu3cQR_`eo)-tQHvY)vBrBD9E7{fu3k*5 zJ@}c6+AvSWVE3h;H1Q={oa|1<^4@!~D&F?b=g)p@(V828I5vPwcjRM^N7i6&pL5JT zmJ=DP*RI9C0x-s$s`e13DvLuHK7fM=<>OrW^-`ci0qt_;<^v&2-sI~%;l=XzOJt1_ zF>GoHj4#_8ZDyqsfTS#i{d5HnZ#Q;cx=ka`P(PWTu2mKF>_GkHL5cUPZcMG(xj*s! zkG{y}=!Q!{EwAY%=XDeoX1^RacbVNJ|64LPu2#TlL$CY}w)&)*me6yCLw!+GJWJo4 zr4QnVF#(*oSBW(V|3I%qOpyQ#id`0G+fCbhp@5kldB1^Z?oh$v|A&JBi6k2clq4kd z1pS-eM?gqg!t-zwE!2O-6nHy(8e}rT2v4V%lY$lT*7x5rB0sI6z9R(N3C9$q!Wh1 ziO+e?E|5n@-oe3PCPc#u8WMAJPU*-^Ued?WWtCM`abFJuyrJyf3w1->=j>&8ZKAS9 z$X7H+UL<)iN5Xkoouz>+@5V5#I42yPZyppdP zfi^HOdVG|?AR)8y*)KIU4*{itOE^OOK`L;(sS+r%&MYh}ENLJTPh44K$!&A(WzO!h zrL!~ZY_v_{M+?c^;Yi!}+~v8RS)xUB4c9aIHaiW`I)BvImdH5xylA577w1p9cRVpV z(NV?~YkX2>lCxyy8#r3nswn=s7S!nriptef4t=qAOnbFmZ{7G*7UuZp$JfFbOY$wD z!a5hw`~AE1_ey$L8IGSiwJIrpYz<+JKA9XAaEN;X+!%VDBCzErq2Y`j1V)OXK!m>~ zL!9yp3W8wSAu)t8waRvqa7!X|$s6q@nHv0iYPcGo93$*4C?``B$1rcPCSUn?xX;Zd*2R$A4mS0J2wT9v8il2t15s4fgo>JMMCP^i6Xy7y|A6-7%dq~n~s#F`ziCY{&^{pzhXAMEE@U*~eSimvc{ z`B3#-K&gS_rIznUDT&%*o?$(*v6hL0eM{g(z%VY2~w?9v=E&icXxMm1ph)K>~edA7)%*el+A)o0yra$^1{` zTM_LgmJ`9@fwcR9tAd{qtOZa<_MafR=0Kc4QU(E;9U=C?+^M784k&RE#VWd7zODp1 zz(XdV!ZmXxv0nj*NRbT;o2h(=$divoFz~9sb`}S=xet&q0MaLrGa@HRLU|T+H&pT< z3Gh-iu}Z9PM-y)xFe)0i5|bGa0Sqmw!a)E?6rstF0Gg7M5j&z3>9ZD-;)uEH$)I2uM<+%Oa;hb};!xeZ zY13N-5D=IOX7>O|J6!Xf-2Xb$ScAO2@Z7rn)cJYfb&Hmr2yPHnU{&5}Tp+rd&NF7C zb*#nhu3~zPv5Z8OS?@DRb7Bo#_vH7__zzpLhO|J*}n=cmk zDjT;5$^EGwi!8=rgkpPpfH-^La8Ne9_XD%!2RR@-B z0UcG}o@2gy_Uxqn=5dbu3RTXnm#fw+SE1dwX|1^H@>^FouG;iM=A^?~{+s_Cb4U_> zEjd=<`*CQ06U%e0s$Tmsu{5Q&sn*t@){m7zHvNp1P~(uKQsO}-2Zh6gDb{H*c8frHx+b?j(t}Y*=k%-|J;m2fE<1&X+Bvr_jMMy|(UE_8!yMvN2+GJ*CQvZY% z+#6o}u*%cpO*UL9^In{Pcakz(fR^LET!(|8B(1D<0i_MKD{lUKdYQ>D7IlDSI$ z0msh@Ersh6quxfn3tMvzXbHNU)EWE8w{7Z=z3tT$K1zHo$a_Kcr_uP1uOe2l^rNXY zWU%qSaW*{59faiz7ei>7=faF~?72JOX;Q$r#SeEPbe@{w@9c}puhbr*&WlrD zk08n-aE)gYH8p0fAo81mH)oj;kY0%H4yzSH1_wryLOhx%`Z$Mb`O0v3gI&eKx;MM# z_NGonmPrb|Iq(T#9Tz4`yDT@&)30S43ERwC4qXVa448k=%)@y3#^(u@R6~~AV`8l~ zoQxr@^(9RV>qO;mct$iR?Ou4UsovoFizt*p1w%5POF!<%*R;d)w^Iv924Y}<`qA_8 zV>*=VVyG`MvGC)rjPQm(27<3e7>kyuD$6FK%Bz$TTb3zSu z1ddNK35*D);g=}B(Nn33zX_Q=D~9?yIyxfZF;*jk1M81;20O$}=Ug1x%=G*1@k&4U z>oD86;Hu&iPQ+zS#$iAW;g0SEeZ!*zs@?$D=?(22)QBJ%4|f^qWIVTyTz?J2k&x5x z!@jdQda?PO9QN(&0{?MEnf(}@k9v!7Xi49anTL)2+#g||!oKUG*KdihAJI6?O0oPZ zo%Z3tKMB%u2CqL*|LkuWI2v>Fnd3xgh(&7-t;4O|6qn+BrFyo3<=v4CdS&ibT-quF)Kp{s|WK8^*G4ZQet05 zmpKDvMC^sUOl1q5e7lEW;wWmZ)Z2{$?Kjfh;`-Lr^&SL7RlfZ=Cfe*pKL_7re1)8& zWM)Q&A*LgU%?_jyjV4}<2-aYHti-aUkU2Jn6;BV8|DLWWEhUx(=_Y%~pxzQ$3SPhzC!uTa~MWRw@dUl)%=Oo2aAm0oO{ZGvac@ z$rNP17cu6z&FC{o@;gymqmh8fK4p5*+7+5p%rP;erTH7q0l}#O;g(mfv_Ti)`Smq3 z6!!?J^=VXlKfV!NxDh%#5`zq)k;E5Zz$EjJ#xYGuV<;L4Djz@pgE{4Lr%%&>*xX;? z)#{T!a3Fv~`J7v`$4?Y0rXzB&1)xusclSLc2~w7EJLm#pvX<4NjFE;!-_ia*R!ko zpAB9yT)ykCx7a&4@bZSf?DMbLQ7x_mezA01OU=3mIXN@th>G^Kw)t;JSQ_D?q!6ER zs+I>krg*BvkYRT{CJB$PAKDO(X_OoCUE~P!iL#FP+GEE_wTrg1{xvQ)28$_B=cy(& zdx()9jJ6QE9}sxAg~StH7zn}2MjAcDINf<~kg#y0P6heaT6#al# zH)%-RNrAB8ImAdfnIbLVsTmy`)5m{=1m*jvE3FazD{#53@)5fd!i4sViUxyq-k$&1 zS2M5=q9f#N(3GxAEO)8wneW-a7GxD-@cuE>~j@2*Xc_?@k}~5~3pd)Ilw! zNP>=G`??6M0VXdpTF`lZLY4o`6;y4~H!l_Q$xM2(m-fd0l1kFD;Nx<9&j5{7_&7&@jGATTBW zyztj&IfBzb(@)}{fxwhQl4g+^0)@WYm=u*0szz#c8BQWY#*CF^uz2&cvHp5lsw2|% zndLpr!wsgA3lMm!XIbt<(w6Gf1y)v8h(A#=#`#v@0LxRx1uM0`S=3$8UT8N4S+ zr2+?ATYGe5xLHMzPC%+k{e@;nEO{686G5wU_;ON9#|gGUhbNj zMUVH8x}DXYTpRE&lE(&(#D~__Uo!!n5ca856d}yJxN~sacq}LE+>tM+&!39SzjRrW zShGm|L10HuSZ4`3Eq|e|KE8}|Cf+Tt(azUl_Sx^oGI<5_LPqltzSa@zk#}Vu+=I)e z`ZZ7PJNfBNL#lt;rKU?SdS5Vpl_^SctM5I6Q6EQUyakm!X#)-?6^@qh)WG5Y+aq_^? zLGrRUAb_B5q9eT(ewgQu#jZr0&#<<(cBeutN<>LSG7j;S7pz-U=ex0}E}{%1f=`q} zTbP-B?%lhm+$9Dm^(jjv0%D}!9+=6=&Zcet0{G&LGdEG50|-QROcm~6d}rLL3Ae_U zo1-35HwoOzljJw+4C960(}^Aomgk4<6$lZOe?U%B5Gj`yl}+^7M7Rch+UhlH9N3m| zBHM&b*7DMKM4H?~QFylShCQ+4kO6iu-jD+onpBc#gYJ`52>e${8K7j_g`jYV`{I`$ z8FQKJ-cZWHcIXhvqw%i*P{74O_XN2VaI%xJQv^rxofTFe*-k{@3#u}!m$F2}9*PZk zDZFYjF*iB?;nz-n5ry}gCFBK$Hio;3;^Glc%i3%F6ynerhz zxX|(EsheBswuah2JX@gWB3ozgIr}Hx_De-&pZstt zW8>aq4YSbl+4aZ9oL)d4&&fNMqA;~0vF~^9&`=e8ZIyu4ZnlhVn6gnERcuHxIGNVN zkgk!y@B{*u3OuxrnYEE8H)PP1!sw))qECems2es&Qh)$u)Z{NDGP#0|cBp2gy?0zv z7LDR^aXs?ZT5f~BWL4Vbb_ur<1zC1)oE1;knOw24A>T3yg7|Fido~niJp!s=tq_0_ zcjenJU$&L5ds!Y9`|g~*VLd?@4Qxdz1YoV?HiJsjH#n9U2exHhNYoOh0KqY_3fyXj zAdzESE|Z_-ct#N#uswk!r0trr+2!))2|G$`Y9hpD5&PVUBU>@1wzd}f>7mz6T7q|YU(OCUrX*egG`nxWg{pMC<-d z{&`V4G$UJbi6_zv!IL9Z01j{&Ap8W$Ao8cZd)+XF9(e5~fG5bHkHRkiH??uj=r`&Y znD&7OKsekqE)ijfqPKFKXLE=wIj@2Ian2|v;fdv3gQGn zsE}TRAd`Uiws{TW>N13a?1-iN3y8lW>m{DX*pKVX+1l9fsZEAYc42#!ywqwyP5prP z9WAum{QPGlJKC}DzB^BKp|~5vb#*Sy=nQFx&PA;Oexu4$355T`g{+s9C-2A| zaKtj&W6mH|8uivk?usz_DBUB-PH%y`*CY73%oe&s zt7=D1c=~%WG8{f}ua$CSI8IP4vBu$3y17y$CGdXtD$f#AZda;~m&b>8p3t-OV*5E% zs=UTXH%HgXWr=5aCj!XO2*v)9p`G=pts+rx!XonxQAs$K2>uJSOGcD| zl2#fR4anpLR-a3}Pa&E6x4Z{XNzyO=DxHcg4WM--Bch}f*)%gbaRi1#C%bKGF}!<& zDVv%~&(VPrw7!3Ra+tk@%9_Wu<@71cMbLi!b^Z2(Z_K6dfN0z1NVB1KexL+j&vSet zG~`~NK7HEb)0cju$AT*$i&&nYaDG+R5(!ECWPN^S#Su(ht4uVm!l-02)(PektZI;J zCs2z(gc6Q!HXn|=ZG&OoTXJnZp$UWz(;HxRFQ5Tm}& zEVyTL?8o;Li6QzX-kb|<*S~iyES0ac7w40Xk{x-!M2o6njh08=3km1Uxiq7Oj8Op^ z-I`10BgqGjH)f2Vzts5TpR9{-PF}ziO&O`j9vCytqJC^uhi~MHL8aPHs;f`L)NkxP zxAXHbSC&Hldi6`XW+E2pOPI{Pf|V!?oEzWUg`W=a&)4yYNJe`@L1i7=7OUfnF$ttB z0Bm?HsbLE(Z4ta`W{Ntnw=9kNoNz!_Lb$sj$2qE*+1YrO9h~2A;34@Zg~zD(b!5TI zbG#cqyJcrLz`KF&R0?KdpfQm+8}B48VwaPEJvbpoaCf68I*%%@uEbt)jMt1(7pGjI z+vL{hV_f;7Kntaw&EE!y}P)MAvu~;(( zmH7r=!YCka8&vh-@{2fc(20JCySApQukX^t6jwJ4u9cOXhwaufwJtfDBX<3Z!kPV0 zI!^!kvRKn^^W_Kr`CL>zw^}L0bEnAVmDc)0QuiKNy*yRqb(Ugj|6zGRy`e+MPWEq# z(|OxU-}r4l>MgM{L`8MLYTLFq)64tku^fXYM1|4g#Xvt0yar$f42Yg3Z5G;P@tNvDl!!=m2HJi!GHv| z!qB#%zS2@OuQbnhM;v2YtmcQ5%_)NKmkAATzbhSPkt{aU$rVY%iLZPpTK(G8S-oYP zssjTfI|`^oXIr);7Pe{M?sHnF>LGGj@$ZptJ;RgS)4J)hyoyR-*`P-}AZt_V+xcsw zeLV8lW};Lr&NW*A4kP_lVvPrf`a_qT3_33al|2qgN%lJpZceE@X7*n#02wg@POS?= zv~V>8V9Zf=k~oF?(r{+1=g3g&0#(JGN8g=av8^E<27Ip}@?>yPodMUbT}M8iN8V34 zx=s!Kc?r{3tv-kpiIAOz`A+y-(O3Bf&-9@7FK+&>sApy-hYe3Amw*MK zvgXsrE&8D|6D5B+E?){6I0*7U<>A+Es?!+T+SrlTqgam+LfhZacN;Z$dU+}HWzc5P zDmde#_B-E@T*is!^qh|uykA!^U?l!4$EBIqeB-x5*NngX<87t-+Zu(M7=~1w`x<{O zMgCQjDnE_xsO_pg=9aNxw( z!u86Rr@deZze#@ad^aNSz#BDHH*_*cI*VNyw&B{lx2v%E0DIt#_T^~2dG=?Kc7}=n zPh|@Q`J{5|I;O9tgQIoRSEj1YyxaW#2(v-5*lym{s59*!k5P~B_1l|#!d&CqGR}LJ z%;#cOi0xdhyqre$uY~dbxtMy>de3CQayMWJ+~44d@MJV!{at{Ya8ctZeyJS4jY8&P zf|K1PES&SnVr)};!HvTevpGVxD-#i0>#m?Zt6opxknfg9E@uYWy^Zh z9jI)Hi@`HY4w);zfA<8`v7dow0Lig3PR;k z+T!Xlw=BdSkuk(T>C5aVAw^N@~Cu7X=;c26g;4~cWFc5105CD9N^SAAK z`yJB%XgCal&{IvDdXj24s*k&5%@JMQ4yTn9%k8|mRN*S@3W?t-Gen=gzeV)u zVDDM?aXO!faNk(3-HYrKFS1+mtmiJw9W!Ek$Mc)~Yzw@=w;Cq^HB zo%$@X(oQ5r>GJkB5iR0Au}bsqqlefW#D}yC_XjQ+W>?7}F2^0wp}w&9fz%_04HBY* zCxHVo1YbR`*%wZ1cGnis@U?-;?A%~$0K%RID22%D9-NQ*6aDq1zXfrk1aJU=I?19& z@c~5jWs^MR*|TS|-NJNGY!$;YL(hA074|z(=|Cn>1FjkT-bwh5Nvbx|5lv%#p|v=q z_wM#NdY=q3qZvmxN%Mkgfrj6-ZWjlK2SB=HL=^1GqWy^8+AA{zA|W)PQ8?Mt5s-(- zIn2>LhR90%%%u?V#f5naI)g(X>Y=ka$_Sq|CbVl8oWdY5HB(RqCea%~_{PgxsBuV0 zwCV0ZnFPko2JX^p!)+h&4(dGTuvqm$i-MpIHjh6%*#+#zR$ivB{6c;K4^86tt601Yr1 z^N5<-c2Yir`0f|MX5ep3gyabdxGj($;qJ>pU?=**l9G~pK<02!7R4dYJ(ge#}LvW zbLLF(hYxpQtMEgOxo1yh`}8?vM%%Vu$3#^e9bJfr!!$m3)Fq!mWk3cek6l~ybK-=w zv^4_zv4~2bshWnj_f@$mVm4!`?{>SxQWkddt!@liV)$v1*AU_^3WL*8n5T%q30w7B z)MM>;a4W-?8lSZ64L+?rV0A7AV`$|VN)0T0O^!mmNKG5p3l#DG$(@{EY;0*?%ab3D z_M`2(3*=|zxNc*AT+Q7x`_CgZ!fa^wRG}R4YSzfNOUZ2m0zYh~g>|Zo*4AT(0?MFA z80$&btO9Kb?GZ3J=V+xA(WySl&K6?f=9UL2%l^e~Ofn0PG)Su# zjwzec%o96r2b{HE1h*eYYWuHWSBWcbO*qn&+ZtwGAy6i}f`Wo3i?11GF+kfHRiXU06Xk3I%4`Y%o#s0zz*0#eZf{Ouf~0zO*C*O)v~keDfovs!?F z5g#Wz`_YfZO@J240p!3CnWZo8f;25d!1=PMY!o#?r}jI570yYrLSL`Ij^UCIyJF8i zzeN!L*?u`O=T|cyf4we!y6E2R@Oa|}pFf$Zx079+_^%5EM@vkmY}h4W&V2r+P|S9% zVXi&=tb$6OuRXtA@ZH2-%(MFi+nSWVyDYauxu!Vfs{ z^6&^VpV8@9AJNx{L8t}ZOO9Kxr!WUcpNoj{5^tN%Ni5-D%J zVvnszg!3f6RpcfhGx~M}+x~_G{4`91xQJ7B4hxa^LNPK2qYkmMmZLroCkRo{1ttLF zj402FQ8T_p*GtBUf_>S4=+Gv7Xj~^!Xxc~$GMiF#!2DigisfV{!JVs4>6wuogECj7jf|-n&4AhCZw`7 zN6_MW$>z6iK!1mV!5%?71e?eGN(|z_RsEhm^}wVcNRZ)szmI_2k@5pcPd-X0`;oXP zu#?9yCIlJT-|$}-6?F$@S>_g}M> zgR+r{Ngh<)CQY#*Bx}??%|;)0IJjKpK5KE;wbLzLIcJ&$>1raBdoAQOsy2L_teG}t zdD>>L8j@6FJRZjUb(8hD!iOQI_$r=ZtLHg+kN;}(S^Rn`T`MgJgLF|$rHxP z!SCPis>E|e1ay)}66Lt_%dFj0Wknjh^kN}1gQAtpsV6fg^){TOjlj)H1|j$~|L{GnFLMg}8uD)2*@adra4a1L2WISMtSY`| zzRh1Fyv&3)yN}-BpiWJ*?-iEiE~@WoIJ1;4`$tuCsJK}5SxJwJ?G#&m<*xeFF**22kA8T|=jAtbrRUdMeJ`0MRQmo(L)0x45*-GKlX!QH zm@}yY$fv%3y*K1~n|B3gQq-5A%Z{LH5l}Qd^IQuy`)+DINf%w2RPoNP! zsy}!a4o~UGZyqsvtHV<#1FpzqeDikP-2Cjco1xY7tdZ*k?L6Qx^rD4b#f7S3rSMmg zF5RxPCh8Fsg_8pPn%3$%ZOJJYbT(&P^3c2V{Kn=idG;?)$j{$>+wLs%!EQ_TRkcgN zBq(zjL*%q8iu3jaB$ua<2(^NmCL9SMOGQQ?t&|=VQ^e7ZamEq@-^gcvw?<%tBW0<> z@Ckl7#(rh0&478OOZh$#zwT#VXH;l{a;^JQZzpe$Ys~91|9M(g#Y1FKWsGaNmZ!Y9 z`a##?+O{ok*j$Tut?-Q5;*efhKJ;-%-tch3)hRJA;mesx#^)CI|0>cpJ$$3E)auVP z?9pAQZ+rAMd`l6~eM3R!$Vl?N-5$?Ti?Mn11+TlkvA7oFj6n!R2c9O{r=qTtyh{_@ zj;XO7IC4+BCf>)EfiYA*ZoTVWJ2%@cmaLIACTzp{PuBI|jd?`sQam3=(j9qj=)PPm zgwhysxys&&D$RoRfOpY1(}O&=vvvAja!cR$e}0SD_ZK<2eP>RrVw1Zb{c{I;e#)oj z82U;DkLqZ`_7m@cJfEga z1=TrFo$Gm@H0&BYNawvEqj8PlCr^^Gaie_B+NC_lrH8%rTa>))s-Fz=w?Q}3TZFm1~W2F@I>FXItPf{D z=Ho2$kEs55_gwPrvmslY8%+n7eKJk|aoOpX2k__{%iYZIkvy)?CXe?r!yZn z8auN~Fgxn_1xecl`FXy%5G7To8;s2TQw%W@mY)o0n#v2p?i>=hE4isQwKf}Uarg9} z4fXfcSM8R)^=RXgxiHx`ID|1avFYN^wB(xRxbb+F$59S$)H_;k47HUraE(6SG(FqC zR=`RoT86#k^R`;=wIM1(Q_9}}7svm8AlW*9kt4m`Uea!_<0V(i zinUG0jhh*(ysLjrll!czyL;_f_t!gax+GBdckOS8>kQ|s%#Nsix?b14;y$0(iKTXI?pc@Uo-me$&A^|e-)4K)+}%@ z6q&3`i+oi5>u7v^=L-eiCt(|zJUv6!4owbG&budiM^@G7?hN@LlqhsE?6_9$3?=Xu z%WX>*b)E05@8hFILSFDMxZ4R2rPf>gmv@r(uViHRtB&E$>YaJp-Ry^g5-CDojj#c; z{Ua<_bUYjMajPoU-O1?1B`fd!Hh=no9WAY!{T-_06H!tRANuR{DJ^@GsO4lUQgfan zck7Rn_AH3Nw;p2G-`x>C>lcytckagGPFI zoc^*mo(`8-e8P^BsovuS?*=pXoj9It)|g$ z^VWMISur9>x-+{VMl;XI?C;7?J+Yd8b-rVd@>7%GqXIvUpF0(|<&N2rAbrWOvHE`h z*dNKY-A`zA%f1+I3EeKQ>=U=~`U;iF6;9WNj!A9caZ(;A{I5N^#t$PlAEly}8Ub1{ z0@Vs(*U6`VMs)^rl9njgzN^UZu0>Ign8QoT%xI*RAmpg1=k=!aFrp!SsTbG>sZ+^# zdshtLBL+MWA#!8vYjziHiS=;Yx@Skky6?jMTJAYkE3Uh2_@(~*O@ZGLRqvhAIHx&E z>fRhR*zqQ!-bBXhaAo$ngDd0~#*W&Ti#}c%9(t}iJVDeYEbGTiV{?;@93ABe_wIi- zGB7_CwYoH0(6QC^)8MuVGVc3-ZE!_jv{@0f85UmyA&W_?fS6Dj>P`h*>7dYv?gs-8 zzH~Yl&W*`IF!nF1d-gE`_a6a}CK+d#VkQG;2IxIvR|}LRx|z80p@3NJsP$T}1r_3J zHoFY&4~P>y61LSc*;!VLlRray-%qoS@I#ziAF)nY-g?{hXt$0dqkyZgcLjdK@k6QX1S6N zbiVJZluqf-n#h&tte5M8omZI{2iCcw1GE6NRP6|ltLpK&@jDlzK51~=khCcrl&I>GX-B9$=0RbcKPJxNDHje*x-%2hjqgApY=qs z1!?my8^@L@(kTnM&$01MMD?u~U;p(?{O55$JPBIE?jQ91%Rziw)=vfn<@+@#r&#(i588EyrEQ#-;?cB+g-kVV9KR&bqhMpLccne+NbMt7Y$P| z=kD%vq5bR&(&H1Cgr&zlIy)9=U7Kh)pIbc-XZx^>lQJsEIkcpr{GYFTj}MNfQC}j$ zAmVEh>;fjeqQe?GkF=jKSZ&56y<}Lr@6Q@{^_YyP1xJ7DAAP^Sp@5OeJ)*ngWtw1) z7+-zzfWliE&gkW884WCY$_BGVbvTrxiB8KNFf$SFdXLAAtd6=#0lT-RCUU; zdv6Vl8L!LF=Ui}l^-Vh`{6+c+TBkkUB6R*1hEay}Vgg&=L^LoOsjR-TI{aDTD@9F) z1AZ0(Nm}>*F)#c4gxl&-WcL+ubDuu1uJ@e7$+UeFfh$M;Y=%)bShnGUfSPhH`JQ$A zA1*=hQ9(MTcAnav6du&IGC>s+;09oQ~8RAAt4D&y}(?X-ZOct z!<>vCwJ<;IA~^sY?zY|XMzMiqt43d}LLT*}@S{eLT_E{H#%6n5CNSDcG^Avj6NCAiS~vD)t-DVJzy`+%B6g)0-JSns8irF#KYkOuRzibK%a7~cdv@*o%&FUl9q`lu78(%d| z7a4pMz1Lw#pwMgjj_H}OsP`^yN8@p=Se>j1JY*^toRHCPGaX?;wd?D^*xIc11{^-B z*M4nHWqMdWZ{xYxT{_w#G-%{CQAgi6wA<(9G}A0#z0Lo^dN?pVB3{-;{F0KABBFUB zcLg#))ZM_oDWqqGCcLpz;P|m)!~)d>K`%ZX+MABvUg8=l2KI+}Gb^rG9oo6iVzrba zBB4crV;cfWN1heL&7M&IwY9a8iL}5YYC(|@H&12=iP{D_&G@mwGy_<<609+VZihJK zrFKDXjRQJ+Xkh+vg^-egO1!)M@pv?>S49wLFUv-lA?|5}hDxT=O3j1`J1;&Ct#CVE z_tU8V30orTxB1e=8Q(CxFf80qqMePA-wB4`7!U*yu@8%#hy`2kJvDLQBC-!Y$lVx$ z3DqxvGt8@!AOJSNTce6MK5*H>i?R&7;0-dy#Uza6A;U6-OjlF{rvMBw@Cm-4{SFr@ z!6Cr=TOke~a4yc~qOV_r$#enCnA3Kdw*}tGX*uhxmUp?WdUPbbhq=9LWM*3ELCqtm z50c@~B|~U|WFVz}AM(RmtI1F{a{a)YeiM9T)3tL-N=+F43Os_034^VNWUC>>4<~3R z86^tc0LI${{FsIo4^vcG5Z*|vdmz;GFKdq2k-$!%VO>CNIsr1{DnxGtI~@`J5Ilnf zOhFnJ$*-h;0}?c1E|(tXXIKZv4~ZQ^--SaKVao?;gSM zp7Mt)_Vo>1iPzY2Mqk7${R96=O3J@l0G8Y7O&V^Q9tY0!u08Seg7esS$*Y2gBo}_m zOlsEX$SCoqxr-Rdd0Pyvz887YfAx5)#|M=u-;+i;C8Ks5BhpJpcirAC=e-&lefVui z$i)8rft@c;gyOsix)2x;U|2J|5$0oH1T%0{JO~5^xf%Kaz}h5D${vbRI6FcKpN6D! z;9-W=EkMA*-jeV;UL>G`WOxgw)-l*FAAG5{X1Z^PxMTp^iB4o9PL<&QNB(^v=UTnGuH6O{i(<*SNH&F+%f=mX&Nr4+Yh_?); ztQ2ogpLW$Wf{9ZsTSW*;f<#OOEIoFm57T$ImO2e%FP(<}3+7!|0Nmi1*Y^^9jh#+D zG_d~%fvupQKnsw0zECO4pFMl_`CCtx=P#x{cJA2l{lmAPKi77*ZTyXwXq{54obc~e zTzFNz_O7#*jDr#O@zgr>ZJ?B)L8F6nYjdo&*LOjhZ2v zH=*sS6WC0Bi!D2MUic+@?EbmkNcIrhMckGk{EiIK4dA3xL#7@cU!=}!XM(U28ozY` zM7TQcByg7kIddr1iKHFwfR5qe%eEx-i^i~-vCY2Iq{~AkGV+vPJs8rCZ8y{qjZf=rp`)8hzPF1h6=eZf zXf2LGiS_XGA8$&{QCFOB5Xbv#L0T&I3@-3(L@W(WHfAuagvgQ!?pdDn0`ihLRA16f zYi5`hWBmFlI294hu?MFr4(t)ss$_M7@?N!meKZ96@s9je8WkAJb)C(Da&KWkN06V5c)M0 z9m&ydA;-yq_e}4caHtRs0(dEJu$69VUe;7LEp@kO1Z$~UC za+rAnLQWsbHEi@`G@7WSA&BrR?%H-tEC-=v_g5C7iN*x*2`juO`@xI`wM=t*A}>IJ zAQ-eQO9-(9a-iRlp&1S~g$Qxs?q0^j!-F6C9y>4yrxfnPi)f1A=u?9K)N>ZpD$iAW zggAeE+GE6M(wfVUs&CuW=)O}53aZ0Tke4vALg6)gQRH_k$^DNW?9f-3H#k_`^kJvu zJz45;^NdNMJ}s*^H-5{6R0Tqwv3z3y1J$C7ykg|aDOyc8TboY(AD;@vRUb3N7*+pF zYF*3qsYz|p=JJg9mW|gx42&@fL=Q*XR(eMn!ONs_!DAU6AMe7geLg;rvBliXOmkpL z599@A1T6>C1F5zQgozKnki<`$@0E(}24;{|95k(CLy3nAoE#1q@BBndFzMGQxc?^@ zHYpNP)jeJ&xlM^)L)*S*E4f%Or`9ckjZAGLlG6UMx!Ei?H#bFQhXU;a$A;o!DmW1n z1`FDs<42~xmee0B->7CybH9_%_Vj(nF&7EKrCfAR5p1(_!|_PGB1Aw0+JsoL&VV4Y z2ZM7uGY?8za!FCZrI9RNWSs18aO(0B#LQ|v@ccIrXTV3EuiUBpv}@8F_u2$8s0vaA;AiFZ*R)WybpJ#kg)IIVvZ_b3nqo z9wWvgZD%p_n+Ry^$M%8hI)vRV&=giMUl2S%>f&FTN#MrG!^aMM`sx)Y3Ef3zrYrWW z>(Qo)&IRt$#jl?rwC!y8Hq=UH=OOv?7=)*u86V*s;p#uWO3|9^se9(QdCc4LgK*xA zBB_MH9uuDVLdb>rf&2-afRDH|15s!&oOrwPpMMTwEC>O;AZf;Ij1Krcy754_`PBQl z(&8Y9kGL83|G4_@K(6<;e^R9BbTkM}N=BlDj3||vjLeW(_R5MhlqT6B%9gz{vO}^% zNLE%hWrVEX>)ko`{XEa_k8_`MpA)`5pZB<~*Sd})@@Yzl*1KNcNmf82@!pQcNkcvB z>{-D4^PaFg>tr%cAM!tbt$FZOu=CNIk2T{r3l&^#3CN5(tEe{-QD#8#p-mDZlHkvr zOv{|r!g@Mc!u@%b_2({qtP4E$J?5FG@-yn#)uKGv@rw<8FBqt_V@#dI4l^8MzkM}} z(cE)teq2>J27-j>vz|2jHmTdlV#L8)I}fc-E<8|9n*0!09YwI(<5|(M_G~W<7+80^ zUUac$sMk=uMLS0p(JFW%u#94VkuC*QKBr9{Br%N;7lF%D?w>xEy@a#d2*m&?xNr~P zR!-^~f9bXxA+6W;I8{#@3v!z5{`rG`ZWmpP?{c@Awb&knOOTO5Xg5ji3UUnNdSxJW ze_B;~-@}6sTaW^_bp(6u0giOkj?8~Tr240~rm8sAOzoL4gqaIR?g5ltAaxrMv(nLN zTfLp*k5dde7{$=Zpg!KUc1UdmLhPe9p(x;kQ5BFu>9{R|pbltWR*yLNOW)Ls#F4X;PK`kuS`J?W?@Y2`V9HK|XDD)RKM&6*v)dYBI0`;tJz$zcF-U9-n|c}?TBd>C zW)RYu(-V_NW#+tbCBKQbA|9@cXuqkO;4z7Z7`!WAn~t@p5}ED{U5pwC(&6D@;=v|d zbbG&Lfmr0u@$0JoWMO3F;XE2ox9k`P zpVJb7`wMnbic2~VZoed?s7$Y1rpmegi^9yhwSUnm(=YA2;LEnRKtJy8Ub^dd=%k(N z+473ST4e3hS??=+UKBhuI94aDWS_xz>Que!M6-#%VzqAV4!ffEG<}Z~3R;m@!40Z$ z?m)=>pAmTAk&#qHB972(z6q$tkZ)XdWWpRGMsR-;tQoJuHn*U|9Kr>u6Rx=WhU|o} zz2M)pe&+&J8!9ddj2}S4GP*$KESS{^T1Zp__!SYCW?1D%Ow>rQ)?$CwOY+hGsP(pN z`G6ELFz&~I91esvkK+RJnYu-B@Zdo*2LS)!K6K(ZvW0&SMRKaAmkl@{xt#d$T;wI* zy?fyA+jr)H!W%_atofG#H$`mv*Vl{8F=6Rfw72iZjUBI=QU^akJr3uMvy1>@D{;;c zF#&F83~HASVA_R5ZvTxbd8aAY5qq~m2oOYsrRn1{CUZWJOS7eC)br`n%$t^4%OWfDee!eWXg!GM87U+^!^4kI`@!cv zKxQ}qBg$U>x>1j3mtW2P+zNYZvLved$Q_(D$C2HyiJwEtu*P(7;6@Nd-hR8km`weP z8bH&f7WHdkz-W{Pf&Gou%UjYWxHiwp_Fn$*;8SW7L&LVCFRdosp2i%Cq7;w69&?;#@lQyP^{Xma zCs19lc@0EIx@rbjJp4*%#KZAfSrs+L;cZ)&7}}p3w0456eam}jSMv&&+pqElVKLJ{ z?V%#)_3)uCkVGUHJ;W{a6v8Crr@!%|sD6u+7!4*FAB+;$$UCbO<0nZ0L8d35<0gJD zM1}iZ$s-UMlr(F8z_$aFfk~?o-UL}f;3b-8prRovNc2{up@kGlC3-3Q1omv+mKD?x z$6SBgAt$^B-|_Lx?+rFc7sO=|JF-g_^LugFkYoky%4u9FJJl|m;&cJJtD*A#fEbd{ zbFBMN1wFX3muyo(r1KDb26}?0OoEL)Lg>&PQKT~^lY&&M=vF8epv}l&n&7!8$A2aQapX0!9Xb^I@s1T{pI`(L4?^&oXD|T+YyJb=V`Qky0&Fm3 z7~GvvMpz1bRF1Ub17K9@MbZMJR|xkG(0#wj!a`H<+ix*NGO5f zMaE?j>Z}1YjK;7xlFTp|FMk$OZRJ6ZBL$Lxs-Vx2amlNL()x(klaSejI6TSosP9x5 zO!W2iNcVxpQWpv$`Jy~bBsFv}yFL4&J@fkCu)^te`>RbZCMeE^{rmKmIr)gtG3-$}Wf5d%G2`2=C11&%%9p z^WAM1R#PSe9ZFN$eOhIT*D{4}iDm?BGUs1R8CQ*2Jf!LN!)Yl0=g9}#LY(|LZK*+? zmC&_(82;UuGO(@$ca~?T@Q3oUC-MBz1=3BKc1m^{qh2HZoU_k1?a8>G%DMTZnNRW3 zFejCai#COfUhpHToqBK7KLpy`39Hkwqm{XswnyAQl>47R)A>b#TT3~-Q`vyNkSFq! zj2=Nrc7&PZT%|3+lPN8Bh zMgSw}hM=~N#HJ0O+5mm_*nW_y=$)Ia#hH~`jf-ux%;B0<#)d>!@x zK$D5PBpQ14(jT@l?OnB%K8(;K)0e|sf2rfLl>-$#o^`^e|3V>#3R9p!C?!}2(8V8UIDy!cgdLO! z`5z}s0Wv-E^!%X9!vhncMz)0)n@0pS=V_Pi3BVz zKg5YL5ZY-7B`@7IL(%YNt*gk=k5We`r(6w{G*>{?FL+O9Y zzXE28oTOzSIE=W&sUPnw*2_DZoZj8R?lw3oysxZ)Rpg6A2aQ?elTkdqC_@gF_$Xm~ z+w9VfzqGP;a%NRS#grrR`}X_J<5MTrdK=n@Jy4Eq{<+d}^1_s2_oww2j?wk+_@Hn2 zJG>eBU-AZ~GkW=NDY>%)omnmE2NEMQUbwxt4jr-Z&->X^+7d!5r9PsZR%pbxH7eG+ zhVAyi%LeDjgSEX6V%aPW9R{W%DDcxI3|A)IQCbsZl1c$kFdQllt#dv01hK>}j}yuT+J@IIECGfFD>4T7 zEdfBW85@zOsFDZds_C^j74B1#Z?OP~?s2B;y^>;pX{2g}n2(*{Nicc_l@W+u{~=+GN?nmQM5Gmrow;)_`7sdHyQ_;ut9|fPT#h+m(eVOZ;tyn?*&_QYs zBIEHaMDnsa4q(uw9;(CmaY{IB!r=G_iHnPqD562$f~wGoSOE59TwwYhbV2CyF-N%; zr(fdQ!tE`%4d=U8S7=V-Zg0anGkLWKbK()(a1rC#V0qPpS{-lT(=e*w_6oe46qn03 zHxQjeN^4}N5cf0mq$=w1lQh7UlPX>%(doL~tonlAJp>ObR0R8p=DwcBu91K0w9FZs>?$36sF9(Fms{ zFf9Dt1s4WvVcx5rBTgrk!h5hY)#A!gp2i2L#^OM;ppPeN&k#yRwWE_EEhdTh0&$Wa z?-eP~b!*X_bYULTfE1C75P|Pqt}zF?*iZK*j%_$@n)N0Rsb$cqbM62v{@5iMy9Dls zZK>3Z1FI9cO;Echu4O~k6IPz9YW7k0`J29&x-jt?RLRt5rHi>w9{^E!=Og_VAg?fv z_xJ_CX$m835UhUT_Q#M|b9mYhA`*}cH-kRZL!9JzW^5B@W?@M_`y9AIj_bSP_v=!J z-csM~s1nfeI_IG(bg*qxSL65FmhpFj_i=qPNmN(NpSks!_L`i}a6t9A;Rp5ef|#xs zu+-yny#3wu=)9%xYVYL4Bvh+G8tNz2dID7g2A6awId9g!y&iiiQ5I>^lqYo?R%FUz z)$g6-l{G39vl>obmue7fXHUu57W9uCFUQCCd2#Lzu8kJ+TNQ6~YtJm4yV!lSw|6Ri z$QAG=CSHF69N*_9qyL(3o2( z@VbO&Y{i8Iz4?1|mmdLKM#`>Ex~*!)4NM+_@!wWJA`klxZj&dNHRg$QCJfZkQTZXA zOr-JXHgL}v2F^yN!oT$a*Mbvj7!qdQs96F4$BrWOEvtG<0VZ;-zfGd1>`ORuJ32cT&y;g-FN1ugBZU{M-N9oHIuM8G4Vk^yArI@WcGRWuZwF=orL4pF#lo;aAUKEdzMb zYvqbM(MF9;1{DGNBVtRmx97*cb$C(oU3!FmBK+!}NFE~jX_YEp_rBUo<69|;U-lR{mNP@RZ~2*I+^pl-wMnvWqPGS&25Br2_273zbh?I{$~G^g=+A8V}~5*5{M z3&ftwHM@zilC0}_i;yHDL9-Lvg3Oh|PapuD|BYX;Z$dDzf2@G6w|ioR$z*?-SQ(1r zf0NURBboq#s4_`@I*^$&Pz&rjWzVVm?D7ikhbLM)8@ju77J49DkVT2<2n}Kzpjfn{ zB=qhnv^jQi5;@J0DJ_6?lugZtmKfArYK)E;C&>KJY8~dG)T~`-%wp4` z*0qchO8s6RQkQ+j2a)YTI~I3ywK4p&Yaiwc^B(<=7NCfX@Efp3P#O+KeMJ2ozuveO z-Z4lDNG7mawngYv`^vMEUB!B7^w-hNIo+vVx9+v@%%?Lbg(`Yu>nn2YWuQ4x!Ligd#^XDXpaM z%|c0HeDYzX7Nu%+V$#jtj;&q}rFtyb_?@I2Z zCW22eyEUlE9uDzT%@5w_pasVr%|W?L&D(q4J5`?bId5DrBXzJIba(7v9qNI&s;X14 zo<>%^-%dw&+r#7hB^~KBP=24F`5BnS7=jS2s=Rdbq|4Q~US8H^i=^cIUb-`@EshvX zbOHmQMXGcrjsN|F?|>^7IWD7&HO=gdTxd zA-#B%(HLNKIld7ks+U~|b9$GwT=Vgxf@pg=`yPXvVKzIWf)S2)NxohQFqUoZSm{== zM6JQ=Z#7U-llbh~f$ElT$;Luk?0_Od`(8 z4C{Y^Y(7;p-}`Xyaz(j-%5Ug)8iDXp!y-XbDUo*oc?r%V9&m;8j-a!8w&?=Bp z9ULEX*r6xYdTE%TsSBmv8a1j{OopzN%Pe>A){kaQx$WGp0zn$&VO7)UA4$j_iJrvy zjALUnK*?xqr~BH2m?sjumKvAHQ)oN8T13~7(E%_u!w31e*%FJrYBOV@rkxNoka2x< z2f}k5w%jRy!4LG8py_&R8hpe@XnQg+WC8^;v3G$fh0G32g9OkPT=*O?o*LY_l$s2Y zB?%dXKu`@+Dj;C!fqoA=7TF(ictYfJ0UR|;Q~HJ`(Mn$bQ~2yLUHPo~nXBvPKG?mr zVz@BF$lS#+k+0yk{+@~YdB*XDtA9yN1a5rm;&Pc&+`=jH(AyoO(b^I*@4n}1C&X%; zK5@%y`AU%efn{nSV-jc+yNvkQ`P=gL&qV)ZS7PW@t`&3|IoM`2JJkK>lCx?_RNBgO@Hlp zavvbF2g894M-r4?V!B_bdsb*~R@+wTDk7xA5CYr@gSdD|dxjUV_Fl2+NqyQN^S&BQ-u=Qd7?8*A=Y?E{)Z%1lCFNb_fGz{ZlZ;di?i}xmVC`#sL znYH!KF!^*7Xh$o-6EObsg#4(efCc7jg_ED+XF*28YKOL6162;5)tBSSCS^4nischNnYugUq zYcNe5u-nG>nc>pX(_8M258|lQ8do;x9(zNj=2B~P{PYX^G)I6D!o~b zf5%ncbltiCBGs>x!8o~<3Nl@-q@<+tY^a{JtbG61+mbxIwEX6s01yoTo&TDQR?cZ#XoXS@n$ifxIeCzS$kJOK`P2E7*sY& zxJcoXL9zr~1Ft7=g)N&Z6ZNZXsL*UymRt5IA8Eat>uyMYwWq7c#AB>wdXs{6>pu8J zVaf?Hc@VhKWR(iyV$z$DjML;9{T>;ch>Q0BY0_ zf50Gg8HpS0^O)f&p?Rz-x;~NeBA)Vhl5GLm8_3i+UMYV+R1e!1G%hAjyVI@n{$~Q= z!)>oOT6t8DeA}uoDYohA{fnK6ts`#+wP_q&yAI#~5_fncce_i*@dJlK`(3OVKNMAM z892JHfAagqhp|E*`;ETJ)$GW)LcPP)lk($1VNK@ZZIh!iwY-H|X=@YKsOhD=EVrhR z`O3UiS1OlrZLBXX#m?I-h68zB+$l@e?l9l1`(0uUX)eQUotfp(nfQlr`AM$kToE|)Fb-(_Hs$fm_PZ<8Yn zLK~tLT;1C_KCVwJVFYyu=BU#!534MYLFn-a%H8;HT<51teybn0IQ_`{!RCt>>-7rG zXE7H8H|A)$MNg&~I3a8m=*oTwUU4=Mrj)?8@UKguh~3C+aCPz4_V25VyLWF?&|}V; z^Tm+^f|g2+hMk&b(C`%YK0k!zWbz3FcCcDYAMCrEMC$TaAy_p%V2gqEk_Z`?=ylO} z5-AiJcVJ&F3NEyKOO@knvnmu9q7>*@52G^b6JcMy^l7j@OKzpU8)~3+r-9D_r1xqX z+s7}V*U=E3rbiaS!|KlwbLLdQ>DO&cX_nP3L zqb1+1%O&NvxSHE)F(`C&bxPu)8=HBF+#i?6S@D@Wzup|{-1DP?Ze)q=@|KY;v<2rb zGMH;usViM(`@NRgIZ3>^F5=dP(?0C9zLKu`#c_N-_9Au3?$2L^yt+bB{Va2LR8S+2 z=I0WYhVV|x_4R>z0-Y7l;=@JHs^3*ubAl0(!%;yR5dqHtI`Sd9}GJ+m9 zznUJcp=4@T%<(I{@9o_ATWE8D9m{8(0r6#(O#yc4a;u&V%B1$3HwLqFciROUgc1aX zK1c3p?3948aQ?@3#^WC~vKj#*pq|)&)GhW)fCLHBzB4Yz=BpSVhtg**Dq~igcooPr zUR~z#Li2Y1P1IE2Z%KCEbvk8>cdH1@@%HyuNi=VLqeOEX2x=~;6q4hA>RFb0LjfgG zn}R_S;1CQojYnEjQVec?$;)3RY zHM(kR<=AC>HMPrvuy6Eu)ia)VZDp=!HOGM}?Ud3{x1z=P>;cGsisycQ%0oV<@5A54 z&$^xvA^<^FFMTgS5~p&UZfzscPwNFhslU2e7ck!B?wlYiljkUl)(*->;=mik9Bano!;;R41c|#2|pKeaNAgHVQ|+ z<)fOKn*B+KgoJ|sP5Z=bZ4!pX^Wt;XSv~9e4AyaEJ5=dgS`Jb*;zX+<6YC({Ml1w` z1?AU^uUYp8Y&C%rH!XS6W_kA9=ya(QDM6tj6n^4r4PjT78tV{(HI5197{XkY2e zP5jQrm3e5P>Id!etY*;FrMnhim(P|DMz0mgza=W?Ss>Yz^Y(N1G?UxX?(#lnI>Hw&+-;$)HS6%A^ zG`I81Ro852E)O&N0M_M7y$2ZPEhtRN7Bl+Q9b~G?E}q-a5n$%cJkTDJ2uQ@ny5n?9 zh-zfw4%yxD{Kbop2qjla9480M?GsPLEsR4B0B5_A)-w4tLH7>uEW&+#E$StjW8kk8 ze+Er?%h=sH@#0|i%qLv$4?R7(f347ajHg-Q!%7?tTr6CMpHbRq&v`Uqy4f{i@KM|( z8b{snYpy_##=l~g+-2GcN9ZrXCP_RpJB1q&ubE+h6VN$BT-idAjB~fmkY**+h(83g?!228vIdiuUKMo|$D^Hi3GN}fdU8joeC*mY?>2mg z`Wpdnw5hjr2B?)*I#K$ftJ$p9UDPr8`8_nbu~_@WlhQN{{#`x1D&WNRMt5Gr#5q5p z?wb9tgM0#feIwr`+w6Fejl&y=xgd^+J_$ zx1*J^#L&5~n|;zhk7qJ+8Q!g)zIk8Vo zGYXJw1~Ql^5Ej#$9`%?{TU#6BFV;h!3qAd;VqDwXc6dzzj5Y-PLe@CJ>YTq0u-YlwO z05r@-X$-=SsZ&9)KWp6yqJk)-6g1&@i??R5KECS~nOkEWxxR!nc$iZ27SEq3zVn8$ z0myh53XnMi*471REpDH9K1SfEpv`E;eQ{;_dV7ZlgJDadYVn)__k`^*bj_L~TI=jp z;&;LkEf{Ko;+YQBIxh{E;JgZYDncDEl)#D z9++|fK*a(JW>%>9&#`|5Rp(!$3P>XsEYE!n`Pe3C2rMaDo}MBtUQiOpv14g!ZM`){ zd}QWGHRm2!42YQcrKl@oYCye>-IW`d&`0ut;TM1_ZwUo063L4`F7{WUI`x|zZ)e}* zX9_2lbY-Zjw$pu}{|dBIHs39@1`B??-&p0e{0DBn%Yj#hQ5WX~4|y^0efOLUq3i8h zoa=A;lTDCwuj9z?@U1`hEbS<})?;Vl4h4DtI{C)pUHO?pO17Aq{L|iF zWCGbIFJCGMrCDltH(Hq-TdK>YFLO?wv7znGwG+RB&TWh6y%6`E1c(Sx$!MKpvSt{0 z%F{({iQRQ$g)dCUcy&{M(kd)XfAsEluq=$+zCb&pE040dFd z{K}=o#PFug(K(80#Cul&Q%2vqKc&#bZM=0lh9C!5{g8#dunQ4Nug-JoX z3X>>FbteE6#0#--$>CH_L$09V+CpgI@G_46TCvBlIh@DGp!UUlP%AjadE`|h5t^hT5+I!jeRBjx zZ;YX{-FRYT@s%!$OKIx6C;%G)sv3q}P8a|w6G=W38(U+Mn;SfY@xOI)b92+M>sY{x zDk>^Ej-^$QQ3XRVlb{%XZ^q9NdJVulOk97%P9#J7loFzq0d(~wB^1D^H?UB$uE=m- zXb*_b2EXMYVd0mVnVEWq$E>4JF_S1qSWU?6-fyF$)&J3_08*kbt$1P19^X3zSsF>* zBSDAgwIc9c36w;l7lA*(%m{AP0P+){3qC+L;0a6AI1gbCL13|bw-bQ~N*xkV0MY6; z9UUF~p5^%6i4_;vRK_VW0bAgGNUWA73Jpy604#;LLmJ=8GIVtFkoPVO>@OvXP3roJ9I5l9dS?Qxm=&XbsYGLrBXe*cL4Q3rtpp zu0pFii-6T$;;TU`Ms&b{qeB7fqK+(qCuAOI4Ns6PJXpns4B_bIQ_%zCNGk_heZ3*# zzM{`ZWZGBiwqRr~5m@2ZB_2j-0{98pO&TJog3;MpfwzR#=?5~|x8{3j$e2Y;q?5tpB34&KMWSZ9hkG5>F(U-hFR9~&^!Y;=L|p{%mZAVx z5%Dzk6`q;YKN_4KBo$uz)!yCx3LRO8g$Ri7NOT3*-SCaizDn4^O-Ye{OhHz zCg~Khpgu%OAxgJP-T^nF;CduG7yy{#+PB(zZo?<7wHT{Ecpk2nMT z1|~nJX#<5Ia!-t>g4H()$|k~l0Vq+5S7yiR6NF@%SYlBQtxIf8%rf+Lr(4zfhn`x0 zY0Yt=&HExpd~fyc(AaZeqIvr6;Z5P5miynDf1$OHJD(9`wk_1)inK&*CC5gClDnFc zrsf0j%Pa%Z^T(2xY+iQv-uu|#?4zHyN6shU`2<3G9-e=ArG5I*$hW`uL~f<%Dx?$^ zusdNk5+3ZvHOp9dRi#AKNRn0d@AEGCZ~NG|SiO0_@7CpWOt$+j*~)P^YDRWrSXkRH zzNov;NeML(K`2-*YchZs?uLZm@0`0o!X0@|OY3DL`zl!3FK^*Ixr*Ieb#1zr5pRdc zS)jKfxo{|N4UfO&+bS|chYL3v4SDukb7KI}BtVp4e^BK1g7LOe`*0w89H*E6QwGnd z*uizmI}HsMmfuz6fk&523+sV|b^yXQg|~>+6(r6=;D`qy zfI&D1uDv z8q@w;O~wjWL(9(|aoPH-xc?@LDFF;iQ^&5d(BeOtZgbDfE_kPz{2_BQ~?7xUvM z8jgH^6Mvh_7&z!zI4H%xlIMCKr(a})c`c{d@!>I zsvAqd(hnU?1!@YUdTzr3Zl89SK{ZL^ew!KdjQ5KdYH@SMIG(puw+yVLz%PJFcamK@ zHSv7=kk8zMXl_MbhPFnNw?rzB{_#ugP0YCfq4PKVk#_UT(6Ew$TYuUBihx$_o6kT) zXM4}BQ?_8H z2Y#ZilmI)Ym1WtUmE^;`A+e(L9~0?uGSU*)H-1d*@D!|&_q(!}a45(7QQOAg5F=uH zFsNT^+mYD6&Ce`NZG%5;KkhtRC-dG577MR|CI+Z|e}mGIi1`Sc|F1h{9^lLsZlyFm zNy4T;t|w!#hiL(s=4faj>Az1n)U^=@E(-r#3(aOeM_Uefv#@_7hWzM~@>o*XqQ_%K zWlpgq(e2U>Ui+DnGmAm)hP6g2!*j!5*%k*>+xTa5ZN9CE(R54Fi9AsK^3kQyn9O5_ z{Q}4k8T{@cZdzLqyek$f@wzV(*i~s06gF!aOHsd;{Vut! zNv=b{;br^+Z@J(8JM$r}>(_HH#T73>=@!)Hyp;K??eg($CHqnNJS=*Hly9O}0wht2 z3o;i1Kg1<4K*v`@-pltPL_|1_QpN zA>6@5VE@RhbvrI?5X){_C~5GS$%UqC~MQ#lSfo4{}fh~^f?Rqoce&@)kB{(89d z`HmFaT3EBJ{QT${E3k6N`THdc^29`)qA-Lx^I$v$sao;|x3!5qZ=hEGUFY+pjV=~2C1HCozV z0J9s&*bh=2HAdfj)JypvEr1OARZ^tk4u`7P?U6aeBtM`|CUdmVpH>5g6mVM+2Ehp) zR1wLv0E$kdfzUOV19IOqY82YneDBsQ?3(I3SHaehRgS|QjX9$OmT z2|y=tsLLU_A)gR+6N~fEK4L4uLmF#2c4I`DmFj~#?cW>xI8$LmhIAl;p2Arl5 z5fPX~c&Ts{gWJith#~Nn-mNLEqYwj;5)GQn+t}?ywY+WHHew6s3Nt^Wzx=d1B5?KtSy=1N?u-u2wo~_#pX)wyTrYNbuv97E1y+rIQ?h%V5 zL5A?rE*I`Os+IHFrQ(5yM-#Ypl*nT|*W}m#tdCAp`K{x`qE+wPTLTVKBO50r~eQWffYkYDUuYHhrb-Y3m{Xz9J5B$IxaIH>e->uXC5x%u3}@aWQ-ag9o3B6@*8ZN zI~G4L_8H{tqo)dX^|NN*;t|9DL2W(;_cDls}hdcUJ2#_1(Tx&JBQ%C6|HpFMbJ-_e}2eaYud zKYN=W3qN#JpttmrGcVQFZw$k>`YG%Pu- zc?aANN8!#v7)UjKLAw+ONqSu%^RW0L_`CLI0f)qrIf^VV97BybpUJ;iZ+-D!g1_v_ z>#ehQ`J93j>$Dt9e>&p&^H>~Ts=JfNo3O!vJykzBwhoUh z^R~J&j$6w34K}}3ooD5KmdvnoOq=TVMa8Jn;rsp!wp6}dJGX}BbqX&R9T$lwzp8tx zGY-b+v8QxyXFz)xmpm(T-FK4e30=fIVuo{X7Hq_?q4PX%f&5uIhdY{1H+UX~XP(#| zC#Xa5mShQ6R$CWn{!;3ROu3T2jX?eD zW}i^+M_rvOBLBvDcC4b3Ct}KpSqt)B@o^`3DvL?2w%$4r_^e&wIabGY#Suz0sY7>a z+zn=S-1xOEGDS#X-QIzCSHUo~?6b2r8dMhF^T&>$I5apI^<8JvD_I%_wWlMSI47JP zq@DZ}#gcj1Eo#Zj~kT5UM-Fbw)iofuE{^Ep;hP~lsn=5I@sVd zW5c!S^o04m1>dme7TMf$W{aCR7pT;VMK{V=P&_$carJFzo$cA1({?4#US7CZTcR{L z-*`Et`Kol<(U61xeR<^PKV0+H^S_G2Sv91q5n zdpke3sdQvc7z|T=dJ%4;cUZ;J{dthVp5ln6wU-WvzC1!3?SFkiW<90*O%KgEKAAJq zO+6i7ocuPP-)h~Xuy&^d%l-jpvo4`Crb0K{D3-!g!ks4qmq0vDsVx)@kt69@};QxNyo9A_`{{HjetSfe*-WPiIV5ZD&$|J#X?Lr$@ z@Q#p8IUM!R0_^mjRgTPFpS|{0J%9fEPN4<{xy%O%K|3jCf5$tD$G*s>P;=0y%1B7E z-BqmElE+Ey`{0h|=+&$;{lXtKrVcI_LK7`N%xT|jp44h>SgZ^wZFAJ5NaP# z(QqxXgty1S-zxjy0GF}U0OjO{s_88;S-WiQj4UJy<=nHrHeM?beAh z%LNYK$8PJ=k5AZ-QhZDwV(*UdG6~LR3*`u```JBEvcA)!9*x)C=;-ds!NHH3#ZDKii>n+0#TLK#(f*-ll^LmFn?> z7U%eAKOC>waicAi?g}q;(z|@mSNtiTpQrGzOJcJW+oW;wNOZu5T5+i`t4XW7iqli2 zIoCzrjI=8(GxBa~q0!*_sqH`BLTM$b8o)b{;Nu=^^1JGpW=`aWNhYB4Yuw&EMDM&YO(!6)M*rPB1V_Q^7Jgr=-mzw|UiQ=nV*xwu$4NH@bwsH5Dg63u&QJia+u2+}|3dJk+kzQ}tU{^gx z<@2v3=jMfwl$mGRk>^8>9xm&R5|Y1M$Pji%dp>u;`&`L@jmxH6*Eri?g>~6{%YK?l z?pKrFa>-qfIu9C`(NpHWjLbB*br#-j8KeP>v^V`|f4d8l&Yow~;gPHV-x z?g+>XsdOCCGS;n>cX(OwXC?p7Ynr2Jb@=_~b}eI$p5vi#dV70@QAEhR@Zt88&q@t5 zGQ;8r!%7P0uP5D-M+U1$Fy+?pCV?Wqe5ZM) z!K@{5wNPI7zDFmW7X2)aDaPDAF)clOWOJ(79p*5WrK`t3@t+8NBdD|O+vNGaAE#To z9)HlQ?BqFHqwQW4JG z#ZwpmO&Xop7aIFlJH?LB%U;?kTXY+ozv!eJemLYCX{#hR&CPts=}}3YX&y z{Q^=S2cLPB4hyos*>!{Z$bvv!q7TP!EykT(hJtUoLf&Qe^)!mHPbcp>qA;7{BPPDD zXXzVrnMX;B&$;R4Wwo1zM|;=>t+r8rPub-6t94H?*TWSP*5OBTv}x>*`X83hs4~Qi z$*O(cXc3krT4c{8ByXLY`2TGXVfKB0t|RNM!y?UXVl#|X)JZ}-lB3bw>}#LfoM^EK zR&7%x*IXh8u%FvrEqA^6+k1q!hMrV^Gi=|)r=R@y7|UIG-<|3{`p0bfrUT+b0hycD z3}jx8ccSf5@vC4=3TQ5L8h9+rxLH%UIml3p-Iw`HaNF&?x-%z4I1Zhe?eLjarKo<@ zK6O`>V*ifYl`A*?Z>VnX#Q!YS$)KZZl9Aotd9oJFi{&UmbMb`1r0C8F%`Au^^!5DpROGjhWug9 zS@qBInOOhd<7rdZuM&0^p&Nos_fkBrgnZupD1Pw6OJxu-sCN#IC~bIau2XRGmh)hn zykew9o7|Hk$IT9*&Ox#p4PJ1?U!VAzpLonD)cfJ{i)}gshGHVfRe&TgZmmNA3Sc!t*buxB zNnQI`qpe!q)}fsz2pdun$OIVpvY$0v!(=fJ`22u8>?BG=5CsD^BCGXXt`#R$Cf%6a zLdPbqJlGUewWE!9JDow??Y#n*m_Gj4KNrzka5qAWeo2syMonB&Qk;%nf!?o*C4%$P zufvg4@0yN}F0DM2yBQp{QTpd^Cs7vRnzrt!>x}hIuj*sr6Yd(+n!(g&A__uBeC> zLBxlTIV>Uvr8uvaW{-h z`crzzo?z4D5~B?NchAINog%4XkO}wz8TyNb#k1iW2Kt1BSiE~gLcAb^YIHbQw*3f* zZHVrVA?XG<&N;9S5QD)U@E1Zm;q>{)k&-Xr?Ckt#(OQ6sM5x0Jb_Z|fF9hA<8-h?E z&kTkR`IiEh*z3b#n>qaWJ%}c!ON)X47YUn8W~AXqp1`~%Tp5rNoddu`Tv7`@F`R02oj`W|pd(Y@Ke`(3P-F&O zNq3Eojh#jaM=CI|SBAhoNi+(8utww`Cg)AOdm_{V@ST8l#IRh?>rpBWrP(3*m%2az zAvpF2Sn~rj;v0ba^6n`ew%C1oD5uU zL^MVW^&mZne2+$W0$_DzUER4$^uP{N)m$u<57z<)BsmTCd7Z}UCMHKfW*#7aksnO> zb7a0xIpFd)8dtkUv)r)iRb0a&ugpbwa~7;tGSU8wiBeW zqNJz@F!U<O;ttMdF` zb=7v>1=>`4W6v#fL4kom9&E)Cb1!Ee@<=|nnCX@n@_Nyy<*&U{@~85FOZ4kpX?19r zce*I?v<>pnHdUB@A4u51uafs_Z^198&{KnAhiwH)=aSnEOl^vfQD(+7m*_rdyx8g4 z90!EU4 zgxIZNIJ0C5;TKxmJ8^hIR%(TliJ;1`VGDpxCUA1M>l`x(!3bzl$Ph2k{wiN>kC?11 zEdVCp@q1Nb(PBW8LNaee>r>)n7DQWy?Fgw2-GqL2yVFp( z2a-`Ty8GOK?1Mkp@MEnyplprs)&pEzoAWw7^@>s#)tjw zUSY-`ax%XWvImR2aeg7YAq1oe>|B$v1~Wa-gdo6GRul)4{_} z*d0yF0+oz>aCaoHg^;Y1%pHbr@uu-=?zfMVKsHeSRu#++^H&^@dqqwll01n=5O{sH z{HSmiUO%J~;7)dva42OJ5~$%8L{W|7jPl~fM^&3rZpWT*FZs4QV~+GhB3dGg52OuI zxkDq=IOvMw@;wQi7h7Gpi2ZQ98Vb@{W`~Xv@-K+82lP3JoekiEQ!)pY;nSI2x_p96 z_JDqA5T?)XB{X|TegJmSD~z!N9XRZud?V6(Ai zIprZ*kg)o@gzOGuE;gadaYCB5T%x}ZnIn(+*W)mmOlDxcI}@+01(8!ys$=V+}t-||mqY1pG2N*S1|axx&!YKqTR zZNbYcNX&$N((AWRDqL*8L|ZK>z;GZKT-d^ zN#f&hs<)RVD?^5c8tu7e27!eFONPnP;X=wCdF}E6ohRLulw+xn<@Ye%Z3;h-qjp=e z^6R}*M^zTJ=&6_%*?(;D3QSF0AJ|kGFt=Lny;CE@yzbtYsU_9CKeN8NTgmkbGa+}p z|0f)K>NrOzjuy^GTs$0pSn|@E2TanwAtBWm{_?DS95F?yP>T_(vcaNE|F71xX0A$hLf5aD<#fFeu$TI#GvYZmhHy_{|TUj`?x+P1G@;iwK5 zS-5Vq_{%(7kV)@;2W*=@N$9o4>=PSf=dLHbq%1X6tq=tE!YgC-+;p=t=Y#?pox9??+>T zTij1$9UH!y#0QdOSOj-qumo}Qn zdSg?QQ_uaKLtoMkU<6}VYZMd=B$N(iQy_v7UX5?i_U)~2AGZ6Q&(FGS3Ylne+A;*i zBm`2+w)O;hjySMMrG+gg=<;Qb&96$~N89Cw`V*&{>PA2QwK~XBrH{vw(`kX@96v}u zHw$uHk~T;oO!*Q&&);;h-6AjPbE=Hg;|H#!sp?rKiy-h`=07vo;`F%J1iCor(d<1@ zuA(<1kRCHAU$owK?a4!n}ajiUCkCk728-NyVAjb2+UZMk&%e5jy4IF1a9x-|xM=M!lei(Q`@Dn9n39g>S*? zLEx%nHf0;3=`e~tDKC>1so!yBA4rcnq)Be*>1LvPndBHkYA&aMKp<`v-2^@k;FmY+AAC*@ zNDpwd*6aHA;?^MXM(_cRK+%mJnSq$mO#1#N)k-Tx@Ck?p2$qF=6rD5&iAS5jDx#A) z?Ejh&h$%<`32HG@tBN^HdgrvYvd*SOh{=VHc}v4}5N#KAIar&Bd=LfVK}C#g1+q>w zCTOeDRGS^}XiL?64uRA}K_3GM(_zvc2MF&Is|UiQ&Z(F3k!V)!OMZrQjYlip&iZdWlu^;{81i6q!&ofr&aMQwPx-&PGB<S_5^Fz0!WuIoA8@(Z0@CU6lD`SQYajrpZ`&Y4aUSqSo*FWpY_F~%9cHQ7xvn@k> z=VCHmkBatacMLOjJ#x{rTBU8lP~oRKS=|1N-l1eDYnSBK8%FxxRY_83#D}s?%1zQ& z7VJLGeu})y>!GX}JtUBrJS>^z%F@g*Nm<@=r`)Y5;jFg;H%oKUm36C2=EhPx%=t*&hYhuXv%>9n>)totQ^Z{BxVys5^e8TLQtO z+F1ju(?8FZRc|&q-avyDm(X=ZVChP)Ymp_KW6;rkPDPhW#NJpRggj5Kz5&@f>4uBhL2;=dyrQmK!?}C+o5il{9^5TirfUc_aMwx3 zE9byr+l%%*0bDZdvq*@S;Pd`s^L#U|<&QL<;*l(~0Kgjp2f_Nr8Bi5t^0VJo<@zQo zqW6>m&bPW7%aLSQ6nIVcf$~RSV`2;kjD~cLlqxO{VAGNR`JR3|AmHLy0(j1r?hw#$ zayoz(AIL!iF8#?RoYNw313}YU4$3ldi6o47U|A94u!=tY^kiw%!9)0$@a`ix7QRa# zQJ{l4--oVtKAl8mP}uv%!+dYEj|zHof2BOIh=I#(*Ybf?+wgkBk1;ZBiIwvBvjo(F`858-Q-ejJkvyV$ zMx8}NLZ`eS=8hQX@|sxa?0>2MGV|@P_vW|D0eu1ATLJ{Xk{9py0P!NO zaFn6M{C5ziRqChG`Y6fQaKvPAzwUtzoAK!i9l4XDqwm(3^#XVhnxBJ8m{QtD1)O|G zHB-I}xOWmXee%*#wgaRym*=MZ_vn8<+P>=hPO}*UUB@SBoK9LP+d4Tu~o!Zd~J;SwhBEh95Owe#%pPz81RycFU|7}`dF%$?6^&g!uQ1&b=VQCCfke_UM16YJ}6ylbC=IGp#Ku> z38sPrEjg*6!{~M`@__T#!KO{`N6~)_fols6@5>*-%Opn*u5e|PDyL0hP)_azfo%bR zvF2qX+l1jW0;@tgccTnItszo#3fySVafDLF9C?>(8JZD10;wwbd1z-%aD%mb z&vzhvjU4N-0bBo|efkMsQ+y|K=AzG;*b>DXg#CC~{|_32UpI9E`1wQ=dFfD6e!8hc z*N$B!jk*b%9&8Cer!~3(FV~~`)xT|eDHfJ^_*B#U6x>90olKS~iH zQ+LufreO=1xV{0Pe+H-oSy{n@3#c&75%?y5}ZLD%mbETjUDw8GPAavZs7=y5A%7R;7); zlp#4uzMCGr9%0eBmSFkO;bB0Y=zHgus~cU_{l8Xy%`cRrZAy5QwA%T!&W6CYx;Hy( zgZoR2ODHP-C_GQG6BnMKXH+SClVH2gCG~GhX&xLIIp%GX(=rT%75)T2ItRA1u)ISD zN@N(=u5ziDb1l>xq&GU~;drqGaD$VZ_Zj7i%s+uZu&9%eGe>k+t<9vDxJ{`eL=jW5o~^Lw;Av&Cq4og2!;MC zccJQYb^Hw6B|(#@PKd)HmWeKeJV|@c0dqo1$ERHSfS{l?Q`&oyUR=L_6n)$_5qK)iep>bJ<7btwP>rb$<2Hx;tdK1^ymxG zKYm<-1cAc+N(?vTS2S2GFpbPay&OoFN!m29$f@p!hQ0%SN$e7d&kDw<7C>&>ofK-c z)R#&3_6x^6CG?1)D#4KfzaXx?7Ld0=U8{-hIp4Um6&%hf+Z=&tyiYXOR>Sba{x(w_ zhHr0RwxaDvf;cv62{=4Gg@0o8c|2Bi)M2qHAHUS|SzmPavdT5|NWD8C zrQC3+I?(TekUyN0iJ>fJa4vcRx|+VdECGSmU8OSJmI6TLsnc=($>7db#_R@~A^|d~ z#U(PWoqiGTMZ8^=84Ck4L{Dn!AelK<+<$_zbD{bTPvqU*3+AT>ymlOh(mA4B4pnSY z(+$juuu$oL)sI{X8Tke~h&jI~0`bLo42B0Be&9q$N5`La5cgF)8Z`>a!~R5ff*BH| z1YE!YfOC=P#mO=-)2Uknqz24$S`h3-K>@5OZR!d|IvT&tp{Gt=w)5ouT`HJ@d(}h0 zn8d_k)+7R={*|TaQ>oh4eEOjzQ@40LA3u0&851#^_D%NuO}PP7=o4!4OFExgUtByG z9>9B%wyD^|8Q|u-Tbp(fupMV-H)4?q)P?#a#5$JPGv-UF0bT`^f4;CX`p@^SvREJs zluY!QyaB!IdkiPa@&Q9YKuSDyu&a7CJcy%R!RG%?u;i^&v5F1;VVQ>2GvPZJnMN&a zgRWC3q@THL@+N(oBkzUmj#8E**@iJ0zS{Y&f~zl|H|7@Srq5AsljH4Bl@PNo5L?=u zNn$o_2E$>{gSg(vi^+L^5y0yXhs6p=tf~x$+Q{W)pxND87PwG z$=_mfoP!xYv$deJ9=@lkU|8LlDHA>bKrogR@0(A&UbU!It<%NR<10Li<7w#tO+o2F)XLQ zc4D6xvw`MbrG}qEb0z}`nyPv`?_W>mOHQ^r+xOTPU=>a+L|!=Kn;ghDQP&Da^WwSB zY6F{Cs@!;>P-1+A-}Na9gVOnFYMyKgI-<{BZ!bBYFN1&C(Jkz&p-~?0dO46-(Tb%%H z$)sD|-Q`Rwl#^qdUT|w!lHn*yXbKex6R7{&FEuK`Qi~XjVqqmFscNW^b%EBMM!F&q zUUdzVo_u`fiz}18{JR{e_rp;h$iki40TZ|aPzvxc<>M|T!-C{w^p7{NB(lHMcW3jy zDE*wOCz6if8@lnQ-8uXy6yJ2W!u(4#Rs%nse-_r!VLi*2ix8Uub+bGkEb%#m;pMdc z@_^6CWExt56^_qxaK6KEFM#iD`O0hiwK?~FD(2ILoD~aV^JFTOV$54Y40xUX)Tiq@ zY!x(1VUD%U)>1iqF(rBZ3*9fA?RMfI%}3FAV&W!0?2E>a6>helSUWyH^E#hJYl+0T+>@Mtoi z`_9pN`v*KSjT6!#RsQ=YG#@NScW#@~ZArQ|c`BCrv>vU-W9yn|<(6L0kiO{BUAKL;fPoEn1I8RA!&uhTq}jD@k*Popue10QM;hJ<(f_?%(fT z-~9Ob#jx+{MdL5q2oB%U(n6+lsOEwT{s1i}GZROt=r?cP5dAW0yUS zM`n;fkI-9_Jg#Pp&AGSgtD&^ypYJj#F$$_NtF+5s8CdBAyXsdL*T0=X@`ZI?+22?< z9giuaP|ys+f}-QkG^5drt5%9)xH0rbE`8g*rto8#6&h9CUD2mrZlk1=-Rp8kO2h-x z>)U}ld1~c#bLaZs&}f{e33+_q=Ed?a8;R^;^nQoA2?Q@_lz%tkRu}!{6$iVo!}>q`>u#lj9vaBda4Xyo#7z zm)v%@cW71V-sMZ>j+#ZPrH5kvw#T>QHP8}h{oMa17O!*A+n}{$`9vt&x`9Io4S{u?yCl)Z*_IG{8pV4yLou5ub=!Aa>Jq>I53mc zNrNaJGrPRA7>)^K{eD9Rau{q-A3>uCWxi$7wb0}Xd1qS?m_Y%GO9XvcXrDK-J@;MK z?<2hk^fc5YsPn-2%2fop!v!&6tFNw!DU|^Gd-(NM#0ef4l<(nC%+4ipnO_6($_(>TD@o*YmecCbH=$teAu{N~BghFAq;I{RMt4?SBk zw5=S%5qSeQ6#DJ1ZMOYGLtD0Qulon*biCd6SnD4+j8aIboSceeOHdHcM0wgwP5g%u zc2fg?F4G6InQR7lH}7J8YK$N;Tz^(GKC)Mcr5b#pIwO*6?(tKI&C|4-p78;5J?-L$ zClmu-OdN-Y%pMM$=4p=h{d{npW_`4-n4H(yNwXb4qoS&_TC;}p5+2vHtj{cH%q+}( zm-=9b(%p-;7msJGp8na8ad5U($3DoYp_C!%>%+;Npp@vYYklNUasKF+dkk+`tt#|# zT{hiM`r7Rkx#r+(Q~~cR?aYVu3ydpAnREujubLLNdOyr{PNWh-*ge-x-W2R9&wb@P z4qqvL6W9f&$FyweXmZMX?^Ix38>YN6JdrB!zQo(yvL!oVei|5o!RT)W|JQ8$A+WP7 zd@UWElp9!2Q_FVH>Sm2*7H7*yqi@%_W5=lTw~^cqGQ{jo8YJzTQeLD$6M(Sdy~h!3 z&^B9PUv^^F(2tR6oac2rllL)<%HmI*2aBkf_%X{SWt1{-181Lfv;e`y=Eg4{xZ!NNLLBg$_W+T1qfRbXO;njf|i6!JD>ml6V?*oJ2$ zF=Fdv)`EVS0HFh|DmVinr4j($0N#b@qP4BKAI6_2D#>7ZnI9>gNbj6Qq3|jzQ%W)5ps#^ek*%T;YXw*9qh7jF?u?AvrG8mlWOo`p%_wAwR5j?z3= zj5KH-4CpuSTEa39LRS1ul_@ zoWHg~xfl<;Pxg4+jJg}haJCy@jMzE7#O%&@$;mUHj%|1l8yi$%%*n-7(KfUC2z+rc z5P+I5vu&I}MxoDW>cAW+UQ9;N9H79bpr$6+>)w|4+_BH_)tALZoh9$@mpuQ(re3Ul z&_8Z*6k}883#1bkCkW8=mi6)Y0zJY}k3E3+^ilkRvN} zq@%PUM4GF>tHQuP2z7oF+DU$75P}kW+@i5Kqk$TPgDGOKn+V)6^b-3ypYg&45(>i7 zWR-?lb-Pbl;`kJjuta06wbHtmpC|L91>tw>Xm2+lH)i>4zSO7slcbDh-E91q@Atw) z%DMZ{@f)VQGA*pz+FALy%T4BPN;nBF@K(vOpV-vx8MI_+h)E1`>P4(&5rfn$PGUGFpYc7$!wLym}-%e z9x+9-)i;kdg|xf1v6~H8EZ8`|f3m*LjAzHR-kNgF_wG@rRy^Gnh$O7{y(kX$Nt!ks zo}T*{SbhQ$%0U7K1>ntdCXo?Gz;Gf2Ab90sYJe{M1BAZ{9YQiP5Pk}M#f+A+o@Na7 z$oc%m6^1DINMd9_`DyGYT*|&qdV=6~N{x~6#CZ(3f)8BqA*U`1)$byQd3gLWd19Pe z#YMNBh1j%UpnmN3VjaLP&oAS)_jRxG?R13;N{q}=7v!-w)RcIMymtXa^F(iRwKX?;yM zq<5EPlTV3J|ANn3axD-KeFhxM#~y9hUA2IMv^&1z=uAHK=bMcfG?7Z|45!Lns35aG znsk(mbEm3ZDRTQ*dz;9|0N{m#QYJ9q_o>{Jb|H1FGJIhVUpF7b(*p5tica=L{ky~;Kk8op;M z;rdyxa#_|Gj4ViKs5`Ljm9@QcV4W|ME8V8{pfx>N8;V;NxtOP(SPmSVlzaomH>jMTgy#m8+5|4+#7_q|4w}Cj@Mgo1 z0-HZj0mC6oVI33hB*r6CycPv6VKBP2JFbBx2C5@}U?brmmQr8EG4nh3JfdIM;bMFS z=%F2}oP19dIHv!|puunK1%G>}U9x`u8+wq%H05l}o$U`I1j2zhWB~d)qqKg>un3GX zP`g(dTuCBMZI}y|JD(TDh!Qjb9HuoGdZZOruK>Z@@BRD7)x}p|Ci?(tdI;oXKJg8l)|oHmOaR2A@Ll z4oVhDn{(0YjF+LN)Vh^{4io9VtaV@;}*A7)e6Qx zrbkmUumk1L-nW29ST0OB6EJ$a_MfT2-1yk~WOV5ou)8R4l(&Vctn{z$8&QYc?qSFW zT4)gAs}n9aDh8|obL5l~vjHOF|D3}74W1cfnr8`=iG-74euE5m4(uxsIY@wS{>)d9 zPHzPT?K2M|RL$u86S}xq3o)To@R|hg-9C(}8}mnVG}GiXAv6FSNBaRL!U0eYrZQwe z2tqad<%r=Pi44Qf6W+EQTfdgXO_<}zB8LHClwuui*|v>z()gqUKn%`f{z8EQ2k&@D zV}Y4ZbV@lolze)4?cxv!cuR*9LfGv0-Xlq!eb<6l9RlR*XgSR>hT-WK(k_W+@ zb|Eeca9xs7iIiC6U98Rf==p5tNpcdbm6GJQ29ZPLznRS-ZRRg+`K%Q^uBw=nl9ZYk z&Y=Zm*XaZ)q;!N>saNSft~B*K&e~HCU`e0tzM7L3J0IV$Vrj4jx&H36pJEvKt;nl> zurkc>q4L7-Ws-5rv~jNZ>r1NQ%i_D(E4FqP4jHKBM^^*imRZ02`D(G_FYpAr*=5P zam(I3feJ?Vm;^Zk5Z_EKi0Lnx%>Y85Le!L{P}KbQmPY-oRo(CsID-4?9!Fr46><0* z!e8?(7NCN^|FI-ciwP?tYA%-#U=q^(~vFP z03G15`v(*RppB`fJ2GqLjC7VPa$6UEMXDq548bsojE2u3z7@X_D5{6L#Q>@F!H3BN zM}DZ;x<7=U4o(76iB5x*j|=*2xq}U9%d^eS+>Q+-mv7bo(D57Bgio;;JO0t*;y$cW z^x-0JVTNY`A3F^V6O-0@gL_|J2&_xK`PQ#I_QdI#_SQ$LtNk}w$kTb=c*%5s3(ta- zZNXqM7j?jg&uuPYuk$FGLyay!e2UtUqW5~Q=&Z)9w43jhKktT?+}eC7FK%qOT1Cxb z`Z?0!+0fAk6oDUuRosvFoVjc<&3TVL`+MoYd|I5a>N7Sqhje>B%lz6CcOn?%dy2!p zQddj;rG!hRpzR%p3xOaIUZ~@U$qkA>r@8NXAh?0u4A0p{;MBzD9fuR3 zR1^+4vixwpl6z7+B^ZgGKq{@sjxi0AIf=ecpP4BohJBz?;kO8V5cGaNZijqrGS|cS95aPI;=f0DdH~Sx2)->;&0)YzMR|P7RA=Ae4dyOXjLX%LJFu2sjN9G64wl zMkX!+u>ZUdx8NBxQ(531VU$6vmGCr?@)?7RFN9T=S|#i}<{N||i%OPQ#M_AJm;c;> zA5Cb<0CI^Bqa>mu0MvEPH!F#E^fyinI~8KuL=wITT1oua5Dx&Lsqd21?VupU|A}Gu zN8#?#lHgQV3y7aWHR=p@k9`0%Z|5jC$=y02FE2kc*DmWa%7{Oi+`Gvzd}d~* z*xLX#${_zrtT0z{#FBD(xYDA7&v;w2M2BMt^NRQ#`<0)xr<|{)~-HgwWmeR82>XHFT%Y3&Mp)0?IsIT&>k1*@$o^4K$5^id*_w#13 zyT!N8w0~@-a5;iUbdlX5d9SH6-Q=?m&O;j|i@5@aEK?%9K3&);_K3&WsX5P0xbU@E zsq_zS4KbFGLA%WzH|y7U)hQ|1?cAHO|NMcRHbuK6H~Pyli%}Q#dnAGeW1h{u7T3r~ z;8{DnY&vVXScFErgDoj-#R@yM>OP>tW=ujyp#{Q1$=YMK_ z-tsyr=u~6ttMDVPYw{ACG`iLp7)33~u2nmIWyj4=$-|Rx@Y)=tqFLAZ1*U)IdJ|j; zAz1JL?H-s-hK}sCM@I)96)}i0hO{MEs&pvk@;wklwom20T{xGCM$`@)17`35!cQe# z<8t(1T8;)bL8O9|(ps^0AQ30CM{Eo=Jn`owV?KPQ?90b-aba&xKD?)Pt9C$rNp@-9 zi|UmvH9v*8lIyx=AIX!GsF%)U?VL~Z!^ZKXv%S^LF+ap2m zWk#LW?WmlSk+gboL8ionv+vUC3(-a*UAF4C51g_bj25xJA#s6wt?A84nwOcymHdL# zqZ=qVg>?0=aaToDW_>V?n4&A6bM^_*d&w8EAePVO>~Ma?RwpZv#9x zImJ`L=L}|!6og^1*{HCRX(<)w9A6I;7ym`VTY$Z&VkI1OxZarW*?W@=gt?N#ghkgD z#V!ctTcmd+tv3l1^gL{BEz{Vu)ynVd?u(}wBuhJPQ|#BLyRrZLLAqn?4BTrYYXeT4 z`*x4#kit*eOx~k(junp2hFJWx>sFn+I_o<&%qU}bSUg(!#bLj5CifgQ#v?CoYNnd9 z<+=n&{G)|eN~F!!DC08P6oez0Vnf4!OlFM+~CW4oBm#(@$aLP#r;nd+mqR%)miV=l-l!~wSLXSW!LBAPdZO|B zK3NGPk+k@kk6HF!Z@mvJ?jCZgKmR5^+}?Rin1<oa+ocZoIKI^pO( zWGLaSyT!Ps%;9W~k{?&d^@f)d&WC>#b`{x-@iY#*53dwA?wxU)Zu@F)*_xG6pY<1~ zK0Ywknm4whC=i>RZ5OS{w3LF5XTvYl>dBt0a!U#8QJ*FIbCMd?_6$82d4jk2FVOwm zVeD8a&7>P;XY25W@yWpb!y%dFV-d&bs09a&sio-J2F)aA4~}hHzbVY6)qCXFT}}G* z=NvhmcR!}t>YFKieAE4PV&CD${5-X1lAE6@v(>dcdiiehTRxBN>s0!$A8K{(M$idf zJhbk-rs5U-wF9qGcaP=O?;2{~^fC9)SgI?VMrxNMrGfaxokOVJ%M74}4Y{KvwO0})PO^l}X zZ#?R#?H{~OWBo_zp@qH(OYaHEkGV3uQxbbC;@C^()IJtpn3MV5_DieW_V1qh?{Bxt z4$)?kjVh-p9DQ`smPPaN>ye~ey~p)~pIw}KCK~eMetGTA+@6r`?#c{5NjuxTU{wv# zqn_iXifR>CsCo1*w*8P0v1M(LEnBj&JrP3nhf4U*?pTTRaMu*ODAtA%y4rMJDO+0R z==fc4M%ez;xb&OQ7s`vM#Jb3f*w!gDY~PpbdArZrrLAxGmZ#wsr=zZox~}>5_w0~c z%5aASPE|{*mHA&AsN<6V4)%NLx+_OS>U)0Nx_@5znGuCR#pUzv-X?dn`Ba%|4|ajUS4>PP46f zna1aM=9C%4$)3f+B|7FD>wCv z)Q@JG+(}CeXR$q;5`OPebhBdQ(_AL~B}?x%_qzD?{bt*LWqld{@9qA5vA4>0{ridy zDBA<$CuKmFU_J)}cE-HvhomdQZvj1^r z+;Lspi;F4Q-)u{-ajZ4CHZVGsGIFl03^5)F>odO@DBo$7JIJc&8D+JVO0dqL*Gl}W zT}r{3Gg5TrzK?fb3J_!8qLp^9%aJ+pjd+9NJKdnimjC~YJ^4Q`Rx5G+X^D2%D8G%V zi5drIneypP!|c~S-MuH@e&dOuY}0jF7YBWhhaGHevE%NRYY6Pe?N7``b*zB#G?E-ZEA)N&aR*Ey7X$s+gGGl|60{>-F!I9=A`wRW}AC+lqvnw z9b&6eo)<8QFI*V^6X-Hu(eq=+JzC9c3Ep?-3^=ajs<94`W)1Hr)?rmdsh!r|^ zo}SZ3OXE&cZcivDH*4N$ZdU)=mF7>sI9Dh`T$@_sc}WyJll`K_OaPWtSOH#u`sKW?xxtHZq0 z=-&_c&xZO{^lw}HCisc&)v6xXUQyj@h5CjM;@xZ~`R=w1x23;(QQ$QgF1UK#@5*O> z3c}}I%zmd1wOIDN?u~n7d~Cnk-Sp2N0{6e|b%pMaBU#Kwo%0Q=+RchjFT` zedhghj@3Zw`j6JDca#pErxUXp+$y*_DtXSsufUsH(5^`-MkHwI{@I9yx2YNhQOZ9K z^-7qYtGV`l{&anYZW`N$>NGB_R*^RqTdWfqU7qCGeLV76P0is+HyQ31Q`TnFbb<$uS(}u~xApQ=G6uHk zeG7PZTg;}nBP0G-?k1~qB_;EYMWf>{&flGB5sKyf5Z6j~;AG&YQw^W_j%2p=&KH3H zc`F%yV-MXT`UGC8c6?&Jy5DsDLz{V%4atLUJFe;O+GhED@5q|kypsR>P95IHv%p_Z}U?6I%p=}D3L{=4 z)!abgPSbV3-D^yp5=j{4YQnG8S zpJ;n>Bx9STvZTyj=hP}HmXj;dZt`ZdKi3C_DF(zI zI-klx>B~XsFTGqp)R<#mo<6@?Cb^C7s)qgB@wpvuw>Da>`?+&8PUBL$$H(Y))!EgP z2TrJ6jI&PF>l%E2LXAcFju$+od(w2a1%gPYZ!#$7OyW>Gzm*B0rb#=7%8 zi}CH$HhB@lMsMcGgFNM}|1F5WtKvfcIs{?>H}6#`~SONb5Old`%;7>u;yix)$H}n))F3)kvMiHK;EwYTiULx)bN=L{VJ8$ zAnGSf4gz;wnV67f0bcJf7xx5)*$WnbB8j3%m6!2b%k8}HE) zQ%Wkh-KnaxVa}gHxvE|9^Op;ibd&||?`Z_j9@0_IQS#k0+WXvPu&R?M=xSBms#o86 zs6sxR;#>H7{$=O7g}pX@b)3H)9fAWj*bO*pzSi!@O%Zl^N_pcd4X3h}yu3oSXN`@K zmY>IT&_NRpf$Eoe8!}oA{Qtg+>pl$N1qd3xdJNdKZ)_~^Y}(tVreHF3LK@R7P-{ky zNGR0^4+!C#@aPXpNfEer@7}LpzdixyB)RdhbZM|cs_Xt3_WDI97ncP5-o$qV118Q$Wv7D0{2ltK@KF10I?V; zC7sPn{(jjA#zz2)jv*xt*m_Jij(tZ7pAbAH-5R>11E>Fyp%+wCPUZ&bdz%H7hi;q%UQ zmXb`42Q8=`U0giYur4E%vu_oJ`1p8Xh~tA-lH0!U&n{=(GTM+IbX|`2&&MOFH<`#D z@AmD(%0PnHZRiN9Kj&m;7dXN%*sk3e-~_RC!bDXzFNcgfiD3!AKLpZ7eh<2P7h;qU zAokhtK9CO)tihL&9#%DpZek)dB;+IzRjf!dP{Wv#B!TvhT16g;#siYxD=8@n6$vI# z<%rz2Ph&~-Up!SAQ==y@CYfQ z;5i7Yh;0u%LkO9gB!>XWI&0$wFdrc4>Z_1*szU77rd)o`I|Z3iK|2nMwS+=liy4L_ zP;JcUOrd=Df)9;Y{8^D}OpVHc8VUR1mE9unv6LX=MEojZXBT&?JpS zGHcH9z`XN4YI1iQsAo*zq(peVTY2aKvOR40-`mv0RcigXI9{jHF_s+yw-MsDh!+}wrXrHvYE}PEp$L}sszr609 zG`f-IvO&~Vop=eUD$|z}?t$wK#lGz^X_4JrmnK$hzj0mkh1PbKe=eDNhBR$~Eg4V; zMv~)#oM?|9GhSISrQQGSKQ6$s8%R7vBn$peBCPev3R(DK6<%F^8V3K>kmgeIYNxUi zY9dq|kA)1kSy)&=_+EhM1(4a;0Hg21TEz^g0T4Yxa?GwPCy%7TLhbYR-^zO0Dtdf5YupBzN|dfUCXtP(4Y$VzgfBO>JC z=g+dw$P5B&qRfX32NNZ*+}0p4{4uXurHMC|3yDd`2%bvyx#CtN6<&nA29E!got-fl z>I)eaSK}-qHY54=T^Atuzi{{l&cQ76T4uY>;u?H2!as)4Tdam<)20eMBwE%hyD(bQ ze=++YJe=>g4oL3DFpwhYhwwt$jb92AFcL@t4?qYh-n6uY6VJTly%mQ;@vHBLNeq4| z72m`}9*p9jz>fb!lICZOQ6p<1JKw~}xcjy-J3Bj|-!+t! zl$xo!n-Jgv6;Xln5CdqfxQ*^dMSXyW7MN)?7*pr!&V%1o15pXLt%aGH17b^w{~a!T zl8}x7@otRAC8Q!YyxWVSpq`HFe^n|Dx!Zfx#xE?!p0wDp@6*`2bPk`Mi$|~a_MYc| ze!8JXhsI(=L@jwH=y=kM>QmK}Pu5P)L^rIl?{$h-RlA$2IqUi?C}gic`?2uUw)`_P zmssbU+o)CKEJ2MA*kUch(3jsC_Y2G&@2Av;{Nf9*EZCcJHB&>%n)y|x^+uOe0?y{p58 zsrh-(Uu7;-2^2zN{TPGL4OhXQnw#u8H$1oMdRgF7B?pMadQRI&IUz0GzPld$A;kA3 zR=pw>3#BaouTvLRc--8>xbvqn0#fAO?-H` z{A&}%ZQ+JzMz=%86}~=yn4tRflf~3*>|tlA-?_!9%D&36yA)=X<_}nki{HGzQk&tF zUL#$Xa<=EmfgKlW)F$sJCyEr+Z@#B2bezxo%=;X=Va*?WIayynK6H2|s`T$?c8{xm z@454Lo|vO*k~(*eIi0+s;yRF~sGlIs<3p6CzHSAIq3#h&{?Wa>Z?`;mn+PjB6#FF7rX}0l(a8z(u=gaM2Cl2M@0U>(k-LMm3d6&vaRrimE%@m$BYpbf zMil56sn>o!xQ)2eos3iM9vnPrX7;Q~N*01Fw0YP9$)5{`m0>+uQ4BlMYJB z{>w%aU1jx9XsLi9=6LDSGu*hBP+Ncc^vSE1`6g2P6y7~xQ@4P((W+IeR6*RpP4@y( z)L7S&7|$_}k!VrP4M)_~H>0Q}({BV0y&o0d1115+Q4J7N$v@`3cH;&$x*KwxW0uY| zY$Oe<6&xQ8uwO%A;fsHbKob&A2(_6LoG>392q~q0y96>8;ar1^w>t0a-N;BbIMzIa zZ3?kD)ksvVnn3aWxb8JdyuDvJP(ncW#TC8d)TvV_byZMVEZ{Ut+iu@!J%FZ_@a3?t zzE~ZUm6e6;IU0Nj-L#>}@|v34IKvdW9zpyX-}HXP&8WcPs1t$*pHPCPla+KAMsfNb zhmj`a5{InUFIB4)w0GIGy%sgr88Qni@I09|XkB&e)>DvYRIy9jJ36MP zrk>!wA-Tx0O)HHk;8E-x0D%&xWk7zu_}tu_yN3ta(qwRtQtU&>@;?nVDW)k%hE%XT zx1k8$V0>Tr$)`Ole7fn_MhK7W+fc$Itr-*k=@8sgTMhbVF)=|;X(|Ffl zQa)VUV+q~&`GuJQBxK3=-ADDJm8{8yv>&{oaHcndFI)9V`?+*4Bj;e((i#|iJW_L9q?pnXvKEeh$^xTw`E zd*_^RH^2wLOw!spvT$k3T%5t(Ua>su(B^AZ6>KGSs`-+XfrEY{^5IeM{MKCI5zBab z^VJ=jb6)p)T(vXmcZ==%`YcsFgL@Yb2TKvp1`#jO=TspEDCMQb*EpS0qh<)(;Aoa{ ziF23GCYD%}3-kIrTMMa1KVgsZ}TJNkh;uH=MyNS&b( zd~H+OetVOz+)-FX+t?9X)6c7vaP=xHzbyJ8v;HmDJ~Zg5{a(U)C7uUK-KQwch^iAT zS7Hf^D)u=Xmx&J{sIKq#?A^6%7do2NsNKNlXVq!G-W8kDWCaQ}ne?7kQc3_3f6w{n z6mrLoVOcUz$awxRp6agHBIVr{YL z_dY{cg7n6OT>M~SokRRzptq&-vY{D>cIzaIAv+iBbrHk_l2A=7ae@mpNx{>LcHO#M z{%(qIkg4F6OMCt}9kQK+LkYY<)aIAIeS(nK>yY!Fdb zh2Lzct|jR@WmlF@tN6_9IEXF;^>$n#NEz5mhMD}=~4fmdXKUWA5E!uxlwAY(O} zq1`1rutRsd^6^W{$bif$i)t8DAV1P4;rQ4OI@6hFc_11_MSt8E#%m=S!BdyGAgRa5 z1hPgvDiyG3l|!!dzM+M`R|W2`wY0Rtml*(_RO5hB`n+Y!mIQ0NhWHa?hvKZvJN=vB zG=$Io==N{$s}X@!i4F+jGd`3{PZ7#@VT>dwj(m!{k$Mk`i+k*nl{n`lJZ7GWrniB3 zLx*~N|E5}QZte#tj^Ojsf=3UCs2eQ{pC+3x;SQnGH4r;_^(cEGCjb9xvI%oOu9BPi zCbaqBhQ}cm9qLRYges! z-J}luAK<0+_3vYX?@a8p=UHg#VxE7kkx!uNdjB%x^G7zh>W)&0;l@v6E@qaBE32&S zIz`XaURk>JPHjVhYyW<3_PuL$_wN%^8_qKutk&sz{6&|6>#@S`X!l3bZ+CYEynNNg z9#qU9rgV6#ceXLp?#_c6mJ+)U=N9h!2PTYJk8>}i@)x1QUD)wE7LWhzau?Dqyq8aznOLNj+%MTHUHFKf0{z^TiSfhh$@76;fZ%bY=K=wf)YQL!irgx(Z!f4or-Yl7 z9tU_F+BA@SL*V<8iM&AczH3?cgn~O^;=G6_VglCz3gmsZKf4FTfe6G6prGJ~45CC5 zO*;0pVdKV)h*?~tnxsk0gi)h9Vr`(Mc#q}4XH+bam6e4}(eQnA1Yn$eFH?eg4J4x^ z!x*RqN!aDrO5P9O@{yvmjDiLQ_tAqvQ+f>7@jGk=BA|ec6tl5z6=Y(UQzpcSG^`(m zGC`406%$uB{8^qY_c=gjhr!9zaKkPyFRw5-i-M^}>M8t-)3Ng?%3u}pq{S5l-f1vz zLEk==pe_ug_sa559pb$U)*CUp1uyln(hsJaxJb|R1_P7K0dhxvAwWAV5TZg<8;?fG zH{wVMk~q;6?2?q+dinBY5>$-uU5);f;51396;rVYb)_NH>V>aO015E107dN}Rv~zn z7U;bsq@-{Ry+&hvJ1{V(Ft$DdKVqlp@*6;YYA?OAY$zqj{$`}+CG*X==y;huQ`V(<*^{cahVXjDMLfaid` z9Ro^+R_$SW20YG0z!sI`DB?z-01i`gya(cdk@_Md7{&JacAYogF@W7O zcCr6oWQ)CIW>cnnn{35-0io^B&)@OlFEGt`xlEbt&F8U}>reuK*N>IeB6(uaH~6A?5xqwK81@l z@w_M0OmZin$|Lv`X#dz!=HPt#S`DEYqTmgdH}V(=j+egabp|%y@cjPl3Xnb4dQqho ztVv76B%-}}q~rvr32U;$xTk?2iQX7 zK*NWBip{AW1Lr8L>r<|-Vs&+Ou$O7pP zzOwY~xhJLUpI@fntKvula8zBVhLVGX#N%fU;f0YR1$e&hr2r`ay+B#}aQ45#;pBi`_5+Bl;j-SZ1mB#6yFQ;@_HGE8C?q5#R3YvNR6d4@2VB*V`spX1 zV1liK_DLZm5jO$yKCTk9Ls<#7WT?H#VIDpe2Zaft?c&uwZMaBmMB?5k6q=qyt)b^1 zj6-)nguapQ?id`6lms@2f*Y1iPt=nDI^M8hCjra&Zxk0ev{CgEr*P7r5ojHq)ezWw zk9<{gg8_@5bF*^CW9khNCpXGD&+d`(<#4Mlew!ES`KaG0=H|0^28(@bxuf6L%z9g zx{<ZS4rWc2OaQWSHpL`E@%TDg=-K9;@0dr5WI=ev7C1JtA&INwTg zc%RK?S5Z(t;$ll*r=z{aWh}Xv%9%lsBLCjEe_`r74P%#{@$f7s8hJ)fghvzDU^8k} zs8q>LhC3i9(lFz&n#ueT;4?ueadJ;jPowH7>`|1KmPUciv}1@E;Nsf+Sh`)>-B=?M zQg&h*4=B|Em1X(<2OV(6mE(Bbf(F9iveS9&8*_-k=d1ZWrq zT-8sXZQWAg3WXC#2zTNzXm8 z7*6HYW}n-_&RtpXMPJ=FJY0<(AejCZ_uF$o=T|GZUx%Sx+r-2~Q!d`+W$HqeVbel& zlltIJsn+hnZ`j)@y@@7OHuQSi@DOoGQNGR!KXl5-$msJ>a^r}ZiKsJvi}q9nO{5<` z(^~N0P&Qh1$M+m9t%~+0;CThwf8)}gn&EHv zvDR-G`-wEt$6qvG`!qwsc6PahSDw&IQBNs-9v>eEb3gn?iTM1oz`4@mrm=X$&Lc3M z?kcWq8Lh*(sP@v*kU}9Pp2ptZo}GhZ??kMWOR`?`y-*|1Gfv&S-}7L#L45?sNZMeI z%ZJR9c*Tg-pfJY$x2NnBVr=nQeY4GL4*-V`jBP>l&#RTph}QXGSn>-#wfI$#Kmxls z?sO+B7=4!Vw!>WryNCU7Q{reNHa!x13SPZpmZvabe_7Y68ypp7;}}IJo^#~GHW-oq zi@z$|Q^SGrStf|!iz@$5AsleEN;xsBAcNOYc#GVNOe$tyxoh5h7TI<(x63AaRIe9& z*UXiiSyS^niai^#$m2Vz$7fd8cKQDws=hlO%f5gAB4n>@Dw`0ZB+3dQA(fS^$ZDX- zs$`X&>{NDTWJW163fU#4R3aqVBr|@;+4J1b@BZGe*Zs#`ce>8=`h4Ewcpt~{&bie; zV$M&%lKRD*Hb5H2`9I*)fJC+6Ca?jt7Ke%l&XRrA-=W#3o z9Chn(kJYV~_jFd2NK-5w68^Ae{=tWH@LlSbDv!7Qq$5jLC3&r%K_&cI@41#%O!#N> z`7L+k=>y|GFxWb&JPYi7!+l}TkGRQ`@0rd1)3{E@+h^Y^7JoAJ^-I)9%e08AyVruZ zsHdZYLkX-!kdj2hjz$5zv4sH`F|Wh5UDYOm9{FnsB{T)%*OCG6~w#7Srt45aR)OYQQYfVH7QD zzyJ?wqza2`4;Po0S)l|3T1qT(>Fev$GCnuyawPzeXp`M@lplv5TI^a|oijw2z5RPW z+NFl63UC|n(=@fTbTgE#gd^|BMeaA|uIW6tx(auI?J#siCx}*hcA^Pp5YnG6-_20O zc3)S#6H2beGRw!2BX!7o+e6D{78dT~TC75FLcEAO299q8DCsx-LVgh3x9`OAq4q!H z#0bZ4K^pU)GP6FO%AP%3pCf1^jB|HNQnckDDG_P#$rD9LTemA!nq>k)zy~Aj6bUae zU~#lxdIF(hy#Rj)2CmP?w4?c)Z;D;KjkYxZm~DJ@^*$g1r%*nL4i-F&mozn?J(Km$ z#b>&o3_YtY>WM1Az3`Wlh1xB3Y#+>52s2C4i^>l6FcpT%fgsc-hx5-^UpIMO;sPBc zM~Erlk8k%9`cWxT9(`|kFs_(#>#GTLR+9tlq)qDEF&w*__Q%1WD_K8l&G@q>RT%A|jvxhdMqkbgKyQx(9 zKTUAph#uMn)JX&zgy;mZ1f4h`z$AXWqZ}06+@0-mgP(ex4FaU*7$66eh@>>9EEpAWCF^&?n z6pf7H#TL(3?rQZ%g9cq zTJQ@sJ^iNI20Olu9T3jxI7XpFP4*x~B zZAB$VLLLrTjo`Olc6Q37eNIG{kNqP()L=$$o;)UUv5j!&#HMQ-I4KYv91i^_o;*wzHsHI%&VU)H zj6aTZc#L+5_@c>#4%)!L0Jmv0S1SbOT3FRWt~04zF}t@ZuL|wp4!}Za2ai6uVM+{J z*r>_=1&w?xRlmFMBgX=}NFR3Ljjj)MdbGd4{NZDML40xai5->vjSU?es-+W7S63Mv z@>b+F5P7Yr;_mlm#R`2& z^PQTtzSD9b-D9kwY=Yx2Bc+CjO4-b0$gG19&*oTqt?&Pb3xL5gYUBRNNdpM%2saAC zE&(+%%-7w}2&aB(KEaS0A8)^_y9MkI*jsc-?*3({PGAh^nZJPmX8GKoU=E;}uf#AD zGfA!IlCRn;JBN~{eDsSgHVJV(BeCtYE{xN)P1)yHF>Z;TEXjnDhmz)mUG%SCVgmB8 z?2)RLF)z)2=Mlni-huIWuiWHGt691_zb0BL?9s%geo%rk9ChjA(w+(eVHV z3vdr3k_m`-i5OZF*2Wr@w*cvphcp7 zIw^8`>9fQ+1eKtvsp%SV1Dw0EHP#il&f_p*#1nx{5J1&&7-{_c-a2kYKF~0|ZWP&A zvtO$@zvy`j`agzRxV69xOYLflmZl~%7ncs0L|$HAgbM(!);`ZG$WdCSPfH;~BE50s zF`n$%ATKTt37h82hCQaqv6ny^r~KJA>3iH0pTM-VdKLlX7uXmgv6x^qrU}Ifoz9 z>zqujv-0_sK5-PC5~Vv&RH*BJixcxV$}f%Mv)A6m_R7`q#4<_mO5{jZiuEi>g+Is~PR%p{>2eA7+4#ea+$M)_Iz5#*)Hso4G*ZL9tWF>fft(E0R)n~e zEXeP`WcX;+hmRk3pw|ZJ411qWBE>?b{OMi=&;@ouLBZFf7c8s1W6{m3daloX1MThn zw758e1T@)f-o|gd9o#Pq>|2Y%;6D)UfU`1o3L&6={w5qVGc)U@;xGQ)Qa4L;XgNkf+`NH<{L1_psQQZ@;Q2B7^dL_tAVJphLzOyE;~ z<%|Cps|UyINR_uc9Oe&((E6-9sQA&YY>teI%E1}NV_`1Xh&rCIeLxnk|MKMo?Xfc8 z=Y)e5n?LKHv`7r%aNCI0G??B-v0o2OGp( za?z)m;m|ukrWz4Vk^9;2;>j?PVAuT`IWs#e@$1qSuG^>Z5ehGjFzq$w{}mWE zAI8dFC$kstt=TC5+lBqzEsl1V{Rv5ywcoNmHk?rU=u`j8ss4rTbiC@zx6TaYi8l>q zli$ab?W~PEX29+*F{>Byz01ov2|yYLPj%I$fUePd`3lfqdq3FsDy)@4i0oi=KI7wA zmF#KF+DzjQvCI673#F9SvA1|Q4f|?-7GBv?EbPSkB+fUyifZEQwkr*i2F21gZw_qH z&gcp9HY2z-fg1foKO0enuTP%cYkJ%A%WS8;5U__Xy;%r&&DxKHLo)gY-}>pZC_qgx zET#+q0=#zN?el%~QLb@Q zxQJeSvABLoXi1Q+zJBC8BP0Ah3O&{zo<=UHwqMKuR}nXND$fzcz2Y%mif&*bzS%;1M;WWABS z@WTjq#opw{;SWZ}$lCW&MS#ACu_J5GO}nMO#*mM^jsPr zf!6e%_HkuARM8KZ5y(~AsHast0kh#+kW-DM5EfT>tEH#fd5n#XiS0)4zkg)D6OXS2 z$Qkt$BVs3tCG$U%L+ll7UbnaFVN@+py_++!B^l=%SWput%VdN-6ntW~l|CO*5@A>H zXXf8jfD3vJMh}a*E60vkD;Rv^pUFySb-n+CbaLrJ|AFGU zn{>zGX+;bqUgz??>gd)Py_LFK_m{73@B6XyuN_p?a*DH(pFS#xUX-fjjp}XJt(X`& zRjl8B7_g$~aj_VAE2(!E-W_=Q-o`OsFRtjvBgxU=RBK(2U$dPe!_jA$=H$1gTAUwI zDkf>#CmUETIiJhw8P(UI-rO3is&AaFS$Fc&nMO)t>OwLSPf&d3w|d`-me;bIHhjk3 z-K%2$b&SPCoL}6k#-(H-4CgGGtL&Ru<>ckh6b_ol@~(Xc(zz7+gOnX+KUlg>i97k@ z(_-I!>4tcom6d0X>bLc_eD*#0Eeda!$qpNr{zjIS& z<%oDsM!IY_7Dwd`nuk=&HiFa#X9GE`g1Nl5c@NQ{)lPp=y0TXFt_p@B zM~kNQvmflfW}r+FRz*$i?NM+E)>{Ft zDRxK$qrqUzb~wzR!BPD_*fiNWIRoS4`Z_wVzDk^y`cXcK;Wph7RMPCV%z>|NdQ;N( zf00hM^DG7#4I+NJ10MQ zvsdBCtsiBjI@de+TkB4=WOas7mCl$XsprVDCWs4IiK%kBEbJxc=&7NQ(%TNoNF?9V ze#f4pM|K(AQeZgY#n_>=^n!6@woiQGsQu4j&umrMt&)ALA8EFUI!p5?d#Fz8D8F6) ztSdG-u=xVbV~5de7mAqgFWks+7GnI=z4brfq}IU_y9T$5yFa%Q1GT*C!_xy|HJ?Ig zruqj5U)&JbPkLcb&@zeh^ad7+qn9Q%t3+T9BrKK!{H#@KZhZnV|s%DlI!N7_?OA2ct3;B<)g#T>>o=4}^o#$X9^`uv~74_LmS zb$>pSz=_k@diCAi-t90qxJ zon`!I&W-y6+Au;g78^_sFgpVti)q!)*hA7$VEpFZ1m)=sR(`BCVE+FMewm`YJoCXTvXycev*?ZVH8Chv zTNYMUtBQwJm~NaXYIHzksO9v4dXNmbMrKiwmL;JL&{70TP=L!Q|V_hY$OLhcy% znHITF9rS!y?LU9Y#L}hj#ZGlz-qt&HL6s)?3ZDD3+$+wHlp9x%8hcT^+sm_|f7X;M zqt!)L>_j-D>cNham6VewF6l;(<+XNAhWtr9cjZ4!?!C(KdO43=_F#%ry3~0P+ltu~ zsM0Z)3vro3ACzFC)|sZ7Mp)x|^>AYpmJNUkLfa+W;OQVRSMUpTrlsc4Yg^mcz(Au&KK&XMi z2pNeOKoZ`@N_RT!jw5f08ZZ&8r?K}8vcaRos6e-}ySrQPL;_=I^AJ%g-R67ytPi=C zXbec;S_?d>GC^HaTb%BxX+FR{Oo1CXWKU2WlL~}kltn7{#3{j1L&viclfU);$#y;-}957 z_aMf-=$hGXUaCpEM-Jv)qK0>G7acdeJUBvZeu23OiJ)8yX-CR74~~zw5er4hsKl;= z55eZg;|CJ-^X03ukrEny1rA-#mM`nn+F`bOg6{BYHFS1aT(?{uxTs^ zXQxv>g-O?ur(4lbg|RK?@e>>Dy3YNC;YXEFW+4hE z$k!bwDT#G@H(%h6r?&O&A1Z}=IN|2XrI~0bNpKg}H=kY*|Emlk0Occmd?fkx-JAK= zD<7ZrYPj=S#n&!j%5IA6>CT;Dp}HIZ323ZjT3ddUGF)lzK&q*OJ3_TgsC@ z@6z(HIm~TfuZ{KfEk`$ZSasOjJL)()_wGD9MSovd#rT$}*alP87eR-r%g7`3k6s8{ zQf0etU3}x$pcv`ZqsLhlrU!Lz9C>CYnJIsE;1AoHtu$C(kB2rA9YAi9SL`NKpmDa!%sOjiVVh=N_uviQo z304d+f+v1G%v*}_KOw1cXQks5AXohxV0)L zH2wtObwOz}XndmIZW3EHfac7?nMe*cMVQf_F11@CwyT0VLePm(>3RHkEda+iAFv*Y zPXd-4h=a^LJS`Z7fF#2~(6tJp!67Jttvjm4A8+q75sWSHV!;JJ5Ar+#isO;6Vd(Pn z0VP^J(7%WkOhC{FF$B#(P4W`vaY#c1HcKM(3h)P>K01MU5Xd@eKw#mNm4g==g_$HMAj6q4&}C1Z|?!cisi)tFED;7?^r!-RBy4&k;WufF#%j zC-E=Qcil^v0Tmj?B2M8Z zaA>)MhKLC=v7p$_&TbLh2V!?Q7UU`5#k^>0+E{LJ2)G4sL`PgE{GU3*bJ1xS0`o1I5LQ$ z_%H-)Xi6IJOh51^(fagbKn=yuK^{Y5g&9tOv?M3C;}C0aT3YO|r}p+fzeN1N&!0a( z@ffB>H%$=oVI;7libCc;EN8*8D&X%DOLi_g{ap}H}a?%!17EHJaIFm1_ zC2{*ffUR^#r_jz5yJ+A(iwlJ4tB;)>@8r-1Ch$dpY)ULqAt-p>(*Yp8>;U9%b>)xe z>gwuimvRCi0H9C|PfApe4LHeXwwy;$)kiuQh0_zRW)A)k=(w40oSyj1i4r?!@osP4 zm;=T{@QX#~Az{$Xe2&Ql!4k^v2?zIp;us~d^9UJ_%#c&%RWcC%SSU;WE3^S`Gy|7{ z-~yM}X<&nNv$k2^Xz% zOHUafl=^MSt5zx`d{$N>~`1oIMH z1yMM+6I85x_qi?*n^T4_**>tWl!Ki;OafJiX&czwgt`bOXy;1w!CTHK8 z;H!>~?^uj)9-`AzSB=VGtt9>lyC;K2^GYP)DQ$0vc0>G89B8|GZi zfE+3@Is?t3*rM_4*ECG4<#3G6m%$@71d+`Lg5XMQ zufwsI_0vZ*bU;`!fiMs3O7K^ZDdk6l04wa_e+MK2vrWQ^AEbp^)C~nnC95aE=x!Y^ zza5d5wiU5Jrr3!{M)7PfHblqA$CHO_LPKy@zxHjusSMO!M3D;7?WrpVJb;$nJQ?v2 zEfAUr!A%3-8=y^tH(Mwi;$GQXg9QYO^SFuyFqMin5efm^_lZ~qXD^z*irzN@b1*dxW&Xp z#t?rrWgZN#)fHy)|4~xt%j1@e)LnY&KRK;``M`cY{>-xvKAAlt8M-_6ibv4JsJpJ) zi$qH+(^4wA`0h&TInqV*FerB}toNgO#fi2OE(0$Er-@R2Iyp~|HxYuHEXRkL47(mV zKXGjBycBA1Fj|2(p?dSrn}s$*?|qQ-JPo&u6 zA?H&jqX~vJ!k-M@D<5g>N#faMEjVZD$H#6+A;a{dljgr;oh$O_BQ2kKMIpQqR)XN{ z65IU%u*XXr3#Ve>d5u~SzPuK~0`3qx6TLnm!@{c=L9H2l?b;kjn0SBFpx9%C&|PGm zR$HqEJkS13Lb^CNHmjrE90r3FEV6j~skr3i>kyw~9Dp1J?Ug26+8^G%hJgyUq>$}@ z6?jFCAOxaJ*g&5lFZD2f;rH)TkYr#d<5hV0$wFTh7bbulfdJnIB(?)==9j?XpdAzx z654R_;zf{5H9?d@k=UZ zBObwByVx-oAZD8?E93GhMkCH}Zr*|P1~Y)0h-z+V7f_Dl973HLhlv`t#I(NsicJfSV~MC>WTW%mogJ`}y-(_&K2A z-9`Kw92|_h;&2Mh@(^l5*e_ng8)V_;4%5!6!)pWAhjdV0DRF#yLFAA$}=AfW91YwW99l^(;yJO^-(BN9Hbv=sMl?nkU`MiBIw7&t<8 zOhwobBh>29@p*u`Kq&JA>JI%R*1JDG0hkoiUO$+P*CNIfJOccjvH^Ow?UiZAX1+CG zG4cA59#g>X(OXqJ2)aLjQ%D9d@5?hS>cEfZ!f}vDSQ^;^+86<9pxTT^JOkG|7!nX% zJPCsHinI!Ch{YM}9AhGCe}|2~lan}p5Sn>&`WJ7pJRRJ8bC^=2gBiw{100xs)OjJa z?AUBU6kWg1U$iC*x`9u>iC6;)r8Ju0&4Ajm8s){?w{gJdh)NBGFkZdin3W` zBY8)29o>Q{#Y~I&xVRRN+D^}A8s}muEIH8_<1Z4zJ&53xfzJ1UudfoQH<)c0JwAH^ z(=jdZCc`zUZ*4__6vF8s)WhdT3?L_viMj(Q5ul$Ep&SAw5zm`!c!mHl4`e*%*b88c z`gA}3`mUB6RpF=WHUUb?{*Zn3>Qxid6dHE3-aXys!cyPx`CPrz zLuuom=j4X2P3w!Sa4*-8q-@M>$M>J6P4!Jv{q`zRC4m zQ*Lk3>&kJz(!DXen9K{TUk)hEko;NJlhfJce=BQSzFRt{Ywq5_a@v54EZBZEP&_Qe~DJv`cNPB|cn}vv8NJWh}0=R@20%IH| zwC7|01Pj?0rzUR(KiNXh_FXkLd5V>KO=T@r zDB&M8JW}L7`^LwPoHf7AUw0~7s)@f{_)w=w0O$| zQ~%eGeOfT-@sE@(c3ta5ENW^>C{vc4RC@v4WXwht*ifMzu6{ z&`?m*WS{H({Uzn=*4Bb*Jxk&JEd)+`0Ju(na}?Cy?PceYkyYL{XAwTcBJ) z+tfc?fPR@x@B4m_ZK2hES!*dlZx-uj;=L&+I?()^_-^~}!RqS9v3%+#wtKcJoS+ZU z`2foZqxi!=lFw<%o-S}J=*q9OYN8^|iI|ci4vU5~9wbF*3h&R>ZIu~IX{otuJ)*&~ zbu#(cK4INr>GVgwyKen8apQSPxcslJtzj*J#U;ZKW@9Y^EF<+3?$+iKp*!h2zP>{T zI+jDhAh1rs*E9f;QXLj(1Q!<v`@HKHu`*NA9ddrLY+f66h4-FSKt_oqdf zMS~|EJAUY(2{E~37<9A_?JLjG%1s)R+DM36==#U}c!HT{W7Nr{{=N-{NTIjkjyAy> zWBW+o3Nuax*ge*YW#fq3Y`#s2R9G9Um`iiHi@)w((!qmop6F~O6>|lf8~IZfYr1CI zCMqtMM$&VUyiwrP>Iq(JXc173ao^?PCG5mQx6E## zccY=%MpB$aGSjaQU=K^4Q?iN|rPa<2u~zuV5IDc)Yig3nXnISXF{??X%_y^NXt|{= zm%Gl_WTe`k#dT-B?;j=U-J5BinK4Fh54B+ZQGPB!pDs$BJam}()-caO8Kx%dmN%=j z)}aI9B_SH@le7k5*Q2i8-E=Ccx$;8enBu$n-!UVxC+x^c_CF&Re>-VE98dc915wX} zlAHat(cW!*rvm>qrmQcSxZZ1C_Nl#@m>dQD# zU%Fo}h*e7RHWMjX=6+BJm)6x85~;(AygY_pYVEOH@y=$lAr8}kwuC1F{ag!0V}kY; zz5G%NchA{s3fk+1kg0~Y*%u8SZEAK6`H*%?%xOjW{;!IKgMUB#+T)iE4Oa&h-T1Bn zn(JA(@b_1#1sM1!i~m0EPFdP3IR{dM<^4u|E*{pTmcQYYO(tI4YRjoCcU|^2gKnOU zdfMLe(z9nNpTvJpB$1>zY#Z5g^^@5fwyA9)Nvlz%j4F|8U(%N4h#x8>afl?5D1|J~ zJyMn{O%}df%*~ggqoJh0t|Au86T(^K6M5!&d?@RBqfLXH+wIME$?5Ulo#}%zbn59= z;fXz#od=7;)eOuw#ylTQ^m5|aEbS!u+f~|(WB9)J=KD&C;|B9itx`L^kxl;XjM&Xc zYxDQNoozJjSYCR?r5~c5%5j+#ot0IsE45%HJ^M80BHR(8CpbR$_zhL4JH>+^bbMqY zCaJPETA~Yo5)||{g&5}walNqTOx$9eyqQcYHso@#xL~?XaLQ5rj;~}w8iy@7Nc`Cj zo083{)2-J^4sIE|^|mXWPM?D0b~?9d&O_{!u#+)IxXD>EDbsJE?umw6) zno;iHQ)i)f)XLP8G)r@A(H78Ha=26?L>F~{6w!6jImhYH&aVAkB$BA@H;z|lJVm)Z+Fn<$Dx4vv1@BYVWC0r0l)hyTwO2&` zPYjUQ|4*>H!B)>t8Me5Uxt8_8w9}D3iBFrvIzo&E+oU|IE#Gqo^~DM_w9sxa8Is`k z5BnX_7$!PuW2UTcSvg^LfOPP5tk7#s0oKCZC54evT0NetC(UomriQnqlef~AJ?4@= zp#llcopFBx)+&z%Z4DCT=pb;nI5lKUgKGyCL=r2R>> zZsRT)QzhHz{*T|^4P{N^ubT)jVrqfA*^#nuL-gyHe)ufdWDANz)6C)6BkeV?%=MCYNg1CVcy@8L-^3k&)bg)rxZR{hDG0 zmy1sWx7n(LZE?7!Y+h#UR^K9a`Yb z`nUI=v8deVe(5oAK99P|{X^xPU)#-9#+>7%1a9N;@{6^H3n>dZd2VnGJmX{i_l;pT zKEhV}H+*-InqSsOZZY0Am^JdHL83(C)Ok7^mWY0tjt~t#u^*g!g|{q;(FO1pw#jR! z3K=!DPzT8k@$B&rd#^~oFWe!Q*?k|yn6ThBi!YJE$0o&(WV6x9zf4x_aka8I{h~2G zDw>jm%gL24>Lok#$z@62IEJ_x-5SH!(uNI5Oyr1i^ieyFi_gios!y7fimTnz%C!v4 zKNLzk;Z)Y=J_@vul-gz=NS>H!Z1%F=%O}9?L+cM9KX&uL~d*?F}q;L66x$LPOIPFvqz7b zrmSWtNpjDS7=wnbjTEhh1zj)iiLVi_SIYtwPUf-*WwBgpbyEpvYr4>sJnlO{#fb~@rvW}v`MVlYm3@ZJ)t!WaDE%9rC` zkL0n3Q`;JaUuU_zdHc;_q09&&vnEvuv*HdZI<>|(l7ST@Kb51l>MBhqxv27~3hTQk zWzkE@)e;Z<1$FTo869h_A%a zC#^oBXJ2p2$qBE;ttX_MT5TWMY?|bJBqH16ULEk?Z|R@J^_lyh3#hj1O0n{Cl`>D% zMz4aY+-@E%dz+B4{Rf@~%61FXr!zg%3`=#WCnZxqEM|+@eOXRb-)R?FlwG{+$M!%^ zkJyubdkO-*=v>L0bSTb5!8O0?qg&O-`9u0!XQ=2;huK_8(rEgu^X0|0MqUL1+nYOTFZ1+CCtC!X&k2OV8cO}r-=)Spna!*f1xLN$RtbL8!p57XJ zW73!MW$bmEG(G*(zO`f5sX93yQOY~WvVAGIaOMA`0G&fdr2oX&T=}0LnA65C%=!mk z)VVOvaKrD{wj*@%X)h}xa%Vq8DJcZTvQy=Wb2ZM$Na5q34D7zg`ABP2gSn7)B&mI^ z{)|P+V1|N+Y~G2^t0$4AXoI}Ma~!C{-={~ipPiC%ryO70U9Kj$Dae+~$=bV5XhXzD zoBfwfxN8cOJztESmwtZuTltsfvt&IOjvbcj{h~@k9l1f0B~dB7)KaVD@FEXZ ztp4jNm0$huSEO_2aPU&l@ZPd}$avEmkJI#Kd+ZRt{V}U((~Dk~-RVDb66{vWgTl(` zdgBETB(m>0BJT89_q35ZS1oHMllB9Ncx#iFbO-qw!g;csD`;~rmk{q>Z95I~FG=H{ zb+YvQkqqhqJ4t*^R})gwqdh6Z9w=Ybc3aUDkMapzOBu2JcuY=a$nR1|4y9<(gu(qQ zR#A#3W~Uyc57J*3VO0|**NCGSV@(-*Vx{8{{O>0S?pFD4Atc}#$`WDoXl!4vXZYUW zFT7K43fYzzZD{Q01ektHbq+=xeMoAeUAWKO%3pfi<``XBxErn7woRvWXk@8`^tl^l zu3hA$y7)?y_Cn_bh3r}Dk_n|45=V8*j*aW0>VaNS!pwpl*GomYZC=(_UQ<~oCvQz) zdHQr+P)_FVi+g*D28}z^i+_{Hj9A``yOvs(I=FZ(CY@hwQ>w9o?XT!J-h=(T;^M9Q z7n_+*bf!=mcQy$wM%;O2Ud&wZk^b<9eSv=(vJ8VkR4xmiD=O)z!Goe+yHV z)4sHWPc=H8)(W<0-s||WqhmsjyM?)G%=ytH;jE}p;iJ4;uO7Cx7#r-~_}*UQdxT7#_pI=* zD{El|rjG9y;_>z0Sa$|sghj+b&?XCTDC;RuQBj#Z7ZA8eNOJ>ixn${s04%*tMK$jK1UJY?Je(Ucs;*t8_@o9NQv%##io%?mg>7V6A#-qwQIft9f z(#HJXR9t71$``r3C_lrsy2nHBw2IC_2fZCvxz;g zb%HrHPd^T&J>=8#;mU-f*t#^W_Qo zZD044PGp3#b@!YGWou~MeUc2fSs|zQsn?Y!oW*|g(-+Da*owcjKAzOQtTVc)ToM*Z;h-zjyOb|~Zo*`Fk*;9)3P$<_OTB4}A3Y|5)0Iq) z>sTOk)VZ%_eNDNh9iVdlQbE2WFjp>x(_A2)LxAqzt8wY|pVFUl5Cjgd- zp&_QTYNBxhQd0DwtwNRK9}r01N$)#}wN3=JvI>^Hgc%%s1+tB|VFd67z7timEs{Eh zhBZQ+8C4L-`tFm~6l5WO4>q`%7P5orBtR7$~p<{LQSy782Ih$XFd;vq$vS;q^54wiGn&uxfs!80OIkUi( zs`g@$X1Q6TyEyrwT4H{?G~@3NX>tM-ZuwrD1erGIdj+rros6g};dqc;PcKD%!JpER zi|SM(iNSJgLV~yL_Cl$yz?Vs_#onUWAaS?ftRLF%iq-BhVbUI_O}1_D_;Kj!^bvM} z0}}L9avI6H4Z>j{log(dqT)ZAe6=BMN2ZkO1~u2B^98x3H48qEM68y{m%B!dR=#|> zsF^C`lSu!q?UY)^gKHmA!RFEdXCh2H+}EmP&ARPM_%R-WO4~#BC&(4^aD1t@8mf&%)6UJ6+{N#A0-lKnlu=)?1vEv0!rSz($NN(Cdq;YQZ$CG zRK+-2Afs#rm9iehnJ5f!d?tD@_9;@AZfIzL70^zDG!`m_C z($d=Q?mI9gAQpB(*g+2d3idb4Vc0@fZgFDtvdfrabXXW6@R9ZWc@#Dkb|9i*Ki>0B z_nMVSWeC&QNwUzCtd3c)=hfu{G{LZH%Y;cjI|h0$Kt-8u7E7}MSChSCB<(u{I4`kT zcVmg!`22$2q%>3^Gd%H!abv;VC)SIBFVujKR}5FaqO@}$lq(Xpltn8wpr>FY`S)UD z10p;v_Tf%c{eBn*%H0N1DAQJ}!Als-u@Y1pVEy~vk6uuMqX0|^2#SX{_8d;X++=72 zdCB#thsz9#91)aY-M|H`4u2vPLzR=5&Hcb_j2bzFjjOEU<%OrWv+SExe-lQxT6$D?KYv`5U~oXWgPN$Zn&?fs-$D$=voTs%jcX^q zcgr59ma;7DT)KFvVAti(Mx@kHYLd)F`t!b|`T(XoD&&{*1nmH67Hc* z*>TB~N{E?xL%t?M?(vUeKDM+ZTZQCL?6>`1W^JbyQC$5ac!77p>S6S;o;K&Cy}f2- z+~s~Lk<1!8`)$iDDC;E8^ggOPC{rDbm3r}siQoF`f{1OeF#buDv5tQ5K)eckhFx1^ z_U+q@(VRLQnn?VLid^{q)WNPH6#5BzAyrj-SHaC(98R((e1(R-f44(8@&*+K(PZHK zSDfG%7!xcFycI%#D+3H{4ym! zj6I~8;5&m1w*li}3_)oU9YARhLwsi>ltZ&~bA(FkrNB(sS`8HfGv{5PXVW{ZYB6_6j4rr zKEVYWYj`*XL9%hZ!4CRu`;d(?mf?Ne^p&-6y_;7)SuLOR{H4MJ_ckkvzblZ=AXFzaU`Fs(vu>_7u zmp`6X5JFre=qb>#1cTgYhp+63+ki$$+9#xlSE`i%1>SBbaek2Ex!Rs7IdPxy9cfyB zWiyNUTv17;6Qx^wxj)lIrk8@YidU5+D0a7rOv^leC_Stc-tTTG z2H!1puj`o4+JIk!sKSd%1KgtPurK3g)t#^TgjqN}uR>(a4^@X2HYuwruC=w{nmQ5~ z==BJHZeS|F7@QN%7!ElrG11Z5kPuOvfe7j))M{@s_HSh4;IPAWB4kCq@WGf^>M1Xf zGIgm2+dx^#1l&dxVgu*@fIbxtxfvN0X#7$fbc7X-Kj_neD)cXGz|(-Yo+210Z+&Uh>%mnmLg)p(Lq?H)RRT;t6%& zmMf;vPSt~)H3LeShBRm2_#1dc!vKr}L)u!vyUPnYG?tj?g0z8Y#&yk1Zbl_BNbA?7)Bb>y8z8rA{Wy zVf%12^Frr^<_eo1x(~WL!yx z<5z=cZXTji<8N_0+Zt%Wo3G;CT3eqYxwaV#-z)w8ERCeC4uazAv;ELp94VYf`T(K) zX5>QGo$tXnSvrGSGn`O(j%i)F2xFQ$NQO$_AuaA=)*+2Do+yE9RzYIxc2f0hAOF21 znV>iI!|d2L-Cx*o&kun#xS8u@|aVh6P z-P@mpI_BA@RCvF^ktjx0Z zL}&_LwuEuoNSf=Tt!RUX&i;eRXV=X}(9Ae(`ncWcSCOAyb-4b*M7Sy(IS zD?=@1y=;vR%tQ&stmVBls`I!mMG?7=iBI3?U@)0tWvK>5%ZW2B;1dpPeDC^GMQFE36HJWe>1 ziMzZyh$MCFb=lhd=v%ZMHub?Y{>O2T(Jidcq4nE9B7~Zc_XP2RuoX%4f#}Bca#-Oc zk-W>5BRqU>4W~(x{PFPSp_LVD2Z+L3RiFDW&7SGZtw0iku!Bk>ftEz9)EN4@Y&CS@ ze#{`D8{NB!=Z5}Q?-mvo`Q!H&>U8q@q`2NYRW7aj2i4KJA0U>d~D%$U@wNjQ( zjF>+Rx8oZI<@_9>qNirs#d2HmA1(mXHGR>bni^Hm^uwT={6<8dr(fVpga_&K>paZZ zefBZk+V|V4DJgg7?IygG3GN`V^_wu1fU|JCo(TA!vN$1xZdD=mVZ9G;ls2&x!U@6< z5S59hkGKSAU5h_Wu%A87e!Svz9m*mWm;hB;GODVog0s#BIH3_*ohT5R7yS=a?VCbW z^1XD){|^XTug9vw!^5W$W;5U#3g$Cf?(30}NHs!xOZR@+Hff&jvfSr2RlP8K`K&X^_9kADAzt!)7XIkZ-+n4N7AcKFfLf49If8?l&xNx}c|{qox)x*q9u;=0l7$ zyE!BT(BLDc@krG;b&?Wo?vYrJwNG+UkxDcJ<$SgU7W7RmmdZuPJ;9m&kW5Z0j4%{g zx_gy3cArIN|Frpa4Pp?ywgmf@!tUmQZNbGSjvnKA% zV!RCl3)H=XDN?HzMxlNuC7=KB^!j?yX>H}`PKRKz2J`5;fd^u5CPs%zq%(aib<0P7 zS~(S6{1P(Gw1M%8>eer!SIh>y8DjUeA6EI{l0~L-PL3RKzHy81PKCn+uDW_;kGu;> z4csgoh0*e~xj?=bvZ%s}ek;OmX-I}1)ylY`L5thy9x%1vUKVod`2JtxQ!Hf#Y_Ebuq{pH+)77sZpmeB*Wz^nYEXV-!IRJiA#7dUMsVnQP8!5gNLiM*7i$f9E z3YwlidbE=efC9U!gX)T~)h${fsPa@yTgFRb@KFb#R)m&N2Bcf#teX!MQW?P5|4mI* zVkRXnDft5Fp9uM2+wmTV=9?)=Qa%Zt1DE_MdfHZp_iY^=jVK~ZF0FXMy_JtJY43I^ zkE#B=1@H)H`Lqlc;q-j@5{{&{~1aPFeGY9U;PVjYqy@gQd9EWF#3~&7m!K+lPdIG$}^xs|9>MW}>qxH{{NyzI|LKc{55yrQ_t991R*$H`N4h ze(Sq&`Ns8Nk#J2He*SvH*QWqHwjRhE(I}x_qSn+jdeo%kh$0Ye-_c0!hTW3S=?ttb zf|LKqXf$|Jxm@RB{BpMNMaYY1MwZFf?p0i<^Yw|zRm>d~a&o;}SzbTGBXQn>r+`(Y z@FfE!7mH#nTT*H?g=^u`iTA|it3Ww6J#2^q^2fa0TM$T>B5YAHdFKopR}sdz>rYgq z?}>2i~23 z@yE`6$ynFZo$uo0XKs{F8%QA8GZ9q*_AXG72>b}vP~Ha`=kKXpHU)N357Ied)3l0y z3TD5;I7ER^@sW`rn79T#Vt~WGgTB3|6<|z$5~NKt_(sFkIRNxJTc|_4ft<0hvXZB^ zhaxi5-sSBVZ;i)O-oNWh8z4ko_vc*4(%_c87qD!Jkfbo}1rb#h9sM<&&~K=lp*P$> zTqV%#(>jv|6^W>g&C+$~1PRY%qR#m0KgY1u=85N+Nlfjdyyd@Fr0Cb=7hWW{Ve2Fm z;5JBnKj7I=9wZGvy#D!l_cgvf9u#lhM6Z`M+snnI=M%gx@Q(M}+JYS?C<}E1(KbT! z@DfLV2Ot|#w474;rM6EKUiJa;3*IY|9kc3C zR^@x8e@0hT=V+Z9)A?z9{IrVSvHj~+1Si0S?tf?BqBxst&lAsUTuqrv0e%vF=@KjB zA1L1cvMd@i+hgP;5qzgC%P1kp=`mL%xgWDxVvvq-)$z^(g%_RMJ4E$AQY)R8r)Ull zc_ZuunWA7A7gZtsO%t%BS8Ir$wet-t07atp353zjWzeBN#+FOYs% z+^x}5ph1{U``#H)_|5u)_IC92)OS$m$|rXx+xJvAgLt^keL zAJ#cfs-5s-8qMiU-#jScWB)DNsqZ;cVg81Ihc$B(8LutP zcdLH(Fij`C@-r$SdI^b%Fr8svot=o+en5x%mW-sX8-qm;pz$1g@&z289rmx7iLUO( z6Uq&M8U8rE%VY1mymAH#Xq(B;mBhMb|4B!%bOUF#h6%+-V1e*EV%e8JtbRxVPz|Vu z-3rab-@iJD+P3cLQ>AFYVi9m}`i5G1wIts-cNzuc*ODErzybaHBQ-K=k;Q-7e+F0i zBI5>kD*S6F{g=mXFeHGcYlL^Iw|e@>DWYrz!UqKF0uZUD=#!;NnMRe!oozVq|@m5}yRo9w?y6yaA_{f-3OPvMU0dB74PM@ z?u(0ASusCh4r7Y-CmC1zh-qVa$Uig2p!a@yj^j&1!jZRGw-1_YdKOu=SfA7Qw6iIJ zp@*N-r|*)3N$(BER~tx{wAGPLk7tJzO2~bZ=$N<2&}SF7nAL6%5YgNc^1iN`@=|Gb z<&%QyfjxI$Qm8)W-Lijs-@!R9V>}6en%-=M}q|Udu&Z zJ12ZDLx*1Bp4fN@<(4sc6^mvL}r{K`RRcL57ab0Mdbd#LzG zCC7{P4jz>2il%KPKVkexQ!<1$>ZVe_FxU0Z%OeiipD&R~IXf5Y{6SXNKDe(flv%@n z(2TL5&f@Fa2S)@G*diY+4-4fH8*zv@3k7tb%=1NZ^wgUQuqLSqD!&~79v&RcQ%g!nr+R$fHhGc$sP?(Cp!Q8W8 zdZIFY6u04>%Ps<7L^(cp23B(F$Rd&-^1Q0i+P`YMu-f!3gwsk5QmH$UyzJ~DXifc2 zKzJiZL{v&jN}R+Hu(FB*Xz$~ASD}w1pf6Zp!~kKWpfa&M)tv-Wp*eFo!mNd*>YG8< z%-xbMXG96BuSpp9z`QsHKXee?E~=OO3)aJXHk<|!VP%_`(BI$hGVxfD0F=|_hjB$_ zsjnXg?p$bH!w9ew14Z^b^2vqu*H}AI)eX?tG5ozYU{d(Z$Rl55S0{_Mp9`c z6cq%KZjkPhP6g=@6%Z)_0YSPuq+7a0O1ew>o7?Ak-}iTYe{imI^Z@tXd+oL69AnHe z{KYc^Cf8i;^OW@c`j)Wuo)F#r@q18^lr(BY# z+`mvUVXcFm_MKAs9mb20@>^{^sNeqV|~ zbH}%5a3=d)02!k*0O2YR( z+rJ9Pb@I?LA?3*Gep_d!uTI|L^hCTmKYw^5SpM|E^kCA2YLmJO0ZIpaK(4PhE(b9t zZdK$0tB0bB)qtK_!%XGV4vak60cHq8gaqJYr;&r1<+2Mq^3Fo? zn+7mxOq3|yqLV;T9*ii}YKX_lZER|i*Qi1**<N?#QEdXi4oF)?;l-8$o2J!V3) z48;dcZo{$BO>Zi+9aMy)tPkhDJ@yTJRzEbtwAhNDoQV^K6~>Pr+Ka~}7gIj1%J+yE zTso6_RjT&-TRBDkYIR1rQ#8qYDeTUB&1!jXj709Xkzf6jyinr!rgR{S#`ISy<2){T zZb|%#BUQ#1_v7sdytE&`sbp$5zr^~tMaN*d+i|hI=&cg8GVVaMdlyP>H8e0)-inae zKYmD5AFq5zlE}J@d4fYika@YiwJ|8A;{o>)_JI?0*pvzyd9UiqCQf{fV$;_^gw4Vx z14AJ>1KX=FjA9jFBCAWxNvCc94ksru$O9zcME?oUrSQS10TO~&0KMbaj0^*qNms_L zw><^IDrqW@-!ECyqVKq-P<-n^4$U2kuFPG@cER)~iezntQ{}S>k0NU)UbhHq6 z!q-)|&zjvclYUU6#c{PO^A1?mdgM9~@iWstS0?WX)qv%J5YA8u_yOI%bxqWK04bRu zcoOvhm=Bl<#mw_w?Ab9z+O|ec@^g>9K53Lztf6(lu4fL=G!TMFjJ&Vl8;u8jFt9;L z!dXM1<$_QpgtA>hh$blHfOZGe&$p?mX(BO$$ER5YL(!3cI>V>(qHD;!1#GU{^GPAbNM)>)Ge-7-Do3&xbo|Nt*ROC3x~pLH~^RxdRt3nG_G>7TKfT-&av> zAF}ELrSi%DV(W47qpR^2`hGms8of{{bu)GBA)E2H6KFRPEncJiw@k0Tz4LZU`1+ zt$>l|g9igR?q7u=kSJB11~BqaUbl;P9)qF6#+Tb?6+3;>w4ggbZ&g3eV1Z*e;J;)l zobsSxkbd$62kHC4LA$8G|HiMvUZvr@6rrE18ft24Z&#;e>d7eFE;y7UA&-|dLU;#T zExOsES44He6P!h^KtLISmj?#cL+?gRLZWcwzuzSCE!m?qxRO8I>fQ}_{+HsqF~JfV zDozYrLkTyieOV_DfcBlo;On?ROeLejJ%I>7P=}^&Dq1J6! zHi!@bIJcYZ>^c2)W^*~e4?o+|FlywKj;jkz1~t#(%8Zm_`HZd~m~UQWW+eWAcZr@N zL_td{6vzMr*qp&}Ufjb&820lhbLym8=&WX5W6}7u8%ltiHblW}kf8o34e7BsWBMlV z$nhaz#^4Q3h1vodO;v#Zu9z4tJOHUjk1$aPH0LrODQ)d8IyN?j)K5O2qlnP`jDE7X zWvEZdrt8&Wel@;GeiXA%ZvU;3U2Akhw z*Z(RICC(Y&7Mr7AS#_P=5O%;3@Tc+;kY?zre`(O%)@?hL(>lJ!WPtw8=8EwPyUIJ= zKhVUaj}lO^CUil%p<7=IA5o!-y6tvGIyANwkLBCs4iY?Xb>xA*Fc)>bWNSWZd_|`Qx8qGcVaE&XwZ~OStJ!=Nj7@m7ybG)yu)_Gi)sr5h?^E^T)^cJ|1lbd&SPbjT| z=$WSDOiUWL0QZFOqGPs9$GvwQT4RQm=V5*ZE3CEOxx`j+!>x2e>mt@O^L4ekG6c|* zvR@F?kC8M_KH&dA5I(2JqkLf~09(6%#2i0@FQAZ6-sw!;L|`^y9is7fs43k)!9*eB zk<;hEAMwT6-iArcBcV0GKZB5d;(9T<&t26QLm^`u&c&)KPt!Sunwv#T4sdI9B9MZz z{~Qtjz~Olr+6JiiphmoFI^5;{+(~k#D;uqzAx=V@sujs|S>%My2Z_4vZORAJkW<)B zoed}9DT&7UL5Bq=;olc895d5f3xK9#h!B1QTY8%zH$o^OzLAiXiu0kpN%xEVlP5D} znJbs~s-^(Vdk5JGfT$qGTOhVU`9Q^{4`={@dkFtzQSA)~9@KZUQ1HEbdQPRIosyFD`I4N<5YWX(bSa3xO8+^O*#B&obY4vsZ^MV2Th2(zjjBM|9B|!l*9!u^I`=fwlMUR6#JYy3~icH!{rdNT_?_r|8uJY&=AyU|{`XrfO13ijl z7N{@8rC2s!XOuB8G6wYO{ea2k$*4s7weyv|j>J9u!u|;BZ22JwUuR zHiyfx0ojjwQwgHsU=D+K65yk82L6?a zjm=Mqr5W-f13=w2xMwyQ{h6i}jL2sq+K~bgK!C$a&u4{1uBk(UPZR$vE;gE%NU-Fb z9WIRzLX0b7n}e`kdL$@E% z-~ctifhby2A+Oor zCKSxcZd|KfcVqIczo}0V-G!H{wB%|+&77kCC|Dwd^TQJk`>l+m)s0fUw~J41D!XuI zXXhKf%O1r1(CwG7EJUJt{S7K;^Mj1}FfDiFY7c8oF7bKfLcdH%HCBGUo`NN_|5R&` z31G0Oa%PL0YKIARtAuM*L6=zH_%#S*pdTmO;q_Kc-gx;}O> zNW_qJwsw8P=x)4o)5*&cjT&oJWdIrdwKm$c{#5IYKj*(Y3UTr^Pt(|;%w8z4lC%XU zQI@>C<%e@X(>K{Y9JA_46bXSOn%yyBIGw^FYuf9lI*4J0^PCNr6u%E4!Bu)^3But5 z;f;Xa>v6}@QG^tLJmcJk9ZW>--UgLUi-}Yg0T|=~9w`R;K|0bP1o<}r$wf)&#Y)z) zod<-_oo@s5>1pi^cq;Cp?$DRl04BjP?Ii#dRaB`N69@s_4%UJ|8>SDbFeobZw+OVq z?g_bcSfI#3M>O7_iH7={EyI^QWR4(csBj;}!!Omxf6il<@zJx|fT5`Wbu8v6dHfH+>`48uig-ti z)$O^En%YRv&Ta}G3RN^k{@kA75;mLM70Z|e9rUVhyIIDILRQm-tg#a6&VuscT*`9C z9+jrRpFA2aBh0_sE-7|U;Ej_R;qN><%6D+u>#|{1GcgY1bo$lP$0p$rp z8}>X%S9Jb#CQMo96)T1F6opM$2TX082<5xKLktAfW<+mrA0E~L^@$7S|DbI|R486z z7e~F`S;bR;cA`*VKTq@}Qy#H#h@jQov;bBqLgWCE^%9^E%LHgzRKD*bM>9Sq1~9Au zGwL2;k|V@1ZRkFLgkQdWJ3r4`&ILM`IE4C|9>}XEo}NH|J#uPrXb=U*qM7Oc2>MQY z`=$II?3=Q21o!I4ESYpg911TRL~&xPMBxJWK(}a)gZjeR>nOqBNfSby`g&LK)k?R!HAa%L3-+D@9BD%$_*-VbUtDJz3xtaRcZN6DW?&` zxm|27vG|jMH~XLhV#eMRbkaBD7=2Hgx5{58IG!L~^TvREx{0~llRszWwQ!Ku&ygO^ zPkC112I7tH`0N>8#<`2BGxT)l}(ct)*&MFky>$8tr^nV);>boZ@HV1fpysKb1ei&!iCNW z=p&I>D_xpjiLm@>A-3MQx z@VTuYcz3sM%R=<(d9TUXI}n<2;w#RP67%Wbi`xcf*}Z0|R<8ja6rC6-pn%#;NbEEq zhAM4LO7wI~5^=dkQHjd}Oue%-m)I@IMqvP}-s6tX3ZkdII2MpunS25p8&VuyoI>Nd z)gzRccKfxE1J!i7oiC9;5}^&6(z!nATcr9xX1;rxmamb6nDZyaez^lqc$kD#fyKP7 zheOD|23mxnU%iM|@AMGl7g-3?G9HekR0EN=D^9V% z0dzgd;l$3dJ#Bledglk+nUghV5ch4prbJ#Y&cL+n>}(x$q+bHhbXI)1SD1#VAv`%@ z=opY!E_@Erp2MM>*)diD=660zOQxuBy_}Axx=4O8;$0DZrYi-x z)eo#LRf;T}a0r3wz%r7ePm6F`#ch|=N0i3%?Ad+c@jd1``fq1#PZ#YN`HS*Kn{nG} zCb{d!&Asf9)~oRV+~McIdC0FpuO1o?JCHnv0yqfu+gqrVpkm*G{+S+3gM8))mv)Sl zvpRZviJ;!A2M;o&=9d>ex&*sy%O@@a#Lf#0!^Lw{Qonw^1iI26$f~krL_zYI`GP>q zRR{_}RvdtmAP`#uMkUd0g&7joP@u=-jFo*XC)a}bLC4^ljTPPoXnkLZJL&TZm_#B) z0C>XvZoaB31%0f&g9F0!K)3;#PbyhApyvw(>+s=$3C0%&`gCcmh!Ipdm{5!M_rE}t z(+Fh`TnY++e0(H}+WTsaqPRF3!pMN#5(Wwa_FhAiip%pBJnpuy7H)n8jJ!b@3ajvtWZc@WzhG6Fae(tvZ>{1QgE zPekqs8u%mgI+{BlaKO<>jCPRMdXgV_)r=q0QIAr^wY0QKTC;K?mf6vp9%ypGahn7!e}^0VTl^!vJbm@E~gebOgQLP7B!GIpy)Y zt#*_G_P5|P0`L@Zh?^|8!?!V^pbwEugFg)=+!yEo{F+}jTogGkZYvBOp110n#Inc6uHig+Jo+Q+ zrivXJS>!{T5~hsm{XPRijm=>sBSh=0h44&6Ow(HXYVnA3AInx?n$% zTl6QQv9VqDJ)04)W8=GI)h^>CEzZrPI@C^Y3M{&#XLK3s+F}n^JJ8u?C zZz&MMe`nvLLjHBY{L9LQs$bU!l&KGw3g+3SK9lJk^=ETe@>v*tI8}HU;Bn3oL+d6I zzi^LxjK=h(i!^DH{fSaOw+CND*=y++i)MB! zpZrpYZJb#eJDj&_+i1wVBld(c=yR*vQ`mXKBN1r_;1~{#1owYVPIiI!Cqh+s6kOGQ z6={SM+o+(R&;VU)FOk<4MxyJVYoFudj?Ol{d*LRW6rTWfVUOITnoZBmz@Dij8;`jg z(EQh4oNdk>p13Y02e`o3i|_GNrDSN=llY=88yHNM;z*qWOZ%>ag zXu80ZkZN!{rH`qkq@dR@^0A*qZp9y;6NGz=M)g8<;R=33}*-rr1coc z7uLNv9+4!xi+BySe!isk4;gBDl2?b4N&Zf3a{ky}$0cT^Fl2UpUr5O8uPK(lIlH6o zUfN#k(~Qm=g_vq&MBNQ6cgoa~cvrd5yFR-T$e*8GK6OVoqzt<2h8w@2w zI>P|Pis$1(^n$w{!8{?EtGOX%SaCN7dOETHDwdXEY7T7dj&F>V8=bO;c3q2g>T1|A z`6$ur|F?8Jl1gvc)Z$La#@7SkX_c)qiI#$s6pOk3R7HRXK@wvY=83-OM_>Iggt124SmFGQpV>dsf|xB<7J@jkUfa?4p*ScwVRDh<2+{jP~$muRaJkc<;6R$~*myCH8l6acTmj6y30^y37VKLMG)E z(WD4C!)%+$Rc%4A1YV^d?CapY`o|P!!x$()Fatk-K9G^YTB_lc~ z6{4|q)1VA_Jvtqg=Y6&+y+0b9@_XB5%dH0b{hhSCoFrl%s-78W6@ z&zV_RX7AS>b))sJ+VUeGq#P>r<&~A$iRtru-WTr29id5OXWlAKRS6&}JqwIjwB<+Q z*u78ZXpuztsHiAE33?V5mh$uC)uRR?FQ0*B*^14Wx>F+%P_+VtMVq(v4we<-~Do`cD}FQui?@XOF& zqX1Te8a4bb>}ejmanr&q^2%$6f8uO*pxH$<&?_q|KOGaGf`dk*7YeOdA!iP2=gMYu zLfvQ22#k!3eD-m0^}&99)`$%RN{&sd`M7o|AKWE8NG>sm_qZNVg_5O91M`u~-X`NWBn6aZ zg!@MSnEoktU));hQN!f;+i)LnD$QwV%nfd=HlZqYUKQK3-yVSpOdyD zUxU0@8ncaXV$jI*-^J(sg@v9N0~an!3(NBNb~b&9RRY}Q5x3pPx8CHg2JF9$B5s|i zcHJ$9lc~L@Cp{|*H*X|FpYoNH6MDf@T4@VrKP0!T&czetY9b1sOPsj{;2BnVwj z*G$BOehrYEA+0AO$%@vro&koQf9Xs#&s`$$N*`EHBKFzktGQLkH1fO`F(cp6A^jg) z(JSqT+7eV^FJ3>4e+9K!FE9+SnvFrFIO#ND#XK@6d>uptodowM-xcO%W(I*%agoQ7 zz1P{Q?k=nXTZjdr?K>JDA4fj9Vzk}*+L|G3bjUDsJXpZXe&U=7>_HTQ__ySyp2TK^ zX7$YD(!Ra+b~FHATs76DGHZECG24Y!(>2sERRCUGTGbiUYW7FZEUai!D>^78Za+ZsGgSW$$v*j-aGb&cKKN?W! zaS`|?ddjExuUW@yWHD;U_vlh02UmarbPFgC2;huiY$cLZRwjqr4$R&*6hId)^3r?Y z&W}i}VGm&xJ8Iuf3@2v%3fl*QF`zi$wVM;Zfi$;NggE(uXbZ5x8o6y8xrJNzn4_AczLYQfZ?K<1=BVo6BmPw?}wawxgp1hGbhf@y*T6kug7{fPl9f z##G|qyAGZXxT zTD`K*%c2=d!H@9=Pi1`4^5WNuwa*F{%a^&(`3IW@_6Ex0ANd>Se2Vs#WBZwsdHu?r zL_Bv=PZ~`Qj&4c1@wa(7QQ7^LOO68RI*&6mK5CgH-F6&*DL?z%J~~aEmC~2wFVljD zCdM$Tb9Ay`@YsAA-?3$4_dvFntB>=8 zOUn!}(NTVu)>;}ng(zI-O6A@Pb(Ex~?%i@CZG9vY3; zUwyh#V>4j*;i&@32>yoc&{bZ8m@9<@#QAy@)aT>pNTmZ3EgpzLl1L^7=;|&!f`0vk z)vD<;4kSvAFu?aR9tEd+spHX`q8`Bz@Cx68H;y#y5z#6Y)YwfA?%j01WV7zdnps1a z3SL%ixE<3jA(i5bB&F`}Tg)O+8J@0P`Uye<(N8k^U9%~ zDcssewzO4zONRlfs2_57D?d{uE2N<#Esfnz2uii9&ajn;gN+`>ZA5+z5M${B0Q)K3 zwK{{o3C9XL*HaKaMcj==yv_ozM4bLn!e;{Kf=3Eu&>|)d9=3{|llVZvA$qo_2tTd? zlmbvU+yvGDM5eU+N2WE2gmR0)thst1pGF}SZGdAU2>OxOY1H|y*aZ)Bb$?t6(^943 z2=Xgx9~o!pV3ct(PU(<>&D!9e#p%n=4} zdL34MN^gf6$y0W5Jg)VMd$7>xDqe)-b{j(k>RnV+vvcikLh8M{@PlU!xo^5lbsV6p zW}}DHq@bfju7Axp6S=+reeQz5Tub`M`FtV2H^Hp)>l1lez05Er1-o|FC+i*0EtbBv zUDN#att#hoclsPQpT=>~XW=I@*ha73F54N-EnTTrR;Ffncc-58F=774a+z!gQCxC0 zGUYUdA{F^OZ=_#GUHyrqBnI(!m;MQ;YVqm;83}K||Ddd*QV4P#I+fY2=WiwGbztli z1#YQ91Iw4_u7|yVjSME2iG(N-9ap@pzgs{GYrAqsFn2J@He6Oa`EtF8r(o`YoXDDk z$vC%Je#zH$-RFClu?JmW4;nHw7C)MG-c;=UF+zd&N$R7UOx^gOo2{`1W}Q2d&c--$ z&2E;;L;YB4FO>AItIY5X&C^#|XLS7{SkqxSE7+!7js~^14|?#edfJ>txyQ zDrpro_Qq)OoFW0E>BKfUr_i;>WA{Cpzyv!fE$63tIJ^OgrbIb}7J*+G-#v*I!Bc+X zfxmT3|A~)Gx!{hP(!=H@@|Gp`1yTu`RZ@wt^GE0+UZLM2cPKMIrN<6Zw8>J9TpA3| z`s?H_gK_O?gwg4brMI4UsxSoKH}a;NkrEug zln^){=fv+3TxA1Qh4Hm3xNlu{yYIWM=9D4j&fmTWuUBo0Xx}n3m&@vMb2-ihiLt2$ zp8pK`>im!@Gn~P1^2%(8(I;n0Awg1^L4H0)4JiiVu(LR0xWhlA*`qxn>Aaqbdp_`d zYJeaiEA-LQ(~T3E2G)6j-F})n(Y%CgOlOa(pL~8(>`8@1W?1{bYFvb_7*s`BzIjbI zc3`RDu3_gV8?TS;-uWT?J2P&iwRgwv0YSbYOYFS)a9U8073ITy`Is3cZd2O9_O=P* zgF^pD z)zxtxC@Az5ByylY&h;DWQ^e3cpv2q4VixbK?%9g!C0}u3h4u_pRg$^J@vW3ojySBqW2fp~R| z^*;K&weDb>)g<=${;k$8_390We&3@jrNXbrk|ImeHYBTtBvcK z^(%01ej1BDn{Xi!biIuW_Q_07PtgeJF-enpoqvl<#7oU565kX@o~zuS6ME91Cfdqh z{fiC7uRg~qsy?NV@HjWbq38O7^a3a(X97v*0`MP%Qc_H0KjyY=0WrL_UgWKw0F$9! zxeisc!K?`U0G$0x1W^V21FES2K)I3sbE|_jk80Sis;X)(&$odNs;PNsdi7x$@KX^& z`&_nW0hki#gg0exo3-e`nl%r5omB9K*rv6X!FHY!liU5sbV`ZIbzf&EjP> z0e=Gd8o2XJaZox#apw0?A1z~ygd`7t4?Fz*W=)SA zhF6$Tl_@W!K8SI=iko_375nrKO29mu=4sH~0Q9Nr!3AZ0{W_A`#T+y`Xj`$Of?=aE z+5W6a@>EWpf5%PPNqF8c{4_MPd4b2&!>Mi+T2y@XuV|5F1Ws<5CDE>WS%ly9aBbXg1zC%ONeh5y<0D6zky!=cb4v?=U$zMJF#L$dv&qit~F6Zm9h3GcKq z0BfMx0{Ia|5cNs+uz*cq&lQqrO5+g)g%&V2$oNT|b!8CDy~l&7Cm1<&0$yol3}|ee ztJWQpe@?$076FJE&o`X2z~8i*@3USsd74#+czbJCI2qZCvkVhVds1rNbegQ z4);E?r<#+W`-nwr=%Jz_CN0dboy>7=vVF0Yar)LH! z*ptM=(CRyX(HkDT-mj@?iMR2*EozMMA0_g<-^gnI$tr(khj3n@I&lP{y z`aX?Gnp$P2y{d6kZ{liEc_d#)+*ikKdh$2VSb6efjzG zXWI&`@+oU*?7Do%Gt$%l)cg7oC*dLc=pr~c2|#p?9)P?6{3>c`b&b>>@WIKJ{j~t; zUO>5l^}Dc>Lugp>GBW*z7=$4x(Wb|u5Yi4#PR?h1835dBdj!a`ZK*j*G7$dz~Bm&BudUW(2jm;+|f7STayzsIu)w@1a z>iJ&kq00E5z{`)Lui6+J^~ndm)G)stZ5(yrZo^CA6j^kCJIyfJ0sERr!2^rOIT-#e zCxV|P$P6h^?-sChjd6N->*_eEXySw4jIU05vgXeV+PAj_D!*dxWeL#WuW^6%B1if* z@iTV<Z{q6~Y_&w&2-NYK;RUo^ptW0$5@bQ#TB5-bT{?wa= z>o>UJ#7>`WI9CIpi41HqH?pEswH?WU(=-9iz{lu=GnTp03LqU`t3CV#;iv2G4%k^) zL+V7I*MB`6O;1nvdW5tAjAb8ZqJEu8b5)}ku-xhK91={)irwRYj_}L$nN?$s{NUBf zj&|%Obhh;#HyK^&vPZc*YQerBPN73RkrG#;i0)qT-{^W7Z^ki_@6LseCZlPQKUA2o z`t*{G%v8alB17m*d+UyLe~-8HN%+@N4PACraMlYWne()U@B?bYfCCLkXO_ICJl`Po zOyg1D)FwLdSjEi+D#3eoADq0Pb7}F?NewVILjb7%ATTl0BmtrDoPWDqz zo8ypg3zzk0cPt_Fkx61W$jwYdjzLUgND%&tS>15Lp!2%h*`2A_+x*H5 z3w8vWe_ms-$yxXqshObZh%g@My&hcTeD+~|ed5FT;W6pVM?uYXgl+1O+3?dIEP6n6bk&?D$8VCRMK`pk(?qs%QV=JKYj59!y1 zKv&k$*@*_WBKOnH(y6Nqq-U4^%&FTwLQ3&=ZmU?clO64&vkgr_7bfbb0cloBpf1Ma zIA)Y_S8{l-conbk4om)5j)s?`Q`L120_?A&T{JD|Nc8MZ9C2^FdNWn9|50WtP1c+y z<`or+@8dBQdjrL|`}?}*Q@XEjn@gGXy>Gm$smWr;qA#Pl@ms;rXq0J3@I7n(tD(N* zWzCPV!&&SnMtpezwsc0*$((NrPg#Pg#O#9 zHU)L?K6}%kce>l_B_O~|Q%)-3G4mJ)lj{qTsR!a?w5@d;?}?odK_8&w?1q$8)!$HE z)p4N*wI~}1K3eUwC_n@fS|_?*JV5Ar@jbUP7;FOH_4LRgIi66(McPjS>p|u%V$|_b zGU*$#Hbn0)qq9}?Xjy*Fnf6pxPNOf1Wz$uuwxVnlV87r^m#h3}b#Zc?M5F*e!b%!@ z?f3TgSM%gEN{TVh`K)43ofbTKhebPfV?^WuV=PU)hkE)szU%K7;-T!>iiq=sRWCcS z+Z$k9A}tx*m>D@ZcBC|<3OCwp?>?#W`#QrMyumBa$+S*teb%|G=81yYWB9Y$8mkg+ z^L`p5V-B(n-9GS66Ta$W?Vs$%j-T`y7$nX^cKWY^C*E0%Oyt09wFV9>--1^@JY4N( z0nj|r(G+A4BT2_+{V0N(vbx$y+a;RdIF))cNhEPAKJ-u$%=K{BOkhI5mOp$T6mUif z1Q~E$PKzlA5hKDR0GcSz=IK?J1o!IW__#)=m==)fbNw=Rji9#rw$jJ`lov>d+`4nO zcsY}CF2r96!4puRl%0czSGIRovosWx0BE)Y&+a#42-Zy5wNfLaJy2GIIsjc&yyKuY^u-OOJEbA}+}269LZ8!T zl0V!dMT>s??2^AP>wEbJMaf??>tBv@+xk5dluTe7uMDJ(Kf=&>Q((@Pv9Xu(x!_F0 z;=AjG4c;fg!?;jAmkxvFzCl_Mr{c}WW51ScZjliv%zb|%a$nYI{FNL|b5=fY*5!}u zCpVpxA_JVu_=?6UTgk`WK|QD`_S7}Id}@=%&Zl{_%Mgqibs<$zFg?I6hys=o5#2N5z5zg90 zn9+v1vxz$7O+W@(AB9rBo>))+{vBbfw@2#EqaZmFO|NXi6*w`%Rh;sj9ebq7K}d5* zQ@_(AdSdCdmrBd^-=+tafXiAzD+;I@WLiafUl8%ewwv!))?;qtFGqE@@yG>ql>RN1 z=`<8hMYY*Wo8jGQaVq=7No7ekr!;V}^P^b6c1<%aqmVB;+>D_34NgUZQ|D-yP4&~} zr65D|U$p^f_38Xv1Xt2}k6`nZ@wAp*sazdhm8qF0s&}dqq0uvQAS)6}6f%>dk=$C2i{J?}*5}tqaTEma?cCTJZ=XstvEh)rg8b^bpC_ zix`H;2Y>T>;ZOSh<2)6%JG*EJ4 z+ualtNO79|+BZ6i{lLsDGi_>d7ZG)#YLB{YG>#FA&3d3P!;d|{Wwpb`YxhQO_0Cfu z^yC#3NGfyZwp}QJNI;4mMC1Y#E$B6O1A9UKaEJ)O;rlxgLsEV!phS?dyYo4*b6-#l z+5ZAZq_?bK@w-HV}$s@Iv6Zk5QZmi5^#>f0OR_tRK`oj|y7Z zzP5D9SJ>Rp`PE+iF+Uc2mg&)@tdTu;0<4#pd?|y26*s+cl1(|?kj>%$Aj!bjk657C zPAe+nF**UF8^Y{NKes%*s%^M@gZtKjk+h6Vr$SOMNY<~3xbXswwWv=!2h>axZ?`Xv zH~i<5$H*KsKbp}f_lwf2<%Asd=)~=zZ|X*z3@lT(LTB>#id?Fa$71u#uyu{ODuU6z zs{eRi*2P?B}8P#SUU$h_h?#G&6 z$n#y(|NmjHHbCv+GwI}A^#R`pnG-+?QT%W$&l(&|)cr~7HfA@u`wzclOZ#5`;*)~Q z&(@zi)X`QYtOug4+B$yhFLS)OvjvlUz7q$KK5-X*IK++?UE){}>?BY-fA~yClZIoe za!+m)TfJ0>#e!|(Oj#Fgbai6F#wSf@WShAFmpgG5cXg8dt&mChOGn;)Zi$&f=1`8E z{PCrMI#z)-d#2C_@7_&?C>CM9f1^-mG=Wd+@j(6m9u+pd9Ol0(0LlMC&EYQth-cMu z8Z&y3&3gvY9R;$t;KFiey$D82QD7SLN_LS2xtu=DbT300Y_#$Y2YvaQcC*38pt;M+ znpLReOco{6W>eW5pxr*pK zQ<$_o_lKUGcz}-`3UnPbtIPlDzos-ziElq0x5(8BrHRtr7jplWYCHBTPdylZ_Yzl_ zh5R0Yr*8i2m9#)=5zHP@@sM9i$|XvAN7?&4ob(eW244?ld)nd>ou*r!3kgD5`i)(0 z?ALH9`@s*+3hTx)907yP*4k2Q?7F%o1(pdGt^yU7_M*jpQu8pI&HOP+a;3KJyWwT) z>IWp_J2ZvuMidp6duKc*E*IA~ZSKVFM9wWwPBaI!FuBQ!C}uaH3ZqEe!6~*q0*h4tdlxk%9xE%^Csbg0hGy$GKj}Ou_EsTyU?wLgT#e4z zMRUUR`^A9CxUzE5B{lp3I-YO(5#N+tdY7Czy7fOKe&efuc`3)>Kvj>~racH@;&S`u zUkPx@Hgf+m*xgE-d1PNe^bFTdh<6El1Cc^n62iTqtOXXXprAhRBTgfNFE!Y zl~*nZ$RXD#tg6ROC_8&qsOa@BGd3QyD1qwlUv-?Di zE<+h>MG$9MHeq_r-N3`WHNe6yAp694sp8VJ8z_B628%!1sPeVz3l-Pc!Zjp&N<1YV zxI3;Uy-qbIuliiYh5up5rY?So6Qzij(aK%RxYD|GQp9;k?QmE%9D?uM_-p@vUnb-X zYkw3?Op4J1YHWmBfY9;ef`Uk}xQ;}mRoNq}3!w44fdcW5Nb~?1a^d-pL9N-v|98Rn zAf%FDDM~-+-es;v%s&4I{i8Q02=!#g4VIbsZxSw*kUcN$l}r9U$t`DR>cT-O>uvy< zgN%^i=(~JPGU8fEXi=t9=wmYFk#GA$q=8L;<~QtaCkRb1UcSy|mA3KXkzquBv6bCb z`-358biM1Cv}|fkWG9xLlrgjE=SkDa`g5xvWj}$rUqEnhGC|MkJMYER%!v@!9|&zWA9lks`D zo4L2P>=zizTY9VP(t8K?AW!nknuAX^Q8IEdVGIvrdR^eT1N@DleZ zhaJY1Z{#Gc(_a+pZ!h?wxZSCqEcUF+<<`GgVNSc5@uPp3W<5n@RIZdK&dOq1(gO2% z-i!BP#<%=8$s_U6ue$ntC##QQdm8%$PBlE=Xows!ym*#W>XG)L_g;>X_7Kx~mUVd9 zCQ<&VT=0DIMoxolH9y?Ad?lbn-B+5^Abw`qLNN%9D3N`wx zR)niHf1e7Km`H|3;mo{{Xm6R--CtYdDdbPGQ1iC;PPdhq?lXsu1BHhL3tl?GiM`gT zfi=wNY@T2wz^^(M+Naa_oKN9)OK4N>NU~;L>(?tlVLwxRHJXrejQe2!gn0SM)PK?$ z|NGG~J}SYJ8i(;agdIZ^-=P|R-d>(>+AsJ86nUkq$=lJ~@z@f_(NxL=H4nQE3!K5y_YUUjFHX+k z-iJ*;%r$&-F5CZ!@L6L9Q+c=4!`LS)8Lwi8U2kloLQ1q#31nA$WmPRRAy6vtQt}@R zNt{JwzmARiX+Kj!;}T*xTZ<&-l32MV_ZDwyO!67#3Q zp!1olm9mAo`mxGY-`08CzR3d9QZ=rQnai=JSrUVsu4A7X;W=b!4rfQk*Zq(s`R$v?QUrp_QA1)(_y2N9Aevn%j!?aN~ zs3KliUK4r3i~=zm63W>&y?EU4ltZ$zE){Pye)hdP zX+1VfMxLX(b#uZb^{0_`N~^$4tcTB(G?sr&T=$;xB`8uIBK6VxDb6(5$j4XI*0dKa% z)uVjZzh(D5eX%hux-JyGZkZO>skG|;m?wp}RKU)3SWhNhCBz()-Kx?&U?aVF*XXcn z`Q*PB`|oghi2}7f<#P}}l>_(+Ehp$EK*iY&eu0Q|cJmMf=qbP8rEJn;&lE(uG0vG?}&Ecx;%Qy0Lg>yzG{o zQ%0D?B5@~WE4D=%nYUs}bZ`nksHLLMzilM{8F)IW@lq@x`n767?NuJ-)%QXI;Z)p~ z1z*}ns|%tEvGI)9QjGdf%6V@k{2m5Kk}9(`;wVyH+rqEXVDtR{K?krMsV zGs61$(JY0f8+rvKe8)%pDn*16=X+=WuJynF;HrO&NSOeXslJoinIL^2G^?9r>MACleK45%2g#jki<LPBa~SBU%pi+em*3@vN-rW;-yrc1GFt9Qprm)|mNb zY^P?^ZX0YyRCu1Q2YAMJB`?R&jE|L&c;9kdsBjZ;eG>QWbHii#?47nxwr@*%t-ma4 z#&m8w-+99nymE`Ogu}#8^`=zT2i6dmlX)RoWrjLdo?7i$Ii-6AnfI)P&H#pC$d1f3 ziOkge-mn*)DR8Crp6p5~BTI8A+fM$Od<`ioa=BkJ4Q zN_eqSyeu_7eq-e^i+LAm>dxSHC+SmTHiqFfdSrY0?@$PI zO;+Tu?Suu$uwu>aM`xbTC%$)MPWW~$ts*13r9ScF*-&`P*Lwqr4NR&6!Dy1?tE7S& znO7bvuvv+F=M^%KE(dAE5Zg0h9{8{?3+r?z4yp`BVt@VU_LSW-hM+E#{@1AEiUOb6 z5gmhh&Qc1?^&TC?oSb46jRG?kLRG9~ko2A8)pPH8aPP1_j~^y}W;?wLYupI^a={@gL2_U7RD;7-Z@2G7*n zcVdG3KKhF7{~ujn6&6?1Y(2OWAh=5i1Si1;cMSxG;1b;3VF>P$AOV8A6Wk#L5AF`Z z-QE5@`M&o(=Un{zVjeCA*xg-SU0t=-sv%Y}7fU77U;7l z^!hA~)ACkIACWzq#)tn;4^l)Ns3GQMQmV7~0fkkh){&>GprC&Jj=#fAEBx$v_EsRO zQ$XkHvH8TzneH+uioAHKKMT{DK&U7_-oc=XPp_!nRVBt-N`@WyvL2@Wvu@BK8BzYlF#)LaNQ)FG{RSu* zz(v1640yPkX$R1K03^T}-IV^XU0M_N6JbY+CK#Hfb?-W{bP?FrU$~G6e!enSPQX%e zi?cFi8?)10&R;kX9jpyjqn4KsJeZbcSPJLth_`aeVki;{cE{C!xPuI`j38ywQciX&%>|XW`0(p zxih~Du-MGg5o`#gAlT?m#8<}sZ2)Q>B0fV&72!qt9&+>p`{=wnitt-Jdl zKA*Anev1BU^Sz(T`iOHw2@Mrm?|>S<;UWUTSUJbXJGk(SP+Ocs6-lgS{UpG!{unPnWkoj`0-)H^&v8nRTE4A%^hBwx;Q9+Ty zSW+3F2$|SYhl#4j1M%OXd90SECq+vN->Wepp+sAD9ZE%h|jw*J0OPtpnmc)$|ajGMHJ=gg0}t!N8Q&>g8~WGUP0t zLmwV4WLfs~N8R7ts5yVU>C-q2W95zITsmju>!mw(%UUrregk+o9+!O`QQ741cPzO! z>$cRAju4XsW5U>Evm_czA{FBD?02I9Gn>Nyon*B+E&?CwO$45YK z5dhoE64wj003@^elMtbYHO&uDv@zBnr-XOKX^E_d)HQ7wT^5QC`{;7dePETj@eAI8 za;!L}FJaG~U~XF*+8^Co{t{!(kq`<37CA3pUx#t9*B)`$Z0VGu*5z3|NO8Xcw!vH^<~(fjr`ezI4+4p<1xKItl4g|mX;#tJ92eN%(-grDR+btb z?9Jk>lwVH$sPkp^DYJTv)b_V`d%;z}X^z886tJ`=K4Oo>Ubgm?D-ZXwrK<9<-(7nY z-5B=XYM~*4l2Pb3@XgDS_q-MV9z(z?qQCkP7)xjmAl;$pEr2Pr2%vg^Y`<|z{w5%; z;BDKmh6vP@`T;IYbh%vO--gt1AG%#sh}@p76&}0sKH+a`-T_DQ3UX0oL z!0?~um+cuffw9@e$(@u<78nV$)usOUAU_{%W$o&m%gpWlT8~bSKDP~8ie`pOho=2~ zdvgFi@erthTkXfgG3}Gg zOuRg#8Z~}>xfw->0AcPDndM;e`4(iX#6R6A^&6SFxHeqQWm8I~7w>`6wQM5SqxPO(*~K+S-G~ zT%m?BTvo}A)2kKlv~GTYOVYcD4LFEHwhX*G@r{m+|G@&d>lJ!aEvrwciCM9MrC+`k zg{GFHL+1-xk<1jBB8{#aLN8D%lLZiUsrEco#xpEgWha+P)_wWLc9UZrDHnFQP+YRWFs zqPuDba5VF|O%Tbpz8asus})DLN=Px7j9DUTCSN+FHqv6ONj7}9dHOjBFY%CR#dW?( z?9IsEkO%5Zpzj73^zY5bA>R^s%kZ!Ynq-dQkFg1p_&Yy>na~BKV+3SBq<|t=7ZuDJ z=Ek}D)Y2TSgV(5t!(P=Q@$xxbeH1P1Ulvu#4Ex=}-_%8xC>XL=ZSCfq>|Bqe^7lR8 zY{w7GH`NmIlsQFQ8Mt+S7D}0jQ}ve!i~Ru`q4#$2hk#a*;m~m6jceENVN3l<#ldp2 zr$v_hpuW+N%5zV2)bVRKVx=2rb|ybiN*(!0(`SF%Y5r^d(%ZogyViE#Rrh~}1055O z4zw!&cVT{gOX2LuHXffKtBYorPXnjt)){m(u@18da0QUlxIpq~7To z5X+#HA4TqkV+zm4;w%-Sm{J7B4Er&FX#r1`*~;}7LobJh#_3GPV*j4R$mt)y=g7nT zY0Vzrn?04ZtKp$E?MJ!+{iZa5jIwI-hsR#SHTjcazs`vyVQsbcncCYI-1fGcaB0ow zhQ#EJgcEFcWPhs+|BN?ef7O?S@fX2w0RHDO8B;`$3TSlxQ4%VLt}cL{nuO>PA;|kH zj>2naGh1I}?oP+x1dm9?7?lZsCh@f1O~Tqk=EPP?2uRnKGGX>G4t}*o9EH;pR;=lC zD}N=K@*v-UM2DpL8SK$;b<~mMV%bt=sKV)Wex=m|YUz(1nv z-RqwUrsCx7e($BH;A3~Fyrz(AxvK9t)9=KK$#2OQb|WZoD}(s>iPO+56wWn%>%=R_ zC;dOOAO%Dee*$aVPmORlSKAMGuqHTS_D=s=xPodp=7koDvNWiP;4Piv!egJ$*B>g?P=+7F~Z<95AQDxdP@r)eJ03K3@sW{5SNHdK}r^Fdw^PjlK z#=^;zFVqN!tw|-lI1aI8qu@ZU+q??Vj5;cc9@EM^w-*^(DVyUqwUSTQ*%%`fSMqE& z)5i#o14E^QT&z$dIJ5Ea1-m_*5e@RV`tOr~Bz%iu&9F{S&TQUp* z0K&esW?Pe8rC9rRnM)SBh1HuK&fLeVWV^gFOJMjVD({yz(Ac9i z@e)hY-|tygEcC<*+H_vs^qVkU%cSQ<@`LQ3+C|m~_a9PS=`b+dxL()(C&&4pjr(gXlidApD|IOGBx}Bm z0^39P&H}dNJ2K~B0LUjl@kt|wQ#IZ{Rr&+9 zH;#q%uY7GdrlseMR=$`Y`^CrN&r4=)PV(1@#j1H8KR)$WGry#a>_PbjAJ1VCFRZS& zO3U#*Fc^MW4rv0df+K6jk{naU9EUg&&ag7fKX#VG6xCo(G||K=v9wXOxbcYp`|hJd z$x-8dx|bZSNBrio88hnU8dW*4g&2H7l90=+d-S8^)aulX3 zmKduZoiEgeY}REh*!ygGn#-=wKm?8VTieltf)$s8iX z6$VhAZV02i*3b&$>TQ@aoZlaAO{@PJC8XLr|Hb(BOO@!cKM;cSn;o(omv+ zPK5t`1PBNXpdA{hvtM^xmvm6$(u-o6cA(cgI_Kvr+Ld&SFMNRqZScWso?W5yOLSbL zZ+w?Ee{KBA{ypi)L!;GFAl8gZaW{(wsI%m6*uaSEq|`N9azBP#Aj`rN4il_}MeJ8NbSVYKiU zEQoQibv!La+n>C4J{ld#566{*L;Z(bmaAZ}eO0GTpj+Kl3#=P@I|=tyJ52FtEcmfv zeDURSY|VH2421N%a1O4RSE#Wg0#9Yld551kN!`avsmjSZkL`R;%&#ckkqTrz4^-qEumKO5VCZNH%| zr%!h4^yx9VWyd%pf$Mpx6+Z(&<`a{&oglNM&8{peG{4NUdbjWN{~aEWgo^4;xK5UM z#Na~SQnL~--E^`6^E!pk`}=M4lIc$m-K`k zMO*9bZPSHIr7GH^YYa!h-n4=EhCy^T>P;JK6m8lS1G8{Zo1)8WW(~uBo@&DI(l5Q# zC5n!pE9Sn8X{`1vtU!8Otu`d~9kI-l>hbjLkI@lyhXo#KK*EB25x5(B+#oEw5>v6i z%Lo0q&@qGr0V=|wp(&H*+O>FDo#s{(IR&3bLyzy18?P&rxN*kQq{ksxu&wH>miZw8 za~Ygs40Na;vUWZhdOGlghc$)%`8M9TRV8&^u*y<%*n=xFj1B&|-eUn*bLojTnjGk={atHi|gcsGpmpO(JmvCt!xU=NxfNV1Fq4;)ZZZ6E% zCx!LQHMS*Etv2-3#HdZ~UqWC&6Wh^l{4BehywNZJaWL2d+G|^vf2ZK$N1g;aNF?E< zS|L_A=?^xq^`Vi?UUD&y5%NimgRfiSU!p*=8B-x?fRzNDDs3+!eOCQw$QSPKrywy5=FO;nDNLcG=)*nxZ$tqP<6IY$7$lmY`sO zO!x5lRc+Gjw7McM+|_rEZxqv4XkYU3Us$~`ta}^5?4wONuLaX;*6U^eu)h-DQ=Cp= zNtJ5>8*SEQUS$6ASka#rxv~%79WIC{C&4i(F^ByTMM!Kt)mZO2nIf3N46}l0H zMB;McZ7t>0xWCB+G2A?f)!rehBy@3p6fjRvsfnOZ1q{Ht(B;EGlJ-lR$>~4&ovEU0 z2@>DT5oa#+U!qn3YWB0JuM+C;MblqsCyZoSLe>|?HGdx}`sXbJGuZNJ$Cpz=YH2@Y z8||X?_NXVhxPxpql1OOoRFC|;4i?LOs)yrl`Y`sm+7lI|m?}7Tswr{PH>}{g2uM)< z_qniU>k$3>v%D4)X`wlR4EOxzSKm7o)vH4|h&>trXAqSFmOEv68VMPqs508xHrg+DYq(_1oQXT1Ld40Wltxk(yijkN&9^o&`Dh9^2UDU79bvEoEj33 zCX!GowIu14rBQk;^*q0y=flVr;O&avmwxEZ1j04#Z9by;cg>n~&?^DmZ$SC`OS&d+ z$Ddo4$WQ2P$Hr$986xalfuh#5196cYtT=XM9e;wSv1M`6$4Q9m@8U!AHm*1%v@t6u zhqu?>%fls-rkwgvAk^Y&Ra-Y^af!;PmFFrCX^8eRCv7)Weogj{8g*!}$7=3zTiaPw zBK^*XT1ZZ+?~6Z%34>1|IN(ae_EOjq4@7CE4Q$A)Mo=aI?OJ)z&#RITKsngMG5AQj z(pXNxIAbR@H>KoyvGsIn>}8nH)3j`7p;z7!|NWb=t!>l3_rK%H-W+8S{Eti0V~I3} zH(5ce#n4i{wo=4JC}=;0^A@^Qn5}=sJKSuJfKMCL#8SVcw8VfbFJVoIShGQQrhpN^ zeEtAN8dk*&rwWnWE9`pdSV9RZOlEPsLRU93c48_o5|(5CYMF)4Yuh+5@sVCMp{KYl ztXQkZtNnU;Yt~Nw_?Hz;MbcJx%P@09xGS~;4d$mhP-C?mqGq-h>SKUaE_7_(Ibx8_ z$fQml#7YacX#a+=cYwsaHl3~iVQ~W&r$09ah1Ao5Z*Iv_NvW!n2*hM&TPSd0b!<`|2R|?6lIBj3c9RBjk^ovApYQK?L2b=u+^7A2DDl<$2~@T@9sG7%;$tVPfyoeEwboH1oq z@<#ww-Vs1De2BpdKj)?WdK=l9gZ?})Ay#F9x#mfN@=DzMTJhRT9y7LXx|Yj8#D@VO zgRKK1i?Sju(%nXZP?Xzw?b~ii1G7Ijdg!5)u@eE*(fpS$ts6HnbYp1$HRQcu82qMU zC^HR9RL9$hp#KvNv>xYs?dC_&ew*5UTRIK>uIC$NP7Ic&5HNokc89%a1&&}~c1O6y z?CHGHMFl!66R2{39^B%4jQVR&V3fKYloc32l47o^xVyv;dsC2#rxh;Uas9Z}J`{-6 zH>{RP;)sWbtu$(OX;{b081>;oEl!9FsiKTiSrjkXjpSOTBDmxilZH(lGDc^uY6~g| zu3SBYLAAkmz0De!pn>hG2Npa{d^jeOWzc~)1q0AtkeDId;tlTh1}alHbtU_kj%WU7 z5<>jy+48iXa7QJlG{>IEFb6s_A)a~Y&02BMgHz1bZXcLE+GX=jy$4n3#O{9}`GNlN zyHMwwrXBdIvs`XpmS!1{w(lkHfGs&YvpKVB z6%8BnE%9Vv^m~q%sFlBS_X^)|gE%h8ct*zx_D?CJV=*Yl|`@z>(w?dVN@C;U}L%vx*R z!|!@b+Oe0MY}|r)ysz!t%8@4qG~L^d7QchRPa~GI?i|%E^e%%X`7ec+^*X8Txn( zmhXVc*}^-GKDW~c$lH3g2p~t-?R^WpD!^5EuIZSs1n-GV7MmoiZyzK5yIZnt2@SGJ z2DDf1)LYKKAO8Y`4NlA5TG61wBJushLc1f|=k9>wObk?d=?0Lx3a;=uv;sjsc>j5M z(}5%i8S&nF2W^1ac9F-rrhDu;gXTd3wKi6U56%_lbkxKL%6RG7a_j1L+m(UTxEETj z$wj|2jb^dZG1?DjC4$KVrHv9pzS$FG|xh*!yKLXjyPbMP6yo0ZN(=YcKRud_Yd1^ zHZF1gHJV!Ek0?#W-kXg2odAzjt>wt2qKlyYrn`I%45ayLqS`V&jiewD)fwTnBWKJjo*(?lsb`VNhVGFRl)2J2daC6Z;#av*s~5g^K(spBZgec6v7h%x@3O*E<-eQAT|~WS4ysK*3*vUkY96zt0G*I@FG~1+T%#R3~lMt#)(0 zEr9G|FCgqE<_$25lNib#mX9CFT@UAj0Cljl+Xhv@2(uXzD`0oVC8Xsv3x^0q*QbSx zyAFZ{ODb+Zy3>NbmxM7P3W6xXgh*Ovuff{31h^9__CDZAqbs_&D?SZ_T_Q3O2?5q9 z30#CGd&7Ikp<6j>HEENXv>&nJxf=b?kYa8`f|8%AE+h)t2>4=s*R_SUuyVGRI5MsJ z^T+!T^CHC@^)A0uwy!^8**I}6JDogLnEa1@n}9xFPuSKnOX2%>dT5~8_$G`O8PEJ@ zbwPsFECHjS%pg27rdfSfEN^noKC5 z)lEM*)1#N)m!2n1Bv@xP`64YFXI-8h6Ry1* zvGsN-87v9!ukX_@!Fth_y)oPXgEjWCN2onilE$Q>!G z)bPgFnnTlSYnuOVB5`pIctjw2`=Ken*><1!Jd>>d@P{DJn1C5kdwh4e9UhvWYtlk# zy|?;2l_AWmAJ@at-nQY{s&02)ox`N$Pm3MMr<^KD$=`S7u3pOfxik0h;oz zLYt!klCl9nSFtr?ihDwk!KY8~ephCG(>lG^KF}l09}52LQr^s3O`A%D;Pjq5BCQU+6OmUA#L zV$i^ag}Q`$*i(Cx9umqZL|{x0Q>I}nk&BG58D`IxrDmAF>2as_t5&?%Bc&n#)??XP zRp8AokY0u9+vY7QjjNlPiOEvcyz@+a>mpiy5-)|GYU?Mr;Nr>i{QGH8uy-&abug&s zLF?L{@SpR13{9f>1~)q?TAbP+sutV;h$=(1&!OF8fq8VBxdm?V0GrhvV4=iG!wYo? z`P^{;abC}hKEJ~m-$Rdf+rI}^n31!ud?f)x<|LzIthh$2!bGYT9Fs{-plVXIn5itL z<*yt;Q*GZ0z4AL@bTSW5MGscM>HOd)(#goCG2zlWy09feAh!b-Sc*!Kaltd350-4L z-3yXG-X+D=Nm7X`T6CZK{BDlgXUpzqa3+Ay0JfGhEzMP&4cfvVR-XXgWM%`;K2N(- zpWFkq#~T2Z5^2uCaHtJ1GXyV-KD1&b$wB{6w^HeF1xmCzyv810qe-l9Tzxozd+%q0 z(}iV<^KGP-{xJi3{rOOIDv-n_GaQqy<};-XFLnJ!zxcbM%>EPkne2vrB6H?LC!Fj+ zuu!yRxsyxs*$w*Bqn|H9UUtm>as%;Q4}1?MMMsp6UF_BnSP(yl-&ECh zo>`5#o49E;!ql_m1a(y1LHOCeYlrDhJYx&OyJC9d1qf_|0FnDc_pJj{9b=@jAlY8u zP$#j9t|y9Us%5jay5{N5NTy>v)eJC`zE{iGv=hS*e6a+|4kP{802XHlTdoLEZ`=Zn zc9ay|o;#HlQ?$Re8EB}`L=D{PH1YtwPN0z{3B}`%l*7%5At{eN==}T~1X*6zgZ8}y z5Mc>VMv2f%Ke4LZG0#y^)E@C=3TX#hq(U`Z8BF45HCWW|+ut5#EchC!Sr9a3_25nD zA_B>6v2%ZYj+NqNK+@ELV}8uZNj|yCltSsjp^gEjSF8N9g71mOi?#PQv>=1CX1ojj zQ+bf^>mRZy-0Sda29e1RisNG({1U?MTm$Kg{k2G~gy9%6#%lGb3)Sq+&#-scC_Sxj zC*5;=VhMtD@bVg*Y14kbmqWm>2uw~q;$bbn{*%^B{Cpjb;$3Xlz)mQiW14#7dSzVL zLo)K*d|q;*9VQf9?72g<9D3UMy+aerAnXHaPrL7yMT5e6(_&M^%+oMu*15~L3hx^m zFF0)wXfs`2*u>3gae!QZ+7q{M8+F!g>E3Yvw5RUd&wPgerhlMUxQG~N<^YAN66kks zz0`Es-G&R@@k!{+MzF{sR62R=ruAxy?C&`_>eb%IP?_Y%mTbmGIhQ+9^AmWAmWL;4 zB_LiQSR{p~h}ZhoIYDU2;U(2+Hw^mCjW~E>uugD5T0a<+HdgNg3h}$ze_h*rY7AZkXNl0G>=i^Gl_ zvFq6BU`LO(6*e5S@~?U()6p*~Aku?@yhGYfY-y7yUpM##MyvTWl*3pL1FGpP>j*O7 zR{>X*a=u~H;4mooGjw>HE`PHB-|Xk#`Lf&1u>X5s8XJrzKGad}Rw2gIv~CQ*ij1fU z!WLcC)m}jW^-0Q+ZJX<1gj2VtU)Yc**7-c zTKfX2Rv%@EPkYv%=%ORMhrQ{Mv+%a_T6CHyu0lXR%-@Hww*s zdmRtTf;EAe!p0@i_ zv|CWwW+tHCqao|$#a%9XWIvkyI=g#K)fZy3OO2JW*v-1D>xE;r>e=QTxiVD z@FEVPTOq>zQzX%HELi2mbToq;k_;DkABLiD&I8mj`GKMGa%{8(?WlHV2Ga;6%#iTw z<$&qp1_eCmH~8$`nE*vXc9gl}Zo0|@-Bs4*`)Xet0l28qu>p*k&T|CZu?Am>8y>%h zH`Xm{Q*z}p{+0rZl2a^IuxS4r&aF4lG{kg_--Gc3ke=!6|3arkkGtA*6n`Fsbpw^x zhSep5+FXKMObYT0HOyjAooF;`J-X!!E9YvORyb+6`z61Ck^wwfjzBTy@O31qYjIRu-Fr-?(}LYE58{Q7OKm z_~Bg#EQu)c*G1}h*$+}P`Eew zkTgM=U(0|bmokYErA>yKWTnX|xiL!Q8%DN2NIrpEAA~U2I({&-U0z$iUqQI!l9bf5l{+6P*;8U+nX2g+ zG|L8TJ{PxzKfI^uFe;M{Ix6FsrtNr3Qy&`k=B&hEdYC$!Fw|TGYo}@a^(U*3{JzIs z_BGDt@*w+KWYk8^p~Ih}hr&;SlP&b&dJW9VZ?wfc)vl){KnB0b66y*rDLY_66LBtt zZ;)W{?Hq5PkNg^)&OK&5Z*Hsq$Dnjk{^qp+O7;nW3MaqyCU0AzXKVwc!Y?i_MJ(>m(C#S<%?&>G!pFTeD1(72U zb^LCpV-ZkYRFw$G(k%2c;eTumv7bow!viVK)xV%+oJiXS8-pO7b$g7X-oHhBUrUPn zP7R2EMr8sio^6E2s)LLq(aS8pKgbXy5+`g;W#+JHi}bT(1rzW2;sqoB6iz^EjK0<} z2Y6ujg4ro8wsV(?g&Ey@H`80Q(PyvIQj>efPUYp=z=_)$974S_hvJ)|{-rN%x#2;1 zi`@Y@K6zipU8$&%9E)31A!j2g3vmZk5#_f!4hOs(J|1`><>IznAx&e*l{LXPhq48I z#Q)c%iUIDdK;Nb#mguS&#T}O5P3H?Ed;62_Hm1J^AubK}KF^UmIsXW-(_pZw>6RUQ zXD+AgYw=nKQ)PaPzz+`^dlY!=QV!J;iUe5?G(w?+I9R!O)y{OE{?yC8`NSe9$qP|4zy5-BtSDYKgfUwxzxalOh zCn~2rCjDhnv;i0Xqc`;w*LU&9&rGc#m1R)3uO$ z9M-v4L_6bM4$XWyOziq~e3dpjN_rxwTXgM3b6nnzPaVoG@2!#~>a7h+DD>hyc(bvp z%7@ek4Yd9~deTfXA{q%&C1s(<+bL5_0agy3%sM>FW-Z!KVjt3SChYeCChE5~Le0BOr>T$6G19B4b zBUX^h!x<4oQZol|2uabGL-zDJ0A~&h7O3e8ruBHV)OAD{Q|BXfX01ISCfi(Z-V0iW zQgXkX?EOY?KAzTpT30jj`9XX%rSDocGz6AO>Al*pv~jB~PQFh72ba!bl+BjdxTbvS7lLW*$PjbmQMJq6 z3HhS$RyA8-0Qwf>*yqASVCB3UNCBkc*U?F4qGDik23zI4J}5pn(*M`;u;G}TUB0EI z!Gl`X$&TIQDguFN+{u%pN7V`R%d%O3P59<*&Oe@n9L3ztAz}WTZ3^?9|Ky&tx%F@Y zW5;A!M17t`!Rw7*@5M1hdCabk12l>Zww&w0TVAv`%S_XBU#I-Xyf^p?p3`9 z>g*I!gQ|TGTwMY+jWz-~yCTrKS3~P_MrHo<8;j_I6rSs@9?iwcllKRRzg^KPKP6$3 z45iQ0*?hQb9hGmS9)%u+SDV{>zShU_`-0jpKRiU#2pDDf>Wy4`J2-)p^I`L70~5!+ z43p+W|7%B~p?coXTu5F!&^{6?Mt@!(1`4H!`+eC3lUU5GIEXL0Zu$%uPpNr>zM@xm zyhN+Eq?qwX^i|DMbp92w{z00@k_DFC2T_ zPgmLAZzP_IZVYGhZE$KB?Us2t77f|hxb*i*78%sI==h(vdD2#p(Hv>xix-gnE>wXd z)$3(%E||!LP~ZK)X*~J(mLB(WEp9uyT*63(%Lm~?8C6nn=BL_4$)*Pm^^0^7>Ugni zM}-tO)9c+WGq>)`?+Ll`duxedAqJaX z354iYXU=boaRM1Z<^5|E67+>LdY;$+0TKY4NrU2VuFT17od8uTn$+VT%NYVx(Uh+( z?Md;bJiw651{d>09qdh`-*s04AOmOQT9B}H14S`O`Mkp{QSkjR^Xx-ExA94je3G*- zNb$=VXT7@Go9!Qj&ucFf!x5-ZMg$`;`bi9m964h*NHlWv61xObb{3;)U-ozC78Waq z;8{*^#M+dSmE?`840R}bTljU`sHU*D@LU8jaLlxxa@s#8+J`H~F8B~{pNVwjrd4#E ze=g>(s;giIk;;)m6qO4b&SqwCqSgbCjk#@M_#3vP1lT9VKlGX@4zTDl z_a-O7fhQz+fYYyf%w@ce+r_=#B?F^buPfM*hf>8meF0y9qPQAC^XH4G8LPEAJz$Fd z^RROKO&ihqozVe~-R^12ZuNeR;x{yMA3JjweF}12D$6>eFWlU)q)BnxJ@lfMVdOCF z;R`Xql@R%brg4aMQt9aA7ebRLB~w?A6%R+SeI*oTWKExZtgxCgX){i0<;41XN@mi^ z(Lh22aL2#}P$v&t3tKdEqi@RE(=lrMZQ9DLrhZ?Al^Uz2TUFF(ai5@*U*z6`eYLj1HMPiW2!_i2%14_c0K%Q_k3lSqsq`an*^P^i};OtwdX=F zm)W*ptv2Qk*v9ZaM{!T%EOr`l%vz@K-L@xMN;c4%zB!@%#aa1C!Q8(<@-DftQN+qVfa zU%wqX<$U}A<7+RFp1po>ogR416Z+t--+OO|MZe8kUs9wlOL)a1ZEV}(1nDMCT#zg) z{I2&WZDjbN^Vp4)bz9#PPjlebbLSovq!aRAJQCCece~vRozgbJE&+`_07+5zZbm)- z3g62TXoBpNvHgs3_J;{t_SlX@%yW*=T@Jx2!`~dNciSEubCCF6ItB^iULLWQKFtNo zp<^P>ZUkJPoU!`baTi~H7PdL{KofVh>yAOkKv*W5GJn%`?80yu7-5HDW2fh`@h6Yw zz_>AZP^O+8TBZ4SMwomW3sOaEru4>xfwc_tJZyuH+|Afn!s2liRez8=zi__u;aOVI ztZvJ}d=KAwSi>8rO8a?4@bcrsRLL`HBYUH$oNB_%_vtMlz95uNDOBAorcML}mpT#7 zK1rr!5TQ?3%1WyZQ&w2Fcn&(3MF~mcfAE)wEZ?N>v3pfI zxzkZ=T_3Z9P6S?rkb4mp=NnJRR|I4igCI9IIb_=!872@DYK?CHbFdEge1P+x@p*gQ za?5@Z4wJwhZSD8}1Zvo=ntvl(BeX1uIcxmqo0#W@QsW@3|J=)&kr6b#k)q>;%Ty7u z0tK8m$F*a`C*IT`Y5q>PS4))W_eC>DtBhQp1CXjL$(DpH4ZHriTUA==TlqT zagDyn$QM#~Ysc>mADWvp!+XMlu-rE<)V+H>k&l;7^*)Wfm)jTTy#4rL@13;NxMr&h zXY{ckvk<{r&NH_f$?eSX0T*qhYfeIDm|}{Adrd^V}m(>peI3bmR zg`;qn)3C@n<1C>*O;n89HrqaYg>oH@5F?GwDlCW%iwsg$hp4&1Ch;p`E&7oJfYB15 z4ym>ptSviI+|fLa;$nDCiYg7sLeoD$PxfcWKl-s5sKwPcZ4rfuv0LffX0g%vRkzF) z;@!-0fG(zpiOD+eOSrD_wx^v9QTIGUr!#zd=89wm7rWl=SXOS)*UvaHhFVsEwtL|n zLbRLvDQ{<-`N=^XOC8C))KRq*D|;OWF#O=lPcx6}1<@Qp0k6{O&X;uIo+fSf`ZzRn zm^miRv2Ojwaj|}%W8hNq#;VPF-Jh<9#j8wCsR&Jc5>tdI<9~aaUJ#nD8qm%?W6BTe zb|(#N4uG59qGV`RY?3zO?p_rLRrPK?rR^?qPxPPQ&Z5q>!$wGzT`HWuy{lVr_<2k4^|ET zuuwwv5j%KLa-lHx8NxKy@0mwmbYi&9VJa|Z^_cDp(5yfeNsy?V;sPs8e!qWaRUi7> zIP~}uM8kSDAib5D#s~r-YLs^onbb6ng!RMV$d6&qX#bS)MQPKQ%66AbNvhyt_)W^S zQL(mLH_myR&>or>X{JZJB2_=m9kIXt!EK4V?s{!h^YYo7v{7v3*fUb2?cq8kVBHZR zyV_}!gAynEKs9I?lSa}BSmYrbCWFi^!^ z2U!x(I$RW6aUF5d8!Ix5m?jw`JVDsWtdi=r1{qib9D{=hgFqiOLd_l@d{`^=<;ceJ zcVYPK1CMN#p(>?@CNLlAmhj^5l@hKz+9HUlhZMLtt0@-pKdZA9?MwQfi}2*@lZZE^ z{aX7*C$0++CMcl&U2Zk%}`=cJt zX*>A&aKijZn2p14TXp+GH0nYTubSd2N9wPdYjAh(r#tUt)*OEBYxX0jXB*_2cDx zUH5RzDl7=S*YuArV!7RgIz+d}%M_Cl{rjzj%B!Jz-RZ_ArFcgOZMIqNqqZ`)sK)1k z*XhS==0ldjBB%v)0U$Xvn(@bP;zlwT!xUm~xX`6E3!BvlEwLCzqk0%q5Wta2=Zsj? zg<^v90;>0)^BU>ky1rZc%Cy_kEz=*6sxPA(2g1wQt|EEyTi@{G0jua!8%6whJY3 z6QeXQQq_ReH&gf@_nfZr)l-tkF;3QKgGVE(QiVRZFS;O#4pK*dkiK8hygofl{K;Y5 zJ#6FYJiKqWQVbjOoBscO>!!*9wFng<_rG&zP-qVIh^^@d1ZVzlL;)`^*|GfPO zf=pbw!ARzMdF5!9BDKyL4;{v9$6ra|nyo!Jc66%mL0FUcc7^a%+sEF+N$6s#E-EfY zW?8p;`zj^X$@#)W+ou8tcia@fCvd^S-L!&%6bbZZGOj^n1_-~_4fYvoC2jBigp6)e z;gTE%3dTGo`@1c*@zzv)xo$OuLznjl=sMi|6xwKx5gE34n!^I;7x5wqwv%_82%6FI z_@c%tw^||JMwq!%gYrqpu50W62kYUVo5Ari{?8|xj#Xj3UY$SRei^s!^po2KE6LixWF`M_XKv#- zA|}_7#}wRoDcIt9a;c;~AQFeM>{*(Uuz=7_6{58DDA`9tX0dqPv16&K1MbM)oWFyI zN%lK?f3pS3bq2GoyL+U?{K{qj5Ysiv8zO`2gXwpZavAz<5KXd7`s2;vg1Xq)rmLXE zOt-8yW?vd>`f)=~kk5+tbmRQ)<)9UnbB!1zPti%S7))j=mDuP_8+1VDvWbUi7@hZ(x|u+CK%tW!fb<2HKbpDeSPJF-E=O*n}{ zQ5az)xjv1*_-jfZ?o`tl;Xu|Vw=jv~Efh^Ek}dA!-M{Du${)OQ(8_eEWfxY6#o-;t zJTCA)qq1?9Ax#yei(VuGRiIYx(qJ#H!dK%Z7zS$Uwh_1!8(zt3#ODNzl^3OiqTOFg zeu_J-wR@cmYry;xTX$ealqfuTkW`d(aNm4(8ujLHt6_tVu6DMzPb@G_f zz<*q`nqDuF+8mYdaj6`S%Q$>*f++O#fMhT|Na(Td*V7kl1p}I&%aA>H45dQ2B?5Ku z~S8~Xu_}%T&IXs+Z7}_sM>fFzB3xB+sCqKpl&|*cR z7*)$Q7zvU?}Df3Qsr?^{_@{WT`&2h=_7&|0jt`GAPC zzFav_!F#V9JI}_?&-~qD9g1Ct##-OP`p}$dM+7+W$~$0NA8^>_NF?~zrT0aO7ir2a?JsoctjTZ{rIh(PPw1L+|q>kDLaJO}|enaafx4vmw zWT&1#j0HYW!N+?F{kVJsf*ftJ+Yky%q}SJK?GPHw@$UT`XJvjLr;t3`CcCOQ2!0z) zf?5gc*!kt7X~viQFn%3-zrG}$e^*)8ppoMAX+Oi@GHb*TAwTbQU7+G;*_Cv1UOvrkO`7fp(8L5qVqxlgUim2%oa zzgg`0-lxImRIBYwK=t_mxzwBo;2!aRf8nFgto+gcKVW&lw97&Nv1*_PCK(*vQV;YR zv~xyC4559?WO_zRY9KSv`BDx>#~4IYmCGSm_QCkFXNL0sQT3H!QEy$mGjvIJBOu)% zor-ifNT+mnccU~YE#2MS(v5U?O85Qad(OG{&NJ{0W@gXYYp=c5FH*;IK~lL$Te3ew zit9=NNdWgzKWTE`$?yEZ4msswzmvN0Y51YzwbiXGn&ACBomKIRHJ=Iy=Sh}gva*b@ z#|>fok@xH(c?AMd&z9)XHDhY}8dw4X(}k368h3uuLd(Y15f&vs-l3UE-q5nqcxB@0 zh4Dg9dy$-3X691HaVWsd2F65vVk&1CGwbWiN-X>IWlnVZW&#oGf?>5|m*dT$C2T-) zZ<){Ysk+^RjRC`-NlkLj7lhFw9@V24b%)_=mA$zo_#^YcPs9=G1$3Pr{Q+Zqu-d+6 z|6&0`QI;;j)Y;z-xUaU-gU%$ozhykZE$X_!63%sp?E_b)LXp}{*JktOzU#YFNW}b8 zQSif!C(5GkQypat-B^NN;b8OwyJ)~E7b?EbN1=b?n~C_@F=lIyiB(k5Pp zl0Ru%Jh7}jK)D3HHR*MV8Yd*DEJ)7j{SQcmJp$CY8JKS zZc{!=CX@>nbw-D7WR>3*Y2Qo}pN&-_lM*TR4E@Zr9B*{sgf|3}2bK&(`UOd^5;A6g zPXC^xp$xH>vcq81897atI>trYg{HCT(UR4gyoU9tA=$?5kbf0@eBS$dXr2kP#EM^V z5?7}hFXfvPm*>`DL!UL@Fcpjsk=K6a{YVKdYz#0~iXJ2B-)S2G`D%(j3yusoR)c)m z9E_*a>Z*7V-(3tLRuFPEkZ?w%va6;LHSgJNTS6-sS8NK%n4MX0{8PTX#;NE`*4`_C z86dO-d|_A~?e&BQTJj$o!Usah+TU{1GP@d*H=vTle;`m%=kjs=gij#9o0-bfqyXpx zEx%|FKjw3io9yUEz*Svwf05NJ?Nr>RWef_8@~0dtR`)81iRorY^gr}jelz(aa0M~v znVruC8M27sc!)eE?mSH1m$K13sD?L?M&l-KUp}cKxxD z7sv;lJB_73EA65b6N^7M^MiGBUF43ez3YnY$9~!~M%W94Y{mtZ-7u$=J1x&09DSn_ zG1NKf5{;qT?Os)jU>6Nh(^|QE-O7I-=}iC9e$-5AJa8dFCC}5b59LOZ%8-FfQBiw; z=oF0%b*n{<4I1PY)TTC)=?56%gH^R#aurLMqUPF8i7ma4kwG1f+Q=M{nyp!eJF%2o zi?kK4MetfNIo@vzx(tx0*6O_mCr!|u&xMUj6uvwT-l7SC0u&l)`@>}jM0PU-rV2<6 z)Xc>j>TB z`ye#!nyY@zi=v%=*D4&&_U+b&=Ql5CMR{bYM>Z$lmAX62mT>?S)4DlrwV|nX}yf9g%3^~ z>_-;H5{B!!@p`=Ii22#5Kna$CTIFmkl%P=kHCAYySE0zLGsUjcRP$a0E8ky43yyjj zsbb*9PDiULdwfsE=Aembf^GbfuQ*UQHzU~-qHK=KrXMuaSk3i*rWImnnw7R9-W(bI z&QxUcla_COT%8!%L=d=Hd0)Wq-_Y2D?tqzdR3RWB=>BhPExNl3oCZuCDz6)>)lq%$ z1WS~?9%lQkpD$e+I+|_Lz?kK3dnU5UnZW_>YaF&$6vaiuNy<&UkWKe?JN=B zwyoCkd>SbS;9rosx77F-;xqmo5*(8;3wGS&dZnkrS9VDP~9=74a>8%9z}w2@CrB4oC9(Jq=>mGP%lYJqx@oyfG{j0D}hPQ1^a1>?{cq>D52dQm3r3}C>Vd7vDl1d zkKyidjj0}vU~@xT$RboImk1O>Ad-eygGlpoE8bUr!2dpN%96z?!kA*FWsCV9+qR#^rZBzN@El!-tm(?4IEJ4;T5r?61(4l~6ATEb3v@ty45(1XCXw2!o(k zA9(60+8KyAS3KB0Y1WZ&U%&~p-b{s>p*{AFws%}#I%A3=DNHlxJ2RRzc^J5mcPPTE zv84#Oz~mos5XC^^GXy3gu!1`b$D}tPH-PEb_ONp@gHq4raR)8iT|}Aie>>FE0FkVz zXud9r_p}9rpcN%Gjh;)lYZ(93`z0I{p77}yuMr|5F-+u(#ZwI#nHswrtvix>L+v%T z2uPlN8x)*+!z{?{=S>!({U?WUrEcAd%TVWQUmSz}kH);lB(GF*`jTy)EK0a0gsW)<`r2eV71CuJuGWo}%X4>_7D zwTC~<-y||jKYP#qu}^Eg;WkxsvM4P(uzB%bpMfhxLkd(ie1J4q+e%KUQuq4E@!_g} z2+(0CT$@rN5l&hNsYn$PYJEeggmgbpTwW+B@Ri?pOyEv~aG0p)q;dJSdiNO#Bp+*` zyU85`jQh`)rX4`O`!&2stPZ!R(nGxT&>*btPi0lEna|^U#b;6{9BHF`N20W{JkgLU z+_JuuQ_mh>|H~;O9SHO_KVQ}DZUHG3c?`>^Y@(JO{xFsoQmHiAz@ zJp)wfzPPgky{cVH-~AItM8f7E@M0;zX$bO`P?4A#o`?11HTBQ)#Sl_7mLM5uXHP6F zCV@-1S*hKbe#`#8E6!Gu(7UsW)1d}*oSEGXP4ZVx=_lrQFzWOiq0ihTAjCPO&jI`w z9tRHnv=z5Vg5y6LsomAy*#U|zMTDC!zSdKLiU&eTvuY%2#%~G_xYY}1A*h;i^tKmQ zR5D(gk9}aLzCejO=elGWsLHEm7w`yGj(9{QlTY zC*-%kdM|ZCF)8sSa;nh~%+HkN4Ga4tZYk`^>bSilB3n6#iU`WvnQMIp(D=p53-Z59 z9lAmfj9Fv*kf?i$3HwURQK5`8+p1kg&aj1SE8(3a)_G4dj*Q1hhf}$5B)JF$Rk=J5H^b!!4nZ&>^&u7 z<38ZD;yNdTOWg`0K-banfMq-+fC5F1#H>HSww=0>Xh#{WSidwSj^ZDrlO3WJPNh2CG%_g@`1x*bzfdGUyb~ouom{UP?G=gEZgF$hY35F&@wI)Ma z>?PH@l4lu*a}pP}^4q=h2(qu;Ll$#iDc}eFbo3d2_GNNF%S-;&xb-(U`*71=SvVcw z7mC}IOe>qk#T(;`j@h>et*&TX2{BX@4JNcroQX;L{%&-zIeK4{4M zN$y}1#o7lId1-aA&>kTeTU1ly@$m7qIU~@-qkisSoItI}5eA515gtnA z+&ixPD1wo1KF!BA{HI`0p(29w+ASD6 zgUo2kGm7_0q&U99}PDb{__RoTkNM3^MfIzVh0C{|MB=O5csvQH#FkH+H- zov8P=X;0?{2F0Mk!|KUZ)Dk+c%b_dPRS7zANgBZ~8CPh+%Z?%jn^YpU7(vQ-foMzK z7|U6d(1j4TFcw$m6#kmD!t=w^dNxfZihx*uk!VOy@s zbYt4Chw*JMH{Cf_MC*4U0TZ<@;g&I7UvINiaxWYSt#?;nwXsbagbXJ)84$@ zHAU7>V2776_pxdm7g&n@ZeO2Io2+4%DYN$9ZEJ6&3xvo(^I8|${x(ipCwVz1Ip52P zN#8$yO)U)YsYlD2Jvh^R{bTQdLrYZx*P(=PI&js&%hR~rqJ%d-gueZ`UbRgf*G&Tn zf6p1qEdzG}?uMr9fb+{`hjcy|RLy(c`Aucm6$%~s;T=o)HoganyP95@=w^ZV@#60z zxEKRtPva-`Sc*)ol8U#=dMPQv#HhNvMS{pzYfvCPQdZJoZY-BtEEPrlkub6pe+8l6 z^oWMbS=LBDstfH(JxLzJo3G+5L!A_fm##A{WU7^Epef@W0Zn2&t+3j#Z+!x#*QomKB0Ot6=HJ_siONWS*WTA4`2NeE5Knr$rR?DWBO7KpC z@4N>iIW<*;F^Tu&@0@LGN2!I*4Pe`o#Z<@K4ta4aTUR5)T{{WY^@g)UT43Z`QOTC$ zMpOTGn@c^hLNL4-tOYVN7^GM}?T>6sKwTGzUKetM(0@!@(eq^YbEagM5G3tn zysp+$?z5YzUYj@7PUzh@TlemJs)!CoH`TTfRmpGm;X60_m{5lA$~0?D`Lq_ylN%f+ zl5Ay8%bnJiT&E(+gm0oDar-JP-hil0Hfu-sxh?Tl-wxNS2Bpx93B95Es@hXOLF9+* zShzbI!%?jbnU(6uK~IPxUVZ!Xo*yJ+o&^!{+$|`q4hZL~6L(Y1ymV>0c}^UDa=fvy zi&Q|Pt5+^Trx!!YlXx#k{I6_OHd{o7{6uW5^t(#;D|5gSm92sv5%8!@Nfb7gwfgpzcKm4{`KtIn~+ZLBxnib-3o zG+>imgz8}nvW$a2ix}w#`STG^2ClG^BPQspz&xCrG_Judb$gzj6+AklwsYaG0QxhO z3CAfYf)Vd4%n~>bYd5+>WYfFosGIwI;mU!HEqM|d@euKwaB?`w{d_Vib{G!CS>cHd zkEo(TngpU@VPX+Ei!KtF!`F=3mp@A;xilD6xph(aiy4${Uc{6wX|R`oTPIb}X38W| zO+_<=lvpMtTJuDeStU@lGHW@h1vE-}=U#jM!NR=IC@F2D9e&CCgUgtpi_wR0UfX5Y zg|15=ELD(akfbk+R4YEZ(Mj;{LHEx&#}%#gQhs&&@%isfk27QS0cX*#;Q{B|H0MOF z6*86&oFD7Iz!7mflEl#T9L!rL#1#EjUv_iB!ZQ@59;M|+Nn3qXW=*FMvV-f)g5QJM zQ?o~Vmi1*!D3&^HC*$yGp^8pQhLv*YZ>35W)7`8$AHOy@;kJ7W`Sgzz+w=vGzPYU~ zenz4*pyRtiyXj}iH{siLhQ2XWnKPfe9j{VxeS4nGT=&kI1wsguCzpMc%rs89>-vyC{2ipvG> zDixLzjG64Rxpyj(WT?kIo>I_>KLz2dnURV=TLd_^AkfEsqWTd!AAaDu56Y(QtRS@X z*?~QiFleB7m!J(!JXquCvI~g|`m&dPqfA&y83!hM-(wqx#FG3U8TQh|ffJjGCt?|3 zshPSXzV36WXu$#q=$P~QNw|svB9=>^^$%1nZHJF4w;f5Ut@;mmcY9GF-!Y$4^5hh! z`o<&p>&$9SqznV$di<<_9I+x?n6IVxenAlL-uoWdW3;x{SGJuXs`;!pc%0D)7HU#Bq=J6cY@aPdJ>+1I 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%0Ae;(=c+1ruSh*D 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
    H{c#;_v-=OfQTCh6ntJM@GGGa!; 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 0: + warmup_lr = tf.to_float(global_step) / tf.to_float(FLAGS.warmup_steps) \ + * FLAGS.learning_rate + else: + warmup_lr = 0.0 + + # decay stage: decay the learning rate using the cosine schedule + decay_lr = tf.train.cosine_decay( + FLAGS.learning_rate, + global_step=global_step-FLAGS.warmup_steps, + decay_steps=FLAGS.train_steps-FLAGS.warmup_steps, + alpha=FLAGS.min_lr_ratio) + + # choose warmup or decay + learning_rate = tf.where(global_step < FLAGS.warmup_steps, + warmup_lr, decay_lr) + + # get the train op + optimizer = lamb.LAMBOptimizer(learning_rate=learning_rate) + if FLAGS.horovod: + optimizer = hvd.DistributedOptimizer(optimizer, sparse_as_dense=True) + grads_and_vars = optimizer.compute_gradients(loss/FLAGS.batch_chunk, all_vars) + grads, all_vars = zip(*grads_and_vars) + + accum_vars = [tf.Variable(tf.zeros_like(tv.initialized_value()), trainable=False) for tv in all_vars] + in_progress = tf.get_variable(name="in_progress", shape=[], dtype=tf.bool, trainable=False, + initializer=tf.zeros_initializer) + accum_ops = tf.cond(in_progress, + lambda: [accum_vars[i].assign_add(grad) for i, grad in enumerate(grads)], + lambda: [accum_vars[i].assign(grad) for i, grad in enumerate(grads)]) + with tf.control_dependencies(accum_ops + assign_mems): + acc_op = in_progress.assign(tf.ones_like(in_progress)) + final_accum_vars = [accum_vars[i] + gv for i,gv in enumerate(grads)] + acc_clipped, acc_gnorm = tf.clip_by_global_norm(final_accum_vars, FLAGS.clip) + clipped, gnorm = tf.clip_by_global_norm(grads, FLAGS.clip) + acc_train_op = optimizer.apply_gradients(list(zip(acc_clipped, all_vars)), global_step) + grads_and_vars = list(zip(clipped, all_vars)) + if FLAGS.jit_optimizer: + jit_scope = tf.contrib.compiler.jit.experimental_jit_scope + with jit_scope(): + train_op = optimizer.apply_gradients(grads_and_vars, global_step) + else: + train_op = optimizer.apply_gradients(grads_and_vars, global_step) + final_op = tf.group(train_op, assign_mems) + acc_final_op = tf.group(acc_train_op, assign_mems, in_progress.assign(tf.zeros_like(in_progress))) + ##### Training loop + saver = tf.train.Saver() + + gpu_options = tf.GPUOptions(allow_growth = True, visible_device_list = str(local_rank)) + with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, gpu_options = gpu_options)) as sess: + sess.run(tf.global_variables_initializer()) + if FLAGS.horovod: + sess.run(hvd.broadcast_global_variables(0)) + + accum = [acc_op, target_tokens] + fetches = [loss, global_step, target_tokens, learning_rate, final_op if FLAGS.batch_chunk == 1 else acc_final_op] + total_loss, prev_step, target_tokens = 0., -1, 0 + start_time = time.time() + while True: + for i in range(FLAGS.batch_chunk-1): + _,tt = sess.run(accum) + target_tokens += tt + fetched = sess.run(fetches) + + loss_np, curr_step, tt = fetched[:3] + total_loss += loss_np + target_tokens += tt + + if curr_step > 0 and curr_step % FLAGS.log_interval == 0: + curr_loss = total_loss / (curr_step - prev_step) + throughput = target_tokens * size / (time.time()-start_time) + meters['train_throughput'].update(throughput) + if rank == 0: + tf.logging.info("step {} | lr {:8.9f} " + "| loss {:.2f} | pplx {:>7.2f}, bpc {:>7.4f}, tok/s {:>6.0f}".format( + curr_step, fetched[-2], + curr_loss, math.exp(curr_loss), curr_loss / math.log(2), throughput)) + dllogger_data = { + 'lr': fetched[-1], + 'train_loss': curr_loss, + 'train_perplexity': math.exp(curr_loss), + 'train_throughput': throughput, + } + dllogger.log(step=int(curr_step), data=dllogger_data) + total_loss, prev_step, target_tokens = 0., curr_step, 0 + start_time = time.time() + + if curr_step > 0 and curr_step % FLAGS.save_steps == 0 and rank == 0: + save_path = os.path.join(FLAGS.model_dir, "model.ckpt") + saver.save(sess, save_path) + tf.logging.info("Model saved in path: {}".format(save_path)) + + if curr_step == FLAGS.train_steps: + break + if rank == 0: + tf.logging.info("Training throughput: {:>6.0f} tok/s".format(meters['train_throughput'].avg)) + summary = { + 'train_throughput': meters['train_throughput'].avg, + } + dllogger.log(step=tuple(), data=summary) + + + +def evaluate(n_token, cutoffs): + ##### Get input function and model function + eval_input_fn, eval_record_info = data_utils.get_input_fn( + record_info_dir=FLAGS.record_info_dir, + split=FLAGS.eval_split, + per_host_bsz=FLAGS.eval_batch_size, + tgt_len=FLAGS.tgt_len, + num_core_per_host=FLAGS.num_core_per_host, + num_hosts=1) + + meters = {} + warmup = 2 + meters['eval_throughput'] = AverageMeter(warmup=warmup) + meters['eval_latency'] = AverageMeter(warmup=warmup, keep=True) + + num_batch = eval_record_info["num_batch"] + if FLAGS.max_eval_batch > 0: + num_batch = FLAGS.max_eval_batch + tf.logging.info("num of batches {}".format(num_batch)) + + ##### Create computational graph + eval_set = eval_input_fn({ + "batch_size": FLAGS.eval_batch_size, + "data_dir": FLAGS.data_dir}) + + inputs, labels = eval_set.make_one_shot_iterator().get_next() + + bsz = FLAGS.eval_batch_size + + with tf.variable_scope(tf.get_variable_scope()): + mems = [tf.placeholder(tf.float32, + [FLAGS.mem_len, bsz, FLAGS.d_model]) + for _ in range(FLAGS.n_layer)] + + loss, new_mems = single_core_graph( + n_token=n_token, + cutoffs=cutoffs, + is_training=False, + inp=inputs, + tgt=labels, + mems=mems) + + target_tokens = tf.size(labels) + ##### Evaluation loop + mems_np = [np.zeros([FLAGS.mem_len, bsz, FLAGS.d_model], dtype=np.float32) + for layer in range(FLAGS.n_layer)] + + saver = tf.train.Saver() + + with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess: + sess.run(tf.global_variables_initializer()) + + if FLAGS.eval_ckpt_path is None: + eval_ckpt_path = tf.train.latest_checkpoint(FLAGS.model_dir) + else: + eval_ckpt_path = FLAGS.eval_ckpt_path + tf.logging.info("Evaluate {}".format(eval_ckpt_path)) + saver.restore(sess, eval_ckpt_path) + + fetches = [loss, new_mems, target_tokens] + + format_str = " >> processing batch {{:{0}d}}/{{:{0}d}}".format( + len(str(num_batch))) + + total_loss, total_cnt, target_tokens = 0, 0, 0 + start_time = time.time() + for step in range(num_batch): + feed_dict = {} + for m, m_np in zip(mems, mems_np): + feed_dict[m] = m_np + + fetched = sess.run(fetches, feed_dict=feed_dict) + + loss_np, mems_np, tt = fetched + target_tokens += tt + cnt_np = 1 + total_loss += loss_np * cnt_np + total_cnt += cnt_np + + elapsed = time.time()-start_time + throughput = target_tokens / elapsed + latency = elapsed*1000 + meters['eval_throughput'].update(throughput) + meters['eval_latency'].update(latency) + target_tokens = 0 + if (step+1) % (num_batch // 10) == 0: + tf.logging.info(format_str.format(step+1, num_batch)) + dllogger_data = { + 'eval_latency': latency, + 'eval_throughput': throughput, + } + dllogger.log(step=step+1, data=dllogger_data) + + + start_time = time.time() + avg_loss = total_loss / total_cnt + latency_data = np.array(meters['eval_latency'].vals) + tf.logging.info("Evaluating with: bs {}, math {} ".format(FLAGS.eval_batch_size, "fp16" if FLAGS.fp16 else "fp32")) + tf.logging.info("| loss {:.2f} | pplx {:>7.2f}, bpc {:>7.4f}, tok/s {:>6.1f}, ms/batch {:>4.2f}".format( + avg_loss, math.exp(avg_loss), avg_loss / math.log(2), meters['eval_throughput'].avg, meters['eval_latency'].avg)) + summary = { + 'eval_loss': avg_loss, + 'eval_ppl': math.exp(avg_loss), + 'eval_avg_throughput': meters['eval_throughput'].avg, + 'eval_avg_latency': meters['eval_latency'].avg, + } + for p in FLAGS.percentiles: + p = int(p) + tf.logging.info("Latency {}%: {:>4.2f} ms".format( + p, np.percentile(latency_data, p))) + summary[f'eval_{p}%_latency'] = np.percentile(latency_data, p) + dllogger.log(step=tuple(), data=summary) + + + +def main(unused_argv): + rank, local_rank, size = 0, 0, 1 + if FLAGS.horovod: + hvd.init() + rank = hvd.rank() + local_rank = hvd.local_rank() + size = hvd.size() + del unused_argv # Unused + + tf.logging.set_verbosity(tf.logging.INFO) + + if FLAGS.fp16: + os.environ["TF_ENABLE_AUTO_MIXED_PRECISION"] = "1" + else: + os.environ["TF_ENABLE_AUTO_MIXED_PRECISION"] = "0" + + # Get corpus info + corpus_info = data_utils.get_corpus_info(FLAGS.corpus_info_path) + n_token = corpus_info["vocab_size"] + cutoffs = corpus_info["cutoffs"][1:-1] + tf.logging.info("n_token {}".format(n_token)) + + setup_dllogger(enabled=True, filename=FLAGS.raport_file, rank=rank) + + if FLAGS.do_train: + train(n_token, cutoffs, rank, local_rank, size) + if FLAGS.do_eval: + evaluate(n_token, cutoffs) + + + +if __name__ == "__main__": + tf.app.run() diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/model.py b/TensorFlow/LanguageModeling/Transformer-XL/tf/model.py new file mode 100755 index 00000000..84127df7 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/model.py @@ -0,0 +1,539 @@ +import tensorflow as tf + + +def positional_embedding(pos_seq, inv_freq, bsz=None): + sinusoid_inp = tf.einsum('i,j->ij', pos_seq, inv_freq) + pos_emb = tf.concat([tf.sin(sinusoid_inp), tf.cos(sinusoid_inp)], -1) + if bsz is not None: + return tf.tile(pos_emb[:, None, :], [1, bsz, 1]) + else: + return pos_emb[:, None, :] + + +def positionwise_FF(inp, d_model, d_inner, dropout, kernel_initializer, + scope='ff', is_training=True): + output = inp + with tf.variable_scope(scope): + output = tf.layers.dense(inp, d_inner, activation=tf.nn.relu, + kernel_initializer=kernel_initializer, + name='layer_1') + output = tf.layers.dropout(output, dropout, training=is_training, + name='drop_1') + output = tf.layers.dense(output, d_model, + kernel_initializer=kernel_initializer, + name='layer_2') + output = tf.layers.dropout(output, dropout, training=is_training, + name='drop_2') + output = tf.contrib.layers.layer_norm(output + inp, begin_norm_axis=-1) + return output + + +def rel_shift(x): + x_size = tf.shape(x) + + x = tf.pad(x, [[0, 0], [0, 0], [0, 0], [1, 0]]) + x = tf.reshape(x, [x_size[0], x_size[1], x_size[3] + 1, x_size[2]]) + x = tf.slice(x, [0, 0, 1, 0], [-1, -1, -1, -1]) + x = tf.reshape(x, x_size) + + return x + + +def rel_multihead_attn(w, r, r_w_bias, r_r_bias, attn_mask, mems, d_model, + n_head, d_head, dropout, dropatt, is_training, + kernel_initializer, scope='rel_attn'): + scale = 1 / (d_head ** 0.5) + with tf.variable_scope(scope): + qlen = tf.shape(w)[0] + rlen = tf.shape(r)[0] + bsz = tf.shape(w)[1] + + cat = tf.concat([mems, w], + 0) if mems is not None and mems.shape.ndims > 1 else w + w_heads = tf.layers.dense(cat, 3 * n_head * d_head, use_bias=False, + kernel_initializer=kernel_initializer, name='qkv') + r_head_k = tf.layers.dense(r, n_head * d_head, use_bias=False, + kernel_initializer=kernel_initializer, name='r') + + w_head_q, w_head_k, w_head_v = tf.split(w_heads, 3, -1) + w_head_q = w_head_q[-qlen:] + + klen = tf.shape(w_head_k)[0] + + w_head_q = tf.reshape(w_head_q, [qlen, bsz, n_head, d_head]) + w_head_k = tf.reshape(w_head_k, [klen, bsz, n_head, d_head]) + w_head_v = tf.reshape(w_head_v, [klen, bsz, n_head, d_head]) + + r_head_k = tf.reshape(r_head_k, [rlen, n_head, d_head]) + + rw_head_q = w_head_q + r_w_bias + rr_head_q = w_head_q + r_r_bias + + AC = tf.einsum('ibnd,jbnd->bnij', rw_head_q, w_head_k) + BD = tf.einsum('ibnd,jnd->bnij', rr_head_q, r_head_k) + BD = rel_shift(BD) + + attn_score = (AC + BD) * scale + attn_mask_t = attn_mask[None, None, :, :] + attn_score = attn_score * (1 - attn_mask_t) - 1e30 * attn_mask_t + + attn_prob = tf.nn.softmax(attn_score, 3) + attn_prob = tf.layers.dropout(attn_prob, dropatt, training=is_training) + + attn_vec = tf.einsum('bnij,jbnd->ibnd', attn_prob, w_head_v) + size_t = tf.shape(attn_vec) + attn_vec = tf.reshape(attn_vec, [size_t[0], size_t[1], n_head * d_head]) + + attn_out = tf.layers.dense(attn_vec, d_model, use_bias=False, + kernel_initializer=kernel_initializer, name='o') + attn_out = tf.layers.dropout(attn_out, dropout, training=is_training) + + output = tf.contrib.layers.layer_norm(attn_out + w, begin_norm_axis=-1) + return output + + +def embedding_lookup(lookup_table, x, use_tpu=True): + if use_tpu: + n_token = tf.shape(lookup_table)[0] + one_hot_idx = tf.one_hot(x, n_token) + if one_hot_idx.shape.ndims == 2: + return tf.einsum('nd,in->id', lookup_table, one_hot_idx) + else: + return tf.einsum('nd,ibn->ibd', lookup_table, one_hot_idx) + else: + return tf.nn.embedding_lookup(lookup_table, x) + + +def mask_adaptive_embedding_lookup(x, n_token, d_embed, d_proj, cutoffs, initializer, + proj_initializer, div_val=1, + proj_same_dim=True, + scope='adaptive_embed', **kwargs): + emb_scale = d_proj ** 0.5 + with tf.variable_scope(scope): + if div_val == 1: + lookup_table = tf.get_variable('lookup_table', [n_token, d_embed], + initializer=initializer) + y = embedding_lookup(lookup_table, x, use_tpu=False) + if d_proj != d_embed: + proj_W = tf.get_variable('proj_W', [d_embed, d_proj], + initializer=proj_initializer) + y = tf.einsum('ibe,ed->ibd', y, proj_W) + else: + proj_W = None + ret_params = [lookup_table, proj_W] + else: + tables, projs = [], [] + cutoff_ends = [0] + cutoffs + [n_token] + x_size = tf.shape(x) + y = tf.zeros([x_size[0], x_size[1], d_proj]) + for i in range(len(cutoff_ends) - 1): + with tf.variable_scope('cutoff_{}'.format(i)): + l_idx, r_idx = cutoff_ends[i], cutoff_ends[i + 1] + mask = (x >= l_idx) & (x < r_idx) + cur_x = tf.boolean_mask(x, mask) - l_idx + cur_d_embed = d_embed // (div_val ** i) + lookup_table = tf.get_variable('lookup_table', + [r_idx - l_idx, cur_d_embed], + initializer=initializer) + cur_y = embedding_lookup(lookup_table, cur_x, use_tpu=False) + if d_proj == cur_d_embed and not proj_same_dim: + proj_W = None + else: + proj_W = tf.get_variable('proj_W', [cur_d_embed, d_proj], + initializer=proj_initializer) + cur_y = tf.einsum('id,de->ie', cur_y, proj_W) + mask_idx = tf.to_int64(tf.where(mask)) + y += tf.scatter_nd(mask_idx, cur_y, tf.to_int64(tf.shape(y))) + tables.append(lookup_table) + projs.append(proj_W) + ret_params = [tables, projs] + + y *= emb_scale + return y, ret_params + + +def mul_adaptive_embedding_lookup(x, n_token, d_embed, d_proj, cutoffs, initializer, + proj_initializer, div_val=1, perms=None, + proj_same_dim=True, + scope='adaptive_embed'): + """ + perms: If None, first compute W = W1 x W2 (projection for each bin), + and then compute X x W (embedding lookup). If not None, + use bin-based embedding lookup with max_bin_size defined by + the shape of perms. + """ + emb_scale = d_proj ** 0.5 + with tf.variable_scope(scope): + if div_val == 1: + lookup_table = tf.get_variable('lookup_table', [n_token, d_embed], + initializer=initializer) + y = embedding_lookup(lookup_table, x) + if d_proj != d_embed: + proj_W = tf.get_variable('proj_W', [d_embed, d_proj], + initializer=proj_initializer) + y = tf.einsum('ibe,ed->ibd', y, proj_W) + else: + proj_W = None + ret_params = [lookup_table, proj_W] + else: + tables, projs = [], [] + cutoff_ends = [0] + cutoffs + [n_token] + x_size = tf.shape(x) + if perms is None: + cat_lookup = [] + else: + cat_lookup = tf.zeros([x_size[0], x_size[1], d_proj]) + for i in range(len(cutoff_ends) - 1): + with tf.variable_scope('cutoff_{}'.format(i)): + l_idx, r_idx = cutoff_ends[i], cutoff_ends[i + 1] + cur_d_embed = d_embed // (div_val ** i) + lookup_table = tf.get_variable('lookup_table', + [r_idx - l_idx, cur_d_embed], + initializer=initializer) + if cur_d_embed == d_proj and not proj_same_dim: + proj_W = None + else: + proj_W = tf.get_variable('proj_W', [cur_d_embed, d_proj], + initializer=proj_initializer) + if perms is None: + cat_lookup.append(tf.einsum('ie,ed->id', lookup_table, proj_W)) + else: + # speed up the computation of the first bin + # also save some meory + if i == 0: + cur_y = embedding_lookup(lookup_table, tf.minimum(x, r_idx - 1)) + if proj_W is not None: + cur_y = tf.einsum('ibe,ed->ibd', cur_y, proj_W) + cur_y *= perms[i][:, :, None] + cat_lookup += cur_y + else: + cur_x = tf.einsum('ib,ibk->k', tf.to_float(x - l_idx), perms[i]) + cur_x = tf.to_int32(cur_x) + cur_y = embedding_lookup(lookup_table, cur_x) + if proj_W is not None: + cur_y = tf.einsum('ke,ed->kd', cur_y, proj_W) + cat_lookup += tf.einsum('kd,ibk->ibd', cur_y, perms[i]) + tables.append(lookup_table) + projs.append(proj_W) + if perms is None: + cat_lookup = tf.concat(cat_lookup, 0) + y = embedding_lookup(cat_lookup, x) + else: + y = cat_lookup + ret_params = [tables, projs] + + y *= emb_scale + return y, ret_params + + +def mask_adaptive_logsoftmax(hidden, target, n_token, d_embed, d_proj, cutoffs, + params, tie_projs, + initializer=None, proj_initializer=None, + div_val=1, scope='adaptive_softmax', + proj_same_dim=True, + return_mean=True, **kwargs): + def _logit(x, W, b, proj): + y = x + if proj is not None: + y = tf.einsum('ibd,ed->ibe', y, proj) + return tf.einsum('ibd,nd->ibn', y, W) + b + + params_W, params_projs = params[0], params[1] + + def _gather_logprob(logprob, target): + lp_size = tf.shape(logprob) + r = tf.range(lp_size[0]) + idx = tf.stack([r, target], 1) + return tf.gather_nd(logprob, idx) + + with tf.variable_scope(scope): + if len(cutoffs) == 0: + softmax_b = tf.get_variable('bias', [n_token], + initializer=tf.zeros_initializer()) + output = _logit(hidden, params_W, softmax_b, params_projs) + nll = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=target, + logits=output) + else: + cutoff_ends = [0] + cutoffs + [n_token] + nll = tf.zeros_like(target, dtype=tf.float32) + for i in range(len(cutoff_ends) - 1): + with tf.variable_scope('cutoff_{}'.format(i)): + l_idx, r_idx = cutoff_ends[i], cutoff_ends[i + 1] + mask = (target >= l_idx) & (target < r_idx) + mask_idx = tf.where(mask) + cur_target = tf.boolean_mask(target, mask) - l_idx + cur_d_embed = d_embed // (div_val ** i) + + if div_val == 1: + cur_W = params_W[l_idx: r_idx] + else: + cur_W = params_W[i] + cur_b = tf.get_variable('b', [r_idx - l_idx], + initializer=tf.zeros_initializer()) + if tie_projs[i]: + if div_val == 1: + cur_proj = params_projs + else: + cur_proj = params_projs[i] + else: + if (div_val == 1 or not proj_same_dim) and d_proj == cur_d_embed: + cur_proj = None + else: + cur_proj = tf.get_variable('proj', [cur_d_embed, d_proj], + initializer=proj_initializer) + if i == 0: + cluster_W = tf.get_variable('cluster_W', [len(cutoffs), d_embed], + initializer=tf.zeros_initializer()) + cluster_b = tf.get_variable('cluster_b', [len(cutoffs)], + initializer=tf.zeros_initializer()) + cur_W = tf.concat([cur_W, cluster_W], 0) + cur_b = tf.concat([cur_b, cluster_b], 0) + + head_logit = _logit(hidden, cur_W, cur_b, cur_proj) + head_logprob = tf.nn.log_softmax(head_logit) + cur_head_logprob = tf.boolean_mask(head_logprob, mask) + cur_logprob = _gather_logprob(cur_head_logprob, cur_target) + else: + cur_head_logprob = tf.boolean_mask(head_logprob, mask) + cur_hidden = tf.boolean_mask(hidden, mask) + tail_logit = tf.squeeze(_logit( + cur_hidden[None], cur_W, cur_b, cur_proj), 0) + tail_logprob = tf.nn.log_softmax(tail_logit) + cur_logprob = (cur_head_logprob[:, cutoff_ends[1] + i - 1] + + _gather_logprob(tail_logprob, cur_target)) + nll += tf.scatter_nd(mask_idx, -cur_logprob, + tf.to_int64(tf.shape(nll))) + if return_mean: + nll = tf.reduce_mean(nll) + return nll + + +def mul_adaptive_logsoftmax(hidden, target, n_token, d_embed, d_proj, cutoffs, + params, tie_projs, + initializer=None, proj_initializer=None, + div_val=1, perms=None, proj_same_dim=True, + scope='adaptive_softmax', + **kwargs): + def _logit(x, W, b, proj): + y = x + if x.shape.ndims == 3: + if proj is not None: + y = tf.einsum('ibd,ed->ibe', y, proj) + return tf.einsum('ibd,nd->ibn', y, W) + b + else: + if proj is not None: + y = tf.einsum('id,ed->ie', y, proj) + return tf.einsum('id,nd->in', y, W) + b + + params_W, params_projs = params[0], params[1] + + with tf.variable_scope(scope): + if len(cutoffs) == 0: + softmax_b = tf.get_variable('bias', [n_token], + initializer=tf.zeros_initializer()) + output = _logit(hidden, params_W, softmax_b, params_projs) + nll = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=target, + logits=output) + nll = tf.reduce_mean(nll) + else: + total_loss, total_cnt = 0, 0 + cutoff_ends = [0] + cutoffs + [n_token] + for i in range(len(cutoff_ends) - 1): + with tf.variable_scope('cutoff_{}'.format(i)): + l_idx, r_idx = cutoff_ends[i], cutoff_ends[i + 1] + + cur_d_embed = d_embed // (div_val ** i) + + if div_val == 1: + cur_W = params_W[l_idx: r_idx] + else: + cur_W = params_W[i] + cur_b = tf.get_variable('b', [r_idx - l_idx], + initializer=tf.zeros_initializer()) + if tie_projs[i]: + if div_val == 1: + cur_proj = params_projs + else: + cur_proj = params_projs[i] + else: + if (div_val == 1 or not proj_same_dim) and d_proj == cur_d_embed: + cur_proj = None + else: + cur_proj = tf.get_variable('proj', [cur_d_embed, d_proj], + initializer=proj_initializer) + + if i == 0: + cluster_W = tf.get_variable('cluster_W', [len(cutoffs), d_embed], + initializer=tf.zeros_initializer()) + cluster_b = tf.get_variable('cluster_b', [len(cutoffs)], + initializer=tf.zeros_initializer()) + cur_W = tf.concat([cur_W, cluster_W], 0) + cur_b = tf.concat([cur_b, cluster_b], 0) + + head_logit = _logit(hidden, cur_W, cur_b, cur_proj) + + head_target = kwargs.get("head_target") + head_nll = tf.nn.sparse_softmax_cross_entropy_with_logits( + labels=head_target, + logits=head_logit) + + masked_loss = head_nll * perms[i] + total_loss += tf.reduce_sum(masked_loss) + total_cnt += tf.reduce_sum(perms[i]) + else: + cur_head_nll = tf.einsum('ib,ibk->k', head_nll, perms[i]) + + cur_hidden = tf.einsum('ibd,ibk->kd', hidden, perms[i]) + tail_logit = _logit(cur_hidden, cur_W, cur_b, cur_proj) + + tail_target = tf.einsum('ib,ibk->k', tf.to_float(target - l_idx), + perms[i]) + tail_nll = tf.nn.sparse_softmax_cross_entropy_with_logits( + labels=tf.to_int32(tail_target), + logits=tail_logit) + + sum_nll = cur_head_nll + tail_nll + mask = tf.reduce_sum(perms[i], [0, 1]) + + masked_loss = sum_nll * mask + total_loss += tf.reduce_sum(masked_loss) + total_cnt += tf.reduce_sum(mask) + + nll = total_loss / total_cnt + + return nll + + +def _create_mask(qlen, mlen, same_length=False): + attn_mask = tf.ones([qlen, qlen]) + mask_u = tf.matrix_band_part(attn_mask, 0, -1) + mask_dia = tf.matrix_band_part(attn_mask, 0, 0) + attn_mask_pad = tf.zeros([qlen, mlen]) + ret = tf.concat([attn_mask_pad, mask_u - mask_dia], 1) + if same_length: + mask_l = tf.matrix_band_part(attn_mask, -1, 0) + ret = tf.concat([ret[:, :qlen] + mask_l - mask_dia, ret[:, qlen:]], 1) + return ret + +def _cache_mem(curr_out, prev_mem, mem_len=None): + if mem_len is None or prev_mem is None: + new_mem = curr_out + elif mem_len == 0: + return prev_mem + else: + new_mem = tf.concat([prev_mem, curr_out], 0)[- mem_len:] + + return tf.stop_gradient(new_mem) + + +def transformer(dec_inp, target, mems, n_token, n_layer, d_model, d_embed, + n_head, d_head, d_inner, dropout, dropatt, + initializer, is_training, proj_initializer=None, + mem_len=None, cutoffs=[], div_val=1, tie_projs=[], + same_length=False, clamp_len=-1, use_tpu=False, + input_perms=None, target_perms=None, head_target=None, + untie_r=False, proj_same_dim=True, + scope='transformer'): + """ + cutoffs: a list of python int. Cutoffs for adaptive softmax. + tie_projs: a list of python bools. Whether to tie the projections. + use_tpu: if True, use one_hot in embedding lookup and bin-based implementation + of adaptive softmax. + perms: a list of tensors. Each tensor should of size [len, bsz, bin_size]. + Only used in the adaptive setting. + """ + new_mems = [] + with tf.variable_scope(scope): + if untie_r: + r_w_bias = tf.get_variable('r_w_bias', [n_layer, n_head, d_head], + initializer=initializer) + r_r_bias = tf.get_variable('r_r_bias', [n_layer, n_head, d_head], + initializer=initializer) + else: + r_w_bias = tf.get_variable('r_w_bias', [n_head, d_head], + initializer=initializer) + r_r_bias = tf.get_variable('r_r_bias', [n_head, d_head], + initializer=initializer) + + qlen = tf.shape(dec_inp)[0] + mlen = tf.shape(mems[0])[0] if mems is not None else 0 + klen = mlen + qlen + + if proj_initializer is None: + proj_initializer = initializer + lookup_fn = (mul_adaptive_embedding_lookup if use_tpu else + mask_adaptive_embedding_lookup) + embeddings, shared_params = lookup_fn( + x=dec_inp, + n_token=n_token, + d_embed=d_embed, + d_proj=d_model, + cutoffs=cutoffs, + initializer=initializer, + proj_initializer=proj_initializer, + div_val= div_val, + perms=input_perms, + proj_same_dim=proj_same_dim) + + attn_mask = _create_mask(qlen, mlen, same_length) + + pos_seq = tf.range(klen - 1, -1, -1.0) + if clamp_len > 0: + pos_seq = tf.minimum(pos_seq, clamp_len) + inv_freq = 1 / (10000 ** (tf.range(0, d_model, 2.0) / d_model)) + pos_emb = positional_embedding(pos_seq, inv_freq) + + output = tf.layers.dropout(embeddings, dropout, training=is_training) + pos_emb = tf.layers.dropout(pos_emb, dropout, training=is_training) + + if mems is None: + mems = [None] * n_layer + + for i in range(n_layer): + # cache new mems + new_mems.append(_cache_mem(output, mems[i], mem_len)) + + with tf.variable_scope('layer_{}'.format(i)): + output = rel_multihead_attn( + w=output, + r=pos_emb, + r_w_bias=r_w_bias if not untie_r else r_w_bias[i], + r_r_bias=r_r_bias if not untie_r else r_r_bias[i], + attn_mask=attn_mask, + mems=mems[i], + d_model=d_model, + n_head=n_head, + d_head=d_head, + dropout=dropout, + dropatt=dropatt, + is_training=is_training, + kernel_initializer=initializer) + output = positionwise_FF( + inp=output, + d_model=d_model, + d_inner=d_inner, + dropout=dropout, + kernel_initializer=initializer, + is_training=is_training) + + output = tf.layers.dropout(output, dropout, training=is_training) + + logsoftmax_fn = (mul_adaptive_logsoftmax if use_tpu else + mask_adaptive_logsoftmax) + loss = logsoftmax_fn( + hidden=output, + target=target, + n_token=n_token, + d_embed=d_embed, + d_proj=d_model, + cutoffs=cutoffs, + params=shared_params, + tie_projs=tie_projs, + initializer=initializer, + proj_initializer=proj_initializer, + div_val=div_val, + perms=target_perms, + head_target=head_target, + proj_same_dim=proj_same_dim) + return loss, new_mems + diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/run_wt103_base.sh b/TensorFlow/LanguageModeling/Transformer-XL/tf/run_wt103_base.sh new file mode 100755 index 00000000..dd16c40e --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/run_wt103_base.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# Data +DATA_ROOT=../data/wikitext-103/ + +# Model +DIV_VAL=1 +N_LAYER=16 +D_MODEL=512 +D_EMBED=512 +N_HEAD=8 +D_HEAD=64 +D_INNER=2048 + +# Training +TGT_LEN=192 +MEM_LEN=192 + +NUM_CORE=${2:-"8"} + +# Testing +TEST_TGT_LEN=64 +TEST_MEM_LEN=640 +TEST_CLAMP_LEN=400 + +TEST_NUM_CORE=1 + + +if [[ $1 == 'train_data' ]]; then + python data_utils.py \ + --data_dir=${DATA_ROOT}/ \ + --dataset=wt103 \ + --tgt_len=${TGT_LEN} \ + --num_passes=2 \ + --use_tpu=False \ + --eval_batch_size=0 \ + ${@:2} +elif [[ $1 == 'test_data' ]]; then + python data_utils.py \ + --data_dir=${DATA_ROOT}/ \ + --dataset=enwik8 \ + --tgt_len=${TEST_TGT_LEN} \ + --num_passes=1 \ + --use_tpu=False \ + ${@:2} +elif [[ $1 == 'train' ]]; then + echo 'Run training...' + horovodrun -np ${NUM_CORE} -H localhost:${NUM_CORE} python main.py \ + --data_dir=${DATA_ROOT}/tfrecords \ + --record_info_dir=${DATA_ROOT}/tfrecords/ \ + --corpus_info_path=${DATA_ROOT}/corpus-info.json \ + --div_val=${DIV_VAL} \ + --untie_r=True \ + --proj_share_all_but_first=True \ + --n_layer=${N_LAYER} \ + --d_model=${D_MODEL} \ + --d_embed=${D_EMBED} \ + --n_head=${N_HEAD} \ + --d_head=${D_HEAD} \ + --d_inner=${D_INNER} \ + --dropout=0.1 \ + --dropatt=0.0 \ + --learning_rate=0.01 \ + --warmup_steps=1000 \ + --tgt_len=${TGT_LEN} \ + --mem_len=${MEM_LEN} \ + --num_core_per_host=${NUM_CORE} \ + ${@:3} +elif [[ $1 == 'eval' ]]; then + echo 'Run evaluation...' + python main.py \ + --data_dir=${DATA_ROOT}/tfrecords \ + --record_info_dir=${DATA_ROOT}/tfrecords/ \ + --corpus_info_path=${DATA_ROOT}/corpus-info.json \ + --div_val=${DIV_VAL} \ + --untie_r=True \ + --proj_share_all_but_first=True \ + --n_layer=${N_LAYER} \ + --d_model=${D_MODEL} \ + --d_embed=${D_EMBED} \ + --n_head=${N_HEAD} \ + --d_head=${D_HEAD} \ + --d_inner=${D_INNER} \ + --dropout=0.0 \ + --dropatt=0.0 \ + --tgt_len=${TEST_TGT_LEN} \ + --mem_len=${TEST_MEM_LEN} \ + --clamp_len=${TEST_CLAMP_LEN} \ + --same_length=True \ + --num_core_per_host=${TEST_NUM_CORE} \ + --do_train=False \ + --do_eval=True \ + --horovod=False \ + --eval_split=test \ + ${@:2} +else + echo 'unknown argment 1' +fi diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/build.sh b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/build.sh new file mode 100755 index 00000000..99d21cb0 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/build.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +docker build . --network=host --rm -t transformer-xl:latest diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/interactive.sh b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/interactive.sh new file mode 100755 index 00000000..94161a06 --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/docker/interactive.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Copyright (c) 2019 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nvidia-docker run --init -it --rm --network=host --ipc=host -v $PWD:/workspace/transformer-xl transformer-xl bash diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/inference_benchmark.sh b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/inference_benchmark.sh new file mode 100755 index 00000000..3041b24b --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/scripts/inference_benchmark.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Copyright (c) 2019 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +BATCH_SIZES=(1 2 4 8 16 32) +# "empty" MATH corresponds to fp32 +MATHS=("" "--fp16") + + +for (( j = 0; j < ${#BATCH_SIZES[@]}; j++ )); do + for (( k = 0; k < ${#MATHS[@]}; k++ )); do + echo batch size: ${BATCH_SIZES[j]} math: ${MATHS[k]} + taskset -c 0 bash run_wt103_base.sh eval \ + --eval_batch_size "${BATCH_SIZES[j]}" \ + "${MATHS[k]}" \ + "${@:1}" + done +done diff --git a/TensorFlow/LanguageModeling/Transformer-XL/tf/vocabulary.py b/TensorFlow/LanguageModeling/Transformer-XL/tf/vocabulary.py new file mode 100755 index 00000000..20c728fd --- /dev/null +++ b/TensorFlow/LanguageModeling/Transformer-XL/tf/vocabulary.py @@ -0,0 +1,170 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from collections import Counter, OrderedDict + +import numpy as np + +import tensorflow as tf + +from tensorflow.gfile import Open as open +from tensorflow.gfile import Exists as exists + +class Vocab(object): + def __init__(self, special=[], min_freq=0, max_size=None, lower_case=True, + delimiter=None, vocab_file=None): + self.counter = Counter() + self.special = special + self.min_freq = min_freq + self.max_size = max_size + self.lower_case = lower_case + self.delimiter = delimiter + self.vocab_file = vocab_file + + def tokenize(self, line, add_eos=False, add_double_eos=False): + line = line.strip() + # convert to lower case + if self.lower_case: + line = line.lower() + + # empty delimiter '' will evaluate False + if self.delimiter == '': + symbols = line + else: + symbols = line.split(self.delimiter) + + if add_double_eos: # lm1b + return [''] + symbols + [''] + elif add_eos: + return symbols + [''] + else: + return symbols + + def count_file(self, path, verbose=False, add_eos=False): + if verbose: print('counting file {} ...'.format(path)) + assert exists(path) + + sents = [] + with open(path, 'r') as f: + for idx, line in enumerate(f): + if verbose and idx > 0 and idx % 500000 == 0: + print(' line {}'.format(idx)) + symbols = self.tokenize(line, add_eos=add_eos) + self.counter.update(symbols) + sents.append(symbols) + + return sents + + def count_sents(self, sents, verbose=False): + """ + sents : a list of sentences, each a list of tokenized symbols + """ + if verbose: print('counting {} sents ...'.format(len(sents))) + for idx, symbols in enumerate(sents): + if verbose and idx > 0 and idx % 500000 == 0: + print(' line {}'.format(idx)) + self.counter.update(symbols) + + def _build_from_file(self, vocab_file): + self.idx2sym = [] + self.sym2idx = OrderedDict() + + with open(vocab_file, 'r') as f: + for line in f: + symb = line.strip().split()[0] + self.add_symbol(symb) + self.unk_idx = self.sym2idx[''] + + def build_vocab(self): + if self.vocab_file: + print('building vocab from {}'.format(self.vocab_file)) + self._build_from_file(self.vocab_file) + print('final vocab size {}'.format(len(self))) + else: + print('building vocab with min_freq={}, max_size={}'.format( + self.min_freq, self.max_size)) + self.idx2sym = [] + self.sym2idx = OrderedDict() + + for sym in self.special: + self.add_special(sym) + + for sym, cnt in self.counter.most_common(self.max_size): + if cnt < self.min_freq: break + self.add_symbol(sym) + + print('final vocab size {} from {} unique tokens'.format( + len(self), len(self.counter))) + + def encode_file(self, path, ordered=False, verbose=False, add_eos=True, + add_double_eos=False): + if verbose: print('encoding file {} ...'.format(path)) + assert exists(path) + encoded = [] + with open(path, 'r') as f: + for idx, line in enumerate(f): + if verbose and idx > 0 and idx % 500000 == 0: + print(' line {}'.format(idx)) + symbols = self.tokenize(line, add_eos=add_eos, + add_double_eos=add_double_eos) + encoded.append(self.convert_to_nparray(symbols)) + + if ordered: + encoded = np.concatenate(encoded) + + return encoded + + def encode_sents(self, sents, ordered=False, verbose=False): + if verbose: print('encoding {} sents ...'.format(len(sents))) + encoded = [] + for idx, symbols in enumerate(sents): + if verbose and idx > 0 and idx % 500000 == 0: + print(' line {}'.format(idx)) + encoded.append(self.convert_to_nparray(symbols)) + + if ordered: + encoded = np.concatenate(encoded) + + return encoded + + def add_special(self, sym): + if sym not in self.sym2idx: + self.idx2sym.append(sym) + self.sym2idx[sym] = len(self.idx2sym) - 1 + setattr(self, '{}_idx'.format(sym.strip('<>')), self.sym2idx[sym]) + + def add_symbol(self, sym): + if sym not in self.sym2idx: + self.idx2sym.append(sym) + self.sym2idx[sym] = len(self.idx2sym) - 1 + + def get_sym(self, idx): + assert 0 <= idx < len(self), 'Index {} out of range'.format(idx) + return self.idx2sym[idx] + + def get_idx(self, sym): + if sym in self.sym2idx: + return self.sym2idx[sym] + else: + assert hasattr(self, 'unk_idx') + return self.sym2idx.get(sym, self.unk_idx) + + def get_symbols(self, indices): + return [self.get_sym(idx) for idx in indices] + + def get_indices(self, symbols): + return [self.get_idx(sym) for sym in symbols] + + def convert_to_nparray(self, symbols): + nparray = np.array(self.get_indices(symbols), dtype=np.int64) + return nparray + + def convert_to_sent(self, indices, exclude=None): + if exclude is None: + return ' '.join([self.get_sym(idx) for idx in indices]) + else: + return ' '.join([self.get_sym(idx) for idx in indices if idx not in exclude]) + + def __len__(self): + return len(self.idx2sym) From 15807b36bf93c6f6bea490c0ff2fa71d57619bc3 Mon Sep 17 00:00:00 2001 From: Przemek Strzelczyk <41076710+nvpstr@users.noreply.github.com> Date: Wed, 8 Apr 2020 18:17:57 +0200 Subject: [PATCH 5/9] Adding DLRM/PyT --- PyTorch/Recommendation/DLRM/Dockerfile | 34 + PyTorch/Recommendation/DLRM/LICENSE | 201 +++++ PyTorch/Recommendation/DLRM/NOTICE | 3 + PyTorch/Recommendation/DLRM/README.md | 516 +++++++++++++ PyTorch/Recommendation/DLRM/dlrm/__init__.py | 0 .../Recommendation/DLRM/dlrm/data/__init__.py | 0 .../DLRM/dlrm/data/data_loader.py | 98 +++ .../DLRM/dlrm/data/synthetic_dataset.py | 42 + PyTorch/Recommendation/DLRM/dlrm/model.py | 224 ++++++ .../Recommendation/DLRM/dlrm/scripts/main.py | 510 ++++++++++++ .../Recommendation/DLRM/dlrm/scripts/utils.py | 278 +++++++ .../DLRM_Triton_inference_demo.ipynb | 726 ++++++++++++++++++ .../DLRM/notebooks/DLRM_architecture.png | Bin 0 -> 30028 bytes ...Pytorch_DLRM_pyt_train_and_inference.ipynb | 470 ++++++++++++ .../Recommendation/DLRM/notebooks/README.md | 69 ++ .../DLRM/notebooks/latency_vs_throughput.PNG | Bin 0 -> 31680 bytes .../DLRM/notebooks/recsys_inference.PNG | Bin 0 -> 104434 bytes .../DLRM/preproc/parquet_to_binary.py | 90 +++ .../DLRM/preproc/prepare_dataset.sh | 59 ++ .../Recommendation/DLRM/preproc/run_spark.sh | 166 ++++ .../DLRM/preproc/spark_data_utils.py | 507 ++++++++++++ .../DLRM/preproc/verify_criteo_downloaded.sh | 34 + PyTorch/Recommendation/DLRM/requirements.txt | 4 + PyTorch/Recommendation/DLRM/setup.py | 31 + PyTorch/Recommendation/DLRM/triton/Dockerfile | 31 + PyTorch/Recommendation/DLRM/triton/README.md | 278 +++++++ PyTorch/Recommendation/DLRM/triton/client.py | 133 ++++ .../Recommendation/DLRM/triton/deployer.py | 127 +++ .../DLRM/triton/deployer_lib.py | 540 +++++++++++++ .../DLRM/triton/img/dyn_batch_concurrency.png | Bin 0 -> 27992 bytes .../DLRM/triton/img/lat_vs_thr.png | Bin 0 -> 45456 bytes README.md | 4 +- 32 files changed, 5174 insertions(+), 1 deletion(-) create mode 100644 PyTorch/Recommendation/DLRM/Dockerfile create mode 100644 PyTorch/Recommendation/DLRM/LICENSE create mode 100644 PyTorch/Recommendation/DLRM/NOTICE create mode 100644 PyTorch/Recommendation/DLRM/README.md create mode 100644 PyTorch/Recommendation/DLRM/dlrm/__init__.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/data/__init__.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/data/data_loader.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/data/synthetic_dataset.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/model.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/scripts/main.py create mode 100644 PyTorch/Recommendation/DLRM/dlrm/scripts/utils.py create mode 100644 PyTorch/Recommendation/DLRM/notebooks/DLRM_Triton_inference_demo.ipynb create mode 100644 PyTorch/Recommendation/DLRM/notebooks/DLRM_architecture.png create mode 100644 PyTorch/Recommendation/DLRM/notebooks/Pytorch_DLRM_pyt_train_and_inference.ipynb create mode 100644 PyTorch/Recommendation/DLRM/notebooks/README.md create mode 100644 PyTorch/Recommendation/DLRM/notebooks/latency_vs_throughput.PNG create mode 100644 PyTorch/Recommendation/DLRM/notebooks/recsys_inference.PNG create mode 100644 PyTorch/Recommendation/DLRM/preproc/parquet_to_binary.py create mode 100755 PyTorch/Recommendation/DLRM/preproc/prepare_dataset.sh create mode 100755 PyTorch/Recommendation/DLRM/preproc/run_spark.sh create mode 100644 PyTorch/Recommendation/DLRM/preproc/spark_data_utils.py create mode 100755 PyTorch/Recommendation/DLRM/preproc/verify_criteo_downloaded.sh create mode 100644 PyTorch/Recommendation/DLRM/requirements.txt create mode 100644 PyTorch/Recommendation/DLRM/setup.py create mode 100644 PyTorch/Recommendation/DLRM/triton/Dockerfile create mode 100644 PyTorch/Recommendation/DLRM/triton/README.md create mode 100644 PyTorch/Recommendation/DLRM/triton/client.py create mode 100644 PyTorch/Recommendation/DLRM/triton/deployer.py create mode 100644 PyTorch/Recommendation/DLRM/triton/deployer_lib.py create mode 100644 PyTorch/Recommendation/DLRM/triton/img/dyn_batch_concurrency.png create mode 100644 PyTorch/Recommendation/DLRM/triton/img/lat_vs_thr.png diff --git a/PyTorch/Recommendation/DLRM/Dockerfile b/PyTorch/Recommendation/DLRM/Dockerfile new file mode 100644 index 00000000..10b91c2c --- /dev/null +++ b/PyTorch/Recommendation/DLRM/Dockerfile @@ -0,0 +1,34 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG FROM_IMAGE_NAME=nvcr.io/nvidia/pytorch:20.03-py3 +FROM ${FROM_IMAGE_NAME} + +RUN apt update && \ + apt install -y openjdk-8-jdk && \ + curl http://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz -o /opt/spark-2.4.5-bin-hadoop2.7.tgz && \ + tar zxf /opt/spark-2.4.5-bin-hadoop2.7.tgz -C /opt/ && \ + rm /opt/spark-2.4.5-bin-hadoop2.7.tgz + +ADD requirements.txt . +RUN pip install -r requirements.txt + +RUN pip uninstall -y apex && \ + git clone https://github.com/NVIDIA/apex && \ + cd apex && \ + pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ + +WORKDIR /workspace/dlrm + +COPY . . diff --git a/PyTorch/Recommendation/DLRM/LICENSE b/PyTorch/Recommendation/DLRM/LICENSE new file mode 100644 index 00000000..f49a4e16 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/PyTorch/Recommendation/DLRM/NOTICE b/PyTorch/Recommendation/DLRM/NOTICE new file mode 100644 index 00000000..bad9814d --- /dev/null +++ b/PyTorch/Recommendation/DLRM/NOTICE @@ -0,0 +1,3 @@ +DLRM for PyTorch + +This repository includes software from https://github.com/facebookresearch/dlrm licensed under the MIT License diff --git a/PyTorch/Recommendation/DLRM/README.md b/PyTorch/Recommendation/DLRM/README.md new file mode 100644 index 00000000..51671104 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/README.md @@ -0,0 +1,516 @@ + + +# DLRM For PyTorch + +This repository provides a script and recipe to train the Deep Learning Recommendation Model (DLRM) to achieve state-of-the-art accuracy and is tested and maintained by NVIDIA. + +## Table Of Contents + + + * [Table Of Contents](#table-of-contents) + * [Model overview](#model-overview) + * [Model architecture](#model-architecture) + * [Default configuration](#default-configuration) + * [Feature support matrix](#feature-support-matrix) + * [Features](#features) + * [Mixed precision training](#mixed-precision-training) + * [Enabling mixed precision](#enabling-mixed-precision) + * [Setup](#setup) + * [Requirements](#requirements) + * [Quick Start Guide](#quick-start-guide) + * [Advanced](#advanced) + * [Scripts and sample code](#scripts-and-sample-code) + * [Parameters](#parameters) + * [Command-line options](#command-line-options) + * [Getting the data](#getting-the-data) + * [Dataset guidelines](#dataset-guidelines) + * [Multi-dataset](#multi-dataset) + * [Preprocess with Spark](#preprocess-with-spark) + * [Training process](#training-process) + * [Inference process](#inference-process) + * [Performance](#performance) + * [Benchmarking](#benchmarking) + * [Training performance benchmark](#training-performance-benchmark) + * [Inference performance benchmark](#inference-performance-benchmark) + * [Results](#results) + * [Training accuracy results](#training-accuracy-results) + * [Training accuracy: NVIDIA DGX-1 (8x V100 32G)](#training-accuracy-nvidia-dgx-1-8x-v100-32g) + * [Training stability test](#training-stability-test) + * [Training performance results](#training-performance-results) + * [Training performance: NVIDIA DGX-1 (8x V100 32G)](#training-performance-nvidia-dgx-1-8x-v100-32g) + * [Release notes](#release-notes) + * [Changelog](#changelog) + * [Known issues](#known-issues) + +## Model overview + +The Deep Learning Recommendation Model (DLRM) is a recommendation model designed to +make use of both categorical and numerical inputs. It was first described in +[Deep Learning Recommendation Model for Personalization and Recommendation Systems](https://arxiv.org/abs/1906.00091). +This repository provides a reimplementation of the codebase provided originally [here](https://github.com/facebookresearch/dlrm). +The scripts provided enable you to train DLRM on the [Criteo Terabyte Dataset](https://labs.criteo.com/2013/12/download-terabyte-click-logs/). + +This model uses a slightly different preprocessing procedure than the one found in the original implementation. You can find a detailed description of the preprocessing steps in the [Dataset guidelines](#dataset-guidelines) section. + +Using DLRM you can train a high-quality general model for providing recommendations. + +This model is trained with mixed precision using Tensor Cores on NVIDIA Volta and Turing GPUs. Therefore, researchers can get results 1.77x faster than training without Tensor Cores while experiencing the benefits of mixed precision training. It is tested against each NGC monthly container release to ensure consistent accuracy and performance over time. + + + +### Model architecture + +DLRM accepts two types of features: categorical and numerical. For each categorical +feature, an embedding table is used to provide dense representation to each unique value. The dense features enter the model and are transformed by a +simple neural network referred to as "bottom MLP". This part of the network consists of a series +of linear layers with ReLU activations. The output of the bottom MLP and the embedding vectors +are then fed into the "dot interaction" operation. The output of "dot interaction" is then concatenated with the features resulting from bottom MLP and fed into the "top MLP" which is also a series of dense layers with activations. +The model outputs a single number which can be interpreted as a likelihood of a certain user clicking an ad. + + + +

    + +
    +Figure 1. The architecture of DLRM. +

    + +### Default configuration + +The following features were implemented in this model: +- general + - static loss scaling for Tensor Cores (mixed precision) training +- preprocessing + - dataset preprocessing using Spark + +### Feature support matrix + +The following features are supported by this model: + +| Feature | DLRM +|----------------------|-------------------------- +|Automatic mixed precision (AMP) | yes + +#### Features + +Automatic Mixed Precision (AMP) - enables mixed precision training without any changes to the code-base by performing automatic graph rewrites and loss scaling controlled by an environmental variable. + + +### Mixed precision training + +Mixed precision is the combined use of different numerical precisions in a computational method. [Mixed precision](https://arxiv.org/abs/1710.03740) training offers significant computational speedup by performing operations in half-precision format while storing minimal information in single-precision to retain as much information as possible in critical parts of the network. Since the introduction of [Tensor Cores](https://developer.nvidia.com/tensor-cores) in the Volta and Turing architecture, significant training speedups are experienced by switching to mixed precision -- up to 3x overall speedup on the most arithmetically intense model architectures. Using mixed precision training requires two steps: +1. Porting the model to use the FP16 data type where appropriate. +2. Adding loss scaling to preserve small gradient values. + +The ability to train deep learning networks with lower precision was introduced in the Pascal architecture and first supported in [CUDA 8](https://devblogs.nvidia.com/parallelforall/tag/fp16/) in the NVIDIA Deep Learning SDK. + +For information about: +- How to train using mixed precision, see the [Mixed Precision Training](https://arxiv.org/abs/1710.03740) paper and [Training With Mixed Precision](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html) documentation. +- Techniques used for mixed precision training, see the [Mixed-Precision Training of Deep Neural Networks](https://devblogs.nvidia.com/mixed-precision-training-deep-neural-networks/) blog. +- APEX tools for mixed precision training, see the [NVIDIA Apex: Tools for Easy Mixed-Precision Training in PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/). + +#### Enabling mixed precision + +Mixed precision training is enabled by default. To turn it off issue the `--nofp16` flag to the `main.py` script. + + +## Setup + +The following section lists the requirements for training DLRM. + +### Requirements + +This repository contains Dockerfile which extends the PyTorch NGC container and encapsulates some dependencies. Aside from these dependencies, ensure you have the following components: +- [NVIDIA Docker](https://github.com/NVIDIA/nvidia-docker) +- [PyTorch 20.03-py3+] NGC container +- [NVIDIA Volta](https://www.nvidia.com/en-us/data-center/volta-gpu-architecture/) or [Turing](https://www.nvidia.com/en-us/geforce/turing/) based GPU + +For more information about how to get started with NGC containers, see the following sections from the NVIDIA GPU Cloud Documentation and the Deep Learning Documentation: +- [Getting Started Using NVIDIA GPU Cloud](https://docs.nvidia.com/ngc/ngc-getting-started-guide/index.html) +- [Accessing And Pulling From The NGC Container Registry](https://docs.nvidia.com/deeplearning/frameworks/user-guide/index.html#accessing_registry) +- [Running PyTorch](https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/running.html#running) + +For those unable to use the PyTorch NGC container, to set up the required environment or create your own container, see the versioned [NVIDIA Container Support Matrix](https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html). + +## Quick Start Guide + +To train your model using mixed precision with Tensor Cores or using FP32, perform the following steps using +the default parameters of DLRM on the Criteo Terabyte dataset. For the specifics concerning training and inference, +see the [Advanced](#advanced) section. + +1. Clone the repository. +``` +git clone https://github.com/NVIDIA/DeepLearningExamples +cd DeepLearningExamples/PyTorch/Recommendation/DLRM +``` + +2. Build a DLRM Docker container +```bash +docker build . -t nvidia_dlrm_pyt +``` + +3. Start an interactive session in the NGC container to run preprocessing/training and inference. +The NCF PyTorch container can be launched with: +```bash +mkdir -p data +docker run --runtime=nvidia -it --rm --ipc=host -v ${PWD}/data:/data nvidia_dlrm_pyt bash +``` + +4. Download and preprocess the dataset. +You can download the data by following the instructions at: http://labs.criteo.com/2013/12/download-terabyte-click-logs/. +When you have successfully downloaded it, put it in the `/data/dlrm/criteo/` directory in the container (`$PWD/data/dlrm/criteo` in the host system). +You can then run the preprocessing with the commands below. Note +that this will require about 4TB of disk storage. +``` +cd preproc +./prepare_dataset.sh +cd - +``` + +5. Start training. +``` +python -m dlrm.scripts.main --mode train --dataset /data/dlrm/binary_dataset/ +``` + +6. Start validation/evaluation. +``` +python -m dlrm.scripts.main --mode test --dataset /data/dlrm/binary_dataset/ +``` + + +## Advanced + +The following sections provide greater details of the dataset, running training and inference, and the training results. + +### Scripts and sample code + +The `dlrm/scripts/main.py` script provides an entry point to most of the functionality. Using different command-line flags allows you to run training, validation and benchmark both training and inference on real or synthetic data. + +The `dlrm/model.py` file provides the definition of the DLRM neural network. + +Utilities connected to loading the data reside in the `data` directory. + + +### Parameters + +### Command-line options + +The `dlrm/scripts/main.py` script supports a number of command-line flags. You can get the descriptions of those by running `python -m dlrm.scripts.main --help`. Running this command will output: + +``` + USAGE: /workspace/dlrm/dlrm/scripts/main.py [flags] +flags: + +/workspace/dlrm/dlrm/scripts/main.py: + --auc_threshold: Stop the training after achieving this AUC + (a number) + --base_device: Device to run the majority of the model operations + (default: 'cuda') + --batch_size: Batch size used for training + (default: '32768') + (an integer) + --benchmark_warmup_steps: Number of initial iterations to exclude from + throughput measurements + (default: '0') + (an integer) + --bottom_mlp_sizes: Linear layer sizes for the bottom MLP + (default: '512,256,128') + (a comma separated list) + --dataset: Full path to binary dataset. Must include files such as: + train_data.bin, test_data.bin + --dataset_subset: Use only a subset of the training data. If None (default) + will use all of it. Must be either None, or a float in range [0,1] + (a number) + --decay_start_step: Optimization step after which to start decaying the + learning rate, if None will start decaying right after the warmup phase is + completed + (default: '64000') + (an integer) + --decay_steps: Polynomial learning rate decay steps. If equal to 0 will not do + any decaying + (default: '80000') + (an integer) + --embedding_dim: Dimensionality of embedding space for categorical features + (default: '128') + (an integer) + --epochs: Number of epochs to train for + (default: '1') + (an integer) + --[no]fp16: If True (default) the script will use Automatic Mixed Precision + (default: 'true') + --[no]hash_indices: If True the model will compute `index := index % table + size` to ensure that the indices match table sizes + (default: 'false') + --inference_benchmark_batch_sizes: Batch sizes for inference throughput and + latency measurements + (default: '1,64,4096') + (a comma separated list) + --inference_benchmark_steps: Number of steps for measuring inference latency + and throughput + (default: '200') + (an integer) + --interaction_op: Type of interaction operation to perform. Supported choices: + 'dot' or 'cat' + (default: 'dot') + --load_checkpoint_path: Path from which to load a checkpoint + --log_path: Destination for the log file with various results and statistics + (default: './log.json') + --loss_scale: Static loss scale for Mixed Precision Training + (default: '8192.0') + (a number) + --lr: Base learning rate + (default: '28.0') + (a number) + --max_steps: Stop training after doing this many optimization steps + (an integer) + --max_table_size: Maximum number of rows per embedding table, by default equal + to the number of unique values for each categorical variable + (an integer) + --mode: : Select task to be performed + (default: 'train') + --num_numerical_features: Number of numerical features in the dataset. + Defaults to 13 for the Criteo Terabyte Dataset + (default: '13') + (an integer) + --output_dir: Path where to save the checkpoints + (default: '/tmp') + --print_freq: Number of optimizations steps between printing training status + to stdout + (default: '200') + (an integer) + --save_checkpoint_path: Path to which to save the training checkpoints + --seed: Random seed + (default: '12345') + (an integer) + --[no]self_interaction: Set to True to use self-interaction + (default: 'false') + -shuffle,--[no]shuffle_batch_order: Read batch in train dataset by random + order + (default: 'false') + --[no]synthetic_dataset: Use synthetic instead of real data for benchmarking + purposes + (default: 'false') + --synthetic_dataset_table_sizes: Embedding table sizes to use with the + synthetic dataset + (a comma separated list) + --test_after: Don't test the model unless this many epochs has been completed + (default: '0.0') + (a number) + --test_batch_size: Batch size used for testing/validation + (default: '32768') + (an integer) + --test_freq: Number of optimization steps between validations. If None will + test after each epoch + (an integer) + --top_mlp_sizes: Linear layer sizes for the top MLP + (default: '1024,1024,512,256,1') + (a comma separated list) + --warmup_factor: Learning rate warmup factor. Must be a non-negative integer + (default: '0') + (an integer) + --warmup_steps: Number of warmup optimization steps + (default: '6400') + (an integer) +``` + + +The following example output is printed when running the model: +``` +Epoch:[0/1] [200/128028] eta: 1:28:44 loss: 0.1782 step_time: 0.041657 lr: 0.8794 +Epoch:[0/1] [400/128028] eta: 1:25:15 loss: 0.1403 step_time: 0.038504 lr: 1.7544 +Epoch:[0/1] [600/128028] eta: 1:23:56 loss: 0.1384 step_time: 0.038422 lr: 2.6294 +Epoch:[0/1] [800/128028] eta: 1:23:13 loss: 0.1370 step_time: 0.038421 lr: 3.5044 +Epoch:[0/1] [1000/128028] eta: 1:22:45 loss: 0.1362 step_time: 0.038464 lr: 4.3794 +Epoch:[0/1] [1200/128028] eta: 1:22:24 loss: 0.1346 step_time: 0.038455 lr: 5.2544 +Epoch:[0/1] [1400/128028] eta: 1:22:07 loss: 0.1339 step_time: 0.038459 lr: 6.1294 +Epoch:[0/1] [1600/128028] eta: 1:21:52 loss: 0.1320 step_time: 0.038481 lr: 7.0044 +Epoch:[0/1] [1800/128028] eta: 1:21:39 loss: 0.1315 step_time: 0.038482 lr: 7.8794 +Epoch:[0/1] [2000/128028] eta: 1:21:27 loss: 0.1304 step_time: 0.038466 lr: 8.7544 +Epoch:[0/1] [2200/128028] eta: 1:21:15 loss: 0.1305 step_time: 0.038430 lr: 9.6294 +``` + +### Getting the data + +This example uses the [Criteo Terabyte Dataset](https://labs.criteo.com/2013/12/download-terabyte-click-logs/). +The first 23 days are used as the training set. The last day is split in half. The first part is used as a validation set and the second one as a hold-out test set. + + +#### Dataset guidelines + +The preprocessing steps applied to the raw data include: +- Replacing the missing values with `0` +- Replacing the categorical values that exist fewer than 15 times with a special value +- Converting the hash values to consecutive integers +- Adding 2 to all the numerical features so that all of them are greater or equal to 1 +- Taking a natural logarithm of all numerical features + +#### Multi-dataset + +Our preprocessing scripts are designed for the Criteo Terabyte Dataset and should work with any other dataset with the same format. The data should be split into text files. Each line of those text files should contain a single training example. An example should consist of multiple fields separated by tabulators: +- The first field is the label – `1` for a positive example and `0` for negative. +- The next `N` tokens should contain the numerical features separated by tabs. +- The next `M` tokens should contain the hashed categorical features separated by tabs. + + +#### Preprocess with Spark + +The script `spark_data_utils.py` is a PySpark application, which is used to preprocess the Criteo Terabyte Dataset. In the Docker image, we have installed Spark 2.4.5, which will start a standalone cluster of Spark. The script `run-spark.sh` starts the Spark, then runs several PySpark jobs with `spark_data_utils.py`. +Generate the dictionary +Transform train dataset +Transform test dataset +Transform validation dataset + + Change the variables in the `run-spark.sh` script according to your environment. + Configure the paths. +``` +export SPARK_LOCAL_DIRS=/data/spark-tmp +export INPUT_PATH=/data/criteo +export OUTPUT_PATH=/data/output +``` +Note that the Spark job requires about 3TB disk space used for data shuffle. + +`SPARK_LOCAL_DIRS` is the path where Spark uses to write shuffle data. + +`INPUT_PATH` is the path of the Criteo Terabyte Dataset, including uncompressed files like day_0, day_1… + +`OUTPUT_PATH` is where the script writes the output data. It will generate below subdirectories of `models`, `train`, `test`, and `validation`. +The `model` is the dictionary folder. +The `train` is the train dataset transformed from day_0 to day_22. +The `test` is the test dataset transformed from the prior half of day_23. +The `validation` is the dataset transformed from the latter half of day_23. + +Configure the resources which Spark will use. +``` +export TOTAL_CORES=80 +export TOTAL_MEMORY=800 +``` +`TOTAL_CORES` is the total CPU cores you want Spark to use. + +`TOTAL_MEMORY` is the total memory Spark will use. + +Configure frequency limit. +``` +USE_FREQUENCY_LIMIT=15 +``` +The frequency limit is used to filter out the categorical values which appear less than n times in the whole dataset, and make them be 0. Change this variable to 1 to enable it. The default frequency limit is 15 in the script. You also can change the number as you want by changing the line of `OPTS="--frequency_limit 8"`. + +After the above configuration, you can run `run-spark.sh` if you already downloaded the dataset or run through `prepare_dataset.sh`, which includes verifying the downloaded dataset and running the job to preprocess the dataset. + +### Training process + +The main training script resides in `dlrm/scripts/main.py`. Once the training is completed, it stores the checkpoint +in the path specified by `--save_checkpoint_path` and a training log in `--log_path`. The quality of the predictions +generated by the model is measured by the [ROC AUC metric](https://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics). +The speed of training and inference is measured by throughput i.e., the number +of samples processed per second. We use mixed precision training with static loss scaling for the bottom and top MLPs while embedding tables are stored in FP32 format. + + +### Inference process + +This section describes inference with PyTorch in Python. If you're interested in inference using the Triton Inference Server, refer to `triton/README.md` file. + +Two modes for inference are currently supported by the `dlrm/scripts/main.py` script: + +1. Inference benchmark – this mode will measure and print out throughput and latency numbers for multiple batch sizes. You can activate it by setting the batch sizes to be tested with the `inference_benchmark_batch_sizes` command-line argument. It will use the default test dataset unless the `--synthetic_dataset` flag is passed. +2. Test-only – this mode can be used to run a full validation on a checkpoint to measure ROC AUC . You can enable it by passing the `--mode test` flag. + +## Performance + +### Benchmarking + +The following section shows how to run benchmarks measuring the model performance in training and inference modes. + +#### Training performance benchmark + +To benchmark the training performance on a specific batch size, run: + +``` +python -m dlrm.scripts.main --mode train --max_steps 500 --benchmark_warmup_steps 250 --dataset /data +``` + +You can also pass the `--synthetic_dataset` flag if you haven't yet downloaded the dataset. + +#### Inference performance benchmark + +To benchmark the inference performance on a specific batch size, run: + +``` +python -m dlrm.scripts.main --mode inference_benchmark --dataset /data +``` + +You can also pass the `--synthetic_dataset` flag if you haven't yet downloaded the dataset. + +### Results + +The following sections provide details on how we achieved our performance and accuracy in training and inference. + +#### Training accuracy results + + +##### Training accuracy: NVIDIA DGX-1 (8x V100 32G) + +Our results were obtained by running the `dlrm/scripts/main.py` script for one epoch as described in the Quick Start Guide training script in the DLRM Docker container on a single Tesla V100 32G GPU. + +| GPUs | Batch size / GPU | Accuracy (AUC) - FP32 | Accuracy (AUC) - mixed precision | Time to train - FP32 [hours] | Time to train - mixed precision [hours] | Time to train speedup (FP32 to mixed precision) +|----|----|----|----|---|---|---| +| 1 | 32k | 0.80362 | 0.80362 | 2.46 | 1.44 | 1.71 | + + + +##### Training stability test + +The table below shows the complete convergence data for 16 different random seeds. + +| Random seed | Mixed precision AUC | Single precision AUC | +|-------:|---------:|---------:| +| 8 | 0.803696 | 0.803669 | +| 9 | 0.803617 | 0.803574 | +| 10 | 0.803672 | 0.80367 | +| 11 | 0.803699 | 0.803683 | +| 12 | 0.803659 | 0.803724 | +| 13 | 0.803578 | 0.803565 | +| 14 | 0.803609 | 0.803613 | +| 15 | 0.803585 | 0.803615 | +| 16 | 0.803553 | 0.803583 | +| 17 | 0.803644 | 0.803688 | +| 18 | 0.803656 | 0.803609 | +| 19 | 0.803589 | 0.803635 | +| 20 | 0.803567 | 0.803611 | +| 21 | 0.803548 | 0.803487 | +| 22 | 0.803532 | 0.803591 | +| 23 | 0.803625 | 0.803601 | +| **mean** | **0.803614** | **0.803620** | + + + +#### Training performance results + + +##### Training performance: NVIDIA DGX-1 (8x V100 32G) + +Our results were obtained by running: +``` +python -m dlrm.scripts.main --mode train --max_steps 200 --benchmark_warmup_steps 50 --fp16 --dataset /data +``` + in the DLRM Docker container on NVIDIA DGX-1 with (8x V100 32G) GPUs. Performance numbers (in items/images per second) were averaged over 150 training steps. + +| GPUs | Batch size / GPU | Throughput - FP32 | Throughput - mixed precision | Throughput speedup (FP32 - mixed precision) | +|----|---|---|---|---| +| 1 | 32k | 494k | 875k | 1.773 | + + +We used throughput in items processed per second as the performance metric. + + +## Release notes + +### Changelog + +April 2020 +- Initial release + + +### Known issues + +There are no known issues with this model + diff --git a/PyTorch/Recommendation/DLRM/dlrm/__init__.py b/PyTorch/Recommendation/DLRM/dlrm/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/PyTorch/Recommendation/DLRM/dlrm/data/__init__.py b/PyTorch/Recommendation/DLRM/dlrm/data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/PyTorch/Recommendation/DLRM/dlrm/data/data_loader.py b/PyTorch/Recommendation/DLRM/dlrm/data/data_loader.py new file mode 100644 index 00000000..3c7c937a --- /dev/null +++ b/PyTorch/Recommendation/DLRM/dlrm/data/data_loader.py @@ -0,0 +1,98 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import math +import os +import time +import numpy as np +import argparse + +import torch +from torch.utils.data import Dataset + +class CriteoBinDataset(Dataset): + """Simple dataloader for a recommender system. Designed to work with a single binary file.""" + + def __init__(self, data_file, batch_size=1, subset=None, + numerical_features=13, categorical_features=26, + data_type='int32', online_shuffle=True): + self.data_type = np.__dict__[data_type] + bytes_per_feature = self.data_type().nbytes + + self.tad_fea = 1 + numerical_features + self.tot_fea = 1 + numerical_features + categorical_features + + self.batch_size = batch_size + self.bytes_per_entry = (bytes_per_feature * self.tot_fea * batch_size) + + self.num_entries = math.ceil(os.path.getsize(data_file) / self.bytes_per_entry) + + if subset is not None: + if subset <= 0 or subset > 1: + raise ValueError('Subset parameter must be in (0,1) range') + self.num_entries = self.num_entries * subset + + print('data file:', data_file, 'number of batches:', self.num_entries) + self.file = open(data_file, 'rb') + self.online_shuffle=online_shuffle + + def __len__(self): + return self.num_entries + + def __getitem__(self, idx): + if idx == 0: + self.file.seek(0, 0) + + if self.online_shuffle: + self.file.seek(idx * self.bytes_per_entry, 0) + + raw_data = self.file.read(self.bytes_per_entry) + array = np.frombuffer(raw_data, dtype=self.data_type).reshape(-1, self.tot_fea) + + # numerical features are encoded as float32 + numerical_features = array[:, 1:self.tad_fea].view(dtype=np.float32) + numerical_features = torch.from_numpy(numerical_features) + + + categorical_features = torch.from_numpy(array[:, self.tad_fea:]) + labels = torch.from_numpy(array[:, 0]) + + return numerical_features, categorical_features, labels + + def __del__(self): + self.file.close() + + +if __name__ == '__main__': + print('Dataloader benchmark') + + parser = argparse.ArgumentParser() + parser.add_argument('--file', type=str) + parser.add_argument('--batch_size', type=int) + parser.add_argument('--steps', type=int, default=1000) + args = parser.parse_args() + + dataset = CriteoBinDataset(data_file=args.file, batch_size=args.batch_size) + + begin = time.time() + for i in range(args.steps): + _ = dataset[i] + end = time.time() + + step_time = (end - begin) / args.steps + throughput = args.batch_size / step_time + + print(f'Mean step time: {step_time:.6f} [s]') + print(f'Mean throughput: {throughput:,.0f} [samples / s]') diff --git a/PyTorch/Recommendation/DLRM/dlrm/data/synthetic_dataset.py b/PyTorch/Recommendation/DLRM/dlrm/data/synthetic_dataset.py new file mode 100644 index 00000000..82b83fda --- /dev/null +++ b/PyTorch/Recommendation/DLRM/dlrm/data/synthetic_dataset.py @@ -0,0 +1,42 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch +import math +from torch.utils.data import Dataset + + +class SyntheticDataset(Dataset): + """Synthetic dataset version of criteo dataset.""" + + def __init__(self, num_entries, device='cuda', batch_size=1, dense_features=13, + categorical_feature_sizes=None): + # dataset. single target, 13 dense features, 26 sparse features + self.sparse_features = len(categorical_feature_sizes) + self.dense_features = dense_features + + self.tot_fea = 1 + dense_features + self.sparse_features + self.batch_size = batch_size + self.batches_per_epoch = math.ceil(num_entries / batch_size) + self.categorical_feature_sizes = categorical_feature_sizes + self.device = device + + self.tensor = torch.randint(low=0, high=2, size=(self.batch_size, self.tot_fea), device=self.device) + self.tensor = self.tensor.float() + + def __len__(self): + return self.batches_per_epoch + + def __getitem__(self, idx): + return self.tensor[:, 1:14], self.tensor[:, 14:], self.tensor[:, 0] diff --git a/PyTorch/Recommendation/DLRM/dlrm/model.py b/PyTorch/Recommendation/DLRM/dlrm/model.py new file mode 100644 index 00000000..5b9efe91 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/dlrm/model.py @@ -0,0 +1,224 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import copy +import json +import math + +from absl import logging + +import torch +from torch import nn +from typing import List + + +class Dlrm(nn.Module): + """Reimplement Facebook's DLRM model + + Original implementation is from https://github.com/facebookresearch/dlrm. + + """ + + def __init__(self, num_numerical_features, categorical_feature_sizes, bottom_mlp_sizes, top_mlp_sizes, + embedding_dim=32, interaction_op="dot", self_interaction=False, hash_indices=False, + base_device="cuda", sigmoid=False): + + # Running everything on gpu by default + self._base_device = base_device + self._embedding_device_map = [base_device for _ in range(len(categorical_feature_sizes))] + + super(Dlrm, self).__init__() + + if embedding_dim != bottom_mlp_sizes[-1]: + raise TypeError("The last bottom MLP layer must have same size as embedding.") + + self._embedding_dim = embedding_dim + self._interaction_op = interaction_op + self._self_interaction = self_interaction + self._hash_indices = hash_indices + self._categorical_feature_sizes = copy.copy(categorical_feature_sizes) + + # Interactions are among outputs of all the embedding tables and bottom MLP, total number of + # (num_embedding_tables + 1) vectors with size embdding_dim. ``dot`` product interaction computes dot product + # between any 2 vectors. ``cat`` interaction concatenate all the vectors together. + # Output of interaction will have shape [num_interactions, embdding_dim]. + self._num_interaction_inputs = len(categorical_feature_sizes) + 1 + if interaction_op == "dot": + if self_interaction: + raise NotImplementedError + num_interactions = (self._num_interaction_inputs * (self._num_interaction_inputs - 1)) // 2 + embedding_dim + elif interaction_op == "cat": + num_interactions = self._num_interaction_inputs * embedding_dim + else: + raise TypeError(F"Unknown interaction {interaction_op}.") + + self.embeddings = nn.ModuleList() + self._create_embeddings(self.embeddings, embedding_dim, categorical_feature_sizes) + + # Create bottom MLP + bottom_mlp_layers = [] + input_dims = num_numerical_features + for output_dims in bottom_mlp_sizes: + bottom_mlp_layers.append( + nn.Linear(input_dims, output_dims)) + bottom_mlp_layers.append(nn.ReLU(inplace=True)) + input_dims = output_dims + self.bottom_mlp = nn.Sequential(*bottom_mlp_layers) + + # Create Top MLP + top_mlp_layers = [] + + input_dims = num_interactions + if self._interaction_op == 'dot': + input_dims += 1 # pad 1 to be multiple of 8 + + for output_dims in top_mlp_sizes[:-1]: + top_mlp_layers.append(nn.Linear(input_dims, output_dims)) + top_mlp_layers.append(nn.ReLU(inplace=True)) + input_dims = output_dims + # last Linear layer uses sigmoid + top_mlp_layers.append(nn.Linear(input_dims, top_mlp_sizes[-1])) + if sigmoid: + top_mlp_layers.append(nn.Sigmoid()) + self.top_mlp = nn.Sequential(*top_mlp_layers) + + self._initialize_mlp_weights() + self._interaction_padding = torch.zeros(1, 1, dtype=torch.float32) + self.tril_indices = torch.tensor([[i for i in range(len(self.embeddings) + 1) + for j in range(i + int(self_interaction))], + [j for i in range(len(self.embeddings) + 1) + for j in range(i + int(self_interaction))]]) + + def _interaction(self, + bottom_mlp_output: torch.Tensor, + embedding_outputs: List[torch.Tensor], + batch_size: int) -> torch.Tensor: + """Interaction + + "dot" interaction is a bit tricky to implement and test. Break it out from forward so that it can be tested + independently. + + Args: + bottom_mlp_output (Tensor): + embedding_outputs (list): Sequence of tensors + batch_size (int): + """ + if self._interaction_padding is None: + self._interaction_padding = torch.zeros( + batch_size, 1, dtype=bottom_mlp_output.dtype, device=bottom_mlp_output.device) + concat = torch.cat([bottom_mlp_output] + embedding_outputs, dim=1) + if self._interaction_op == "dot" and not self._self_interaction: + concat = concat.view((-1, self._num_interaction_inputs, self._embedding_dim)) + interaction = torch.bmm(concat, torch.transpose(concat, 1, 2)) + interaction_flat = interaction[:, self.tril_indices[0], self.tril_indices[1]] + # concatenate dense features and interactions + interaction_padding = self._interaction_padding.expand(batch_size, 1).to(dtype=bottom_mlp_output.dtype) + interaction_output = torch.cat( + (bottom_mlp_output, interaction_flat, interaction_padding), dim=1) + elif self._interaction_op == "cat": + interaction_output = concat + else: + raise NotImplementedError + + return interaction_output + + def _initialize_mlp_weights(self): + """Initializing weights same as original DLRM""" + for module in self.modules(): + if isinstance(module, nn.Linear): + nn.init.normal_(module.weight.data, 0., math.sqrt(2. / (module.in_features + module.out_features))) + nn.init.normal_(module.bias.data, 0., math.sqrt(1. / module.out_features)) + + # Explicitly set weight corresponding to zero padded interaction output. They will + # stay 0 throughout the entire training. An assert can be added to the end of the training + # to prove it doesn't increase model capacity but just 0 paddings. + nn.init.zeros_(self.top_mlp[0].weight[:, -1].data) + + @property + def num_categorical_features(self): + return len(self._categorical_feature_sizes) + + def extra_repr(self): + s = (F"interaction_op={self._interaction_op}, self_interaction={self._self_interaction}, " + F"hash_indices={self._hash_indices}") + return s + # pylint:enable=missing-docstring + + @classmethod + def from_dict(cls, obj_dict, **kwargs): + """Create from json str""" + return cls(**obj_dict, **kwargs) + + def _create_embeddings(self, embeddings, embedding_dim, categorical_feature_sizes): + # Each embedding table has size [num_features, embedding_dim] + for i, num_features in enumerate(categorical_feature_sizes): + # Allocate directly on GPU is much faster than allocating on CPU then copying over + embedding_weight = torch.empty((num_features, embedding_dim), device=self._embedding_device_map[i]) + embedding = nn.Embedding.from_pretrained(embedding_weight, freeze=False, sparse=True) + + # Initializing embedding same as original DLRM + nn.init.uniform_( + embedding.weight.data, + -math.sqrt(1. / embedding.num_embeddings), + math.sqrt(1. / embedding.num_embeddings)) + + embeddings.append(embedding) + + def set_devices(self, base_device): + """Set devices to run the model + + Args: + base_device (string); + """ + self._base_device = base_device + self.bottom_mlp.to(base_device) + self.top_mlp.to(base_device) + self._interaction_padding = self._interaction_padding.to(base_device) + self._embedding_device_map = [base_device for _ in range(self.num_categorical_features)] + + for embedding_id, device in enumerate(self._embedding_device_map): + logging.info("Place embedding %d on device %s", embedding_id, device) + self.embeddings[embedding_id].to(device) + + def forward(self, numerical_input, categorical_inputs): + """ + + Args: + numerical_input (Tensor): with shape [batch_size, num_numerical_features] + categorical_inputs (Tensor): with shape [batch_size, num_categorical_features] + """ + batch_size = numerical_input.size()[0] + + # Put indices on the same device as corresponding embedding + device_indices = [] + for embedding_id, _ in enumerate(self.embeddings): + device_indices.append(categorical_inputs[:, embedding_id].to(self._embedding_device_map[embedding_id])) + + bottom_mlp_output = self.bottom_mlp(numerical_input) + + # embedding_outputs will be a list of (26 in the case of Criteo) fetched embeddings with shape + # [batch_size, embedding_size] + embedding_outputs = [] + for embedding_id, embedding in enumerate(self.embeddings): + if self._hash_indices: + device_indices[embedding_id] = device_indices[embedding_id] % embedding.num_embeddings + + embedding_outputs.append(embedding(device_indices[embedding_id]).to(self._base_device)) + + interaction_output = self._interaction(bottom_mlp_output, embedding_outputs, batch_size) + + top_mlp_output = self.top_mlp(interaction_output) + + return top_mlp_output diff --git a/PyTorch/Recommendation/DLRM/dlrm/scripts/main.py b/PyTorch/Recommendation/DLRM/dlrm/scripts/main.py new file mode 100644 index 00000000..fcbdcab7 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/dlrm/scripts/main.py @@ -0,0 +1,510 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import datetime +import os +import numpy as np +import json +from pprint import pprint +from time import time +from sklearn.metrics import roc_auc_score + +from absl import app +from absl import flags + +import dllogger + +import torch +from apex import amp + +from dlrm.data import data_loader +from dlrm.data.synthetic_dataset import SyntheticDataset +from dlrm.model import Dlrm + +import dlrm.scripts.utils as utils + +FLAGS = flags.FLAGS + +# Basic run settings +flags.DEFINE_enum("mode", default='train', enum_values=['train', 'test', 'inference_benchmark'], + help="Select task to be performed") + +flags.DEFINE_integer("seed", 12345, "Random seed") + +# Training schedule flags +flags.DEFINE_integer("batch_size", 32768, "Batch size used for training") +flags.DEFINE_integer("test_batch_size", 32768, "Batch size used for testing/validation") +flags.DEFINE_float("lr", 28, "Base learning rate") +flags.DEFINE_integer("epochs", 1, "Number of epochs to train for") +flags.DEFINE_integer("max_steps", None, "Stop training after doing this many optimization steps") + +flags.DEFINE_integer("warmup_factor", 0, "Learning rate warmup factor. Must be a non-negative integer") +flags.DEFINE_integer("warmup_steps", 6400, "Number of warmup optimization steps") +flags.DEFINE_integer("decay_steps", 80000, "Polynomial learning rate decay steps. If equal to 0 will not do any decaying") +flags.DEFINE_integer("decay_start_step", 64000, + "Optimization step after which to start decaying the learning rate, if None will start decaying right after the warmup phase is completed") + +# Model configuration +flags.DEFINE_integer("embedding_dim", 128, "Dimensionality of embedding space for categorical features") +flags.DEFINE_list("top_mlp_sizes", [1024, 1024, 512, 256, 1], "Linear layer sizes for the top MLP") +flags.DEFINE_list("bottom_mlp_sizes", [512, 256, 128], "Linear layer sizes for the bottom MLP") + +flags.DEFINE_string("interaction_op", "dot", + "Type of interaction operation to perform. Supported choices: 'dot' or 'cat'") +flags.DEFINE_boolean("self_interaction", False, "Set to True to use self-interaction") + +flags.DEFINE_string( + "dataset", None, + "Full path to binary dataset. Must include files such as: train_data.bin, test_data.bin") + +flags.DEFINE_boolean("synthetic_dataset", False, "Use synthetic instead of real data for benchmarking purposes") +flags.DEFINE_list("synthetic_dataset_table_sizes", default=','.join(26 * [str(10**5)]), + help="Embedding table sizes to use with the synthetic dataset") + +flags.DEFINE_boolean("shuffle_batch_order", False, "Read batch in train dataset by random order", short_name="shuffle") + +flags.DEFINE_integer("num_numerical_features", 13, + "Number of numerical features in the dataset. Defaults to 13 for the Criteo Terabyte Dataset") + +flags.DEFINE_integer("max_table_size", None, + "Maximum number of rows per embedding table, by default equal to the number of unique values for each categorical variable") +flags.DEFINE_boolean("hash_indices", False, + "If True the model will compute `index := index % table size` to ensure that the indices match table sizes") + +flags.DEFINE_float("dataset_subset", None, + "Use only a subset of the training data. If None (default) will use all of it. Must be either None, or a float in range [0,1]") + +# Checkpointing +flags.DEFINE_string("load_checkpoint_path", None, "Path from which to load a checkpoint") +flags.DEFINE_string("save_checkpoint_path", None, "Path to which to save the training checkpoints") + +# Saving and logging flags +flags.DEFINE_string("output_dir", "/tmp", "Path where to save the checkpoints") +flags.DEFINE_string("log_path", "./log.json", "Destination for the log file with various results and statistics") +flags.DEFINE_integer("test_freq", None, "Number of optimization steps between validations. If None will test after each epoch") +flags.DEFINE_float("test_after", 0, "Don't test the model unless this many epochs has been completed") +flags.DEFINE_integer("print_freq", 200, "Number of optimizations steps between printing training status to stdout") + +flags.DEFINE_integer("benchmark_warmup_steps", 0, "Number of initial iterations to exclude from throughput measurements") + +# Machine setting flags +flags.DEFINE_string("base_device", "cuda", "Device to run the majority of the model operations") +flags.DEFINE_boolean("fp16", True, "If True (default) the script will use Automatic Mixed Precision") +flags.DEFINE_float("loss_scale", 8192, "Static loss scale for Mixed Precision Training") + +# inference benchmark +flags.DEFINE_list("inference_benchmark_batch_sizes", default=[1, 64, 4096], + help="Batch sizes for inference throughput and latency measurements") +flags.DEFINE_integer("inference_benchmark_steps", 200, + "Number of steps for measuring inference latency and throughput") + +flags.DEFINE_float("auc_threshold", None, "Stop the training after achieving this AUC") + + +def validate_flags(): + if FLAGS.max_table_size is not None and not FLAGS.hash_indices: + raise ValueError('Hash indices must be True when setting a max_table_size') + + +def create_synthetic_datasets(train_batch_size, test_batch_size): + categorical_sizes = get_categorical_feature_sizes() + + dataset_train = SyntheticDataset(num_entries=4 * 10**9, + batch_size=train_batch_size, + dense_features=FLAGS.num_numerical_features, + categorical_feature_sizes=categorical_sizes) + + dataset_test = SyntheticDataset(num_entries=100 * 10**6, + batch_size=test_batch_size, + dense_features=FLAGS.num_numerical_features, + categorical_feature_sizes=categorical_sizes) + + return dataset_train, dataset_test + + +def create_real_datasets(train_batch_size, test_batch_size, online_shuffle=True): + train_dataset = os.path.join(FLAGS.dataset, "train_data.bin") + test_dataset = os.path.join(FLAGS.dataset, "test_data.bin") + categorical_sizes = get_categorical_feature_sizes() + + dataset_train = data_loader.CriteoBinDataset( + data_file=train_dataset, + batch_size=train_batch_size, subset=FLAGS.dataset_subset, + numerical_features=FLAGS.num_numerical_features, + categorical_features=len(categorical_sizes), + online_shuffle=online_shuffle + ) + + dataset_test = data_loader.CriteoBinDataset( + data_file=test_dataset, batch_size=test_batch_size, + numerical_features=FLAGS.num_numerical_features, + categorical_features=len(categorical_sizes), + online_shuffle = False + ) + + return dataset_train, dataset_test + +def get_dataloaders(train_batch_size, test_batch_size): + print("Creating data loaders") + if FLAGS.synthetic_dataset: + dataset_train, dataset_test = create_synthetic_datasets(train_batch_size, test_batch_size) + else: + dataset_train, dataset_test = create_real_datasets(train_batch_size, + test_batch_size, + online_shuffle=FLAGS.shuffle_batch_order) + + if FLAGS.shuffle_batch_order and not FLAGS.synthetic_dataset: + train_sampler = torch.utils.data.RandomSampler(dataset_train) + else: + train_sampler = None + data_loader_train = torch.utils.data.DataLoader( + dataset_train, batch_size=None, num_workers=0, pin_memory=False, sampler=train_sampler) + data_loader_test = torch.utils.data.DataLoader( + dataset_test, batch_size=None, num_workers=0, pin_memory=False) + + return data_loader_train, data_loader_test + + +def get_categorical_feature_sizes(): + if FLAGS.synthetic_dataset: + feature_sizes = [int(s) for s in FLAGS.synthetic_dataset_table_sizes] + return feature_sizes + + categorical_sizes_file = os.path.join(FLAGS.dataset, "model_size.json") + with open(categorical_sizes_file) as f: + categorical_sizes = json.load(f).values() + + categorical_sizes = list(categorical_sizes) + + # need to add 1 because the JSON file contains the max value not the count + categorical_sizes = [s + 1 for s in categorical_sizes] + + if FLAGS.max_table_size is None: + return categorical_sizes + + clipped_sizes = [min(s, FLAGS.max_table_size) for s in categorical_sizes] + return clipped_sizes + +def create_model(): + print("Creating model") + + model_config = { + 'top_mlp_sizes': FLAGS.top_mlp_sizes, + 'bottom_mlp_sizes': FLAGS.bottom_mlp_sizes, + 'embedding_dim': FLAGS.embedding_dim, + 'interaction_op': FLAGS.interaction_op, + 'self_interaction': FLAGS.self_interaction, + 'categorical_feature_sizes': get_categorical_feature_sizes(), + 'num_numerical_features': FLAGS.num_numerical_features, + 'hash_indices': FLAGS.hash_indices, + 'base_device': FLAGS.base_device, + } + + model = Dlrm.from_dict(model_config) + print(model) + + if FLAGS.load_checkpoint_path is not None: + model.load_state_dict(torch.load(FLAGS.load_checkpoint_path, map_location="cpu")) + + model.to(FLAGS.base_device) + + return model + + +def main(argv): + validate_flags() + torch.manual_seed(FLAGS.seed) + + utils.init_logging(log_path=FLAGS.log_path) + dllogger.log(data=FLAGS.flag_values_dict(), step='PARAMETER') + + data_loader_train, data_loader_test = get_dataloaders(train_batch_size=FLAGS.batch_size, + test_batch_size=FLAGS.test_batch_size) + + scaled_lr = FLAGS.lr / FLAGS.loss_scale if FLAGS.fp16 else FLAGS.lr + + model = create_model() + + optimizer = torch.optim.SGD(model.parameters(), lr=scaled_lr) + + if FLAGS.fp16 and FLAGS.mode == 'train': + (model.top_mlp, model.bottom_mlp), optimizer = amp.initialize([model.top_mlp, model.bottom_mlp], + optimizer, opt_level="O2", + loss_scale=1) + elif FLAGS.fp16: + model = model.half() + + loss_fn = torch.nn.BCEWithLogitsLoss(reduction="mean") + loss_fn = torch.jit.trace(loss_fn.forward, (torch.rand(FLAGS.batch_size, 1).cuda(), + torch.rand(FLAGS.batch_size, 1).cuda())) + + if FLAGS.mode == 'test': + loss, auc, test_step_time = evaluate(model, loss_fn, data_loader_test) + + avg_test_throughput = FLAGS.batch_size / test_step_time + results = {'auc': auc, + 'avg_inference_latency': test_step_time, + 'average_test_throughput': avg_test_throughput} + dllogger.log(data=results, step=tuple()) + + print(F"Finished testing. Test Loss {loss:.4f}, auc {auc:.4f}") + return + + if FLAGS.mode == 'inference_benchmark': + results = {} + + if FLAGS.fp16: + # can use pure FP16 for inference + model = model.half() + + for batch_size in FLAGS.inference_benchmark_batch_sizes: + batch_size = int(batch_size) + _, benchmark_data_loader = get_dataloaders(train_batch_size=batch_size, + test_batch_size=batch_size) + + latencies = inference_benchmark(model=model, data_loader=benchmark_data_loader, + num_batches=FLAGS.inference_benchmark_steps) + + print("All inference latencies: {}".format(latencies)) + + mean_latency = np.mean(latencies) + mean_inference_throughput = batch_size / mean_latency + subresult = {F'mean_inference_latency_batch_{batch_size}': mean_latency, + F'mean_inference_throughput_batch_{batch_size}': mean_inference_throughput} + results.update(subresult) + dllogger.log(data=results, step=tuple()) + + print(F"Finished inference benchmark.") + return + + if FLAGS.mode == 'train': + train(model, loss_fn, optimizer, data_loader_train, data_loader_test, scaled_lr) + + +def maybe_save_checkpoint(model, path): + if path is None: + return + + begin = time() + torch.save(model.state_dict(), path) + end = time() + print(f'Checkpoint saving took {end-begin:,.2f} [s]') + + +def train(model, loss_fn, optimizer, data_loader_train, data_loader_test, scaled_lr): + """Train and evaluate the model + + Args: + model (dlrm): + loss_fn (torch.nn.Module): Loss function + optimizer (torch.nn.optim): + data_loader_train (torch.utils.data.DataLoader): + data_loader_test (torch.utils.data.DataLoader): + """ + model.train() + base_device = FLAGS.base_device + print_freq = FLAGS.print_freq + steps_per_epoch = len(data_loader_train) + + test_freq = FLAGS.test_freq if FLAGS.test_freq is not None else steps_per_epoch + + metric_logger = utils.MetricLogger(delimiter=" ") + metric_logger.add_meter('loss', utils.SmoothedValue(window_size=print_freq, fmt='{avg:.4f}')) + metric_logger.add_meter('step_time', utils.SmoothedValue(window_size=print_freq, fmt='{avg:.6f}')) + metric_logger.add_meter('lr', utils.SmoothedValue(window_size=1, fmt='{value:.4f}')) + + timer = utils.StepTimer() + + best_auc = 0 + best_epoch = 0 + start_time = time() + for epoch in range(FLAGS.epochs): + + batch_iter = iter(data_loader_train) + for step in range(len(data_loader_train)): + timer.click() + + global_step = steps_per_epoch * epoch + step + + numerical_features, categorical_features, click = next(batch_iter) + + categorical_features = categorical_features.to(base_device).to(torch.long) + numerical_features = numerical_features.to(base_device) + click = click.to(base_device).to(torch.float32) + + utils.lr_step(optimizer, num_warmup_iter=FLAGS.warmup_steps, current_step=global_step + 1, + base_lr=scaled_lr, warmup_factor=FLAGS.warmup_factor, + decay_steps=FLAGS.decay_steps, decay_start_step=FLAGS.decay_start_step) + + if FLAGS.max_steps and global_step > FLAGS.max_steps: + print(F"Reached max global steps of {FLAGS.max_steps}. Stopping.") + break + + output = model(numerical_features, categorical_features).squeeze().float() + + loss = loss_fn(output, click.squeeze()) + + optimizer.zero_grad() + if FLAGS.fp16: + loss *= FLAGS.loss_scale + with amp.scale_loss(loss, optimizer) as scaled_loss: + scaled_loss.backward() + else: + loss.backward() + optimizer.step() + + loss_value = loss.item() + + if timer.measured is None: + # first iteration, no step time etc. to print + continue + + + if global_step < FLAGS.benchmark_warmup_steps: + metric_logger.update( + loss=loss_value, lr=optimizer.param_groups[0]["lr"]) + else: + unscale_factor = FLAGS.loss_scale if FLAGS.fp16 else 1 + metric_logger.update( + loss=loss_value / unscale_factor, step_time=timer.measured, + lr=optimizer.param_groups[0]["lr"] * unscale_factor + ) + + if step % print_freq == 0 and step > 0: + if global_step < FLAGS.benchmark_warmup_steps: + print(F'Warming up, step [{global_step}/{FLAGS.benchmark_warmup_steps}]') + continue + + eta_str = datetime.timedelta(seconds=int(metric_logger.step_time.global_avg * (steps_per_epoch - step))) + metric_logger.print( + header=F"Epoch:[{epoch}/{FLAGS.epochs}] [{step}/{steps_per_epoch}] eta: {eta_str}") + + if (global_step + 1) % test_freq == 0 and global_step > 0 and global_step / steps_per_epoch >= FLAGS.test_after: + loss, auc, test_step_time = evaluate(model, loss_fn, data_loader_test) + print(F"Epoch {epoch} step {step}. Test loss {loss:.5f}, auc {auc:.6f}") + + if auc > best_auc: + best_auc = auc + best_epoch = epoch + ((step + 1) / steps_per_epoch) + maybe_save_checkpoint(model, FLAGS.save_checkpoint_path) + + if FLAGS.auc_threshold and auc >= FLAGS.auc_threshold: + stop_time = time() + run_time_s = int(stop_time - start_time) + print(F"Hit target accuracy AUC {FLAGS.auc_threshold} at epoch " + F"{global_step/steps_per_epoch:.2f} in {run_time_s}s. " + F"Average speed {global_step * FLAGS.batch_size / run_time_s:.1f} records/s.") + return + + avg_throughput = FLAGS.batch_size / metric_logger.step_time.avg + + results = {'best_auc' : best_auc, + 'best_epoch' : best_epoch, + 'average_train_throughput' : avg_throughput} + + if 'test_step_time' in locals(): + avg_test_throughput = FLAGS.test_batch_size / test_step_time + results['average_test_throughput'] = avg_test_throughput + + dllogger.log(data=results, step=tuple()) + + +def evaluate(model, loss_fn, data_loader): + """Test dlrm model + + Args: + model (dlrm): + loss_fn (torch.nn.Module): Loss function + data_loader (torch.utils.data.DataLoader): + """ + model.eval() + base_device = FLAGS.base_device + print_freq = FLAGS.print_freq + + steps_per_epoch = len(data_loader) + metric_logger = utils.MetricLogger(delimiter=" ") + metric_logger.add_meter('loss', utils.SmoothedValue(window_size=print_freq, fmt='{avg:.4f}')) + metric_logger.add_meter('step_time', utils.SmoothedValue(window_size=print_freq, fmt='{avg:.4f}')) + with torch.no_grad(): + y_true = [] + y_score = [] + + timer = utils.StepTimer() + batch_iter = iter(data_loader) + + timer.click() + for step in range(len(data_loader)): + numerical_features, categorical_features, click = next(batch_iter) + + categorical_features = categorical_features.to(base_device).to(torch.long) + numerical_features = numerical_features.to(base_device) + click = click.to(torch.float32).to(base_device) + + if FLAGS.fp16: + numerical_features = numerical_features.half() + + output = model(numerical_features, categorical_features).squeeze() + + loss = loss_fn(output, click) + y_true.append(click) + y_score.append(output) + + loss_value = loss.item() + timer.click() + + if timer.measured is not None: + metric_logger.update(loss=loss_value, step_time=timer.measured) + if step % print_freq == 0 and step > 0: + metric_logger.print(header=F"Test: [{step}/{steps_per_epoch}]") + + y_true = torch.cat(y_true).cpu().numpy() + y_score = torch.cat(y_score).cpu().numpy() + auc = roc_auc_score(y_true=y_true, y_score=y_score) + + model.train() + + return metric_logger.loss.global_avg, auc, metric_logger.step_time.avg + + +def inference_benchmark(model, data_loader, num_batches=100): + model.eval() + base_device = FLAGS.base_device + latencies = [] + + with torch.no_grad(): + for step, (numerical_features, categorical_features, click) in enumerate(data_loader): + if step > num_batches: + break + + step_start_time = time() + + numerical_features = numerical_features.to(base_device) + if FLAGS.fp16: + numerical_features = numerical_features.half() + + categorical_features = categorical_features.to(device=base_device, dtype=torch.int64) + + _ = model(numerical_features, categorical_features).squeeze() + torch.cuda.synchronize() + step_time = time() - step_start_time + + if step >= FLAGS.benchmark_warmup_steps: + latencies.append(step_time) + return latencies + + +if __name__ == '__main__': + app.run(main) + diff --git a/PyTorch/Recommendation/DLRM/dlrm/scripts/utils.py b/PyTorch/Recommendation/DLRM/dlrm/scripts/utils.py new file mode 100644 index 00000000..c073b9d8 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/dlrm/scripts/utils.py @@ -0,0 +1,278 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from collections import defaultdict, deque +import datetime +import time +import torch +import torch.distributed as dist + +import errno +import os + +import dllogger + + +class SmoothedValue(object): + """Track a series of values and provide access to smoothed values over a + window or the global series average. + """ + + def __init__(self, window_size=20, fmt=None): + if fmt is None: + fmt = "{median:.4f} ({global_avg:.4f})" + self.deque = deque(maxlen=window_size) + self.total = 0.0 + self.count = 0 + self.fmt = fmt + + def update(self, value, n=1): + self.deque.append(value) + self.count += n + self.total += value * n + + def synchronize_between_processes(self): + """ + Warning: does not synchronize the deque! + """ + if not is_dist_avail_and_initialized(): + return + t = torch.tensor([self.count, self.total], dtype=torch.float64, device='cuda') + dist.barrier() + dist.all_reduce(t) + t = t.tolist() + self.count = int(t[0]) + self.total = t[1] + + @property + def median(self): + d = torch.tensor(list(self.deque)) + return d.median().item() + + @property + def avg(self): + d = torch.tensor(list(self.deque), dtype=torch.float32) + return d.mean().item() + + @property + def global_avg(self): + return self.total / self.count + + @property + def max(self): + return max(self.deque) + + @property + def value(self): + return self.deque[-1] + + def __str__(self): + return self.fmt.format( + median=self.median, + avg=self.avg, + global_avg=self.global_avg, + max=self.max, + value=self.value) + + +class MetricLogger(object): + def __init__(self, delimiter="\t"): + self.meters = defaultdict(SmoothedValue) + self.delimiter = delimiter + + def update(self, **kwargs): + for k, v in kwargs.items(): + if isinstance(v, torch.Tensor): + v = v.item() + assert isinstance(v, (float, int)) + self.meters[k].update(v) + + def __getattr__(self, attr): + if attr in self.meters: + return self.meters[attr] + if attr in self.__dict__: + return self.__dict__[attr] + raise AttributeError("'{}' object has no attribute '{}'".format( + type(self).__name__, attr)) + + def __str__(self): + loss_str = [] + for name, meter in self.meters.items(): + loss_str.append( + "{}: {}".format(name, str(meter)) + ) + return self.delimiter.join(loss_str) + + def synchronize_between_processes(self): + for meter in self.meters.values(): + meter.synchronize_between_processes() + + def add_meter(self, name, meter): + self.meters[name] = meter + + def print(self, header=None): + if not header: + header = '' + print_str = header + for name, meter in self.meters.items(): + print_str += F" {name}: {meter}" + print(print_str) + + +def accuracy(output, target, topk=(1,)): + """Computes the accuracy over the k top predictions for the specified values of k""" + with torch.no_grad(): + maxk = max(topk) + batch_size = target.size(0) + + _, pred = output.topk(maxk, 1, True, True) + pred = pred.t() + correct = pred.eq(target[None]) + + res = [] + for k in topk: + correct_k = correct[:k].flatten().sum(dtype=torch.float32) + res.append(correct_k * (100.0 / batch_size)) + return res + + +def lr_step(optim, num_warmup_iter, current_step, base_lr, warmup_factor, decay_steps=0, decay_start_step=None): + if decay_start_step is None: + decay_start_step = num_warmup_iter + + new_lr = base_lr + + if decay_start_step < num_warmup_iter: + raise ValueError('Learning rate warmup must finish before decay starts') + + if current_step <= num_warmup_iter: + warmup_step = base_lr / (num_warmup_iter * (2 ** warmup_factor)) + new_lr = base_lr - (num_warmup_iter - current_step) * warmup_step + + steps_since_decay_start = current_step - decay_start_step + if decay_steps != 0 and steps_since_decay_start > 0: + already_decayed_steps = min(steps_since_decay_start, decay_steps) + new_lr = base_lr * ((decay_steps - already_decayed_steps) / decay_steps) ** 2 + min_lr = 0.0000001 + new_lr = max(min_lr, new_lr) + + for param_group in optim.param_groups: + param_group['lr'] = new_lr + + + +def mkdir(path): + try: + os.makedirs(path) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + +def setup_for_distributed(is_master): + """ + This function disables printing when not in master process + """ + import builtins as __builtin__ + builtin_print = __builtin__.print + + def print(*args, **kwargs): + force = kwargs.pop('force', False) + if is_master or force: + builtin_print(*args, **kwargs) + + __builtin__.print = print + + +def is_dist_avail_and_initialized(): + if not dist.is_available(): + return False + if not dist.is_initialized(): + return False + return True + + +def get_world_size(): + if not is_dist_avail_and_initialized(): + return 1 + return dist.get_world_size() + + +def get_rank(): + if not is_dist_avail_and_initialized(): + return 0 + return dist.get_rank() + + +def is_main_process(): + return get_rank() == 0 + + +def init_logging(log_path): + json_backend = dllogger.JSONStreamBackend(verbosity=dllogger.Verbosity.VERBOSE, + filename=log_path) + stdout_backend = dllogger.StdOutBackend(verbosity=dllogger.Verbosity.VERBOSE) + + stdout_backend._metadata['best_auc'].update({'format': '0:.5f'}) + stdout_backend._metadata['best_epoch'].update({'format': '0:.2f'}) + stdout_backend._metadata['average_train_throughput'].update({'format': ':.2e'}) + stdout_backend._metadata['average_test_throughput'].update({'format': ':.2e'}) + + dllogger.init(backends=[json_backend, stdout_backend]) + + +def save_on_master(*args, **kwargs): + if is_main_process(): + torch.save(*args, **kwargs) + + +def init_distributed_mode(args): + if 'RANK' in os.environ and 'WORLD_SIZE' in os.environ: + args.rank = int(os.environ["RANK"]) + args.world_size = int(os.environ['WORLD_SIZE']) + args.gpu = int(os.environ['LOCAL_RANK']) + elif 'SLURM_PROCID' in os.environ: + args.rank = int(os.environ['SLURM_PROCID']) + args.gpu = args.rank % torch.cuda.device_count() + elif hasattr(args, "rank"): + pass + else: + print('Not using distributed mode') + args.distributed = False + return + + args.distributed = True + + torch.cuda.set_device(args.gpu) + args.dist_backend = 'nccl' + print('| distributed init (rank {}): {}'.format( + args.rank, args.dist_url), flush=True) + torch.distributed.init_process_group(backend=args.dist_backend, init_method=args.dist_url, + world_size=args.world_size, rank=args.rank) + setup_for_distributed(args.rank == 0) + + +class StepTimer(): + def __init__(self): + self._previous = None + self._new = None + self.measured = None + + def click(self): + self._previous = self._new + self._new = time.time() + + if self._previous is not None: + self.measured = self._new - self._previous \ No newline at end of file diff --git a/PyTorch/Recommendation/DLRM/notebooks/DLRM_Triton_inference_demo.ipynb b/PyTorch/Recommendation/DLRM/notebooks/DLRM_Triton_inference_demo.ipynb new file mode 100644 index 00000000..a22c81cc --- /dev/null +++ b/PyTorch/Recommendation/DLRM/notebooks/DLRM_Triton_inference_demo.ipynb @@ -0,0 +1,726 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Gwt7z7qdmTbW" + }, + "outputs": [], + "source": [ + "# Copyright 2019 NVIDIA Corporation. All Rights Reserved.\n", + "#\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "#\n", + "# http://www.apache.org/licenses/LICENSE-2.0\n", + "#\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License.\n", + "# ==============================================================================" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "i4NKCp2VmTbn" + }, + "source": [ + "\n", + "\n", + "# DLRM Triton Inference Demo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "fW0OKDzvmTbt" + }, + "source": [ + "## Overview\n", + "\n", + "Recomendation system (RecSys) inference involves determining an ordered list of items with which the query user will most likely interact with. For very large commercial databases with millions to hundreds of millions of items to choose from (like advertisements, apps), usually an item retrieval procedure is carried out to reduce the number of items to a more manageable quantity, e.g. a few hundreds to a few thousands. The methods include computationally-light algorithms such as approximate neighborhood search, random forest and filtering based on user preferences. From thereon, a deep learning based RecSys is invoked to re-rank the items and those with the highest scores are presented to the users. This process is well demonstrated in the Google AppStore recommendation system in Figure 1. \n", + "\n", + "![DLRM_model](recsys_inference.PNG)\n", + "\n", + "Figure 1: Google’s app recommendation process. [Source](https://arxiv.org/pdf/1606.07792.pdf).\n", + "\n", + "As we can see, for each query user, the number of user-item pairs to score can be as large as a few thousands. This places an extremely heavy duty on RecSys inference server, which must handle high throughput to serve many users concurrently yet at low latency to satisfy stringent latency thresholds of online commerce engines.\n", + "\n", + "The NVIDIA Triton Inference Server [9] provides a cloud inferencing solution optimized for NVIDIA GPUs. The server provides an inference service via an HTTP or GRPC endpoint, allowing remote clients to request inferencing for any model being managed by the server. Triton automatically manages and makes use of all the available GPUs.\n", + "\n", + "We will next see how to prepare the DLRM model for inference with the Triton inference server and see how Triton is up to the task. \n", + "\n", + "### Learning objectives\n", + "\n", + "This notebook demonstrates the steps for preparing a pre-trained DLRM model for deployment and inference with the NVIDIA [Triton inference server](https://github.com/NVIDIA/triton-inference-server). \n", + "\n", + "## Content\n", + "1. [Requirements](#1)\n", + "1. [Prepare model for inference](#2)\n", + "1. [Start the Triton inference server](#3)\n", + "1. [Testing server with the performance client](#4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "aDFrE4eqmTbv" + }, + "source": [ + "
    \n", + "## 1. Requirements\n", + "\n", + "\n", + "### 1.1 Docker container\n", + "The most convenient way to make use of the NVIDIA DLRM model is via a docker container, which provides a self-contained, isolated and re-producible environment for all experiments.\n", + "\n", + "First, clone the repository:\n", + "\n", + "```\n", + "git clone https://github.com/NVIDIA/DeepLearningExamples\n", + "cd DeepLearningExamples/PyTorch/Recommendation/DLRM\n", + "```\n", + "\n", + "To execute this notebook, first build the following inference container:\n", + "\n", + "```\n", + "docker build -t dlrm-inference . -f triton/Dockerfile\n", + "```\n", + "\n", + "Start in interactive docker session with:\n", + "\n", + "```\n", + "docker run -it --rm --gpus device=0 --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --net=host -v :/models -v :/repository :/data dlrm-inference bash\n", + "```\n", + "where:\n", + "\n", + "- PATH_TO_SAVED_MODEL: directory containing the trained DLRM models with `.pt` extension.\n", + " \n", + "- PATH_TO_EXPORT_MODEL: directory which will contain the converted model to be used with the NVIDIA Triton inference server.\n", + "\n", + "- PATH_TO_PREPROCESSED_DATA: path to the preprocessed Criteo Terabyte dataset containing 3 binary data files: `test_data.bin`, `train_data.bin` and `val_data.bin` and a JSON `file model_size.json` totalling ~650GB.\n", + "\n", + "Within the docker interactive bash session, start Jupyter with\n", + "\n", + "```\n", + "export PYTHONPATH=/workspace/dlrm\n", + "jupyter notebook --ip 0.0.0.0 --port 8888\n", + "```\n", + "\n", + "Then open the Jupyter GUI interface on your host machine at http://localhost:8888. Within the container, this demo notebook is located at `/workspace/dlrm/notebooks`.\n", + "\n", + "### 1.2 Hardware\n", + "This notebook can be executed on any CUDA-enabled NVIDIA GPU with at least 24GB of GPU memory, although for efficient mixed precision inference, a [Tensor Core NVIDIA GPU](https://www.nvidia.com/en-us/data-center/tensorcore/) is desired (Volta, Turing or newer architectures). " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "k7RLEcKhmTb0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sat Apr 4 00:55:05 2020 \r\n", + "+-----------------------------------------------------------------------------+\r\n", + "| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |\r\n", + "|-------------------------------+----------------------+----------------------+\r\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\r\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\r\n", + "|===============================+======================+======================|\r\n", + "| 0 Tesla V100-PCIE... On | 00000000:1A:00.0 Off | 0 |\r\n", + "| N/A 30C P0 37W / 250W | 19757MiB / 32510MiB | 0% Default |\r\n", + "+-------------------------------+----------------------+----------------------+\r\n", + " \r\n", + "+-----------------------------------------------------------------------------+\r\n", + "| Processes: GPU Memory |\r\n", + "| GPU PID Type Process name Usage |\r\n", + "|=============================================================================|\r\n", + "+-----------------------------------------------------------------------------+\r\n" + ] + } + ], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HqSUGePjmTb9" + }, + "source": [ + "\n", + "## 2. Prepare model for inference\n", + "\n", + "We first convert model to a format accepted by the NVIDIA Triton inference server. Triton can accept TorchScript, ONNX amongst other formats. \n", + "\n", + "To deploy model into Triton compatible format, we provide the deployer.py [script](../triton/deployer.py).\n", + "\n", + "### TorchScript\n", + "TorchScript is a way to create serializable and optimizable models from PyTorch code. Any TorchScript program can be saved from a Python process and loaded in a process where there is no Python dependency.\n", + "\n", + "We provide two options to convert models to TorchScript:\n", + "- --ts-script convert to torchscript using torch.jit.script\n", + "- --ts-trace convert to torchscript using torch.jit.trace\n", + "\n", + "\n", + "In the conversion below, we assume:\n", + "\n", + "- The trained model is stored at /models/dlrm_model_fp16.pt\n", + "\n", + "- The maximum batchsize that Triton will handle is 65536.\n", + "\n", + "- The processed dataset directory is /data which contain a `model_size.json` file." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "deploying model dlrm-ts-script-16 in format pytorch_libtorch\n", + "done\n" + ] + } + ], + "source": [ + "%%bash\n", + "python ../triton/deployer.py \\\n", + "--ts-script \\\n", + "--triton-model-name dlrm-ts-script-16 \\\n", + "--triton-max-batch-size 65536 \\\n", + "--save-dir /repository \\\n", + "-- --model_checkpoint /models/dlrm_model_fp16.pt \\\n", + "--fp16 \\\n", + "--batch_size 4096 \\\n", + "--num_numerical_features 13 \\\n", + "--embedding_dim 128 \\\n", + "--top_mlp_sizes 1024 1024 512 256 1 \\\n", + "--bottom_mlp_sizes 512 256 128 \\\n", + "--interaction_op dot \\\n", + "--hash_indices \\\n", + "--dataset /data \\\n", + "--dump_perf_data ./perfdata" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "EQAIszkxmTcT" + }, + "source": [ + "### ONNX\n", + "\n", + "[ONNX](https://onnx.ai/) is an open format built to represent machine learning models. ONNX defines a common set of operators - the building blocks of machine learning and deep learning models - and a common file format to enable AI developers to use models with a variety of frameworks, tools, runtimes, and compilers.\n", + "\n", + "Conversion of DLRM pre-trained PyTorch model to ONNX model can be done with:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "deploying model dlrm-onnx-16 in format onnxruntime_onnx\n", + "done\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.6/site-packages/torch/onnx/symbolic_opset9.py:2044: UserWarning: Exporting aten::index operator of advanced indexing in opset 11 is achieved by combination of multiple ONNX operators, including Reshape, Transpose, Concat, and Gather. If indices include negative values, the exported graph will produce incorrect results.\n", + " \"If indices include negative values, the exported graph will produce incorrect results.\")\n", + "/opt/conda/lib/python3.6/site-packages/torch/onnx/utils.py:915: UserWarning: No names were found for specified dynamic axes of provided input.Automatically generated names will be applied to each dynamic axes of input input__0\n", + " 'Automatically generated names will be applied to each dynamic axes of input {}'.format(key))\n", + "/opt/conda/lib/python3.6/site-packages/torch/onnx/utils.py:915: UserWarning: No names were found for specified dynamic axes of provided input.Automatically generated names will be applied to each dynamic axes of input input__1\n", + " 'Automatically generated names will be applied to each dynamic axes of input {}'.format(key))\n", + "/opt/conda/lib/python3.6/site-packages/torch/onnx/utils.py:915: UserWarning: No names were found for specified dynamic axes of provided input.Automatically generated names will be applied to each dynamic axes of input output__0\n", + " 'Automatically generated names will be applied to each dynamic axes of input {}'.format(key))\n" + ] + } + ], + "source": [ + "%%bash\n", + "python ../triton/deployer.py \\\n", + "--onnx \\\n", + "--triton-model-name dlrm-onnx-16 \\\n", + "--triton-max-batch-size 4096 \\\n", + "--save-dir /repository \\\n", + "-- --model_checkpoint /models/dlrm_model_fp16.pt \\\n", + "--fp16 \\\n", + "--batch_size 4096 \\\n", + "--num_numerical_features 13 \\\n", + "--embedding_dim 128 \\\n", + "--top_mlp_sizes 1024 1024 512 256 1 \\\n", + "--bottom_mlp_sizes 512 256 128 \\\n", + "--interaction_op dot \\\n", + "--hash_indices \\\n", + "--dataset /data \\\n", + "--dump_perf_data ./perfdata" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "RL8d9IwzmTcV" + }, + "source": [ + "\n", + "## 3. Start the Triton inference server" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "o6wayGf1mTcX" + }, + "source": [ + "*Note: this step must be done outside the of the current docker container.*\n", + "\n", + "Open a bash window on the **host machine** and execute the following commands:\n", + "\n", + "```\n", + "docker pull nvcr.io/nvidia/tensorrtserver:20.03-py3\n", + "docker run -d --rm --gpus device=0 --ipc=host --network=host -p 8000:8000 -p 8001:8001 -p 8002:8002 -v :/repository nvcr.io/nvidia/tensorrtserver:20.03-py3 trtserver --model-store=/repository --log-verbose=1 --model-control-mode=explicit\n", + "```\n", + "\n", + "where:\n", + "\n", + "- PATH_TO_MODEL_REPOSITORY: directory on the host machine containing the converted models in section 2 above. \n", + "\n", + "Note that each DLRM model will require ~19GB of GPU memory.\n", + "\n", + "Within the `/models` directory on the inference server, the structure should look similar to the below:\n", + "\n", + "```\n", + "/models\n", + "`-- dlrm-onnx-16\n", + " |-- 1\n", + " | `-- model.onnx\n", + " | |-- bottom_mlp.0.weight\n", + " | |-- bottom_mlp.2.weight\n", + " | |-- bottom_mlp.4.weight\n", + " | |-- embeddings.0.weight\n", + " | |-- embeddings.1.weight\n", + " | |-- embeddings.10.weight\n", + " | |-- embeddings.11.weight\n", + " | |-- embeddings.12.weight\n", + " | |-- embeddings.13.weight\n", + " | |-- embeddings.14.weight\n", + " | |-- embeddings.15.weight\n", + " | |-- embeddings.17.weight\n", + " | |-- embeddings.18.weight\n", + " | |-- embeddings.19.weight\n", + " | |-- embeddings.2.weight\n", + " | |-- embeddings.20.weight\n", + " | |-- embeddings.21.weight\n", + " | |-- embeddings.22.weight\n", + " | |-- embeddings.23.weight\n", + " | |-- embeddings.24.weight\n", + " | |-- embeddings.25.weight\n", + " | |-- embeddings.3.weight\n", + " | |-- embeddings.4.weight\n", + " | |-- embeddings.6.weight\n", + " | |-- embeddings.7.weight\n", + " | |-- embeddings.8.weight\n", + " | |-- embeddings.9.weight\n", + " | |-- model.onnx\n", + " | |-- top_mlp.0.weight\n", + " | |-- top_mlp.2.weight\n", + " | |-- top_mlp.4.weight\n", + " | `-- top_mlp.6.weight\n", + " `-- config.pbtxt\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "X959LYwjmTcw" + }, + "source": [ + "\n", + "## 4. Testing server with the performance client\n", + "\n", + "After model deployment has completed, we can test the deployed model against the Criteo test dataset. \n", + "\n", + "Note: This requires mounting the Criteo test data to, e.g. `/data/test_data.bin`. Within the dataset directory, there must also be a `model_size.json` file." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Process is terminated.\n" + ] + } + ], + "source": [ + "%%bash\n", + "python ../triton/client.py \\\n", + "--triton-server-url localhost:8000 \\\n", + "--protocol HTTP \\\n", + "--triton-model-name dlrm-onnx-16 \\\n", + "--num_numerical_features 13 \\\n", + "--dataset_config /data/model_size.json \\\n", + "--inference_data /data/test_data.bin \\\n", + "--batch_size 4096 \\\n", + "--fp16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Triton inference server comes with a [performance client](https://docs.nvidia.com/deeplearning/sdk/triton-inference-server-master-branch-guide/docs/optimization.html#perf-client) which is designed to stress test the server using multiple client threads.\n", + "\n", + "The perf_client generates inference requests to your model and measures the throughput and latency of those requests. To get representative results, the perf_client measures the throughput and latency over a time window, and then repeats the measurements until it gets stable values. By default the perf_client uses average latency to determine stability but you can use the --percentile flag to stabilize results based on that confidence level. For example, if --percentile=95 is used the results will be stabilized using the 95-th percentile request latency. \n", + "\n", + "### Request Concurrency\n", + "\n", + "By default perf_client measures your model’s latency and throughput using the lowest possible load on the model. To do this perf_client sends one inference request to the server and waits for the response. When that response is received, the perf_client immediately sends another request, and then repeats this process during the measurement windows. The number of outstanding inference requests is referred to as the request concurrency, and so by default perf_client uses a request concurrency of 1.\n", + "\n", + "Using the --concurrency-range :: option you can have perf_client collect data for a range of request concurrency levels. Use the --help option to see complete documentation for this and other options.\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*** Measurement Settings ***\n", + " Batch size: 4096\n", + " Measurement window: 5000 msec\n", + " Latency limit: 5000 msec\n", + " Concurrency limit: 10 concurrent requests\n", + " Using synchronous calls for inference\n", + " Stabilizing using average latency\n", + "\n", + "Request concurrency: 1\n", + " Pass [1] throughput: 67993.6 infer/sec. Avg latency: 60428 usec (std 22260 usec)\n", + " Pass [2] throughput: 61440 infer/sec. Avg latency: 66310 usec (std 21723 usec)\n", + " Pass [3] throughput: 68812.8 infer/sec. Avg latency: 59617 usec (std 22128 usec)\n", + " Client: \n", + " Request count: 84\n", + " Throughput: 68812.8 infer/sec\n", + " Avg latency: 59617 usec (standard deviation 22128 usec)\n", + " p50 latency: 71920 usec\n", + " p90 latency: 80018 usec\n", + " p95 latency: 83899 usec\n", + " p99 latency: 88054 usec\n", + " Avg gRPC time: 58773 usec (marshal 274 usec + response wait 58458 usec + unmarshal 41 usec)\n", + " Server: \n", + " Request count: 102\n", + " Avg request latency: 57208 usec (overhead 6 usec + queue 20184 usec + compute 37018 usec)\n", + "\n", + "Request concurrency: 2\n", + " Pass [1] throughput: 154010 infer/sec. Avg latency: 53139 usec (std 22418 usec)\n", + " Pass [2] throughput: 155648 infer/sec. Avg latency: 52483 usec (std 24768 usec)\n", + " Pass [3] throughput: 150733 infer/sec. Avg latency: 54271 usec (std 23803 usec)\n", + " Client: \n", + " Request count: 184\n", + " Throughput: 150733 infer/sec\n", + " Avg latency: 54271 usec (standard deviation 23803 usec)\n", + " p50 latency: 57022 usec\n", + " p90 latency: 83000 usec\n", + " p95 latency: 84782 usec\n", + " p99 latency: 88989 usec\n", + " Avg gRPC time: 55692 usec (marshal 274 usec + response wait 55374 usec + unmarshal 44 usec)\n", + " Server: \n", + " Request count: 216\n", + " Avg request latency: 53506 usec (overhead 244 usec + queue 19818 usec + compute 33444 usec)\n", + "\n", + "Request concurrency: 3\n", + " Pass [1] throughput: 189235 infer/sec. Avg latency: 64917 usec (std 21807 usec)\n", + " Pass [2] throughput: 201523 infer/sec. Avg latency: 60425 usec (std 24622 usec)\n", + " Pass [3] throughput: 203981 infer/sec. Avg latency: 60661 usec (std 24397 usec)\n", + " Client: \n", + " Request count: 249\n", + " Throughput: 203981 infer/sec\n", + " Avg latency: 60661 usec (standard deviation 24397 usec)\n", + " p50 latency: 72344 usec\n", + " p90 latency: 87765 usec\n", + " p95 latency: 91976 usec\n", + " p99 latency: 95775 usec\n", + " Avg gRPC time: 57213 usec (marshal 291 usec + response wait 56875 usec + unmarshal 47 usec)\n", + " Server: \n", + " Request count: 315\n", + " Avg request latency: 55254 usec (overhead 545 usec + queue 19408 usec + compute 35301 usec)\n", + "\n", + "Request concurrency: 4\n", + " Pass [1] throughput: 273613 infer/sec. Avg latency: 59555 usec (std 22608 usec)\n", + " Pass [2] throughput: 288358 infer/sec. Avg latency: 56895 usec (std 21886 usec)\n", + " Pass [3] throughput: 285082 infer/sec. Avg latency: 57494 usec (std 21833 usec)\n", + " Client: \n", + " Request count: 348\n", + " Throughput: 285082 infer/sec\n", + " Avg latency: 57494 usec (standard deviation 21833 usec)\n", + " p50 latency: 62012 usec\n", + " p90 latency: 83694 usec\n", + " p95 latency: 84966 usec\n", + " p99 latency: 93177 usec\n", + " Avg gRPC time: 59042 usec (marshal 317 usec + response wait 58669 usec + unmarshal 56 usec)\n", + " Server: \n", + " Request count: 404\n", + " Avg request latency: 56316 usec (overhead 569 usec + queue 19140 usec + compute 36607 usec)\n", + "\n", + "Request concurrency: 5\n", + " Pass [1] throughput: 335872 infer/sec. Avg latency: 60666 usec (std 22599 usec)\n", + " Pass [2] throughput: 308838 infer/sec. Avg latency: 65721 usec (std 22284 usec)\n", + " Pass [3] throughput: 339968 infer/sec. Avg latency: 59920 usec (std 22992 usec)\n", + " Client: \n", + " Request count: 415\n", + " Throughput: 339968 infer/sec\n", + " Avg latency: 59920 usec (standard deviation 22992 usec)\n", + " p50 latency: 67406 usec\n", + " p90 latency: 84561 usec\n", + " p95 latency: 86191 usec\n", + " p99 latency: 94862 usec\n", + " Avg gRPC time: 61127 usec (marshal 304 usec + response wait 60771 usec + unmarshal 52 usec)\n", + " Server: \n", + " Request count: 490\n", + " Avg request latency: 58036 usec (overhead 696 usec + queue 18923 usec + compute 38417 usec)\n", + "\n", + "Request concurrency: 6\n", + " Pass [1] throughput: 368640 infer/sec. Avg latency: 66037 usec (std 20247 usec)\n", + " Pass [2] throughput: 348979 infer/sec. Avg latency: 71309 usec (std 20236 usec)\n", + " Pass [3] throughput: 334234 infer/sec. Avg latency: 72704 usec (std 18491 usec)\n", + " Client: \n", + " Request count: 408\n", + " Throughput: 334234 infer/sec\n", + " Avg latency: 72704 usec (standard deviation 18491 usec)\n", + " p50 latency: 80327 usec\n", + " p90 latency: 87164 usec\n", + " p95 latency: 91824 usec\n", + " p99 latency: 95617 usec\n", + " Avg gRPC time: 71989 usec (marshal 315 usec + response wait 71617 usec + unmarshal 57 usec)\n", + " Server: \n", + " Request count: 504\n", + " Avg request latency: 68951 usec (overhead 957 usec + queue 18350 usec + compute 49644 usec)\n", + "\n", + "Request concurrency: 7\n", + " Pass [1] throughput: 395674 infer/sec. Avg latency: 72406 usec (std 18789 usec)\n", + " Pass [2] throughput: 407142 infer/sec. Avg latency: 69909 usec (std 19644 usec)\n", + " Pass [3] throughput: 355533 infer/sec. Avg latency: 81048 usec (std 12687 usec)\n", + " Client: \n", + " Request count: 434\n", + " Throughput: 355533 infer/sec\n", + " Avg latency: 81048 usec (standard deviation 12687 usec)\n", + " p50 latency: 84046 usec\n", + " p90 latency: 91642 usec\n", + " p95 latency: 94089 usec\n", + " p99 latency: 100453 usec\n", + " Avg gRPC time: 79919 usec (marshal 313 usec + response wait 79552 usec + unmarshal 54 usec)\n", + " Server: \n", + " Request count: 525\n", + " Avg request latency: 76078 usec (overhead 1042 usec + queue 17815 usec + compute 57221 usec)\n", + "\n", + "Request concurrency: 8\n", + " Pass [1] throughput: 524288 infer/sec. Avg latency: 62235 usec (std 15989 usec)\n", + " Pass [2] throughput: 524288 infer/sec. Avg latency: 62741 usec (std 15967 usec)\n", + " Pass [3] throughput: 517734 infer/sec. Avg latency: 63449 usec (std 15144 usec)\n", + " Client: \n", + " Request count: 632\n", + " Throughput: 517734 infer/sec\n", + " Avg latency: 63449 usec (standard deviation 15144 usec)\n", + " p50 latency: 68562 usec\n", + " p90 latency: 75212 usec\n", + " p95 latency: 77256 usec\n", + " p99 latency: 79685 usec\n", + " Avg gRPC time: 62683 usec (marshal 304 usec + response wait 62321 usec + unmarshal 58 usec)\n", + " Server: \n", + " Request count: 768\n", + " Avg request latency: 58942 usec (overhead 1574 usec + queue 2167 usec + compute 55201 usec)\n", + "\n", + "Request concurrency: 9\n", + " Pass [1] throughput: 376832 infer/sec. Avg latency: 98868 usec (std 34719 usec)\n", + " Pass [2] throughput: 407142 infer/sec. Avg latency: 90421 usec (std 35435 usec)\n", + " Pass [3] throughput: 346522 infer/sec. Avg latency: 106082 usec (std 33649 usec)\n", + " Client: \n", + " Request count: 423\n", + " Throughput: 346522 infer/sec\n", + " Avg latency: 106082 usec (standard deviation 33649 usec)\n", + " p50 latency: 122774 usec\n", + " p90 latency: 139616 usec\n", + " p95 latency: 143511 usec\n", + " p99 latency: 148324 usec\n", + " Avg gRPC time: 106566 usec (marshal 323 usec + response wait 106177 usec + unmarshal 66 usec)\n", + " Server: \n", + " Request count: 505\n", + " Avg request latency: 102100 usec (overhead 1046 usec + queue 43598 usec + compute 57456 usec)\n", + "\n", + "Request concurrency: 10\n", + " Pass [1] throughput: 407962 infer/sec. Avg latency: 100260 usec (std 27654 usec)\n", + " Pass [2] throughput: 403866 infer/sec. Avg latency: 101427 usec (std 34082 usec)\n", + " Pass [3] throughput: 412058 infer/sec. Avg latency: 99376 usec (std 31125 usec)\n", + " Client: \n", + " Request count: 503\n", + " Throughput: 412058 infer/sec\n", + " Avg latency: 99376 usec (standard deviation 31125 usec)\n", + " p50 latency: 100025 usec\n", + " p90 latency: 137764 usec\n", + " p95 latency: 141030 usec\n", + " p99 latency: 144104 usec\n", + " Avg gRPC time: 98137 usec (marshal 348 usec + response wait 97726 usec + unmarshal 63 usec)\n", + " Server: \n", + " Request count: 612\n", + " Avg request latency: 94377 usec (overhead 1417 usec + queue 40909 usec + compute 52051 usec)\n", + "\n", + "Inferences/Second vs. Client Average Batch Latency\n", + "Concurrency: 1, throughput: 68812.8 infer/sec, latency 59617 usec\n", + "Concurrency: 2, throughput: 150733 infer/sec, latency 54271 usec\n", + "Concurrency: 3, throughput: 203981 infer/sec, latency 60661 usec\n", + "Concurrency: 4, throughput: 285082 infer/sec, latency 57494 usec\n", + "Concurrency: 5, throughput: 339968 infer/sec, latency 59920 usec\n", + "Concurrency: 6, throughput: 334234 infer/sec, latency 72704 usec\n", + "Concurrency: 7, throughput: 355533 infer/sec, latency 81048 usec\n", + "Concurrency: 8, throughput: 517734 infer/sec, latency 63449 usec\n", + "Concurrency: 9, throughput: 346522 infer/sec, latency 106082 usec\n", + "Concurrency: 10, throughput: 412058 infer/sec, latency 99376 usec\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Overriding max_threads specification to ensure requested concurrency range.\n" + ] + } + ], + "source": [ + "%%bash\n", + "/workspace/install/bin/perf_client \\\n", + "--max-threads 10 \\\n", + "-m dlrm-onnx-16 \\\n", + "-x 1 \\\n", + "-p 5000 \\\n", + "-v -i gRPC \\\n", + "-u localhost:8001 \\\n", + "-b 4096 \\\n", + "-l 5000 \\\n", + "--concurrency-range 1:10 \\\n", + "--input-data ./perfdata \\\n", + "-f result.csv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing Latency vs. Throughput\n", + "\n", + "The perf_client provides the -f option to generate a file containing CSV output of the results.\n", + "You can import the CSV file into a spreadsheet to help visualize the latency vs inferences/second tradeoff as well as see some components of the latency. Follow these steps:\n", + "- Open this [spreadsheet](https://docs.google.com/spreadsheets/d/1IsdW78x_F-jLLG4lTV0L-rruk0VEBRL7Mnb-80RGLL4)\n", + "\n", + "- Make a copy from the File menu “Make a copy…”\n", + "\n", + "- Open the copy\n", + "\n", + "- Select the A1 cell on the “Raw Data” tab\n", + "\n", + "- From the File menu select “Import…”\n", + "\n", + "- Select “Upload” and upload the file\n", + "\n", + "- Select “Replace data at selected cell” and then select the “Import data” button\n", + "\n", + "![DLRM_model](latency_vs_throughput.PNG)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "g8MxXY5GmTc8" + }, + "source": [ + "# Conclusion\n", + "\n", + "In this notebook, we have walked through the complete process of preparing the pretrained DLRM for inference with the Triton inference server. Then, we stress test the server with the performance client to verify inference throughput.\n", + "\n", + "## What's next\n", + "Now it's time to deploy your own DLRM model with Triton. " + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "249yGNLmmTc_" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "TensorFlow_UNet_Industrial_Colab_train_and_inference.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/PyTorch/Recommendation/DLRM/notebooks/DLRM_architecture.png b/PyTorch/Recommendation/DLRM/notebooks/DLRM_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f5231b7fa0cf0ed15985d45524a7539866f9fb70 GIT binary patch literal 30028 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 literal 0 HcmV?d00001 diff --git a/PyTorch/Recommendation/DLRM/notebooks/Pytorch_DLRM_pyt_train_and_inference.ipynb b/PyTorch/Recommendation/DLRM/notebooks/Pytorch_DLRM_pyt_train_and_inference.ipynb new file mode 100644 index 00000000..755df0d9 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/notebooks/Pytorch_DLRM_pyt_train_and_inference.ipynb @@ -0,0 +1,470 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Gwt7z7qdmTbW" + }, + "outputs": [], + "source": [ + "# Copyright 2019 NVIDIA Corporation. All Rights Reserved.\n", + "#\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "#\n", + "# http://www.apache.org/licenses/LICENSE-2.0\n", + "#\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License.\n", + "# ==============================================================================" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "i4NKCp2VmTbn" + }, + "source": [ + "\n", + "\n", + "# DLRM Training and Inference Demo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "fW0OKDzvmTbt" + }, + "source": [ + "## Overview\n", + "\n", + "\n", + "DLRM is a deep learning based approach to recommendation introduced by Facebook. \n", + "Like other deep learning based approaches, DLRM is designed to make use of both categorical and numerical inputs which are usually present in RecSys training data. The architecture of DLRM can be understood via Figure 1. In order to handle categorical data, embedding layers map each category to a dense representation before being fed into dense multilayer perceptrons (MLP). Continuous features can be fed directly into a dense MLP. At the next level, second-order interactions of different features are computed explicitly by taking the dot product between all pairs of embedding vectors and processed dense features. Those pairwise interactions are fed into a top level MLP to compute the likelihood of interaction between users and items. \n", + "\n", + "Compared to other DL based approaches to recommendation, DLRM differs in two ways. First, DLRM computes the feature interaction explicitly while limiting the order of interaction to pairwise interactions. Second, DLRM treats each embedded feature vector (corresponding to categorical features) as a single unit, whereas other methods treat each element in the feature vector as a new unit that should yield different cross terms. These design choices help reduce computational/memory cost while maintaining competitive accuracy.\n", + "\n", + "![DLRM_model](DLRM_architecture.png)\n", + "\n", + "Figure 1. DLRM architecture.\n", + "\n", + "### Learning objectives\n", + "\n", + "This notebook demonstrates the steps for training a DLRM model. We then employ the trained model to make inference on new data.\n", + "\n", + "## Content\n", + "1. [Requirements](#1)\n", + "1. [Data download and preprocessing](#2)\n", + "1. [Training](#3)\n", + "1. [Testing trained model](#4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "aDFrE4eqmTbv" + }, + "source": [ + "\n", + "## 1. Requirements\n", + "\n", + "\n", + "### 1.1 Docker container\n", + "The most convenient way to make use of the NVIDIA DLRM model is via a docker container, which provides a self-contained, isolated and re-producible environment for all experiments. Refer to the [Quick Start Guide section](../README.md) of the Readme documentation for a comprehensive guide. We briefly summarize the steps here.\n", + "\n", + "First, clone the repository:\n", + "\n", + "```\n", + "git clone https://github.com/NVIDIA/DeepLearningExamples\n", + "cd DeepLearningExamples/PyTorch/Recommendation/DLRM\n", + "```\n", + "\n", + "Next, build the DLRM container:\n", + "```\n", + "docker build . -t nvidia_dlrm_pyt\n", + "```\n", + "\n", + "Make a directory for storing DLRM data and start a docker container with:\n", + "```\n", + "mkdir -p data\n", + "docker run --runtime=nvidia -it --rm --ipc=host -v ${PWD}/data:/data nvidia_dlrm_pyt bash\n", + "```\n", + "\n", + "Within the docker interactive bash session, start Jupyter with\n", + "\n", + "```\n", + "export PYTHONPATH=/workspace/dlrm\n", + "jupyter notebook --ip 0.0.0.0 --port 8888\n", + "```\n", + "\n", + "Then open the Jupyter GUI interface on your host machine at http://localhost:8888. Within the container, the demo notebooks are located at `/workspace/dlrm/notebooks`.\n", + "\n", + "### 1.2 Hardware\n", + "This notebook can be executed on any CUDA-enabled NVIDIA GPU with at least 24GB of GPU memory, although for efficient mixed precision training, a [Tensor Core NVIDIA GPU](https://www.nvidia.com/en-us/data-center/tensorcore/) is desired (Volta, Turing or newer architectures). " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "k7RLEcKhmTb0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sat Mar 28 06:36:59 2020 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "|===============================+======================+======================|\n", + "| 0 Tesla V100-SXM2... On | 00000000:06:00.0 Off | 0 |\n", + "| N/A 32C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 1 Tesla V100-SXM2... On | 00000000:07:00.0 Off | 0 |\n", + "| N/A 34C P0 43W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 2 Tesla V100-SXM2... On | 00000000:0A:00.0 Off | 0 |\n", + "| N/A 34C P0 43W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 3 Tesla V100-SXM2... On | 00000000:0B:00.0 Off | 0 |\n", + "| N/A 32C P0 43W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 4 Tesla V100-SXM2... On | 00000000:85:00.0 Off | 0 |\n", + "| N/A 33C P0 43W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 5 Tesla V100-SXM2... On | 00000000:86:00.0 Off | 0 |\n", + "| N/A 35C P0 44W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 6 Tesla V100-SXM2... On | 00000000:89:00.0 Off | 0 |\n", + "| N/A 37C P0 44W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + "| 7 Tesla V100-SXM2... On | 00000000:8A:00.0 Off | 0 |\n", + "| N/A 34C P0 43W / 300W | 0MiB / 32510MiB | 0% Default |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: GPU Memory |\n", + "| GPU PID Type Process name Usage |\n", + "|=============================================================================|\n", + "| No running processes found |\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "!nvidia-smi" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HqSUGePjmTb9" + }, + "source": [ + "\n", + "## 2. Data download and preprocessing\n", + "\n", + "Commercial recommendation systems are often trained on huge data sets, often in the order of terabytes, if not more. While datasets of this scale are rarely available to the public, the Criteo Terabyte click logs public [dataset](https://labs.criteo.com/2013/12/download-terabyte-click-logs/) offers a rare glimpse into the scale of real enterprise data: it contains ~1.3TB of uncompressed click logs collected over the course of 24 days, that can be used to train RecSys models that predict the ads click through rate. Yet, real datasets can be potentially one or two orders of magnitude larger, as enterprises will try to leverage as much historical data as they can use, for this will generally translate into better accuracy.\n", + "\n", + "Herein, we employ the Criteo Terabyte dataset to demonstrate the efficiency of the GPU-optimized DLRM training procedure. Each record in this dataset contains 40 columns: the first is a label column that indicates whether an user clicks an ad (value 1) or not (value 0). The next 13 columns are numeric, and the last 26 are categorical columns containing obfuscated hashed values. The columns and their values are all anonymized to protect user privacy.\n", + "\n", + "\n", + "We will first download and preprocess the Criteo Terabyte dataset. Note that this will require about 1TB of disk storage.\n", + "\n", + "Notice: before downloading data, you must check out and agree with the terms and conditions of the Criteo Terabyte [dataset](https://labs.criteo.com/2013/12/download-terabyte-click-logs/).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "S2PR7weWmTcK" + }, + "outputs": [], + "source": [ + "! cd ../preproc && ./prepare_dataset.sh" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "EQAIszkxmTcT" + }, + "source": [ + "The original Facebook DLRM code base comes with a data preprocessing utility to preprocess the data. For continuous features, the data preprocessing steps include filling in missing values with 0 and normalization (shifting the values to be >=1 and taking natural logarithm). For categorical features, the preprocessing steps include building embedding tables and transforming hashed values into integer indicators. This code runs on a single CPU thread and takes ~6.5 days to transform the whole Criteo Terabyte data set. \n", + "\n", + "We improve the data preprocessing process with Spark on CPU to make use of all CPU threads. In the docker image, we have installed spark 2.4.5, which we’ll start a standalone Spark cluster.This results in significant improvement in data pre-processing speed, scaling approximately linearly with the number of available CPU threads. This outputs the transformed data in parquet format. We finally convert the parquet data into the binary format similar to that designed by the Facebook team specially for the Criteo dataset. \n", + "\n", + "Our preprocessing scripts are designed for the Criteo Terabyte Dataset and should work with any other dataset with the same format. The data should be split into text files. Each line of those text files should contain a single training example. An example should consist of multiple fields separated by tabulators:\n", + "- The first field is the label – `1` for a positive example and `0` for negative.\n", + "- The next `N` tokens should contain the numerical features separated by tabs.\n", + "- The next `M` tokens should contain the hashed categorical features separated by tabs.\n", + "\n", + "The outcomes of the data preprocessing steps are by default stored in `/data/dlrm/binary_dataset` containing 3 binary data files: `test_data.bin`, `train_data.bin` and `val_data.bin` and a JSON `file model_size.json` totalling ~650GB.\n", + "\n", + "Tips: by defaul the preprocessing script uses the first 23 days of the Criteo Terabyte dataset for training and the last day for validation. For a quick experiment, you can download and make use of a smaller number of days by modifying the `preproc/run_spark.sh` script." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "RL8d9IwzmTcV" + }, + "source": [ + "\n", + "## 3. Training" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "o6wayGf1mTcX" + }, + "source": [ + "The repository provides several training recipes on 1 GPU with FP32 and automatic mixed precisions." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HapDsY4VmTce" + }, + "source": [ + "#### Training with FP32\n", + "Training on 1 GPU with FP32 with the `--nofp16` option." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "%run ../dlrm/scripts/main \\\n", + "--mode train \\\n", + "--dataset /data/dlrm/binary_dataset \\\n", + "--nofp16 \\\n", + "--save_checkpoint_path ./dlrm_model_fp32.pt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On a V100 32GB, training takes approximately 2h56m for 1 epoch to an AUC of ~0.8. The final result should look similar to the below.\n", + "\n", + "```\n", + "Epoch:[0/1] [127600/128028] eta: 0:00:34 loss: 0.1226 step_time: 0.080038 lr: 1.1766\n", + "Epoch:[0/1] [127800/128028] eta: 0:00:18 loss: 0.1224 step_time: 0.080307 lr: 1.1480\n", + "Epoch:[0/1] [128000/128028] eta: 0:00:02 loss: 0.1221 step_time: 0.080562 lr: 1.1199\n", + "Test: [200/2721] loss: 0.1236 step_time: 0.0303\n", + "Test: [400/2721] loss: 0.1248 step_time: 0.0245\n", + "Test: [600/2721] loss: 0.1262 step_time: 0.0244\n", + "Test: [800/2721] loss: 0.1262 step_time: 0.0245\n", + "Test: [1000/2721] loss: 0.1293 step_time: 0.0245\n", + "Test: [1200/2721] loss: 0.1307 step_time: 0.0245\n", + "Test: [1400/2721] loss: 0.1281 step_time: 0.0245\n", + "Test: [1600/2721] loss: 0.1242 step_time: 0.0246\n", + "Test: [1800/2721] loss: 0.1230 step_time: 0.0245\n", + "Test: [2000/2721] loss: 0.1226 step_time: 0.0244\n", + "Test: [2200/2721] loss: 0.1239 step_time: 0.0246\n", + "Test: [2400/2721] loss: 0.1256 step_time: 0.0249\n", + "Test: [2600/2721] loss: 0.1247 step_time: 0.0248\n", + "Epoch 0 step 128027. Test loss 0.12557, auc 0.803517\n", + "Checkpoint saving took 42.90 [s]\n", + "DLL 2020-03-29 15:59:44.759627 - () best_auc : 0.80352 best_epoch : 1.00 average_train_throughput : 4.07e+05 average_test_throughput : 1.33e+06 \n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "j-aFEwb4mTcn" + }, + "source": [ + "#### Training with mixed-precision\n", + "Mixed precision training can be done with the `--fp16` option. Under the hood, the NVIDIA Pytorch extension library [Apex](https://github.com/NVIDIA/apex) to enable mixed precision training.\n", + "\n", + "Note: for subsequent launches of the %run magic, please restart your kernel manualy or execute the below cell to restart kernel." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Note: for subsequent launches of the %run magic, \n", + "# please restart your kernel manualy or execute this cell to restart kernel.\n", + "import os\n", + "os._exit(00)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "o3AZ-CXYmTcp", + "scrolled": false + }, + "outputs": [], + "source": [ + "%run ../dlrm/scripts/main \\\n", + "--mode train \\\n", + "--dataset /data/dlrm/binary_dataset \\\n", + "--fp16 \\\n", + "--save_checkpoint_path ./dlrm_model_fp16.pt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On a V100 32GB, training takes approximately 1h41m for 1 epoch to an AUC of ~0.8. Thus, mixed precision training provides a speed up of ~ 1.7x.\n", + "\n", + "The final result should look similar to the below.\n", + "\n", + "```\n", + "...\n", + "Epoch:[0/1] [127800/128028] eta: 0:00:11 loss: 0.1224 step_time: 0.050719 lr: 1.1480\n", + "Epoch:[0/1] [128000/128028] eta: 0:00:01 loss: 0.1221 step_time: 0.050499 lr: 1.1199\n", + "Test: [200/2721] loss: 0.1236 step_time: 0.0271\n", + "Test: [400/2721] loss: 0.1247 step_time: 0.0278\n", + "Test: [600/2721] loss: 0.1262 step_time: 0.0275\n", + "Test: [800/2721] loss: 0.1262 step_time: 0.0278\n", + "Test: [1000/2721] loss: 0.1293 step_time: 0.0273\n", + "Test: [1200/2721] loss: 0.1306 step_time: 0.0264\n", + "Test: [1400/2721] loss: 0.1281 step_time: 0.0281\n", + "Test: [1600/2721] loss: 0.1242 step_time: 0.0273\n", + "Test: [1800/2721] loss: 0.1229 step_time: 0.0280\n", + "Test: [2000/2721] loss: 0.1226 step_time: 0.0274\n", + "Test: [2200/2721] loss: 0.1239 step_time: 0.0278\n", + "Test: [2400/2721] loss: 0.1256 step_time: 0.0289\n", + "Test: [2600/2721] loss: 0.1247 step_time: 0.0282\n", + "Epoch 0 step 128027. Test loss 0.12557, auc 0.803562\n", + "Checkpoint saving took 40.46 [s]\n", + "DLL 2020-03-28 15:15:36.290149 - () best_auc : 0.80356 best_epoch : 1.00 average_train_throughput : 6.47e+05 average_test_throughput : 1.17e+06\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "X959LYwjmTcw" + }, + "source": [ + "\n", + "## 4. Testing trained model\n", + "\n", + "After model training has completed, we can test the trained model against the Criteo test dataset. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Note: for subsequent launches of the %run magic, \n", + "# please restart your kernel manualy or execute this cell to restart kernel.\n", + "import os\n", + "os._exit(00)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "%run ../dlrm/scripts/main \\\n", + "--mode test\\\n", + "--dataset /data/dlrm/binary_dataset \\\n", + "--load_checkpoint_path ./dlrm_model_fp16.pt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "g8MxXY5GmTc8" + }, + "source": [ + "# Conclusion\n", + "\n", + "In this notebook, we have walked through the complete process of preparing the container and data required for training the DLRM model. We have also investigated various training options with FP32 and automatic mixed precision, trained and tested DLRM models with new test data.\n", + "\n", + "## What's next\n", + "Now it's time to try the DLRM model on your own data. Observe the performance impact of mixed precision training while comparing the final accuracy of the models trained with FP32 and mixed precision.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "249yGNLmmTc_" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "TensorFlow_UNet_Industrial_Colab_train_and_inference.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/PyTorch/Recommendation/DLRM/notebooks/README.md b/PyTorch/Recommendation/DLRM/notebooks/README.md new file mode 100644 index 00000000..b79fe315 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/notebooks/README.md @@ -0,0 +1,69 @@ + +# DLRM Jupyter demo notebooks + +This folder contains the demo notebooks for DLRM. The most convenient way to use these notebooks is via using a docker container, which provides a self-contained, isolated and re-producible environment for all experiments. Refer to the [Quick Start Guide section](../README.md) of the Readme documentation for a comprehensive guide. + +First, clone the repository: + +``` +git clone https://github.com/NVIDIA/DeepLearningExamples +cd DeepLearningExamples/PyTorch/Recommendation/DLRM +``` + + +## Notebook list + +### 1. Pytorch_DLRM_pyt_train_and_inference.ipynb: training and inference demo + +To execute this notebook, first build the DLRM container: +``` +docker build . -t nvidia_dlrm_pyt +``` + +Make a directory for storing DLRM data and start a docker containerexport PYTHONPATH=/workspace/dlrm with: +``` +mkdir -p data +docker run --runtime=nvidia -it --rm --ipc=host -v ${PWD}/data:/data nvidia_dlrm_pyt bash +``` + +Within the docker interactive bash session, start Jupyter with + +``` +export PYTHONPATH=/workspace/dlrm +jupyter notebook --ip 0.0.0.0 --port 8888 +``` + +Then open the Jupyter GUI interface on your host machine at http://localhost:8888. Within the container, this demo notebook is located at `/workspace/dlrm/notebooks`. + + +### 2. DLRM_Triton_inference_demo.ipynb: inference demo with the NVIDIA Triton Inference server. + +To execute this notebook, first build the following inference container: + +``` +docker build -t dlrm-inference . -f triton/Dockerfile +``` + +Start in interactive docker session with: + +``` +docker run -it --rm --gpus device=0 --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --net=host -v :/models -v :/repository dlrm-inference bash +``` +where: + +- PATH_TO_SAVED_MODEL: directory containing the trained DLRM models. + +- PATH_TO_EXPORT_MODEL: directory which will contain the converted model to be used with the NVIDIA Triton inference server. + +Within the docker interactive bash session, start Jupyter with + +``` +export PYTHONPATH=/workspace/dlrm +jupyter notebook --ip 0.0.0.0 --port 8888 +``` + +Then open the Jupyter GUI interface on your host machine at http://localhost:8888. Within the container, this demo notebook is located at `/workspace/dlrm/notebooks`. + +```python + +``` diff --git a/PyTorch/Recommendation/DLRM/notebooks/latency_vs_throughput.PNG b/PyTorch/Recommendation/DLRM/notebooks/latency_vs_throughput.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7c81785503d5e646ff06e61e7c65b5e3af231a0e GIT binary patch literal 31680 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 I*R#L)KmNU#{{R30 literal 0 HcmV?d00001 diff --git a/PyTorch/Recommendation/DLRM/notebooks/recsys_inference.PNG b/PyTorch/Recommendation/DLRM/notebooks/recsys_inference.PNG new file mode 100644 index 0000000000000000000000000000000000000000..00da699a13580d1dd4f4cb994b3150fee16ed059 GIT binary patch literal 104434 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

    ukHp6iqOBV0PN!R~A;&D1B?uwoKEG0hrGUaV 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 {args.dst_dir}/train_data.bin') + + print('Concatenating test files') + os.system(f'cat {test_intermediate_dir}/*.bin > {args.dst_dir}/test_data.bin') + + print('Concatenating validation files') + os.system(f'cat {valid_intermediate_dir}/*.bin > {args.dst_dir}/val_data.bin') + print('Done') + + +if __name__ == '__main__': + main() diff --git a/PyTorch/Recommendation/DLRM/preproc/prepare_dataset.sh b/PyTorch/Recommendation/DLRM/preproc/prepare_dataset.sh new file mode 100755 index 00000000..7f0ff1e3 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/preproc/prepare_dataset.sh @@ -0,0 +1,59 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#! /bin/bash + +set -e +set -x + +ls -ltrash + +download_dir=${download_dir:-'/data/dlrm/criteo'} +./verify_criteo_downloaded.sh ${download_dir} + +spark_output_path=${spark_output_path:-'/data/dlrm/spark/output'} + + +if [ -f ${spark_output_path}/train/_SUCCESS ] \ + && [ -f ${spark_output_path}/validation/_SUCCESS ] \ + && [ -f ${spark_output_path}/test/_SUCCESS ]; then + + echo "Spark preprocessing already carried done" +else + echo "Performing spark preprocessing" + ./run_spark.sh ${download_dir} ${spark_output_path} +fi + +conversion_intermediate_dir=${conversion_intermediate_dir:-'/data/dlrm/intermediate_binary'} +final_output_dir=${final_output_dir:-'/data/dlrm/binary_dataset'} + + +if [ -f ${final_output_dir}/train_data.bin ] \ + && [ -f ${final_output_dir}/val_data.bin ] \ + && [ -f ${final_output_dir}/test_data.bin ] \ + && [ -f ${final_output_dir}/model_sizes.json ]; then + + echo "Final conversion already done" +else + echo "Performing final conversion to a custom data format" + python parquet_to_binary.py --parallel_jobs 40 --src_dir ${spark_output_path} \ + --intermediate_dir ${conversion_intermediate_dir} \ + --dst_dir ${final_output_dir} + + cp "${spark_output_path}/model_size.json" "${final_output_dir}/model_size.json" +fi + +echo "Done preprocessing the Criteo Kaggle Dataset" +echo "You can now start the training with: " +echo "python -m dlrm.scripts.main --mode train --dataset /data/dlrm/binary_dataset/ --model_config dlrm/config/default.json" \ No newline at end of file diff --git a/PyTorch/Recommendation/DLRM/preproc/run_spark.sh b/PyTorch/Recommendation/DLRM/preproc/run_spark.sh new file mode 100755 index 00000000..2a9b6af5 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/preproc/run_spark.sh @@ -0,0 +1,166 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +######################################################################### +# File Name: run-spark.sh + +#!/bin/bash + +set -e + +# the environment variables to run spark job +# should modify below environment variables + +# the data path including 1TB criteo data, day_0, day_1, ... +export INPUT_PATH=${1:-'/data/dlrm/criteo'} + +# the output path, use for generating the dictionary and the final dataset +# the output folder should have more than 300GB +export OUTPUT_PATH=${2:-'/data/dlrm/spark/output'} + +# spark local dir should have about 3TB +# the temporary path used for spark shuffle write +export SPARK_LOCAL_DIRS='/data/dlrm/spark/tmp' + +# below numbers should be adjusted according to the resource of your running environment +# set the total number of CPU cores, spark can use +export TOTAL_CORES=80 + +# set the number of executors +export NUM_EXECUTORS=8 + +# the cores for each executor, it'll be calculated +export NUM_EXECUTOR_CORES=$((${TOTAL_CORES}/${NUM_EXECUTORS})) + +# unit: GB, set the max memory you want to use +export TOTAL_MEMORY=800 + +# unit: GB, set the memory for driver +export DRIVER_MEMORY=32 + +# the memory per executor +export EXECUTOR_MEMORY=$(((${TOTAL_MEMORY}-${DRIVER_MEMORY})/${NUM_EXECUTORS})) + +# use frequency_limit=15 or not +# by default use a frequency limit of 15 +USE_FREQUENCY_LIMIT=1 +OPTS="" +if [[ $USE_FREQUENCY_LIMIT == 1 ]]; then + OPTS="--frequency_limit 15" +fi + +export SPARK_HOME=/opt/spark-2.4.5-bin-hadoop2.7 +export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 +export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH + +# we use spark standalone to run the job +export MASTER=spark://$HOSTNAME:7077 + +echo "Starting spark standalone" +start-master.sh +start-slave.sh $MASTER + +echo "Generating the dictionary..." +spark-submit --master $MASTER \ + --driver-memory "${DRIVER_MEMORY}G" \ + --executor-cores $NUM_EXECUTOR_CORES \ + --executor-memory "${EXECUTOR_MEMORY}G" \ + --conf spark.cores.max=$TOTAL_CORES \ + --conf spark.task.cpus=1 \ + --conf spark.sql.files.maxPartitionBytes=1073741824 \ + --conf spark.sql.shuffle.partitions=600 \ + --conf spark.driver.maxResultSize=2G \ + --conf spark.locality.wait=0s \ + --conf spark.network.timeout=1800s \ + spark_data_utils.py --mode generate_models \ + $OPTS \ + --input_folder $INPUT_PATH \ + --days 0-23 \ + --model_folder $OUTPUT_PATH/models \ + --write_mode overwrite --low_mem 2>&1 | tee submit_dict_log.txt + +echo "Transforming the train data from day_0 to day_22..." +spark-submit --master $MASTER \ + --driver-memory "${DRIVER_MEMORY}G" \ + --executor-cores $NUM_EXECUTOR_CORES \ + --executor-memory "${EXECUTOR_MEMORY}G" \ + --conf spark.cores.max=$TOTAL_CORES \ + --conf spark.task.cpus=1 \ + --conf spark.sql.files.maxPartitionBytes=1073741824 \ + --conf spark.sql.shuffle.partitions=600 \ + --conf spark.driver.maxResultSize=2G \ + --conf spark.locality.wait=0s \ + --conf spark.network.timeout=1800s \ + spark_data_utils.py --mode transform \ + --input_folder $INPUT_PATH \ + --days 0-22 \ + --output_folder $OUTPUT_PATH/train \ + --model_size_file $OUTPUT_PATH/model_size.json \ + --model_folder $OUTPUT_PATH/models \ + --write_mode overwrite --low_mem 2>&1 | tee submit_train_log.txt + +echo "Splitting the last day into 2 parts of test and validation..." +last_day=$INPUT_PATH/day_23 +temp_test=$OUTPUT_PATH/temp/test +temp_validation=$OUTPUT_PATH/temp/validation +mkdir -p $temp_test $temp_validation + +lines=`wc -l $last_day | awk '{print $1}'` +former=$((lines / 2)) +latter=$((lines - former)) + +head -n $former $last_day > $temp_test/day_23 +tail -n $latter $last_day > $temp_validation/day_23 + +echo "Transforming the test data in day_23..." +spark-submit --master $MASTER \ + --driver-memory "${DRIVER_MEMORY}G" \ + --executor-cores $NUM_EXECUTOR_CORES \ + --executor-memory "${EXECUTOR_MEMORY}G" \ + --conf spark.cores.max=$TOTAL_CORES \ + --conf spark.task.cpus=1 \ + --conf spark.sql.files.maxPartitionBytes=1073741824 \ + --conf spark.sql.shuffle.partitions=30 \ + --conf spark.driver.maxResultSize=2G \ + --conf spark.locality.wait=0s \ + --conf spark.network.timeout=1800s \ + spark_data_utils.py --mode transform \ + --input_folder $temp_test \ + --days 23-23 \ + --output_folder $OUTPUT_PATH/test \ + --output_ordering input \ + --model_folder $OUTPUT_PATH/models \ + --write_mode overwrite --low_mem 2>&1 | tee submit_test_log.txt + +echo "Transforming the validation data in day_23..." +spark-submit --master $MASTER \ + --driver-memory "${DRIVER_MEMORY}G" \ + --executor-cores $NUM_EXECUTOR_CORES \ + --executor-memory "${EXECUTOR_MEMORY}G" \ + --conf spark.cores.max=$TOTAL_CORES \ + --conf spark.task.cpus=1 \ + --conf spark.sql.files.maxPartitionBytes=1073741824 \ + --conf spark.sql.shuffle.partitions=30 \ + --conf spark.driver.maxResultSize=2G \ + --conf spark.locality.wait=0s \ + --conf spark.network.timeout=1800s \ + spark_data_utils.py --mode transform \ + --input_folder $temp_validation \ + --days 23-23 \ + --output_folder $OUTPUT_PATH/validation \ + --output_ordering input \ + --model_folder $OUTPUT_PATH/models \ + --write_mode overwrite --low_mem 2>&1 | tee submit_validation_log.txt + +rm -r $temp_test $temp_validation diff --git a/PyTorch/Recommendation/DLRM/preproc/spark_data_utils.py b/PyTorch/Recommendation/DLRM/preproc/spark_data_utils.py new file mode 100644 index 00000000..7f1be2c9 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/preproc/spark_data_utils.py @@ -0,0 +1,507 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import json +import os +import sys + +from argparse import ArgumentParser +from collections import OrderedDict +from contextlib import contextmanager +from operator import itemgetter +from time import time + +from pyspark import broadcast +from pyspark.sql import Row, SparkSession, Window +from pyspark.sql.functions import * +from pyspark.sql.types import * + + +LABEL_COL = 0 +INT_COLS = list(range(1, 14)) +CAT_COLS = list(range(14, 40)) + + +def get_column_counts_with_frequency_limit(df, frequency_limit = None): + cols = ['_c%d' % i for i in CAT_COLS] + df = (df + .select(posexplode(array(*cols))) + .withColumnRenamed('pos', 'column_id') + .withColumnRenamed('col', 'data') + .filter('data is not null') + .groupBy('column_id', 'data') + .count()) + + if frequency_limit: + frequency_limit = frequency_limit.split(",") + exclude = [] + default_limit = None + for fl in frequency_limit: + frequency_pair = fl.split(":") + if len(frequency_pair) == 1: + default_limit = int(frequency_pair[0]) + elif len(frequency_pair) == 2: + df = df.filter((col('column_id') != int(frequency_pair[0]) - CAT_COLS[0]) | (col('count') >= int(frequency_pair[1]))) + exclude.append(int(frequency_pair[0])) + if default_limit: + remain = [x - CAT_COLS[0] for x in CAT_COLS if x not in exclude] + df = df.filter((~col('column_id').isin(remain)) | (col('count') >= default_limit)) + # for comparing isin and separate filter + # for i in remain: + # df = df.filter((col('column_id') != i - CAT_COLS[0]) | (col('count') >= default_limit)) + return df + + +def assign_id_with_window(df): + windowed = Window.partitionBy('column_id').orderBy(desc('count')) + return (df + .withColumn('id', row_number().over(windowed)) + .withColumnRenamed('count', 'model_count')) + + +def assign_low_mem_partial_ids(df): + # To avoid some scaling issues with a simple window operation, we use a more complex method + # to compute the same thing, but in a more distributed spark specific way + df = df.orderBy(asc('column_id'), desc('count')) + # The monotonically_increasing_id is the partition id in the top 31 bits and the rest + # is an increasing count of the rows within that partition. So we split it into two parts, + # the partion id part_id and the count mono_id + df = df.withColumn('part_id', spark_partition_id()) + return df.withColumn('mono_id', monotonically_increasing_id() - shiftLeft(col('part_id'), 33)) + + +def assign_low_mem_final_ids(df): + # Now we can find the minimum and maximum mono_ids within a given column/partition pair + sub_model = df.groupBy('column_id', 'part_id').agg(max('mono_id').alias('top'), min('mono_id').alias('bottom')) + sub_model = sub_model.withColumn('diff', col('top') - col('bottom') + 1) + sub_model = sub_model.drop('top') + # This window function is over aggregated column/partition pair table. It will do a running sum of the rows + # within that column + windowed = Window.partitionBy('column_id').orderBy('part_id').rowsBetween(Window.unboundedPreceding, -1) + sub_model = sub_model.withColumn('running_sum', sum('diff').over(windowed)).na.fill(0, ["running_sum"]) + + joined = df.withColumnRenamed('column_id', 'i_column_id') + joined = joined.withColumnRenamed('part_id', 'i_part_id') + joined = joined.withColumnRenamed('count', 'model_count') + + # Then we can join the original input with the pair it is a part of + joined = joined.join(sub_model, (col('i_column_id') == col('column_id')) & (col('part_id') == col('i_part_id'))) + + # So with all that we can subtract bottom from mono_id makeing it start at 0 for each partition + # and then add in the running_sum so the id is contiguous and unique for the entire column. + 1 to make it match the 1 based indexing + # for row_number + ret = joined.select(col('column_id'), + col('data'), + (col('mono_id') - col('bottom') + col('running_sum') + 1).cast(IntegerType()).alias('id'), + col('model_count')) + return ret + + +def get_column_models(combined_model): + for i in CAT_COLS: + model = (combined_model + .filter('column_id == %d' % (i - CAT_COLS[0])) + .drop('column_id')) + yield i, model + + +def col_of_rand_long(): + return (rand() * (1 << 52)).cast(LongType()) + +def skewed_join(df, model, col_name, cutoff): + # Most versions of spark don't have a good way + # to deal with a skewed join out of the box. + # Some do and if you want to replace this with + # one of those that would be great. + + # Because we have statistics about the skewedness + # that we can used we divide the model up into two parts + # one part is the highly skewed part and we do a + # broadcast join for that part, but keep the result in + # a separate column + b_model = broadcast(model.filter(col('model_count') >= cutoff) + .withColumnRenamed('data', col_name) + .drop('model_count')) + + df = (df + .join(b_model, col_name, how='left') + .withColumnRenamed('id', 'id_tmp')) + + # We also need to spread the skewed data that matched + # evenly. We will use a source of randomness for this + # but use a -1 for anything that still needs to be matched + if 'ordinal' in df.columns: + rand_column = col('ordinal') + else: + rand_column = col_of_rand_long() + + df = df.withColumn('join_rand', + # null values are not in the model, they are filtered out + # but can be a source of skewedness so include them in + # the even distribution + when(col('id_tmp').isNotNull() | col(col_name).isNull(), rand_column) + .otherwise(lit(-1))) + + # Null out the string data that already matched to save memory + df = df.withColumn(col_name, + when(col('id_tmp').isNotNull(), None) + .otherwise(col(col_name))) + + # Now do the second join, which will be a non broadcast join. + # Sadly spark is too smart for its own good and will optimize out + # joining on a column it knows will always be a constant value. + # So we have to make a convoluted version of assigning a -1 to the + # randomness column for the model itself to work around that. + nb_model = (model + .withColumn('join_rand', when(col('model_count') < cutoff, lit(-1)).otherwise(lit(-2))) + .filter(col('model_count') < cutoff) + .withColumnRenamed('data', col_name) + .drop('model_count')) + + df = (df + .join(nb_model, ['join_rand', col_name], how='left') + .drop(col_name, 'join_rand') + # Pick either join result as an answer + .withColumn(col_name, coalesce(col('id'), col('id_tmp'))) + .drop('id', 'id_tmp')) + + return df + + +def apply_models(df, models, broadcast_model = False, skew_broadcast_pct = 1.0): + # sort the models so broadcast joins come first. This is + # so we reduce the amount of shuffle data sooner than later + # If we parsed the string hex values to ints early on this would + # not make a difference. + models = sorted(models, key=itemgetter(3), reverse=True) + for i, model, original_rows, would_broadcast in models: + col_name = '_c%d' % i + if not (would_broadcast or broadcast_model): + # The data is highly skewed so we need to offset that + cutoff = int(original_rows * skew_broadcast_pct/100.0) + df = skewed_join(df, model, col_name, cutoff) + else: + # broadcast joins can handle skewed data so no need to + # do anything special + model = (model.drop('model_count') + .withColumnRenamed('data', col_name)) + model = broadcast(model) if broadcast_model else model + df = (df + .join(model, col_name, how='left') + .drop(col_name) + .withColumnRenamed('id', col_name)) + return df.fillna(0, ['_c%d' % i for i in CAT_COLS]) + + +def transform_log(df, transform_log = False): + cols = ['_c%d' % i for i in INT_COLS] + if transform_log: + for col_name in cols: + df = df.withColumn(col_name, log(df[col_name] + 3)) + return df.fillna(0, cols) + + +def would_broadcast(spark, str_path): + sc = spark.sparkContext + config = sc._jsc.hadoopConfiguration() + path = sc._jvm.org.apache.hadoop.fs.Path(str_path) + fs = sc._jvm.org.apache.hadoop.fs.FileSystem.get(config) + stat = fs.listFiles(path, True) + sum = 0 + while stat.hasNext(): + sum = sum + stat.next().getLen() + sql_conf = sc._jvm.org.apache.spark.sql.internal.SQLConf() + cutoff = sql_conf.autoBroadcastJoinThreshold() * sql_conf.fileCompressionFactor() + return sum <= cutoff + +def delete_data_source(spark, path): + sc = spark.sparkContext + config = sc._jsc.hadoopConfiguration() + path = sc._jvm.org.apache.hadoop.fs.Path(path) + sc._jvm.org.apache.hadoop.fs.FileSystem.get(config).delete(path, True) + + +def load_raw(spark, folder, day_range): + label_fields = [StructField('_c%d' % LABEL_COL, IntegerType())] + int_fields = [StructField('_c%d' % i, IntegerType()) for i in INT_COLS] + str_fields = [StructField('_c%d' % i, StringType()) for i in CAT_COLS] + + schema = StructType(label_fields + int_fields + str_fields) + paths = [os.path.join(folder, 'day_%d' % i) for i in day_range] + return (spark + .read + .schema(schema) + .option('sep', '\t') + .csv(paths)) + +def rand_ordinal(df): + # create a random long from the double precision float. + # The fraction part of a double is 52 bits, so we try to capture as much + # of that as possible + return df.withColumn('ordinal', col_of_rand_long()) + +def day_from_ordinal(df, num_days): + return df.withColumn('day', (col('ordinal') % num_days).cast(IntegerType())) + +def day_from_input_file(df): + return df.withColumn('day', substring_index(input_file_name(), '_', -1).cast(IntegerType())) + +def psudo_sort_by_day_plus(spark, df, num_days): + # Sort is very expensive because it needs to calculate the partitions + # which in our case may involve rereading all of the data. In some cases + # we can avoid this by repartitioning the data and sorting within a single partition + shuffle_parts = int(spark.conf.get('spark.sql.shuffle.partitions')) + extra_parts = int(shuffle_parts/num_days) + if extra_parts <= 0: + df = df.repartition('day') + else: + #We want to spread out the computation to about the same amount as shuffle_parts + divided = (col('ordinal') / num_days).cast(LongType()) + extra_ident = divided % extra_parts + df = df.repartition(col('day'), extra_ident) + return df.sortWithinPartitions('day', 'ordinal') + + +def load_combined_model(spark, model_folder): + path = os.path.join(model_folder, 'combined.parquet') + return spark.read.parquet(path) + + +def save_combined_model(df, model_folder, mode=None): + path = os.path.join(model_folder, 'combined.parquet') + df.write.parquet(path, mode=mode) + + +def delete_combined_model(spark, model_folder): + path = os.path.join(model_folder, 'combined.parquet') + delete_data_source(spark, path) + + +def load_low_mem_partial_ids(spark, model_folder): + path = os.path.join(model_folder, 'partial_ids.parquet') + return spark.read.parquet(path) + + +def save_low_mem_partial_ids(df, model_folder, mode=None): + path = os.path.join(model_folder, 'partial_ids.parquet') + df.write.parquet(path, mode=mode) + + +def delete_low_mem_partial_ids(spark, model_folder): + path = os.path.join(model_folder, 'partial_ids.parquet') + delete_data_source(spark, path) + + +def load_column_models(spark, model_folder, count_required): + for i in CAT_COLS: + path = os.path.join(model_folder, '%d.parquet' % i) + df = spark.read.parquet(path) + if count_required: + values = df.agg(sum('model_count').alias('sum'), count('*').alias('size')).collect() + else: + values = df.agg(sum('model_count').alias('sum')).collect() + yield i, df, values[0], would_broadcast(spark, path) + +def save_column_models(column_models, model_folder, mode=None): + for i, model in column_models: + path = os.path.join(model_folder, '%d.parquet' % i) + model.write.parquet(path, mode=mode) + + +def save_model_size(model_size, path, write_mode): + if os.path.exists(path) and write_mode == 'errorifexists': + print('Error: model size file %s exists' % path) + sys.exit(1) + + os.makedirs(os.path.dirname(os.path.abspath(path)), exist_ok=True) + with open(path, 'w') as fp: + json.dump(model_size, fp, indent=4) + + +_benchmark = {} + + +@contextmanager +def _timed(step): + start = time() + yield + end = time() + _benchmark[step] = end - start + + +def _parse_args(): + parser = ArgumentParser() + + parser.add_argument( + '--mode', + required=True, + choices=['generate_models', 'transform']) + + parser.add_argument('--days', required=True) + parser.add_argument('--input_folder', required=True) + parser.add_argument('--output_folder') + parser.add_argument('--model_size_file') + parser.add_argument('--model_folder', required=True) + parser.add_argument( + '--write_mode', + choices=['overwrite', 'errorifexists'], + default='errorifexists') + + parser.add_argument('--frequency_limit') + parser.add_argument('--no_numeric_log_col', action='store_true') + #Support for running in a lower memory environment + parser.add_argument('--low_mem', action='store_true') + parser.add_argument( + '--output_ordering', + choices=['total_random', 'day_random', 'any', 'input'], + default='total_random') + + parser.add_argument( + '--output_partitioning', + choices=['day', 'none'], + default='none') + + parser.add_argument('--dict_build_shuffle_parallel_per_day', type=int, default=2) + parser.add_argument('--apply_shuffle_parallel_per_day', type=int, default=25) + parser.add_argument('--skew_broadcast_pct', type=float, default=1.0) + + parser.add_argument('--debug_mode', action='store_true') + + args = parser.parse_args() + + start, end = args.days.split('-') + args.day_range = list(range(int(start), int(end) + 1)) + args.days = len(args.day_range) + + return args + + +def _main(): + args = _parse_args() + spark = SparkSession.builder.getOrCreate() + + df = load_raw(spark, args.input_folder, args.day_range) + + if args.mode == 'generate_models': + spark.conf.set('spark.sql.shuffle.partitions', args.days * args.dict_build_shuffle_parallel_per_day) + with _timed('generate models'): + col_counts = get_column_counts_with_frequency_limit(df, args.frequency_limit) + if args.low_mem: + # in low memory mode we have to save an intermediate result + # because if we try to do it in one query spark ends up assigning the + # partial ids in two different locations that are not guaranteed to line up + # this prevents that from happening by assigning the partial ids + # and then writeing them out. + save_low_mem_partial_ids( + assign_low_mem_partial_ids(col_counts), + args.model_folder, + args.write_mode) + save_combined_model( + assign_low_mem_final_ids(load_low_mem_partial_ids(spark, args.model_folder)), + args.model_folder, + args.write_mode) + if not args.debug_mode: + delete_low_mem_partial_ids(spark, args.model_folder) + + else: + save_combined_model( + assign_id_with_window(col_counts), + args.model_folder, + args.write_mode) + save_column_models( + get_column_models(load_combined_model(spark, args.model_folder)), + args.model_folder, + args.write_mode) + if not args.debug_mode: + delete_combined_model(spark, args.model_folder) + + if args.mode == 'transform': + spark.conf.set('spark.sql.shuffle.partitions', args.days * args.apply_shuffle_parallel_per_day) + with _timed('transform'): + if args.output_ordering == 'total_random': + df = rand_ordinal(df) + if args.output_partitioning == 'day': + df = day_from_ordinal(df, args.days) + elif args.output_ordering == 'day_random': + df = rand_ordinal(df) + df = day_from_input_file(df) + elif args.output_ordering == 'input': + df = df.withColumn('ordinal', monotonically_increasing_id()) + if args.output_partitioning == 'day': + df = day_from_input_file(df) + else: # any ordering + if args.output_partitioning == 'day': + df = day_from_input_file(df) + + models = list(load_column_models(spark, args.model_folder, bool(args.model_size_file))) + if args.model_size_file: + save_model_size( + OrderedDict(('_c%d' % i, agg.size) for i, _, agg, _ in models), + args.model_size_file, + args.write_mode) + models = [(i, df, agg.sum, flag) for i, df, agg, flag in models] + + df = apply_models( + df, + models, + not args.low_mem, + args.skew_broadcast_pct) + df = transform_log(df, not args.no_numeric_log_col) + + + if args.output_partitioning == 'day': + partitionBy = 'day' + else: + partitionBy = None + + if args.output_ordering == 'total_random': + if args.output_partitioning == 'day': + df = psudo_sort_by_day_plus(spark, df, args.days) + else: # none + # Don't do a full sort it is expensive. Order is random so + # just make it random + df = df.repartition('ordinal').sortWithinPartitions('ordinal') + + df = df.drop('ordinal') + elif args.output_ordering == 'day_random': + df = psudo_sort_by_day_plus(spark, df, args.days) + df = df.drop('ordinal') + if args.output_partitioning != 'day': + df = df.drop('day') + elif args.output_ordering == 'input': + if args.low_mem: + # This is the slowest option. We totally messed up the order so we have to put + # it back in the correct order + df = df.orderBy('ordinal') + else: + # Applying the dictionary happened within a single task so we are already really + # close to the correct order, just need to sort within the partition + df = df.sortWithinPartitions('ordinal') + df = df.drop('ordinal') + if args.output_partitioning != 'day': + df = df.drop('day') + # else: any ordering so do nothing the ordering does not matter + + df.write.parquet( + args.output_folder, + mode=args.write_mode, + partitionBy=partitionBy) + + print('=' * 100) + print(_benchmark) + + +if __name__ == '__main__': + _main() diff --git a/PyTorch/Recommendation/DLRM/preproc/verify_criteo_downloaded.sh b/PyTorch/Recommendation/DLRM/preproc/verify_criteo_downloaded.sh new file mode 100755 index 00000000..88dc8233 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/preproc/verify_criteo_downloaded.sh @@ -0,0 +1,34 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#! /bin/bash + +set -e +set -x + +download_dir=${1:-'/data/dlrm/criteo'} + +cd ${download_dir} +for i in $(seq 0 23); do + filename=day_${i} + if [ -f $filename ]; then + echo "$filename exists, OK" + else + echo "$filename does not exist. Please follow the instructions at: http://labs.criteo.com/2013/12/download-terabyte-click-logs/ to download it" + exit 1 + fi +done +cd - + +echo "Criteo data verified" diff --git a/PyTorch/Recommendation/DLRM/requirements.txt b/PyTorch/Recommendation/DLRM/requirements.txt new file mode 100644 index 00000000..132a7c34 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/requirements.txt @@ -0,0 +1,4 @@ +-e git://github.com/NVIDIA/dllogger#egg=dllogger +absl-py>=0.7.0 +numpy +pyarrow \ No newline at end of file diff --git a/PyTorch/Recommendation/DLRM/setup.py b/PyTorch/Recommendation/DLRM/setup.py new file mode 100644 index 00000000..c0b37da5 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/setup.py @@ -0,0 +1,31 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +import subprocess +from setuptools import setup, find_packages +from torch.utils.cpp_extension import BuildExtension, CppExtension, CUDAExtension + +abspath = os.path.dirname(os.path.realpath(__file__)) + +print(find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])) + +setup(name="dlrm", + package_dir={'dlrm': 'dlrm'}, + version="1.0.0", + description="Reimplementation of Facebook's DLRM", + packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), + zip_safe=False, + cmdclass={"build_ext": BuildExtension}) diff --git a/PyTorch/Recommendation/DLRM/triton/Dockerfile b/PyTorch/Recommendation/DLRM/triton/Dockerfile new file mode 100644 index 00000000..79e17a19 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/triton/Dockerfile @@ -0,0 +1,31 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG FROM_IMAGE_NAME=nvcr.io/nvidia/pytorch:20.03-py3 +FROM nvcr.io/nvidia/tritonserver:20.03-py3-clientsdk as trt +FROM ${FROM_IMAGE_NAME} + +ADD requirements.txt . +RUN pip install -r requirements.txt +RUN pip install onnxruntime + +COPY --from=trt /workspace/install /workspace/install/ + +ENV LD_LIBRARY_PATH /workspace/install/lib:${LD_LIBRARY_PATH} +RUN ls /workspace/install/python +RUN pip install /workspace/install/python/tensorrtserver-1.12.0-py3-none-linux_x86_64.whl + +ENV PYTHONPATH /workspace/dlrm +WORKDIR /workspace/dlrm +COPY . . diff --git a/PyTorch/Recommendation/DLRM/triton/README.md b/PyTorch/Recommendation/DLRM/triton/README.md new file mode 100644 index 00000000..f9d21d48 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/triton/README.md @@ -0,0 +1,278 @@ +# Deploying the DLRM model using Triton Inference Server + +The [NVIDIA Triton Inference Server](https://github.com/NVIDIA/trtis-inference-server) provides a datacenter and cloud inferencing solution optimized for NVIDIA GPUs. The server provides an inference service via an HTTP or gRPC endpoint, allowing remote clients to request inferencing for any number of GPU or CPU models being managed by the server. + +This folder contains instructions for deploment and exemplary client application to run inference on +Triton Inference Server as well as detailed performance analysis. + +## Table Of Contents + +- [Running Triton Inference Server and client](#running-triton-inference-server-and-client) +- [Latency vs Throughput](#throughputlatency-results) +- [Dynamic batching support](#dynamic-batching-support) + +## Running Triton Inference Server and client + +The very first step of deployment is to acquire trained checkpoint and model configuration for this +checkpoint. Default model configuration are stored inside `dlrm/config` directory. + +### Inference container + +Every command below is called from special inference container. To build that container go to main +repository folder and call + +`docker build -t dlrm-inference . -f triton/Dockerfile` + +This command will download dependencies and build inference container. Then run shell inside the +container: + +`docker run -it --rm --gpus device=0 --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --net=host -v :/repository dlrm-inference bash` + +Here `device=0,1,2,3` selects GPUs indexed by ordinals `0,1,2` and `3`, respectively. The server will see only these GPUs. If you write `device=all`, then the server will see all the available GPUs. `PATH_TO_MODEL_REPOSITORY` indicates location where +deployed models were stored. + +### Deploying the model + +To deploy model into Triton compatible format, `deployer.py` script can by used. This script is +meant to be run from inside deployment docker container. + +``` +usage: deployer.py [-h] (--ts-script | --ts-trace | --onnx) [--triton-no-cuda] + [--triton-model-name TRITON_MODEL_NAME] + [--triton-model-version TRITON_MODEL_VERSION] + [--triton-max-batch-size TRITON_MAX_BATCH_SIZE] + [--triton-dyn-batching-delay TRITON_DYN_BATCHING_DELAY] + [--triton-engine-count TRITON_ENGINE_COUNT] + [--save-dir SAVE_DIR] + ... + +optional arguments: + -h, --help show this help message and exit + --ts-script convert to torchscript using torch.jit.script + --ts-trace convert to torchscript using torch.jit.trace + --onnx convert to onnx using torch.onnx.export + +triton related flags: + --triton-no-cuda Use the CPU for tracing. + --triton-model-name TRITON_MODEL_NAME + exports to appropriate directory structure for triton + --triton-model-version TRITON_MODEL_VERSION + exports to appropriate directory structure for triton + --triton-max-batch-size TRITON_MAX_BATCH_SIZE + Specifies the 'max_batch_size' in the triton model + config. See the triton documentation for more info. + --triton-dyn-batching-delay TRITON_DYN_BATCHING_DELAY + Determines the dynamic_batching queue delay in + milliseconds(ms) for the triton model config. Use '0' + or '-1' to specify static batching. See the triton + documentation for more info. + --triton-engine-count TRITON_ENGINE_COUNT + Specifies the 'instance_group' count value in the + triton model config. See the triton documentation for + more info. + --save-dir SAVE_DIR Saved model directory + +other flags: + model_arguments arguments that will be ignored by deployer lib and + will be forwarded to your deployer script + +``` + +Following model specific arguments have to be specified for model deployment: + +``` + --num_numerical_features NUM_FEATURES + Number of numerical features at network input. + --embedding_dim EMBEDDING_DIM + Embedding dimensionality. + --top_mlp_sizes TOP_MLP_SIZES [TOP_MLP_SIZES ...] + Units in layers of top MLP (default: 1024 1024 512 256 1). + --bottom_mlp_sizes BOTTOM_MLP_SIZES [BOTTOM_MLP_SIZES ...] + Units in layers of bottom MLP (default: 512 256 128). + --interaction_op {cat,dot} + Interaction operator to use. + --self_interaction + Enables self interaction. + --hash_indices + Hash indices for categorical features. + --dataset DATASET + Path to dataset directory contaning model_size.json file + describing input sizes for each embedding layer. + --batch_size BATCH_SIZE + Internal dataloader batch size, usually it is the same as batch size + specified in --triton-max-batch_size flag. + --fp16 + Set a model for fp16 deployment. + --dump_perf_data DIRECTORY_NAME + Dump binary performance data that can by loaded by perf client. + --model_checkpoint MODEL_CHECKPOINT + Checkpoint file with trained model that is going to be deployed. + --cpu Export cpu model instead of gpu. +``` + +For example, to deploy model into onnx format, using half precision and max batch size 4096 called +`dlrm-onnx-16` execute: + +`python triton/deployer.py --onnx --triton-model-name dlrm-onnx-16 --triton-max-batch-size 4096 --save-dir /repository -- --model_checkpoint /results/checkpoint --fp16 --batch_size 4096 --num_numerical_features 13 --embedding_dim 128 --top_mlp_sizes 1024 1024 512 256 1 --bottom_mlp_sizes 512 256 128 --interaction_op dot --hash_indices --dataset /data` + +Where `model_checkpoint` is a checkpoint for a trained model with the same configuration as used during export and dataset (or at least dataset configuration) +is mounted under `/data` + +### Running the Triton server +**NOTE: This step is executed outside inference container** + +1. `docker pull nvcr.io/nvidia/tritonserver:20.03-py3` +2. `docker run -d --rm --gpus device=0 --ipc=host --network=host [--cpuset-cpus=0-15] -p 8000:8000 -p 8001:8001 -p 8002:8002 -v :/models nvcr.io/nvidia/tritonserver:20.03-py3 trtserver --model-store=/models --log-verbose=1 --model-control-mode=explicit` + +Here `device=0,1,2,3` selects GPUs indexed by ordinals `0,1,2` and `3`, respectively. The server will see only these GPUs. If you write `device=all`, then the server will see all the available GPUs. `PATH_TO_MODEL_REPOSITORY` indicates location where +deployed models were stored. Additional `--model-controle-mode` option allows to manually load and +unload models. This is especially useful when dealing with numerous large models like DLRM. + +For models exported to onnx format and hosted inside onnx runtime it might be required to limit visible cpu to fully utlize gpu acceleration. Use `--cpuset-cpus` docker option for that. + +### Running client + +Exemplary client `client.py` allows to check model performance against synthetic or real validation +data. Client connects to Triton server and perform inference. + +``` +usage: client.py [-h] --triton-server-url TRITON_SERVER_URL + --triton-model-name TRITON_MODEL_NAME + [--triton-model-version TRITON_MODEL_VERSION] + [--protocol PROTOCOL] [-v] [-H HTTP_HEADER] + [--num_numerical_features NUM_NUMERICAL_FEATURES] + --dataset_config DATASET_CONFIG + [--inference_data INFERENCE_DATA] [--batch_size BATCH_SIZE] + [--fp16] + +optional arguments: + -h, --help show this help message and exit + --triton-server-url TRITON_SERVER_URL + URL adress of trtion server (with port) + --triton-model-name TRITON_MODEL_NAME + Triton deployed model name + --triton-model-version TRITON_MODEL_VERSION + Triton model version + --protocol PROTOCOL Communication protocol (HTTP/GRPC) + -v, --verbose Verbose mode. + -H HTTP_HEADER HTTP headers to add to inference server requests. + Format is -H"Header:Value". + --num_numerical_features NUM_NUMERICAL_FEATURES + Number of numerical features as an input. + --dataset_config DATASET_CONFIG + Configuration file describing categorical features + --inference_data INFERENCE_DATA + Path to file with inference data. + --batch_size BATCH_SIZE + Inference request batch size + --fp16 Use 16bit for numerical input +``` + +To run inference on model exported in previous steps, using data located under +`/data/test_data.bin` execute: + +`python triton/client.py --triton-server-url localhost:8000 --protocol HTTP --triton-model-name dlrm-onnx-16 --num_numerical_features 13 --dataset_config /data/model_size.json --inference_data /data/test_data.bin --batch_size 4096 --fp16` + +or + +`python triton/client.py --triton-server-url localhost:8001 --protocol GRPC --triton-model-name dlrm-onnx-16 --num_numerical_features 13 --dataset_config /data/model_size.json --inference_data /data/test_data.bin --batch_size 4096 --fp16` + + +### Gathering performance data +Performance data can be gathered using `perf_client` tool. To use this tool, performance data needs +to be dumped during deployment. To do that, use `--dump_perf_data` option for the deployer: + +`python triton/deployer.py --onnx --triton-model-name dlrm-onnx-16 --triton-max-batch-size 4096 --save-dir /repository -- --model_checkpoint /results/checkpoint --fp16 --batch_size 4096 --num_numerical_features 13 --embedding_dim 128 --top_mlp_sizes 1024 1024 512 256 1 --bottom_mlp_sizes 512 256 128 --interaction_op dot --hash_indices --dataset /data --dump_perf_data /location/for/perfdata` + +When perf data are dumped, `perf_client` can be used with following command: + +`/workspace/install/bin/perf_client --max-threads 10 -m dlrm-onnx-16 -x 1 -p 5000 -v -i gRPC -u localhost:8001 -b 4096 -l 5000 --concurrency-range 1 --input-data /location/for/perfdata -f result.csv` + +For more information about `perf_client` please refer to [official documentation](https://docs.nvidia.com/deeplearning/sdk/triton-inference-server-master-branch-guide/docs/optimization.html#perf-client). + +## Throughput/Latency results + +Throughput is measured in recommendations/second, and latency in milliseconds. + +**ONNX FP16 inference (V100-32G)** + +| **Batch Size** | **Throughput** | **Avg Latency** | **95% Latency** | **99% Latency** | +|----------------|----------------|-----------------|-----------------|-----------------| +| 1 | 432.4 rec/s | 2.31 ms | 2.42 ms | 2.51 ms | +| 8 | 3214.4 rec/s | 2.48 ms | 2.64 ms | 2.72 ms | +| 64 | 26924.8 rec/s | 2.37 ms | 2.50 ms | 2.57 ms | +| 512 | 190413 rec/s | 2.68 ms | 2.85 ms | 2.94 ms | +| 4096 | 891290 rec/s | 4.58 ms | 4.82 ms | 4.96 ms | +| 32768 | 1218970 rec/s | 26.85 ms | 27.43 ms | 28.81 ms | +| 65536 | 1245180 rec/s | 52.55 ms | 53.46 ms | 55.83 ms | +| 131072 | 1140330 rec/s | 115.24 ms | 117.56 ms | 120.32 ms | + +**TorchScript FP16 inference (V100-32G)** + +| **Batch Size** | **Throughput** | **Avg Latency** | **95% Latency** | **99% Latency** | +|----------------|----------------|-----------------|-----------------|-----------------| +| 1 | 399.6 rec/s | 2.50 ms | 2.56 ms | 2.70 ms | +| 8 | 3563.2 rec/s | 2.24 ms | 2.29 ms | 2.42 ms | +| 64 | 28288.2 rec/s | 2.26 ms | 2.33 ms | 2.41 ms | +| 512 | 220774 rec/s | 2.31 ms | 2.38 ms | 2.44 ms | +| 4096 | 1104280 rec/s | 3.70 ms | 3.78 ms | 3.86 ms | +| 32768 | 1428680 rec/s | 22.97 ms | 23.29 ms | 24.05 ms | +| 65536 | 1402470 rec/s | 46.80 ms | 48.12 ms | 52.88 ms | +| 131072 | 1546650 rec/s | 85.27 ms | 86.17 ms | 87.05 ms | + +**TorchScript FP32 inference (V100-32G)** + +| **Batch Size** | **Throughput** | **Avg Latency** | **95% Latency** | **99% Latency** | +|----------------|----------------|-----------------|-----------------|-----------------| +| 1 | 333.7 rec/s | 2.99 ms | 3.17 ms | 3.32 ms | +| 8 | 3092.8 rec/s | 2.58 ms | 2.79 ms | 2.91 ms | +| 64 | 24435.2 rec/s | 2.61 ms | 2.78 ms | 2.89 ms | +| 512 | 169216 rec/s | 3.02 ms | 3.14 ms | 3.19 ms | +| 4096 | 718438 rec/s | 5.69 ms | 5.93 ms | 6.08 ms | +| 32768 | 842138 rec/s | 38.96 ms | 39.68 ms | 41.02 ms | +| 65536 | 892138 rec/s | 73.53 ms | 74.56 ms | 74.99 ms | +| 131072 | 904397 rec/s | 146.11 ms | 149.88 ms | 151.43 ms | + +**ONNX FP32 inference CPU (2x E5-2698 v4 @ 2.20GHz)** + +| **Batch Size** | **Throughput** | **Avg Latency** | **95% Latency** | **99% Latency** | +|----------------|----------------|-----------------|-----------------|-----------------| +| 1 | 402.5 rec/s | 2.48 ms | 2.34 ms | 3.16 ms | +| 8 | 2316 rec/s | 3.39 ms | 2.89 ms | 6.93 ms | +| 64 | 9248 rec/s | 6.91 ms | 6.73 ms | 13.14 ms | +| 512 | 14643.3 rec/s | 35.00 ms | 42.77 ms | 69.24 ms | +| 4096 | 13926.4 rec/s | 291.28 ms | 321.90 ms | 490.06 ms | +| 32768 | 13107.2 rec/s | 2387.24 ms | 2395.80 ms | 2395.80 ms | +| 65536 | 14417.9 rec/s | 5008.26 ms | 5311.47 ms | 5311.47 ms | +| 131072 | 13107.2 rec/s | 10033.19 ms | 10416.43 ms | 10416.43 ms | + +**TorchScript FP32 inference CPU (2x E5-2698 v4 @ 2.20GHz)** + +| **Batch Size** | **Throughput** | **Avg Latency** | **95% Latency** | **99% Latency** | +|----------------|----------------|-----------------|-----------------|-----------------| +| 1 | 116.3 rec/s | 8.60 ms | 9.83 ms | 14.60 ms | +| 8 | 3723.2 rec/s | 2.14 ms | 2.55 ms | 2.78 ms | +| 64 | 3014.4 rec/s | 21.22 ms | 31.34 ms | 41.28 ms | +| 512 | 6451.2 rec/s | 79.69 ms | 106.00 ms | 296.39 ms | +| 4096 | 41984 rec/s | 97.71 ms | 118.70 ms | 123.37 ms | +| 32768 | 79735.5 rec/s | 407.98 ms | 426.64 ms | 430.66 ms | +| 65536 | 79021.8 rec/s | 852.90 ms | 902.39 ms | 911.46 ms | +| 131072 | 81264.6 rec/s | 1601.28 ms | 1694.64 ms | 1711.57 ms | + +![Latency vs Throughput](./img/lat_vs_thr.png) + +The plot above shows, that the GPU is saturated with batch size 4096. However, running inference with larger batches +might be faster, than running several inference requests. Therefore, we choose 65536 as the optimal batch size. + + +## Dynamic batching support +The Triton server has a dynamic batching mechanism built in, that can be enabled. When it is enabled, then the server creates +inference batches from the received requests. Since the output of the model is a single probability, the batch size of a +single request may be large. Here it is assumed to be 4096. With dynamic batching enabled, the server will concatenate requests of this size into +an inference batch. The upper bound of the size of the inference batch is set to 65536. All these parameters are configurable. +Performance results on a single V100-32G (ONNX FP16 model) for various numbers of simultaneous requests are shown in the figure below. + +![Dynamic batching](./img/dyn_batch_concurrency.png) + +The plot above shows, that if we have a 20ms upper bound on latency, then a single GPU can handle up to 8 concurrent requests. +This leads to total throughput of 1.776.030 recommendations/sec. This means 35520 recommendations within 20ms, on a single GPU. \ No newline at end of file diff --git a/PyTorch/Recommendation/DLRM/triton/client.py b/PyTorch/Recommendation/DLRM/triton/client.py new file mode 100644 index 00000000..339defab --- /dev/null +++ b/PyTorch/Recommendation/DLRM/triton/client.py @@ -0,0 +1,133 @@ +# Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import json + +import torch + +from dlrm.data import data_loader +from dlrm.data.synthetic_dataset import SyntheticDataset + +from tqdm import tqdm +from tensorrtserver.api import * + +from sklearn.metrics import roc_auc_score +from functools import partial + +def get_data_loader(batch_size, *, data_file, model_config): + with open(model_config.dataset_config) as f: + categorical_sizes = list(json.load(f).values()) + if data_file: + data = data_loader.CriteoBinDataset(data_file=data_file, + batch_size=batch_size, subset=None, + numerical_features=model_config.num_numerical_features, + categorical_features=len(categorical_sizes), + online_shuffle=False) + else: + data = SyntheticDataset(num_entries=batch_size * 1024, batch_size=batch_size, + dense_features=model_config.num_numerical_features, + categorical_feature_sizes=categorical_sizes, + device="cpu") + + return torch.utils.data.DataLoader(data, + batch_size=None, + num_workers=0, + pin_memory=False) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--triton-server-url", type=str, required=True, + help="URL adress of trtion server (with port)") + parser.add_argument("--triton-model-name", type=str, required=True, + help="Triton deployed model name") + parser.add_argument("--triton-model-version", type=int, default=-1, + help="Triton model version") + parser.add_argument("--protocol", type=str, default="HTTP", + help="Communication protocol (HTTP/GRPC)") + parser.add_argument("-v", "--verbose", action="store_true", default=False, + help="Verbose mode.") + parser.add_argument('-H', dest='http_headers', metavar="HTTP_HEADER", + required=False, action='append', + help='HTTP headers to add to inference server requests. ' + + 'Format is -H"Header:Value".') + + parser.add_argument("--num_numerical_features", type=int, default=13) + parser.add_argument("--dataset_config", type=str, required=True) + parser.add_argument("--inference_data", type=str, + help="Path to file with inference data.") + parser.add_argument("--batch_size", type=int, default=1, + help="Inference request batch size") + parser.add_argument("--fp16", action="store_true", default=False, + help="Use 16bit for numerical input") + FLAGS = parser.parse_args() + + FLAGS.protocol = ProtocolType.from_str(FLAGS.protocol) + + # Create a health context, get the ready and live state of server. + health_ctx = ServerHealthContext(FLAGS.triton_server_url, FLAGS.protocol, + http_headers=FLAGS.http_headers, verbose=FLAGS.verbose) + print("Health for model {}".format(FLAGS.triton_model_name)) + print("Live: {}".format(health_ctx.is_live())) + print("Ready: {}".format(health_ctx.is_ready())) + + with ModelControlContext(FLAGS.triton_server_url, FLAGS.protocol) as ctx: + ctx.load(FLAGS.triton_model_name) + + # Create a status context and get server status + status_ctx = ServerStatusContext(FLAGS.triton_server_url, FLAGS.protocol, FLAGS.triton_model_name, + http_headers=FLAGS.http_headers, verbose=FLAGS.verbose) + print("Status for model {}".format(FLAGS.triton_model_name)) + print(status_ctx.get_server_status()) + + # Create the inference context for the model. + infer_ctx = InferContext(FLAGS.triton_server_url, FLAGS.protocol, FLAGS.triton_model_name, + FLAGS.triton_model_version, + http_headers=FLAGS.http_headers, verbose=FLAGS.verbose) + + dataloader = get_data_loader(FLAGS.batch_size, + data_file=FLAGS.inference_data, + model_config=FLAGS) + + results = [] + tgt_list = [] + + for num, cat, target in tqdm(dataloader): + num = num.cpu().numpy() + if FLAGS.fp16: + num = num.astype(np.float16) + cat = cat.long().cpu().numpy() + + input_dict = {"input__0": tuple(num[i] for i in range(len(num))), + "input__1": tuple(cat[i] for i in range(len(cat)))} + output_keys = ["output__0"] + output_dict = {x: InferContext.ResultFormat.RAW for x in output_keys} + + result = infer_ctx.run(input_dict, output_dict, len(num)) + results.append(result["output__0"]) + tgt_list.append(target.cpu().numpy()) + + results = np.concatenate(results).squeeze() + tgt_list = np.concatenate(tgt_list) + + score = roc_auc_score(tgt_list, results) + print(F"Model score: {score}") + + with ModelControlContext(FLAGS.triton_server_url, FLAGS.protocol) as ctx: + ctx.unload(FLAGS.triton_model_name) + + + + diff --git a/PyTorch/Recommendation/DLRM/triton/deployer.py b/PyTorch/Recommendation/DLRM/triton/deployer.py new file mode 100644 index 00000000..08dd2454 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/triton/deployer.py @@ -0,0 +1,127 @@ +#!/usr/bin/python + +# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import torch +import argparse +import deployer_lib +import json +# +import sys +sys.path.append('../') + +from dlrm.model import Dlrm +from dlrm.data.synthetic_dataset import SyntheticDataset + +def get_model_args(model_args): + parser = argparse.ArgumentParser() + parser.add_argument("--batch_size", default=1, type=int) + parser.add_argument("--fp16", action="store_true", default=False) + parser.add_argument("--dump_perf_data", type=str, default=None) + parser.add_argument("--model_checkpoint", type=str, default=None) + + parser.add_argument("--num_numerical_features", type=int, default=13) + parser.add_argument("--embedding_dim", type=int, default=128) + parser.add_argument("--top_mlp_sizes", type=int, nargs="+", + default=[1024, 1024, 512, 256, 1]) + parser.add_argument("--bottom_mlp_sizes", type=int, nargs="+", + default=[512, 256, 128]) + parser.add_argument("--interaction_op", type=str, default="dot", + choices=["dot", "cat"]) + parser.add_argument("--self_interaction", default=False, + action="store_true") + parser.add_argument("--hash_indices", default=False, + action="store_true") + parser.add_argument("--cpu", default=False, action="store_true") + parser.add_argument("--dataset", type=str, required=True) + + return parser.parse_args(model_args) + +def initialize_model(args, categorical_sizes): + ''' return model, ready to trace ''' + base_device = "cuda:0" if not args.cpu else "cpu" + model_config = { + "top_mlp_sizes": args.top_mlp_sizes, + "bottom_mlp_sizes": args.bottom_mlp_sizes, + "embedding_dim": args.embedding_dim, + "interaction_op": args.interaction_op, + "self_interaction": args.self_interaction, + "categorical_feature_sizes": categorical_sizes, + "num_numerical_features": args.num_numerical_features, + "hash_indices": args.hash_indices, + "base_device": base_device + } + + model = Dlrm.from_dict(model_config, sigmoid=True) + model.to(base_device) + + if args.model_checkpoint: + model.load_state_dict(torch.load(args.model_checkpoint, + map_location="cpu")) + + if args.fp16: + model = model.half() + + return model + +def get_dataloader(args, categorical_sizes): + dataset_test = SyntheticDataset(num_entries=2000, + batch_size=args.batch_size, + dense_features=args.num_numerical_features, + categorical_feature_sizes=categorical_sizes, + device="cpu" if args.cpu else "cuda:0") + class RemoveOutput: + def __init__(self, dataset): + self.dataset = dataset + + def __getitem__(self, idx): + value = self.dataset[idx] + if args.fp16: + value = (value[0].half(), value[1].long(), value[2]) + else: + value = (value[0], value[1].long(), value[2]) + return value[:-1] + + def __len__(self): + return len(self.dataset) + + test_loader = torch.utils.data.DataLoader(RemoveOutput(dataset_test), + batch_size=None, + num_workers=0, + pin_memory=False) + + return test_loader + + +if __name__=='__main__': + deployer, model_args = deployer_lib.create_deployer(sys.argv[1:], + get_model_args) # deployer and returns removed deployer arguments + with open(os.path.join(model_args.dataset, "model_size.json")) as f: + categorical_sizes = list(json.load(f).values()) + + model = initialize_model(model_args, categorical_sizes) + dataloader = get_dataloader(model_args, categorical_sizes) + + if model_args.dump_perf_data: + input_0, input_1 = next(iter(dataloader)) + if model_args.fp16: + input_0 = input_0.half() + + os.makedirs(model_args.dump_perf_data, exist_ok=True) + input_0.detach().cpu().numpy()[0].tofile(os.path.join(model_args.dump_perf_data, "input__0")) + input_1.detach().cpu().numpy()[0].tofile(os.path.join(model_args.dump_perf_data, "input__1")) + + deployer.deploy(dataloader, model) diff --git a/PyTorch/Recommendation/DLRM/triton/deployer_lib.py b/PyTorch/Recommendation/DLRM/triton/deployer_lib.py new file mode 100644 index 00000000..b18b5f24 --- /dev/null +++ b/PyTorch/Recommendation/DLRM/triton/deployer_lib.py @@ -0,0 +1,540 @@ +#!/usr/bin/python + +# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +import shutil +import time +import json +import onnx +import torch +import argparse +import statistics +import onnxruntime +from collections import Counter + + +torch_type_to_triton_type = { + torch.bool: 'TYPE_BOOL', + torch.int8: 'TYPE_INT8', + torch.int16: 'TYPE_INT16', + torch.int32: 'TYPE_INT32', + torch.int64: 'TYPE_INT64', + torch.uint8: 'TYPE_UINT8', + torch.float16: 'TYPE_FP16', + torch.float32: 'TYPE_FP32', + torch.float64: 'TYPE_FP64' +} + +CONFIG_TEMPLATE = r""" +name: "{model_name}" +platform: "{platform}" +max_batch_size: {max_batch_size} +input [ + {spec_inputs} +] +output [ + {spec_outputs} +] +{dynamic_batching} +{model_optimizations} +instance_group [ + {{ + count: {engine_count} + kind: KIND_GPU + gpus: [ {gpu_list} ] + }} +] +""" + +INPUT_TEMPLATE = r""" +{{ + name: "input__{num}" + data_type: {type} + dims: {dims} + {reshape} +}},""" + +OUTPUT_TEMPLATE = r""" +{{ + name: "output__{num}" + data_type: {type} + dims: {dims} + {reshape} +}},""" + +MODEL_OPTIMIZATION_TEMPLATE = r""" +optimization {{ + execution_accelerators {{ + gpu_execution_accelerator: [ + {{ + name: "tensorrt" + }} + ] + }} +}} +""" + + +def remove_empty_lines(text): + ''' removes empty lines from text, returns the result ''' + ret = "".join([s for s in text.strip().splitlines(True) if s.strip()]) + return ret + + +def create_deployer(argv, model_args_parser): + ''' takes a list of arguments, returns a deployer object and the list of unused arguments ''' + parser = argparse.ArgumentParser() + # required args + method = parser.add_mutually_exclusive_group(required=True) + method.add_argument('--ts-script', + action='store_true', + help='convert to torchscript using torch.jit.script') + method.add_argument('--ts-trace', + action='store_true', + help='convert to torchscript using torch.jit.trace') + method.add_argument('--onnx', + action='store_true', + help='convert to onnx using torch.onnx.export') + # triton related args + arguments = parser.add_argument_group('triton related flags') + arguments.add_argument('--triton-no-cuda', + action='store_true', + help='Use the CPU for tracing.') + arguments.add_argument( + '--triton-model-name', + type=str, + default="model", + help="exports to appropriate directory structure for triton") + arguments.add_argument( + "--triton-model-version", + type=int, + default=1, + help="exports to appropriate directory structure for triton") + arguments.add_argument( + "--triton-max-batch-size", + type=int, + default=8, + help="Specifies the 'max_batch_size' in the triton model config.\ + See the triton documentation for more info.") + arguments.add_argument( + "--triton-dyn-batching-delay", + type=float, + default=0, + help= + "Determines the dynamic_batching queue delay in milliseconds(ms) for\ + the triton model config. Use '0' or '-1' to specify static batching.\ + See the triton documentation for more info.") + arguments.add_argument( + "--triton-engine-count", + type=int, + default=1, + help= + "Specifies the 'instance_group' count value in the triton model config.\ + See the triton documentation for more info.") + arguments.add_argument('--save-dir', + type=str, + default='./triton_models', + help='Saved model directory') + # other args + arguments = parser.add_argument_group('other flags') + + # remainder args + arguments.add_argument( + 'model_arguments', + nargs=argparse.REMAINDER, + help= + 'arguments that will be ignored by deployer lib and will be forwarded to your deployer script' + ) + # + args = parser.parse_args(argv) + model_args = model_args_parser(args.model_arguments[1:]) + + model_args_no_def = { + k: v + for k, v in vars(model_args).items() + if k in [arg[2:] for arg in args.model_arguments[1:]] + } + deployer = Deployer(args, model_args_no_def) + # + + return deployer, model_args + + +class DeployerLibrary: + def __init__(self, args, model_args): + self.args = args + self.model_args = model_args + self.platform = None + + def set_platform(self, platform): + ''' sets the platform + :: platform :: "pytorch_libtorch" or "onnxruntime_onnx" + ''' + self.platform = platform + + def prepare_inputs(self, dataloader, device): + ''' load sample inputs to device ''' + inputs = [] + for batch in dataloader: + if type(batch) is torch.Tensor: + batch_d = batch.to(device) + batch_d = (batch_d, ) + inputs.append(batch_d) + else: + batch_d = [] + for x in batch: + assert type(x) is torch.Tensor, "input is not a tensor" + batch_d.append(x.to(device) if device else x) + batch_d = tuple(batch_d) + inputs.append(batch_d) + return inputs + + def get_list_of_shapes(self, l, fun): + ''' returns the list of min/max shapes, depending on fun + :: l :: list of tuples of tensors + :: fun :: min or max + ''' + tensor_tuple = l[0] + shapes = [list(x.shape) for x in tensor_tuple] + for tensor_tuple in l: + assert len(tensor_tuple) == len( + shapes), "tensors with varying shape lengths are not supported" + for i, x in enumerate(tensor_tuple): + for j in range(len(x.shape)): + shapes[i][j] = fun(shapes[i][j], x.shape[j]) + return shapes # a list of shapes + + def get_tuple_of_min_shapes(self, l): + ''' returns the tuple of min shapes + :: l :: list of tuples of tensors ''' + shapes = self.get_list_of_shapes(l, min) + min_batch = 1 + shapes = [[min_batch, *shape[1:]] for shape in shapes] + shapes = tuple(shapes) + return shapes # tuple of min shapes + + def get_tuple_of_max_shapes(self, l): + ''' returns the tuple of max shapes + :: l :: list of tuples of tensors ''' + shapes = self.get_list_of_shapes(l, max) + max_batch = max(2, shapes[0][0]) + shapes = [[max_batch, *shape[1:]] for shape in shapes] + shapes = tuple(shapes) + return shapes # tuple of max shapes + + def get_tuple_of_opt_shapes(self, l): + ''' returns the tuple of opt shapes + :: l :: list of tuples of tensors ''' + counter = Counter() + for tensor_tuple in l: + shapes = [x.shape for x in tensor_tuple] + shapes = tuple(shapes) + counter[shapes] += 1 + shapes = counter.most_common(1)[0][0] + return shapes # tuple of most common occuring shapes + + def get_tuple_of_dynamic_shapes(self, l): + ''' returns a tuple of dynamic shapes: variable tensor dimensions + (for ex. batch size) occur as -1 in the tuple + :: l :: list of tuples of tensors ''' + tensor_tuple = l[0] + shapes = [list(x.shape) for x in tensor_tuple] + for tensor_tuple in l: + err_msg = "tensors with varying shape lengths are not supported" + assert len(tensor_tuple) == len(shapes), err_msg + for i, x in enumerate(tensor_tuple): + for j in range(len(x.shape)): + if shapes[i][j] != x.shape[j] or j == 0: + shapes[i][j] = -1 + shapes = tuple(shapes) + return shapes # tuple of dynamic shapes + + def run_models(self, models, inputs): + ''' run the models on inputs, return the outputs and execution times ''' + ret = [] + for model in models: + torch.cuda.synchronize() + time_start = time.time() + outputs = [] + for input in inputs: + with torch.no_grad(): + output = model(*input) + if type(output) is torch.Tensor: + output = [output] + outputs.append(output) + torch.cuda.synchronize() + time_end = time.time() + t = time_end - time_start + ret.append(outputs) + ret.append(t) + return ret + + def compute_errors(self, outputs_A, outputs_B): + ''' returns the list of L_inf errors computed over every single output tensor ''' + Linf_errors = [] + for output_A, output_B in zip(outputs_A, outputs_B): + for x, y in zip(output_A, output_B): + error = (x - y).norm(float('inf')).item() + Linf_errors.append(error) + return Linf_errors + + def print_errors(self, Linf_errors): + ''' print various statistcs of Linf errors ''' + print() + print("conversion correctness test results") + print("-----------------------------------") + print("maximal absolute error over dataset (L_inf): ", + max(Linf_errors)) + print() + print("average L_inf error over output tensors: ", + statistics.mean(Linf_errors)) + print("variance of L_inf error over output tensors: ", + statistics.variance(Linf_errors)) + print("stddev of L_inf error over output tensors: ", + statistics.stdev(Linf_errors)) + print() + + def write_config(self, + config_filename, + input_shapes, + input_types, + output_shapes, + output_types): + ''' writes triton config file + :: config_filename :: the file to write the config file into + :: input_shapes :: tuple of dynamic shapes of the input tensors + :: input_types :: tuple of torch types of the input tensors + :: output_shapes :: tuple of dynamic shapes of the output tensors + :: output_types :: tuple of torch types of the output tensors + ''' + assert self.platform is not None, "error - platform is not set" + + config_template = CONFIG_TEMPLATE + accelerator_template = MODEL_OPTIMIZATION_TEMPLATE + input_template = INPUT_TEMPLATE + spec_inputs = r"""""" + for i,(shape,typ) in enumerate(zip(input_shapes,input_types)): + d = { + 'num' : str(i), + 'type': torch_type_to_triton_type[typ], + 'dims': str([1]) if len(shape) == 1 else str(list(shape)[1:]) # first dimension is the batch size + } + d['reshape'] = 'reshape: { shape: [ ] }' if len(shape) == 1 else '' + spec_inputs += input_template.format_map(d) + spec_inputs = spec_inputs[:-1] + + output_template = OUTPUT_TEMPLATE + spec_outputs = r"""""" + for i,(shape,typ) in enumerate(zip(output_shapes,output_types)): + d = { + 'num' : str(i), + 'type': torch_type_to_triton_type[typ], + 'dims': str([1]) if len(shape) == 1 else str(list(shape)[1:]) # first dimension is the batch size + } + d['reshape'] = 'reshape: { shape: [ ] }' if len(shape) == 1 else '' + spec_outputs += output_template.format_map(d) + spec_outputs = spec_outputs[:-1] + + batching_str = "" + parameters_str = "" + max_batch_size = self.args.triton_max_batch_size + accelerator_str = "" + + if (self.args.triton_dyn_batching_delay > 0): + # Use only full and half full batches + pref_batch_size = [int(max_batch_size / 2.0), max_batch_size] + + batching_str = r""" +dynamic_batching {{ + preferred_batch_size: [{0}] + max_queue_delay_microseconds: {1} +}}""".format(", ".join([str(x) for x in pref_batch_size]), + int(self.args.triton_dyn_batching_delay * 1000.0)) + + if self.platform == 'onnxruntime_onnx': + accelerator_str = accelerator_template.format_map({}) + + config_values = { + "model_name": + self.args.triton_model_name, + "platform": + self.platform, + "max_batch_size": + max_batch_size, + "spec_inputs": + spec_inputs, + "spec_outputs": + spec_outputs, + "dynamic_batching": + batching_str, + "model_parameters": + parameters_str, + "model_optimizations": + accelerator_str, + "gpu_list": + ", ".join([str(x) for x in range(torch.cuda.device_count())]), + "engine_count": + self.args.triton_engine_count + } + + # write config + with open(config_filename, "w") as file: + final_config_str = config_template.format_map(config_values) + final_config_str = remove_empty_lines(final_config_str) + file.write(final_config_str) + + +class Deployer: + def __init__(self, args, model_args): + self.args = args + self.lib = DeployerLibrary(args, model_args) + + def deploy(self, dataloader, model): + ''' deploy the model and test for correctness with dataloader ''' + if self.args.ts_script or self.args.ts_trace: + self.lib.set_platform("pytorch_libtorch") + print("deploying model " + self.args.triton_model_name + + " in format " + self.lib.platform) + self.to_triton_torchscript(dataloader, model) + elif self.args.onnx: + self.lib.set_platform("onnxruntime_onnx") + print("deploying model " + self.args.triton_model_name + + " in format " + self.lib.platform) + self.to_triton_onnx(dataloader, model) + else: + assert False, "error" + print("done") + + def to_triton_onnx(self, dataloader, model): + ''' export the model to onnx and test correctness on dataloader ''' + model.eval() + assert not model.training, "internal error - model should be in eval() mode! " + + # prepare inputs + inputs = self.lib.prepare_inputs(dataloader, device=None) + + # generate outputs + outputs = [] + for input in inputs: + with torch.no_grad(): + output = model(*input) + if type(output) is torch.Tensor: + output = [output] + outputs.append(output) + + # generate input shapes - dynamic tensor shape support + input_shapes = self.lib.get_tuple_of_dynamic_shapes(inputs) + + # generate output shapes - dynamic tensor shape support + output_shapes = self.lib.get_tuple_of_dynamic_shapes(outputs) + + # generate input types + input_types = [x.dtype for x in inputs[0]] + + # generate output types + output_types = [x.dtype for x in outputs[0]] + + # get input names + rng = range(len(input_types)) + input_names = ["input__" + str(num) for num in rng] + + # get output names + rng = range(len(output_types)) + output_names = ["output__" + str(num) for num in rng] + + # prepare save path + model_folder = os.path.join(self.args.save_dir, self.args.triton_model_name) + version_folder = os.path.join(model_folder, str(self.args.triton_model_version)) + if not os.path.exists(version_folder): + os.makedirs(version_folder) + + final_model_path = os.path.join(version_folder, 'model.onnx') + if not os.path.exists(final_model_path): + os.makedirs(final_model_path) + final_model_path = os.path.join(final_model_path, 'model.onnx') + + # get indices of dynamic input and output shapes + dynamic_axes = {} + for input_name,input_shape in zip(input_names,input_shapes): + dynamic_axes[input_name] = [i for i,x in enumerate(input_shape) if x == -1] + for output_name,output_shape in zip(output_names,output_shapes): + dynamic_axes[output_name] = [i for i,x in enumerate(output_shape) if x == -1] + + # export the model + assert not model.training, "internal error - model should be in eval() mode! " + with torch.no_grad(): + torch.onnx.export(model, inputs[0], final_model_path, verbose=False, + input_names=input_names, output_names=output_names, + dynamic_axes=dynamic_axes, opset_version=11, + use_external_data_format=True) + + config_filename = os.path.join(model_folder, "config.pbtxt") + self.lib.write_config(config_filename, + input_shapes, input_types, + output_shapes, output_types) + + def to_triton_torchscript(self, dataloader, model): + ''' export the model to torchscript and test correctness on dataloader ''' + model.eval() + assert not model.training, "internal error - model should be in eval() mode! " + + # prepare inputs + inputs = self.lib.prepare_inputs(dataloader, device=None) + + # generate input shapes - dynamic tensor shape support + input_shapes = self.lib.get_tuple_of_dynamic_shapes(inputs) + + # generate input types + input_types = [x.dtype for x in inputs[0]] + + # prepare save path + model_folder = os.path.join(self.args.save_dir, self.args.triton_model_name) + version_folder = os.path.join(model_folder, str(self.args.triton_model_version)) + if not os.path.exists(version_folder): + os.makedirs(version_folder) + final_model_path = os.path.join(version_folder, 'model.pt') + + # convert the model + with torch.no_grad(): + if self.args.ts_trace: # trace it + model_ts = torch.jit.trace(model, inputs[0]) + if self.args.ts_script: # script it + model_ts = torch.jit.script(model) + + # generate outputs + outputs = [] + for input in inputs: + with torch.no_grad(): + output = model(*input) + if type(output) is torch.Tensor: + output = [output] + outputs.append(output) + + # save the model + torch.jit.save(model_ts, final_model_path) + + # generate output shapes - dynamic tensor shape support + output_shapes = self.lib.get_tuple_of_dynamic_shapes(outputs) + + # generate output types + output_types = [x.dtype for x in outputs[0]] + + # now we build the config for triton + config_filename = os.path.join(model_folder, "config.pbtxt") + self.lib.write_config(config_filename, + input_shapes, input_types, + output_shapes, output_types) diff --git a/PyTorch/Recommendation/DLRM/triton/img/dyn_batch_concurrency.png b/PyTorch/Recommendation/DLRM/triton/img/dyn_batch_concurrency.png new file mode 100644 index 0000000000000000000000000000000000000000..f7afed91d4102bda94f6eb165b8e21a0a61b8fa4 GIT binary patch literal 27992 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index c6f55be9..95b16996 100644 --- a/README.md +++ b/README.md @@ -25,13 +25,14 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. - __VNet__ [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Segmentation/VNet)] ### Natural Language Processing +- __BERT__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT)] - __GNMT__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/GNMT)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Translation/GNMT)] - __Transformer__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Translation/Transformer)] -- __BERT__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/BERT)] - __Transformer-XL__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/LanguageModeling/Transformer-XL)] ### Recommender Systems +- __DLRM__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/DLRM)] - __NCF__ [[PyTorch](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF)] [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/NCF)] - __VAE-CF__ [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/VAE-CF)] - __WideAndDeep__ [[TensorFlow](https://github.com/NVIDIA/DeepLearningExamples/tree/master/TensorFlow/Recommendation/WideAndDeep)] @@ -70,6 +71,7 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. | [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT) |PyTorch | N/A | Yes | Yes | Yes | - | - | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT/triton) | - | | [Transformer-XL](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL) |PyTorch | N/A | Yes | Yes | Yes | - | - | - | - | | [Neural Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | Yes | - | - |- | - | - | +| [DLRM](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | Yes | - | - |- | - | - | | [Mask R-CNN](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Segmentation/MaskRCNN) |PyTorch | N/A | Yes | Yes | - | - | - | - | - | | [Jasper](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper) |PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper/trtis) | - | | [Tacotron 2 And WaveGlow v1.10](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2) | PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2/notebooks/trtis) | - | From 87ec806d7aaca38b871319f3aa84c0c5e03a45f4 Mon Sep 17 00:00:00 2001 From: Przemek Strzelczyk Date: Wed, 8 Apr 2020 09:21:01 -0700 Subject: [PATCH 6/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 95b16996..0e518d55 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ The examples are organized first by framework, such as TensorFlow, PyTorch, etc. | [BERT](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT) |PyTorch | N/A | Yes | Yes | Yes | - | - | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/BERT/triton) | - | | [Transformer-XL](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/LanguageModeling/Transformer-XL) |PyTorch | N/A | Yes | Yes | Yes | - | - | - | - | | [Neural Collaborative Filtering](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | Yes | - | - |- | - | - | -| [DLRM](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | Yes | - | - |- | - | - | +| [DLRM](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Recommendation/NCF) |PyTorch | N/A | Yes | - | - | - |- | - | - | | [Mask R-CNN](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/Segmentation/MaskRCNN) |PyTorch | N/A | Yes | Yes | - | - | - | - | - | | [Jasper](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper) |PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechRecognition/Jasper/trtis) | - | | [Tacotron 2 And WaveGlow v1.10](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2) | PyTorch | N/A | Yes | Yes | - | Yes | Yes | [Yes](https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2/notebooks/trtis) | - | From 1f04b9fe4dcbb3cec6c10d45ad98bcdc867f41a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Marcinkiewicz?= <43240942+mmarcinkiewicz@users.noreply.github.com> Date: Mon, 13 Apr 2020 19:32:09 +0200 Subject: [PATCH 7/9] Update Dockerfile --- TensorFlow2/Segmentation/UNet_Medical/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/TensorFlow2/Segmentation/UNet_Medical/Dockerfile b/TensorFlow2/Segmentation/UNet_Medical/Dockerfile index c9143c36..e7b74663 100755 --- a/TensorFlow2/Segmentation/UNet_Medical/Dockerfile +++ b/TensorFlow2/Segmentation/UNet_Medical/Dockerfile @@ -1,8 +1,7 @@ -ARG FROM_IMAGE_NAME=gitlab-master.nvidia.com:5005/dl/dgx/tensorflow:20.02-tf2-py3-devel -FROM ${FROM_IMAGE_NAME} +FROM nvcr.io/nvidia/tensorflow:20.02-tf2-py3 ADD . /workspace/unet WORKDIR /workspace/unet RUN pip install --upgrade pip -RUN pip install -r requirements.txt \ No newline at end of file +RUN pip install -r requirements.txt From 063de87218a0c19528cd241f423751700a74c6e0 Mon Sep 17 00:00:00 2001 From: gkarch Date: Mon, 20 Apr 2020 17:01:35 +0200 Subject: [PATCH 8/9] fixing trt tests --- .../SpeechSynthesis/Tacotron2/test_infer.sh | 9 +- .../Tacotron2/trt/inference_trt.py | 11 +- .../Tacotron2/trt/run_latency_tests_trt.sh | 7 +- .../Tacotron2/trt/test_infer_trt.py | 265 ++++++++++++++++++ 4 files changed, 277 insertions(+), 15 deletions(-) create mode 100644 PyTorch/SpeechSynthesis/Tacotron2/trt/test_infer_trt.py diff --git a/PyTorch/SpeechSynthesis/Tacotron2/test_infer.sh b/PyTorch/SpeechSynthesis/Tacotron2/test_infer.sh index 539d69d4..feeaed23 100644 --- a/PyTorch/SpeechSynthesis/Tacotron2/test_infer.sh +++ b/PyTorch/SpeechSynthesis/Tacotron2/test_infer.sh @@ -66,6 +66,9 @@ done if [ "$PRECISION" = "amp" ] then AMP_RUN="--amp-run" +elif [ "$PRECISION" = "fp16" ] +then + AMP_RUN="--fp16" fi LOG_SUFFIX=bs${BATCH_SIZE}_il${INPUT_LENGTH}_${PRECISION} @@ -76,14 +79,14 @@ LOGFILE=log_${LOG_SUFFIX}.log if [ "$TEST_PROGRAM" = "trt/test_infer_trt.py" ] then - MODELS="--encoder $ENCODER_CKPT --decoder $DECODER_CKPT --postnet $POSTNET_CKPT" + TACOTRON2_PARAMS="--encoder $ENCODER_CKPT --decoder $DECODER_CKPT --postnet $POSTNET_CKPT" else - MODELS="--tacotron2 $TACOTRON2_CKPT" + TACOTRON2_PARAMS="--tacotron2 $TACOTRON2_CKPT" fi set -x python $TEST_PROGRAM \ - $MODELS \ + $TACOTRON2_PARAMS \ --waveglow $WAVEGLOW_CKPT \ --batch-size $BATCH_SIZE \ --input-length $INPUT_LENGTH $AMP_RUN \ diff --git a/PyTorch/SpeechSynthesis/Tacotron2/trt/inference_trt.py b/PyTorch/SpeechSynthesis/Tacotron2/trt/inference_trt.py index 8c8dbd41..6f58ea90 100644 --- a/PyTorch/SpeechSynthesis/Tacotron2/trt/inference_trt.py +++ b/PyTorch/SpeechSynthesis/Tacotron2/trt/inference_trt.py @@ -218,22 +218,23 @@ def infer_tacotron2_trt(encoder, decoder_iter, postnet, decoder_outputs = init_decoder_outputs(memory, sequence_lengths) print("Running Tacotron2 Decoder") + measurements_decoder = {} while True: decoder_tensors = init_decoder_tensors(decoder_inputs, decoder_outputs) - with MeasureTime(measurements, "step"): + with MeasureTime(measurements_decoder, "step"): run_trt_engine(decoder_context, decoder_iter, decoder_tensors) if first_iter: mel_outputs = torch.unsqueeze(decoder_outputs[7], 2) gate_outputs = torch.unsqueeze(decoder_outputs[8], 2) alignments = torch.unsqueeze(decoder_outputs[4], 2) - measurements['tacotron2_decoder_time'] = measurements['step'] + measurements['tacotron2_decoder_time'] = measurements_decoder['step'] first_iter = False else: mel_outputs = torch.cat((mel_outputs, torch.unsqueeze(decoder_outputs[7], 2)), 2) gate_outputs = torch.cat((gate_outputs, torch.unsqueeze(decoder_outputs[8], 2)), 2) alignments = torch.cat((alignments, torch.unsqueeze(decoder_outputs[4], 2)), 2) - measurements['tacotron2_decoder_time'] += measurements['step'] + measurements['tacotron2_decoder_time'] += measurements_decoder['step'] dec = torch.le(torch.sigmoid(decoder_outputs[8]), gate_threshold).to(torch.int32).squeeze(1) not_finished = not_finished*dec @@ -271,10 +272,8 @@ def infer_waveglow_trt(waveglow, waveglow_context, mel, measurements, fp16): mel_size = mel.size(2) batch_size = mel.size(0) stride = 256 - kernel_size = 1024 n_group = 8 - z_size = (mel_size-1)*stride+(kernel_size-1)+1 - z_size = z_size - (kernel_size-stride) + z_size = mel_size*stride z_size = z_size//n_group z = torch.randn(batch_size, n_group, z_size, 1).cuda() audios = torch.zeros(batch_size, mel_size*stride).cuda() diff --git a/PyTorch/SpeechSynthesis/Tacotron2/trt/run_latency_tests_trt.sh b/PyTorch/SpeechSynthesis/Tacotron2/trt/run_latency_tests_trt.sh index 50118673..0c80c70a 100644 --- a/PyTorch/SpeechSynthesis/Tacotron2/trt/run_latency_tests_trt.sh +++ b/PyTorch/SpeechSynthesis/Tacotron2/trt/run_latency_tests_trt.sh @@ -1,6 +1 @@ -#!/bin/bash - -for i in {1..1003} -do - python trt/inference_trt.py -i ./phrases/phrase_1_128.txt --encoder ./output/encoder_fp16.engine --decoder ./output/decoder_iter_fp16.engine --postnet ./output/postnet_fp16.engine --waveglow ./output/waveglow_fp16.engine -o output/ --fp16 >> tmp_log_bs1_fp16.log 2>&1 -done +bash test_infer.sh --test trt/test_infer_trt.py -bs 1 -il 128 -p fp16 --num-iters 1003 --encoder ./output/encoder_fp16.engine --decoder ./output/decoder_iter_fp16.engine --postnet ./output/postnet_fp16.engine --waveglow ./output/waveglow_fp16.engine diff --git a/PyTorch/SpeechSynthesis/Tacotron2/trt/test_infer_trt.py b/PyTorch/SpeechSynthesis/Tacotron2/trt/test_infer_trt.py new file mode 100644 index 00000000..47c6086c --- /dev/null +++ b/PyTorch/SpeechSynthesis/Tacotron2/trt/test_infer_trt.py @@ -0,0 +1,265 @@ +# ***************************************************************************** +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the NVIDIA CORPORATION nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ***************************************************************************** + +import sys +sys.path.append('./') +from tacotron2.text import text_to_sequence +import models +import torch +import argparse +import numpy as np +from scipy.io.wavfile import write + +from inference import checkpoint_from_distributed, unwrap_distributed, MeasureTime, prepare_input_sequence +from inference_trt import infer_tacotron2_trt, infer_waveglow_trt + +from trt.trt_utils import load_engine, run_trt_engine +import tensorrt as trt + +import time +import dllogger as DLLogger +from dllogger import StdOutBackend, JSONStreamBackend, Verbosity + +from apex import amp + +def parse_args(parser): + """ + Parse commandline arguments. + """ + parser.add_argument('--encoder', type=str, required=True, + help='full path to the Encoder engine') + parser.add_argument('--decoder', type=str, required=True, + help='full path to the DecoderIter engine') + parser.add_argument('--postnet', type=str, required=True, + help='full path to the Postnet engine') + parser.add_argument('--waveglow', type=str, required=True, + help='full path to the WaveGlow engine') + parser.add_argument('--waveglow-ckpt', type=str, default="", + help='full path to the WaveGlow model checkpoint file') + parser.add_argument('-s', '--sigma-infer', default=0.6, type=float) + parser.add_argument('-sr', '--sampling-rate', default=22050, type=int, + help='Sampling rate') + parser.add_argument('--fp16', action='store_true', + help='inference with FP16') + parser.add_argument('--log-file', type=str, default='nvlog.json', + help='Filename for logging') + parser.add_argument('--stft-hop-length', type=int, default=256, + help='STFT hop length for estimating audio length from mel size') + parser.add_argument('--num-iters', type=int, default=10, + help='Number of iterations') + parser.add_argument('-il', '--input-length', type=int, default=64, + help='Input length') + parser.add_argument('-bs', '--batch-size', type=int, default=1, + help='Batch size') + + return parser + + +def load_and_setup_model(model_name, parser, checkpoint, amp_run, to_cuda=True): + model_parser = models.parse_model_args(model_name, parser, add_help=False) + model_args, _ = model_parser.parse_known_args() + + model_config = models.get_model_config(model_name, model_args) + model = models.get_model(model_name, model_config, to_cuda=to_cuda) + + if checkpoint is not None: + if to_cuda: + state_dict = torch.load(checkpoint)['state_dict'] + else: + state_dict = torch.load(checkpoint,map_location='cpu')['state_dict'] + if checkpoint_from_distributed(state_dict): + state_dict = unwrap_distributed(state_dict) + + model.load_state_dict(state_dict) + + if model_name == "WaveGlow": + model = model.remove_weightnorm(model) + + model.eval() + + if amp_run: + model, _ = amp.initialize(model, [], opt_level="O3") + + return model + + +def print_stats(measurements_all): + + print(np.mean(measurements_all['latency'][1:]), + np.mean(measurements_all['throughput'][1:]), + np.mean(measurements_all['pre_processing'][1:]), + np.mean(measurements_all['type_conversion'][1:])+ + np.mean(measurements_all['storage'][1:])+ + np.mean(measurements_all['data_transfer'][1:]), + np.mean(measurements_all['num_mels_per_audio'][1:])) + + throughput = measurements_all['throughput'] + preprocessing = measurements_all['pre_processing'] + type_conversion = measurements_all['type_conversion'] + storage = measurements_all['storage'] + data_transfer = measurements_all['data_transfer'] + postprocessing = [sum(p) for p in zip(type_conversion,storage,data_transfer)] + latency = measurements_all['latency'] + num_mels_per_audio = measurements_all['num_mels_per_audio'] + + latency.sort() + + cf_50 = max(latency[:int(len(latency)*0.50)]) + cf_90 = max(latency[:int(len(latency)*0.90)]) + cf_95 = max(latency[:int(len(latency)*0.95)]) + cf_99 = max(latency[:int(len(latency)*0.99)]) + cf_100 = max(latency[:int(len(latency)*1.0)]) + + print("Throughput average (samples/sec) = {:.4f}".format(np.mean(throughput))) + print("Preprocessing average (seconds) = {:.4f}".format(np.mean(preprocessing))) + print("Postprocessing average (seconds) = {:.4f}".format(np.mean(postprocessing))) + print("Number of mels per audio average = {}".format(np.mean(num_mels_per_audio))) + print("Latency average (seconds) = {:.4f}".format(np.mean(latency))) + print("Latency std (seconds) = {:.4f}".format(np.std(latency))) + print("Latency cl 50 (seconds) = {:.4f}".format(cf_50)) + print("Latency cl 90 (seconds) = {:.4f}".format(cf_90)) + print("Latency cl 95 (seconds) = {:.4f}".format(cf_95)) + print("Latency cl 99 (seconds) = {:.4f}".format(cf_99)) + print("Latency cl 100 (seconds) = {:.4f}".format(cf_100)) + + +def main(): + """ + Launches text to speech (inference). + Inference is executed on a single GPU. + """ + parser = argparse.ArgumentParser( + description='PyTorch Tacotron 2 Inference') + parser = parse_args(parser) + args, unknown_args = parser.parse_known_args() + + DLLogger.init(backends=[JSONStreamBackend(Verbosity.DEFAULT, args.log_file), + StdOutBackend(Verbosity.VERBOSE)]) + for k,v in vars(args).items(): + DLLogger.log(step="PARAMETER", data={k:v}) + DLLogger.log(step="PARAMETER", data={'model_name':'Tacotron2_PyT'}) + + measurements_all = {"pre_processing": [], + "tacotron2_encoder_time": [], + "tacotron2_decoder_time": [], + "tacotron2_postnet_time": [], + "tacotron2_latency": [], + "waveglow_latency": [], + "latency": [], + "type_conversion": [], + "data_transfer": [], + "storage": [], + "tacotron2_items_per_sec": [], + "waveglow_items_per_sec": [], + "num_mels_per_audio": [], + "throughput": []} + + print("args:", args, unknown_args) + + torch.cuda.init() + + TRT_LOGGER = trt.Logger(trt.Logger.WARNING) + encoder = load_engine(args.encoder, TRT_LOGGER) + decoder_iter = load_engine(args.decoder, TRT_LOGGER) + postnet = load_engine(args.postnet, TRT_LOGGER) + waveglow = load_engine(args.waveglow, TRT_LOGGER) + + if args.waveglow_ckpt != "": + # setup denoiser using WaveGlow PyTorch checkpoint + waveglow_ckpt = load_and_setup_model('WaveGlow', parser, args.waveglow_ckpt, + True, forward_is_infer=True) + denoiser = Denoiser(waveglow_ckpt).cuda() + # after initialization, we don't need WaveGlow PyTorch checkpoint + # anymore - deleting + del waveglow_ckpt + torch.cuda.empty_cache() + + # create TRT contexts for each engine + encoder_context = encoder.create_execution_context() + decoder_context = decoder_iter.create_execution_context() + postnet_context = postnet.create_execution_context() + waveglow_context = waveglow.create_execution_context() + + + texts = ["The forms of printed letters should be beautiful, and that their arrangement on the page should be reasonable and a help to the shapeliness of the letters themselves. The forms of printed letters should be beautiful, and that their arrangement on the page should be reasonable and a help to the shapeliness of the letters themselves."] + texts = [texts[0][:args.input_length]] + texts = texts*args.batch_size + + warmup_iters = 3 + + for iter in range(args.num_iters): + + measurements = {} + + with MeasureTime(measurements, "pre_processing"): + sequences_padded, input_lengths = prepare_input_sequence(texts) + sequences_padded = sequences_padded.to(torch.int32) + input_lengths = input_lengths.to(torch.int32) + + with torch.no_grad(): + with MeasureTime(measurements, "latency"): + with MeasureTime(measurements, "tacotron2_latency"): + mel, mel_lengths = infer_tacotron2_trt(encoder, decoder_iter, postnet, + encoder_context, decoder_context, postnet_context, + sequences_padded, input_lengths, measurements, args.fp16) + + with MeasureTime(measurements, "waveglow_latency"): + audios = infer_waveglow_trt(waveglow, waveglow_context, mel, measurements, args.fp16) + + num_mels = mel.size(0)*mel.size(2) + num_samples = audios.size(0)*audios.size(1) + + with MeasureTime(measurements, "type_conversion"): + audios = audios.float() + + with MeasureTime(measurements, "data_transfer"): + audios = audios.cpu() + + with MeasureTime(measurements, "storage"): + audios = audios.numpy() + for i, audio in enumerate(audios): + audio_path = "audio_"+str(i)+".wav" + write(audio_path, args.sampling_rate, + audio[:mel_lengths[i]*args.stft_hop_length]) + + measurements['tacotron2_items_per_sec'] = num_mels/measurements['tacotron2_latency'] + measurements['waveglow_items_per_sec'] = num_samples/measurements['waveglow_latency'] + measurements['num_mels_per_audio'] = mel.size(2) + measurements['throughput'] = num_samples/measurements['latency'] + + if iter >= warmup_iters: + for k,v in measurements.items(): + if k in measurements_all.keys(): + measurements_all[k].append(v) + DLLogger.log(step=(iter-warmup_iters), data={k: v}) + + DLLogger.flush() + + print_stats(measurements_all) + +if __name__ == '__main__': + main() From 4733603577080dbd1bdcd51864f31e45d5196704 Mon Sep 17 00:00:00 2001 From: Sharath T S Date: Mon, 20 Apr 2020 21:02:18 -0700 Subject: [PATCH 9/9] [BERT/PyT] Fix squad inference corner case (#462) --- PyTorch/LanguageModeling/BERT/run_squad.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/PyTorch/LanguageModeling/BERT/run_squad.py b/PyTorch/LanguageModeling/BERT/run_squad.py index c633a020..1efe7de4 100755 --- a/PyTorch/LanguageModeling/BERT/run_squad.py +++ b/PyTorch/LanguageModeling/BERT/run_squad.py @@ -472,6 +472,11 @@ def get_answers(examples, features, results, args): preds, key=lambda x: (x.start_logit + x.end_logit), reverse=True)[:args.n_best_size] + + # In very rare edge cases we could only have single null prediction. + # So we just create a nonce prediction in this case to avoid failure. + if not nbest: + nbest.append(Prediction(text="empty", start_logit=0.0, end_logit=0.0)) total_scores = [] best_non_null_entry = None

    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

    x24PP>mpS9qDBjx{fE)#^N6(E@;%TtF;Jo$jWpu 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 z