From 1b40f37bda4d4683eb73d3cbbd70c9edf5d0a9c2 Mon Sep 17 00:00:00 2001 From: devfzn Date: Wed, 11 Oct 2023 01:05:54 -0300 Subject: [PATCH] Ingredients API, test, CRUD, model, views & serializers --- README.md | 5 +- README2.md | 5 +- README3.md | 12 +- README4.md | 514 ++++++++++++++++++ app/core/admin.py | 1 + .../0004_ingredient_recipe_ingredients.py | 28 + app/core/models.py | 13 + app/core/tests/test_models.py | 16 +- app/recipe/serializers.py | 30 +- app/recipe/tests/test_ingredients_api.py | 99 ++++ app/recipe/tests/test_recipe_api.py | 89 +++ app/recipe/urls.py | 1 + app/recipe/views.py | 25 +- imgs_readme/api_swagger_03.png | Bin 0 -> 85399 bytes imgs_readme/django_admin_15.png | Bin 0 -> 53332 bytes 15 files changed, 820 insertions(+), 18 deletions(-) create mode 100644 README4.md create mode 100644 app/core/migrations/0004_ingredient_recipe_ingredients.py create mode 100644 app/recipe/tests/test_ingredients_api.py create mode 100644 imgs_readme/api_swagger_03.png create mode 100644 imgs_readme/django_admin_15.png diff --git a/README.md b/README.md index 43b2537..05ef62a 100644 --- a/README.md +++ b/README.md @@ -1853,5 +1853,6 @@ Ruta `localhost:8000/api/docs` ---- -- Segunda parte -> [Recetas](./README2.md) -- Tercera parte -> [Tags](./README3.md) +- 2da parte -> [Recetas](./README2.md) +- 3ra parte -> [Tags](./README3.md) +- 4ta parte -> [Ingredientes](./README4.md) diff --git a/README2.md b/README2.md index 78ecc5f..ad1c4b8 100644 --- a/README2.md +++ b/README2.md @@ -539,5 +539,6 @@ URL `localhost:8000/api/docs/` ---- -- Primera parte -> [Recepi API](./README.md) -- Tercera parte -> [Tags](./README3.md) +- 1ra parte -> [Recepi API](./README.md) +- 3ra parte -> [Tags](./README3.md) +- 4ta parte -> [Ingredientes](./README4.md) diff --git a/README3.md b/README3.md index 6e6c6a3..7fce063 100644 --- a/README3.md +++ b/README3.md @@ -1,11 +1,11 @@ # Tags API -- Añadir capadidad de agregar **tags** a las recetas +- Añadir capacidad de agregar **tags** a las recetas - Creación del modelo para los **tags** - Añadir *endpoints* para la API **tag** -- Actualizar el *endpoint* **recipe**, para agregar y listar tags +- Actualizar **recipe** *endpoint*, para agregar y listar tags -## Tag endpoint +## Endpoints - `/api/recipe/tags` @@ -514,3 +514,9 @@ URL `localhost:8000/api/docs` ### Django Admin ![img](./imgs_readme/django_admin_14.png) + +---- + +- 1ra parte -> [Recepi API](./README.md) +- 2da parte -> [Recetas](./README2.md) +- 4ta parte -> [Ingredientes](./README4.md) diff --git a/README4.md b/README4.md new file mode 100644 index 0000000..25a824a --- /dev/null +++ b/README4.md @@ -0,0 +1,514 @@ +# Igredientes API + +- Añadir capacidad de agregar **ingredientes** a las recetas +- Creación del modelo para los **ingredientes** +- Añadir API *endpoints* para los **ingredientes** +- Actualizar **recipe** *endpoint*, para agregar y listar ingredientes + +## Endpoints + +- `/api/recipe/ingredients` + + | Método HTTP | Función | + | - | - | + | `GET` | Listar ingredientes | + +- `/api/recipe/ingredients/` + + | Método HTTP | Función | + | - | - | + | `GET` | Obtener detalles del ingrediente | + | `PUT/PATCH` | Actualizar ingrediente | + | `DELETE` | Borrar ingrediente | + +- `/api/recipe` + + | Método HTTP | Función | + | - | - | + | `POST`| Crear ingrediente (como parte de una receta) | + +- `/api/recipe/` + + | Método HTTP | Función | + | - | - | + | `PUT/PATCH` | Crear o modificar ingredientes | + +## Test Tag Model + +[`tests/test_models.py`](./app/core/tests/test_models.py) + +```py + ... + + def test_create_ingredient(self): + """Test creating an ingredient is successful.""" + user = create_user() + ingredient = models.Ingredient.objects.create( + user=user, + name='Ingrediente1' + ) + + self.assertEqual(str(ingredient), ingredient.name) +``` + +## Ingredients Model + +- `name` Nombre del ingrediente a crear +- `user` Usuario creador/dueño del ingrediente + +[`core/models.py`](./app/core/models.py) + +```py +... + +class Recipe(models.Model): + ... + ingredients = models.ManyToManyField('Ingredient') + ... + +class Ingredient(models.Model): + """Ingredient for recipes.""" + name = models.CharField(max_length=255) + user = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + ) + + def __str__(self): + return self.name +``` + +### Crear migraciones + +`docker compose run --rm app sh -c python manage.py makemigrations` + +```sh +[+] Creating 1/0 + ✔ Container recipes_api_django-db-1 Running 0.0s +Migrations for 'core': + core/migrations/0004_ingredient_recipe_ingredients.py + - Create model Ingredient + - Add field ingredients to recipe +``` + +### Agregar al administrador de django + +[`app/core/admin.py`](./app/core/admin.py) + +```py +admin.site.register(models.Ingredient) +``` + +## Test para listar ingredientes + +[`tests/test_ingredients_api.py`](./app/core/tests/test_ingredients_api.py) + +```py +... + +def create_user(email='user@example.com', password='testpass123'): + """Create and return user.""" + return get_user_model().objects.create_user(email=email, password=password) + + +class PublicIngredientsApiTests(TestCase): + """Test unanthenticated API requests.""" + + def setUp(self): + self.client = APIClient() + + def test_auth_required(self): + """Test auth is required for retrieving ingredients.""" + res = self.client.get(INGREDIENTS_URL) + + self.assertEqual(res.status_code, status.HTTP_401_UNAUTHORIZED) + +class PrivateIngredientsApiTests(TestCase): + """Test authenticated API requests.""" + + def setUp(self): + self.user = create_user() + self.client = APIClient() + self.client.force_authenticate(self.user) + + def test_retrieve_ingredients(self): + """Test retrieving a list of ingredients.""" + Ingredient.objects.create(user=self.user, name='Harina') + Ingredient.objects.create(user=self.user, name='Panela') + + res = self.client.get(INGREDIENTS_URL) + + ingredients = Ingredient.objects.all().order_by('-name') + serializer = IngredientSerializer(ingredients, many=True) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(res.data, serializer.data) + + def test_ingredients_limited_to_user(self): + """Test list of ingredients is limited to authenticated user.""" + user2 = create_user(email='user2@example.com') + Ingredient.objects.create(user=user2, name='Sal') + ingredient = Ingredient.objects.create(user=self.user, name='Pimienta') + + res = self.client.get(INGREDIENTS_URL) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(len(res.data), 1) + self.assertEqual(res.data[0]['name'], ingredient.name) + self.assertEqual(res.data[0]['id'], ingredient.id) +``` + +### Serializador Ingredientes + +[`recipe/serializers.py`](./app/recipe/serializers.py) + +```py +... + +class RecipeSerializer(serializers.ModelSerializer): + """Serializer for recipes.""" + tags = TagSerializer(many=True, required=False) + + class Meta: + model = Recipe + fields = ['id', 'title', 'time_minutes', 'price', 'link', 'tags'] + read_only_fields = ['id'] + +... +``` + +### Vistas Ingredients + +[`recipe/views.py`](./app/recipe/views.py) + +```py +class IngredientViewSet(mixin.ListModelMixin, viewsets.GenericViewSet): + """Manage ingredients in the database.""" + serializer_class = serializers.IngredientSerializer + queryset = Ingredient.objects.all() + authentication_classes = [TokenAuthentication] + permission_classes = [IsAuthenticated] + + def get_queryset(self): + """Filter queryset to authenticated user.""" + return self.queryset.filter(user=self.request.user).order_by('-name') +``` + +### URls Ingredientes + +[recipe/urls.py](./app/recipe/urls.py) + +```py +... +router.register('ingredients', views.IngredientViewSet) + +... +``` + +## Actualizar Ingredientes + +### Test actualizar ingredientes + +[`recipe/tests/test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) + +```py +... +def detail_url(ingredient_id): + """Create and return an ingredient detail URL.""" + return reverse('recipe:ingredient-detail', args=[ingredient_id]) + + ... + + def test_update_ingredient(self): + """Test updating an ingredient.""" + ingredient = Ingredient.objects.create(user=self.user, name='Coriandro') + + payload = {'name': 'Cilantro'} + url = detail_url(ingredient.id) + res = self.client.patch(url, payload) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + ingredient.refresh_from_db() + self.assertEqual(ingredient.name, payload['name']) +``` + +### Implementar funcionalidad actualizar ingredientes + +[`recipe/views.py`](./app/recipe/views.py) + +```diff +-class IngredientViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): ++class IngredientViewSet(mixins.UpdateModelMixin, ++ mixins.ListModelMixin, ++ viewsets.GenericViewSet): +``` + +## Eliminar ingredientes + +### Test eliminar ingredientes + +[`test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) + +```py + def test_delete_ingredient(self): + """Test deleting an ingredient.""" + ingredient = Ingredient.objects.create(user=self.user, name='Lechuga') + + url = detail_url(ingredient.id) + res = self.client.delete(url) + + self.assertEqual(res.status_code, status.HTTP_204_NO_CONTENT) + ingredients = Ingredient.objects.filter(user=self.user) + self.assertFalse(ingredients.exists()) +``` + +### Implementar funcionalidad actualizar ingredientes + +[`recipe/views.py`](./app/recipe/views.py) + +```diff +-class IngredientViewSet( ++class IngredientViewSet(mixins.DestroyModelMixin, ++ mixins.UpdateModelMixin, + mixins.ListModelMixin, + viewsets.GenericViewSet): +``` + +## Creación de ingredientes + +### Test crear ingrediente + +[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) + +```py + def test_create_recipe_with_new_ingredients(self): + """Test creating a recipe with new ingredients.""" + payload = { + 'title': 'Camarones acaramelados', + 'time_minutes': 45, + 'price': Decimal('75.50'), + 'ingredients': [{'name': 'Camarones'}, {'name': 'Azucar'}], + } + res = self.client.post(RECIPES_URL, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_201_CREATED) + recipes = Recipe.objects.filter(user=self.user) + self.assertEqual(recipe.ingredients.count(), 2) + for ingredient in payload['ingredients']: + exists = recipe.ingredients.filter( + name=ingredient['name'], + user=self.user, + ).exists() + self.assertTrue(exists) + + def test_create_recipe_with_existing_ingredient(self): + """Test creating a new recipe with existing ingredient.""" + ingredient = Ingredient.objects.create(user=self.user, name='Limón') + payload = { + 'title': 'Limonada', + 'time_minutes': 15, + 'price': '2.50', + 'ingredients': [{'name': 'Limón'}, {'name': 'Azucar'}], + } + res = self.client.post(RECIPES_URL, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_201_CREATED) + recipes = Recipe.objects.filter(user=self.user) + self.assertEqual(recipes.count(), 1) + recipe = recipes[0] + self.assertEqual(recipe.ingredients.count(), 2) + self.assertIn(ingredient, recipe.ingredients.all()) + for ingredient in payload['ingredients']: + exists = recipe.ingredients.filter( + name=ingredient['name'], + user=self.user, + ).exists() + self.assertTrue(exists) +``` + +### Implementación funcionalidad crear ingredientes con receta + +[`recipe/serializers.py`](./app/recipe/serializers.py) + +```diff +... +class RecipeSerializer(serializers.ModelSerializer): + """Serializer for recipes.""" + tags = TagSerializer(many=True, required=False) ++ ingredients = IngredientSerializer(many=True) + + class Meta: + model = Recipe +- fields = ['id', 'title', 'time_minutes', 'price', 'link', 'tags'] ++ fields = ['id', 'title', 'time_minutes', 'price', 'link', 'tags', ++ 'ingredients'] + read_only_fields = ['id'] + + ... + ++ def _get_or_create_ingredients(self, ingredients, recipe): ++ """Handle getting or creating ingredients as needed.""" ++ auth_user = self.context['request'].user ++ for ingredient in ingredients: ++ ingredient_obj, created = Ingredient.objects.get_or_create( ++ user=auth_user, ++ **ingredient, ++ ) ++ recipe.ingredients.add(ingredient_obj) + + def create(self, validated_data): + """Create a recipe.""" + tags = validated_data.pop('tags', []) ++ ingredients = validated_data.pop('ingredients', []) + recipe = Recipe.objects.create(**validated_data) + self._get_or_create_tags(tags, recipe) ++ self._get_or_create_ingredients(ingredients, recipe) + + ... +``` + +## Actualizar ingredientes + +### Test actaulizar ingredientes + +[`recipe/tests/test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) + +```py + def test_create_ingredient_on_update(self): + """Test creating an ingredient when updating a recipe.""" + recipe = create_recipe(user=self.user) + + payload = {'ingredients': [{'name': 'Pomelo'}]} + url = detail_url(recipe.id) + res = self.client.patch(url, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + new_ingredient = Ingredient.objects.get(user=self.user, name='Pomelo') + self.assertIn(new_ingredient, recipe.ingredients.all()) + + def test_update_recipe_assign_ingredient(self): + """Test assigning an existing ingredient when updating a recipe.""" + ingredient1 = Ingredient.objects.create(user=self.user, name='Pimienta') + recipe = create_recipe(user=self.user) + recipe.ingredients.add(ingredient1) + + ingredient2 = Ingredient.objects.create(user=self.user, name='Ají') + payload = {'ingredients': [{'name': 'Ají'}]} + url = detail_url(recipe.id) + res = self.client.patch(url,payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertIn(ingredient2, recipe.ingredients.all()) + self.assertNotIn(ingredient1, recipe.ingredients.all()) + + def test_clear_recipe_ingredients(self): + """Test clearing a recipes ingredients.""" + ingredient = Ingredient.objects.create(user=self.user, name='Ajo') + recipe = create_recipe(user=self.user) + recipe.ingredients.add(ingredient) + + payload = {'ingredients': []} + url = detail_url(recipe.id) + res = self.client.patch(url, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(recipe.ingredients.count(), 0) +``` + +### Implementación actualizar ingredientes + +[`recipe/serializers.py`](./app/recipe/serializers.py) + +```diff + def create(self, validated_data): + """Create a recipe.""" + tags = validated_data.pop('tags', []) ++ ingredients = validated_data.pop('ingredients', []) + recipe = Recipe.objects.create(**validated_data) + self._get_or_create_tags(tags, recipe) ++ self._get_or_create_ingredients(ingredients, recipe) + + return recipe + + def update(self, instance, validated_data): + """Update recipe.""" + tags = validated_data.pop('tags', None) ++ ingredients = validated_data.pop('ingredients', None) + if tags is not None: + instance.tags.clear() + self._get_or_create_tags(tags, instance) ++ if ingredients is not None: ++ instance.ingredients.clear() ++ self._get_or_create_ingredients(ingredients, instance) +``` + +## Refactor + +Reestructuración para falicitar lectura, eficiencia y evita código duplicado +y mejorar rendimiento + +TDD facilita esta labor, corriendo los tests para evaluar + +### Area a refactorizar + +`TagViewSet/IngredientViewSet` Código muy similar, refactorización usando +herencia + +[`recipe/views.py`](./app/recipe/views.py) + +```diff ++ class BaseRecipeAtrrViewSet(mixins.DestroyModelMixin, ++ mixins.UpdateModelMixin, ++ mixins.ListModelMixin, ++ viewsets.GenericViewSet): ++ """Base viewset for recipe attributes.""" ++ authentication_classes = [TokenAuthentication] ++ permission_classes = [IsAuthenticated] + ++ def get_queryset(self): ++ """Filter queryset to authenticated user.""" ++ return self.queryset.filter(user=self.request.user).order_by('-name') + + + class TagViewSet(BaseRecipeAtrrViewSet): + """Manage tags in the database.""" + serializer_class = serializers.TagSerializer + queryset = Tag.objects.all() +- authentication_classes = [TokenAuthentication] +- permission_classes = [IsAuthenticated] + +- def get_queryset(self): +- """Filter queryset to authenticated user.""" +- return self.queryset.filter(user=self.request.user).order_by('-name') + + + class IngredientViewSet(BaseRecipeAtrrViewSet): + """Manage ingredients in the database.""" + serializer_class = serializers.IngredientSerializer + queryset = Ingredient.objects.all() +- authentication_classes = [TokenAuthentication] +- permission_classes = [IsAuthenticated] + +- def get_queryset(self): +- """Filter queryset to authenticated user.""" +- return self.queryset.filter(user=self.request.user).order_by('-name') +``` + +## Levantar app y prueba navegador + +- `docker compose run` +- URL `localhost:8000/api/docs` + +### Swagger + +![img](./imgs_readme/api_swagger_03.png) + +### Django Admin + +![img](./imgs_readme/django_admin_15.png) + +---- + +- 1ra parte -> [Recepi API](./README.md) +- 2da parte -> [Recetas](./README2.md) +- 3ra parte -> [Tags](./README2.md) diff --git a/app/core/admin.py b/app/core/admin.py index d04dc7e..6ff8d7b 100644 --- a/app/core/admin.py +++ b/app/core/admin.py @@ -46,3 +46,4 @@ class UserAdmin(BaseUserAdmin): admin.site.register(models.User, UserAdmin) admin.site.register(models.Recipe) admin.site.register(models.Tag) +admin.site.register(models.Ingredient) diff --git a/app/core/migrations/0004_ingredient_recipe_ingredients.py b/app/core/migrations/0004_ingredient_recipe_ingredients.py new file mode 100644 index 0000000..374d66f --- /dev/null +++ b/app/core/migrations/0004_ingredient_recipe_ingredients.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.5 on 2023-10-10 20:04 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0003_tag_recipe_tags'), + ] + + operations = [ + migrations.CreateModel( + name='Ingredient', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='recipe', + name='ingredients', + field=models.ManyToManyField(to='core.ingredient'), + ), + ] diff --git a/app/core/models.py b/app/core/models.py index 7d0f606..ce588a7 100644 --- a/app/core/models.py +++ b/app/core/models.py @@ -57,6 +57,7 @@ class Recipe(models.Model): price = models.DecimalField(max_digits=5, decimal_places=2, blank=True) link = models.CharField(max_length=255, blank=True) tags = models.ManyToManyField('Tag') + ingredients = models.ManyToManyField('Ingredient') def __str__(self): return self.title @@ -72,3 +73,15 @@ class Tag(models.Model): def __str__(self): return self.name + + +class Ingredient(models.Model): + """Ingredient for recipes.""" + name = models.CharField(max_length=255) + user = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + ) + + def __str__(self): + return self.name diff --git a/app/core/tests/test_models.py b/app/core/tests/test_models.py index 6c26002..6e87110 100644 --- a/app/core/tests/test_models.py +++ b/app/core/tests/test_models.py @@ -17,8 +17,8 @@ def create_user(email='user@example.com', password='testpass123'): class ModelTests(TestCase): """Test models.""" - def test_create_user_with_email_sucessfull(self): - """Test creating a user with an email is sucessfull.""" + def test_create_user_with_email_successful(self): + """Test creating a user with an email is successful.""" email = 'test@example.com' password = 'testpass123' user = create_user(email, password) @@ -65,8 +65,18 @@ class ModelTests(TestCase): self.assertEqual(str(recipe), recipe.title) def test_create_tag(self): - """Test creating a tag is sucessfull.""" + """Test creating a tag is successful.""" user = create_user() tag = models.Tag.objects.create(user=user, name='Tag1') self.assertEqual(str(tag), tag.name) + + def test_create_ingredient(self): + """Test creating an ingredient is successful.""" + user = create_user() + ingredient = models.Ingredient.objects.create( + user=user, + name='Ingrediente1' + ) + + self.assertEqual(str(ingredient), ingredient.name) diff --git a/app/recipe/serializers.py b/app/recipe/serializers.py index fb540a7..273b906 100644 --- a/app/recipe/serializers.py +++ b/app/recipe/serializers.py @@ -4,11 +4,21 @@ Serializers for recipe APIs from rest_framework import serializers from core.models import ( + Ingredient, Recipe, Tag, ) +class IngredientSerializer(serializers.ModelSerializer): + """Serializer for Ingredients.""" + + class Meta: + model = Ingredient + fields = ['id', 'name'] + read_only_fields = ['id'] + + class TagSerializer(serializers.ModelSerializer): """Serializer for tags.""" @@ -21,10 +31,12 @@ class TagSerializer(serializers.ModelSerializer): class RecipeSerializer(serializers.ModelSerializer): """Serializer for recipes.""" tags = TagSerializer(many=True, required=False) + ingredients = IngredientSerializer(many=True, required=False) class Meta: model = Recipe - fields = ['id', 'title', 'time_minutes', 'price', 'link', 'tags'] + fields = ['id', 'title', 'time_minutes', 'price', 'link', 'tags', + 'ingredients'] read_only_fields = ['id'] def _get_or_create_tags(self, tags, recipe): @@ -37,20 +49,36 @@ class RecipeSerializer(serializers.ModelSerializer): ) recipe.tags.add(tag_obj) + def _get_or_create_ingredients(self, ingredients, recipe): + """Handle getting or creating ingredients as needed.""" + auth_user = self.context['request'].user + for ingredient in ingredients: + ingredient_obj, created = Ingredient.objects.get_or_create( + user=auth_user, + **ingredient, + ) + recipe.ingredients.add(ingredient_obj) + def create(self, validated_data): """Create a recipe.""" tags = validated_data.pop('tags', []) + ingredients = validated_data.pop('ingredients', []) recipe = Recipe.objects.create(**validated_data) self._get_or_create_tags(tags, recipe) + self._get_or_create_ingredients(ingredients, recipe) return recipe def update(self, instance, validated_data): """Update recipe.""" tags = validated_data.pop('tags', None) + ingredients = validated_data.pop('ingredients', None) if tags is not None: instance.tags.clear() self._get_or_create_tags(tags, instance) + if ingredients is not None: + instance.ingredients.clear() + self._get_or_create_ingredients(ingredients, instance) for attr, value in validated_data.items(): setattr(instance, attr, value) diff --git a/app/recipe/tests/test_ingredients_api.py b/app/recipe/tests/test_ingredients_api.py new file mode 100644 index 0000000..aada25a --- /dev/null +++ b/app/recipe/tests/test_ingredients_api.py @@ -0,0 +1,99 @@ +""" +Tests for the ingredients API. +""" +from django.contrib.auth import get_user_model +from django.urls import reverse +from django.test import TestCase + +from rest_framework import status +from rest_framework.test import APIClient + +from core.models import Ingredient + +from recipe.serializers import IngredientSerializer + + +INGREDIENTS_URL = reverse('recipe:ingredient-list') + + +def detail_url(ingredient_id): + """Create and return an ingredient detail URL.""" + return reverse('recipe:ingredient-detail', args=[ingredient_id]) + + +def create_user(email='user@example.com', password='testpass123'): + """Create and return user.""" + return get_user_model().objects.create_user(email=email, password=password) + + +class PublicIngredientsApiTests(TestCase): + """Test unanthenticated API requests.""" + + def setUp(self): + self.client = APIClient() + + def test_auth_required(self): + """Test auth is required for retrieving ingredients.""" + res = self.client.get(INGREDIENTS_URL) + + self.assertEqual(res.status_code, status.HTTP_401_UNAUTHORIZED) + + +class PrivateIngredientsApiTests(TestCase): + """Test authenticated API requests.""" + + def setUp(self): + self.user = create_user() + self.client = APIClient() + self.client.force_authenticate(self.user) + + def test_retrieve_ingredients(self): + """Test retrieving a list of ingredients.""" + Ingredient.objects.create(user=self.user, name='Harina') + Ingredient.objects.create(user=self.user, name='Panela') + + res = self.client.get(INGREDIENTS_URL) + + ingredients = Ingredient.objects.all().order_by('-name') + serializer = IngredientSerializer(ingredients, many=True) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(res.data, serializer.data) + + def test_ingredients_limited_to_user(self): + """Test list of ingredients is limited to authenticated user.""" + user2 = create_user(email='user2@example.com') + Ingredient.objects.create(user=user2, name='Sal') + ingredient = Ingredient.objects.create(user=self.user, name='Pimienta') + + res = self.client.get(INGREDIENTS_URL) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(len(res.data), 1) + self.assertEqual(res.data[0]['name'], ingredient.name) + self.assertEqual(res.data[0]['id'], ingredient.id) + + def test_update_ingredient(self): + """Test updating an ingredient.""" + ingredient = Ingredient.objects.create( + user=self.user, name='Coriandro' + ) + + payload = {'name': 'Cilantro'} + url = detail_url(ingredient.id) + res = self.client.patch(url, payload) + + self.assertEqual(res.status_code, status.HTTP_200_OK) + ingredient.refresh_from_db() + self.assertEqual(ingredient.name, payload['name']) + + def test_delete_ingredient(self): + """Test deleting an ingredient.""" + ingredient = Ingredient.objects.create(user=self.user, name='Lechuga') + + url = detail_url(ingredient.id) + res = self.client.delete(url) + + self.assertEqual(res.status_code, status.HTTP_204_NO_CONTENT) + ingredients = Ingredient.objects.filter(user=self.user) + self.assertFalse(ingredients.exists()) diff --git a/app/recipe/tests/test_recipe_api.py b/app/recipe/tests/test_recipe_api.py index e51d936..107be86 100644 --- a/app/recipe/tests/test_recipe_api.py +++ b/app/recipe/tests/test_recipe_api.py @@ -13,6 +13,7 @@ from rest_framework.test import APIClient from core.models import ( Recipe, Tag, + Ingredient, ) from recipe.serializers import ( @@ -295,3 +296,91 @@ class PrivateRecipeApiTests(TestCase): self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(recipe.tags.count(), 0) + + def test_create_recipe_with_new_ingredients(self): + """Test creating a recipe with new ingredients.""" + payload = { + 'title': 'Camarones acaramelados', + 'time_minutes': 45, + 'price': Decimal('75.50'), + 'ingredients': [{'name': 'Camarones'}, {'name': 'Azucar'}], + } + res = self.client.post(RECIPES_URL, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_201_CREATED) + recipes = Recipe.objects.filter(user=self.user) + self.assertEqual(recipes.count(), 1) + recipe = recipes[0] + self.assertEqual(recipe.ingredients.count(), 2) + for ingredient in payload['ingredients']: + exists = recipe.ingredients.filter( + name=ingredient['name'], + user=self.user, + ).exists() + self.assertTrue(exists) + + def test_create_recipe_with_existing_ingredient(self): + """Test creating a new recipe with existing ingredient.""" + ingredient = Ingredient.objects.create(user=self.user, name='Limón') + payload = { + 'title': 'Limonada', + 'time_minutes': 15, + 'price': '2.50', + 'ingredients': [{'name': 'Limón'}, {'name': 'Azucar'}], + } + res = self.client.post(RECIPES_URL, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_201_CREATED) + recipes = Recipe.objects.filter(user=self.user) + self.assertEqual(recipes.count(), 1) + recipe = recipes[0] + self.assertEqual(recipe.ingredients.count(), 2) + self.assertIn(ingredient, recipe.ingredients.all()) + for ingredient in payload['ingredients']: + exists = recipe.ingredients.filter( + name=ingredient['name'], + user=self.user, + ).exists() + self.assertTrue(exists) + + def test_create_ingredient_on_update(self): + """Test creating an ingredient when updating a recipe.""" + recipe = create_recipe(user=self.user) + + payload = {'ingredients': [{'name': 'Pomelo'}]} + url = detail_url(recipe.id) + res = self.client.patch(url, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + new_ingredient = Ingredient.objects.get(user=self.user, name='Pomelo') + self.assertIn(new_ingredient, recipe.ingredients.all()) + + def test_update_recipe_assign_ingredient(self): + """Test assigning an existing ingredient when updating a recipe.""" + ingredient1 = Ingredient.objects.create( + user=self.user, name='Pimienta' + ) + recipe = create_recipe(user=self.user) + recipe.ingredients.add(ingredient1) + + ingredient2 = Ingredient.objects.create(user=self.user, name='Ají') + payload = {'ingredients': [{'name': 'Ají'}]} + url = detail_url(recipe.id) + res = self.client.patch(url, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertIn(ingredient2, recipe.ingredients.all()) + self.assertNotIn(ingredient1, recipe.ingredients.all()) + + def test_clear_recipe_ingredients(self): + """Test clearing a recipes ingredients.""" + ingredient = Ingredient.objects.create(user=self.user, name='Ajo') + recipe = create_recipe(user=self.user) + recipe.ingredients.add(ingredient) + + payload = {'ingredients': []} + url = detail_url(recipe.id) + res = self.client.patch(url, payload, format='json') + + self.assertEqual(res.status_code, status.HTTP_200_OK) + self.assertEqual(recipe.ingredients.count(), 0) diff --git a/app/recipe/urls.py b/app/recipe/urls.py index 138b73c..b25db22 100644 --- a/app/recipe/urls.py +++ b/app/recipe/urls.py @@ -14,6 +14,7 @@ from recipe import views router = DefaultRouter() router.register('recipes', views.RecipeViewSet) router.register('tags', views.TagViewSet) +router.register('ingredients', views.IngredientViewSet) app_name = 'recipe' diff --git a/app/recipe/views.py b/app/recipe/views.py index 1cca514..a7bc61b 100644 --- a/app/recipe/views.py +++ b/app/recipe/views.py @@ -9,6 +9,7 @@ from rest_framework.authentication import TokenAuthentication from rest_framework.permissions import IsAuthenticated from core.models import ( + Ingredient, Recipe, Tag, ) @@ -37,16 +38,26 @@ class RecipeViewSet(viewsets.ModelViewSet): serializer.save(user=self.request.user) -class TagViewSet(mixins.DestroyModelMixin, - mixins.UpdateModelMixin, - mixins.ListModelMixin, - viewsets.GenericViewSet): - """Manage tags in the database.""" - serializer_class = serializers.TagSerializer - queryset = Tag.objects.all() +class BaseRecipeAtrrViewSet(mixins.DestroyModelMixin, + mixins.UpdateModelMixin, + mixins.ListModelMixin, + viewsets.GenericViewSet): + """Base viewset for recipe attributes.""" authentication_classes = [TokenAuthentication] permission_classes = [IsAuthenticated] def get_queryset(self): """Filter queryset to authenticated user.""" return self.queryset.filter(user=self.request.user).order_by('-name') + + +class TagViewSet(BaseRecipeAtrrViewSet): + """Manage tags in the database.""" + serializer_class = serializers.TagSerializer + queryset = Tag.objects.all() + + +class IngredientViewSet(BaseRecipeAtrrViewSet): + """Manage ingredients in the database.""" + serializer_class = serializers.IngredientSerializer + queryset = Ingredient.objects.all() diff --git a/imgs_readme/api_swagger_03.png b/imgs_readme/api_swagger_03.png new file mode 100644 index 0000000000000000000000000000000000000000..226303a0aecf9679f7a439ba5a481c9cfd1117c4 GIT binary patch literal 85399 zcmb5W2UJr{`?u?3LzE(-A|Rmjj`Su(B=n}zq$@4bJE2EW>Am+*gLJ8(7wHg!^iGf# zdWQfZI$THY3^RTc8yd?5%})fwHvjB z|Mz#U6GA>Rj7Ja-H(XvTY2CSVXXcN_!nJG9t|(b=0LBs6lQKOfRIxbv`tF8 z!@%;)>mgD!;X})6rfU367|ReCm1fJ4y^>&XQ|AMw6Mv(J6hD7Q&ri7{eE^Rs?%%(| zzTu1WFqxEENuCm(m6QaL9UkmwSw0~NSk1V)|FznB;>3ollWU(#@5oSJon#W<>AN~! zQ+xI1_SNyzb$@}Y<15P2kj!GTl#_8Z?WJ+;$9a_zS?$CInya{48beYUy&>PV+%Lv8 zobe?ZElLx&IC#NQSCNj7YH9o{45QL57J$InsAN5MlO3(Vc7w@uF+6Qr+;lQGSe6KLa9E|wFRLwcQs6rydRb?R zDd>|o`;{&GX|_bPi*)1B!jfr;>1yGy|46R_*dfxSj-y(!P?C-!Inoc)aRai_3(URa zcaaay_a-)%#P-jXdfx+%_H^ej=4E9Kf$~6SJ92XNt$In>+b6iq^~A??Mbe3%4NM+f<;L};^6h(PI+~;qEejtR=j*Lr6`>dEtIu7`wnbPd>y$tr>8Bm8mtNGA4o9go;;~N z9-C?48nheTh`Gv3=8e%jb3$c)f1OoTQ2}<1V=kzwO*-V=xA0>t%VV9ct8*;a8tu}i zg|nNYgA-e)80gZwR+0u{as%nrfKzO zusu3oBm6B6Nz&1PzZqNr*u=%~kaIq~>#fi|ytv3KP&&Kb-`<-?B<jye=B3)eh0>-QFTVkS%%2z;eI5c$-)Mz}=Dilj?%qP}@|D|i zX`|Wf=iG{ms~Los7qU>ForMb= z?X-eK`Z@bu9E>Heo|6|eHF0OfC27whOxy<=9r-Ll4*fw|8T9rEJe~tX9kJUPOxzYQ zsI-ay*=VpUCFVYL^uqG$FZMiAmaFd63K@E>T(c&z)R!)m%}upRC7SlEO-R4mvHV2f z3k83;ywQwcMRUagU{th(43z7QWKQ0XEbjGc?#bZ@Z)_ zUkyK>-HS>K8M71qKBjJ5ytc0PdT|M#k{i{i~S*^Hr#vSk^{U z#q}*S-sgAo(15HU<4y*e@B3bFDB^%mAEYueb7#6|iPf>QLE!~|yWl6$^lGr{tEipnaJ30#yE{Bnc6nEB)k*PZHbUc^CNGW87=7q{>*Qt$uTmK9_U^CQQw>$H&w{IX_bvIeQMwg4mS zr_;$#tHbr>n2xVgm%fa)hK-x>Zp<2o=bI1P7^2z7^LNc29-gzKW*PV=g3`D zxzE0|ZxOOn>kKcAeS1-b#f!q=k)hLu38^(Ua|aBG^gY5gMSp9m_Vx=t2Iy*r;1iO> zia0XZe+OHj`Rv(Lt)2lVA6V|HPdMJH6DfVuPSbPs<+uEV{C}n>rkfU5A)i^FvER5l z5&Gx9lbP;rA=OpLHT*yFf2WgcDW5Y*t^$7F{68l8KhA*n|DPu0Bu|Lj>ZifcdyI@o&%p7k?s)CD=MxJ4ahTCGWgP7{ zb7sq{u(iUC1AaC}q@F>AbL!U$mM1DA^Inl+l}4E>TUYVdj2`L6rE8&WDY*nZ3D?km zJ*bN_q!y7)e^jPsBKzcTseCRCxa@bjxgzt<&L**B#EXwn%amfsjrQ^hA(GICv2py9E^>f>=%Y!sO| z^3k6ZYi>eVt8kH-|G}8lQg*aWVfj`1iDI(UoWFJH_?%b8GDju>0b~xk`#nB{cyWcd zQ2XE7%B*zcr7bMl@QX)S>IoQFl~8Xcd6K5z{kMfkgid{W#`v~COTQqv$9zlH7rZey6mEyx?EV{IDtq_V?;S0%BbR7d9DB1ZnQPzQFr-`)+Qi01B1 zEXx*o^=8M_|8S2lVQ@x>t1H9EXKDQRamM*f_O5OV|8UuquEr21D-vAdxBDkkW&gY; zJHy=u_S}DFpbS!PF*Kur8FPP=?@lsgHmgxYwRPcaiu01pgH&BE!PFZ$X6xq$;M5m; z02{yaOG~N?HbU+s;-{x|?CfSD=!*J7`VRywDhq^Z`ztoFvspuV2J(*&=-3 z*fLlgm!7s;(79k8EO)6E@-^$e5qSuM+kS9vowr3?Aa+RedE2_Hbw)?*2ZVu+#P`Z4 z-g_UBRBa#ZE~u|F4CSDVM%dK1KF%Rm1ve-EG})@MjoWcG3P=y#xYk;&U}mNP%mWDy zu*&uuq^Jc9S0=kPxMuSD@-vJ`;C5j@h={x~?i1FC^TvzCZ*xSJmtLH)RhTBv-3i~# z6*9Bw?UBndWaBRON7u&=SL=yZHq6r|L#J13BF-M4vwbkrxG}oe*kH8nsi#QfPw6HQ zSdgK-$~QYuqNh7?SKNg|-*?|@x@0OKDb~*mB2(|Mk`WGS7=6g5PBs6!S@XQRugO64 zi#i+(wnTw#8LBV$kOOjbN2NCjE8L#nc-ZxCGwZsN~VL5j+Zy)F5u{$@kQ2CihD-^0nMXX$#khp;O_$fKAZS7=;VWNb$;krZ`C@%wJ~{2v z*#YB^>>NEBQeKWjzv3m4PQ)?ST_DB9*Avf39V^RHemiDza+c>o+kJ;sRSM z!%Au6lC5XMqRCG=bNwj?Tk1BjOJ0;q2<0W1>57)9CHL;dHU@9^!jX|Nx>)OIY*t$! zTEO+sfq?_Xfwb>&;^3heKi4~bBba5-^Y-i;Kh_4-IM6ME3zn&^#vfB+mSsVG;mYtR z`W$;mcEkCcuVryDVK(k!iPCRX91*;aR-IdRLlPI+Xm0b;oO3@TIBva{%*>AKiKO{ya4uERRC zU88H_1&f5Sa;-zZy$j5EyTssw9NgFrq_Ri}Qgo!j{Nk!K-M(pNrLSzA_p1%iW29}z z$XNeL$`r0t_EOK)6xG$D;d#s;WZp3v`Osoy9;Jy$wnMF(v`7yJ#YoQz)Skn*fQrE#i6M}o3oOyuKF0f6HJ4;TeIw&j?-l0j%`q}wd5fOYfzu+`LN1e+J< z=6nVZMx%dDU6sxaD;jMP2;b6ATNd}x8hk5A&yQ|AnkH*fgvAt(C~;RsCKd|dPP3lg zphy-R+~Cnwp6qVCm>zwu?<>C;4Q%S08Yt2z-mUi})!?ZOqoFV6)_4zx-xVjkR@c`) zu5bqBn{U+1=q{!92^rYgq+1>G8K8Ly?IYLRQDdCXr-o; zC``x~I+wdleK`}clviX_PwpfaZ&HE4`@XV;M~?MWAd7(P#;Osvs; z{m(Hy7#z7pzr2%Uf?d;u&=u27v23@}?uL)1XeI!TejQNWHWl#(`5rIV8g!AoKU*TZ z5!{xu6I^3v5jYRo3ALEAWPDJf<^PtIak1nF`Y0veSl>;VvF7L~5HL$cC1@I_^2_AA zz37}cLV=Qpdy!Z;7b}Cb7o^J_W z4GpPmY2imV2niDJ>+KGDvNDRX8dm#+4uO~5%H6dxetzhpO?5FJK1mXAK)#neYdMbW z{WyBc4zg4|Ur8sTvZS%09mW~L;iG`*AFJe73;$bm`2DZ>x{no^?b*Fu+Jqv1G&hIP zDRn164lkUaFC*b-4Y&Ra44R5+WenfSTkDCnxhd}3-e1P85+4*)P{mpBr8f{(I2Ck;5bw7dMJ^d5O7H*RvQ0h5d>vO?; zd{$!baq_V}B|pq2qcCk`ra^@V@(Ktn44S0iy%dZdaynLwKF5^u?o>OG&VIP7w^qH&{6E$E_I7>^)bydZ(nD_rCzL2>M=`B)|jT9 z=XhI(Yj99dBHOk!hv0W`Qdy5}J?7qhPq~AdheN$n1RKbxm;{zknJj6v!X@8yl%=9) zw|klhB}H!@sG?AevRdL1lbhquh8{KS66QTCK#Psdw%^YBHaPWMVejrSWwNU!4#v$y z5gk{)^h&v?`IB|sOmL7Qa=NBWk?=AlAb7}ZDlykdWtk`tbMmOqA4Ljn1P_Ki|403< z{g3ffT3g1OWVBCIJ5v`UO}aRg2<2{P+S`}?gL`mLB$XtQl|^%c?(J$?P!J`XyjHr? z`4)viNlRG?=~(1*G@3mX8Ar>fk;U^yj&yVL*Wg7pOM~A~VUU5er+t<8`aYof(n43h z?k!0Qzs);W9ImziW}jW8XJWUYnm=qE#L4TYJk*3wax8Z}L>dkF7Vsv*&}*AGr0cl; zmkxUPpuVSfQy@!8cmhQ>cG=N>AUJ2?`#VXj_HRRjl8qx zTdQr3m5PH39ivyC(e`YNF`UXsx={FKHe#bA(&SVKKR*K_qd8C(W&s}W=If7@=zP~%2rv&+2q;wrCO%`)OeF1deyf)NY>Magz34QFTxmSsigcL4 z7$0L#he+WP00q6DjNcCqMyH<|4VDjytS%K@+BvqRFEEUa7{!rYTyCQwiB62~X0(O9 zf^VhAHYp}V-qaaCq3K#l>C-7mett?COl+1{B*G$$&#Pw^RWxcWZhW^|xTMmO>YY0e zBDF^-B?c!o%MS)mNlxAY+70$0=7(S+7-D@QT6qGB(2wEj?`PqS-@+|!(or9iaVCN? zXnXC{WK-HaDWzCw3kxlfqbDMF83idQG_A(eE=R0Y@IAth#?oAAXz7^xXWkTzS8XuZ z_Rr0~RzXTB0FTG*%Ld~h<~!cOEe*F#L@xupSx-_fW;KVWbfqPYC5wwmBI(xE*CE^L z0;1)7gwoR0NsJF(dys3sQK8A_p*@}gWTM*IY2@OZ)|b&4&$ZLZL4S zDm_7ZXn6}ePH%_Xt9LzE*f-@py(yM1<>lf1D{GrLu!ilax}y4E$uiK{-r6geTdXsp z@p5+T(_KkXjRqZc7YakH0%nAt@xk0V8S%q9@ugGhU|kq2EQJbDdQsb6r;;bEgOn0uD}I{wdMt zu3NEpkn^@CNlPk%8{|wq@s9<8iEdF$prP-DF{x#gVayUl=VJq#Z{nEHTYEx1}YueF{wDN_-?HMfmo<8eJKR}hVl5jRPS-)3oW zT2N1%_~wco-Zg!l3gO=KGeh5Z_&hzlIV4e?L5&LsHGop{`BFMnj3QegQAk_sr108e zS`XA9lvF~;b}k3rBBi~p--OErs%}z9GBb9}jdA_V4}FzAk(p0lsWBk!?Sm?%TlZ4W zC5fQlR!UZJr?aaRm(W^~TLn=Zj$DSGXzOwQq z0k%FlyO-xWyB?C1OI|FdAG)XZ#?|g)a+BB?vyE{lIUEI^+SWt>hU3)}F!xZOC5y;AQN&z0@!N(Z)R#MD(%q;w`S#5(ezaX>cXFBSTpQS@d>N%nR%N`110g zo$Kz(D(&kI!(V0rCys}%o8v_dimG$F;|85?ux76JbI!DZ) zi97>R^AvMb)=<9#IMP^$wO~+G)Rf1qHZ5|{9%i`lWsSUg0=XSei!l$~$)W?FIA$&Q zX)g-2%+%ryRpg-D9%XCs^X!!g?)aJNmoinvErrwa`>wY+RTTJ0NnEMGO_wzwGPpWc zz1RTyeI|@hzlMf{(ZgTb4F8Qy1=`@dklSqEJWr!%5}TY-eb~C+j&7%{1iP%;oDIES z{2hP0`xg4grZ*Rt`|hmqyvOICoPP%OTCAbzPljAx4OSKqwLp#?+K)tyk4oU*(^`%W zs~3OJb{)Cb6pB@ToZ4k5;ff0ePW%X@Z(zx_Zyg>7O}>YIWKMsRF&Ur16kRc~_s>q8 zF!(T8-lQ-zgFkW}(gfO$puztmizDh;--tC(&xi?9tzfgZnRP?BBS4x z$;u3lhsd!i;uQNExh#<{6MZL^DcZenb)Meq3K>2!GnjZ<5*7U8EZ}}H1*PRnK$ZPX zHkAYjdIB?PHa96UJRbO4ZJPi@uc4+<^hk3 z)^c(CCRr`n+Rn(JZf97$Cx>?;x1NCLfPfFe7TZZu!Osw(@##Q9p1^I$I&OBYghJH% zzLmmhWTg=O-T8HBl7KEzlI1iPWIs`}rS~a*17JLVIHX<>k=kR+tjCB9Chqv=;u0-R z%|&x0ttk+HGRwy*pyl%J1s9#0I(mlHZ;YecVw`gRbZe}+vqcJUSh=Ko1YYvrwX1wQ zzvOMY(~l80Y$+~!bL4S`M%!1Y`?#Fv7jgYec|jO!iIxl#1}uARt#^=2{_G)l^D^JO za9_VI+0O*6m^-{}7AEYOHF&FjD@cHXf}e#WHO&Xn(^qqL!l5)atykq3e*fu3PMQi? zUII;UP?8yb@=J|>T&ibb&JH&jp~W7*U=32{+OL>9Dlv22&LsIQa}&OnDBXxGWk+k- z*C{R0JXo_G-~@9AYwU!y&k<7mW_iZmE-b^Vs9)I$^7saRQ=31m6`fcC-alA5ta)r& z!ArPEDBouA?M|VDO~haR<(g81e7mEp@)ufObEW<-P+UvOMC5jX18PHzG{bKZ($!kJ zslL%k$XJV7GNdRi=(=KshLsYQWB1&Uj~NA~0v*eHEh5Vvs0whXXuPMnM~J?r3nw$6 zS5L3JMf~9EYblLghSwL#`M+@gQK8z~nr)XjYNo}}`cCv!{I&XTHGz{ShKPK2Nh{Z_ zsR+8i+>!TQj+utsRIkYPa80JI(!xfXombf(`F!Iix>vH_=h6uN98JEa2}d`ih;{!~ zXwBTOlprxQka@~uQ)&_6{w1mEFM2bg{T~z={39My#>%+5y}7x)WCq%O1+>UxNv5Vw zU{@WuX(5pqpL%}v%-1sSeFPq}$y7B; zl2vu({aqvPtuQcZ_eqkFUMaO3jVxo@QcUe1VBb{t2Z1XqyaXIZV2VcFH)jaZPM3D6 zhfXZ-IC_Rv%`FHKpNovUXMcHp#*9H@HVyx8O}M!pWGLjUCj9v7o+;md6J41}SB$av z+Gd+z&iF3KUpepo_Xz5uZQFnQ!f!qEWL+KV4L{*zmP%#=8*TsJ(^y3l`Txcq$x~8r z#AnOrF=x|!?KO`%l8@D~bE{KnsO2)7rM>9ZIIK_a+d|)t2OhGZ%qmFt*EQ$coW!*9^i9Cpq3=^9M z4Xypi&Z+^q*J@dOsC0dS!BTdTTE~Ef?*-1E1vPNTW^xnp{A7y3&*Y#zRyI8aQ1ZlQ z7o#%H>%9~(ZTBz>3@KlRmjOI4AyV7=oHbK~HPgaf5Gbd-();Hl)BpMc3{{zRXAc)1 zrJ2UoY4;zbAl`YYJH55i{tI`tH*67ZzoYJ0j5QBnxg=IqZd-27%o*gn-`(69G9=MC ze)@P*6;xvDYKi)<5n>mvplnI3^EyjTFC`B*z(d5$Mzr z!?-R;;&BU4%MhEFMaME4L_%E7JK2KsaB2s0yBv`3z=rArT)|epD!Gehk|)cBvH_}) zk6we8Y&pUv4_T!yCYixh+T;SWOj=!X;A!(ZxGJAJb4U40Ow(P2TgdgD}D zAp4$kYrVr(b+=O!LNTrB*_YEbDN! z$z~7iO7cA>j}Fp%I&lu+D3dXnTYHswAJIU}c=~+#;ONoglzAt9GUvXKZM{TBSHngE zWUqO?+JQp*q^=m$;Zd`^ZWyZn0mB0W-`~o6gFz=Z0x?5RB5dcT*zZwR?jN|{&+9Om z_jIsR%0Vw{7D?l(7{eG)al;popJHsr5I_cWuRE~!mdHK&&FvKnuBRNf8&Xp~1fK`T zyuw0}B!e`Qw>ocSfy#N4v)aD?t&MX}1rC)7AHs>2j#|FX*P*mz-E6I(d3!Rt<{0@2 zl0IgYj$lnWeW#Dr@h(AXdq&TV?GMs8rdG^jf`6Pqc(?(n7L3MkGtz&&<$vcrDIrO` zdJ)oC`Jnean~XltL23xJ_w!lSCtQN;xeGaQL^P#Cla-@+P-Id1u;E+B^Mw`_G~YaU zT(!eizC{GnyE7y0gZ3zsbfAB_m0jE`UF$WU2%+aq2)&PhCvT6b}ts&3z``zlnPp;FW=55b?-LvB9!!Ek48qy%6j6HyTGTT z>v-Df_6g&+z9Mdz4HJldx}h=HoC~vN0Gkyk){QC>rtUi&d}@pv0T;a^CdT6y%%})mi5bhcOvkCSlPhY5$?g zInc|)_~+FO-9zKk@Rlu}7{cm6 zZH<(C9>Cv)(&1D*N25Iz&KpI%&BrG&P0g^5G90d5=*z_1ajV_e*XfVqld*|>eJ{pX znnIh52k3REk7vvHNR=;EJ3S(;Gy_i#sw`I4y>$oh*1balytmbScA_`G;-u(C!@eU< zosUWS+t70+-j0^2rGN%l1pWOj`~2UDk5|*B>%n8t&<6yXoQV*3SL7?&Xxb;vqgs9^ z^YDpNld;JzwOk~&B}H(k+WpB?Eu8z$oZ1*V(vsG1Nft9N_N+A{K4ZGs!>DfGfAFrb zuyC5x&tPkNMG7(3pA3BODWI-?xL5WS zWNR}3-0C&v(!#Rt@GXfVdClI7ZM#5baSRQAGP6aIWb;s<=zxX9+7e4U$Z!+ ztAkc*Jo=r|S$_@0w!4?47`bXJZb>Pe4INLa_4ID5``s3LQev1*b`tvZ;mWSmR^3GX znLbr+x>%kioBDD;v&Z~t-wgT5_(o-` zi^otUwNfpy)0>`!g=#<`Rf&QtbZ=ONg`=USRPA^T!0mN9SNVt~((h-^H^EJ5Oe4U% zn2k$ms`5+-Lw*0SCGk2P%IhF>Zly6V;C}D=3>7cu=IYvP6RPzCfjv{ZW4Cm6wq%H?P=psP9^McYxSC zH~V*{0n6SqX1)*IDj(?YKoc6$lL}EyE{rOXc60R-y`bMc(oSG$8>Ht&d%9P&YTgu^ z<~MqZjE#+>90iwSpg9sDOi&9f0n5R9U zWK~&(Tb)+lOv9qa)W}qC3)uFD&C=I!zmF$IIM+tTrO9$1LLKi`QqG7mU46~T_k61#mr>$${gk_%YW6y{tv#R{}702yp=~*4d=wH|b zcykhksMYdfQ@=BklwNe~J|hQsHyet1ur7~`@Zv2DUcJ}XnCCEX$ugk&>wFg6;`dYG zeT(Dqbjj_qXwf5hUSAVRYJVI6vKan0c-n$tn^we^KvdP8mQ0@}^RGmBI|>cywa1CLC9(?R`2rlce< zv2ZHT1k~qO{n`1aTN&l&O}cn77RoE~wYqWpO!Mfe5I2w=2i|P6uK&EYY|H1^`{4&f z%h+{o*My9M<6LSEyD~&7jR|dLD%&+vi^oDd7Q>G{1q#}C&TWxu(&20!Pr_Mw#l*ye zUH?2?e!NLoMt+hY`1-`D8eN!5TXaa`pmWri>30y_TYLuT@y=70Z>k~-yMN2@9we8{ z&>Dxp4(KJ8!uim=1}75-oe*w=z4uiq(c}6Cn0GxZ3Ma7lmeyJfQgOD62&re8@kNq% zkY5Ak-fPoch-M|L5P2TYcd9%XjGX1T?)81<&hUCuU|&gkdU{%VaYbZ4b+X!rpMi=U zhO)8^#Lnxb!n7{dmCfctRbGW9Y2JHpU_f9;KP3hlm;4Lf0PQK3WyHxDd)jIgt}QHY zZJ9eLsvwuLAwTeEPWVufTZ5~t(wbZ}HcO$lbu&Eai5Wl3UR6955$sk~EgCUCQhNqs zrRR)F+Ql0~FhjjgGGqjDU263{dQDV_H!7s2n{9)3hwGHg`_rmqC9BtyVNqML;XW!o zy8Fw$wfy{k4Hi1VmmSD&_aw)Ce3s5#zhY1I7@AM_6j1^AA*&jC!YW)Mp}1HpDA|+c zcFx%_0ZL9Y^@UBj!YdPUQ)Xk@`(qND4Gh~$csrdzbaHg!u9=j8YG)fu+(PCCKkgXR z4dxQBznIy@fa0h-qk79`r^+t%fo3!0Nt}6UW_(-TKHCHP-vSFS#_X!%QV>@kr&yhF zEyUnl;rFMpu;q#v7fqX$gNlQ3->*Zaa05SHz7k2DOC-ut-N$pj*nx5;5HKuF z-_dsNVt3W9R|0UTK=R}*+N7cGU;;2ZaRBR(~WiAlgtxdDex{c~Y#uaNt{ii4!H(1&~vN595e^*U%&H|G8`dl9N=1!X8o1iPk&Ts4CP!zx? zI07W2UU+t&!sW>my3!9XvC9SHs;Gw-fn>*d{&V}?VN|Hvgfm22PM+c3T}NKAddT3s zulLE$OeGlKwmbsj5|2)U9B37Ai*}5bz@v6Cg4WgJau)F>a5UAsKHx|V z-$QMcKVUfI>sY)ZLVXuLIk}+YyFTO$H+eWQu_jK8G~Nm4efT)7@y64KKtm|Rw*5k5 zbyqlQVFPXEyK_tPn1+7)HK@i`d}Op0Ud*RD{S#NkEKy%qbFeXyqG_ckpn3ds7DaHE zeMi(mwpX8NCZ{W^D@r{Xyo3r=p@(#Pvpy4CP_&_tL}uQJf0?c z=T%rWk%Jd|Azl^=krw07Sf`}W5|vya(D?n6>W2Jdng?gCL?#MsD^Utb(DdL~7PFcQ zuWHxH(3YmQjvj>!AwOSrpIEJLqr#XE&{QbE(VEI z>Xtvh2gr|TFP0N`+G9ht{65Z0Naf#q++p6K*u3y-T4$6n?m1E$Imsk#lIw zSR91cMYM>s{)!HX72&>I4U}3*3-VAKb`XRPCJC*d%Sg$dpM}Eu7K?MkX(RPkmqljo zGxED$$VQSBqzXQ-J*JV)qH@C3{MzouRGo(OoY4Y&G_k*NqViaUqw)0V%gx4iN`~6D zGr$Qs-^>|~7NtUt5_s|AuQIns297M%tgA(xocw&{D0?Qe;Wj{0Y^KkZTgR0k-Fi zt?qP*idxD3Wfc@RS>cN`sVagmX67qLMJ6)7b-Y;1QUMCyi%l`b2 z7FQyY&?DD4@5lW~X+4azom~Xf29}v5!G9UPjjC`t?gQW_-T(M5eqKHpX%J1DpW`Q5 zx`ox{v+X<%CIC{S`~J?lzqmvi{bmCCjpP)fDj&DJ@Y`Q0&8DyWgx_V@#p9e4uOP8* zRB6+{x<#vn|9_mLzeN!D1#o$BREpHY{>l!H0~<-1X;D*dJI6!o|4XS@HEjk^#sh^~ z4c-}zQ4!G~;-Wb8|3{~|R|8??jDGf)L>CUN7El?jsM}n@+iP~CF!q@f@xCx8^~62c z?B6had~1*k<9NWsnT*i0n1jxLjNhMMCB0VqCDa`Cd*D{DyCHz`bM2Z80ekK zU;3{Gk=DvSJ@b-(^ym4vm}voQb~x1`zkC{$`!Qe=M$cfH^2GX6|C;cXsn)zMah8=( z23t)+Z1D68Z1zBr@ry1oG+SurpnGtF;9(8@Ux)35m=B}Rs4Hv24r)N2VqO26CQ${Z zv-pn`QRs%?DgHO30{>Nd{+kLf{ zjUaw}-``WRhyoGv>iwpMM8}N#@4m9qXLjV}1i9qSU*CPl@79`ecDoXNR6pryL1SD= zdK{7)pN;N|ri3ZHnEifb>s9_{Ql_nxi29?k99golcz&+DyyTw0`_purBI>?Z zYnLtje|8bqi$UD}YMv0Js1(@5roVwXOquEDMD}NjJU6xc9#&?Bd1T7+o zh1W%?dDgA^?!Q`;>to)2V8@fn3+pqPgxr2T&7$Y*V2L)X4m^$@(vEm9InGZsdYp1{ z$OkC)aLaY5EX&9q^kr}`IJo@!C2{fC?uyx~%HD*h8eg_RAfD*n`DwC^(TL~ukyyX| zK?6WtfnQVlFn|VM4xba^AHDJs5BBt!i>X7YI$9Y%tc*xI{S7zqJs#B6^cHFS?Js@= zJs!Z|eQ*ox-K!d0x1~?UF47@Q9xmG=rje2;Jm@kI1rTi32*qDZDIqkYQb!s|gYa}a zN%vxIPTszr7}eErTkd3p9JOA&T<5mf+k1Pu1(p2pq@?-2jX49dcraqSB{|*UGgN)$ z>4UYg*;_eT&R0_eVn&olPXi?+BcsFH7HOG#?prENC5rO@(1w;CzTUPWr9!~3!s`l*fTYgn?@ z^M7tI5EBPiz;#r{rYyt_G$+cG zl8yuEInweozj@nigKOJ}=!FU#eo)JR$B-O9f~EPo?(CxdY~?R@Uv=o^pNqAH_mIOIy#9 zO*9`?oJMHt7B0HS{4$P52i(X$USyxs(ZQP^T59%|B2Pjpoq>73hWabpb%$$Q4OH^Zuz6EOijo7yJ4(mQerVPtctX1 zB;=iimr`Da$H#(*S@!-t|MGWY(wQ&we~4XmDywVxJ{D$_BfeJO6=LC?)Zw~6UiiAFGUAQm+8iI z^y}OO7d)H8{5IG9XmPtCDQHI1esu5B>-1vlm=>QuU*+lqMm!>ueKzB2e_xX<-`HBW zv%#Nl?2cB{Ga0yrHk_?m$$Ald{F1T+_;716XZI3vsr8E$_RdhnCi&}^UJ&E`1tqxr znMCNL0`JSq6VlkzPGUS+Y~?j>SYl)^$1_6JM#A$l6PbiVxqUmIP0tYp2%_l{#{o1K%- z2pA?wTEBgWF7+PrJDG6>Xh2yF4E5u0`r1e|;MLiQg0Zt4R|O2m99TS z7FWV=@wu&02=8Q|eM{!OT&-ZqK{xZuHChf1UU|2@_Y&Z#e)n;gYOS-6G#6I2rQO(esbgK_ivLYS{l{bfflTs~ku_klRn^@uLCmoP zUuDVB2~^62ZI9R~UueDXETlN!a&DcbOJTkBM4xB(IgOQ@xTsGySq~$n9l<_ z8nfWIZ8}a|=5s!JOiA$XKU`A35iFClL-S#3oap_A@~55*FZKNbHa{?REK+hNt-*jWJqB;&dw-US0usU{f^g(JFl-5tYd@XiuQ zlk|CvGx_EDrVQiuWTN-r#su(CZe+G{f;mcxBm_z2$dXAhL!|S~o zr~5(Z$Bz@(2an?>KNzZ1Me2!3!7il}Kb)6xzI3k@1XOOwsu(ybPs- z5Cq}H%FF%HZq~?#R@k?NogGHeZBzxDE-Pc9bo5UthcIYAWE09=_QoVyserb|oZ!)y zi=fg>a7q2vi<0AB?UGQPCB~SHzr9MI4_{ypR!#bAMv{>A}SyMbl= zXfE?sPeZd)cZ%k?J>sd?QW9p~CETQPtMU}#<&b50C5!zSVgC=j7WS`*Z^-c$oqBKR zWw~8G0A;4?=aduO{e5}25c#q$vNFZLN(z>dGbbzmDT1faN((iq{1{&;R1i@4$-o_FUU0YNxIJIKA(0+`7zo9fC(w3gN}8m-{3%ny z>O04+p>(x1q3Hjj>@T3ATI2pv+;bFBIfw%yBBi9X%+RTHBi$g~-3%~_lG5EscgFxj zh?I2aP|`7U3@|Wr2R-L~|G)oQcinr}nzh)o**yDU=kt8(JB76-uw$(WcHg(&SGmF? zgwzK+0GHes6eA)y!Lcx9+Pma0Ij(j#H;G_`HIVNdPIT zs@@ww(Qgw2y@3^N<~n`4={}!3m$>;hf2+B$lu~s2GbH~x*OZpAW@YwkS={aH(|Wfdl+j;*{q>3Dud^%6^_~7Wmti*N!DNsH zeV|S%;ncy;61ZtQ`2Dxk4-uCq@U8@HoVfaUd~@+R-UY+bhw&BbM0oaZ)aaJ~mA+Y;;CR14W5)3skVNgs5 zaanHE45thYW0+d6{67kQxOh&|r$ynm5u?o*F4fw${Y%J07&(7KAZQSS9wV{Padf8L z?qjAKQsYjUtB#+OBPd;VLAoFnoutv*XAXYh%!R4Jsa9A?+1tBy+R4HEw_HV%R5Ay% zO>%npfFyIVsW`3HrGhgcWY_u8N$jKJ+fTnMVaVN<>v^(a8^Kr1XXF;elwz4%MrOTe z`3XaAA&~{Z<|8B<1FcLQeTnco~ZkmrgxMs*qU- ztvM!oHHZj!%)}cVml|V0`!GVRN5Qp7xFBY>!5wO4gk_R&gYd_I)P(x?rB0tVGOo%8 zCTr4?D{?R$RWM3{23S6 zC%5#AD^cQQ#AE2dgIDeZczfg71ezy7EjVXeu4zdw9*Osn5Ahx^-0Yc&>m_DZI$cgL zQDTXtwcV^TMs+?<(_lO^TX^cM)}w@CHdR>%0XD(wvyoKo)lx_MAA zlEjNbZoKi{>5=*|9;_at`8_1lu+67GmnUBlyxw7CC3Cdt3bYBLTwK6Ir(xCtPgKSO zo^Wh_JPZ~t-)Ad-=SR&k`7L!H(&}I@sqtf9C`4kgg-YeBd{4?gjp&*4Qsmbk#wXZN zA|GoDhYJXK=1RJ5#5@VF?crSqG+|1VO!+4RZmjJiZ1x&8Id9I6If`*!A#~2o$jHgi zTBLbZC0?nX=Y!f<>KUXxZ@q*yzRM%EP(A6Fe}Via{0O+2CR0Z0QnoK3JTaA4>!s@+ zdslp5lHf%dc%sZZDCqI|*2eyvOH>Nrq;Y)|>|1j@)J+8^1Pl9459N&Slk#8xqFRvb zBz_IP-=Mq8s}HOU0nmi-$ak<>-rmy;JKpb-`4kV`8&uT#~T+*C3fm!AVU-W&K?Vp`>leY>JX z7O(YD^Ks}KG5?`Faum8uArMY7bXHn(Z`cquXzp|x_wbYA@$sqMuAgr0O|v*HKY`cQ zs4jTgT}uZXk+#eiGZ1q8Wh;yv)ccuQY(Z;E2|P}w*ZB-a07kURER<-ffe9$Lg|zzK z=Obj~xQL=%{Z1Gh(ldcKL!)=Ea2_Li+$1hZVcb+je$O)a!0X_H#GxiHNlW&MMYM{U z(?&?4m=_`7;b0xZaP@KWq@25ZswZmX4g*uzLMwXQOiGRyaMX99t~7|9mQHcdpin_x zc!9?&VOVrOy*{kOs`?3a)lwYF;JGq5>#ZXJIR{Nt1KZ9uy7OkRl|}`<4_#CjL4NN9 zEdKQ>r3R)^D(Ji_1m(REi6mf;K(DV;m@iSHl2AEa2~f@$9)yjLHEb+Zm~+GZ zg{@S7>|7f5Wi&H#{w#nbWpVPLbIr{07&ki;Ru@Elg>b!?aKyaqkAF?tXx_vbKP(*Z z9;y5_l|Li$c-=raajNC{xJh3c*j&%&MW#L`xauY(tOp-gai3*i>GB*`gMFTdZ2k%L@XMZ3|II=`Nf{jqx~CR@gW z2^3ZM#7>O_li?Dwdlu8)NvGH;{S+r&Hj1adQrm%T+=ZURZbD%RJ)PzcZL{mQPV6ep zZ$0n2{wsjl0DM_;QF5hIyX@8PZ+LL7s3&|7J?W)iMW~HQOdLqJCq@n3WZM5gw2*M@ zDi4=~y}t)ge9hGHrd3*^l#+b!Mv!{5jTb${Ay?1_t4OC@!&(XSDH3UGMoqa%Q@xLa zUlK_q>&5l+1DWBiZ%RJ26Lvqh(Y}Y6pfsZ=+OuWzQh!ov$JRntxcC(qKVab2J9RH# zj33XWj!uP(w({yP@?k50_pm!aCa}PF}2Wro~t1r0x zHPeFUG&w&E%oLy>%^!EJwsoN)!_J*(Wb@6SD@nUvv&l4L8aDAtPbBH(&$vg)$9+m5 zcRIJ0ERs8#AD0QyW3W{_cGH4%X0Bp=?@M0os^hyh9`wuE5MLGL)70U0Tl~GvlHMVQ zAU)>w9(zodbRr=b@m7cQF*mkNeJpF$^fEmX-aPH1Mn$mnk*MB`8$d zL(DSMwWekVvBSNOCDMtl<4>?lcfQs97yFa#>ks7N^Z|BqA)1(edl8x@h2PCSNu6PX zH!|sIcK!C(K<75iTaO39A<}?}uZ(MZ)$QdWWMP3b;&Q)ZWgP8npxW$xJO^~N(znew zXw-UdNoabFy}14Mmbs3puih^VXwu17hxlvucHJF)(OofHUHc6Xy#@3Ai+Ur8+m#;` zvz{;8$Pd|1GL_-=CEP2AQ{+&Bv;c@8zgsWGovoecs`pSuJ^xJYMPyBdwOXzZ`h)>C zyTh8RskjRzAFD-@hL!%|w_a>^uOYB&pM#Er3)he8CTo6kR^4HOtH*;06em;mzd5UK zVsDBQ!?bPqz2HD0aubBHu>IuX?XK?di+%2#C$vkKBE5Wm`@P(1@8rR6ChnunKmU4W zX#S@D4Q%UP9Z zSjoLFC;4CV%;0bHOj&PV*{yj7VFipRDm?|g&?WgD{C9`{8G~#>zlS9!DUi=WLBrnc zeYs38L1LWkxaG7C{F}gUHmM0H$@#Vb+>mP;Qf3z@ub2jP{6})vexs&yg(E&5&N;Wr zM6B}1ish8H)gW7^kVB!WEyMMxo^B4f8<08bDVk^95qjIpJLxN5WY;Y?>#gIbaLtCa zZDM|ViQX2hCXk_YKm-ycpMliBo6^hEAvS~aM;_DBYiiuvJ`1(+uI9aKQYE`iA6{QW z_WKlQ>Y?tf_r?>y;@5}S7Bj0l+A|Vq-*$O9Wm-70^6}U%+)O|-V7FKcyYAzz26k&3 zaHquGY4tymMrH0~|3(@y*3fP%(AUrcqF+Cd#g0qo3M$TJVf;G3gT^#zLQWoiZl{$= z3nogYEgJg}RUWf@vZegny2UKv00czqJymz+18j#$=FFDzBu_YdS@7%~kNjy|Gt{gz zK$Z=wo%>0cNGG#{aIbst=M?HOCMZ8E-O%kP*(fpH!tp;QX5dxw#w<9hj?lmoGHbXvJ#2#d@Y!%U^LLpv;>{Y(*ml!*xR4(P@5ogLs<>fJyNSY`}=SPB-GyJQX_g8bF)+|0n&fL9jcAHcs^gy579>T zr?s9*nR5ggv7_sq_bP@XoUOf~)dmEthAnQpKZ+*%fBsE*X}y=?APm_{cnRBh0XO~q z8nMVxnJrYa)2gb>rYXHHw{0Q&&^dQXUPY;JOQmFXxNW z=rfQvonKpdBulMmo^vFsGrEZ1o9UP4{AMYJHXwM|ei0pazOrPjdIbBmyToe*61nOQ zxEn5_qtDV%(JjnM+pIaljTir2uhf$P+`_%X6Ax$C+ersUY>{X@{FMGu zAwhC+7X-mUGpx0+eK%N?$-8-0o_}z#QaNqm15@5{E zd7fm}Gb}wJ^j6Yv3(tm{}N7WV8{i+fm3*TQN?4 z?GCLW(h@MV+E3GFmlqe05nk6)j+S319@(2BX;R1>y~%O{`zh32r^f|LC+a!^JAQ`z z)JxGFC&vnM4A5i`Y{m>Vf3<74^QUebjcMfD1D_T^OE6UOzCCK z3m|uAcibVoJmm@F)jaHUbyk=fki42Ga%8ZWOR}FnGOTPs3_Y#lnKqY`U*+1!m<4s8 zBdcT8H|Qv|VAm+Fqr5s@jfQ|F4x8?oztH76W7tk*Xd(BYyDMjd^-_los}MQLN}ZbJ z)E}cBN(2YnuM=_+y0D9W{G-X6o$S?bRs{0`!nM$vIkgxkA7rQlWGPi$MA|^-LA1|> zOUWW-QT_EZX)}yDg|=&uadD9gJuX<_CsU1*y}|L`uyTTJx9ydp z?`f}9hmYOhrlP}*(QHV&Ln|NSZi&Fs%=@*4^VN=t*4P7I#L%z5hK{Riq^8S%zL}`U zI3H-nrp6O^S)DZl7+U?DY>>0a2=Zm4L0RDAGW1dZl2W|mD5U$VlKkFeO;Af{)yE(b z2fvx>BdUXnMcx{`6z`=LB2h4Gw%4ue(yOQ{Xqpvs^1)!i@WsYc0N-0}FH6*~6*=dk zmq1Cqg7L}AkWvhhA%rt0pKR8#kanj9!H(h2m$HWS~6Gh`4q%KS8wMU86Y%WgVz2Tx0DNnz1 zt6_}2Y;PG_wHE||lU^S4Ve?Vm=H~V5?Qz+r!1D78v=wP7AIZ^Dua^-%RaB=l5rjFZewXAfWSZJHTQ zmPE44)S9xibFTzM;^yrwv@njkFJA;7f(@tQghd<_GLlJpO7-*3TwITLcxUQt?-t-Y%4Vq zNny-QKkeVnd|_BTRBHx$tZNei9uBP$V%m3s|R2?jngeSDwMb8vDb13(thim#6w*70;k~-0JM2$^KgpBP(1!{ zLqvqDgqI)>`VJouj$lGdeF&&fPP9f+g{J)y1%(o@uwU3ZyP8hiw$nMPLUo;T6a+iUSb z{G;6G@J2I;Vk%tKBsJ^FN7R^`*> zCYx=Sz>x@S+Dy6Hg8}c(=FCiTewGPTP-o|kqHIDN`ZEbh<`lpx;zdHMfbdrL=;E$M zep3Gm4~9~S_Oua+T29p`TcWFpe9rg2?CY%G;Yxsu!3(I7**txufH(f}-eiu{sS0+g10Dp^TL`OCbqcchw%w3iP@=m%Jxa|&i*a>!IwuCN+jLu8f4oQ@JD>-hJ z6QYdIS<)|9EtUFqG&jrnZK%&R$5KT^D7cMPOrbZJv;*Nw^pQ|!_QFB)Vfzp@s8`Uu z<>ah`#$4fgcO;XKE4?S2Sk!b#__PNZ6kNNyi0{Q%8hwnTy|`4tdcij;{-cfWYpWMa zp^`LYGN0m#k|;lLPDT6FL#efiONrWTIgMSUrC0I_LqU~evUY0pcp&O<^}4Zt9Dg$4 z-bCx@AUW09NIs9v_MOD4PKPB=yE8seuRAfjj*n90a#Y63;>?Bm*F`%=IjAp}Nkk3OwGRCL83m8!zME3>v+N~0fvzRXOgao{W-hJGRuZ*azHw}C z?^Vu~>v_oozs2RcYn*Yh<`8P0liq&{LWh!qd&|7N_0ohoA^Q_dCqncmLV<`%Cxt~E zHCV&W;+aSC05WL+8CP*UW#FDETVY1B&yjq9{mfm)o%fO7HybGowpW=OYGFJJbY&9i z9`Zs3QBB+3xZG@rOx;|nHDEnHva0a=MV#FHGE(B=@eC1}9L`e<)6jq#fd`5J6BKh_ zq+O(Swo8O2rB36{S{GHH&u5el-p0gMk_s6Eg9U?>+0-`e-J0{gNikaEg)5wfP?gce zaCmjG%^R{)R!VE;b;|HwP5|I2CRQqDKz?JPU&?gque;Z#&4`J1&(X!%-d=1z)$>f| zUZ1Ngz2;NrS<#daLqdLUCV>t4yr7&kQ1YB?uk;?th}d!<5ge&~Uqmfk_(}Zu%*Rv> z3aZiZB~8=(wRHHpn1p4V~(C-RzWp%qM?i1$*AXPFeq zZrFI#l$-NrGW}4+^2-$%%{JZrDr9K@GH^malFYR(M{rO*-g}6XsV=4P^cePZAt-X2 zAptSto7)@`llx-;;r&V6rVJqc?9Jw9!_5h=$ZqP6auM-7Vk(pT(A?ZG zqXpBGNfu9Z{|w!^c!MQ*f)k%&kAxf@9UZHU1NOb`txLijt>g2A$+*?)d;u?V-q)tH z0fifu>bpOYpSQ${V&7f)Nu@nJngc$ZKNDDaA!&qVz-FRbYKgZ6rVf;Be;JWXyx`(6 zP}foeai=Dd7_WeJCmQ`!mLdS3U3sFh(4v_D7BS@&z*$z)vEf)+kGXujLkdolyj#AtZ>55*Q! ziqiG*wn~5L-%P0D`|%Go&fSgAgn}N~=yI(#S7%q#Vf{YODQ4wfUwgnqis=)hbFY%2 zxwU#L#knFPx=t%AzLuS5joaqb`4y!rv@?7&_1hN@>K}7+8Cu)f1=H$F1klFgb5Y0s zrv->lke&BIe;*t6SfAkIR&nxH5VVnbrC@pb>nNtYI@Be)+~BRGb~-l3!ik z^14G!=M2jioWgDt4k->T8*WPZhU*`b^4n61&s?ft znJ1S-QrS6=rKBh#BKVyVu5*n*McQ;ZdDet`C_rpalRClICw2=9IxkXj3Mzv?FiVR2 z!$*wJKzms^dC<}EILDD>dpkU~fUrOJjghE2qNcb~InYk6mE4gcqvdLFI0 zj65kP)5NXg=MoMlR|%Xyn^d}! zA2xFllf3_lpyfpQy=X`}=DUH0xyg-fC*5FW!7~Vmsda?^LsTYyJe4+#W&!IJ0`N1< zOfO6>h|I{mY)7EGt4sskH3^D&H3=%018w!6^m-&n6-fC@lg2bjPf1S0Sphrz3>!sxInGK?_s z<@@(DCnA1eRZ+#fzR_{r76`f{lY)yIPT8O5XYc;vq+2C(wO4)N3W-!c`eB#qp1IjM zY-iA9j|hS;9-gm^tbNIyXBzFUf>lWUVpnRr@MxWIeI-6n1zD>^@7vq&-*|uRoM^A1 zgiya0*tMN+#SA^=LHbFP>T*-19&JS(_B>+`5AKimx_>!6w0MZ&6%GJTOAJ!-0xv=$ zTgm+RQ|D3VwOofOFzHm^wiGyGUBp0TF=V{a979R8;kQYesKPQ=NR-ghu#y|n*;*s) z>-%2YduO&87+Wv3^p-BUn$Q|o#qxd_sgXm3ArzF;t7n}&Sg;5Y9+(qxzPRI{3ElU* zI}vuT&1zU^B{n+NZD$11Gh}AF;O(=~@mWf!rUA8eaUy$wrqtk9#J70EAQ_e`NB_wB z9Tsl6!>`P6-|XGC&|9O@5wo5Q{W|*n@d}_~;uJU~v~SY=n^|E_h+TP$K;**+zley* zr6dpqnU{WFf7|tVHcp;W5QW;}=Axa2cAL7cH7 zQ$`31&Q3B9blLdQ-hvx&`m1SWzSh?!2gIVwVTQih@jvE+Dv^y&=Q!M{U>V}CMpAYt2Eht34d|gey{ngKHj&d26?` zXx1Mw?77x$j~QO=kUMAdI$_=pfd^gPKi5o~Mc&APy_=gH^Yfer+YAS7>v1AmK^=@KsBk!> zxwRIx{O~8BAm438dmFtgIk$dUOd6Vi|g*Q(f({Y6$z@x*kEobrIPeg~cb?=h5!FqN~>BuI%Z#AX!nP(L0EqhJyQ z=RsDz5U zH(+jXR>=t<9ALB}xh)o}{nFXkYs)RGqN+p*z`l*6HOcq07r82t7}xtdY0kod_{0{CeVC zM2!V}w|8awfq|2)gX=r#HGFmqr{lsrEb*poc-qvL(x7&Wo2Ol`!2%wlp=gAKnKd~+ zaRkUubrDUQxrJ-9-zk5y@$6_|Q`MHuG<}efqgemu8fK+E+b#m7b?e&SAEG5j_+r{i zDQNCrSOVEO z=bo+wMy@~UHAA7=ce7%S+E;@cPsJr zcP>4SVQ|uim6sS}2Mc$~b@yCAOZ4Fh!TzV-5_pvD&S$_k&q~yELUFLa{b-{L8}zP{ z$&v8C4X^rWBUut;@WJOcmF>=N#9miKGMOWy;Wv|_Ni5kJQpi;UtX(&6HEs0ys5l)+ ze7lc3{9Sj_*|gal{v~T##d1guwE?B$S%!ZI2VTjirQ_ihr88Nh?`V;HS(NV8VpMG(?-Jv6w zi5fd;%~Y7OegCOrSk>3d26gan-el_^d_otwS~tr73`Y5N!!-XIj5z*psh9un?2Y9v z4c1_^H}@y$j5!DZFe%f?V|~|XAT4S9Cj_pTo63cHC9RI08Or}!*S~6ZPHdCXsQRo9 zL2>&(d@EV0j(Ms+WKhKt3&m~&d_A4Jb}a0orY*o_!9&RZ`)q$>HW^rcqP1udF`1m% zSuMZP9ANTB#{-l}_jGrj2D>RSPL*`;ZF3`&PUWwI)y?)M8l~PVe6tIwAMnQRO#Nww z?SEX2sIupn=`OrjU56@;kHL6L?sq>+WU%}jmZ$mq|Bt6}-KPn6Z)tq(P=W9MZooE< zgrU&c-NRk%c4y0>Hksc_U8t-a5ld{TJADnWp>ZL<`8LNvn@lM!vORBTzkB(k|6yj% zANEb32YttbVgM;Vf6b^RaBE%G?Ut%3_h-RsB(OI- zV}CGSqo_m}z$BqzfX>ANS|ai1TrbQ1!oIYOORvD)!O}pv^yzGkx9?k5?iGw0mftw_ z_&W-?Uk2!klKJ#FKv-uFr?d{}mxN}&Nr{Ba9imPAD2~we->?vVR=^w7D+d;o{U!lH zq=#(*v^bByRvvpNMdVgjD{Ifz8g=!>{D^6m?=`jU{Sniv6_co~tuphQN=d5V+~D?^ zdFy31F+@bScXHuizPT{2TjGlK!Aq&~gfXGyU;O$$o&(Ky|Guq*H#crhq4VIOqJb~0 zsFuyo7v_dIkmyOkQd*Ac?{(n-<)cRVSmmYb82X&n3qA8aroBSBrGXyK2k#F(i`495kJX3^Eh2J+yj06;`AymdWQ?TtgVV z40Lx@(zZI?$cf+kT|eSx-EDD+Y43w8QGr&-25(`?n<`#>>D~e(qL&^$O5^U}N=Y zm%OAe_S@?|J8ZEaQ2`G(w}o#52p?gHLm!O+uzOHq^XpIw@j{aa)i1}wFGL)QSm&{_ zqJ2zW=9Fved!Xie+E)cY2&0fM0`W5{U0Lk|wW@}d`lk9T?*N5Uq9KP_NJBlqU;n4V zxVgmX?!mTc$(zLWOrg`IzzU3DvY=vEJgw(6CI2seGaO2c7fAphx%) z94^s+y54A2py7+@Hw?Klhtqft>Qx>a3{v4in%+2X*on2IeW}hZRG@;??5Q=b`@C~} zoN?NTi0-&fuiY4{CBjX(sdSfezxn2C^@Zq542Cn^p2DK1OlvAACDvAZX#O69ufp5dNHC1j

%NgMJ6$X5K}1w@pTo=(F)gH`|5N2ogB7MkqiUtDA@Tv&whEq zjrzet3riO^KHlGMX7>Pxjw)Cu)fQwrF!FO&$*SJ~Vy)kroJelaHdI_7#xuMa-CnNH z;xa(*sS>P11^&=;nZip?EK#9bagKaW2taJ|T@Ui4`@a?CGXYUS7Z(yNt z{dhNTc$P8hdsI>6z?nw#$&6vLBsC#9L)+<&zfrw^7B3%1k)HX%>Slf^wgQEIy-;?) zU4^h}l%pvse}YmhP%5Hv)kM2D9V4LiGkNgatYI79RBU`&gm6?REb=+`y1pSSF%#{l zl>Un`{Hf?h4T|U5^mGg4X_*8Y-g6K<7}p<=mSLaBJ%c=rm2MynJK-!nGf2um{c}>4z{-jx|*L<{V8qHjW4WJ*Mc#Cpz)q+Hzl!n$T1>;H4J6FSz$^N5}mu zbeePb7)Ae==0QW@bA4mtXzuPq6d4Wf;+r2Ht2^Q@T}5R!N`R0S2Mmp+GmTe7a4_Fv zJgV$5sztBTZ}qMQ?#3rOM7r|_CsfM^n;S*&>&_ZT_k?S(b>QN~_dDT?PJ21*WeOui zHNwpwjzF;v>CcR7_XdX0o13;GK+5CtvF!hh}{x$Sv*Gl*r$N{VV1nO3No=s{PlcQ z*%BquXR2*7?^xAg`=hU!7*nsaOB{}%${_nA4UKN!}Lm|la>lSq^!ywB%p1NZP9lbq~%h{5D zu=476+OG9y>V(P8?wuUvTaBmFR!AKXHMQ8WzK88aO%qrn?f8eu6-jXLKLze*UhAIb zBwt_jp*y;HPbT7ViFWmU-g`$jT_(eS;DYChJ9j47t!n4yi0%}f&Sa_eONWQX7AU@; z>1hHZ$0|FkpT#loMvxMJE9I@f{NS}JcT(&NDUWQt5UZO0xXA7Q6tbljQYXe^L){my zz^(Z3YzMACli8<#_j+Eu=#4eJ8?p1zf_qC>Q1qikSDK&=w)RF|L5^zf&zF(H2Grvy zf_=v0>Wh|;?3~!UfNi4K8d{OIJ4!g~>UEV*V%QKmNGSzbdTOr&;ZN2;N&&yl595O& z!LNU*)$`R_7(xVIwMKbeAfe9&W^pwniPfP?rPDWJQT`AW$*srINa1)fsgoZ3*G&$V7H6@H#=3ccU6e{6=Gw!G~ql^3UoiYe;9 zZ?=+YB6kX|^pbvL9*Sm7Gm7u(tFOOP3}ET1SDDFfJbM3zE#Jr6$Y$ zd(ah78>B^$DQDv4)u6VcuGYd?Lsj4V*cACDSs@FZJV^yL_e=dydolWR;;$YQ!NrzL z2G24Fi&6=ar(|iOW)8}6cK3@65VQ%H{Aix1w;R^XZH5 z*Oq0a_vmK=S+A=M79_(Zy9z_0rB7m1J5;x+}@&P#?llp&6o)V=V3;ACFH{ zR9X0qm1ls<-~mT?cwqFFGh8=wUc+NswhmhgBCcxxt5k`-pSkj@t)55xtmY5)%tjWM=O4oY!s$=Py$WvYUT?nnfjpSOsW9Yl6TQh}i%@>{ zls48wQ8zUkzxma`9JZPU#QjtvBQXe4mv`o4|w%w*MR0l1}bZGdFzCl8QM1s)ieB?FXp3MG^mZ6m?#*q zWhGgk)Cn_#1aNnEBAnluI1EaU#cQVI9gnGict|MF$GbPAZrn`q=2NaE^|?{^;}46+ zj%A0slDHghTnQI5>=F& z%}AQ5jdm*{G0-V?&f^GeReGuU^QtC9JrB~LuyMVL?)K98C}F2TpZ)l@y2_^V2C+7o z(u;-<;Ng~6MjAjBt?1?|d3H;gEV_XD+X4*kS-(0;!=yYYhe}A~|0w$Vp97*xd$s^# zac5Kx?P{-RaQPl#Gd?;*{Y~ZjWRPFO(?}*U^IoI*Tp#iXnWeKXHaLA~qG% zXFRqpTE%*h6#P!F(YE${3^C5JL(gRVS1YSxt@o#5XPexicE3(|zu1fYxNk!W2r2(e z?JHs5#~W+Eu^tjc81COv0CnYV@{Yu|p%C29!d>6;1W4D}r4}>S-@(sZo*%V}Ypklm zzQq^K2V#BKBQb0Q4Vckb!Y{5oa~-WMjp@dF#fXtc@YO8Oz*~;jqEkd4r}HO!mP=C` zr|d5d>3sUBmqA{)-NKHRi%pvAuaVkggR9YFXVYh45B!{ap2K`NTDt6o^_x|ZJLX3?0Bz_o9Flai-VK$ftBh;q^f2Se5i9UTjaNT&Yu zbVh}a|58E{cE$G(O3lS|s>aazhUoFp7Yxb&|iRKZ!D;-@KQmU?OH&+)$7XcVF z-0u^S2xd4^*WS}&=X6@+c|r<#rY2pD`{CiXpHbI!54!Osm;Qr??svQY!Qb2FcsZf- zvfbkcf+T$`W+lR2I8IlhQ|_@ZQn&LvZV<~w{xsrZqQ-1sE-STy2eX+s-71sd={3+7 zo(up96|i1>klvZq%jq5*SBIh(X4`U8lhwZ;zWUsv*91fTGxf$;7?jb}!wxz?Y$px& z;H5Bs@%)h@GDQHfz8dhdk;?DNe@gmPqnt7$gHc4uTc9bFZ}APX43##-kh@N-_GqZ( zZy$*wPR4cHLEP-#--8pIE$rKD#Ed-sT>fYt7P!d$bFyEIb-NfCTm6_^z-7g__=9`- z&}SCI7oiB4%4WmzQy`<3!86|vhE^S~h=_yGT8AYY0oyls#qJK%b+LHa#rmD=vV$kJ zMf(hIy3C#C<3idML#t2AY&3kX4{$=H5zmgdVxi~d>Ey%RE))0}IX}~0Dh2bWn$UZV zY`y2{)2U}}K{r35btizVWc^mtqrOC(K8znKR&g)LO$m{1s@#U)4J&23PtW{ybN?Q4 zvnkt!RA8D)p=OQGm2xhjr3U7eULw%VG6eDjWGht9i{5Brt?Y|+0>$2QTw;h}DiL+h zlbcw7lov{XjQMz&a>>0om?(P0WJe4+?|x+Ef}=m%7^Yg{o=1i)wv;vxp|zKPJN)sxuyaxNn}g+i{UwZZW#JXksO#?; zh6w!|HhsV4*F-v=$xSYmz2o^jo{Z<7Ve5D;t-tQx<=ad<8Ow5*NxLZB-_84^q!&Hq zM3ejvZE}c<@!uR-<}5%4G3}O|;Whc9qRVdSD_KQg{>WH7-vu`ViDC2}u*Ay27d`jw z$C821`Uyz$Y@FdQ6XN&ZK(9Enz2uI?64s5Kf!TuxzOo~cSrwp3;KH#R`Csv8bY5ne3=fd|MyEaltzC8w%3myRJp0`WY zs8wVI;5Qtk_5TAQX7$a6-}|kuoet9=X!%ZbaNE0Orpe;h@GFkKFo2Ww?A_|$U}4jj zsi2wq`2lQdFbD6w|IvFJIX;Ms&#lD@iE+&2{?=SaOrAZrbNolN?T-@KEsT`>v#XF~ ziSxONjilip2+^gAWqfBqi68kuKXUZ>e>D{n<8!srFJ)NzX|oeN&g#9V@VcLG>ap}s z(3if%;&D*-Kjmd9{FPfw2XsI$vsuSGIJ((3RyFqUZ+ra>#3?<%Iy&VQ7ae)qho ztoryCE4$Os{r_Ih{r`w5W|u`)ZlpnN1a4ctQ%)`^9#&@^Uw?1i`xR-(AKb}eEAANk><)uCsu+k#aRQmTKcB{T`da*GJ`w!U{ zW7Q5F$g{-$v;*uey=sIl5M`j`;@C<)@;Vr4I@~J0zZkTNRw_nEg#y@)ZQ~;*T`fnbW=A%SfeJ_bUsCkYuFj-AQhrV{WVGxhI z<3BAxAoITkZOfnLC@P5q8}-UH0MS*l7Qh$b{4Jt6`-pt~MfHEvikQr>h3TcsH8{GT zV=+Y*8I}J7Q;ZQ8598>ECa}}iG=kt0#t-^5)0TNR#^XgWsN*-fQ^I5u_ZKctjt{1r z`G-n+J(Rc)KS{teeGeUnBRnD4i6Zyzh-i}jR*50|LiI&-)#JTWjXJfUTa<4knzNq! zg>EW$sg}lj*I%{?vzFGqKg@Hsf6SIv`)6|_3P~?IeDXM^D~;~1#p5E$+3hlWARt{O zL-z17#_!NSkYWUZ$C^b>eSyb!xA14R1%v#xPYB6du3S~EV3)YO9{&p|j?BRcM+0iK zC0nvC>B7A`u#0siwK?V3XTfA`m5ZTkEWl|fkI7fr*?wS{15BWSkg5Htqr0&Q zR$>}c#mOq-w@{Q$#;%6ZG80(-^bTMGgW4b8+R<-09Zm?(W2qdjV22GDl?D!|vkyO+Mhc zQWLyaE^}=M5becG278&Ek==I`df2hsTig+KHJy#mHnL_ijDX&?P_9W8G_ z1#dt-?H&5%YMf0;$_}pw1_0|oTmp}*7K^bh{&&ePM1Z5}n1O#!mO97^0X95RVUbE|~LY9+W@u3E@JyVbQGw=F+)?Z|tnr(ff|W<9#Nb%#;rB^>JS+LAf-m>Mb2bg-hkA3L>e_tk1>o|= zBR5pOe3Ok$gdJ5YG@15AwnndV9VuLq`s4KYht3JR!v&f1hp0ZoND>Vmt!-}e?g4Fp zuQz{j?(s@MQRAA_Zq5J4>~LSyAims`-!W_S{7u5-xFl~JrO)btf(5OybG-bd5y@1S z0l)~0E=^|K^WC$Vw_FFke5)S!JoOg5yg-tHc1cAhVMunRdOgi2wm&x70CCQT-<#A@ z+oO$W>>)a;=(&^B

&t$c{a1url1!E?YGlY?>MfcNs3PcMAu(fTCTE6>>l8=TVT zhFuOTKNv>-!ZX<0uv3ppipw{bu{fq9oVWL~LWAyds`EL)BNJwjc#Xf%iOo;(GWBAu zu(o8Uv6_lOGHZtCp(?SleWvbt~PG=NbvI8D<)5=zf#>=&j!|LnP-kN8^p!PhRA zXA~@J1N;}|>>J@HAG$0aA1M7==m=8u?e9TPk|ZKZK!SPEqCeA|96Ow2rM`d9$|@HI zZMH1$(VOSzJ=Ie0qEmNPIZeMDvw(Ur_W^T|^5;NkmRbigz2zus3EOwbjlM3O$Vwa~c$Ttq=LPez=AArx&d%9;*j}@sF(+Uto zFRqpa3HEdye0+73XwQ?626mwhauVA;k4a+ca)OZGUs-Vb=wrmo{!i=@>%dJCWrdnQ zB8yMsSivTiBsFh3lHja%rAF?5)wEt`qArJfxel}X@!-NwA43(P{M;ChEP19mifd{tV)$*T@6fB0>9}6kh64$W+BA z)%h1obS}?d2y5kuG;LZM*;O?o*6Q1o(9<`ROMm$ZEeI8J3!%oSdThM8xWw`YA5Nsi zObgb1P{__mn#}V0nvu?Fr?QowhkHtU72d`(5fR_*BZ&D5aaO>>iE;k#s-HSvo~JFm zK@PfEnH%q_E@6(der2sn3Q%0ZzT3@F5T_Hf?#clV>;SHq`A#$IJ&U zK+By$KX993oHVKDCTmOS#U+HK<;G7f8e6U)FBF@z5NsH{a4yCYZTtQDuVE#P`i7_z z(IqmAFz0WjgI_7p!sTJH-Y5#WrIug$+hQ6Svzndp1_leJxl2`un`r_y0N^20nVuo$ zy6OLfH@$gILf*9_eRKLGq4hz zBE;b|2kCk?DolC!nqxabV4mWsG48O=2(Q`Fubec`xz?>KF@tymfQQe;b|M_3b-vVh z0A=;H{1VC$uAz(4kj~?fQY{V+E~MU{U?d{ZYq{ZKEs=I4C!UqkCWWm_d#yHp)uhm> z*}v$r!DJg^47mN{d`?Y6{x8cS%ckcg_){OG-MV zyE{d?rJJE^7=|7gV%`m&^MB8J-%rn4&su%}H*3#kyq&%8>;B!>FW$d8+dr0lTeT=! z(+j2Hx#&=CLVL;^eA2}_o_gMuBy_|}OtGywT0;&%A=C2iK(VOHnDjw9MfEY+2GjBJ z#ZAATe>QNAQURbJE)3Y)rTamu#hM(5L1;JALk$&L7uyvwL&K%mB+$7=A~8nJe5}#le;X9h6V`j%w7dsvuizCSW2m0iYn}VkiTQ^k%J|d~*T5IfjZr%6idx zMdU2mHPm)_Cg`RtvyKO0%FfS8z}k$<&B)JUxQ$^1W*fVE-lHWoufBA()wdtPp)Pt{ z#ig8p;CWh0yrrR{L9WxRv5ZSq27yXKoAyPMfxN;keH6nlRI9TY5d zDd#r&tZ-R;g2zJ41XGUUT@0uvLoEqI-C+5gWOFL>MQ^q6oL~EnA;E05S()z<{-7)n z)B}>g9&`%hc2pg=OW`}MYn3tgr}=tkU%4Ukf)f#RPt`rR7T{Qz)%AqwR%B;AJWotC z5AT^Z@?=r)oJm~vGW6u8VWXjOjcDZ-6;jG^!&dT~<8@lb%zXIZvEJiJ2$EcIb}5Mm zzAs+J<29008gNFt`24{mgy%EmU;6q!jcwt$(LfKtSdpdQa=)Gs6*hLEHIy@aFmUg_ zBNsF3xtWQT>+52RbIzE>Hz&u(1C~ivF&e%%gO#3E<@PE^if}JT!7WHT91E*3VNKpndxC8N5QO+;ggvy-B9_4|ULt zl|Choe7P1b)2)T%0UkRTodDlvCFecQFLk|?)Fa~wCuUubsQ;=a z!^6$x=!LzvFY5S(Crcg*RLWRN1ktrfphu~4%Knh$u)p|d1|)o)jE(i5#G+MAXie}l zUqp}`434~>{pS2-^C={n9g{ZRv4iF3erI}OeI^Qjs~XkNsRB& zTTN5FmY%E4dblstvU8!8`DZ=dA;bx}4WA)l^M(J| zFrpn8(R*5(ja8LLB3D38EU3SLD>3>Kr=6RPvUs*DBy&*(aj*s@zBKz z8vLCGjl6MZWlT7PC&+V}ij-GdQpeB`QK+00Y|(n7P8jw@iN&mak^>|Y>NALdJ(*QA)Xp{!c(mG6#dK|j+7J!>y;Iyu2kK5YiukTsjZVl>1!~Y&jN_wpB;weXcd@ip zUQCB-PNnwQ8&Az#QR)RJpWSe0$12Om^;y!oWhgd(^?=_HT2T*HM##h%k?!GN{-Pxt z?xQQ2evh~^cWt@p@(L|oPbm+I}(k4TY4Y0d^g`+B;tU-yn37ppQHIN8cEz6R9 zrxQ%fEH@vINKBhnA5_i(8u4)+wrIQro|N|aEO%D^0{i;!KgRJZZ`ypmT@t>IGDF75 zigk2+14i<&ubq>#c)#XiV4|##nd5DGf|%GN*!E3%d$RYH8gddSchr142Y+f}mQiEQ z@53KqrQdGkP}g;8pd|7X(d6a%6r;kR>!Do}@_gm`S8ALHaU@>7>a(NCDVb?eLC?;( zMiBbwhh#NN_1&e`8=q?5^wR^qM^2>hSx7xkhWxOArXiND@Gt+zjqH?^@O_l5xqE`^ z)j;LP9{a*8{j%BJbz{e&O<=h$vZ|1gTF^mrv1e*ZN0IepS44)Rrjvhh5vpUno^-M9 z)gHE#KuO*-D9l6a|x1Q}J!-VXA$(AFu^Q2fX}$D6iIZP{NaEt?r3 zoSz7g#sMzrBH#bs)PFqQyOrKxvNx;LDiZYc*;di`;yT|nN%>vbuCU~bMDLm5nccnR zPgg4)Dt;*1v89zqPo5?Pmn0PnG{Gh>_-Mo>o}Lkx#aK!!kbo?U(LvX(<5UPg1YI58@W+U8XEMkTaHIg~=^084Fj6W#?olvC3wf;)72d#w2)V>}jbkDbIBQlQ)+E`8^fjP)*IzF+4%t18h(a07xIx-JPbe-b zeTn1D8&Fgj%%Dk~tywpqvqkkxRyFulydrTRb+Iw)V9XE?wvnIm+xddoMxRe|-=#SS z)TH@bB*eDEX9(PWr@t~pK(?9Oe}MYe2r_OcHe=eZzOHa@=IYy`OX{9p`wybBY)Uhy z2m|+9Ui<`;e#2U=(%~f!QAIjD)PMq2XH)fa4|mxuVg@3k@LGC&*9^c{vU4T}POkV~ zfaQW(*_eMi{6S0;U zmjRm9|HS0}G8cvuc|H(ru^c9LE8E>ucYe&{Hph^i;Nrr-`_n|_8St|;M4o@rqsf2& zM^ayPiK>Nq9{R`j5jw>t)OakZ9<;w5V=wjx2Y2r!_IsO6cVkD}w0{(G;Tgq<8=fAZ z)U55kd$9PqS=#9cO>%LN{C0Oe_H*VZztI-|oS#|ACbY_iEPII1LB6zEi0keLKGy#} z$6845_YN%KKrHJ)Xa5*TWOlr~h^j_vEMn`PY|cN{tK%3pFfM3|;zq>ZBgtkXS#a-y zfwB4A$UDoyoiHx>Eu--F+*<@0*Cyqi!HPlAKmLi2mO9w>@j4wRwDw#ZQds(U+nf{; zgtLt_vb8tZJ2*hUcxb!bo$;^VZwWaidrFwnTA-Swk!-F4Wc9n|cL)B`{h?%N8*yHi z9qxUfc}=JVOzD5*_a;yOF?c-xCq^pwufgNtKL!une~|D0-s8vrBz0;2rN$5bJq5Hi zfOES=Wa0jD?2lN1B%)kO4J{q_vwq2;y9@cPoA%$L+}aMHWR24^qGBFphV)N-w0SM` z_=Q}Dd?kBSJvBo;8(oH6zZyU6_lDinRtdTDeMa)5TTkL#p`F?&-)S%CCBsSZiF#y* z`GRrVyrT8#s~`Q~B60j_GqneUs?KPuxif z@3WT%_kBq&a}!XJAYQIyx-CFbReTU0HZac~egCh`>_y^)W)&v#>HjkfGrc{c8q7ET zH&zXd{*33_u)&xq>lkVV?B`j+Ka@Fy_V>j9wa4o)rVi#M?>V(gs~0nBs%h~Xk#Ll) zW(h0aBkHhjOD^o_0#$moR}@u=5i#9{oGEdZDP^|v0lE)0flZ)){l%5X)$F~nXBzGz8EcisQhfB2Sc13 zh}g0=5%?}RYkXulSv?)GmL0% z`DD&4H!?v2uXt6>I9$N(epgOgfx~u_qam0^+yu*=nV^6rveFD`+PrTBO|7{RknvIC zKG$>eMfCWSyJ$T8PUX9j1VXzdHc4bQ9s0}53W3QdKjrg5to=$5bawF9m*A2@(9*5% zSdN65{QhPRI~C}B_DTlTIPa|WV5`tcJP3t1cq%}XPyOcXvZ$uY$xFR4Dpg?f`&jF* zMVBE}7k0?bI1F^jFg0oD^%%K(LI5t)J)R#m6PL?in*@s$$SyRW`u~a$id+JAh+G8 zBKIQ&+uAL>t!XT`49CfPw@qPss-_A{*#o0xeT10i#i^4@awt2l2D4Vxp`w(o{}idl zXu5!zvwKCDco{ukQVLPC3E%{&E`kKj&T|Ll)>1<&}7>ZkZP3B zip(E6A!e70vNGf6F_I)B5EDCC6}%nd=8ha&{QM5Puxsm<+TzFE=EKryM`;0xs!v*< zZrA)YFS7s^-6oV&NV~{(E&vK}=G{!1QTOp$G&e{swEi$z;x}?eH0b4fb(4oqBQHu7 zBQ2+Y-5^b)9LS<4U{j=caTFFNz_8J!nxpEXL}WO-Q}BjfuZsHY+U@D0CGlc;zMO@l zuxo(kF81`*o;E4^RErBFipZ3L0%t#4&$Cz`k={Bu0ez~^>AaCD;T+GxUsWZ!wuz!% zI*G#5co`58erSG>X5@-JBQ~EHxj*NKuojJxftTu-;O_Cci;4z=D>U>R&}*3FrTXg( zc6;UfsXS#tM**}bvxLX7Ts_};&LdLYkrNM!xJj=WMumZD+OKBY!%>w4Lngb07HX)y zKd}^CA_9VU{GixNWj@2PDk=4CTFI>q%kuO5kA4#W0YR)=f>4S_xpq<0|p94ZA= zIvJILIA&KHCECGCcJ9)+0CTDKIvafnPWKNK_joemecAufj*Xi#dv@CXU2R}&5qv+t zJrOsvs1IDt**2d&nn-+rSd3jd8i;(D6x{W*U%}hSt|2`U39Glw0+7s3vF@muTAbx@uUo(5l3jPhk{{b)jW!~D z53>}{Ij2a&Pgp_J%!rLLH(ga1(W^(~4V84G|5Po|xa_vrVhOoYu%o6B`l0^Z&vyp` zUgl@C{CM~)e7$z5QkG7qex<`s8C|r={e+Aq>J_W6`(ZLjId?Cc_&XUjPNymJF87a+ z4-%qXsYY2SR!6+tDAp84>*~R+met-d zO1f^kA%&^e=Uaj(xkOLsw|Fp&D|&W)uQ_X9)8iMP0?Q}YU(!JIlqu1Kf?_%J+_==^ zIzTN6rxH}Pj66uk9@Ef;zPj2biXyfnhSGkw^MvOnxW>s)Jq6m;$I_JQ^;<3B-~clg z!4&$h7lk6kZ30x{i(sq12xcMMe*F)Zt65DDG(&kM_%dE*8PEA@EE!VmGj+#qU;;Ri zdk0a-@5&_kU20A|0YqeaQ<4F0KghH2Cm>l+8<=|Vr3{tb2C=o&$cGL@YQ^(eIbR?A zHcm3jnBZxgXVo*c{mo!Ku+Z?{j*<;l$a3qUpy-eOxVM;AyouFmJc}EqpK4adSNS8t z)rw2=eYJzr6dM9oaru27SP=hBojf#<282ZyLhOB+i9yH@S!WSksyx0* z8*E!>+ewe+3b%0C&NuGI4>IJilCV^zC6%kO?_kIbs&mIl?o7#!q ze5->Gx|OPwK(g`)$%pZ4*+Mq9);5X+JgAm_o!+*#JfYaaCS7|wK<&j{#-l`VNL5`p zB@*r7>unebWTzQo&Q1DcR~IJqjq85+`-$o$wQ#68yE-^JRdVO%Z4VksHh?eFk!UZ4 zkCSW|5>n;*MRQ(2=4JvJ`=2|Q@^KT;a??ulcnag_dIs=56V0+SC({Oc|ICh-$D7N2O+H-Y-4KOF(P0P-N79Tkg{hlTOwI=DJIIaD!8DKM@le_Qz+4Q%4XG*ON9 z9Li>CbAu<+*`ddVPvr$pz0;tnCi!rat{{-ep`+Udvaz=6MMV=>eLxXgHDlM$4fwnp zn=x~_%9KXH%|`km6nnRgXz9uCC)-xH_kP_!6`@U6@K*g%z!6#gsVo6a}4B0U)6#7@nto;ZJ7&8h++YTnX7?B|}XB$SOgH4Xf@ zlgZ3q6Q|_|C7m;l_JTO}+M9aBdxIrMbT8)~1-^|MCgQOKR*mvxM`v3R{wy;jMKci# z)=9Diq`0`yVFhYyP1i$ND}}bqu{qWlhS1RwSnMFf08*vg`S@@g-QO?&oQU1@_ZMm_ zczxd8-BY*J_s&frES+ad9Jjf4>>WZ8SN7;(w|*3U%k3oG?!9OU!e^}^u$)&=TvIVR zE8xty*{=+CL8lElQcEG0ZNPmKV>ca^l5j2Dh>wykLc_#S4>Y}zW4+0qR^vWfzo z*nH=T865YZ@fw>1gQ7#`@9Z5b>fP`PraDd@24Iyl7p`n5Rd{#AkmR0WyiK5)A@$S9 zx4t<0F+3;|7@o=xK|H54_5Q5FvmT#jHX`p~T_@XkIAcb-#BscZnci}HhQycivA9Z_ zZb4T4s0xf7=~3^sM2UZ<6(P3{`k2^Rpbbu)YPN>Jxk1$|*;ySy)tvW3w>WihKy>ms zaO;8oM$=1crx_c1a z`&v|jeFsb5<>Xjrvmvf)H_d)1|Lc@grz${jKs(_mZPLMGy6<9U26?;B-vZU<84|N6 ze$6QfjIvY0_w1iGrWe=eaLT147kWGo*VzZLFFc4TY|w7&MS zIf+VRqB0nb4jg1KZ?pAG8CV`|t)OTVJC{miasve)%TlhgZpy6}+)z{h&_BWj4RupBmg3!wotZiCEf( z@l_M^G?h;$*7z!9m$&7XWbc}Ad%S2^4=6_%$IYQ&V2o)pp?jew94nfueRkpKrsG! z^CZsZzblOpXUCYpow`e>XW2K1h6iT8pI%A?@NBI1y)gcpZOoL$!|gGNScN!AOIl1A z>s9CI()ok{gC-95O*-CW`|W3SErZ$~wx0^s(D?l2(E7UB^m#WwnUPNL)i2oR zz_C`hQ7m-9YLAmVj?{}?e8EyOWKUN=ODl0~Qo4@0;wi2?;iuUWe(oW6|)|Yi(6&Qjb%#8V)B*XY77LwwMc0)0Fnu-87X!rXGF3j}5+( z(>svfX0j9hh4i+Kt7`09!uR&=-$$L>$WRUx%$YB>g2^%@%_=~)8OKBSYn3B7T^B#1 zoxMC#mmR4ARf)YiB^igSYF*c}lyMGwobez%%fE%)URtNQpPkK!Hx$rUb2DDu_=86K zM6A7$R;z+TrD@5j0{P<^gWd9k83Uq+abZ)vn*sDkeYR`iNlRv z;W%1eFimYI&JY2Q8C~IMVraUOEZ?JW++`00biKMf<3mmF-#;GsRUWGzjO8v=4U2XS z;=1*cG}C{eYq3+v)zMXM072_upgH|}7Ct0SSWFO?wDc3A@16;7+%G0kNxPhJFm0a&_6_wNKK21prs6xxQVA2;oQra4R{)5XK~CDGm$ z2uC}a_*aj{$(Hh8g$2lRrsB!wW`{W)Lvh+0=&nomNVS{pNJ$bT6{6T-Ji@{dRyE*}lr{0*8}ebB&-8 z@Yz@Dz&xm4Y+U=!Z5vw%Pb@%Lk&Y13GBOf+8?^uh#j{Ok5*K+a)k!1;2PekF$zceX z=2Tg=2~Zbm^M$_5yozzGw;oIrpxyuRBm@0ovLV_vc9ujcntCQjNQOT z>8F4F9TvoWa|F zhX`lmgNytV&~^(?O1mQR=`lxjRn`Uq+79ewMqQ1clJW&_tH-Rqj+wo9%5<02{Rr>D z-y}k;3x>seh)yB^31+!x2jO}u@NH8ZI3)P}w$0L=ngZxA{Zk_QBG`QN7;rqCTsFu_ z+@0aC9n=UMC#(OI$d>%CM3$N3{{o!<_Z0t>$o}Ja2)lDU*v#kf3pEP;>v%ZW(-8o6 zO7K|8sM|UzmZA4_$d7li%CK-3Ml`;@yVOh-2YD&6wLLr&@sPfSnD_<4xY4`~GYLWs zs$vjdR`giLANZd5(>yrpY!15z?rO;{ExOhcZ^Sy!l~m4!ukfO}L{c3#sPcyT{_W$Y zb(&Ae{}f%4PH6h0`b!<>eD$6f3-?>D_SWjZ?w1pIb*h7f8zPciN3ALan87rsZ}_pm-FA~SJrhP_KeS$~?6T~JKxsByMBJCMn)b2gejJ{w7@~1hOOY{89e!)Ar6};c_U)HEi<4vY;@S8azW(<=_49`#LwFQAo@sGEsBA+bZkkbOzq>wbz69G zsS7!eTt@r7vuqcqcOX|B6l>~p?oBjyBDeDzC)J^iST8R&4zM!zV!>zcJ%MOhS86Ma zZ@HKNpXI=X&elGI`=u8b21bm-c8;!$o6GPg!Vash9n#QH5^YR%H^oO6g%RMEK}u)M z=5tiBo@ZMl7HVpJt3D{pXr{W}CkgN^Vi3B61T-n-QHNgQA0TYV^r2GY{t_Y@74)tH-~ccH)+oyno9< zjAX0cUVK+n-|nBar8?g>)qY#S+qkxvu9mK(VkSqj#L^|FkQbV@-&qX0FjY$~>^^@c zFtL1zP+vOcZlfphfaH)1$s2lXEpO`kRMRvTaW#aDV8>EP50@UTit5l_^jh_zCyc$i9dVXHMykraEId#zBUrgz29nPWnOW@*0x5znwl}lR5FV;a$=YqS!*41xIcd>tiJ{f1i zcJlRI;WHWX3jLE6ad8w$k72}Htq!2C)9!11=W@9iK3QdLaBBT2v{B~aN*uCeC4z)6FMFQUeFy#^8Kj`Yk9Yv z5}$Vf{@#5PC<;Cmu9$#CG0kd}yVZmUOAdffMsdPGQ9_+4o`H++LFpL@6oMS3s`^eJ zYLjE>t*2$|MlsaYw_eY>{#?PvcDfOeD-{#GsAN`1Y3SO%gBrSWr3Gy_aY*u{k+=@^xl+8 z`84tJ+G(OSHzu6&Dy)B`oA2}CUvLvJw``eQ{2Y$0?7~Ga__AyyeKk7zK}4W8+f^cp z-VIoiwumPwE|K9<0SW#~j94PNruGg)5vZYQUK#?vi!GoNwYu71Q9S!)h~#%hg0^>+ zl?Gg*`__!p^Q_AO`eY0uz2S#hexSO%$*af|jf306FH1m}Z<0QGH&75h+$j=>agL*2IvB2UIVv}`QG==Iz7KoU^c4F2oQjDIwk()aKLeuh=l0QP<%47fHO$86(Mc8;#ouIVr(&2OfqU zXh!*qtoBpel{7fQv_p}O#`q2yf+q*_4;ipS=xaZJ4+(Z>n2)^~l{vW`i4JB`0PR8~ z0>vZ9R;$cRD&ZH}y&hq?e9IujOHSC3@0(Y-|?!Pt9~+B-wUCf*aS9Tgq&zzD*d;Zlnb9ocK-I z3EU1x)5|BL*Mktt8<2c)WLiyac(Ko;B{BAc%Y)5&*C{OQ=UiI3l?L24u_oz0@{qL> zla?XtGGxJ9v#Xd?Xx9fj&#Q%I;aApg-bW>3LA!pF7gs760n zrN&{aKeTrfVqR!ART0viP8iBl#}xan&_lZ+1%$#Wjy?wt;obgtKrs!)5o>Lhuzb&;osnpT5 zhhXo~VLcZxSatRDHtaoa?RH6!kLjPCuY3aRANG@I_btm(bw2$3qo=>SdrnM0Iaz05 zs)PSpjDnr2H-GXQ%@)XRv>h@pq{k)8HJSKIeL^Q`h}m!+sRx1`kQa^nBMbU8Lq(ehFLKsJ|2~= zykgS0&Q)GI?_eo=DAA^%RWIfRtqdlM%Uv-)+@iAHA8;*QT-vc;8SSZaC~-?Dlu#`wFBp$o}r zynQk!@~)7n{?+wUzH8W(Wop1X>d&w^03uL zM9}S6*FMDE7yoc|6O1UYGp~ImF239(EXh11s9Bz!Ug*rrX*BQ!?p=MD?#WVZ2^{V^ zt*aANmU58tdiWVA!JF8teHfA+t9NUve4{~Jqa`kS9HIsjFiUh9-7n6z^L*oZ%*5k$ zd$|YMlo%MT&jg;N1gJbG-`Mf`T!3AI9^b=L{)`z zm-2oGq`WOfto*`OI1EKG)vJ6V*do>C(e9lms!Ez~o#f`L6mBKoO?l0#CNf~N8AW`F z{S2FJ;@&dQ~@6EB9_~gTg5NvU0a%|XS5NzU(LT%`Zi}w&ZnU; zYrLy(TEnYNQcR*sF*`f^?shzQE~*6@{=C~RIIclPUGxeayHU5F=)l|YL0oXMDK>hg+!@5hYwFxV!W%W3W{VF=ATs) ze{if=PHk`*-F>R-DfC0_nwDKi?56x8Z@lJO>CLIS8j#sW;Li?@$Z)?=&X)f^}q=_spZU%t+! z)!9^XlcS#Z@TlYBLK}(hyn+w{vNVw_KT+FZ`N8k*YRcZpV)ic%Q zyy;gZe+=pP^IOGWq%&=N6jq+^cT5W2{cy8X3q-+_TJ0|L(WW;Y@{TYMdENS64sJ{j zr0Oo<&^HVWcNWHPYmdl{Rym6891^+#ot&%KxD(k&39Lh76LQ1F7LR=iPM%-l=U3y;XXNxERT7)aFpeAly86aF z+hls*FDUBOEae;Liu{ioyw`Oos{M0sQR-kLC2OKRUvmYaBp1d*(2N^*IY&pm!V-tm zL-abn)1EYa(wZ1*2WZtgCG3FY?1DgFL0(WZ+x7UYdhTT2CxiNvwzY!I_Pd1C@?@mu z%BrltcDcZVS9(=0&`3l1>q$gFaZj7;gbRzWze8wmm`eBx3}w++Zr$X@5s7J zIa}w`rwI5fLzZt?_Gh}7JZ8q!P_XwKuw>Vu8?wsX8r*D{evvgZ8CTOHo#%FZh`9pE z02vxIbrrAOYNl`)YyE8S$dE8LNoR*F-n2wmZ3)!S`Ex9MOH91=B_-7(zo`xXbl4RH zLmOh~lM$%kTy>TKf*h5Gs|bTpU2f=EhD09OC?i*~wXV-YANKa7n=N@tC!&){lxm$& zc6KyrbU&vkfm=VF_;gQOhc(l|4+`H+DAvvdXQZQivr&RPJ>4IlpW#T_M<(AS(o@1j z<$sm&@8VN8PeYp=QiL z{bDI#uQK=Xa0?A|R0tW-NQ6m#m0S68f_BPwP76rStI%;|h&am=5g2r`H-7zLOh!vDHD7UB3_I7br&tTj0jGm#+XYHv$W^`mkf=|G8_j8UnG!`H-{vtM9Q^IU7`>I8 zg~49ku!C4_d}1Vv=UMmoTy+@<-WJ(`aj8J8)90%(Ltu`BO!hiR+3-AAz|T+5?txQP zb){gwUY@+qlna2ix=%H^b@_74VB|soNSC$!wFd>FOKT?m&G7v2U3@H3?4q^67~G&~ zn`@h~vg-Aq6qai2p1mg~d1UqzlyJCULK{k{^1oRC9~*C!$P*ID@m+kLtBEMhLAdwT zUj4YgO3+jIUbgho*}4p0Ylg3jR`w0HQs>pTn$r8Y)|+P~t8e;E^{1alSa5S0jBkiz zl1LS3m&_Wob9#mXWt>1^(eMee^BEb^J0_Yp&UkC{CB+jbRqiplA!Y!fRnViTNAwjJ7WT5MB4v-+S58lgnwq;KucbIfOGUN6* z4|zSSB7?@fxiXa-@a%`1&)NCA?TvuZ_Ud=7MU;^vap&aR{O|#2>)@^LK_yuX%kC&p zYUpfLHN>ReZyBH5d=e~-hli?Eh{eaj(9ThYST@n>`Q&d~u;nsAYNFJgn%tH~j*X3* zBu}MVJ&KE)WQ3;R=Cy>FFS21yQEtk@;<1`J-zPSOx2?x!Abefn*XT@(B~5CH(8NnY zLH1Am5xd2%rW63n{3!-R@Jp57xq)|Ox^tI2{~k={bUA84!3}z`yQ`UIfk3j%_Q>%p zBwWAJNPOMQQiz3n4osw&9}5v>60hg|>Pln4qC)D^MBHk6J_gq_tJ@DdF zZ0LL)mB>9~*H6nzeQg_hT$}ZeN15k~Qe3%Hl8|zQL%Iu~#x#MN zG(joz<6id;lizdi^K&SUTGNulaiR;*vsva__MRApJEbd8_%>;j@Uz=NnC~x!_eu8C z{>0kcgnIr#z=ATez0O7Q$AZG}PI{BNrjV&4+i{Pw7Nj7G4eA zz01Iki|y~HxINIL?~B6A-%A#IGQGK|7nb?QDmFh47cG6o_|q9WLa1_vS=Z`ixQSWJ z)ELm^!O-lva0l7(ti;h-t$EDlB_)96A7GAf5b5M3++;8)G+glD-!QylpnD3YS&fm% z-7EghY#@;OmKyBL8KQd(*$psPXl>f<;v*z(k7MdfEK|8%sif51x)q%)) z1MaTjmnYGaMJ{~*f$WOYQDi?N_m{|<_eK(>HMMD~?z}fYP0EdI4NCWBvPI6Fq#CmR zXiyAYWEI<501b-c|F&sVu>CRnAgN_yri^1sfEWR)(hqgCtl6muOZ-1Wz2Q>>V@grc z=ncJQNsQX~j*IM0q60bs{=c04Wh@Y9i&rij!;0=Uj~jX!)}K>Vxx1IAJ4^kK`viwt zo0>w|@?AJv&nFw5t(e6r=zmX+i)~bLJ~K~dEVVblRr|{CSd8|){#ienpq;xwPrAzx zhRcoZt;v`hgWhWhc)vNH(0(+C59zyoyD|c}PsY++A(O(1>noS~KFvpiSLLpIne|1r z$xJG{oTp<1;7>;oZnE$xZtGYI>%A~5sD|Z z;KrDUiaJ%UFTVRgwlOiXGc&TAi9|0Bl?in^p$@C%WckiGy|#E=v=-y~y5Px$h{(JQTTsP9c7iF3+pyd)o3;dYLtKw8Bn< zU=1Cmm&3g98sPu^JE`rRk6mF-CnYp0gXJ~JvfYgyqB`3S$WwuUz9e=>jIo>lp9!5|6iQD?QYe zgPx%K&@nQO3zbJ(%EuAx_XS@u-x$|ksX@w!cJy3UrsEed?<&JYCSxE$L7I^QEvH}- z0>0w{7)yy1hyA094>(OV*3wZr@&EWTo$xqFFQPtFR!@=Sam1+o&m9Y1+Tl<{gZYtK~JbW2#DS9f|kyX z3W-URdB_(vO(bux=is-z0LlkjnaQVcQheysD-npVby~{MFOg#qtT&6l3Vy3%OFGva zR2-R9gz6M|dvo%ueL{{2=&WqExGm>~+9G+%Wn4S(+aoC6ccIOyEd9>F^E>S3pRUVROXr!kcgwY zhap|JZmsZ3^fH(D#PvZ8?`u0b1~l^c-k%G$jRxLd+l$AYdHEcs)&yTt$4zp6f_hAy zT5w105N(u17Z0GGa9~<%pWJMf>>V~9 z*2-((6855DimO7uA@ALpq-!IP$)ESyFOd+LvRkgC>y!n=)w+`{8VHkpa5F_Gm!s-r za8lF`{kC9Ro#Yz614MoAQJRj=FY(h8b6aEj>WBu{zo(s@;dK*clsGI)?WVbM1>nq` zU@Wk~$#&z@`Iq^5CUc6O%F(iZ+mqXR?k(-pir;FEJ|`K$`kuS-ua|q?tb&e9M5*3K zfee=ye_;4EGE(xFO0QyJ?H86+Vqxo6@Mm3}nvt?d@l{y(T@`l07FZ-Kjhva|GD}tf-r@Pp9Mcizi?~`5Usr3 zGBJtUL6?}YdSB=%2imGmdQddb(#p41ymS>#3Yy73aGufTyUY4KmGwRzPb`B)LoG?R=w?y{mrd?0wVmqu|Oc)8=8#VdZfXlg%*oZ!e4m6F6YJ^#>bsIr4{f|G^SfvG>2r9 ztYAA3z40hTbE8J@%X+KL?J)bZI$jDK&RUh&$4ce6JlN04+xR`7EymSD{Bcc-TlIug zDe+0-#inbGD&jlV1HFFta}p~wFNCTogEXmbq_svh^;n4-&~A`TGt^mdVk` z(k)i3fCTdhgPntz+J{N-9iWFRAf!}$aioo&Yq;c#v`cL;q%~Q9%8B$9ZXsJY^n`*M)PNnFY&+wg%;~zZGcV#KTmOnw};wyQERm=KC}Z80q1=+ z=1Q3`ep>K{c@0MJ^_Wcg0duV6X$CudTRYp9q}p*b^jCF4h8(_d3!TAD{c}UmvehAa z*%#)1eSTzzo#s{(`s-|1`s=&6{?Q59jnBBWpUNVdT^pvmO3_sC&z(sMZHw_?)ANiin7G z2?$6xNDN3fNJ|dVT|)>%C`y-fgLJoai8KQY-CaWuUBkfLcs&1g*Zuf@d)ML%Q+v;| zW1i=iW?1IDcB}$Yx8&8ss!(8((jXD7U4IAkg?#Uyvm^F8K7EXOsaxXD9JJNDm6D)1 z^pTA=QLQGug5o(BlgC-u8IEh8fX>_r>wU1U^yiCSE_1n9b9l__iS*)E0upR#c=|rc zN<`iT`}ka4e&#pTWy{~Rs&506DH2IQL)`|Dny^aEBD_E=Fr8KhWk35fT$R&`j;x7D zW1)YN0^AL45}&S88fCkC{gl&*$2eCH?$00ha%85Z}i%75=S{0)(>YiF)QUWP{jNkce>= z0*61@C*FOT9mk#y)YbYr8zH06IWBwg3SD$=bK7G1Q?_p@2~`Bhq2)5GYuQwpBcWNQ zo?;FT-|BY0kAK{CkUITdu7cC=BWN;u6b3cI3LOtKqq)=Whox{HZxm4nS&SwbdGw%74x9V@c%30>+^ZiSaH(jw=Ha) z&m9z_;2UF)u+FFnrS8BU!#wkjkqR3$ZM_dOoH0yPpyagJ zTw=Zc)obfR0joG&!y;++kJO9Nb$M8ypMOyKjm0$e!b{hAY0cmsHHz}a%Q%MRciEyn z(07DeEh?A$6gOu5fJ;*NX|2+I<=!&b3#X*0NVahxhi1D|T)N3a3rl%E0yj z2~xAYBk4ovK&>hmGfphYxS2}c(YJ3J+a}sxr)QvZOaE2i{$d91{QEZl)L~QXQkvds zBSJQ2*4TPFv-wGplu}1Faz4}CUWxwqc55AEh_!kKqN{4*R;VL7Hzda8P_ z91E6)GCQH8*4$F8a!eaFgkq{C0ap&jj+Xq0Ts)tqdXDN119?s-Ai~0e5wW&ui0s%j ziWWCS`#obDVA^zNGU-}_PZKsz7brZ>>albY128Dl)K{!VQr||qA$MiWQ#*f^=kU zS|-_*w8SQhw40RaWbl~+)ng#ij8RJeb(7Q+EUod$%MATBPI%`mMpQXzw^zk@SGte+B^hlOvj9v+98hFQMDbtf8 zUY52#i((_=Pi5hVH#|R5lP-G9@42n+>Dr>u;hZLH=kZyFRaU5OYo4t(*CF@x?5tSW zB+JyvT6SciIUuC2P>r6D6khAe%G=q8|2d1A(d^(E2oq=5;Cx_EZw@dcob;653+kNE zIc(JaZTw*25Op{_bUi$@`x2u-o+(|=y0Jq(qWf~^QXg_N72g*W2wda%Zu8G37}g%N zSLAe_o|GiA?%%$lT5B#X9hIIJ$;f^gQ8e$|aGem#M+sV-7%2O>8z6l)L7Y`fR(w2O z8}pnT><|K-0?}mb7*~ zNt~p)_EQ#Vpy4P|*jw8vnZ7)WMy8hY&ZGrrchVx3k)FFy?&+y|-Sf9Rt#!sbHF`=y z=IEnV`X+9?df_%or6!=VCp?+JywSvrlPx2Y)Vq1_s7MIsZ8HJAIh{@sLU-C ztk28Nn>q(Y&FH=vPyF_k!^oxeeR;(lRx=qN4v5-e*xvh(qax^NO=dJ)aiUXx&`Ljr zoD(5euU8YV_BZjul3ke@8s1#p*oiiirFfaHUWQcoq%uX#7Qpo!9#JmpYCo@bgPT^g zoE(&u-DLW#p60gFG@IIfRJ5DVV*;6yd_WrP^mE5VqH$OD1p&eCeIuED3qv9lL z|2`Mt=E-gV%nIfm*upe2!D?L;GB6--kc5BeODgJvn_OzQOkkQgMVeq+m6Lc0_!ie2 zz0U2jQo8mE$n8lPplptVjIK3Goo-Dx+AG`jw|=WJK3?t%sFWpUTJ+AdxUwC6@BroS z91D9qqP!c?2P`}+ib2}=r0M#{duK|kNV2hk*drx7{oCFV8b6@tO1ppi5{q*`QNTl@ ztn>@|K15bj=VVZE7=P7@g!!vPYw!62j|w=El>8q|g-2wDVHFfYaoVf^$6`58e{Qav z0vTO8__@%op{niedQz&7$(YB_m9BHxwu+&)5sJODJUTwE<3Y7|F|p~XB;h-$2r*M^ zJmD7ZHfZlYp{^w3Lkd<`4T}X5QlJdmW-Dry8{FSIyst|)WFAx!X*P4KObqsME`K2vu@*3CkNbLZ#lJ~xSW(}^~#2c~9}uA`9i)55_PfwCc4gN#@D*DQN7 zHb2xI45uOTYxMSelyl9Ej5j|sC(ltr6-%W8s3HsZ`Sz)~yDSb;cG0DySfrGFa`>{D zG2a4b{a|KvcZ9~ZVZ-j{JEKB9j1=dE_lf+#Ix8D!EaeNNNd0}6?2Fx#UpZ`nruB6a zHP1&$81p_idS;AUu<%CbKi}iwk@k0rmgUv0?++ph%KSe3uOIh%3jU%=Y4} zwQH^A&;`QVNNtvIvSQA5(yM#80s(jEjVnW+dFD2qjDox!VT3|;bURk1+4@+x|J}g=y|H@;x?P#)qzF@u}rASokD<(HoV`j})@-*>v^b zeVIDW#kUNBy+y2^I z99o-6+hb{M5TZA_P-5}-qyiOi6o*X6uay1;(9iy)bH9s-d(=1QNe;?fYWO#Zs9~H_ zblQ`%RPyZqPX6v6@T5(4!;56(PAG`c(!1R51W@$ey5N634l@%*RR%FO3yOcDh)OJu zhC-}2WUYaX{^ihYsTyN@MP%9)2&vrrd;0FNzsSW##cd!!2Kp` zJggvL#8${d>X4ugHKIVqvAD2V2p*jp*j7-(BxzO_Yp~`ht`AcAvM1#sPCtDQAD!I-1M&} zAO9Ccq@sZ^R+31m$~9T1!(0zG+%>KaWo5#ue4j)B`@O3(1oU$67;ne7MqbD*#1zkU zeAkPOqI}IfmpNKiT_x@IZ-l=|Xnw@-#oG_dwNIZ~KBjfFTO|t3o$uGe4UvwIwH@Ay zu;%_#W!dJKxk@rXkm~KMO{{^TqswhR5%Mx*{j1byDE7Y_?0ghP*JES}944GTV8>oL z-i^>F*KQ`eUF$xf7m82&0(s{UwnXCkp+fu{Y)*6hD2 z^h4V^bgviRYm(S;*YuPMaN;BIO{tmghC}aIX9IU4gHA1E7g6}X%z3NC@1C|1b@{9R zJ710dgb}gQ_f`TVstFK9EBcP5SuFyR8KcOyv5pBdFllO-_5t5fRR|8S`O~ylg0EO$QpVUQk-CcZ2EPMyJ~qmV`vV_t*}pw?X~ddO){F zQS$hm)iAem(qfk<$;>7}OUHv%WRX#}rr0Jn8*+K+o|7~1<{izm7+unx7sS)L+8!3L z<(0V0-HzRRzFtpA;?vsnNrE}H7qV#d8QkG#_mdZNOBT}1tVhKH>oLAMPi)VL`wCXu zzO~6$XmhzXKDH-a`w%os8f#RFK2y1L#wnki!f-yHm`T~LXF&gKtuUqVviI6(dz4DL zP;7h0FuZLha}iLANlOQF^ws0i74d*X(((AWompo6&*~B*T%In(2#FccEB>bi_?VIu z7;RFar!ctKOtl=1gNI{~ANbF&gWLHUmzEn<%?g4h{EC}cyfZeky35m+I7)kMFJvx> z&rit!!l!fB9^X(dSR%BpI=F||NrZG+n4=2XJNW{R< zCnFyZzEUgdwHjc44g7TFWo7-;xe#1FOFRYgIbJ0{kJvykaktD1D0&r+u34s?N6eq9 zsdlEjBnE~eAj&z~Z*XNLiF0DHfLX3Kf9qqT{F)af*ipFdyY0|yK%^Em61^GKXSJ>SNv#oh7Hn>SvMyT zx!wlU(p#R=@Fad)1vap>q_*aDOEs(&MU$KF0cVT|Bp%HR+Zr9$SMFNDlBJ*ULZ3De zsb%fqHkmh}_L}`g46YdM$3W3E|LAr6>Ht|2dbLpHR)Y1Nx7=XORo&Q697lDqM#GVM zho@|f@bN+0ctWv0Z)I=P*?`hr)Dha`jFWe#wMq&@;1MlU_~TkhNvB@<4)4}Je=YX* zazWloF&7YZRJ*p=v90`CVMk;m9Gd&&5w^obU)S|<5T=iIrG{;yBwQ-?zm-`rofIa&uWKapvr2ex(YqoY3Rr`$|I z9rWplpOkNz@>}=Wi!S+D6+kVSC{O+~6c56**@oQA*L!1NB%l_GY?=${G zjvyTZ(rA|GO?TLiz3?2^UO}XO^=*rBdK+Iqv{U-@dX!16MB-IlnAhQ6o)}B>jssi2451blDD3`Xjrb zMR2}>s9J^Zz!Qz;LHrmEX)5YY(?%o3Id{nG#&D8xzrm8rbDOZTBlp9!TFN{FQS$ zT7SxR|CBO{ADePm%UY=B)X>{ya9Prvw^*pE7b@k@`qPlD?5G-k<2GGT2#_h?EV)o5 z#T>1|=nJ+-bVg^WG@T~HUGmx!@bRT6-Xki$1)h!|e2OcZ8z?DUJ4i;o00SaP--5j- zt5yHWOIBLgGR z4^9c9SX`4`C)u^qD$WMFg$1?yWvd(q3DXtRoXtDz^J)kks@*;{%5*h{7W1uiIhUehv8BT1ujM%ky+xX>%!AO(1Vc1~k0e6n`X@?AhU z*@CRnLW^L<1i+%4C-B=dUwY4r6iwLQxXc$`;_66wd?{_fb{g)zcPK?o%_!)2UF^pN z|M|Ar7Wr43%SD1gVN{mxIiJJMOSTZ5`m3=VLj2DkK)d%DwtiMnL$$Q{vxV&}(W%QTqnJ5V0Q~oA2ycgKA1vvk!8Mu*`iz5b**rt{Wr$j1OH}A z-f(;ZuZ9P~{Ym9s@`Z`Og;{}mt2$4z-Vd66y3Y8E(jAqG$UAc@Mz=H^SprwG1tz|> zHdQb%(V#1;wgvdG1p4DgnQtXJte=_}P-HP9)(H(b7{-XQY(^7S<&9(3H<_)AzW$>) zl_1LMG?IRsJ82Ux;JiVKWw)Q=vmF6%;ZISuAP~=O6&7sTaGkR$-WQ7jb~a^;TZctu zI2MP&l~|x5@BIaGu$>mW3wH9vcmTsgF!gP)9b^GzsT7tIHTd0J!gpceC6H~DyjZ+k z2>fDcwYZxaYxCo(S-WH!vTqXOkx{4X;%Y-|Lk!A3n5@;{i;Z0VIOY+1sYdE-)fIDZ z|JH6C&7)bheWD}P@#Mih8U{ALGJd}Naqz=O0)owNGrQN^T2l2Odz>ZVfil9i8}oTE zGa+{9?l(b73eLT>82whZE1SJulKDF9xZWrF0TB<+b5pW>Y=avNt)mk)%S=14jtf1$ ztpED;3pSV@<8Ff9XuEOqKPBb5xCj;rpBlNFj-P2(ffEB~UIGp|U&x>p*_T?_HGIZ9 zRV=n6%+Il)$*NppfTK^2T2Za*^(^~F-2{=Tc$j;+ZfFK_GvjPxbG(t$YJ+Up+z{-h zB2cj#-MMqjk87FIx1&x+ltR|o2YssH`c$XOUE4B|Wm58h0-u<94PCu1;r?Z($7!!$ z_q{qbMDe=tw&ab#Sfys4uqtm5rnsG#<_DKm)#!iGRu&C{W_Mi ztGI6ez8EeasEyrNAQTMs?(?Ou+z@J|g#+C|FuA@rTc@rMesdL;Y{^35{GlF(%ky5r zHQr}SgpF#!RxSLt0(T_fUXB10o(gHU3H9@%<72BE1H@#_ckBc2^DINkNQ9lz1%2xV z6TWfGUZ71%&dj^&78dkcv6X4#giLS8E@lLg1$+8jLz%13OFVpPdR9jK&_J1C)4BYX z?U`=#neyQ;DHzm7gW}X4j6}-Ha*S2W37NM&!!6DqZd>WulDEH$PQpF>#QU zgU{%Ir@JD~hPTUE!@bj;DKdlM@{Hdw@;>l|ALf%0Pzg96mh;?2_y+_K1Evj%FaFLN z4%SY3m9g;>lpz%l2fc-bw%)Dd;*bXlKzKomGuL809%mN?sv{SdBqQNk_)f34-|Jb0 zN8{v(5B%ZFjYM5GI!Q7Cyp-S@d|?M@V49^Rq(7 z3B^q+kl?SL(&V;BPiZR`o!GSqukr|01n3BP$G*Y6?#K0o5OYG(fCsXche4X9n*u_W zRd0dm2a)ir?0u038@to81M=ba^U-?hsG=CN)H`ce%`5hey|uNywK3qhHg$N2V=2kfx=k&OyoR(t}FJFEF=vU#Jt{fsk82$P7SovF?i?&&AhF^wb3( zw^HW8^y^+VxyZg2O_4 zt9B;XdeY>cmZAA1sdLXM-f%LPhd|>?Ka~FSNSKDwbB=*w)$_VdA5*Q5KQeRnAaWt* za0eKR(PAL1iE>t?L&V}O;pYV1H7}fkEH$Gub<`&j|INTVQ;&=g40@K=#%bMz|0*&643j@cdNV(;R9|Qg-QMusi(BAJ!^uMjc1R&;>*<{hoA=HRw{(@c zl#-W|t7>JHOsVq@b*iE*7e-94rgiJM5zRJ|8DgdAn&arUsml@T8*5wIA{gf4!;fcpWp0o{NzTn)T7Gv{=PRl-Yg3fjVsTEfjpX zhYncS6^SW+)VC?lum#vg!pUb6N3?9@3-LbRNA^H(1*fwrDK!vWA5-9l4ElJrd{k+8 zk)9uRNa5>B_2@IwtAG(o!{qM^B9iDM|_D-zqy>g+;SUCVP|H3CG_@3%vw(R zOvAcK=bKLtu&6i=a-}!IdDIQ`P)mWyUucT+N&>P5O@WjT#ml{tZch7DewX))OWxw@ z6O~QHQzg1Mrdpor9FlDAE}{#ejdqWb1VaOzsvaEcL*dc&fWj4tjU&Qd4>?W#S&vEx znh#xt0AUtpLy88OihJEjs}sn*vk2G&DQ(JZD}js~<>bGJde z8W)A1J-gk@QZDXqO8TPJNI?By5rr0XtLyT-y=ZLh#INlbP8_M&8H)#}lIoOS4NDVB zgU68^KmyN@$zVy8N#weJnh^D4U)5(XGN=<*EksL4TJP}A;B$8oy5!f!o~y*4p#wd)EZ12ks8PDgl{ zj%VGAog=EX)A~mh07!pOf98l48*am!#CQ3&wfxtT)5Mf1n~;Oi(DyWooS@v>TTkw} zgof3;^#D#|oPGXiKhiriq4drxa&I-ac(w6HXh96hMQ^7cHzoEvj_Ir#PPAU6Zyl!c zTk)?sI>ymQzJfaeybT}+u>V8H0cbc`@Qmyu%g+DMUQW@=Y#p!l*i!sSjf%ThPnN_b zo*G31)u9=5(S82X<$BHip{eRcO#c<+hA86H%H~P?-i14TvX+VtFfjD|ZNJdVNqS+L zEG(7C5nlHj<<-KM>IlkbsN&>Cn6=!`sf-w&`VaD!q|D+FEwK5+Ok9Ig?ew%Q6NUr5 z|1~!(5ve2$zbP#~0jGv1adKu_MwHW05Ax$)zGumT_4zUrnEd;?o;NDKs+VO-@wxAw zM~1=6a?S3W7WVa>qVK|?{u=tsUdY2beHNoIkbKvSz(C3Orx{@{L&>N{5`s{X68=44 z);chuUnF<$St9xJZ`jWN7xv-*B`_j3gnuPL7BcT9Q^0Bf6dFimJwi9|sIOX#^Eubu zW6tX1|Jp$qwCj6C>#2$4T^G7o+e@B)#+L@}zre|vUzf?Q5?!y$tb|bP?NfZxr@>I4 zjUpSU-)k5P`_By0L&PO`&blSs?Qn)!@h0_6t>Y7a3*^$!kag6nacx!HU>KUdfHm#i zdYX+ldFeWdj2Yd_vHU*xaTGPsYqyix1L%laG%#QIv3M) zFo;M>?{0^Fj%ROC)%1!I|NXm-w^UUzxDw!XE;+kcX_&*Q^wev{o(jIC(~iNYNa|1B zoBv&lVd27p7Zav0m7woYeaA|$GBWi^XxTy*Krm>krfqpz7B$W& zuNgb|^F1uo+Ct-BvS>)B*bEOhNG?Y;hl)C6`n5K*W|eHgM2*{M=`Lf>(cM>bh%F>? z%uu%sMN3B|hflj84rX=dX>|r@K+}gR6aKTFs~g+ZIs@~UtwHqjoX3#X(DL=3>{v-*v-?NmeR9%FY3(10UZ5C>^-7obwAm${pBRD z&w0&O5C$;RrIveSLHREQ=dCz+T5`vY7<-h;7P2v1Hj^(C22J})mT{gQKRq6@Ea@u7 za#z6&7rs?f71-K`q8Hdu<2|MuUmKA#xzL*y`}Q4w9{G_Q(Fk&(d4o2oO(8S&PnnxP zH)u>*qN9V%Z>n}p7hvB!58mFRtZ??ijBtp8mx2;T2sFU;06+7VDl;Ij=UPB3@J+>;s=XyTPpqKSjRz=KaHbM}5qp*@ zlsNP&)qUc^)mzECFnfD#i@%@0@Eab75+F73-nhI7_SUghN@I>S zH%nJ|5mexHO-|mM5*e3nO}kT{d307Jc0w*BEYoudMP_VEJq%y2UEuWk2saQeeacvH zA!apJgAFbfh_s|N^4B#$o%oev8hFzPdk%(WiRq24BXCN=mkWJdgr?LPusP*L&o}u; z(Vu9OC_OgH`eAsaqd3IllWj@mCR(oRvuY>q2O*RDr+9%qBjY5XI+pF&;Nci=R$-zqb6*u~|6L$hZa@ zK5hC`t#j{;50@3@9t;b2jvgd%UfLq;Z6^>p+#eA?_=-A8O{?i}4@)F<+%10W=>G(IS1Ub8fnSEJ`@ zt#duy)X|7hwQ#2335Utr(qDb()5SXZMPi2{eM1X3TkrnE80xAKP&Q(!k#eul9hH_7 zbk_ku_Mr9J)#6tR+8S>cGnC>5KcuDQV*PT5Ri^1+=*q?aFNBgXRpf_#Y<+$+N?s~G zYk_*?VoD*a4gc-WhSQnSg?s)17?)4HPBr*^8t0~_Ua-i&xr4#IQ6X3Wpvxjc*i2ja zv%u{l8#Db(t@-l6ev5$mxt^V;>$1E!*?owpn4V|QuU?TJaeXr?>INfd$DkXtCo|vK z!Gxl$!99Pe@U+8>%!5)loDD~_Mf;8Tvhc$Xe#4k&oe=m3aXSyDp+lepU{=HUqa4WZ z8Qxk{f5)rR{o(Nir+o!yRSx=<=>q&JF1bqip=Xp-EN5d|Mn$Fa4j0&?B8MNU(ic*w zqn89uaeAnENZNsTI4ePCJwpBI1f51W3y#cKQ`YAw>hKs*t96ZPY#tfI<=B($%e zNT}n75HnzBTTLotJt3oe%7ENw3;T38RCl+b6Due%*^+SH~ipfH$OY%vYO^dWH7~z5D7a)&#w5$HXh2@{5*b z+^p^f$&!Xm@15dEVWZ`Va|3U8tqh6G#XYPzIJppX_o}(oTq9@n>Tx8z47Gdg;tNYf zw%n>m{7RJ-A?9X#^_PP1!fho_v zZ6Geyc$giFxoUN)ScsNdIGZBJMSGEP8<}p$yLfn=V*XXXX`!y#DHArLmZz*u-R*pc zHBnJ#MB0a^Cl#@q%L;0^G?YbKA0L5=CMX+EGKuEsI}E-VXDSiS@ViygWFFJwG4o-c z>@73wDz5C$`wB_$+uz285yxtSIg@QDKK_K03&t|y;vQyh-V1Uv$#-)DMA_Q{NR*@PLkqj=;W=s4C@|oolbXy?jj^qf;VNdAZ1XFOr#uE*CxCc0#7(gP}=b zn&(MZhogKSU!T;C`c_l=yujJ&2$k1D}>3N70?w+@NIiIX)N=n|FUY1a
+e`Mg4+lGolZCT)V)IzY?Bn_;Tqn@&Q*Au#`bI65%VTGy3Q5qWNW?tp zF8~X(5^V1IXzBf7{JXJ16qs2J!PjYa@t+o;P`n$>;q&3J=~f|$-RX#lh8{#xi`ZfF z)=qZVx`CP9!2o~hyc;N1kgx?x7}_70^4A`uNPLj1ZMj)dHs@UYxZTJ{-ab*5;4HpZ z%^Idcpq~A%Mp>6M6A5xGPd(kevaPnO!@F*WLIX#J0gGf!!8g3fu8bdpv;-%t;nW(Q zuig=pRfodXX?X_{sV*d?oXs(IZo^ou9mr)%c``o{62$iCdASbo$tzD>6t@i|767^P zaishl()5C#^S87U`2}V*&UPOQ&gTbKr2zbogvaJngX@ZM(g7}7?>@B= z>z8(MdLduH(tR#LzKG{S%}96Z z`G`IW-krAr^M!rmz$@IJPp7{)P_C{4U{=ewTl5Lc{r4`thA74uy%1zIV-qT_z+kB zVx-);{Z#a8+))?e=hI9bSRcZELQTPA(B+!k0Lo(Pi0i}n_8-)*ggR zW(5SkFG}L=I9pRf$bXn3(s~PBNsgv#y?U6-=Di)%RDr)QuUB((O##Rf@^>vpmmB>%yWzoGH8=wdhpITk6T>g(L$pa=-osW+x=fPMfYibgod4z$R4n@>QMmt{!4vZ5f`wCkAyVM9{t> zqNPr&JxAk!2(RfYeJsG;$A`MD9`@0&IeYV94SE+uQJF=$$ASOy-}4VP)o%4`jt)wy zavL;S61lV|tbtrL%m+?`{0PY}1{ETQtx2#D54d&g{~cuhj)x#Iy1s5=+FUMoLIZ6?rAADT zp|(}vqSS&ekSwVLo7JsXD}#6A&yTs_lW7;bg)|onH$ZX2MHj2ra?4_+fDvtQ8XGh8 zO0&IS(%ieUEpAH!*q`qVZ{kghG%9sSJdOfi1_LVJ*Dpe=_07#y(!2L?T7a1 z573yPz(59BZRC=%6eG%iM=fe*Lgj};>a&#VcKzdsZo&kh-u(Cz)t6n2El&?sd64#9 zw6v9>!n0V$ig}8w2~GjmcMmM6d{Ijnl%bHG0R;iD$*}9=N6tLuQO&LP5nF-t^T0cX zs9wHqcM%;7TBsW}S7$?hr%02NchsEA7`LAEZr#cBTvr5E8cPD>72U7h)Ju4z{$0i^ zssaCI7f=JA00@_#{3kH|q43UZ#O36b|Nrm?*nLw|QJeoqDyhxJohTU8vqJQ%(<2Ym zBE{aD$sAbnn&9rkN^MzqK`C?)`sc6i{?+435<2-ux#@0w`>9AhI@4yf`!$zTM{i9p z;_mss1it15Ol{2d=e<_o7Cg7>^8fwl-ml#`U6q8XY{evk7^dfSbdcI%>zHZU7wF%S z7(>GxX0DHb>dX<7{oLHp7K<60;-El?l0;N$Z3WDsNc`oWT=MQNe7~Ti{&^!u0o>_} zYbz_Mce#bddW&qow?h7qrjY;Pum4{GW0(T+(PGRX0a?ZV_1|B@HW(7z^3pC)gKi_J zi9tK@Kg7A=`c2B~A#D%Wxh!20eXZY(wR*Jxo(rC(Vco7P{WnX+j_TwN+^%gyqjabhC7h#S=>MJTY{`Z<`pa!{lKI|(| zav;8)K(>|{5LqsYi90%ffV5tlt{-X9dGLKaeUX9VUG-reQT3(ck9HS8$b8{LTU>Of zZnmfjMeMZqx!4I8Jv)ocx0jRjm}7}1v$@AK0Iz>IPmE=Y4Sm zT23VqEVA{;00tqctxajiFweHjzaAr}Akm$mNOAN?r&!g>%)n06lI!W%!~5$KT>{u) zyE)9Drd1h7m}l?LU9U!u9Uj*CMpw(%ehZ831(A9>T;Y+vjB=HEcB z6wz}tLgc(3jW8BbJ}S5k|0H+eSSt8&i#LPXeK7Q zIXqC6>sZ0edeu6qe`2h^XQbqDtk_C|G@=Ktj&- zI+_`mUa9kuJ0VQHl*+ZOO1x=q{XEzFMWiHMX5VeuyTd9Cx|L2z;=CVLQc0|5rL4ZE zVvd?M5|tdaeyC+z`l~0T#IM$Fnvd%$tRk1@%#VKP2An=R+*{!sQ&(J{3FFWwzXq&lCuA#a{F|+zAp&lsQPcIi#=p!pN4$la&6^TYq95 z`PS?qCI8O_l13-^WuKi?o6iJ-vi|@-NGAB!@+Lrg6#*xioR`$5XkH7_x)oyMDnaHG zbLE9@Ztdj1hJ}liFXz#c8U+`g7atJ`xm=A!W{9RfF=1@@=48|!Wk1oKOkx|c#IrYF zh8!;QIxf2If!YxhEin_&?SWC_e5A&VH0hhqU14*?K-#yu67;#yReidRUfHnQj~x8$ zA8H&1q=pB1`AjiTQ>|qMDKC`O*Ih5^mf`nwyy!QW-t;e##C>CwKncHuKu>Zm@6~rc z8!9WJV>|q)TA{r~Kt{rUT>sa=uS=1R#GpW#a>|Hpj)TkLKJIXyytr2Qv|q%28CUvD1$`dl$HTey9q-Bes8eE+eI)2;OG^Mn z;`H1onwy#T%oj)y8NgcfWLGfne^U>!ZZR%vGX|P#bgP%90ns7==yeOBC-88UeEHdE zg>xmA*YMT~SgU{pkqS^|HwzZQTKC>!HGd22Q{)%v0Wa-H5hS|#GKKi+1~DH`?@@VO z_eC(O9{w|s0qdXC#gDtk_avJt#AFPeWHpV1v;wYX6S=aKbMPV5{PZO;xIp)Wyi8rh zH(cnhO;GmUNHe^Szs$W#IvvHOPuFI;7R?4Hx9JWU$%Gq>VSAmFIQlAmhv1{ePm+(f zuPX*OcB{H^2pM(--7zJd1%DI|J`47k8O@i1M+{y1n}gHl!SImL!Ib*%yPzFm%nHlZ z?@4!#wNFLwXte9A)i_-azAJ=ITN6)OjZx$FMy>ZzD*n*Pr8Uy1c%Nt5MBW;!=}OMi zgk@SfO`&USgUz;p8WxBC#`ma4ae%Z#_j{Pw2l@nrVBC*Hu*)4Zf$f zZ>nV&{a^j2oj6o=qN(ZNTs>%N=4*Uwnux_g$8srZV%e)YN89n*LU___SDZ3fNsYb z?%=&VW7Fyd{?qEbq@}g({=nn`9_V*cL6J;k!XqzibtjXeZFDYbS9!5Qc-b~J8wC)n?@*wrCdPS0+^U*s!0QjpM?KWmM_IJO3e^Wb? zh40?uQlQa8HCDb^J0h7^MA>~$eT zvCMAU6D3tI33nIkfGC0}IkV^i@Cl#>C0C9Q4E#7;KofMd^lq`#o0`k-ZsK#J%8!9Qd_J@q80$;~syJp3N%+hM2il>|6>1vjkjQFaPqQEGZqqs(2a!Xo zOsO-E5}GmL%12x3?y9V50*Q7{&yo+;q_2D?Y!@m~{hgJSGbp=qQ1S5+ag}{o=)*`j za>}XvXIGciKfXf5eCabSc}DF19IoK8%jBXNHCeeiwA*ezR7&_P2>n^H)w`B;V`TFA zfB;aG^p{qVfc9@KqFVRUzR+nG7j_xd%gbv#pN?X8!LpR1(p>FwZZD}PPRp`8t~rwm zaocHJU@t3G#Pz5(5Wg*>lcD{j9&@_hl z3A%BA+<6IC7O^j`fBS!$d&{^e+COgFKnzr*q(PT%=?0M{C8Q-+SVF0#8}<^VOB$qG zTDq2!?(SHSX6de7o}#k@7jeaV^i`oOR6VQlD}jXQWPxdr6zSZYjh<&KK?Aa87VRxb1eiV!JI z6}pTe9Q~+FXFolEEPUS~eiGW$`S~)oIE-`ZPpNSWwg1>6^uCGpynDy=?)7Rg_%jc4 z_H+NvZWEAdP%NlSGtCs7*h9G$O7DqO`Lb2W*|;kP;T8>;M_<=Z@3qE|R)R%Bq$HvAkHPE&R(07N11I7yat}LlG{Mbh)Z0F`OrXlT} zQcN16b6SjF3Gg`c=IA*E5RG?P<_?!G#dkRvK&x9?Nr6DDwg$*@H!Eqo8p&mhjm{eM zi2xo}M@7(deqnhda`~mG(by3P&J)&o&eHPo0 z@YFH73rmT%Qz3)hcplmzHOV8|*URVOP!41wdtF@=;G|3E@!EaTcjD-(ilbL9;gW=-_az9NKKuy|vfkOqVujDqIE%Ik`R-{`bSripD+) z5L0+~eph(a3s!0O4>*?5oO0Lmm~4Cdt+qGVBVg)l82KXmGrTD*X_-sCs{?MClv~dC zXt<)XchQDZ#KPUQ&CTMSg@!)ksPH3`4PECfvU}0)9B;!E^fjfETM55NKe2zVFc#{6 zVuk7GoE3EsP*wRA`t^zox`dMzn)vbNM*I22&s(rqU}6X4J7w-seR)h%``T0AeApLz zWDpmY`V~KHjw1r}Vi8wc+MR1_zt3~K@AIeV z(3f~GouoZS=8f2M)7RkDmRlQKehrJwPt`q*mqN?%Iiq)fs^B#nBpWp26$N7o8M`c=i8n6HKi}e(sKSX5OvA?g{8dva5nAAu!E93~|{ZV$4~xJL0c0hhE(ug0~03l%Cm@ z^*@h6S&B&BuY1rQ5j@g%oKqCyrm&^}GQU7upgmT0ChfL-FKJ{%G2s){qxe!E#KkLo z)ka)tNjckPfA_%^ex}}l)t}xh?2M7`_r~Wgg~zsdk< z6Ki#QyWh+x?UsD?mS+C6B(mYSeom5`<^q>oHPLpj4qiAi;B|_3Ep4%v-ban5Z$-Xh zpOrL-uCbr%zP4nF0r>u;Fm=5BhIZRi2^#wQAul9-MOOBvL}Zr?RUXL=zjx2%i;KrLe@iqWbp3JzFwDHSI=+fo~yLi8{i zNM7i7pW>u+)f|s^(cC`{d5nKNmgUMcQ%RSwYHeNe@<}G*xM#k+&P?g5>7QmiF%9BU z?oC>dLG9s^NkiD2{oH~?3q_FXHD)WTQIE=PE%X9bt&Z46zE#KVPrxJKdG#i#VyzKE znc{fO!#|SHekfN*aPb)TaCeQId1OLQ!2V+k42h0=FCJ6Z=jKmF^?X=>smjgcAb713 zaaoIQxlSY_dS#Q!<=W#H6qyl&AVE6hA17Fx5S3=$G2yyr8s0B6;+ z^L*Xj-I1&vBohd*86xS3>iG{mB*AQei-G5GVwh(tT2$XJx)q^J597Z z{fRy2wSXiDM9)BRU9z7>{y&LzS`Ldl~th%^ZAy0nVc8}sF<)~+i^_j`i zm`&9ALf+Oy3-`mzRZ{-z!rZ6C2X=wXN0rIV^`fH%n+xCBNXK2No)in7v@IRtc02|y z?rDRM5|%Y`b>WzUV(-X@4|D0}&N=~1{Er2hHHgbIG2G2S?^R`p|m0yYQ=!w}W`bCzB7#mQ6 z%*|==fTAh1k9Wc~=JapkXnGQECnA6C!*l;eznUJSuuQgzM5DEZ_0>Xv9M!FAQ*8!D z>fUX^fs1vA33ccVb1TvwuZiEyA+Q4lo^Uf4Z6@5Uz!r*Q`A!C?B!CtofBwCh6s6Aa z7dP`RQVHykzAD_sG`p7DuNK(|!ItS9Dg7Q0m|S=MS95Za#+?D042$&30gLCO4Y zg7O3QU#9pE>A$)L(|A5O$GIh78Iyc+s#rYZ1$GvR98CMWMp7u>VsqtwxCX>}bd6A33|rE{#=&w!G-GJe zGJuIN->iKjGz%4K;!v&gcLPvX<`qYsggvp^%*UY8pK3KUWd@y+9u6Jc!g~^bX0c8a zPG-X0|1=>pO&ul3(EjT8pWRzTyNz42{j~eRU%i8mxmMKnI-qwbNx(Pb7KobaEUajz z@<$!jW|nXE)z#Jg$x^O6j6dvlQu|G)a<`x~H#vB!Q?c*gEaj&58s0eH7s8kxYX4GSvmuKLFzs~biaZ_O1}|BLQt^bj zm8Df(U3sPcZS9-8;H{!}5x|P=vLZO!Nx0igtfOk{*n|F_4X@1>Bf#Kb&XKnx;5!w@8TzNrWy818ji{F(Q}S1+G@pD;ugdfNmwl#ECF^JY&0$_w#|;{9zambWilEWsu2=l_kJl-GXjUITIkDRCRgr28C@H$y`dm1rzgOpb z@7N*k-1k-3-ow*5F3#z~p2m7Ms`qK9y{^iN5A5@m=G+j~8}5`sVu*`T%ooyS0_Tyt zVeNUkh!^X_1W$mDuB_31B`|`PVIp;`vLRa{pRKEl?zg!a18RJ*kpD2i6XS_0$mIfo z<`2ZU>%?I*C$_ zzmWuUz?`L@>qDI60M2}Id4ivXpq@uBQM?1aTB$?5oSyX2mFMCEVv;wHvYxG5%9nO8c4-2D%JolmyQ{ zq{JG~jS=ZF%10AK3S$Z9fuYA!rRGoeaaPEb_#{Er=a%1cz6VE-t+e&BH_A*RpuHN@j2#Fi(Z~^ z_~4fvCpgUXRdx6rI}uv+o9xbC9d;xPv#?uFWoyko;qN6CeKD%vS3V|Xri{5b=5I9p zs9Pwr*SOzy-LC=^fzry#u&x(mZc;3eSDq~23S#RT%l^V%jhlS1U=vY7ukWnmK%ED+|&`4~nq!(zok?mj%-vQt?^sEO-78GuSa# z(N*!d=XJ90E%D1eb0lor={ zgS^*5WWc!C@WElEhs7~)5ppOSS38iBPD<8E#-#TZ%;qx1yR{zKT+PC-ugpz+mZ^l? z4;?+xK&hM1RR(*zqa9)S<^j50u)X%pN8y$j8;qVjped zN?F-96nvC+rp%hoW~fmaF6ffp7K&`OlprE-gTW^Pl z%dD7avfhK5QQ2$BkY`1CfM?Y$bJq3s=%{1suY?S?y_JOLSgywUtBixdSwIunjqTgUu+vHD9(iuZ^wC&2B zif@Iqt<+t8q(f8Cp&WJ2`>SR64~uAsIlfbxDHGM?GH^_Wdb;fMG;5}Mj5t~O^hbQIE+rnFl+Ho{+vIk0 zJ8n03px1@QEB#7cqcq-JoTmBD=}hw@9)gWWQ33wy&^z8+E^{%7t&Q(T`_Nyq&n7Y9 z`V5o#fTG|L7_9JYdlbX~dfCdsqrNabE4sUkdK~J+m97KbmyN$zotwRJf`zQWaM zI_?A!iN9>Q$^)UU(QlO~!MgpfSUzL&0IN>7!xq;J->@)e;p*B}i}Az~FQYa{59YXg z-i{{VHb3jdMSq-dM4w7pp)?bWVIwN?6$o z{mK26s{yqmFqo?%aExc8kY8&+$~(gkho)$RZ|Af1_Su8_r6s>9m9Zh%uBWH_XKexv_1GS^k*lpNYb;c>IoQ)5g2j;b37`QCHiAOBT1}F-xgL5XS zcl@oc;@L^Ya@WO;63GWHR$jYB-pYL7UuTO^ERpo2jDEr^&m67uf~$~TgPy9ZfCiNQ zeVKsaNk)e&w(pPkIu-Xm%i2&13n{3$AB9P>74)G_3a4zgh7*iZK6_GPZ5%BU5IM2$ zIDyq&Kx*P9?>~rh7$QmM0rfacf?090HaAra(BA0;!PnQ$JCv76fEuMH@^2~$`3H+r z8avBhO5T++@HB_{F8tnn1D*~(@}R<}*n~++IX>rWeQZiCa?)H!-{$8kH2L6(jOM2t zBXIYim;q>ldMf%IBOcyZvRHM_N7Yn!&!o1lE;EPbW&-L9h5Dsfac3)Krrb|43c3Y; zu2M*s>s~zQo2;uw=bgfzKi`|A%p2U9VAv7*Ko+bL>tq8PTK09@BrQFG$&&NJj?gK> z6xydf&iTqH)*meJR8{UJYK53jLAs(Q z-cK-JI3+xlnrA2Y82N9=#Blz9ka_;&9e;1o0-pA zCl%#XU`5vRr)B$`we}1=|3p@AYA&q%xfN4&ZLz%_@|@giTO-(iYilgnMf;PKpLDZb zNcPJax#?*krQY^&O~O$pr#l1`Mv#m0uB;$~ELAS9q{T{d0IKslH2oEOtStF1l46$J>Nrn}Zn7~o<=Do<)A|wv z0&JO33fqM>$bUP0b5!8p9gZiV-R*hV2=UT>8UBKc+~-FWo_*ZHZvKmQ?;<3zgRN*I zlh;XOw#N4$&~Qzje1IN8ZjYG_NU+^0A-gsA}_bRI*@K!A&N#f(g_c zx~nWj_%x+`L100D52ScqnF%t0e4tik+AUZWK^gCn^_I}JAI5rl`J8Z{!Qf}FxcGvj zVYAV8Qyj;{q*?Uwv0Cb5vU>5gn2};-J~IBMihF|icq5~q1UMNOE}trD_a-Kii!uI4 z+#;3x{#_?SU0>tVa{GZKb@61v%ny=WuAD&K(Pv8FQ3R+&85~TLKYzLe6l2Jv1FaHz zaQetkPwND5>oN$Fjw#2cm22=}Mk3_ZFdm+ZkQ5(qf1D#a5f7Sdz-r)fbSPS3H4YUy z-%i(dZ)elvS;OQwno(UH?F!*M4bIFhiWX24`oTV)`i>>xIu|E-DH(2Qbe-Oq3_-X- z441UkSOtfG`-@gW5YPuy3tV*u;$-4Eh27&Lzw}D5F`IyCCw&xl=rq39Uio@$?>^YA5S+Y7oTRK zcr9w7CR7{aQKDQG?X!oNiMI0+ z96yZ0&Fwb}m74es-HH|~AM3uv9SjP+pQA1>%~b|Zw7ak5R%62#EG|Nf z=jpVknIK;H!m~Q_{?-R!4FucxTAJ}2x?={DjjS2Fx}LMv)ci0zM^`4T>U?#RT=8B3 zoyoD4gjasmLtoUtM-@IKQmktVF;gAxF>{lity#~&kgkN*XLyeRVEwtRoaj~x3z8~c z)p`Q{?ikRf3(7tSrQ~EB9cigLeeEpmJ@DfkSHO&rFpGW%8Jn>PE*+diA(&uu zm}S!&0YWG_I4s=#?c=R z`$rEe#2eNz(GRhQ8DN)8j;%E4jOU(vJB9I56_3_#iLVs#Cwri()5hEsZikZV|BhkD z5%^xXK{U?szL{fd_C)I;gO^u}GhE5*(?zcjEUZ&WSu`hns_qQ?BI*jUJ`}Q+6+=F3 z<6*9x*g1szFw}EltoV0n5MA`!q3rV%2J=!?<i9s!EnjF)S^b zO-Yig&ESk$L-qDk%9zgcdMu+Mt|9X5Do0NbD<^Es#i;!8XynW>K2 z#1ELWtT(xd^)l$6L}*dZ)~%JkhuELx#KP6ZIjt6&el)Lfg?a6F)6ZGGO+JB@V{;gs zru6-;{zP!UrYnEIQvVuVYPCiO8uFY(+=p$tmqd=v!+XKkoW=@~DPrH$KG2>o3=J8u z?xN<*zKaG*9+B=3ibi^Fihm?05u|^m+O1-YNlG%I1#MidIzt4-t;Q2=7w=*}A#LI{ zX%iIYr!InzCvaZ-@yBS+d$sfprQP|u)Zcrn3Epux+%7{#B#7L4%R*+o$Ja#V8 zz2gXnjHk0WkB9p$l=ioY`@HrJdR9Nf?b{wbGP-I3Mdk2&9bD{p`oKbY8~3w0*m8l!L23f0#DeO~>5hY9 zhm9X61b!VeKVopw^cu)H&mNCmvdp7P_U$H!skb`&YntDy^Z+8{v0qt3&mz<{*hu}S zrUPQ7t@!jm4wB?K&`$e5?S4D-^{rlhv;#J~El4_@kulnPcD7r(utdHmUeDpD)%i)| zcogE|lZ@Cny(vH1XC>&@Tdn%NS(#j|BS~7UYjVidZqnyZNYU%2@9D{t_)|@5VsN(@ z{b7sKhN`Ydhti!!RN5FNMEPkMe~cx|kCOIaX767n>s$AB`;UateZTy?T4Fjpny{5BU2>z|Y?Db5FYyaVzdO_{2IcP`*E5LMLWu=c zv95GXX0;ZnS$mC{+_%ML)1TNy=Tg&R8lfPpfvLAKV))GRV_k46p|B_ba%xe~Kj88S zQ5ZTO33kj*=0CcVO7NiGD8?~3GbUdX}WZ(8?Y6QS`6OgB_rk7odF02JUKs3ryV|kxhNn}0O`VP0+YBk5uPdp`|B20H*2j`D z;owXZB1_ky)d2S}agM#==33vVJab+GFK)ed{!1ory=oDXh({HrF;MIMA8Z~KFgf@S{aHpu_(NM-ovQ`BhKg)3cYcA;hSE&5z|2jiPMi@}(Qn%vi z&GP^BxA^;)IC*B$NYu#5N*n!w#>tyTVyoa*K?`L~Yv*@-_n`1EVhxpi;9?kr^=3@j zt#zG5MoD&Lk?Kn4GD1|lCP|{^B^?r?QlgP%V7B|u&fgSv7l}%>v^`v^Z7noZkW0|k zdXePuQ1ehp)@iUbw2UtMy@#aZF<#a-XIAOb@gJ)05Dkhih(tsM1yZEa>~Zq{NHMq8UsRM zKdB1FbWDV`zW$HB19RuQw@PvUuiHqI{I3$(Mlgf+(-Z6rTD)+^2an%1)5R2%KHbDyQl^Ve)Uq*mc%yK)1Y@wL#s^@<+FvLomz0 zfrj=?Yjp_xtkkOfYQ8R-Qgm%QHq3;%LGKIaDX{sIMbWf$N2l}a@e#vSau8N%qNuZ5 zreE~a^=o}xJWh?>TxIt2-xC`7DPh(pZzH5SWS$G{*753Avc~VU`}$NLRqlW(FAPi@{YQ$}?^_4rwyORlpVzC`n}X>iIi$RD8Lf0i zeLA>h6f}8e${em%kbdx;hUW59?C%xu)7tak=;GI859Xomr{Nk~^IkvN=VTG zyZwG}pHd7bKw9|Bj~)<1r#I(n^f@s(+ipSyKE9o9=Wegemtfi46c0 zSx7T}_kq%-7D3n*4PmkT#d!wtVe2l0a+`Re{m1lHY>tI8(3E~HJi6}Cu6ZA%WzGYp zC2orWQr#qnwm?RZgM*Rd)X7e@vo}Yxu=(9P19k!_Y6gbS+UFCiJAg9zHJJ7jcUVkx zSJZ7oDt^%wPLyei>jWB&WL10d&0kjSy&XtqAfWSoJVdSWTPIJIEEFiF72BVaG{C+F zrj3r#ShpyRV5gmWW?xSI?8k?(u^cX5?1ynDzN_KJ`=Ljet1xau$Sbz3#G*SlQ?L&{qXLYiW)X zTBLiv=-ly^7Ss$ofzQ`5lw+bul@6d`*P0IJ{NJXYkW;UG5J02*eTx)1KkfuN?>xW{ z=#0CVqk$1BdYSLE-Yz<*T_(bgptZ>&jTB6^aPg;a2*gY8)7BiS1}3gfq$C?x?MB8JKOP>b zy%t+y6-Xacv*u5}+Dk@-x4M)av(b$+LQv^>y5gIuss`v9u8;0hCkcWkhg{fAdSY3^ zWE!pxmJwmAi1PhA4B1cPMcj8nIPYF1SvqLYN!2jVKtiJlVDv7HY_R!WeOB;UuvqpYGa_ETB=|<8c>^Jq`cQtyimG+ve+m#yzs!|&9RTW*#px~vdobEGCwsh8?@H2>kk<{A&WFOQH?6<&n94=h@nyPq1cxNq46u}z-iOSo zwa0sodcqnx+hV(wc4wmd&>1pw)dH<6(f4C^ix&!czhX7N*N+PCkN)B=y#7duHmMK< zJXOS-OM{KS&0ajkd3K3J!oP;*&v>tr2@vZKYH?GQU|7cF^;IIy&nFEL*p zfhjywzq1lwnNQ(#ny;*EGnD*R(4$&)XJL_=tMobz_8m8^8j-A7;pTxgAO{>na+8ky ze)<&FD8Fm_22e{)Ab;}P2FHm(u_ZJ^otc-0 zhwZ(rPxpeRc#nh}GofJ=M$+NNvvL%*Gp^7khkj9ZG2eN4PnJbl=H*WF+C8;d2D zsrcqOjEYhWB(&F4UVc%etch4GG!s)AdX^iyu89yc+zYn-jDmOaXl7YsIHP6P`A>uV z$wm5hBLq7_NR9I4W@Fwtaf4vT4+x`i=Bt~Yk z=#7ng;-()11h?GH+YTq@gt+bc{2uDyUnnJU|BBb3&=I>XL>@i{y15y#k^p0%w;R_4 ztC!oc_T3W5Fa)z&5~mU=N1V@LrWsDdYCVTJ?!(zX z%I2(+fmYBZTYchKr>I!ZgT1B$bV?&y+ivML3Bm=PUp7H-L(qv$sJQ3#_=X0))}CApn@v9K1#dQsLX+kM*^e$;%7Q7o>nQOa5BZElg0h-Z|0 zLVN4h;|V#igu3IXLjFy!nVwXy>B>zOQIbjkG?K(BY?At}Mjs|FeJl}w?CRz=Hv$H$ zs!Wfj-ks68c8zCRvp(z41C`qJmViF2_|$3QeE3wetXCcfko!L8 z_excC{8fo&n-%J`z{UK$XwBj`X~siu--BL!Zk4~!&kssRL^;fTjazsJ;e4rfK=N#r zN#3Lmj{L5L#LiH%*vCbyE{3=2-34km3fKzFkqFbi;*mA}{&VjcX|YiJH)f%_I=pap zwu*O~3ze`h4S>x85+!Up55~-L2oY`g%cQQLd4H4`d=6SKQ>-QMJwa#Oue~ zsj9{gzHm>s72;6pfgvAkMfU^I1ZpYn5_-Pv~#4Bcfa35%rRIBp# zbc09l0UejJ@96Or#Dx#rTeR6jRbu3On5TnFLfRR1c~;McNlcisItQ7wB}qBGs`I0c zXHI6@R~WI8`#oXL%$OaFkTbEpA?8VUpro?MrVEiQ((qKLp9HeZ989P|#`i@- z>tyWrcq$yh3WoXk_k@Lcq25dDYnma}h)RP(O|D^^9x{NCQ=|8W@3+sSi2vNo=#yK^ zI}Yr;Oli!ZhJtAs$Cy9wZyp@@vO^5CRsJCI9L(7jx5lZM4fN`4CYcmIf*7SlBCe0K z%io?tD)qwFMFgxZtNq0If%<4&CeID5A67E!8X=0x6(-&(JGy4LZEo0|6wQ%t3p>8< ztzN8a)J;jRxXEVzldrY}7##EgsYMQ!$xIs6mz7ptqEBY7Egu5f0T(m4`y^PU@4Nh8p_8^`PV>yLo)b!{bh3c{#n&-;pDsa0ND+_i2@Vvq_W8O@PV|D z`V6)uL}m7Pgb3|f2stHl6sF|(%%pJ?LMx}p4U;mdXpPA-qxB1b;&X?!?g$QcQ% z-;UuVSmlV0o;_~<{GAWQnRu~PA}CBRx_?pc+?d%He>mTu1JG}EEwvs&wds6v^AGYB zR)?J3-lxk9&y{u)8qcFU8kIXOL@Wa7ZelYF=JuTbbvGO`&YYaMAI`mlhsRp>PpXce zQI3$9xPx%aaw{#~BO}fR$TTZ=gQFCBUz#eEC$WE;Y4{C*ZK?RqfFL`dnua z80wUoi;H_JvOEucsF|8b&A1ys@5$z(AGcDX#+iVhyGDKD^-v!UX3L};NYbJH`bVzWxLZGr-Vegfy33!t@^X@4^H zX$spQDIzY9Snm$nbv*4tluF3v)w#NLd~<}aO^CFlp3UB|1y}Pc0uvAoeZF{U_qVe% zFJcafO|FpxI#UAMxd+al{X6MDp4l`8LA+Mii5H4KfPEuIMUfo(CH3m~z=()C{(`|9 zvd!v<3MB-{_G$T18kb}ICs%wm;DWdfip!(KTbj5E3qL+MBFy^bIfJ`APC^c0bX*1l z2tw}(R{K?A5;`&Irc<-(gt12yGRx=rxsZ$Ty$MIg^k|e!a=+jJhtjiOR~Wo1SmI}b z@DlTtxjON_S8P@BnE9wL90?er0Z-=%9 z3=qAqvIrFnC80LdjVX3zIE5&OCi4rdb`^`&V;m$3hsVSRop#eNk>csF3aXKhI@S(B z@J~{MCBZ^rpYMK&LO7tZ_16UV?Gv;LsIN~H)eO)ALQ4*AhDqxSn*>{07u(Q*D;?H~ z*>Ao}YLO9fg<(%aynfd!x0@x#jw+p_lFV5C#Ui=S{ z1N7ZYf9~OcIC_-ek{lA$v=2)waVL><>}8tno^jg?&%l zO;_?Gv%a1ZHy*ni6!MzB!y~j_JQcg1X1h(A(hol{6Hx_p2t}{(*RV5GIOJ}^=Y&`_ zFFL^`EM*5}S#&{qdZf_a(j+J4uu?_c=Fy?qH{qSRqCJYEv2360cjt;^Ai5RG%AW!k z@bMQ7+zuRaL;d{)Wx_%n2s5wB%nA>UZ6&);=6ndUTgA>7^CaHFTr)y!#jOYsFfZ7- z_+?jScV^>BiljXDt$$cTo8m$g##;!q65QGgh;JnYyS9m9ntA+iT+MK9g6A(iMMevl z7uUo`3JKo0_JtE2u2BY3KHqX`7<@$8jo2JrO=&!%5&r~vv+1K0_nRE};j#Xc`gj7% zAhF!heeg%~XNkLLe_!a7GT)g6J={nWkvrdCZzRA-;OSN{y$JSexv1; zR|J2l&>_d6YPMS$=8VaF7x%w_`Hhx0OZu;tH($E$|JCxQO%s{Si2om2UcwtKuV@*U z!?J0^;~EjYjE$!IHz4s=tyHyiZePKRb2 U>G!CKo3AP-r35Z|^TGT70Rtq;1^@s6 literal 0 HcmV?d00001 diff --git a/imgs_readme/django_admin_15.png b/imgs_readme/django_admin_15.png new file mode 100644 index 0000000000000000000000000000000000000000..2e82f63af1201966cf2ffd8096b490de7b0e7ace GIT binary patch literal 53332 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