From c8a1af5833c4ba425143e5186d3419734c53a16f Mon Sep 17 00:00:00 2001 From: Nicolas Demangeat Date: Thu, 19 Sep 2024 11:25:28 +0200 Subject: [PATCH 01/20] fix: :bug: remove required on product picture + change search filed on product in bo --- app/Http/Controllers/Bo/ProductController.php | 10 +----- .../Bo/Products/StoreProductRequest.php | 2 +- ..._required_on_picture_in_products_table.php | 36 +++++++++++++++++++ .../views/bo/pages/products/form.blade.php | 3 -- .../breeding/breedings-links-cards.blade.php | 8 ----- 5 files changed, 38 insertions(+), 21 deletions(-) create mode 100644 database/migrations/2024_09_19_111335_remove_required_on_picture_in_products_table.php diff --git a/app/Http/Controllers/Bo/ProductController.php b/app/Http/Controllers/Bo/ProductController.php index f17a2181..e6d0a0c4 100644 --- a/app/Http/Controllers/Bo/ProductController.php +++ b/app/Http/Controllers/Bo/ProductController.php @@ -54,18 +54,10 @@ class ProductController extends Controller $search, null, 'label', - 'description', - 'details', - 'preparation', - 'ingredients', ); } $searchFields = \implode(', ', [ - trans('validation.custom.label'), - trans('validation.attributes.description'), - trans('validation.custom.details'), - trans('validation.custom.preparation'), - str(trans('validation.custom.ingredient'))->plural()->value(), + trans('validation.custom.label') ]); /** Sort columns with a query */ diff --git a/app/Http/Requests/Bo/Products/StoreProductRequest.php b/app/Http/Requests/Bo/Products/StoreProductRequest.php index 2968fe78..ce2cb8c2 100644 --- a/app/Http/Requests/Bo/Products/StoreProductRequest.php +++ b/app/Http/Requests/Bo/Products/StoreProductRequest.php @@ -177,7 +177,7 @@ class StoreProductRequest extends FormRequest ]; return \array_merge( $rules, - $this->pictureRules('picture', 300, 200, 300, 200), + $this->pictureRules('picture', 300, 200, 300, 200, true), $this->pictureRules('banner', 1440, 420, 1440, 420, true), $this->pictureRules('packaging', 315, 450, 315, 450), ); diff --git a/database/migrations/2024_09_19_111335_remove_required_on_picture_in_products_table.php b/database/migrations/2024_09_19_111335_remove_required_on_picture_in_products_table.php new file mode 100644 index 00000000..ceee6070 --- /dev/null +++ b/database/migrations/2024_09_19_111335_remove_required_on_picture_in_products_table.php @@ -0,0 +1,36 @@ +string('picture')->nullable()->change(); + $table->string('picture_alt')->nullable()->change(); + $table->string('picture_title')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::table('products', function (Blueprint $table) { + $table->string('picture')->nullable(false)->change(); + $table->string('picture_alt')->nullable(false)->change(); + $table->string('picture_title')->nullable(false)->change(); + }); + } +}; diff --git a/resources/views/bo/pages/products/form.blade.php b/resources/views/bo/pages/products/form.blade.php index 15110710..4a0b5135 100644 --- a/resources/views/bo/pages/products/form.blade.php +++ b/resources/views/bo/pages/products/form.blade.php @@ -246,7 +246,6 @@ ]), 'hasWordCounter' => true, 'name' => 'picture_alt', - 'required' => true, 'model' => $productModel ?? null, 'helper' => __('crud.minicrud.picture_alt_helper'), 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ @@ -271,7 +270,6 @@ ]), 'hasWordCounter' => true, 'name' => 'picture_title', - 'required' => true, 'model' => $productModel ?? null, 'helper' => __('crud.minicrud.picture_title_helper'), 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ @@ -291,7 +289,6 @@ 'width' => 300, 'height' => 200, 'model' => $productModel ?? null, - 'required' => true, 'preview' => true, ]) diff --git a/resources/views/components/fo/breeding/breedings-links-cards.blade.php b/resources/views/components/fo/breeding/breedings-links-cards.blade.php index d5404938..a6dcf4cb 100644 --- a/resources/views/components/fo/breeding/breedings-links-cards.blade.php +++ b/resources/views/components/fo/breeding/breedings-links-cards.blade.php @@ -5,8 +5,6 @@ $commitmentItem1->picture = 'resources/assets/images/commitments/commitment-1/preview-banner.jpg'; $commitmentItem1->picture_alt = __('Homme portant un bébé dinde'); $commitmentItem1->picture_title = __('Image de prévisualisation de la page Le métier d\'éleveur de volailles'); - // TODO - // Put the good url $commitmentItem1->link = route('fo.breeding.show', $breedingPages->where('type', \App\Enums\StaticPageType::breedingJob)->first()); // Item 2 $commitmentItem2 = new stdClass(); @@ -14,8 +12,6 @@ $commitmentItem2->picture = 'resources/assets/images/commitments/commitment-2/preview-banner.jpg'; $commitmentItem2->picture_alt = __('Bébé dindes picorant'); $commitmentItem2->picture_title = __('Image de prévisualisation de la bannière de la page alimentation des volailles'); - // TODO - // Put the good url $commitmentItem2->link = route('fo.breeding.show', $breedingPages->where('type', \App\Enums\StaticPageType::breedingFood)->first()); // Item 3 $commitmentItem3 = new stdClass(); @@ -23,8 +19,6 @@ $commitmentItem3->picture = 'resources/assets/images/commitments/commitment-3/preview-banner.jpg'; $commitmentItem3->picture_alt = __('Éleveur portant une poule blanche'); $commitmentItem3->picture_title = __('Image de prévisualisation de la bannière de la page santé des volailles'); - // TODO - // Put the good url $commitmentItem3->link = route('fo.breeding.show', $breedingPages->where('type', \App\Enums\StaticPageType::breedingHealth)->first()); // Item 4 @@ -33,8 +27,6 @@ $commitmentItem4->picture = 'resources/assets/images/commitments/commitment-4/preview-banner.jpg'; $commitmentItem4->picture_alt = __('Groupe de poules couchées dans leur poulailler'); $commitmentItem4->picture_title = __('Image de prévisualisation de la bannière de la page élevage des volailles.'); - // TODO - // Put the good url $commitmentItem4->link = route('fo.breeding.show', $breedingPages->where('type', \App\Enums\StaticPageType::breedingPoultry)->first()); // All From 442e87ae79109845fd579a13998b538d7742dfdf Mon Sep 17 00:00:00 2001 From: Nicolas Demangeat Date: Thu, 19 Sep 2024 12:05:45 +0200 Subject: [PATCH 02/20] fix: :bug: change typo for labels and product type in sidemenu bo --- resources/lang/en/models.php | 4 ++-- resources/lang/fr/models.php | 4 ++-- resources/views/bo/layouts/sidemenu.blade.php | 2 +- resources/views/bo/pages/approaches/form.blade.php | 10 +++++----- routes/breadcrumbs-bo.php | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/lang/en/models.php b/resources/lang/en/models.php index 92e3abd1..e50c3762 100644 --- a/resources/lang/en/models.php +++ b/resources/lang/en/models.php @@ -17,13 +17,13 @@ return [ 'approach' => 'approach|approaches', 'meat' => 'meat', 'submeat' => 'submeat', - 'label' => 'label', + 'label' => 'Certification badge', 'demarche' => 'demarche', 'consumption_moment' => 'consumption moment', 'video' => 'video', 'product' => 'product', 'recipe' => 'recipe', - 'product_type' => 'product type|product types', + 'product_type' => 'Promotional message|Promotional messages', 'claim' => 'claim', 'historical_milestone' => 'historical milestone|historical milestones', 'offer' => 'offer', diff --git a/resources/lang/fr/models.php b/resources/lang/fr/models.php index a20db1cc..deec2180 100644 --- a/resources/lang/fr/models.php +++ b/resources/lang/fr/models.php @@ -17,13 +17,13 @@ return [ 'approach' => 'approche|approches', 'meat' => 'viande', 'submeat' => 'sous-viande', - 'label' => 'label', + 'label' => 'Badge de certification', 'demarche' => 'démarche', 'consumption_moment' => 'moment de consommation|moments de consommation', 'video' => 'vidéo', 'product' => 'produit', 'recipe' => 'recette', - 'product_type' => 'type de produit|types de produit', + 'product_type' => 'Message promotionnel|Messages promotionnel', 'claim' => 'allégations', 'historical_milestone' => 'jalon historique|jalons historique', 'offer' => 'offre', diff --git a/resources/views/bo/layouts/sidemenu.blade.php b/resources/views/bo/layouts/sidemenu.blade.php index b5fdbb2b..d744488c 100644 --- a/resources/views/bo/layouts/sidemenu.blade.php +++ b/resources/views/bo/layouts/sidemenu.blade.php @@ -779,7 +779,7 @@ $approachType === \App\Enums\Approaches\ApproachTypeEnum::label->value(), ])> - {{ str(__('labels'))->ucFirst() }} + {{ str(__('Badge de certification'))->ucFirst() }} diff --git a/resources/views/bo/pages/approaches/form.blade.php b/resources/views/bo/pages/approaches/form.blade.php index 80c190c3..91b604f1 100644 --- a/resources/views/bo/pages/approaches/form.blade.php +++ b/resources/views/bo/pages/approaches/form.blade.php @@ -1,6 +1,6 @@ @php $inter = $condition ? __('validation.custom.of_the.female') : __('validation.custom.of_the.male'); - $model = $condition ? __('validation.custom.demarche') : __('validation.custom.label'); + $model = $condition ? __('models.classes.demarche') : __('models.classes.label'); @endphp
{{-- NAME --}} @@ -82,7 +82,7 @@ 'id' => 'approachPictureAlt', 'label' => __(':field1 :inter1:field2 :inter2:model', [ 'field1' => str(__('validation.custom.attribute_alt'))->ucfirst(), - 'inter1' => __('validation.custom.of_the.male'), + 'inter1' => __('validation.custom.of_the.vowel'), 'field2' => __('validation.attributes.image'), 'inter2' => $inter, 'model' => $model, @@ -94,7 +94,7 @@ 'helper' => __('crud.minicrud.picture_alt_helper'), 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ 'field1' => str(__('validation.custom.attribute_alt'))->ucfirst(), - 'inter1' => __('validation.custom.of_the.male'), + 'inter1' => __('validation.custom.of_the.vowel'), 'field2' => __('validation.attributes.image'), 'inter2' => $inter, 'model' => $model, @@ -107,7 +107,7 @@ 'id' => 'approachPictureTitle', 'label' => __(':field1 :inter1:field2 :inter2:model', [ 'field1' => str(__('validation.custom.attribute_title'))->ucfirst(), - 'inter1' => __('validation.custom.of_the.male'), + 'inter1' => __('validation.custom.of_the.vowel'), 'field2' => __('validation.attributes.image'), 'inter2' => $inter, 'model' => $model, @@ -119,7 +119,7 @@ 'helper' => __('crud.minicrud.picture_title_helper'), 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ 'field1' => str(__('validation.custom.attribute_title'))->ucfirst(), - 'inter1' => __('validation.custom.of_the.male'), + 'inter1' => __('validation.custom.of_the.vowel'), 'field2' => __('validation.attributes.image'), 'inter2' => $inter, 'model' => $model, diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php index 1cee4c15..e5894943 100644 --- a/routes/breadcrumbs-bo.php +++ b/routes/breadcrumbs-bo.php @@ -406,8 +406,8 @@ Breadcrumbs::for('bo.claims.duplicate', function (Generator $trail) { Breadcrumbs::for('bo.approaches.index', function (Generator $trail, int $approach_type) { $trail->push( Str::of($approach_type === ApproachTypeEnum::label->value() - ? trans('validation.custom.label') - : trans('validation.custom.demarche'))->plural()->ucFirst(), + ? trans('models.classes.label') + : trans('models.classes.demarche'))->plural()->ucFirst(), route('bo.approaches.index', ['approach_type' => $approach_type]) ); }); From b675e8ee29a834b8c894fbbda50ba239d9b262c7 Mon Sep 17 00:00:00 2001 From: Nicolas Demangeat Date: Thu, 19 Sep 2024 15:45:18 +0200 Subject: [PATCH 03/20] wip: product --- resources/views/bo/pages/products/form.blade.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/bo/pages/products/form.blade.php b/resources/views/bo/pages/products/form.blade.php index 4a0b5135..9711a24f 100644 --- a/resources/views/bo/pages/products/form.blade.php +++ b/resources/views/bo/pages/products/form.blade.php @@ -699,14 +699,14 @@ 'routeName' => 'bo.product-types.json-paginate', 'fieldName' => 'label', 'multiple' => true, - 'limits' => [0, 4], + 'limits' => [0, 1], 'required' => true, 'disabled' => false, 'placeholder' => __('Rechercher un :model', [ 'model' => trans_choice('models.classes.product_type', 1), ]), 'helper' => __( - 'Sélectionner un ou plusieurs :model qui sera associé parmis la liste (minimum 0 et maximum 4).', + 'Sélectionner un ou plusieurs :model qui sera associé parmis la liste (minimum 0 et maximum 1).', ['model' => trans_choice('models.classes.product_type', \INF)]), ])
@@ -724,14 +724,14 @@ 'routeName' => 'bo.claims.json-paginate', 'fieldName' => 'label', 'multiple' => true, - 'limits' => [0, 4], + 'limits' => [0, 1], 'required' => true, 'disabled' => false, 'placeholder' => __('Rechercher un :model', [ 'model' => __('models.classes.claim'), ]), 'helper' => __( - 'Sélectionner une ou plusieurs :model qui sera associée parmis la liste (minimum 0 et maximum 4).', + 'Sélectionner une ou plusieurs :model qui sera associée parmis la liste (minimum 0 et maximum 1).', ['model' => __('models.classes.claim')]), ]) From 4614b349d049a68ec71d2d9ba29b3b1ae1c165de Mon Sep 17 00:00:00 2001 From: Karl Muller Date: Fri, 20 Sep 2024 17:11:41 +0200 Subject: [PATCH 04/20] fix: :lipstick: correct some issue on commitment 4 --- resources/sass/fo/pages/commitments.scss | 24 ++++++++- .../views/fo/pages/commitments/life.blade.php | 35 +++++++------ .../banner-text-complex-items.blade.php | 11 ++-- .../paragraph-with-visual.blade.php | 51 ++++++++++--------- 4 files changed, 76 insertions(+), 45 deletions(-) diff --git a/resources/sass/fo/pages/commitments.scss b/resources/sass/fo/pages/commitments.scss index 8b713172..0c1fbc81 100644 --- a/resources/sass/fo/pages/commitments.scss +++ b/resources/sass/fo/pages/commitments.scss @@ -413,14 +413,36 @@ } #commitments-banner-text-complex-items { + .banner-title { + color: #000; + + @include media-breakpoint-up(md) { + position: absolute; + color: #fff !important; + } + } + .text-custom-placement { z-index: 1; - transform: translateY(5rem); + + @include media-breakpoint-up(md) { + transform: translateY(5rem); + } } ~#commitments-complex-flex-items .container { padding-top: 6rem !important; } + + .responsive-position { + position: relative; + + + + @include media-breakpoint-up(md) { + position: absolute; + } + } } #commitments-paragraph-with-visual, diff --git a/resources/views/fo/pages/commitments/life.blade.php b/resources/views/fo/pages/commitments/life.blade.php index a9e06ccc..84eead52 100644 --- a/resources/views/fo/pages/commitments/life.blade.php +++ b/resources/views/fo/pages/commitments/life.blade.php @@ -125,22 +125,28 @@ ]) {{-- PARAGRAPH WITH PICTURE --}} @php - $newsCategory = new stdClass(); - $newsCategory->title = __('Actu'); - - $newsModel = new stdClass(); - $newsModel->title = __('découvrez notre charte nutritionnelle pour alliers plaisir et santé'); - $newsModel->slug = str($newsModel->title)->slug(); - $newsModel->thumbnail = Vite::asset('resources/assets/images/commitments/pictograms/picto-medications.svg'); - $newsModel->thumbnail_alt = __('Pictogramme de plusieurs médicaments.'); - $newsModel->thumbnail_title = __('Pictogramme d’une diminution de l’utilisation des antibiotiques.'); - $newsModel->date = now()->subDays(rand(0, 31)); - $newsModel->link = 'FIXME: route to the news'; - $newsModel->newsCategory = $newsCategory; - $newsModel->updated_at = now(); + $videoID = '63RGcX7_MCM'; @endphp + @include('fo.partials.commitments.paragraph-with-visual', [ 'title' => __('2021, nos collaborateurs ont du cœur'), + 'isVideoModal' => true, 'text' => nl2br( __( 'Depuis 2021, Le Gaulois soutient l’:strongStartassociation Mécénat Chirurgie Cardiaque:strongEnd pour sauver des enfants en finançant des opérations d’enfants atteint de malformation cardiaque. :strongStartCourse à pied, vélo, marche, randonnée,:strongEnd les kilomètres parcourus sont compilés par une application sportive tout au long de l’année pour récolter un maximum de fonds pour l’association.', @@ -176,13 +182,12 @@ 'strongEnd' => '', ])), 'background_color' => 'light', - 'video_id' => '63RGcX7_MCM', + 'video_id' => $videoID, 'picto' => Vite::asset('resources/assets/images/commitments/common/logo-mecenat.jpg'), 'picto_alt' => __( 'Logo de Mécénat Chirurgie Cardiaque, un soutien aux initiatives culturelles et sociales pour promouvoir la solidarité et l\'engagement'), 'picto_title' => __('Logo de Mécénat Chirurgie Cardiaque, enfant du monde'), 'reversedMobile' => true, - 'newsModel' => $newsModel, ]) {{-- OTHER COMMITMENTS --}} @include('fo.partials.commitments.other-commitments', [ diff --git a/resources/views/fo/partials/commitments/banner-text-complex-items.blade.php b/resources/views/fo/partials/commitments/banner-text-complex-items.blade.php index a26c768c..ebc4ad09 100644 --- a/resources/views/fo/partials/commitments/banner-text-complex-items.blade.php +++ b/resources/views/fo/partials/commitments/banner-text-complex-items.blade.php @@ -1,12 +1,11 @@ -
-
- {{ $picture_alt }} +
+
+ {{ $picture_alt }}
-
+
-

{{ $title }}

+
diff --git a/resources/views/fo/partials/commitments/paragraph-with-visual.blade.php b/resources/views/fo/partials/commitments/paragraph-with-visual.blade.php index 69542ebe..c7131e23 100644 --- a/resources/views/fo/partials/commitments/paragraph-with-visual.blade.php +++ b/resources/views/fo/partials/commitments/paragraph-with-visual.blade.php @@ -30,8 +30,7 @@ ]) @endif @if (isset($btnLabel) && !empty($btnLabel)) - {{ $btnLabel }} @endif
@@ -45,11 +44,10 @@ 'ratio ratio-16x9' => isset($video_id), ])> @if (isset($picto) && !empty($picto)) - {{ $picto_alt }} + ])> @endif
@endif - @if (isset($video_id) && \App\Rules\IsValidYoutubeId::validates($video_id)) - - @endif + +
+ @if (isset($video_id) && \App\Rules\IsValidYoutubeId::validates($video_id)) + @if (isset($isVideoModal) && isset($video_id) && \App\Rules\IsValidYoutubeId::validates($video_id)) +
+ @endif + + @endif +
+ @if (!isset($video_id)) - {{ $picture_alt }} + {{ $picture_alt }} @endif
@if (isset($card_title) && !empty($card_title)) -
- {{ $card_picto_alt }} -

+

+ {{ $card_picto_alt }} +

{{ $card_sustitle }}

-
+

{{ $card_title }}

{{ $card_subtitle }}

{{ $card_text }}

From 86f42e96f406648a5463528f9a8aaf01d71a5f64 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Mon, 23 Sep 2024 09:25:14 +0200 Subject: [PATCH 05/20] fix: re-create migration to ake recipe->tips nullable --- ..._09_23_092214_alter_tips_recipes_table.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 database/migrations/2024_09_23_092214_alter_tips_recipes_table.php diff --git a/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php b/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php new file mode 100644 index 00000000..8a278a81 --- /dev/null +++ b/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php @@ -0,0 +1,30 @@ +string('tips')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * @return void + */ + public function down(): void + { + Schema::table('recipes', function (Blueprint $table) { + $table->string('tips')->nullable(false)->change(); + }); + } +}; From 39da23cd674a5e3ff61e3d294434a6e112495fec Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Mon, 23 Sep 2024 09:28:17 +0200 Subject: [PATCH 06/20] fix: updated migration to fix recipe-tips --- .../migrations/2024_09_23_092214_alter_tips_recipes_table.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php b/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php index 8a278a81..aba71a97 100644 --- a/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php +++ b/database/migrations/2024_09_23_092214_alter_tips_recipes_table.php @@ -13,7 +13,7 @@ return new class extends Migration public function up(): void { Schema::table('recipes', function (Blueprint $table) { - $table->string('tips')->nullable()->change(); + $table->string('tips', 500)->nullable()->change(); }); } @@ -24,7 +24,7 @@ return new class extends Migration public function down(): void { Schema::table('recipes', function (Blueprint $table) { - $table->string('tips')->nullable(false)->change(); + $table->string('tips', 500)->nullable(false)->change(); }); } }; From 90613cbbb7c8dc92bff7b5451a72377dc5dca3e8 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Mon, 23 Sep 2024 17:17:54 +0200 Subject: [PATCH 07/20] fix: temporary use print() instead of custom pdf for recipes --- resources/ts/fo/base/common.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/resources/ts/fo/base/common.ts b/resources/ts/fo/base/common.ts index 5329a098..eacc668b 100644 --- a/resources/ts/fo/base/common.ts +++ b/resources/ts/fo/base/common.ts @@ -612,18 +612,21 @@ document.addEventListener("DOMContentLoaded", function () { for (const eltButtonPrintProd of eltsButtonPrintProd) { eltButtonPrintProd.addEventListener("click", function () { - const pathname = window.location.pathname; - const pathnameAsArray = pathname.split("/"); - const itemName = pathnameAsArray[pathnameAsArray.length - 1]; - setTimeout(() => { - // ! Seule solution: imprimer un pdf spécifique pour avoir le rendu souhaité. - // @ts-ignore - printJS({ - printable: "recettes/" + itemName + "/print-commercial-sheet", - type: "pdf", - showModal: true, - }); - }); + window.print(); + + // FIXME: Uncomment to have a custom PDF. + // const pathname = window.location.pathname; + // const pathnameAsArray = pathname.split("/"); + // const itemName = pathnameAsArray[pathnameAsArray.length - 1]; + // setTimeout(() => { + // // ! Seule solution: imprimer un pdf spécifique pour avoir le rendu souhaité. + // // @ts-ignore + // printJS({ + // printable: "recettes/" + itemName + "/print-commercial-sheet", + // type: "pdf", + // showModal: true, + // }); + // }); }); } From fda27cfe334e9809b44c8c7ed48a14a06cc22e41 Mon Sep 17 00:00:00 2001 From: Vincent BRIDIER Date: Mon, 23 Sep 2024 19:19:50 +0200 Subject: [PATCH 08/20] Mig --- app/Console/Commands/MigrateOldMessage.php | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/Console/Commands/MigrateOldMessage.php diff --git a/app/Console/Commands/MigrateOldMessage.php b/app/Console/Commands/MigrateOldMessage.php new file mode 100644 index 00000000..ae21f632 --- /dev/null +++ b/app/Console/Commands/MigrateOldMessage.php @@ -0,0 +1,39 @@ +setAttribute('message', Crypt::encryptString($message->getRawOriginal('message'))); + $message->save(); + } + } +} From 7e062f0e036fc1e9a1a2d5a675bb5a4409573406 Mon Sep 17 00:00:00 2001 From: Karl Muller Date: Tue, 24 Sep 2024 09:33:39 +0200 Subject: [PATCH 09/20] style: :lipstick: equalize product card height --- resources/sass/fo/partials/_product-card.scss | 5 ++++- resources/views/fo/partials/product-card.blade.php | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/resources/sass/fo/partials/_product-card.scss b/resources/sass/fo/partials/_product-card.scss index f361a344..af6ddee1 100644 --- a/resources/sass/fo/partials/_product-card.scss +++ b/resources/sass/fo/partials/_product-card.scss @@ -1,4 +1,3 @@ - .product-card { .product-card-tag { top: -5%; @@ -36,6 +35,10 @@ .product-card-bottom-part { top: -1rem; + @include media-breakpoint-up(lg) { + min-height: 8.5rem; + } + .product-card-view-more { margin-bottom: -1rem; } diff --git a/resources/views/fo/partials/product-card.blade.php b/resources/views/fo/partials/product-card.blade.php index 3b4122a5..f33ed894 100644 --- a/resources/views/fo/partials/product-card.blade.php +++ b/resources/views/fo/partials/product-card.blade.php @@ -1,6 +1,6 @@ -
+
-
+
{{ $model->packaging_alt }} {{-- BOTTOM PART --}}
-
+

{{ $model->label }}

From aec1835e588c3c17778535278a8aa5b924bb5feb Mon Sep 17 00:00:00 2001 From: Nicolas Demangeat Date: Tue, 24 Sep 2024 09:43:36 +0200 Subject: [PATCH 10/20] fix: :bug: improve product show display --- app/Http/Controllers/Fo/ProductController.php | 19 +- .../Bo/Products/StoreProductRequest.php | 1 + app/Models/Product.php | 19 +- ...50909_alter_product_static_pages_table.php | 128 ++++++++++ ...54248_add_claim_title_to_product_table.php | 28 +++ resources/lang/en/validation.php | 1 + resources/lang/fr/validation.php | 1 + resources/sass/fo/pages/product.scss | 2 +- .../views/bo/pages/products/form.blade.php | 39 ++- .../views/fo/pages/products/show.blade.php | 228 ++++++++++-------- .../views/fo/partials/product-card.blade.php | 4 +- .../views/fo/partials/video-card.blade.php | 40 +-- 12 files changed, 369 insertions(+), 141 deletions(-) create mode 100644 database/migrations/2024_09_20_150909_alter_product_static_pages_table.php create mode 100644 database/migrations/2024_09_20_154248_add_claim_title_to_product_table.php diff --git a/app/Http/Controllers/Fo/ProductController.php b/app/Http/Controllers/Fo/ProductController.php index e76b67db..74ef716d 100644 --- a/app/Http/Controllers/Fo/ProductController.php +++ b/app/Http/Controllers/Fo/ProductController.php @@ -85,14 +85,21 @@ class ProductController extends Controller $staticPageModel = StaticPage::query()->where('type', StaticPageType::product)->first(); /** @var \App\Models\Recipe|null $recipeModel */ - $recipeModel = ((count($productModel->recipes)) - ? Recipe::query()->where('id', $productModel->recipes->first()->getKey())->first() + $recipeModel = $productModel->recipes->isNotEmpty() + ? $productModel->recipes()->with(['products', 'consumptionMoment'])->first() : Recipe::query()->whereHas('products', function (Builder $q) use ($productModel) { - $q->where('id', $productModel->getKey()); - })->first()); - + $q->when($productModel->subrange, function (Builder $q) use ($productModel) { + $q->whereHas('subrange', function (Builder $q) use ($productModel) { + $q->where('id', $productModel->subrange->getKey()); + }); + })->when($productModel->range, function (Builder $q) use ($productModel) { + $q->whereHas('range', function (Builder $q) use ($productModel) { + $q->where('id', $productModel->range->getKey()); + }); + }); + })->with(['products', 'consumptionMoment'])->first(); /** @var \App\Models\Video $videoModel */ - $videoModel = Video::query()->first(); + $videoModel = $productModel->videos->sortByDesc('created_at')->first(); return view('fo.pages.products.show', [ 'productModel' => $productModel, diff --git a/app/Http/Requests/Bo/Products/StoreProductRequest.php b/app/Http/Requests/Bo/Products/StoreProductRequest.php index ce2cb8c2..97a0f440 100644 --- a/app/Http/Requests/Bo/Products/StoreProductRequest.php +++ b/app/Http/Requests/Bo/Products/StoreProductRequest.php @@ -56,6 +56,7 @@ class StoreProductRequest extends FormRequest 'seo_title' => 'required|min:45|max:70', 'seo_description' => 'required|min:50|max:160', 'label' => 'required|string|between:3,255', + 'claim_title' => "sometimes|nullable|string|between:3,255", 'picture_alt' => 'required_with:picture|nullable|string|between:3,255', 'picture_title' => 'required_with:picture|nullable|string|between:3,255', 'banner_alt' => 'required_with:banner|nullable|string|between:3,255', diff --git a/app/Models/Product.php b/app/Models/Product.php index b3f1e301..5105f44c 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -58,6 +58,7 @@ class Product extends Model implements SeoInterface 'seo_description', 'label', 'slug', + 'claim_title', 'picture', 'picture_alt', 'picture_title', @@ -191,7 +192,7 @@ class Product extends Model implements SeoInterface // * RELATIONSHIPS /** - * Get all of the ranges that are assigned this product. + * Get the range that are assigned this product. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ @@ -201,7 +202,7 @@ class Product extends Model implements SeoInterface } /** - * Get all of the subranges that are assigned this product. + * Get the subrange that are assigned this product. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ @@ -211,7 +212,7 @@ class Product extends Model implements SeoInterface } /** - * Get all of the meats that are assigned this product. + * Get the meat that are assigned this product. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ @@ -221,7 +222,7 @@ class Product extends Model implements SeoInterface } /** - * Get all of the submeats that are assigned this product. + * Get the submeat that are assigned this product. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ @@ -279,4 +280,14 @@ class Product extends Model implements SeoInterface { return $this->morphedByMany(Claim::class, 'productable'); } + + /** + * Get the videos for the product. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function videos(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Video::class); + } } diff --git a/database/migrations/2024_09_20_150909_alter_product_static_pages_table.php b/database/migrations/2024_09_20_150909_alter_product_static_pages_table.php new file mode 100644 index 00000000..1f9ab0af --- /dev/null +++ b/database/migrations/2024_09_20_150909_alter_product_static_pages_table.php @@ -0,0 +1,128 @@ +where('type', StaticPageType::product)->first(); + $staticPage->data = [ + "products_title" => [ + "label" => "Titre des produits", + "inputType" => InputType::string->value, + "value" => "le titre des autres produits", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "products_text" => [ + "label" => "Texte des produits", + "inputType" => InputType::text->value, + "value" => "le texte des autres produits", + "validate" => 'required|string', + 'required' => true + ], + "animation_text_1" => [ + "label" => "Texte de l'animation 1", + "inputType" => InputType::string->value, + "value" => "le texte de l'animation 1", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "animation_text_2" => [ + "label" => "Texte de l'animation 2", + "inputType" => InputType::string->value, + "value" => "le texte de l'animation 2", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "recipes_title" => [ + "label" => "Titre des recettes", + "inputType" => InputType::string->value, + "value" => "le titre des recettes", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "recipes_text" => [ + "label" => "Texte des recettes", + "inputType" => InputType::text->value, + "value" => "le texte des recettes", + "validate" => 'required|string', + 'required' => true + ], + ]; + $staticPage->saveQuietly(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + // PRODUCT. + $staticPage = StaticPage::query()->where('type', StaticPageType::product)->first(); + $staticPage->data = [ + "claim_title" => [ + "label" => "Titre des allégations", + "inputType" => InputType::string->value, + "value" => "le titre des allégations", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "products_title" => [ + "label" => "Titre des produits", + "inputType" => InputType::string->value, + "value" => "le titre des autres produits", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "products_text" => [ + "label" => "Texte des produits", + "inputType" => InputType::text->value, + "value" => "le texte des autres produits", + "validate" => 'required|string', + 'required' => true + ], + "animation_text_1" => [ + "label" => "Texte de l'animation 1", + "inputType" => InputType::string->value, + "value" => "le texte de l'animation 1", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "animation_text_2" => [ + "label" => "Texte de l'animation 2", + "inputType" => InputType::string->value, + "value" => "le texte de l'animation 2", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "recipes_title" => [ + "label" => "Titre des recettes", + "inputType" => InputType::string->value, + "value" => "le titre des recettes", + "validate" => "required|string|between:3,255", + 'required' => true + ], + "recipes_text" => [ + "label" => "Texte des recettes", + "inputType" => InputType::text->value, + "value" => "le texte des recettes", + "validate" => 'required|string', + 'required' => true + ], + ]; + $staticPage->saveQuietly(); + } +}; diff --git a/database/migrations/2024_09_20_154248_add_claim_title_to_product_table.php b/database/migrations/2024_09_20_154248_add_claim_title_to_product_table.php new file mode 100644 index 00000000..c995ffd7 --- /dev/null +++ b/database/migrations/2024_09_20_154248_add_claim_title_to_product_table.php @@ -0,0 +1,28 @@ +string('claim_title')->nullable()->comment('The claim title for a product.')->after('label'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('products', function (Blueprint $table) { + $table->dropColumn('claim_title'); + }); + } +}; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index efb0ea78..1765dc41 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -247,6 +247,7 @@ return [ 'catchline' => 'catchline|catchlines', 'category' => 'catégorie', 'claim' => 'claim', + 'claim_title' => 'claims title', 'class' => 'class', 'color_block' => 'color block', 'color' => 'color', diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index b89efd1d..26aacf09 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -248,6 +248,7 @@ return [ 'catchline' => 'phrase d\'accroche|phrases d\'accroche', 'category' => 'catégorie', 'claim' => 'allégation', + 'claim_title' => 'titre des allégations', 'class' => 'classe', 'color_block' => 'couleur du block', 'color' => 'couleur', diff --git a/resources/sass/fo/pages/product.scss b/resources/sass/fo/pages/product.scss index 8cb7f7ee..0b74df5c 100644 --- a/resources/sass/fo/pages/product.scss +++ b/resources/sass/fo/pages/product.scss @@ -85,7 +85,7 @@ } .product-paper-content { - overflow: hidden scroll; + overflow: hidden auto; height: 12rem; opacity: 0; transition: opacity .5s; diff --git a/resources/views/bo/pages/products/form.blade.php b/resources/views/bo/pages/products/form.blade.php index 9711a24f..a442e2a2 100644 --- a/resources/views/bo/pages/products/form.blade.php +++ b/resources/views/bo/pages/products/form.blade.php @@ -112,6 +112,41 @@
+ {{-- CLAIM TITLE --}} +
+
+ {{ str(__('validation.custom.claim_title'))->ucFirst() }} +
+
+ @include('bo.partials.inputs.varchar', [ + 'id' => 'productClaimTitle', + 'label' => __(':field :inter:model', [ + 'field' => str(__('validation.custom.claim_title'))->ucFirst(), + 'inter' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + 'hasWordCounter' => true, + 'name' => 'claim_title', + 'model' => $productModel ?? null, + 'helper' => __('validation.between.string', [ + 'attribute' => __(':field :inter:model', [ + 'field' => __('validation.custom.claim_title'), + 'inter' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + 'min' => 3, + 'max' => 255, + ]), + 'placeholder' => __(':field :inter:model', [ + 'field' => str(__('validation.custom.claim_title'))->ucFirst(), + 'inter' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + ]) +
+
+
+
{{-- DESCRIPTION --}}
@@ -724,14 +759,14 @@ 'routeName' => 'bo.claims.json-paginate', 'fieldName' => 'label', 'multiple' => true, - 'limits' => [0, 1], + 'limits' => [0, 4], 'required' => true, 'disabled' => false, 'placeholder' => __('Rechercher un :model', [ 'model' => __('models.classes.claim'), ]), 'helper' => __( - 'Sélectionner une ou plusieurs :model qui sera associée parmis la liste (minimum 0 et maximum 1).', + 'Sélectionner une ou plusieurs :model qui sera associée parmis la liste (minimum 0 et maximum 4).', ['model' => __('models.classes.claim')]), ])
diff --git a/resources/views/fo/pages/products/show.blade.php b/resources/views/fo/pages/products/show.blade.php index c5383028..73d2ce79 100644 --- a/resources/views/fo/pages/products/show.blade.php +++ b/resources/views/fo/pages/products/show.blade.php @@ -81,13 +81,13 @@
{{-- LABELS TITLE --}} @if ($productModel->labels->where('published', true)) -
- @foreach ($productModel->labels->where('published', true) as $label) - {{ $label->picture_alt }} - @endforeach -
+
+ @foreach ($productModel->labels->where('published', true) as $label) + {{ $label->picture_alt }} + @endforeach +
@endif {{-- RANGE --}}
@@ -102,21 +102,21 @@ {{-- CLAIMS TITLE --}}

- {{ $staticPageModel->data['claim_title']['value'] }} + {{ $productModel->claim_title }}

{{-- CLAIMS LIST --}} @if ($productModel->claims->where('published', true)) -
- @foreach ($productModel->claims->where('published', true) as $claim) -
- {{ __('Allégation icône') }} -

{{ $claim->label }}

-
- @endforeach -
+
+ @foreach ($productModel->claims->where('published', true) as $claim) +
+ {{ __('Allégation icône') }} +

{{ $claim->label }}

+
+ @endforeach +
@endif {{-- BTN INGREDIENTS --}}
@@ -161,49 +161,43 @@ {!! clean($productModel->preparation) !!}
- {{-- PRODUCTTYPE/DEMARCHE DESKTOP --}} + {{-- PRODUCTTYPE/DEMARCHE MOBILE --}} @if (count($productModel->productTypes)) -
- - + {{-- CHANGEME: quand la relation product<->productType aura été changé, adapter cette partie --}} +
+ +
+ {!! clean($productModel->productTypes[0]->description) !!} + @if ($productModel->productTypes[0]->button_status) + + {{ __('En savoir plus') }} + + @endif
+
@elseif ($productModel->approach) -
- -
- {{ $productModel->approach->name }} -
+
+ +
+ {{ $productModel->approach->name }}
+
@endif
@@ -220,48 +214,50 @@
{{-- PRODUCTTYPE/DEMARCHE DESKTOP --}} @if (count($productModel->productTypes)) -
-
-

{{ __('encart promotionnel') }}

-
- @foreach ($productModel->productTypes as $productTypeModel) -
- {{ $productTypeModel->picture_alt }} -
- {{ $productTypeModel->label }} - {!! clean($productTypeModel->description) !!} - @if ($productTypeModel->button_status) - {{ __('En savoir plus') }} - @endif -
-
- @endforeach + {{-- CHANGEME: quand la relation product<->productType aura été changé, adapter cette partie --}} +
+ {{ $productModel->productTypes[0]->picture_alt }} +
+

+ {{ $productModel->productTypes[0]->label }} +

+
+
+ {!! clean($productModel->productTypes[0]->description) !!}
+ @if ($productModel->productTypes[0]->button_status) + + {{ __('En savoir plus') }} + + @endif
+
@elseif ($productModel->approach) -
- {{ $productModel->approach->picture_alt }} -
-

{{ __('la démarche') }}

-
-
- {{ $productModel->approach->name }} -
- @if ($productModel->approach->button_url) - {{ __('En savoir plus') }} - @endif +
+ {{ $productModel->approach->picture_alt }} +
+

+ {{ __('la démarche') }} +

+
+
+ {{ $productModel->approach->name }}
+ @if ($productModel->approach->button_url) + + {{ __('En savoir plus') }} + + @endif
+
@endif
@@ -302,19 +298,36 @@ {{-- PRODUCT ANIMATION --}}
-
+
+ @if ($videoModel)
@include('fo.partials.video-card', ['details' => false])
-

{{ $staticPageModel->data['animation_text_1']['value'] }} +

+ {{ $staticPageModel->data['animation_text_1']['value'] }}

-
+
+ {{ $recipeModel->picture_alt }} +
+

+ {{ $staticPageModel->data['animation_text_1']['value'] }} +

+
+
+
+ @endif +
!$videoModel && !$recipeModel]) data-aos="fade-down" data-aos-easing="ease-in-out" data-aos-duration="1000" data-aos-once="true" data-aos-anchor-placement="bottom-bottom">
@if ($recipeModel) -
-
-
-

- {{ $staticPageModel->data['animation_text_2']['value'] }}

-
-
- @include('fo.partials.recipe-card', ['model' => $recipeModel]) -
+
+
+
+

+ {{ $staticPageModel->data['animation_text_2']['value'] }} +

+
+
+ @include('fo.partials.recipe-card', ['model' => $recipeModel])
+
@endif
diff --git a/resources/views/fo/partials/product-card.blade.php b/resources/views/fo/partials/product-card.blade.php index 3b4122a5..192708a7 100644 --- a/resources/views/fo/partials/product-card.blade.php +++ b/resources/views/fo/partials/product-card.blade.php @@ -24,7 +24,9 @@ {{-- BOTTOM PART --}}
-

{{ $model->label }}

+

+ {{ $model->label }} +

- @if (\App\Rules\IsValidVimeoId::validates($videoModel->video_id)) - - @endif - @if (\App\Rules\IsValidYoutubeId::validates($videoModel->video_id)) - - @endif + @if (\App\Rules\IsValidVimeoId::validates($videoModel->video_id)) + + @endif + @if (\App\Rules\IsValidYoutubeId::validates($videoModel->video_id)) + + @endif
@if ($details) From cbf8930b1fb1ef9917839cbedb1635cb399f3191 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Tue, 24 Sep 2024 10:23:30 +0200 Subject: [PATCH 11/20] fix: Updated news corporate cards style - #135 --- resources/ts/fo/base/common.ts | 2 +- .../views/fo/partials/news-corporate-card.blade.php | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/resources/ts/fo/base/common.ts b/resources/ts/fo/base/common.ts index eacc668b..b37f8a0b 100644 --- a/resources/ts/fo/base/common.ts +++ b/resources/ts/fo/base/common.ts @@ -230,7 +230,7 @@ document.addEventListener("DOMContentLoaded", function () { }, }, breakpoints: { - 576: { + 768: { slidesPerView: 2, slidesPerGroup: 2, }, diff --git a/resources/views/fo/partials/news-corporate-card.blade.php b/resources/views/fo/partials/news-corporate-card.blade.php index 58c250b9..f4f5ecf8 100644 --- a/resources/views/fo/partials/news-corporate-card.blade.php +++ b/resources/views/fo/partials/news-corporate-card.blade.php @@ -4,7 +4,11 @@ $newsCorporateModel || New corporate model. || Model || REQUIRED || --}} -
+ From 1c23a6e957652c83a27137f8a00631bdf4418917 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Tue, 24 Sep 2024 10:56:10 +0200 Subject: [PATCH 12/20] fix: Updated picture style on story page --- resources/sass/fo/pages/story.scss | 65 +++------ resources/views/fo/pages/story.blade.php | 163 ++++++++++------------- 2 files changed, 91 insertions(+), 137 deletions(-) diff --git a/resources/sass/fo/pages/story.scss b/resources/sass/fo/pages/story.scss index 521a844d..d1ef1be2 100644 --- a/resources/sass/fo/pages/story.scss +++ b/resources/sass/fo/pages/story.scss @@ -1,6 +1,4 @@ #story-description { - padding-bottom: 18rem; - @include media-breakpoint-up(lg) { padding-bottom: 1rem; } @@ -12,51 +10,22 @@ } .left-picture-wrapper { - position: absolute; - bottom: 0; - left: 0; - height: 15rem; - padding: 0 3rem 0 0; - - @include media-breakpoint-up(lg) { - width: 54%; - height: 80%; - padding: 0; - } - - &::before { - @include media-breakpoint-up(sm) { - position: absolute; - top: -5.5rem; - right: 2rem; - width: 128px; - height: 132px; - background-image: url('@/images/story/french-flag.svg'); - background-position: center; - background-repeat: no-repeat; - background-size: contain; - content: ""; + .img-wrapper { + &::before { + @include media-breakpoint-up(sm) { + position: absolute; + top: 2rem; + right: 0; + width: 128px; + height: 132px; + background-image: url('@/images/story/french-flag.svg'); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + content: ""; + transform: translate(0%, -100%); + } } - - @include media-breakpoint-up(lg) { - right: 0; - } - } - - img { - width: 100%; - height: 100%; - object-fit: cover; - - @include media-breakpoint-up(lg) { - width: auto; - height: auto; - object-fit: cover; - } - } - - > div > div { - clip-path: polygon(98% 0, 100% calc(100% - 0.75vw), 0 calc(100% - 0.5vw), 0% 0); } } @@ -117,7 +86,7 @@ z-index: 5; top: 8rem; - &.is-sticky{ + &.is-sticky { /* stylelint-disable-next-line scss/at-extend-no-missing-placeholder */ @extend .bottom-left-shadow; @@ -158,7 +127,7 @@ } } - .col-10 > div::before { + .col-10>div::before { position: absolute; top: calc(50% - 2rem); left: 50%; diff --git a/resources/views/fo/pages/story.blade.php b/resources/views/fo/pages/story.blade.php index beee0cd4..f8dc0985 100644 --- a/resources/views/fo/pages/story.blade.php +++ b/resources/views/fo/pages/story.blade.php @@ -9,15 +9,17 @@ {{-- HEADER --}} @include('fo.layouts.header-banner') {{-- WHO ARE WE --}} -
-
+
+
{{-- KEY NUMBER --}} -
+
-

+

{{ $staticPageModel->data['keynumbers_title']['value'] }}

-

+

{{ $staticPageModel->data['keynumbers_description']['value'] }}

@@ -56,8 +57,8 @@ @foreach ($keyNumberModels as $keyNumberModel)
- {{ $keyNumberModel->picto_alt }} + {{ $keyNumberModel->picto_alt }}
{{ __($keyNumberModel->text) }}
@@ -76,15 +77,15 @@
{{-- STORY --}} @if (count($historicalMilestoneModels)) -
+
{{-- TITLE/DESCRIPTION --}}
-

+

{{ $staticPageModel->data['story_title']['value'] }}

-

+

{{ $staticPageModel->data['story_description']['value'] }}

@@ -92,7 +93,7 @@
{{-- SLIDER YEARS --}} -
+
@@ -104,25 +105,22 @@
-
+
@foreach ($historicalMilestoneModels as $historicalMilestoneModel)
{{-- MOBILE HISTORICAL MILESTONES --}} -
+
@foreach ($historicalMilestoneModels as $historicalMilestoneModel) -
+

+ class="position-relative f-bourton-base fs-1 bg-warning bottom-left-shadow z-1 m-0 mx-auto w-fit px-2 text-white"> {{ $historicalMilestoneModel->year }}

-
+
iteration % 2 ? 'rotate-right' : 'rotate-left', ])> @if (isset($historicalMilestoneModel->picto) && $historicalMilestoneModel->picto !== null) - iteration % 2 ? 'slider-picto' : 'slider-picto-reversed', - ]) - src="{{ asset($historicalMilestoneModel->picto) }}" - alt="{{ $historicalMilestoneModel->picto_alt }}" - title="{{ $historicalMilestoneModel->picto_title }}"> + {{ $historicalMilestoneModel->picto_alt }}iteration % 2 ? 'slider-picto' : 'slider-picto-reversed', + ])> @endif
-
+

{{ $historicalMilestoneModel->year }}

{{ $historicalMilestoneModel->title }}

{!! $historicalMilestoneModel->description !!} @@ -208,16 +199,15 @@
{{-- DESKTOP HISTORICAL MILESTONES --}} -
+
-
+
@foreach ($historicalMilestoneModels as $historicalMilestoneModel)
{{ __('test') }} + title="{{ __('test') }}" alt="{{ __('test') }}">
iteration % 2 ? 'rotate-right' : 'rotate-left', ])> @if (isset($historicalMilestoneModel->picto) && $historicalMilestoneModel->picto !== null) - iteration % 2 ? 'slider-picto' : 'slider-picto-reversed', - ]) - src="{{ asset($historicalMilestoneModel->picto) }}" - alt="{{ $historicalMilestoneModel->picto_alt }}" - title="{{ $historicalMilestoneModel->picto_title }}"> + {{ $historicalMilestoneModel->picto_alt }}iteration % 2 ? 'slider-picto' : 'slider-picto-reversed', + ])> @endif @if ( (isset($historicalMilestoneModel->picture) && $historicalMilestoneModel->picture !== null) || (isset($historicalMilestoneModel->video_id) && $historicalMilestoneModel->video_id !== null))
isset($historicalMilestoneModel->picture) && $historicalMilestoneModel->picture !== null + 'w-fit' => + isset($historicalMilestoneModel->picture) && + $historicalMilestoneModel->picture !== null, ])> @if (isset($historicalMilestoneModel->picture) && $historicalMilestoneModel->picture !== null) {{ $historicalMilestoneModel->picture_alt }} + title="{{ $historicalMilestoneModel->picture_title }}" + alt="{{ $historicalMilestoneModel->picture_alt }}"> @endif - @if (isset($historicalMilestoneModel->video_id) && - \App\Rules\IsValidVimeoId::validates($historicalMilestoneModel->video_id)) + @if (isset($historicalMilestoneModel->video_id) && \App\Rules\IsValidVimeoId::validates($historicalMilestoneModel->video_id)) @endif - @if (isset($historicalMilestoneModel->video_id) && - \App\Rules\IsValidYoutubeId::validates($historicalMilestoneModel->video_id)) + @if (isset($historicalMilestoneModel->video_id) && \App\Rules\IsValidYoutubeId::validates($historicalMilestoneModel->video_id))
From ab1f0724e16102a05c2b267979169fc23e759c3d Mon Sep 17 00:00:00 2001 From: Nicolas Demangeat Date: Tue, 24 Sep 2024 15:09:51 +0200 Subject: [PATCH 13/20] feat: :lipstick: add logo 40ans in header and footer + improve footer display --- .../assets/images/legaulois-logo-40ans.png | Bin 0 -> 51830 bytes resources/sass/fo/base/_layout.scss | 6 +++++- resources/views/club/layouts/header.blade.php | 2 +- .../layouts/main-menu/offcanvas-menu.blade.php | 2 +- .../sortant-a-l-exterieur-card.blade.php | 2 +- resources/views/fo/layouts/footer.blade.php | 12 ++++++------ .../views/fo/layouts/main-menu/links.blade.php | 2 +- .../main-menu/offcanvas-menu-mobile.blade.php | 2 +- 8 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 resources/assets/images/legaulois-logo-40ans.png diff --git a/resources/assets/images/legaulois-logo-40ans.png b/resources/assets/images/legaulois-logo-40ans.png new file mode 100644 index 0000000000000000000000000000000000000000..e02203ad52f3b9c0c3157a1b67207ca1c87e2db0 GIT binary patch literal 51830 zcmd43g;!MH+de$>3?VJuLw6$`!_X-u4I%>4AT1y{bT`sSNeR*&(y0g{-6f4Qyob;C z`TY;?QkQFuI(whJ@3`VVMrf)l;9!ztfuWo#zCz> zuU}718mm;gXD>(;=@j4C+!7oGH#_fZ6LFNRzR8=F&^Pl4fszx??xwJM3qSo zf)^1X8=&UWLI%)Q7VPWAVj7ZYZ`dD>%<24=g%yP6-$ge>&>}vfL=XhgVwd2vGJ=L* zQ|cwf{8PcgiP*KPe60uhJK^_Tm#vtXoDN~F3N>rJ1GlFQL zKw9woWAWUPGrt!TXBgL#&rZcVf7<+kYICg5F}4_b9EA~poanUU2ft;}TDl#D$u6{7 zls!7N#=hkWZ=(J9_;xc!G2`t*KOMNBQ?4L{c8#?2SOlDhnvb<@3{tsUE1I+sd%cqA zVsF8qefqw3ZwaRvL9Ly-e_4PR;&ZsDiJm*)9PxM*+~nD-{j206+<{nGylphEf&r4V zO>!pQnX!HS{IUIrGiO^Rx*>`dY#Yx)hY$(b_7qH7i3ELubirjV4+pU&Zf}*F6D3o9Ao@}J6gaihkL{OAuoU{^w^}; z_$tymd0=P@TL#-pF&Pi$clvyT6S0jXGI(|;UWh}I2j4njd?5AuwV@*NSsFtO@t{#Z z7AhM?oz#z@ZXk}8%N?P^dE6Q`I`&R=Eu_rETHaEPm=YpHrF#b4DT4nF_m?c1(>D~a z5qnd@fJgka(Z&=~2VohT!8TH<*#)s3l7Fsl^>*jYl(i>LHI%S}cOkZ;8bxwtJXS zvF-x4hrN9ByS%urdSdL5ev)2a$9^0MbYp7{;Nb5XHwCUo&WaaQJQtIVC4<+adG%bT zkBoAFGqeFxat)H?moX!3j><6(c=57uQZPAm``RyOdn8CX$8JpKaW3i}Stjnq=FP+< zncp?iCW6DMl1R)iKl07-hYsAEYO@Y%x1?x|xfUqp?$0%MJ{8bq&Y#ln5f2mhZzt8` zK^v=3@JrdJNKOi!^bda@5ula%t}o;+Du=vTh@W?B3Fn$1Ht}5r{aw`8vE%m(rqLaV zC5B1+G_BYj*@eYlERXIPjhBNo5XmyR)5FcjCY=*rIgg`OkO@KFIIla*lKCVS79>jZ z{3R09;|r>fM{c>*t2HC42Z9U;B%G&!k-Nj4(MFde>1nhvvY-69G0xhE&#FQ;XCZ9! zKzBtlo|XS)KGQI@E6ua$_qXGygt3PgWBlgoNT*Y?K)!$UKrQ{TD_$$wh^3Vf^N(DD zJ4`C$1Ao2KubpGxOh^z9-BVPluZmP5+k5c*J=QIqa+hI43!txD;Hk2daKP^Ac0JB3 zGHsPPL-C99oXHL5;nlWT@#`51osjdIw8|kIJ7I2|NV*ncp0oEy5a{eRYOd#-fU0KP zxKL#VgJBSvK3)<1k5k9p z2pDKEJ-^(GExqB%C514PNKQmptVW5_UV82zJ39!?oA{8H$doM`xHTuQiSobTUf1x^_TT)9luQN4GA?7E0$4S*oLKQub z_Q&4cLTJ9iKqIr(6S!jf7ip-#nP33BE}-dlF~%8i+3sn~^RyFhqw2s*bCr1h?m>P^ zxvW8uo-y~En!g=soLSWm@eMxiUq~`hszSO`=ebALCd%MjS)_Lc*o%l{<3Yl|>=!JL zBXeTfD7mDp#Y~x~_)?l@u%MmrE4dc7yPO!tNsoaRRB6eHv)Qk)Q{!;ovgpYq?@7mj z7xQiDy2_`%q^_@GstJH1>QO77V^-=I2H!MVmYfWl?UelJX(;Nl*7|H^pKxlKhmV*v zIV5XhxN9`QHeKv{?5K>A-PmBbM*0r^!%M7_wk&eu_2H959jn4m-j=Q3WAK7qkPQZb z$J~E`hng>uJ%tXmLTdP0AKHrHFD%fb`q5hi)za!9{I)ss)726V2AyB~_?xMr#oRiE zH#s1`D340gG+waOpkk`)PO)sKQ>XAMXX%ySr=6YeSQi5>k4sJ;tBnF<9WMweG9qus zX+r-nWi!3^w`^K5I?yWPv>Fc%4o8K zJBG01fq|IgFEcoZbAy!*fg~NjZN=-i)>qYC<8kGYK=RcX+p2K!HzN5RU57bV{4#>5 zHEbrR9IrWR--=H0PLb=;_wkogO@U9YHFL*xWUbf9X>H`vJ_$6dc%FJZjq_8}hYG?h zDanEuJjj+ag`UpQnMnnt#Nux>r7=H~+>oLN$f@?>i$cEMP}ZI9t}7$u9%vms;=!1; z(oG?omKO*|^x>zCp$@pPBV|L(xbf29y{Tv769TwB%WZ1I1!bDOKQMLY$}M@N0{q&c ze>B|PU-!3~)$zzhEPAjQ+xY*Uj>xZ`T|ZE0Fh5ImswaW29^5~7%ef|9SoSPC;Y;Bi z;q|_Y%w&b+eBJA#KRLVAvJfV+&=Xblq8vF zoK3B9Y}nE0s6@D=dlY~CK#i|3S5Z-)llGXY^!&Y?{%oCDmrA3NR%oTs(k=O0sais2 zNxSLg<7y4_aekWDJNp+RbdRF*-9p!ktjC#h5uQ~5fa+7H_Y7>OWexY}r!YQtD2*qj zL->P3o$z4-hl@P8(nzwe^WLrcrq9;c=M9htB;FK1)I>6B9=&0KnTezYhmQTWF`GjW zNw-;5&A$k#!~B3%jtNwmr0#lX_>cAvd1!ODoG64uTF)|?k<1$0*A7l60(%|ce_{z~ z1TA)QoU|T(Kv;$-n6@iDu4J3X-)R0G`ly&tq63~ta^|uQg6;QU9D7G8mm$#us0qLb zA$XULHN7OM+APOEdh*t@kG(1ERtZ_v3)Rx1q+FWe3@(Yd|7IeU@3)6Yu3iC!&-MO; zdOa;q>_~vA+KJg&zjj>i**tZnnx@^Q_8`Zmp;iDTmf4?onA{rNREq`%4`im6=9*4yb|zrpB*M?Hk<)H5Z7 zlIM(XKHeI_O>6neFqTf2X1gNP(U}Gr6x)=o`>T3^EoC&LD&b`{`V~U6D<-+e>x(e+ zn@vZOvDc~%(zs98$$|ZZPJVXzjMCAT;HDIh*Vh#Y^a7YR@+KWdGr}!_0IEI?JD`lU zN#-}GN7^A~nw1rK)hS&^cx`!2@?B9@FQk*eup{|(r~Pi93WaLIf@8Q7hB2RM%$tDFo`kK4Hq(R{kJO+d)IGxacPs1?AGkJS zfDHuQ0B}y^(lLIIQ7eeh<@w>}5oZl*M`)}`Hy$zN057ZX-q9L$2iVoR@LpA-I>C73 zA9VGhgWcmyns|@}au5_)IO6+qhwf2xo@(bN_VfHMM3^ z^vY>G6MuZ3jFpH9+IFS%WQ73PITv3NLfg{}An3v9j9EP98*$c1<&R&#b8~IU_=kI8 z_*sx~RXW(glp(Ssv8Guu|JYtvX}aG@C_zJ|pUUc_LL=`)zvd5dEkxwadIx2q$d>l? z(9zq>d_Elp?O{Aaaf??%^J!m2(uOgOh>yMD**>N;YA4>`WVgp@e<-wa zU!mH^33jdE4rlK0DRi{;I6CgIb7x@^zaH3`cL*d2U@fz4hN*^kQB4!HTBBpebrZ7& z@w|qSiQGn_F8>I{)UtkZg`b9Q53`aO_q!~7ga4s?-tuj7d0D}YNN>)yJB`0Cv40EI z?Qk(3ce&m1>!VYCb1Nvhd=P^kfrJH=D!ivqk3YgOk0F#y(8eLWP&(0HU=6Fsdqy$` zNh&_RAEyNNz%_2h;FW{B-2Z&@FA8V++2}yaTyZhWYR;T(q$D(xhXrD`;6~>kpTKcJ z6&6N&E!T+5#r7)*rY_q`*fBX#-bBD~>BthI;YTFxpR>v*?%%InSR##gg8GEtLSOVN z1(IK(DyNVoZrwu`qE-l*|B;4sTWOg9^llTR{B_E){5C6qj`_uBrHTG_y@HL@%MKxx z6rR7NS&#?)Z6yg&&E|2uyL=VoHzVp%xF7N;$2`0cT`A|=Q7G&;p{&=;PD#ZtFj zU3kv5T^f0eF=8;TwqkH67&4{5f*css+>NTRT<-@R<-8u>cyIQ;SN41}cw^sL4|A0s zO!l;!Z|Az^tRY7q({SAX)Ep?2c_@+n&ItKKx^e3MnuhWH;AOU*o58U%DdBMGdp zxq}m(&!YKjP80c|kf27~dUN#|NhS*?zUl;4HWyoYY?-wXZtwOUooo6Izj(hZp}13v zQ3-E4#x}wbcc2HLvisro8=pf`{7U!Tzo4m;9>|=8dvJzL_$E@E7dGKD`RC);v`;>I zs!zV_mP(7(Dt4cVBw&)YvuEmH&)_JDu;5nhS>EtgN%wj@|Ndyg8SXr2hclYYy;cz| zh&#U-T-uLjrXDe3BL}88r3C=055b=9kW8)tFEaC8?J}J4^^LCw>h>-vm+BogmDo*) zyy%U;Lg<%q--1F4xe<@ASTd18{x24n(7G&HhxBnebI5C9OB{ z3raMP!**q~k<2;}y_zVuJ++Z{0e^75F(;E>ohnhnDP;c_)I6Dr`H5Kfo;Q@oq2@Yd zwRPK<;-kSDc{;9?jftzxnD>v^cP4oM0^}wum?QA)U=hDe2{=)eKx3g1;!Z=~CHHneLv|pgy4Ac-*5@SL7ozJ!kfhQ!qb-d#4L@?}P;_%SU`(qPmX3WGpNbR-jnj z2-GP3S)kD-G8)fvNOBQ+d|}M{ojMnf6(E0eF&#|EO?dMR!*A+kP^V~~?(aTBauqp* z$qb_n0|^st>2KiC>N^9GpupKe5N6WgSY-L9yV{J7PF=31lt_X@+$=$M6F;*lue;0|8j4W& z`#n7beUxWvevmo?aUjXIv9+(lKjX1URu9texZ#40QAqrPIFAFELrw8Ryq}n02va;L zVLT$%an#!(Zte2%n@x7X=ODwA?gXK+n=)gc2k_#7zxa^=$In5d)4L_7jIivou2{wD zNGv!c1wdO}%;~Oz|NRLEY(1vhP=I28>P%tR+EZzXhl4V?NQrASvRWfuHyLc9 z;GVCI@*Hx}(Lvt~_F^qqm(3jn-Grb^TL#mjqdwgOLRm9n((im0_1w@b4sYoirwu0t z1iCDFe_Y=L0x>t*N8bFyA4yeu4yB>A?Ny=p$=FCShFLkh|4eyWf}6>0&2~P-`9tL= z9)2)TS(ItdMj* zR%re;)er6yUm48Rvmhe+oTSNMaf+Pzzo45w_ymNcWBImh?;r6h+sZZP&`nQ?PPVrrdxwxs@Uvn8Gq}J^x*!BWL7re4E+Eqr>4zqS@i-f* zIkgs|@w4gcREKsP1T|$H2aNaIZTeG-PuI-+{;tikK}E$50&YF!mnUuLc|=IH*wks* zoYuFq@ed>xn>}s+MFqZlba4$NWS*Ak(C6MtfT27;YdTssj!KGB@qNs-8R=WGy{@sE zv&iBjgS_~?;yM9xRX}<1yTyz!W20wVjTOnq?WNr$vo=u36#-!rkhKuZTXY?6WCw_I zSQ99Dm`ah&A72|GiJ$oHTpq6|AK#fesKmp!y0Q0O7ey48eWKl5t$>q|wSqdu5706F z^Zn@TgMbZwQ*+3Sd1JsbKd7@wT|sMVXV)7=5L;(8C-<+zyhKa2BI#*BgdG?>v7kRvO;%mPB zA==dGk=e7JAM)ej6k{l=59rUO%2h&guD*e}yx4^W2?ItI|LD2qQ)B+=dD2SE_xFg!RHJHup8z4U4)srvO(?b>g z>Ycs_w$I9OJ?*uJes}1voljyqQ}g14ilMi%DqiI0%-(tLn4;7BC5;aSjH(-`vOS3< z>S2uA*two>Tyr-3n8W6#CghbFv@zxVljC-l?uQ<7#qcw8!JyrEYEuBQTx;`cV%6i_ zqX020u7wt`tDLloee(kpAlsI@#vrZfy@Y&4ecBv0-d06zV-qq^+h`Vv%gbl#uXkG8 z*mn8tw9h#S+89ndC59K3H8CwUB+&(wi4y{Wt88WLfjT1NQ9t#M@iopzk&ymKsvi1c za&*S=+cRPkjP_)dRo{2{OASNj)PamKim%dR{$Uoz(196&O1c&Xm=WX&+8^^0Q$$y# z^NeaV+(l3V&gW9rygTqZ!Y%Nll~phGn@>gm<&D&0EMjEy`g)%0t8;Uv7|ZOAq^j#m zD2*mAsP}Q#_9+j4K`!j=Isg;1s)s}pk-S3zbTfc(JUb6)sLA_+&nmdVOSgvql(c{* z84BzKeHrBo>G1PiLF8(*n@o}WfUce&bfI~YbVyE!jw>`oiHF!i?yvm&^%kVn`*_*Y z!CFP1E2N=;-1~Xcp#ivg!Nxy40lRE3pRX>K?C;_|;yQo`Ss_PJrl^ot{ersv#Q>8_ zsHY+^YI4u?**PScT#xxe%7|_C&mAjFT!)G1`(a~e4*;!XxuD93rru7JdV((H&OZ_~ z9TYAdk9Zh8HxcRHvn(u7_G6yWnZFxVdgddsOUD&QQto*Jm0FF5{))erX_DHcD@vuR z?2w#3Z+JW>BGr5*5}4uYJ{qPuu3V$vpD5MMtaDz0ntJqD7xKO|Er6jMeFtZESiy|p zw;w4L7yBo#+9X<8037rQ0>m(X;!NvJy@d9OuiTc*L_Ei7U@85F@2cj9_DTae08f)8 zHYKQIY$RkGqH?H5E5|!6Cxz-9Ah0jWku^tLj8jsXF?||-qIMo?*iBqKvVw0KGn~mC zKr$>J0dTbwxJ%v63Rf1IK7_iY)r*+sh3f} z>wap_aMaB()Sj<%Q{^jE)*^p(P?QSvM`pV@NVvVU}>%raXEn-!xMY4<_Ka&?V*7a1=8}6s}hz zW=!gEN|q`vB-$`QbWsEm_XI$z8ffgiW~h@l)ElZybh!RnOvt{ZdsqvkjDK{6?gifR z!&V$=$Lf1*?tt>ympAuW?{3GK z)n~a&(UB&($S+5x?coB_d*j>oAy2-pw*J7IAcp!9Ldn*K&7hx3XEEiVn4TT}Q@)Xo z81(Clg6Eh}wsHICf5R7SJkBK zNRv_i3Z?%caA~QsH%cX;*_&OPE$8soZ~RkCQFC3wMPF`U7~HGkSH9bsUN(4m9pUM- z!0dMh$xI?Rvco>u!8&8R4ENRzvJeE0>E;RJ`=@V)HyL*8S5w5(qaN!nE1B_-DD?}M zs@PO6Mr=_y&2HW>#!+Hbd3`K;{iN7hTx<_(2uUaX!L?m+&{B3&h^yLO|1?}t3vns9 zQEMs@OE@{LOIR+;wuf@G;IKwH%3+!!1Lw1CbaWnNoa`JT+wl}{MLjBkWF)o;X^BUV zgvMhP(>vlsK|9qzrl1R0$Xewv1wWh2jyFfwNDn%HY$k)8Rq4=R9oosi-IcR>rX2Z3 zZ40F{)$ic(@;}|Le><{q-`0bXOuD^g@IJIR;~LJqunAZ-yB`iF@K<~KE1G)f(ryWfQ5|-s>YCJ;GB$uE zYT4C&=Eo%~LBDsRKVWz7c@aoN7sxH}ZZ0^=oYge%l{Q-iUuUi2U@psU6K-sM*`5+X z+|XbBx6pM)PINn4Vf$xC^(-U_bXG;ALKs~n(?4}w*}vK~&^6zc%{iruQLqBLDPGlb zul9MiEb;R9Q5$nN4-soKcucNL)~wkgZR(5(;S~yl@X~?_=;w7t_rhnKe)8S*Ud&%m zOwuJtuo0~P;QlgSeMfncyg=Ot_#X2J0^%jcnUaSpxg-}ZDnZz^%U_Cj8RI3*YiQU@ zo6_I^R4e|$8ytd969)7gGe4kqxC*MbAD;#`#qkobdR(Dlf{w+_(3F#z!ScYJ+;C=M zCgg3LKagfsrk<1Wf5V4X>A7KDP-+w_O)C5X=RfUy@#+@{auRs_F#7sQ zig_{NXJ22|(p`P!a@5&;yEJ1pnpI62Me_dN^AFBNI3$uCFOzD2ExB|+wcaBrzU)(K zaC6E7Pp^IV@Nq*TBJBH2J7u1-DJnkkDL@h8tY!OX5@(i`Z8OP$qcLWGfEREtk!F;a zyL|{u>#*yNO51;TLt$n+TewkxPtemSu(QRL_WI2m(mT^i=l5I?R9_9zG)e2sG30hg z)gkdTbMdhyZzI&POQ!`rt<35PCLWqbrzQ!VZp$M zg6iLE*?(Ero{;x zq$ptjNP1x2#zmrDWlE?&oAbZNQwQqG4vjz}BcVEqSz`4F<^NNCh76vRJ|)ZYO7mD- zA?dHmj`F9|7&<8jzr>`NOn1i=SX;Dh@$r}y^YBox2^d3mkA(#|K5ElVPlBChM2B(c zh~x^OiRN0!panuP!69~}KyK>Hk2F?_?_j0qoDQkv9@gLG?{erJ_p@FWo0*~8moL}~;oIGHexYr` zErv?*EO`STkeSPuVK0X&MUus+#|oM9Z*!JW-u+Ucq9^IVs|L(?r&aHc?CooB_(T+K zeHaX4L5eI}MA@NPIrmh#tKhe7SuO%ED8eJFdTYP(`Ir-gs4wu!h-rPjUT3({uHf3I zAN`%T*uE+m;dWHzAHJLYb8=nsBZEq6p7&4aaY_Ya`+(7P=9Kj%mMCsO3=qX4I_^}@ zT!N?ccrcc9CsZnbT8DEdu5c2tzygAM8o`Sv%hFLRM}h2QfUz|c&<10)f_&Dz(u1z9 z8U;42YI3-#uL_b*+Ab!B33<1O`eT3N!*nq z?5+tkG;7K!Y_Wu9hR_!raM6WN1k)x1>}N8RmW~g%;}f;*6$R;cqXGf^<#?6|m}2t6 z|5MIh43p$UCAL{)&VP6k5os3D-QC~u=jojMoJ7bquM2*PGA)`&k0|18RuttgxfEo> zu*ZHPPV*X(8%(3E(#W9*IY1K_UGbKr>9D#WP$Z_W(mS5npFH{X$Hv4=4p*iJPca!r z4^BlT|7{!8H95QQvR26SS6zUQc=>)$T#cN~&e6!4?+W9sqNqTQY$M{T zs8LvXYDW5F2s{U>2~Lt5BZSPb>@jM$5-!dhX&L~NB`;`pG-Hajq?1=A~k=Fnw(!n8BgR zXJ2?eia|)qR!cSZ*%V{xEYS; zGP1KL9N1hJBP2&)jmHRb9`Q9>XT9fwz6lsGW*25 ztNDM3>(9P49$Wmbd>Jx?NR}ChjG#fbRh2is5&m!hn<{bz4BPNSEuL#V9o3U$O^ktF zd$xpCyxAC^7J}fn^3f^>V#*vGK~O*vu=zzE!3blK3fb9)&hzo!*?ce#an6uW2Hn@u zXJo&VGbNy3N?4V50hNYmUd)AfPY&!@Ga5+}@sV~B_h7z8wG zT!#zTnXk{^OabQJ%27fxRMnKAV41ErY7GQz7o`+>41$)r{-TEw(kIi%Vw=aNq*(mi zh**gvA$3qTuC+b%ayI*BV|K6XgwD7c6}qh~xd8MCs3O8&KJGTeiEz3TKLg0fX_8TS z?N!Fr7oOJ-Qg6g3#3o7BHhFxW!Te-$5|M&72s(go$D@lb_v-%H(`TPU5GYgPiNa#$ z#ie{2rX<#sk00(jK;ghAv!e`%MNl(QDgeI`ofU|zj>wfkKgue8gegfem4+PABOv(0 zxMcB9r{iTPnfQH!es`1-6j;2nR(fP z45Y^+vCrcB%`DEeZJX9*qK~^&OLCa$Aadd8(0N&PafrR8VHLpVn|b6(jAA0MBv;5` z@jR{vRz=&Lc>$EgPgB-}A!UlWyoABq6Ed=^{j!(5B!1M%hMJ7r^k4$UdytZB$f+DU zQG3+eRSaaYyWG0eZPSBGcQR#E1xS5qJPDkNzOx_BX>j$~;1J|J^xioY$H=`vy!d?a$^AA0k5j%$m z%~p!_)ccS@ScLLe_q04;JozJr?s6o5fsmm6e}sw3sa?(D6-o#|m^xfztX2ECn()fL zy-P4`B^(o8QtxTXed-|%1-VKDs!09<^u)_4rigsv_vL8GTUJc3w|m@*1r@M+>ip0k z0Qu|!0N~%4IdBLG2IJ^FWX=x)V+`&$BRMYR?n0ZFN6SqmZ|J0IPVj* z<*3Dh~9LVY%JQcotq(tx$028yv;|>p*-Z`Y?LGO*_igd&$V|w7}o;ki0hI z)BnuHZ|&c`)%cRMOx z!2QXquWkxHbTYDdEd-Q%Xdy%{tbH48vb50Aiqv780b!^zHq>tB3jlJf{4oHoTwL=7 zNjZRkflhV2cXy&P?>NmrNZSG#G#fp%L(JUY`fR;VLCrpzGAp7pM@qYy6iG22F9ZTU z4 zEyJtDK46R@WEa9JVeF+vyFCp#E$G96D!T`6Ujx2lLeCOSyl@D3ZDU0z`u>a$y8OO% z>hn%;1u=k#rerljp00kT{*Mj6tVkbD?9EvM`$&Avj?mcnpp`2>Rvj1`ak6Gn)-7+TN+vZ z1hdRJ4Js^>FduTpRp>yu6VEb*m$QvEMUt9=1v03kUKIQ@NFfWGMCZR)?R^}=I_Pzq(!}bD~_0yx{#XmUOAl()<5?0S zq&O<@KHlL4D5e5pmvOb;R4g}s%3?MJ#>5LMx5s66lvyzX^w2?=!oD~TV=1e0yyR;p zZ8N{`cK~8%Z%LDa_mhBwKzOMlQYVxopH<6|HVb(|VG*czG1woL@buqtH5}w^g@$ls zu68q3P)J?nS{k413?m&;L1ZkedZex0$8N(?!hR_WMpBL&AyI zYeAO4c{A3Qi{gLZNb}N{hy%0{K??4v)Cdb)uAt4sKdN-M_{UkV!Ei#S|-+y@E#?IpTZIh&`QvW~#qxruE^)FxZo7mL9<3iN{=2wi3 z^vxUadkJZrm>ts#$`0SpiQ)_vPj&tr%`HL4{oC3yR_JR2lnm*?w2SOI6UerDdG{vT zHxOmA2zLw;yYgMiSIiR=75s*PbPf8D$wU*#r>n`Wet9fbV-=veZSVrBV9|XM*w}}h z;FQ^p@AGUeMoyTMdnfKcu8=4v5Yu+;3ne**Hr;*aQyT6m3DZCz)p*aR!UazH1miMc zIm|&|`V|+|yY4yi!|?TYTF&_>Iza~UNDRt8gg>Po3lNVxb+UlO<$mBgi4r+UB<%G? zW3MY8w$k!7Mdaw8JUokt1i*TM9qA5#l80)DjIlRjQ;&#UzahWBIQ~zL4|jbm$ny@Z z7uo{>9kfYW172Bx2|T5HpQ;$BE72m{A(ETu>#aFT z3$BQ7T;W8#z`{y`z^-xj$=X?_Psxt2D&DXn^^51M+ZyPJiFWpc0S51yw+5c6W^9n! zK+f;s$pE56%zp}9GRajtd|2D>srq0xx4WgdBTsAmPBDzQ(cy~4@l1i-^XJ+eHHPuB z$W;9;A*jm}qqFA(MZqVIOvoBFEXVsf$b9sC#C&3?`?$?d*X?sZwoFY4j;Wu$OX0Qx zq4N(hqk0^6Kw*;$O(T<#584q1q5f5mmY{^NepStihZQQ)4y9!=e^TZ;*EjeakdltS2KY5*J&vElZ;<;&X` z7q1Qp(|1$>4ZZ&s*6+U;5|9*xY+v_OwbG0pN$zBidir9DUHavyAcyc|O24mMf8Liu zYwKX&r7%&|cepo0M~zpR!56?ae*e2Nv1hIn$|F-lho?86v2y16;B)(E8<1OIDu-&p zGE^9_a++=L2F3m=iaya)GY&lVcpu~CEU819u`09j)#H~Tr+~kecSnr}+1Wf+&UDMa zQ#628DaMZT=C|N)k=H)={L2Hr)Ei#37>DnN zZR8%+EFOOEwS=&9Hut*F$0r{!xm&p}n%|K;G!bxYVr@s21W-k`oaD%e z8fd4o%JFuKg4wj_qN_nxcVBi{Oj|>TnoC~+Q=;s~Aj)6)g`Z58sq8?SC?Frma|!t& zZIH^jD228r5-mZ35(#rCh+;4NNCc&tcfM=GsZ|7w^t=->s}O~0O6z45|CyP zhm4I9zqo6QFFUz|NJ*POB44NcSt|&ktEd0#pGc- z@OWaz7VOPQ%HCN|4Po`6oNnug!F$61l((D(`JFsR_LYtY+8arRTZ5(fBsT7_5|Z;j zxi8IaASHQyg}X1UH&lS+AJ%b;LV+>TeKF4Z`^)S#SQaY?4KmVXuiIoe#dmM_5yct@EBvnac10%cAbU}4N3 z$j*IMMNi8K3%QE`$}T{kA`gRccIGyD7Pl8T1oAO-gIi=xTkUrFR0CElgqVTOqxl_N zSfXYFdy-a79?W;zrBVN*!XX7G7%W)8n^)a-&JyxUl7SOXaZt)=5TD+FtMs3M<1jxg z{Be5d?LX)AT{5fs7buZW2qeG}t!WMIbcsb9hqFyu=JS%eLXi`YBij=n3qUYZyTtdnaUb+zvDnj!ad+5sUaVSql9$+T}{_UY} z?TYL&eV2ykg;>}&;Wo)*jB8jM~^eCx3wT{w*Ovxb@OejdgUVipC z#85fDFREw|JI_Sgh?kj@!HW@#$9Fs7O&5PX1KmS|P(fScaNtr!n%^W%{h&Y354(Vz zKW7v?zF?z+@>u@nGl(R)^1uuQ`>=RQ-jz;m{loHbJH(T5{Sy{9r(2~3PMKuvd$L*A z|LW6wN>Y&j_MS1Wq@$yJ(khkzQUw*zedsoJ4|B)~v2Q@NxRv4Z`FHdELclLLq$bx_ zUt;2)<#&iL!NLx9s|f#diN5pfBnzRL78AL8NL_pa@X!g&?>drnxigpozHG0tpc=c>UgvT3O@IpCT=fxxWB z4RzNxW0?wOrK>QIE=+L?w!X&fF#68q<+uQHTEf`Ziif?9j#4gpMly)xhhK??uE7V7CNg*TR*3lURvq zjHwqKdq1(b8FZm!x$LHa(Q9af$NDFcY4P&yc&CY~nVu*=oL_eMP;pAHBkr@sHhv4e zo|4OSYQV`!)u1Ru2`2x=tf(m!!jUbS%UuN^7rh2r899c(q~%3q)b{oN&L18NLi+&) z=L!bXbf*E_^9&YXSV|V42bSaP&3CNP9*1&(2vevggeGfB0AjiN%lCO(;-Y5+uJI{e zv5EExuNZNYPvyD*uaETKK%vU2uwU#GLsdaj?Rzf@$70_ttY|sx|8dCX3#e+&WB^{V zKnINxbLRn)eD#{1fa});?F#~R?qcnF^(yur6+Zu8?hP-TaboHjsF?-wnPKsuuIt9T zX?J-eL{mOIE@_8TnG$#wE}$LueDEB?&2s*>*7}w$Mo7xhC0OCxx5CTr9DYGud5x?c zA7C*7`uHe()d@)2ly&Hn2t+wdb##{5hsUg>aR&jIH@U;te81$42rq|WHL15g>KdDN zKs{6J!lBOkVuD|-(a{aV2f^C3N(PkNi5dN8<5VWxGCx^+9gjQH?q7DM+?z)J)diMC z8MsfeQ`5fzUVX|(P3ZRvl0Nmd{Jd!M4haO{cgw!7Z%AwH$$-*Z2r#$*HjxceDxh)Q zSA%Cck^+xjq(z@6M`jM{|SK{C^;+mNxFXC;yo*9?zH3a8AkQBI~R#q0_3tb z#&*;elU$=4Bl#!`AUw$=LYv+s6>9)z#rfzzt5Y2CC(<7t6cQg}kiuEDqYUU{a;Ctn zlKg-Y5CJ5<3RN6(uGcT0oEHEkh9{S&@mOYXGp}u=s)-~AAk|p6A7}GTzptH&{>k_c z)+SWB@$5TuWyuoMCD5R1YLXJZyc-6;F+LB-28KBHT<8fH(O1#q-s=f#Pmq7y#TDlW z2yF2&tY?EZkw8Gk-`vT*a9P(8sVR6E0Fu}UqN9jmy50S+n1KihMZmRJ@4UDx4TIB*vzxU(@{@&Wf(@s&~kJw zAqa;O{dgLR0E7xaA}vAWy7Xi5v>elSd4mV3IG2)%rF#ng#5a3aoDTalYhZRza*4FX zN+^Oyid78UDd0V`JX48o=me1g=FLCJE^0NcXk(Qw8n6;{f2?po88LSVy$ zWf2dkXP+aGqVX7?p^V$I0i_m2NgP1cyt^gCmVvuSbh*dVoj@^eTHOSOS7)%ynti&s z>cM|S^z_1hAjwz+Wgp=2P6I~Ks_l!2jjsx_Y>y`?6;mx8@LC*)IH{PQ&28Y~a2 z)62$x_91uwgai6)k0A;1>(3XN_P%ek>#xuKy(D|@jq}#ba-$&WeUR9%FC};VBC9o_ z`ceoOz-)uhb?;!2{>$Wqr-|RFDxaI{?OGcDL)^);m^G8DF*cG*#5B=s z+OmtpZEQQ~tbSpSiWVAE_^S>KHH_M@BmAG*j^fh*fV}>tH{8w>nOUO%5D5Un`qeW( ze8dH30JmHwch#Mf9&=N;!qn# z)coJ1UTdiXO6YM1VW5-SW|4Pj5+^_#6fTa15dYFU$Ih1tBkdoS#(wf>F#!mY&Ks(XMn|}}=i)wZ zKOX@F)3ePe{l&kAl5lcZ|1lc+&p+6CAYw*D5LEWFLuQbAzXGp$K7B8=1x2(aXcV5; z(6&ZuzPG}ab#D>zxA%K=S2RW{sY5ERKD(jg4Wq;{FhCk<5Of>o-`|h`P02Z;$+p|= z0SJg7*+}c2HvtqSoJ~T*I+=wme(3PFxnq7+`E_8~bg20JO25!Mo2FikoPZgDdqq(d zngTXERGB`j09mV`+ZtX59{V1v&)a{!_8kgK)NT51<0OlGumM@~8Mifi2;|4gFuYZ6 zf{>h1+5J<|tI{)HrJn-LqStY0(K&GATGlfDBJs5^)BT@WA5~h_P-PT1-9DmTl3`W| zD}SF+&bbzO?H+eEK`vP~FfXQ(jB{Wo4|E5X-1p{M#g`Bqd`ADxO}@1S_*6*F5_Dhb z%u!QF5$G`GBj)z=WTw1-dpQ2{JtDo0Ud>H z+8sOqcHe4Ku_1I=$yaO3#g0Br2BC0NTXhzUY!0N6d3cxivqn+`!h0cdXN(&?4 zip`2O(+N;{S484hBD^>O7JIe?C2AoKh+eN$jGZdCQt)QXN#`N()zgop*|0+cq8L!l zolB4T%D)Qolug}+z|UDBnpoyJAGc?5gs+xh?*w_feikW;W_`)mg@2#Obj&>M1mw0U zoE%{LP2KC}mR7{~Q2`&M{t&+0(KEJ034di0;l8)gqz?j@xqSXML^%ehs{o*{X7sM9!*ghb`V%b+COyKtwzMnw|L}t4H7Z!c$R- z0Mzu4ENNry%PS2o=O9|>`bLZF=^Ao$)|gk)n~`V0{jxyQ8rQz6OBR&GklqS8qJg6Q zKj2t<;>tGiF4BYD@_l!no9D3%!CMRQS-C(Sh4zzC(m`T*;^=cmb&ET;eP|BHYwI<3 zM*5s4-^E8|2mpB4{y+jZlEH&fx^&S`c7J#<-pVfprV3sIeTX=E-GOv^D%eEHB&fJ3 zm~0Uxd)A?!Meefff)U{SefebdzuDDe@RPP)i+8`pi}dXD0V` zFXT9`@k{UFQzqJx5esN;h>qNks0%uPVPRjpAlZke1+uq+2ZzGmUSm?evP@hP-s%Bf zi7UZp7BWmezimrgOzoJgJag1;Qc>4!gsyJTdxmg5_U4WyEOb~)^uGoEvx5JRrK^mp z;``bcM7og>5CmyS>Fx&U4hccJyStGNNokRmPU-G$=`QJ%_uT*Q{mNq9HD_kd*?T`V zV8E?kI~*3R2ge~=qK_CJegC;Oq~gA6BOKaB9#e}~zS2XI8)aS0aLZMG!W?AQPMjw2 z^4Wo-rlCV$$^EGlKcDt0Z9avSUBO1DlUM4DK-I{Nl|$tAd;tNY+VS6GOqKTR2YU(g5M?XRQ9&R3w!nAYHe z)8utXu#HlIB>7k90JSyv;WPU&m2fT^_$v$*CME4u;pGs+x3k4_8PWP5c{Wx8bq()i zOh+GANTWGWAmc7Kw$U8^Z^O8{e~g!%3~EGY@d$T!qmjJ1OJMPOMh9Xp`3ZvLMnkKaEAq_!PTwNtNfJ2)tvC0b08nZiqO|M1_2O{inO z2y1u66Y9U2eKLQ;$G`}A8&`_eF}DZ>2M0gb*dFN&`#$H0s$J1_iPWS1yi5gk?F_9V z@Bhd7&b~0j<+ZAn$?&l!qdg==(vpY^`K2XS1vxjn;K3C@T!R z-Sls~Tb5TAN$HEIb`f@SImY+{$I4;(;-g6$JPdmj?z9^4+ufQB<@z+FnqDP2LeS=+zK!_A`JlIp0|6i_x&!!FabxowT^$sYo^9AmH54tK_y3(zF$3j_A)}|LnFXdkaycZhrukoTL zFvs-$)19C43qUcXZD3ZOe<5@{x+>cGm48j44jCPXco6Y2cvU=5R^h_^UDxqzspg|= zwzE-NCqe6mw=jMKoMua&!yFv-e@gk)jLc@rAca6^!MwK|uJ-5j$ti2X#Z1_4rfm6j z3LQyk@SGu-o)#nGm;o+CkQrCbWhG2kcoomaw$UF?3F?*^wCx0~BOZVx_Nq&??8xF# z7`xAYNv^q{yE~Cu2?1&DqSvRn(m8fiD(K=EeHG(UU?4!1SD0P~0|5SJD{gw><{lX{ zCQpgKp1~sZ)30RXhSRR(LR|y3)u5Lnufrs$%0`=!K1F-jQLn z{*IB~3&*6`{31X1=xG3qDa>ylmp^j>=*zeU%P(9^+F>GT#;w=^tm;Pr5MPEw+VMgh-%X((<|wf1B8u#xlEg`*Nu|{BAqi+q*;Pf;FyJ_ z*YwNNRiJ=nUYTO_)a2B|X-2VoL_$@Kmrw>E-T*e@?9A!dgW_f54v*+A4Xv%t>FG3R z(II{9I0sM?EYEUPvNx;jsRSzp{qD8(S*MF7(yxR1VjK!clLmj$kcqhn#?ORBCH5aE zQzdh2^tAzS2j?yU7g&Kxy7c1k)EX6rJZ-TEh!Cr&gd3zQC-s)x!@Fxon;PV>i)C2? zD?Yl*t!q}gD2}&&=3+>F_M>DPpLUoR(QDbvRgpC#wf}+vBdXlz1(@`uuQbb|(SH3& z_$Bwy>u-G~;U*28!0i3&>OHmJ{CiYHf`#v#H%enK>U(@p`-r53nnn z?S(IGt%ma@Nr~i?!OvSyP}KQK$`#^6*QZq4sOPLMlujEx!Ti)Z{X<&R-+A89p4Bnymo2yRnH9#8Qb(nYVErjlgF zDGH2t1fb)UD-R^%o7Gw&3zpgu_}fy5hBPxzqAMdnu%ovOQ&V1H=!4Dz-qDH5u7(R7 zC4-~dSL9qwob9owB|A6YFbTw*yO9dd;~`Wy;3cwq&P)ogyDjappP#Ictf0ykGxx=2 z5BPkXN$Hm7#PYG$Nt$OhIg4zcs|>(qddi<$od1pC9aw~70wv3Nd@3=g+mXy(cT)?h z?*1+66sg<1S%Q;j$zv42xteP8IEyUjQ?V95^|2p*^G=zib`GK#+mRcY;=q?LIF?VA zVya9VVHlX6Vg2nJjZJ&`4Zv@J=InpP?Jq{*LEZ48(_PIYh`Ep{wd6rpzFj5{4YAKD z7fvYYDa2i3>212Hn}`d*;S+?ke6cy*=Chwmtb`|>CxgEfDePT+jXHrjZ^n-OljJwS zzi~>Gm{q=i6&cL>BjYoqIuV8=Hyf5Llj?HK*%INSzB7wY>(jH-)z>31mHGZr4U&{t zIBR}Y&dFpsW|7J9Y{o&?22z1aogfk8A4} zqUvU<{hX~+tuW?`gL<4vyTCriNFwwS{AwBe&0ms(PTaP0()a>iC(>40S7G0G|K9q) zb2BkSDtBzOTRo0UU7Tz@*OKqm`f`lgh!B;{o;eT#i4<2PYPp>!^mr!VFbyj19PP{| zh3Wm&Bj9xSz&ZCp5CI~0uKAaHnIPV0{H`$X9LR1(nbjI)D0d6a=Fh z>X$Y3bILTLbLNzzo{~?(=2Am#UIK$cc-^r7t1E-SRL7}sY)HE}zAAbaGo@e_o@Yma zUug8}9Ii3plky}YKH{m-UgzfrjfLI&wUp;T$9nH@C8hgi(~f}u#_ZD^TI!g*hwt}r zz0e0`zsC?2#N62`-(C2cq_q0p<=U3MV%!?0=8H4s?6PBeK65|X5NUgUHXbY5*o0Bs z@Ao;Z8xNcpuD;W&ni7%UV;JJn>C$f4f36e{UI&JEQYv1Zk<@_aD1m7BQ3+Oc;q<|I;UtoEc)^z#$C?a zOa=bXiLq8>T2h#7gdS=cu>Y0LmQ3Qu91rxa*!Ns@$no7&cE;ERI#&Gdk2}I<)D;L5 zh^pKDD1BkSJ0j|H>GzQk>+Al!YiQ=?tfTUT5|G)?o6dSJ3r%%alHU9Ld-v1+Ll7s& z@Z04LEc(BMYpSyNZ3{|6qXKAnch+auRJ8~O+mwb_O_Zutwo)N#7h8W%ES&2|u^Z5` zy^EXR6XSoZ3_QMCV#u`9Z0-M+_CEoO-b-mq;}>l!hwX9v&JZudz9NNTPVsqLW*967 zyF-vf=I-5HD3OLBwdt>v1xGA(DPe`3;XA}s%icc|fiq)!;DOdHQh#YiO!&6=7T&-h z410>Q0f8CBlW>g=kUrGWO(b(Ok?5MQ-%)f?%d7FJ_c4ZU8P8EWuRRJfCio^)lt^Bz z+(-$upm|5ezkGJnYa$r`?hs1EhfXEIc+@+_(&kiyceTVCxzoi_aC*~MP(()NYqTfa znCG8il~+{4jYO?rA+SRgS@9fX!~5$$Ys#PGBtrtfRUJAE;Qnpq7x1U(1*;nt3&)Fm zv<{E+_Agw%bfmieg}8!!V992_ik9YCG|kqG`~IcZj?*>T%CxFSlsHj~=9eq?h5sJ| zs}vSPnWoKeER*K1&YvS`%t;M^A_TBoL4ZLji=PWIZULBSGJSePu^JM{e;mNO zUaHjGZwusiMWN!Uh!CnA9ht8l2>IB|pp|HiX|`W40S$d|&}*dMUp{YJolzV}%J^0(l zd$T9g6zW&pXzDs-cb>;F)jlkvCp1&D@|Amv$v z!AE-KWXh`dP-+I*9OIt}F&EF*i|cV-Qu%Y;0|805wLo~nVW)&81`m$cpFXJUYv<;$ zJb|&rV@lWS=0yF{E>>6L670sT#!}21udVS*58v8y!li6?J`q2N0M>`W1V5}*u?gh? zk+7tm=ZT7%PeO+)^%7;VD3u3(lCW+_A7?AI{uJ_9!Jmfqaa*0c6fqy5` zNC08pFS0_0uLOHzd7MW3`<;7}WgV?g#XSEB!b`!~>j-OtcLEj{hvB%qTKqc0IRtC_<`Ns_l@uABS_Qql)XS=yF zJ_FP(wtSQ=?jTlyZO*7^TX!o1&~2K0SZYIgDVtKGHq5R$E|JDsAX)6f{;rt7=w$po$W~eE=n_7GuRI zQQ-q0)29nd?5}`5AL(@fgm=Jaz%E^zG~^-18z{&5<(|BX+TY2=xcOQ4GCbb)j22)NoxYsq2X67N6t8v~+H$ zV)C^lO-p$AuJU$BNUjR9n;+ZhyL(hLWj(OP^*$nPk)Rg!#nb8}qc znACLxkWi5&*m5M9&6CBY64Q_!tj~~bTJ|Qh#qwggId5ap0?1yg>pq}9LbT4e z+T_ANGRFn3_|G-80c@eiP6hAL`oiLzZk3cjoqvyiGZa<-spD+4R{%@dj?6$oh5e@Y zO|9E{yfl~nZtKrpERi48@2gW?xCtr~rb(5Q-QO!-bKa7+k0Xbto;6oGPV&D&`sMg&3L0kMjSs_=_7h6BiVR>fuD<+Iv zPge|!t;G_cTycGSsohJJe0@swn`7%BqNj@ZMwGLCy;j*@C=sm%(sG-qAoEiOzYVh{ z)Xjp6had>X9!eWUlgg#uGp`sBef{3Ikx80U;2%*cwHOy0UbKQGK*t59VfyaG<4Qs`W>Dsp; zMN(vloC6y`kkzhya$fRBerSTJISGA>huzctUag4nQJE$i&LH8-tB;`b`+0-lVe+zz z&uVBU0vOCS_=jm?+z>S+6Gw!50Zk)ZQsMEF@rRt=j_Pf0*C;7qBav z#{Estp<{^|Oc2ry!xkJGF4XSA(G1OUPX-l%F=g%0`Ya^z!!&Qv#_cLk%d;Xals$ZI zu_3tzN3bEunuqHL9AQ`p0(P(~587`n+GXiq=NlNpyLE)dyPx4c;5&|-8CWWsknY$Y zTF!0)crp!bj@~XM6X;oSre;(Ta7xa)I`dxmNz<+c8d18u9u}5IRCS}hgFw+kP!?6y zQ5`{zvO@5hIo14=&94Bme)p`BHM|xa4GtgVtTYJWDX!fG9_UOq#YN?RzoA4_o6ERs z7Cf*Be5EXN%Df22UK&NsgoODiHy@dMfsxf+w)4GhLH-vSl9CIYbsWG4rq~e;rma8gNu|P2aSXMbWe*jlgqGj; z7_myqe4=If8b;4ClbDziC4(_m*gYCMb_s^7!WAD*opd5X_9YsE!RiIM$Pi#!5zf< zwGS<04`p@x4i~EOc{h9PGf6bBg}qhG3xs-`PW<$_O;y>?Ml0NU#G^O!so`;uQ0HZ^ zzRApdRRND4{IYbHZ*RD9BY{nV45I?P;mi!rOCZZ4?PN7FnEaQNvRd<0vCeBfLG4fx zSjxp!&UmS{Mqv$1aYEaJreDIA^l?2Ftns%1V#B?tyk*ICN!n4)-2lO-497;_8u3DIV zJo`!79W#y~z$c(xwzto--&u9fL%g)#lxp`Rs}W)e>J`I*A?_l_T+E*&hnJ>pw_%!tf1gnEhMBLKgq5CjN2cV^Nlg(+e~2 zvh=sQ&XGweR}UC(BL2L;KH{<#5x~(2R9a-4Kx?blQ1=73q|!Eie*DM&#VY*Ar?(DD ziVmM@4rXUAYU&mGyy8vW$h&6&IF&o51keZd=dr7XjrG3N9Ri0Ql-S3$cYjsgr-Hfm zRvE=~!@-G?;bSWu{dl;?k^U=+qsIUVK!UTSGuMA zx?l&go4U37M0!3df8UTT>4#tWdM@+oG1*(LPAhDN;?)_0ABUDG=^(V*+Fh+EnPZEA z!^9B(jNMf5>s2LKB1|{Ee|gZE-6BM;1*2SDjf6et%^4_TdM7Z)r0;PkfzS}^hM7NY z*?gZ8DfTG%JK~oCpa=czEg8(Q2U?f~Hr*MPYzi(4{`M&G!8AD=H#;b*2AyC)tJ@>T z?;=X-jVMngLmDQm>mluTI|yV2;Tcw`Wc3tY9dVxFo$0|PYG>PLw`S=9Ov`;t0`H|` zDLlRP<4SmO>>V|bM=z)j8Kt^iEc@hs%W3e!DK#dr_2N8f+uXj{Otq?Bvq-90dPP$A z5~A^VCv9q4yYi$n()UV6S*__E0ZQ$Yz$JYi$`2GWY|$|r>1%HxNSDO-s59kmC?^9Yyw1IJrj{J@>#7 z686t36`}uBrhO(e{I-$zB`bem?2wL0R5`;2Z)Pv`Z=lE|+?9^Fzfkz28wfDf4<2bp zah0i-ft=)4hd_on>=Ji3I3u?ae1mj}pQ_$j7$2F|hSQWhfi_>l97IDXvWlSIIe0jq zciZ~MzB4DI$*PU!l?wFP5lQU+IhWnp`E?dgAbzg8ABWx)qH>U`@JoH!D9x}&K2qK;Demaeeot!smgkBPThCN=f>+%jMN@DP)t5|`SKZdb<< zp7*i@u+9bF1loCPATwT55YdSRU@h(Q@yF-|@)d`vNhZkP(G#rTJf#9y+j#6iCa-Al z6)o>pdOXiNedAe0P@=$iRdiQrl%s?H=)jU-p5dW!_pwNGL5ZsB(5L1^fqciCfPJ5j z>e`dAP3cj;$_txvz46zv`dSV)Kz9v3*$>TFL@X7Au zcw2E33Lw=!fT@v#kH(jtTl1tXdjFPC5qwJnq+ThC>PCRA_7lPteVH6|Lo-3hAQn?r zfR^H{UHQE$gqK%Yae9SX1XcPv(m#tg(_zAh+S}CCVc1w-OEaJ>hJn+gX?Rb7fImAQ z93a^*lJ&9262>f7-@m~8nr=F4S(Kxs23t693aNg~43QYAX#A0qq?Fs1CLduMR~T+8 z?|^?EuUivq{V1^ZV1uq2)JY382cuhQ)rbYJj0EQ>Z@J?=6|4Z13I>0~e^x-MqfKPI zOHbFEWg0QtHQIPRWed`feDl-|EqP34x+tGt=N#?7c{ zagiEIS+7qwe#@q;E$rirH;Ddj`s;yJlHla#z}r493k-RiF~5+$;b^PsJ{~@N%aC;z zkdANbp`2cP-~AVEJ@_B+*ibpfDwhgRtNZKt=}VuSRAioi#a~z%eO?gRsjK6=A-`}; zjRTNl7p+$CO);%CLnx2GojT>sb##3SVjTnG+3Xum*38gw6$HTUK#4z#a2=&id)=3i zBH$m}puCfMm2%{aYt4j8LKL`u2aw{)onhaCw(Hb$t<3JF9P@?oz1Vif z>st%G+KCh)*4!S((_Qj}B`ptWP*-}pWyz-rtfWGcv?xomc((7*jM8D~FNmh+--jqF zpMm4|C|0AG=1T5$+7^2M=o>raBb&p?t#X$lvTY4#bN$zWT^VhSNft6Xvf|aA4{28f zjg0q&y#QcYu-V)G{H{7o_@%fr$ekjz4#Mj$qxoBndd&un1ljX3suHikzD+2L|H`Y* zGE2lCNi$>h0hEb6?@(`!E<%>zce);yjbq zRHQ>hG~d)57_J0={mwtLhV&_7!aG?>jTCabjLjVbv||Q%C%J_VU+2A}Ond?tA4~1h zKyQI;S~sq-&W$VUFlWM2`W>};+%;bMqKz3i7XU-3$?dD-0e{ihBl07Xw?w&}UW7LI zRtg0w=#Z>uW&q`5#;>lxo~3J`kI zI1uy1kVUw(2hAwV_~D~+VUGZ;VNogBFM->8QuT+{=jc(3A{BJ{<)vNs1eV-91RxU5 zeUc5}o|z1Ovz^pRi5UuLMUO$Y{QNIcHb3_T76J-avLTQ*-di?D z7o~~7m{|SicaZ~og8kAOE^4UJw;vT?>E$L)PiA`iN4y`u*v7~%QpIB$NuOM^IxNf+ z!ks3jWH8}LumQQqPF<6JnGw%F`#8^&@0U(Hj*%gn_^zzTR>fx9l;%v0)fz&Xr&a6U z>s4yzhJmxJ5|9F{xz@KX#b5iPK_ z_NtLxl~m9h&D%eRwzbXS^j-nk-ZvA>3c09b<66kb@&y1Po@ z(QWk2#74m7pQ~@dU#7{N4ir{~c7fUCVdqOn7{x-wwn3%Ehp;9OQ~P%3@VLm#*RD?? zBYclFzNNZ}#GG#vr4B!y7@-W4zIseuAO@~c+|~*;vBW(!ciFFfH$nktXwQG@US7a?P|+%QNo~rSlwTcDz>Q(Rh2~9a0dW^zY#Frl^k@dRZ-kr9_gxWTKMZn7if|vnsMEP?>b+_hxM!< zE`G)o+8zAzEouqgwmZ-syygi$gH&*6kTnZ6Tx~Z^ilcCoMvX@A4@QPT^+mfuvMM^x zNGeHM?j_P|)hu9jJ9l4zojvsvauu@K!rd;bpetMVxpbtv=gIi6fPtVWWVo zrBcU1(!Jo(hf;V~8mRC;TwC>+{qu}+@d}z?KYjSO^IKAV%7!9E@Fhr_`z|ly_WqNK z^BZusmVM9BfOYZhMH3(o=L1+twHF#ocl`1V(w0F608vvHI_TK8j3aqB*mu_L=|oU^ z+FZF+F19eJUX-<}O1OC@j^-q>GRs|UNe_fZsI3_7dn11@Y^hak67#`OE+L?!oZZo5 zr9P78^;Qu@-h8buW7Gm#(` z=JQVGk^Y4jl9U8R>y5f-e56p81b}GpXz8oAS)vCcKaO6wi%`AS4QtT;du;pf#~@r) zEPS=NS3Q_P!tu>mt0VRQ2= zJXR+^+i$o28lxZ4F#@X&ceE$#^TZYQ+Iy_Wbw`C?-;S0SJS2BZk1#TqdiFGOyH6R4 zVWMO`G}2TlFLOxtvDBZ5hSWE1^{tJolg72~V-Li$lI3Z%zO(r(qy9ILeB?Lzr~8C& zMc&F5l!p2Xb;Ssm@E3K*8?y3Cn%Yt-K~XD>_f-w9>F9=u4tU>< zB8_La9q!WJ93aFAmGl?#Od*?Lx1Ba7<3#jt%y3?CTSOsl= zkXGJWj_V$t`&y9iMeFa$3bAm~KTK8*Bog$-H_bxW|Ot*`ynPV{&1O59&qFHVS8O(JLq$E52R zPSyz}ZMbrkdXTCHbxi%$HpOPyx&p__av~#NN0NM?P>`eS^>QVSEF(P|dZEPWdht}0U++}&5Q6S3IWU^z`7F^RnDr)J63 zCcF zzl=PU%{H!}R){D6P_!y>n&Caa_K*BSHWRBqo#lF;q#|v4WE2+!i_|D4JE9s1jKH(d zybe}6INry@QY=M5fr}+Hwfwwb#D6Z`-5EUAxT9UTi)%?tBvh(_U(H7X|5P6o@e`GZ zRm4LHSL6Lx{fhE_s9xPED(p<&_g~Dyl;j0rjNu)%F3VApp{u`LmQA`qhielT)@ zJL<9D7ODIqV0(zvkG45+uo4*^tI~ByF@>jPeym#A0PogkklYF;vO8t^m z9yxCK=pzVB@g}POpv6S_$+LFH7{03Vcc}Hty%cDJcsorQKSW}v{Kha* zSxGYI{1%@uk@cEU6GaSAbAi#N8#qMRCzj_U9Tmh-j!oLW3%E~c2probK0*=AzzPkqRq*%5@i)jg=vwehSz`Y6<>_mH{KRPTtXhV6$he0M!5LZV{>S*LU^xB9$B1uvN*~7*@d$_xLon+@6>YK-pVy)% zd-@lF=))~N_irv1!=1`lug_EX*~(Awd|vU7{IE}a1?OTe-Yot}x4#!YNgh6UJYS~@ z8Q{$uH+A9kd@7TyPE~p+-7c4XBc}LG1@Ki4?H-pjan)=1)d}qMeBajD0C~aG^@|A` zv-#i?QTGL%7C*v_>Isff3gs`@_1du(isKRItDib3K{zF1mATQIn)6d)L@Fii;XeA- z?=!@%L{ss}4epn!7$2}D4oZxIcBx2%8> zJK_b7|Jm}dVOu6-E{PgOl8v@xJb+G!`sVW*zMu%DDL^m!V*?@Kngy3%;Yu^eir6DR z|Md|Cz~f=3^VoxCf%v40BB$LTYojR#R^f+WfMUH_@*M^JMp0KYF2+FR!44&i->5<& z6J586rY2`hLYfsr@C#VnF-C1otHlvi&LSVwf-~v@Pnk5d#lq>l%O=fdTvPA3$L^o^ zU&JaH6(VJ;s}|RSy9jv@xTCRkZ0-wop7N~Lm>YS?Hrxq@p(ZHze+#igC^e(e2RAcy zo%_&PM+A}%^R{5ayav5u;u6K~YhS<%=}yjO=x&@N&HAeI@2Q-ElS;#h5=g9buSYIX zMbbcjhR=`z_6D8BLFx`n`O&ZNWPw@Osy8~V@q!OT0P7L`CkSp$q4aNM#Ibi~ff~#) zVJ3UAvpHnIGTZt-y|@^edUhg>U352}}27JAQBNy0d)W*mjvx2|v_t#+rhg z>oAH66mql~7fQ`IAfPd?b!#*gz`9#~EnVp1aT8G(8w=7vEwoevi|I)ij-R zX@qN`oEYb+4;spDw-R^}?7v0}h8)o}U>2n$Tily8G%SV8grEHA3-Y8dbk$~- zHq@M^q1d=*M7gGD`0Jjlk$|k;#n--NgW}*`VupcN#%-hc=-}IhMnbA1s&)|I+hQZ7 z5RVDhS(qkne7LailWLllc*gm*Rwz_F<6AKfO_$dl=|8I)tz5D9dxliq5eUqo!fqy9 zMm_9QPl?vlCkfACtt|PTBrzd3F=uFLV5pUS4|8PEGx2_&eGmJG!7T;?;dXmD{Je8! zj+9vXp`Xr0HDy)lH#SWCiAVm~DREJB{d_(Zf|qc0oO{P6lj*;x?)*yR2h(KYo#TQH z6&srjvOM?Y--c|D~=pC_Q4qBvw(Oy!3$`Woez<{u1#A`H#K0lUJIM!I5;F?HcVryT!qar^ejV`Tn{w@mb*C>nEnw5E+B1n&*|PDT;%A#(SOn$Kh16N zMQIjV*FteP6do%U-UxV1N7@oHTqJ^EF<^fK*(b#3U%-GyLlOUWpBhBpe{zZ*B?s%kQ>7?f4* z5q1Uw{i58X$Xc7&&g6nUcY%tK?ATLN1DZNzOj<<7VMp)>$9tsuf&G}{oc^_o-tOEV z0>u&)-^qu;_Gbp**S>tc$YC`U@KSt*R&(62i_I0b*U6D!C2&;`4DSu4QvuKW1l^_6 zHZ5bB$( zN%9Gaer1Ca_t| z=cHU>a*&BUeYiZ22f?hxTvnp}D!5EWKLy7@j*_Wy^^wvfs)AVm50dQky1wjWCtbel z17ro8Y_%rMNmET=KuqJTN|K?&7V{j0X*+KRu7F0oPGY ztvF9FB9UYt*}HI*t)an9oGmR9Jz1bs=F88>tT=$%i>Y+qV00RE z5A&zeVMhc{3A>-z7wOef%Scsf9(zTzeavdyBQS@Bn+`dx6c)#6w7mLsD$37Vc#27k zPk-*RTkDnuIr2?JVtN1lLnnHS(*d*~9;|C1w9}4QBUtDZ2!wcvic$`UcBR6)KBx+D za4$&cU&Wd1@hC-`Z`H?A(P z?Shx;7kqZ(2m}i6(*o}TY) zhl&PMYMzPe{!qu%Ic}?MCOccBH%Nm^SBA)}8~X=8;rjY0YY-&{iPUwVgt9vo5SMl8 z0%jA)o}DsNzQyUhB6}Y}V{fxyb?HR$ZcA_KovKoKN;l%EeZUIi1HTB#<`7Bvil26c z4~6pUP23xJFno1K-Jlmu!0(Ot;Zj1{?U!XB?5#}mQ_NmnhZ5=HsZm?Sy-Z^1>m7C9 z`Qjt-@MJw`2w=t@1uz_R}75_PV z6=lG08LOo(ovj%WmsCu->OX}kk^H6XNU1#~w9fjBilkOrlCn)1j^Ei;2TQW42~9tc zZe$0MbI$3qjHIo|DR?*N1?#mUAj)IlJ}osGhC$|0H*yUb;U&Js>hGX1+xUobj>|`z zGfn(N$#@|12QcX5-VnJ>h0v7PJKk_GstxkA0gn^LI;c-Zqf@xQ#vTAOLd3CaP)8jc zq6d0))m>oC!2w38EI z?fN{sSIkPrXC)iamkL#1npAO)NT{{=0bt8%WIt(9aukj$nxh>NzJ(_INAJr|&)EDk zyoL_QjBISB6^n}#I)5nu?gQ;_i!TU2wh}d}yecCRw8TbcO7kE zTT=6l%txjIF5L4UN$LdZh|#idJphlJ88X7O3Luh7nve1f>BBF_mG_W>=@@~v#_IGN zu-88yz_@G@i8b_T#)q!{d8=p4{Y@VsVJ-1U$F)o< z4mPECkm_atKiX?1LD}$A)Yo{D-g)t|Hq%cT;9T+~t+XeTf*1fJI|C*K$o%NzGfgPS zbKP|qd~A%UxCueP-vo9A2!u1RTbhwye$u{~{vbTo~bfMa0_xa+#Pr zPp-Cl^k=>dFe>()Gt*8CFoZ_<~)d22;G2%*QLbaO^kC zH)6@$?ij(S!^K#9>Rlyc@er}4DrP-gAWCt*$~Xqnyk=GVcTx~Hx#TU9w>h^(O0AR~ zuxCFDhRzaFN^tc~D`wR~x7djn@}3+ig+;!~;dqGrRHsD~H5NWNM-ca|r-ywn%}c z^ueU9W_;2Naa-kQd&d!ZDgid7FsL{$3{3hX9lscF$vCQWAB?3|1$=#Kn{PhWu7vtk zKW7t3zZZ7!st}k{k=~BW^SCUiDk3}lU4eYk`4SG)LB8d`KG7Q#XHeJIzwE<>v4XYE zAA;BH^NGKQ?q-@SuInC-NhuWz%mjCPXFp>=Yd!C3MVzXh&5-es2RNH5j~u(VvvL+R z0fs+~(dnlo6}4EgwTYiSa~<@d^L-EEm~j04H;rH@!>4%T%}K8PR^9wW4=IyupYFtEGFYvq(2UissU-Nl+@x_8=nQ;$ z;|m9q+k~{z=ayd@s^4_}k7)4jKeYqtq92#t*nv2>ovHpr?WpY(AR_NM_1{#D^HpAX zQ>lbsx34D7FA&vHI;S{-AF2cygx}`r;51qwc_n}LRIcA zgjg6EFARpwjU4!gQRlLM@Y7$P2a@rDT zt+(QUDF=(U%6sHK?CY`38Cd|_8GCu+BYkxdS-}A%2;mmKuq)^AUu6cHO5;ygp-WM+ zp%;7FN1m^5mB{7He31OM&WmXN>KTW)_mFyln^E)jYT(&~!=>_VW4Tp9?uQzvZ=r`s zndj6(`1s=lX>@>_R9JZqGB6x#H{<1HJ}@u-#oBS_yB!#s`AI58M50SvWsCv&^X4&P zfDK;HGkWb1*j3OeuC~cmt~&5pT)6>FTxods;+|<|cT@scNC`%KV@SQ~UN~lz$Nu9k zE9pz~w843tC{AW{DX=tlE51ib;G1~h_PRe8WarPGhD8*CJ3T^xLpn4fAT!7x70dHtb$}b*&ZKj1mQ~!l2g_d{^8#6Oo+m6P|V2-IWcjHOz}L(y5HDqY6+7C$@GC$g8yOdZKtG zgh}r9>lt2f3KqPd zv^dIl0#CyDq3lkxKFOb=O^a*Mdvd-Yx@|i2j-Ab7g{xX(sAB^Oo01%y1~A{rw|Z#o z_k+A7+Hbo!+LS+yt>s1%<T&}!yGcReLofWtPEjl0mpW9!|WTqzSx;c%dxQCUV z4i_zJD7T^nQAmbaqU3l#^Fz#t9O(y{Zj2PV&M@YT6*~%m+t*+(rf9SG9NBzs0=#UX z7^*J9`mH3F$5xiDPMPdleDVCq0ewf#MkSy=Y7m(q6JfA0);QtjferYrUJ%V$>$y5R zV|h$jJn2yB*0uE{799+9-D4LhFjnver%(RBJ))9%sb0j1f*_@kvwQEZuiX;Z^k%&b2e!pO7BH(Jp52BD>qvHrDOfTKe}_v?xE2U)t=?m z$bn#bT*Sm|^>dYaB7p7?0gBQjiO0~fh-{jmr&~iEb$=vo;$_Q<2+-A39E|IUEw4f6eU&D$=2C^`vqT(LwYW_<(Xt5 z26WTgt4P}b5g>0N7NB}C3Z;f+3$>E88nV{H)@z*$n6Bd+*-ZHs@nseXM`F9cgaWqF z(1^`iERJT@mGgeU+BhtO8Ppq%pM6Ee+{aB@EK2w&5fAUbdL?xtgWb5vxCMY5G%G8T zx!mR7YMft$=)VxWbo6ImLEq}iyn7DA*HjQ%`Y-IpQ~jq*SuuP>xeh;LhA#>Oerc3; zSIixb>qbKaSCTfrY@aWjOc;dQx)O;4!mS)%fHf$>g8EC}6X9qBbuu_l5Y zB%=oFV+C*{+i&9oRQy=%-z;zmPp5n*=o-_X)c!27$szpga$>$E2yQ7j7-9#gW?B>i z{t6oapbRf{BkkaO!M2zA_6?3sV}=f1jGfn1_<&PAqDqP+#zyYp7tbS?(@O+EjE8oR z92w45d%vroBHuL`ddTwC&xABANXiCO$QD4${W{itWh6u=_^AhPEfAx%zA$J%vC!y% zc0y3^&u*N43(8e)^!P-!kGl*L>YjL zm1EOXPfn8gB5I|cO{-F0IbIxHolt-&mt2`5z4s1k9;d?^9ionZ6*jmV!TFX1u$YDt zkOBRXH&wcS9|!ahfO_buO508$w4YP;8domrBcFq#Gj>q?)Utxq-i_IJOZJ9fQOFSDI4Je& z74A}G_y|0iWIEc})!_FQ!>+Vs(kWz~aOeHBJBiV6p=2OJIsQ`M*?NS*y*xpqiHZix zZZ>g||6hF(>pG3sN2{>hPG@ZbvLbQ-_IVWV-kW*cD9SSqki z=+>O3)J|X`|F~>y<5*n3Ra1w(A`14{@cNpJC4>}8{dAezh8hvNgwXDv!qC6=o8(v` z;4Ae0x42#Ly-V6rs8pF}?7PFh+k5%HAqPwrS9yy^5(;G5dIw@W+NH=4SP9?`7wTg> z#mF>enzFR`XN@x{;SSpK8&uqY#)&mooe7CYAazalYm+I%^E{z8M=$11H4RZ zQQ(+_01N?Eep5D@QuQU{H!e-vm*QCP8%epxJE>M@^(<2ds(VbaKSz)6@Ccq0M1J#c zaIcb28=@!>@WEZD-T|xx_K3Jk2nr$6$>6 z$I+-pBOK5f1CQF9csT$bjQM)T9OIdbMss0--b&u@u?s=g$XXdF4Myg~S^;Ug^$vJAn{-_P(claRxFgMi7=iX}+P^4hu>3_TOpnIPSiW~@FS(m3l*GPy~4@kuw*Rp+b zV^2b$0av(7ECIr+d^B4ztT7_RV;N>;{du&&Q4HOVaF~JCV-)EK%GhDS5&qr_d6`*S z%X(buP6CKEP&q%wfq1F0I{gh0hdtvW1T@bOG_)7o&zvwquNzSqS*sUU)&a=m_EA$X z36(uz&zx~!BnX?}4J&45Ei_Zn>ez2|nZN%6lFHc@coYqlBsB_IVF{B!xvhbG-QO$6 zHs<1BJr40GCH*ZW*7})sew%ll)ql zI1nG`+~IDjQ;n18@5-3*-AxFfo<)nBO^0z{T);0OV@lZQ$fqLkr9HM3NLNq8YJE4A zTc$`geE?INozWTlexUYVQXs3Y`ssUxj<>#$Y?X22M-9Ryv1x~Jj;y- z!@BChK>9`m{?r3!-k{|IDwxWP0f>#(G_}6&fT{*YO{$P)SSEby!;$0p^y_j6sY}ea z6)TW6PlXx>o*P#~&`v5YhM*l{_ps`HaJAUcnfUAbP9hm*XUB1pR|s*4%e!Wdz!Z?P>s6J%T4rp%0$0%Kg%|PkyaWL!;5$xPY6zF3mMQy!4}8O9P*cs|0}W76$$K zJQM+pcebb(pw#B`$z9PbXL|8MNKFvwd#K#Odc%>T{oCJb-+pI?<$PzD^eW{@0RZ$f zrcP_FdmK2BWstCcHCiUi2Cye(dR)9tF&Od6V91`M09RG5Mlw~bdXQ;WOFQBoXJWGB zT{C76sUG#t!$U*0-r4NWme!Z6$ZrSdO)u<*IHp&_!=AEd zx~xTNgKX5*0ggwJ%^`RBv)PN!dP8&^Dudu4wlMZ8sR}AZlOnY(!{0ue#AEC;q2m-;&UY|G= z?+?d+<9Ea52}Z+Ge*yS%vZq+ZnFNSUc%JjtsoyD#yMFjbcY)2w#?%dh5l4Q$q$Ztt z4xes1@1iq#YA4$#?I3>BwqiqHIvNSuVsUCUj?gPlAjg5g?1#ZRVvsZp`tYRs z{>Ow_9=OzYKSxn7We6ho3jB&zASup=qCk~`qUyLt+*QSJM1V92>Q^bR9f&<&TJI3{ zHs>9Z5Y|b`JZTZRm?QPIHJ-0}gF>Ad22wbe?{q$g9BbfN&?`kAmWTm&jd;ERbx7fG z^+``d_)U26Z%L1W8>1W2<7;bqfyV(VKRrMXgE_ zkf$v%G5i}qxKip508j}4v@)>R0%{gjUBA+Z^?5yIlYDXm1P zI=4xdS8Y;Dr-`Ev&rv^sr=8sI@*M!bq!U~v^J6jLstKb*6-{k0;7S1xtT*)}+U&pL z`oUoVX)dc)Wr1u9#NDn?*2t*zR2;1TAd>&&MD<4rt^zOUfxp2sGbl;@*S}y z%;cK^vWFt(-k*BuVbBC7ivI`XgRcPBV8>cDW%D>7ENZPp5_Kx&W0iqrXUH13_=!4B z@5~?pzCu(+(73;O7eBa`L6m%zmZe9TMxpWx!=Yb8B+n^g5!!VrU5Icp*&ZRj6nAwSZ>8qGzCM{g_(OQzJ4?j5e3UX);M2mr7Mw5l0hCq?8 z0{TQC&TRP*gHmm;ujft`8vugn96@cuFnMYl3kN3VleNaI#Ew}HFyikWdsdk^f zVO|eGi_w(c__BnA13U{|Q=pp<fN@@*#gX$KsXDmLr;OG?*_;h_paiy`qz%M2Lz+#J##k1>7E3Bw%Vm1IZCs6;1e71 zrRdk$SJ>^aUf2YC%QM?Qr6Cv#$V2{`Km$~%3{&`Sq~46Y=RHWJpPI~lzv}qMHxIQP z?Tl@_T82L=pjHy#KjnvuQh-`Gw1>Wp5`aoyCnB5M1MCE=#bL^VBPc+>#f}B(6S>jP z&)*V*V)6?InP}-Caa6IpcJZdYIS_wcYDED2oNTkIE1#URmSsRj}5$9|HPma8F zJZs=u-Ba=1*{^XC;U$OBtT=|wmt=We<_0j@7?1|mY5r~lw%55d1%2aqhSk1Ya_$cHkr^`Mpx<&2gVyl3;ix>M{^31q& zGKwKW5JTff0AK8F1G1gJVcD3mv*!SyYM3%C^nVAkXAmzdS<*{}`TzcXMG#7+`Z}_9 zC9QPEBAu_F0hUtuBV^iNv<}6WkQtKyV8;|R+TFiWIRg@Ojh8DFK^d{Q6=0&bm5fh9G$=UK0NWB*L^DvTipBow-3=&M)r5VaGHLW zBfgb?9s-K@M6FEx&f>t;4xp=n(HtozF-<7&-gi4n6~g`I#XbXoTUpHhtHX<1z1v7C z(0JI5_K$WaQj4AyJjIpX-nRZ$W}caR3Tn#Mu5ydm&lx|~I<^}{s9Lnn9ZuxWc>z{h z4jc_ckt>jTRKX!BQECS=6TW1B$Our5`_`VAF?#FXzy&1<_)USRLnS8*-Z+X-T2~arJMy*A>@I7)1 zzWmm}nXD?i8clEoFeC?u@soFp=5!)T1HUK2yna(sBI4ra4R{|AtZ}Cba6p0~ko`#- z>OPWr$7Z~0I&&9x4Q!;26dS3v$k|1c|0E^aIbPD5J9>u0%Gw7JK)9HVN_>^tich

FM~l?0PbTP9ZOGc-VpLyZ-1au@iSw5=0fjMl|AtJwJn#SHPvNziq3k z(D`cp6&qnJKh2TGX1@S}R9RgHbQuYxdi0({jvz+_#g?LZ-^nxRr%qczqK@o;YB?fxp$k0WUS4`j&~0twgE3Iuro#Nfh_^UZq{>yDimNu(h%W!n z1D9saZ}T`*NfeH^Fh6JPr-LKUW5K26Bo=J1u<2oF*ML$`TGLSn$w!VS(t*$#H~S@^ zF^LqikW;bX0}mZWu-~iR6IpX+lLIgm=dw)IDq&ItBBBBzOxSYLfx0r|t5Nr?<@N-S z8%HHF_6S0|Pk>!ejj}IJkG}Esj1SXc!MAKnU**TZb+g)Tcnc!vyA!erD0)HM4{6T= zjVChf<*Z^SHI?itBCKdv_vx$l&dd+764ZXTNWi>ln;r&l*-57^Hj9>L)L`ah$YlR7 zz-b@SvM&AgTr0UURO%|Oo*8L5+^t*yqi^G_k!ly(vmv}KV)<}JBz{nF;iY(B*%k7a zE20Il@LG^^+8h_Og+d6Uxn8+-fjE5NTgIir%(bSN5zV0*I`V!sjI=n2S4!K-+H zL)WXpBNXTF(?!o%4Hkq%Ya7PKjuve-h^&#pQjmYa8A!ZtueSeLv@B=tLS&8GMgmA@ zgN5pMRUjO(i>y3R?e(kAKKR-RhUn+}ylp=E394LiUlTd6Roy`-FmAzyO)pK7 z7A#2OCt?>S>MAT^>G;l9fEAiMvhkTp3L`w2(RX5L_VQySd^O*({bNdX6!pJP1L>0<6#9?XFVq@T7kN|CB1kS#b6NaM z0jMYh0^$PVQU5yI>`JMDH!57uGJL!r7rNA>YCd@BM|I5C{P{&1O_jyapk5xkX z5?!MzH^eV69B9D8bGF99&y6cUj5jOm#oks47 zU~OO^6$Z%9%BHDp$I0&i1o7|EHpqDDnVaI~{ftPmepq3Dgs-hN!DVi{f7|^0WOlDX zukPpG+g|e->$7Jlq8v;-adufpJu^;y#n|NV5ZuU@BFCAZ{l+hC-ptDT{sN?A@b#1s zrGAhB1;i{o0I)gxZMpGzwo@6Lq=KqPh8wNRboI+Yi+yLZ^NT7(VV4VsKb(#S>Y?Hp|@ZDjk0YEXq7| z;gGaTH^2vK>wPM9l9KEL%yLU5jm}-JL=8j08v1Q3Qi?^!2jm@GjZA3}8@hi-igVTJ zWi!zGjF2dF6})^am0{VTuraJ8O<-gRZ=_|QP)|lhtQ;Kkeb#P^vNd-er~MfWOc|8) zLG~NWsEJ_cn`4y zi0H6-`(ROS;>{xapwSX{CN8VP3o6A+z~C8>$# z=4YydNs;iYWe-7nLjX7bduUGZ&ix7aWEitL5}syY5Y=XNwZS zW3g{gm(tUN{N89u5uDTXl)?aOZbm@3>VGtEWJi<5K z{0dp;Fp7A=|G@Txa`hY}K7RT`8BU}(HMyqrfF$`=&%xMD4&pPA8HhzP`K|M$%V58! zYqzl1@AWTmGZ4^r-CNkvaP#uB9Gpt~NB?Ewae9pV(R${tFf6b#gOj#< z^?c20v1_N%Ihr6pGv_-5b?f4>$^SHyA$J(xh#Q8*ci!~@UhfZr(i?G6POxR%Ad&>9 zS-jpnF)i-lxW9Vv52Ek3y6#y~CmwoIihnc9#M;C%dq{5o)@s>>iSHU^+HqeHmC9;7 zOj#XQp4!=WO0(ZB6Dynu$J-ri+_KqDQmWd0VNCYzQki(ySqL9x_9p?9_P{Q%&+LQ)MhnBLiYT> zqA;AkFr@Z*4^BT_fH*3g@Oy3o2<+Kt`q8(Eh8`P@YmDEqsFVccaFDRJ79BAk8rLPN z8$KdcQit~jhPBQ{jYqwdyhzG4Iim%jqT}TK3P!@hu8tTo9kpwpgK;S(*RGCY0^J1j z>`ntY=rk+h`9J!vz-~i7S{7 z1|q9|rPxfb6C+eBeNlSTZ+C{WrqT}NQ<`ToaF0bu>Sl!|kHkW}yQR5G7>``n5%TN7 z!7G6HHzU7)mJ(AtBQW?s%^E!TfYhph#~)8y?3j{9Iibf`Ay5iLgwNPQ^skA;v# z1EG;aF~6#R+PwpR2&DaWz15$};+=pzrb{chPyZxJBGJ8@{G9iBDbPp?i}JLWd}el* zbuY{vvhC8IPyGSfpyK7rhOLiuhKeZ=_gm}DiRz1ot-i-Dt;1%^s#l0#V5Yh5g|zFB zM6`*o=_4TF&7aINg$X%J+;u0|iM+L<2_Bc=83U>7pnH|T1N+9E@H{S_qQAkEH^jHQ)lIeBg?dK7R_yaEChWfd1j(_me;Zy1(4xK6nqF?``==2?Z$Hrl-H}Cx* zi8oaDL)iXG9RTd=di;%k$aEP!mgPWgXU+5f1lPTlgpClD%2nJZF7Pl(%BOCLY1XeIfjG{K}z5)yncaQ9nN>7!?-#5q$|ZUEVJqT_F`{-8JRuc zs?pcu^~sT<*!rMcHBsgR^p59XhL2!|y}n!5o?wR8p-(tZ<#q&)# z7;I>t3H5NWd>*?RBIKaBvf^^sHjb5?-K4#Ovd(COviD)RRWel+yQL{+11m7;3PTC0 zuvlUn1q>ZW+f@PRfT8>-*k*rB7HR`5zKs75F@M<5|b zTGo@+NR%$16UB%o=j;V)Idmc+ofQShs3rSx3glPHx%tB+!Z!b1_2@eaWE23A@1*nL zcc+VwKPovEl+yoea7-sAL=mhDhvb|rx~_CQc1qUQX~c;o{}F-$ym|sUA<6rkR^^O7h#|Q6 zb&rO0;+qtcpN1IcAqyS`cbI#iilT#gG6Q;UluYivX;Wb+Eut6*Xb2XFsgUCSn!dju zA=S_2kNe!)`_4MK+Uw1b$2pQI`yMB77`7#Ho`3oxS{=;&MI1Gofq$4Ku*|buFAh#7 z4IBNB&5nP^-vm$3|0)T|R0Z>2^#+F>X_G7~;e)$$;$f_K&@L1RBSLvBXu}oO246~$ zBOH|?iWz`71vH$}LvL1wcwa0nK0K#x>me6wvF%Ej<661X7+{;P?=g2kq458mb1nU< zSuFH<0i4<-#VS}tenmjWgF)2e?R6&IG!-WIWd{b`OcSBd z%n^|axw043Us3wUH@sh{mOj#*Y+&y?M)~v5$iNaBfqYfLDjBS;Rh78qjMiY$2Kip| ztw*ETo5$rejpKZylQnK>o+1lz%-1W-jVCcK^UhTmjfjo%iJ-S z1m4LgJV#Xk;o#I_8!dfYn@$V!#+^&pwVyjkIuh>uK-%5>$UC%HMS>eiOkIXz#0!f> zTr5)n@)l_vO2|e8_B~7>3r4DrjaetiGe(jZ(q5422*f%lK%lgeth3kN&s%oXg9!((gn zZB#^K%OUr}jpuOWOTNx-sxMUj+@C~?aE>^hjdC(N`yuB$Vo1!+jwz7kIgL*wsHdn~ z-1=Fn(C%ZgS9_mjD&P|8cq>?nX=qQNmcNSriSJ1Br6m6s60Z4mOj`QPC*#|e+qK)Z zmdkOMn&HgD%Y$nr^2;?3mqQ2Yqp-`Z`|IuI*87yrMbEB_Y4LWw=put}%V$O$G5t^rO16mEnmJ3@iV-EiUj=aWi8J_d7F4EQXTc!0z9!niwd@i}I5SnV_ zTI#aVW3YRFL9OS!YT?v+^v0Uxv0zasbBwt*ZbK`$1i9uM!?X*VPn$R!v0`gD)l+87 zOMB4h>em(9puiPV;A(|211hcAE`Ivsgu%|>3)^wN)Uv93HDl{jK3nsFkPj0ccdvMG zO=bnJYn+*|#j(9H(953uJmICpnk{{4&MArtrGzRT*!DkReHNt#^^cq8oewlqgf|;7RRF5pEEcpJGg>@T-M&UrSyK?puom z29{oVe)7w`CQfGAMuL~t!+hvPlsGq-Bx8Xdk9jemGb~DDDW)oNFw~-*74g{aD2t2C zmV$9C@1=`riT3m{-_Hpt2F{mMh8Mae0cXKO2YgxMjTh7naX+uqxg7iEY@fmRG7#3= zHZ#fm9g>^FZ?@^>Ongr+!nxp3*3f!JFm}Wd(ZopGjxq}tIb^HBMtf0FFIV9fJJHz) z@BN@e^IyhN?kwp=MSY^#GPI7?vM`;}v1=xcE=zO4ZBNIc^@-D2RHugnC!SV;S6rtb zN1a4a{S;MBe@|;t%s;_+*;^M+R$TYu#_`iOugut9saMM3eiD`5-og(qWN+I)hu%P3N>aZj z=CRsIKNSlaN{_isHPG<7-;}Vp&B;}86Qe~8;jp_>Jomh2dGSYr;jhT2DHLpq_^gd$ zHSTN=-$`e6w`PmY^U}3acj=0qex#k)rqORrxdZd@HANlHGQWNX`0bu&Ht7Eq!IAWN z?GLRg=0Ky(@$lW`$wzAbfPY>ZH?7q(`GW1QD!;5)t_~fr7oyeSK+(JXn z=c^xPkLN-&^=MOwEBVTZ7*&;#rEuro7nn{<4%7A@B&ga^Mp#8rXBDZ^=CjSxunp+B zO73C~&HoyZjQtMTviA0Z2qUf3Qv})S*l38KC>mlVT5NpurX`a>p*Giv!CgHZ*Y?Mi zNpV#^m1-G0VTJ^MQG2e9Wx9b;CS-og2PY!|hH~1`_wuBH*3asqO~_N#LC96S-j?+J zB{M{ma^R5UhNa;3xVFW}Pzg&QiR&!S{uh zqS!G_ZZVXwU;UKe*?VWlN`q8CLif2up(ET(_Cj#(67hxyb8ANp}=j>G-k8{gn{ zj8ak~IfGw<;9rGO_#L|pm|cp;Dk{=@pV6jVKX_aG?d!3AG>2p{FU$o_T<*LrbU6Dq zIondJsu)16tu?nq;1dMK7jph5?#F!9+4`H5+crwx%kfVQbP(fwm!;3vcex$1FI%iR zFxiXEx%C?Igs+4Tr1%hLY%Y3*U>-HwnHHy!gO#` z(XCCpf^OvRN1O#>+nM|CX5RhIftaT(dfis9U`bB6T{&BYViSr1rtOlYq3HUDXFUMu)FgF2`u!7eUtb)rSq4+oMSzjy3m3iFsaE9>Uppi=Oozm-jagBIM*KsQT z&mb)v`muOUs$(7KB?u*8mpbExyzPTliIwtL^K^d`f2b!IS#8ID?H=cNL^(*TR7OR) z6U@DgZ7$;vC4+S9su$oB&w_NdQ@h zK&5`VvltZQEdBc74dXSuapB=I`T0D5j;ecR2{r|uZ!gZKxX*UVRJxh<>`ww zFt>USXL?1XQ%N>y+7*uCLk&cj6IW}KgMuXseYVu1%YJYE^>#i9VTEx5!3FArme~(G6v!>Xut-_G8oC7O3hRQq%&B zEWxJM1PEkWDAbTpaWiGfgm|W)7aK0>^LxAfnQ0SyCTrT<=_Yj~>SqUYW#^>wMGn)7 zWw&gu?}-CPc4HFQX^@*3^{{=W#OdJ5KT?xZmjKvZwKB3QX>DR}?O4Z^YgDF;z6v?b zux()6lnU^5L`sDrM*T=@!hX%XLsv--nR=Ry_^a?Z$s?i=TSd}(`kCBX57jGO3Yu5C zG?K0rML=j|R4&gu>~C(-vMImHmHg$PVet?DackN)!X=!f$=2zK&}0(b8^23Q(S|V3|3dE3qaEnl&;)e!y0k z5l7XBI-K;Kpo6Z%+dKKn)?}1My`;Uzk*(WI@4HOvq$iMw?Q%T`M0GXuOLU0f=92`G z>w#8%x7)Mrkwmz;eE7jF7ZH4#NUMYTkd&>>G_QxPIqM`eNJP#%c(Qt%>-M>Z_1MAL zN5_f3nq=P4X+gyWpP<7*&IZHBv@_!3CCwnvsr)H?QDLLThodR zVFwx=v~hoeYoDgvmv9oh?jF@xTID3%U@UCVWD`}o_&TdO32QrWVb0Ow(0xt~0ST8y zmX=lnDoo$EKeCr!(@ON;Mg$+G-}cHx^hfx|n6n<+JbRLeu`rgg&+B;YbD<}gHCMKf zE5}tljnP>1=YiAw{X<*I^}kc&)km#aWH^mEXlCtg4f#Rvh8hxEM9IP8q>4pZ`uIJB z-}$q?`wE9Z>GWBht{3Iwc)L~EQ3C^PvI;Mzb}y`gP#DeUuPTmozy9gzwzjTMON_6+ z&xQE7gI%MVrY=Y`qYsEBg3CW^!L2_?f3=hT%4;`3gIZ<@rIGQ3m(iov%J$HGp~j=} zLSGO})}Zi?@iG-7!)G0cDraa zE2L_oVe2lMKi#!T^#w0f)+_IJ-KXU|YOHK+qip7y6=I8`47jLdW-H$di|J^tW^zC9 zFtxcc!Zu{ZQSl9JMy;Nfz*r3$#7B}9wxb7kw`Ki1O|AAxR98AwhIJ~R3}XrdMmT&DGe`-4#mv}Ntj&6)IZ+~sv%x>Q%{M988oSO8u7`>0o(097H zz;7;f@QUJfcTYehaQHyAcHi^p`C0k&%@!3Qp^4)sGs%9Ieh$g7%F4f2UH)c|cVRVh zHB2S32-0w5r9gi`ckAEu({H%Qwi8Cj`Y6?Kl;=?=*%a^x#|tDD5{nly-^Pae$?te* zxR=QuYW>N5hj#OKFMN{&SCEs->05T@_mJZ4{lB|OxTx$a9Fl)^mx>}YNCFsq6pkC~ z9=vEz@-CB6m&9K8v;4MtnE%uM{ROT*mymBRTlSU-%zO>$1=Zr#jpC5sgN>0UQqqS z^^e2ou+pA#S3ECYcD0GczCgyNyl(5{{)Vk`x24ykd^vf`ez}V~ zaP_q+ylNjFlBMqth4gLYHMN?Cb_C^xKA~rxBoDE{(mnI+v&y4~qjA^U*_F$DXVR9t z7aMD3wh)>gVQ*HD8eqCAWD?5E+V)5>opMBN!*1TIibA!>K|`e39*yHDCogk!#7h~< zZxjA*LLdg$QQkLel}^Z0p)n{{c@7C8-2895NTo`-PZLbWPd-aHtGTJ0hU9Bu?Ek=X z`>pyEQ_V~+XLzf+bC;f9BkF4t?-a+_t5=Mbu~f8Bx%t=)O_~(h&_pA=23o}`E93CA z*b$uh3sE`to+QIgj302%tA2NIwN< zzVqg{(o(8{o3rHSFfooKn@J)YgQ2NbwXy_y=DDZblcfcnC2qA7@u@1_8in0>0aZAO zM)H5u6wfNO2P*I8L`F~&9RkQ{?B~#k1Lh>MJF$pM*POK0pS8=5zGf2gp__flrfB*t zug+>!H?wr@!~DsZ@yttMcx<4)riR37TXKaw=uW~M5Q3phor^Mad{eQ3H9K2l=JzBlf^@%Ilqg&Uh%$+@(*rm#e7v(xDa!6 zxlO+ipVRZ#t7-l7*=au`j^I3UX~MdrW53q4+PT}i6ww^Gj>fG1^KOG2H56trV+|*X z1`-?KRGqFCUt-oxOZZN_*9Z{P)S()Q&#h}0=~wM5yqMy(ao*a(s{ZL)IM7I(|IOfXQ8m2O&yPkSqqnqJyAoRvqFj*3C;&&U)K3zD_fTf@HUZnDH!Q2t>$YReebM$+C7)sXp6`4=k~lE((l+AC z`-Vh`8weE&k7t~G`X)HEBbcr9>1Y=k(JMSs$LG4FdWCB2Qc%4VHKSJ=lmn&egGU@z zw{FLsKxSqrVKPIDN3yKp32!JfLx;h*GAK*iz{R_*zjFQa(m<3_D}VOzeEig&moL9O zXho0Mkw0gkEEG$GkyP{2Myg$MeZuLhIaik|I-^`dgV_z&>%Ae+Fd|GCYlw6f@dXT= zwSdu@kGl|NlSmch8F4CI_<2gDP)~Jj`gXZsr-_%hd7;*K;b+ra09kBo`}kB??KKnT zGaCzy+n2VWYgx7HZSp_~8ghNeeE_dqvxek3f z`$c!p;@5Fn=Q7&@r3#gTGr>9PP7!UOL4w&nY}mp<)Zc$3D1U7h(pqke-Y5tAI}eca zywsn1!fD}|yjG3=SHQ-8sfSQgRL*4G2!Z?nql7T6yEvTI$OY#wz8J5OE4Th9u4vha z5ba*d51Sv8u;sw8W|-R=z-?b-ka*-L!f@yCeQB+9QIolpH zn+7~tH_)jgvidyMjlQn4^&QSgpMDW>LSW8rv?Jjh5*ZRoS+WmZCHpsYe=u}&w7{2j zRA7$D6!8$@uxpZzgM>S=W`q8{L8GUf54Nx&uxSUrTPQM_ z(St5PA#A|S_|L$2elM$mweb6QAw2_@^-lpit08C9ijFJ~CrZ*9JrUxndoYz_F*-O% zRRZw6t&5Mw1P)KXthz$8R0(JW4 zVQ17&(J-q8HdqOPf3sbU`tKrv;E0d9)8{rYfm(+k;FtYx0^kQoRrP=5x@6xQ0@(w4 zM7W4o$hOf}+;B$kze477Aqi{YoaPPnIru9~A`-z~K=!S-Fz4|8vzoIyK|snOOiZ+| z#{Dk`rBf`AIJ^qa1};xrmWiy}FMsCmPnW}$1Dgs`LcRM)EpxM9AJ$;p(XeczI3^x3 zy{RhY!`dDG=OI>RW!Ms3-K}BPp(FN2jzmtw^&?0A^uc#{$Obqy+9E^Fa2Qi51xHt| z2-C7y^StWALDpWsE~c$*`Pfs{sHjR4WzNrvxTWJ4qmWZY)UYI1c4;TaTg58tIUdR3 zd|+*enPDsn5!7eCbL$~5Ix!HebYGq-_EFmm3aW?=ief%*h-H2ALsXOS!uG>QZ!X9_ zI1gEq@70L$f5s|Kxe9)NVlz0yOk^HNZ-fjf21{m+L?}agZi`C~`TzSrALoh(_6Z`kze~{O#ui2Scd6-_atFp22vUBskW@BJw

--}}
-

{{ $title }}

+

{{ clean($title) }}

{{ $btnText }}
diff --git a/resources/views/fo/layouts/footer.blade.php b/resources/views/fo/layouts/footer.blade.php index 8e084c9a..632abffa 100644 --- a/resources/views/fo/layouts/footer.blade.php +++ b/resources/views/fo/layouts/footer.blade.php @@ -9,24 +9,24 @@
{{-- TOP LOGO --}} -
-
+
+
-
+
{{ __('C’est bon d’être Gaulois !') }}
{{-- Bottom Menu Links --}} -
diff --git a/resources/views/components/fo/page-des-40-ans/section1/info-card.blade.php b/resources/views/components/fo/page-des-40-ans/section1/info-card.blade.php index e7c99069..f520731b 100644 --- a/resources/views/components/fo/page-des-40-ans/section1/info-card.blade.php +++ b/resources/views/components/fo/page-des-40-ans/section1/info-card.blade.php @@ -1,41 +1,36 @@ +@props([ + 'isExport' => false, +])
@endsection