From 2e32068d888703b3cf7dfe480eab88685a566786 Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Sun, 8 Oct 2023 11:33:26 +0100 Subject: [PATCH] updating users' profiles to add a picture to their profile --- .../WorkstationsJobsController.php | 829 +++++++++++++----- app/Http/Controllers/userController.php | 111 ++- app/Models/User.php | 2 +- public/user_logos/1696636614.png | Bin 0 -> 2832 bytes public/user_logos/1696759647.jpg | Bin 0 -> 3621 bytes public/user_logos/logoISPT4.0.jpg | Bin 0 -> 48720 bytes resources/views/Admin/index.blade.php | 8 +- resources/views/Admin/profile.blade.php | 277 +++--- .../views/Templates/templateAdmin.blade.php | 38 +- .../Templates/templateWorkstations.blade.php | 18 +- .../projectsClients/articulated_2.blade.php | 198 ++--- .../{index.blade.php => start.blade.php} | 0 routes/web.php | 4 +- 13 files changed, 920 insertions(+), 565 deletions(-) create mode 100644 public/user_logos/1696636614.png create mode 100644 public/user_logos/1696759647.jpg create mode 100644 public/user_logos/logoISPT4.0.jpg rename resources/views/workstations/{index.blade.php => start.blade.php} (100%) diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index ab95f143..5872a37a 100644 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -1,5 +1,364 @@ email; + +// // $equipmentsTodo= DB::select(" +// // WITH equipments_multiple_rows AS ( +// // SELECT +// // e.equipment_id, +// // e.equipment_tag, +// // COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks +// // FROM +// // users u +// // JOIN +// // construction_workstations cw ON u.user_name = cw.name_workstations +// // JOIN +// // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// // JOIN +// // equipments e ON wat.company_projects_id = e.company_projects_id +// // JOIN +// // ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id +// // WHERE +// // u.email = :email +// // AND +// // oet.execution_order = 1 +// // GROUP BY +// // e.equipment_id, +// // e.equipment_tag +// // ), + +// // workstations_multiple_rows AS ( +// // SELECT +// // cw.id_workstations, +// // cw.name_workstations, +// // COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks +// // FROM +// // users u +// // JOIN +// // construction_workstations cw ON u.user_name = cw.name_workstations +// // JOIN +// // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// // WHERE +// // u.email = :email +// // ), + +// // workstations_control_all_tasks AS ( +// // SELECT +// // cew.control_equipment_workstation_id, +// // cew.equipment_id, +// // CASE +// // WHEN cew.id_workstations IS NULL THEN NULL +// // WHEN cew.id_workstations IN ( +// // SELECT wat.id_workstations +// // FROM workstations_association_tasks wat +// // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// // JOIN users u ON u.user_name = cw.name_workstations +// // WHERE u.email = :email +// // ) THEN cew.id_workstations +// // ELSE NULL +// // END AS control_id_workstations, +// // COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, +// // cew.equipment_comments_id, +// // cew.entry_date, +// // cew.departure_date +// // FROM +// // control_equipment_workstation cew +// // WHERE +// // cew.id_workstations IS NULL +// // OR cew.id_workstations IN ( +// // SELECT wat.id_workstations +// // FROM workstations_association_tasks wat +// // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// // JOIN users u ON u.user_name = cw.name_workstations +// // WHERE u.email = :email +// // ) +// // ) + +// // SELECT +// // emr.equipment_id, +// // emr.equipment_tag +// // FROM +// // equipments_multiple_rows emr +// // WHERE +// // ( +// // emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) +// // AND NOT EXISTS ( +// // SELECT 1 +// // FROM workstations_control_all_tasks wc +// // WHERE wc.equipment_id = emr.equipment_id +// // AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows) +// // ) +// // ) +// // OR +// // ( +// // emr.equipment_id IN ( +// // SELECT equipment_id +// // FROM workstations_control_all_tasks +// // WHERE control_id_workstations IS NULL +// // AND entry_date IS NULL +// // AND departure_date IS NULL +// // AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) +// // ) +// // AND NOT EXISTS ( +// // SELECT 1 +// // FROM workstations_control_all_tasks wc +// // WHERE wc.equipment_id = emr.equipment_id +// // AND wc.control_id_workstations IS NOT NULL +// // GROUP BY wc.equipment_id +// // HAVING COUNT(DISTINCT wc.control_id_workstations) > 1 +// // ) +// // ) +// // GROUP BY +// // emr.equipment_id, +// // emr.equipment_tag +// // ORDER BY +// // emr.equipment_id ASC; +// // ", ['email' => $userEmail]); + + +// $equipmentsDone = DB::select(" +// WITH equipments_multiple_rows AS ( +// SELECT +// e.equipment_id, +// e.equipment_tag, +// COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks +// FROM +// users u +// JOIN +// construction_workstations cw ON u.user_name = cw.name_workstations +// JOIN +// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// JOIN +// equipments e ON wat.company_projects_id = e.company_projects_id +// JOIN +// ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id +// WHERE +// u.email = :email +// AND +// oet.execution_order = 1 +// GROUP BY +// e.equipment_id, +// e.equipment_tag +// ), + +// workstations_multiple_rows AS ( +// SELECT +// cw.id_workstations, +// cw.name_workstations, +// COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks +// FROM +// users u +// JOIN +// construction_workstations cw ON u.user_name = cw.name_workstations +// JOIN +// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// WHERE +// u.email = :email +// ), + +// workstations_control_all_tasks AS ( +// SELECT +// cew.control_equipment_workstation_id, +// cew.equipment_id, +// CASE +// WHEN cew.id_workstations IS NULL THEN NULL +// WHEN cew.id_workstations IN ( +// SELECT wat.id_workstations +// FROM workstations_association_tasks wat +// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// JOIN users u ON u.user_name = cw.name_workstations +// WHERE u.email = :email +// ) THEN cew.id_workstations +// ELSE NULL +// END AS control_id_workstations, +// COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, +// cew.equipment_comments_id, +// cew.entry_date, +// cew.departure_date +// FROM +// control_equipment_workstation cew +// WHERE +// cew.id_workstations IS NULL +// OR cew.id_workstations IN ( +// SELECT wat.id_workstations +// FROM workstations_association_tasks wat +// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// JOIN users u ON u.user_name = cw.name_workstations +// WHERE u.email = :email +// ) +// ) + +// SELECT +// emr.equipment_id, +// emr.equipment_tag +// FROM +// equipments_multiple_rows emr +// WHERE +// EXISTS ( +// SELECT 1 +// FROM workstations_control_all_tasks wc +// JOIN workstations_multiple_rows wmr ON wc.control_id_workstations = wmr.id_workstations +// WHERE wc.equipment_id = emr.equipment_id +// AND wc.control_workstation_all_tasks = wmr.all_tasks +// AND wc.entry_date IS NOT NULL +// AND wc.departure_date IS NOT NULL +// AND wc.control_id_workstations IS NOT NULL +// ) +// AND NOT EXISTS ( +// SELECT 1 +// FROM workstations_control_all_tasks wc +// WHERE wc.equipment_id = emr.equipment_id +// AND wc.control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) +// AND wc.control_id_workstations IS NULL +// ) +// GROUP BY +// emr.equipment_id, +// emr.equipment_tag +// ORDER BY +// emr.equipment_id ASC; +// ", ['email' => $userEmail]); + + +// $equipmentsReturned = DB::select(" +// WITH equipments_multiple_rows AS ( +// SELECT +// e.equipment_id, +// e.equipment_tag, +// COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks +// FROM +// users u +// JOIN +// construction_workstations cw ON u.user_name = cw.name_workstations +// JOIN +// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// JOIN +// equipments e ON wat.company_projects_id = e.company_projects_id +// JOIN +// ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id +// WHERE +// u.email = :email +// AND +// oet.execution_order = 1 +// GROUP BY +// e.equipment_id, +// e.equipment_tag +// ), + +// workstations_multiple_rows AS ( +// SELECT +// cw.id_workstations, +// cw.name_workstations, +// COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks +// FROM +// users u +// JOIN +// construction_workstations cw ON u.user_name = cw.name_workstations +// JOIN +// workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations +// WHERE +// u.email = :email +// ), + +// workstations_control_all_tasks AS ( +// SELECT +// cew.control_equipment_workstation_id, +// cew.equipment_id, +// CASE +// WHEN cew.id_workstations IS NULL THEN NULL +// WHEN cew.id_workstations IN ( +// SELECT wat.id_workstations +// FROM workstations_association_tasks wat +// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// JOIN users u ON u.user_name = cw.name_workstations +// WHERE u.email = :email +// ) THEN cew.id_workstations +// ELSE NULL +// END AS control_id_workstations, +// COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, +// cew.equipment_comments_id, +// cew.entry_date, +// cew.departure_date +// FROM +// control_equipment_workstation cew +// WHERE +// cew.id_workstations IS NULL +// OR cew.id_workstations IN ( +// SELECT wat.id_workstations +// FROM workstations_association_tasks wat +// JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id +// JOIN users u ON u.user_name = cw.name_workstations +// WHERE u.email = :email +// ) +// ) + +// SELECT +// emr.equipment_id, +// emr.equipment_tag +// FROM +// equipments_multiple_rows emr +// WHERE +// emr.equipment_id IN ( +// SELECT equipment_id +// FROM workstations_control_all_tasks +// WHERE control_id_workstations IS NULL +// AND entry_date IS NULL +// AND departure_date IS NULL +// AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) +// AND EXISTS ( +// SELECT 1 +// FROM workstations_control_all_tasks wc +// WHERE wc.equipment_id = emr.equipment_id +// AND wc.control_id_workstations IS NOT NULL +// GROUP BY wc.equipment_id +// HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2 +// ) +// ) +// GROUP BY +// emr.equipment_id, +// emr.equipment_tag +// ORDER BY +// emr.equipment_id ASC; +// ", ['email' => $userEmail]); + +// $workstationNameQuery = DB::select(" +// SELECT construction_workstations.nomenclature_workstation +// FROM construction_workstations +// JOIN users +// WHERE construction_workstations.name_workstations = users.user_name +// AND users.email = :email; +// ", ['email' => $userEmail]); + +// $workstationName = $workstationNameQuery[0]->nomenclature_workstation; + +// //Counting of equipments +// // $equipmentsTodoCount = count($equipmentsTodo); +// $equipmentsDoneCount = count($equipmentsDone); +// $equipmentsReturnedCount = count($equipmentsReturned); + +// //Returning values of the queries to workstations layout +// return view('workstations.index', [ +// // 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount, +// 'equipmentsDone' => $equipmentsDone, 'equipmentsDoneCount' => $equipmentsDoneCount, +// 'equipmentsReturned' => $equipmentsReturned, 'equipmentsReturnedCount' => $equipmentsReturnedCount, +// 'workstationName' => $workstationName +// ]); +// } +// } + + + + namespace App\Http\Controllers; use Illuminate\Http\Request; @@ -13,121 +372,7 @@ public function index() { $userEmail = Auth::user()->email; - // $equipmentsTodo= DB::select(" - // WITH equipments_multiple_rows AS ( - // SELECT - // e.equipment_id, - // e.equipment_tag, - // COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks - // FROM - // users u - // JOIN - // construction_workstations cw ON u.user_name = cw.name_workstations - // JOIN - // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations - // JOIN - // equipments e ON wat.company_projects_id = e.company_projects_id - // JOIN - // ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id - // WHERE - // u.email = :email - // AND - // oet.execution_order = 1 - // GROUP BY - // e.equipment_id, - // e.equipment_tag - // ), - - // workstations_multiple_rows AS ( - // SELECT - // cw.id_workstations, - // cw.name_workstations, - // COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks - // FROM - // users u - // JOIN - // construction_workstations cw ON u.user_name = cw.name_workstations - // JOIN - // workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations - // WHERE - // u.email = :email - // ), - - // workstations_control_all_tasks AS ( - // SELECT - // cew.control_equipment_workstation_id, - // cew.equipment_id, - // CASE - // WHEN cew.id_workstations IS NULL THEN NULL - // WHEN cew.id_workstations IN ( - // SELECT wat.id_workstations - // FROM workstations_association_tasks wat - // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id - // JOIN users u ON u.user_name = cw.name_workstations - // WHERE u.email = :email - // ) THEN cew.id_workstations - // ELSE NULL - // END AS control_id_workstations, - // COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, - // cew.equipment_comments_id, - // cew.entry_date, - // cew.departure_date - // FROM - // control_equipment_workstation cew - // WHERE - // cew.id_workstations IS NULL - // OR cew.id_workstations IN ( - // SELECT wat.id_workstations - // FROM workstations_association_tasks wat - // JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id - // JOIN users u ON u.user_name = cw.name_workstations - // WHERE u.email = :email - // ) - // ) - - // SELECT - // emr.equipment_id, - // emr.equipment_tag - // FROM - // equipments_multiple_rows emr - // WHERE - // ( - // emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) - // AND NOT EXISTS ( - // SELECT 1 - // FROM workstations_control_all_tasks wc - // WHERE wc.equipment_id = emr.equipment_id - // AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows) - // ) - // ) - // OR - // ( - // emr.equipment_id IN ( - // SELECT equipment_id - // FROM workstations_control_all_tasks - // WHERE control_id_workstations IS NULL - // AND entry_date IS NULL - // AND departure_date IS NULL - // AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) - // ) - // AND NOT EXISTS ( - // SELECT 1 - // FROM workstations_control_all_tasks wc - // WHERE wc.equipment_id = emr.equipment_id - // AND wc.control_id_workstations IS NOT NULL - // GROUP BY wc.equipment_id - // HAVING COUNT(DISTINCT wc.control_id_workstations) > 1 - // ) - // ) - // GROUP BY - // emr.equipment_id, - // emr.equipment_tag - // ORDER BY - // emr.equipment_id ASC; - // ", ['email' => $userEmail]); - - - $equipmentsDone = DB::select(" + $equipmentsTodo = DB::select(" WITH equipments_multiple_rows AS ( SELECT e.equipment_id, @@ -144,7 +389,7 @@ public function index() JOIN ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id WHERE - u.email = :email + u.email = :email1 AND oet.execution_order = 1 GROUP BY @@ -164,7 +409,7 @@ public function index() JOIN workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations WHERE - u.email = :email + u.email = :email2 ), workstations_control_all_tasks AS ( @@ -178,7 +423,7 @@ public function index() FROM workstations_association_tasks wat JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id JOIN users u ON u.user_name = cw.name_workstations - WHERE u.email = :email + WHERE u.email = :email3 ) THEN cew.id_workstations ELSE NULL END AS control_id_workstations, @@ -195,7 +440,236 @@ public function index() FROM workstations_association_tasks wat JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id JOIN users u ON u.user_name = cw.name_workstations - WHERE u.email = :email + WHERE u.email = :email4 + ) + ) + + SELECT + emr.equipment_id, + emr.equipment_tag + FROM + equipments_multiple_rows emr + WHERE + ( + emr.equipment_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) + AND NOT EXISTS ( + SELECT 1 + FROM workstations_control_all_tasks wc + WHERE wc.equipment_id = emr.equipment_id + AND wc.control_id_workstations IN (SELECT id_workstations FROM workstations_multiple_rows) + ) + ) + OR + ( + emr.equipment_id IN ( + SELECT equipment_id + FROM workstations_control_all_tasks + WHERE control_id_workstations IS NULL + AND entry_date IS NULL + AND departure_date IS NULL + AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) + ) + AND NOT EXISTS ( + SELECT 1 + FROM workstations_control_all_tasks wc + WHERE wc.equipment_id = emr.equipment_id + AND wc.control_id_workstations IS NOT NULL + GROUP BY wc.equipment_id + HAVING COUNT(DISTINCT wc.control_id_workstations) > 1 + ) + ) + GROUP BY + emr.equipment_id, + emr.equipment_tag + ORDER BY + emr.equipment_id ASC; + ", [ + 'email1' => $userEmail, + 'email2' => $userEmail, + 'email3' => $userEmail, + 'email4' => $userEmail + ]); + + + $equipmentsReturned = DB::select(" + WITH equipments_multiple_rows AS ( + SELECT + e.equipment_id, + e.equipment_tag, + COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks + FROM + users u + JOIN + construction_workstations cw ON u.user_name = cw.name_workstations + JOIN + workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations + JOIN + equipments e ON wat.company_projects_id = e.company_projects_id + JOIN + ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id + WHERE + u.email = :email1 + AND + oet.execution_order = 1 + GROUP BY + e.equipment_id, + e.equipment_tag + ), + + workstations_multiple_rows AS ( + SELECT + cw.id_workstations, + cw.name_workstations, + COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks + FROM + users u + JOIN + construction_workstations cw ON u.user_name = cw.name_workstations + JOIN + workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations + WHERE + u.email = :email2 + ), + + workstations_control_all_tasks AS ( + SELECT + cew.control_equipment_workstation_id, + cew.equipment_id, + CASE + WHEN cew.id_workstations IS NULL THEN NULL + WHEN cew.id_workstations IN ( + SELECT wat.id_workstations + FROM workstations_association_tasks wat + JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id + JOIN users u ON u.user_name = cw.name_workstations + WHERE u.email = :email3 + ) THEN cew.id_workstations + ELSE NULL + END AS control_id_workstations, + COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, + cew.equipment_comments_id, + cew.entry_date, + cew.departure_date + FROM + control_equipment_workstation cew + WHERE + cew.id_workstations IS NULL + OR cew.id_workstations IN ( + SELECT wat.id_workstations + FROM workstations_association_tasks wat + JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id + JOIN users u ON u.user_name = cw.name_workstations + WHERE u.email = :email4 + ) + ) + + SELECT + emr.equipment_id, + emr.equipment_tag + FROM + equipments_multiple_rows emr + WHERE + emr.equipment_id IN ( + SELECT equipment_id + FROM workstations_control_all_tasks + WHERE control_id_workstations IS NULL + AND entry_date IS NULL + AND departure_date IS NULL + AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) + AND EXISTS ( + SELECT 1 + FROM workstations_control_all_tasks wc + WHERE wc.equipment_id = emr.equipment_id + AND wc.control_id_workstations IS NOT NULL + GROUP BY wc.equipment_id + HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2 + ) + ) + GROUP BY + emr.equipment_id, + emr.equipment_tag + ORDER BY + emr.equipment_id ASC; + + ", [ + + 'email1' => $userEmail, + 'email2' => $userEmail, + 'email3' => $userEmail, + 'email4' => $userEmail + + ]); + + + $equipmentsDone = DB::select(" + WITH equipments_multiple_rows AS ( + SELECT + e.equipment_id, + e.equipment_tag, + COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks + FROM + users u + JOIN + construction_workstations cw ON u.user_name = cw.name_workstations + JOIN + workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations + JOIN + equipments e ON wat.company_projects_id = e.company_projects_id + JOIN + ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id + WHERE + u.email = :email1 + AND + oet.execution_order = 1 + GROUP BY + e.equipment_id, + e.equipment_tag + ), + + workstations_multiple_rows AS ( + SELECT + cw.id_workstations, + cw.name_workstations, + COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks + FROM + users u + JOIN + construction_workstations cw ON u.user_name = cw.name_workstations + JOIN + workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations + WHERE + u.email = :email2 + ), + + workstations_control_all_tasks AS ( + SELECT + cew.control_equipment_workstation_id, + cew.equipment_id, + CASE + WHEN cew.id_workstations IS NULL THEN NULL + WHEN cew.id_workstations IN ( + SELECT wat.id_workstations + FROM workstations_association_tasks wat + JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id + JOIN users u ON u.user_name = cw.name_workstations + WHERE u.email = :email3 + ) THEN cew.id_workstations + ELSE NULL + END AS control_id_workstations, + COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, + cew.equipment_comments_id, + cew.entry_date, + cew.departure_date + FROM + control_equipment_workstation cew + WHERE + cew.id_workstations IS NULL + OR cew.id_workstations IN ( + SELECT wat.id_workstations + FROM workstations_association_tasks wat + JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id + JOIN users u ON u.user_name = cw.name_workstations + WHERE u.email = :email4 ) ) @@ -227,109 +701,12 @@ public function index() emr.equipment_tag ORDER BY emr.equipment_id ASC; - ", ['email' => $userEmail]); - - - $equipmentsReturned = DB::select(" - WITH equipments_multiple_rows AS ( - SELECT - e.equipment_id, - e.equipment_tag, - COALESCE(MAX(oet.elemental_tasks_id), MAX(oet.further_tasks_id)) AS equipment_all_tasks - FROM - users u - JOIN - construction_workstations cw ON u.user_name = cw.name_workstations - JOIN - workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations - JOIN - equipments e ON wat.company_projects_id = e.company_projects_id - JOIN - ordered_equipment_tasks oet ON e.equipment_id = oet.equipment_id - WHERE - u.email = :email - AND - oet.execution_order = 1 - GROUP BY - e.equipment_id, - e.equipment_tag - ), - - workstations_multiple_rows AS ( - SELECT - cw.id_workstations, - cw.name_workstations, - COALESCE(wat.elemental_tasks_id, wat.further_tasks_id) AS all_tasks - FROM - users u - JOIN - construction_workstations cw ON u.user_name = cw.name_workstations - JOIN - workstations_association_tasks wat ON cw.id_workstations = wat.id_workstations - WHERE - u.email = :email - ), - - workstations_control_all_tasks AS ( - SELECT - cew.control_equipment_workstation_id, - cew.equipment_id, - CASE - WHEN cew.id_workstations IS NULL THEN NULL - WHEN cew.id_workstations IN ( - SELECT wat.id_workstations - FROM workstations_association_tasks wat - JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id - JOIN users u ON u.user_name = cw.name_workstations - WHERE u.email = :email - ) THEN cew.id_workstations - ELSE NULL - END AS control_id_workstations, - COALESCE(cew.elemental_tasks_id, cew.further_tasks_id) AS control_workstation_all_tasks, - cew.equipment_comments_id, - cew.entry_date, - cew.departure_date - FROM - control_equipment_workstation cew - WHERE - cew.id_workstations IS NULL - OR cew.id_workstations IN ( - SELECT wat.id_workstations - FROM workstations_association_tasks wat - JOIN construction_workstations cw ON wat.company_projects_id = cw.company_projects_id - JOIN users u ON u.user_name = cw.name_workstations - WHERE u.email = :email - ) - ) - - SELECT - emr.equipment_id, - emr.equipment_tag - FROM - equipments_multiple_rows emr - WHERE - emr.equipment_id IN ( - SELECT equipment_id - FROM workstations_control_all_tasks - WHERE control_id_workstations IS NULL - AND entry_date IS NULL - AND departure_date IS NULL - AND control_workstation_all_tasks IN (SELECT all_tasks FROM workstations_multiple_rows) - AND EXISTS ( - SELECT 1 - FROM workstations_control_all_tasks wc - WHERE wc.equipment_id = emr.equipment_id - AND wc.control_id_workstations IS NOT NULL - GROUP BY wc.equipment_id - HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2 - ) - ) - GROUP BY - emr.equipment_id, - emr.equipment_tag - ORDER BY - emr.equipment_id ASC; - ", ['email' => $userEmail]); + ", [ + 'email1' => $userEmail, + 'email2' => $userEmail, + 'email3' => $userEmail, + 'email4' => $userEmail + ]); $workstationNameQuery = DB::select(" SELECT construction_workstations.nomenclature_workstation @@ -342,16 +719,16 @@ public function index() $workstationName = $workstationNameQuery[0]->nomenclature_workstation; //Counting of equipments - // $equipmentsTodoCount = count($equipmentsTodo); + $equipmentsTodoCount = count($equipmentsTodo); $equipmentsDoneCount = count($equipmentsDone); $equipmentsReturnedCount = count($equipmentsReturned); //Returning values of the queries to workstations layout - return view('workstations.index', [ - // 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount, + return view('workstations.start', [ + 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount, 'equipmentsDone' => $equipmentsDone, 'equipmentsDoneCount' => $equipmentsDoneCount, 'equipmentsReturned' => $equipmentsReturned, 'equipmentsReturnedCount' => $equipmentsReturnedCount, 'workstationName' => $workstationName ]); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php index d12de3f6..44f291fb 100755 --- a/app/Http/Controllers/userController.php +++ b/app/Http/Controllers/userController.php @@ -5,6 +5,8 @@ use App\Models\TypeUser; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\File; + use Illuminate\Validation\ValidationException; @@ -21,38 +23,55 @@ class userController extends Controller { - public function EditProfile(Request $request){ + public function EditProfile(Request $request) + { + // dd($request); + $messages = [ + 'user_logo.max' => 'O tamanho da imagem não deve ser maior que 70KB.', + ]; - // dump($request); + $request->validate([ + 'user_logo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:70', + 'fullName' => 'required', + 'email' => 'required|email|unique:users,email,' . $request->userID . ',user_id', + 'phone' => 'required', + 'nif' => 'required', + ], $messages); $user = User::find($request->userID); - $user->user_name = $request->fullName; + if ($request->hasFile('user_logo')) { + $imageName = time() . '.' . $request->user_logo->extension(); + + // Verifica se o usuário já tem uma imagem e se é diferente da nova imagem + if ($user->user_logo && $user->user_logo != $imageName) { + // Constrói o caminho completo para o arquivo de imagem existente + $existingImagePath = public_path('user_logos/' . $user->user_logo); + + // Verifica se o arquivo de imagem existente realmente existe no sistema de arquivos + if (File::exists($existingImagePath)) { + // Exclui o arquivo de imagem existente + File::delete($existingImagePath); + } + } + + // Move o novo arquivo de imagem para o diretório + $request->user_logo->move(public_path('user_logos'), $imageName); + + // Atualiza o campo user_logo do usuário com o nome do novo arquivo de imagem + $user->user_logo = $imageName; + } + + $user->user_name = $request->fullName; $user->email = $request->email; $user->user_phone = $request->phone; $user->user_nif = $request->nif; + $user->save(); - // $request->validate([ - // 'name' => 'required', - // 'email' => 'required|email|unique:users,email,' . $user->user_id, - // 'password' => 'nullable|min:8|confirmed', - // 'user_type' => 'required', - // 'user_phone' => 'required', - // 'user_nif' => 'required', - // ]); - - // $user->update([ - // 'name' => $request->get('name'), - // 'email' => $request->get('email'), - // 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password, - // 'user_type' => $request->get('user_type'), - // 'user_phone' => $request->get('user_phone'), - // 'user_nif' => $request->get('user_nif'), - // ]); - - return redirect('/users/listUsers')->with('success', 'Utilizadores atualizado com Sucesso!!'); + return back()->with('success', "Perfil actualizado com sucesso!"); } + public function UserProfile($id) { $user = User::find($id); @@ -109,7 +128,7 @@ public static function authenticateAndRedirect(Request $request) public function listCompanies() { $users = User::with('userType')->where('type_users', '=', 3)->get(); - + return view('Admin.CrudUsers.listCompany', compact('users')); } @@ -117,7 +136,7 @@ public function listCompanies() public function listUsers() { $users = User::with('userType')->where('type_users', '<>', 3)->get(); - + return view('Admin.CrudUsers.listUsers', compact('users')); } @@ -128,36 +147,38 @@ public function show($id) } public function edit($id) - { + { $user = User::findOrFail($id); - + return view('Admin.CrudUsers.editUsers', compact('user')); } public function update(Request $request, User $user) { - dump($request); - // $request->validate([ - // 'name' => 'required', - // 'email' => 'required|email|unique:users,email,' . $user->user_id, - // 'password' => 'nullable|min:8|confirmed', - // 'user_type' => 'required', - // 'user_phone' => 'required', - // 'user_nif' => 'required', - // ]); + // dump($request); - // $user->update([ - // 'name' => $request->get('name'), - // 'email' => $request->get('email'), - // 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password, - // 'user_type' => $request->get('user_type'), - // 'user_phone' => $request->get('user_phone'), - // 'user_nif' => $request->get('user_nif'), - // ]); + $request->validate([ + 'name' => 'required', + 'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id', + 'password' => 'nullable|min:8|confirmed', + 'user_type' => 'required', + 'user_phone' => 'required', + 'user_nif' => 'required', + ]); - // $userUpdate-> + $user->update([ + 'name' => $request->get('name'), + 'email' => $request->get('email'), + 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password, + 'user_type' => $request->get('user_type'), + 'user_phone' => $request->get('user_phone'), + 'user_nif' => $request->get('user_nif'), + ]); - return redirect('/users/listUsers')->with('success', 'Utilizadores atualizado com Sucesso!!'); + $user->save(); + + + return redirect('/users/listUsers')->with('success', 'Utilizador atualizado com Sucesso!!'); } diff --git a/app/Models/User.php b/app/Models/User.php index eadda4d3..45686ddb 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -27,7 +27,7 @@ class User extends Authenticatable * @var array */ - protected $fillable = ['user_name', 'email', 'password', 'user_phone', 'user_nif', 'type_users']; + protected $fillable = ['user_id','user_name', 'email', 'password', 'user_phone', 'user_nif', 'type_users']; /** diff --git a/public/user_logos/1696636614.png b/public/user_logos/1696636614.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f186881cf4df227c567fee794b37eb4717b769 GIT binary patch literal 2832 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�>(I)6a|qW%Q)Rt*;PQcB;(Mb^Lw8Wa2cgh}W` z;omZV-%M<*CpkIbiHB26EGIgw|6}4L2NY-Fx7!_%V92qeRxs@`W~izrvQeBSr~Ro5%`&+`l`8C%G3|5eZJ&UX6=CPUCb z@K=&p)zcingUfFQM3^ucKic90)78Px?(wRsMulXQeAZJ!U`#`NXUP-UoRd8po+|Et z>?el!t{(CB(N185b*sM2WBo#ye(zdF`!u`pHclwBGN&FZ<-Cvb`?0V;6|^G)H{05% z=VneV;&JpZkH&=%;&s}PVzlX%mjg;nt2$Vod9m+vQMI}>rG(YSmyFnUnD#A=NR5@8ikj3wnimg|<~*KU`{p}^#icJ^U?*KQ@NSajdVU#h$oVMq-Pr-TuHh`N1p z_rg?%70IlKiB&gs(hxexOO7GmcP?Qfms-Mtnmy`vo9lPlP10SIb%r-GtIM0m=L<^@ zwm<~X{PQ@J@gNG`37ewJ`3`?zf%CWuq$1~lh*HipgCpUT&o-o0=l4yxm4&?uM!5V^ zgXe~({jFEFU#`>XV9&hv0WZg}Tx&#zKTe`o>JvIiHgkEDm`Ky;>&nP4tE-WIkRKOM ztsb=x{?qhj0CC6H+Z^pUd&;|Yx9dmhY5+V@DC_@gXXYHLwT){Ey%-`d2MbbrQd z4JoGIUVF59NA-g$q$WV({?&GN(Qy!cE>G9(o8iQ6YQ<1vFTpOadBst!d^^YoW;oaL zZa`sv{QxR_WW77I(^ypRWtJz5>e=4zcjXs&ip0aqD|-{9u(w997li+|rPKqPW8>lC7~(eVlHb&laSX86F}~Yy=rZPqT0%$!D)@Y8rpq;o z2Ug(G!P9i1bckqN(v)h%s=8Q23?xz;C2cUIWoYCP4UufUa45UsdD|xq`o#=qih@AF zyLtPJPJ;59*-!Ap#(uj312Lmor2D-4Tp`ayaUDX<(l(b23nzo`5kI>o%5N{ zK}t8=O1?NtRx)pU$=Vy<;9FvWZ?8dCE)}%eyEKe-Hef`TZFFi1l2rriOXG>y5BkEnfml;!3MF{u3+ zeOM)iSDoO>QJ`bf9PXO5o4fdtL0iz|vTYv8vJb!Fv!`(xp9UI*RKqN4LI-I-(BA26 zITP^UvRBaQdo9o|k=_NsKoPvehfH&_;4^dWxAd# zlOJXF<MSoCUG6{(chWS4~FE< zl>~`uhbC{uu68iWw^KGD{k_W`_Hp_pzOa>)BRE}0)EKsyG(#xNzGSv*cnnC0?L!~k zoV&8@*X1ADi*WSXAN_IYP`IPul<0*mlQ4lm*OgiINnZcFJ6iEx)n2>U?)EXj>a5Pn ztOge=aWaCKcUm*i8t&=lHQn{AEg7-g`uh5U;&wxwEj24ESn^wz_82jA=r%rd-31^~pu8 z>YBZ`l_!wnQPm05R5^;1(QuG|Fb(TS>X>(b%y?VveNdAh@KIL#y9(Vu$|$^ctFU3cmEMF@@Q=(0qkE&cR6kux&!$cPc+{HT^QyeD??l?q7VVWs z-x8muALQ))G55`AI+rHyUvY9R)B5%EyQlBc#9f1NcdZRx6Z7&y#j~TNW?km|-{pUA zNpwQ*3F@9rN?XsNY`wJUsGs?}hLXFTtW!T5p?G&4R{Mpjn?brTu*@j?l@(SVsu?rp zMX00H&skY*2PO5=G|F@4dQ(2xDpxg8=Ejf%NPN4|w?$ZYa@fx#fwpowzx7RY;pA?J z!OffOuBJOv!09EN>XoN@Xo&H2-q+V1=? zXfC*Q_H^yg2ZlKLHR)P!h`r-x9AbHX|J>a5PF0bU?r7{+f${OcF`JR6ch2pSJ20azUA5pSpZkP*WEzw4KFQKt~OMZ8r zqD&fcUrk=e*i89ufzM>xT*)rwOFjk!(wpvttOw^Zn%!#sR+6@)Cbes_`jBNWicO zmgrjA%@`>v@!{7r{2-6f7(x3U2p6}`fHrtYmLFiI_43x`<+(Pu$%15YOM24e!zx20 zkS|zJZ%krmrdZ=-?z7y3dFJfs;8rb&JaO3m-~(&^$B)sm9C#p*W#&sSiX-I}{8aQP zDAE}HHb_UHd`HN9T+hBgI-?QDbB`p(4GT-vwHSvtg{w}lP&(JWpu5st0v0spzTXu) zI5$n?gw_L$Om*O6B8Z>Avq(as;Fo{>ACtmDsjk*Qp`^bIb?@lejAFwfr9RZn2vDbq z7&+ne$V`CDF8FPP35qzg4=+UPJ~_)@Fw_C<6kD$^bcfii8OP(%f}`uVDVW4HN#U+5 zk=R!x?!(G@W>h5T@z=PDw-_SuOxxx6+)H0{zTko9KtXcP5I6m)2_Dpt+r4yJnO#`6lB0r{ zJ3JzyHz3_xb-WgiUWcVF+Y+N)9LU^4#^#2Srb(?_FD%Ww^`pNIn!ms)c36%B*gXF| z+TXyM4%x-;Rf8&hcImQZfdYx!FfsuGw7l60rYtWJs8WUl{JoD9jy6T&kaATX4aOLJ jJF_T%N8vU6rEzL<0avU$x5T}kbiIG`{=XryIF=zgVgFArEYRuFf1mT z3`7Ls!p9cbyC$` z-?;1M+=;DPvzFV~*vLH>{N(QXS?*!%%#GY|=6ZXu{YZ`~H9OmWmfQNAxK$&!0e%kt zz3bnP9W~44D_O2rYqqNZOfGk9qis0u=83tS?L+}rFYOtPr9Hc@&u!**=XU1MTuxR( zufx{{TOga&@}3Y>+Dae#-0^kL2l#w-UxVGV=TQECD|M3M1rZn~3uJl~!#>1$DN@?5Vc8mHs41KO>1X zklxk?>8B@#wgBlHK>9o@whfT}El8hgYjT*&Z9jG^Khl&LNFyM9Y%t);Abn{rchs@d z!_t$((vh|Vp5?= z%ALH0+dTlu1WFUczWjcG{(C<6TX;{c`%i4G?YhRV`l~hDIQW>MrFfZ@ervER^?{aXmV z=ks4yxToe{P8`>{gh*J+aB>MP_l8)y0v!;xviZip8bP0-GekJU;VzD?Z_RSJ0W*!?u^_+a_8nQ%I(YLb7bz4+!eWMu9fTM2Dx$WQ8^_y%h|ag zx5zy<_oUp@bI$_2=|#Dh_N^EaT4{06mg`9^i4y}@maHy*t)-EcPIjmK_0W#d^J z&)<02#%ng-yz!2W_icP^cJtKDvo z*nH&XbkpC=HlMoroXwYPzIO9%o7ZiAZ1eM*U)#KS^Cz3PZ_8~vX4~o8&e^ta8?~*x zt+!3urf&GtW!vAh{krX+-2T<=w`{*{`<*+E+i~U&Xvcva%^jm1(;bT)Pv3FPjyLRh z_l{5P_}Y$Jcigda=g!l2UbvIo+1NSWIp6u1ozLF+%AMEl{OHav@BH4*+js5Sb;d4e z*JZnUyX0NbuBY#M>8`i!`pB-Y?7DT=Z;v|WsI!mCA5}X_I?6ff$wyst)LV}F@KIkm z>IX;tVfTr<&)jy~z=3y;3+=)uwRqn~v2OOAf~ z(Vsf{TSx!um}8FFdklR{{}|(#Cm!>XWB%!w&m42hF~2+Z_?CNw_|^G+;PWUaNHHgNykOUJ?FSLANPslzH{7fk3Z%3{l_zp1AwO3r;MbD4+QF6JLJf`%b*^#M@6grcJyw3AOOoF<&MJniMDedx5CPv3U>1*bPpw@$zM^mm^A z_0xa#Y5%~dErAo{E#1=eahLFpKYA|!m~ee_K)|Rwx_tq z+Vhe_e*E0q&O7_O z&UueL@2%&3^ZecCQ|HglfARUBKL0ltTzG+a!QWo+o(q0>;R7#hUYK3@)(gLN(Qy|& z{38FN*IsnP#XB#iE;cWI<;7om=;lN5ht3}Q@`rvA+Jp$mfL;lG`C&UAMnBAX*lQnl zD{H@ln<02 zSN>>aTcuvPs&akxp zk86FBIhNs>mofj|erP*rzrVBDX?0%E`BwM*uG4)_FV}1KUeNnCdm-zyAL#Gwv;CL% zzt5rEW4TZBr|?(uZ{hD4lm=H1ZW>-RjE5f=P7od;yjl2-SP`Eu-aLXwj~jh{{GhQh zey_Ak5~MdsxBpG`Z(j5_w>|=Y#M2+~^+#U#$mJtH`=|#!%6im?t~}vN`O0@addH*1 zN5AFKf0TRjYvtP~&B-e!w<%@i#mZ0AE7TXNKhiGKp0E8tzf6C={=?~I(-%yCG<*2$ zn%Pf{vhgzG7xTva)$`w&J@bv`U6yEFYaeAl+J2vNvST`*bRXg_-7kBP_jK=O|A7A@ z|F(b$-Vkntj||@%oeG4hFT@wcPm6C!E>B*b{B|KM-nBew=`6pHJ~Vx1`h%>N{ljCn zKSp`X#~*vnW1sZcTOL<@+-n}c@%YK(KmLSspYYTt-1@}&6W{ctqn~6x>0h6WJo))g z{`FJDr@a5EXFc_aPyOE0>Q8&?(~p08@bnx1_L9GS^)t3V!+6H^&%~bj(r4azm3r0Z zo`pQ?nrHp-*~+s&_jl;uz2xuidXD~_>#ruRe${h#KG%8f*Pr+B=e_CqCp|xV{`X$c zdBJrr-1EY#Uij-5UHPKVUQ@W{)h|B!#qo=8eo6Z!?|tccFMaMy|M;@m%f9yV(#x-X z#hI^o<|}^lO7)drdDRuKdi$%-diAqj{rkT+{{9=UslVpB*Iw}2YhJhWb;;|#|9au| zpZ*8xAKv_i2fg80Z}`(2oj2b6Chkq2d^7pxH^1e~w_N?!&9}yH{n6VV@wPAhW91*; z`}Tcrf6cY0U;C_o%KcOPPd|Rgqu=rMcQWt%_`9fgz5Soh|L0e{`;>QIb=}5w>2WA<8NcNH2Kk9w- zryrYs?0X--^5ZvsV)Tg{KH2}|^`Bxs^_hRE{mUmlUHtS%K6BY;KKR)KpMBrwsL#FU z^Tg+``vU%jcmFH?ukXH|xc<5?l3#r9m*_9O|I3$t`NLm%_*Xvm)yh}@<%Z@BpZ{9- zYhV8Q@ax~W@ew!P{0;RRKm0fA-+uAU51Rk@vW=Aed4#T`OcZ&dF^*E{_eFm z6E}b8mdY((_;>!_Z~C6{y`TI?_#c0~^{L-K?)%sL;Orl~`G@%*e(*=NAARY^fAiy8 zf8zb*4?lhS&rbT;EB^DM|NQ5lU-9!V+%~%H)?Wm_xa*hC{?!@3dgHGPzyA2`?CsyV z!@lDWzq#tSXZ-d}zoUNl>EDaL|G^&?f86!Qm;CACKfV7>=FV^3W#4tzUAM5WJSgWm z;eJ_lC)$3+wc(}g!RUSj&RzQOC6K&KE!s2DriOFb-k*QqBYXE4>ScRHyn}SSvNkgs zS)lP*cc5gZLaTcpe)-XtE)Ohi&(@WAr2y({1cKzb`1-n(a2B{DDDTioh( z!!Su4=?(EE{n3WA_}NP0h7(3D9b|FAuIB%g=TJdEV`q4WVXf1psS@aFyD@{=m1(_8um{F0lP>Fol6YPXicmKEDst*cYZwBro?l;kj!dcf+XwZ6+|h zmDINdSDv_WblKj$TOHl=Sx-z=?&-&i18dcbs=%71*_soD0EsAkq;>#3_cS~r=Kn&Y zdeffXf5Rzk*weq%XQy-jjcxmgEyD;1#`oVc9HgEGb6NK z-5XFf0cboTD8sViFbd?z4UP=(unH?$KGJx+!|3E*%K!>MBkYLS0A+xlk2Hs^l6A8c zQLbs_QdK#iyMZl7mm9V`)!@0OO)rHH^txpx;>#um{Z zuw(~N#&Vy!R-X1=-VD9y%EEr+%C=GVTp#oqKQStI^$eAeRD~Jx~s` zEsPIb*SdVYahr$MVNagikL|fgG#u4kgcn~5-?znKGrgxstH_adIoROXJ_P(D2MBqf zfPxJUz8*l3!+@-7-Umjx;gIlS(D;0$K5 zJ#l2i3h#s6EtKCIxd*9Yy%u}6{&;c_YFqo~vb}e2pnDk7y7s{~0BKtc;K0IAquJ$o zoLEiou&hI)x~JXNvaM>&v@OHN(fZ{uJ%g8EyZ zYVm?|m&Hqp{jJ8}(=V1_s8Fn!HFJ`0S;hKbm0i@~NwEnEr~PWFIINbY!&+%-)=T|y ztGt-jOVeq)QgoT}!ev$fE2UzmQe15P?^lWiwpyfml~QL=EAG%9! zR2!v*(ybJcG3a4jpAESh=dQ|E0Pm@Ic%%Pj8m7QR`_rNfrdwQ8x%HHbO|IDQaA0cH zqP&`YqqsG@KB#ohr(Y{BnstDdM!9H$>4CCovvS{hYk>V?8O#>oMQN7%ZW~lBgAOXi zX}=8e07d{HrvnzN!vXx)np|_)7pnDYzG^7r>agS0XQidM>>F%p1#lQOW}T&EP-QNi zCRMASaRbw5(lN%CyTiU?61}WDQ-@MxP(k8mv*mVL<=Ir4wE*gT9ucChz?6ct0JGH< zK(seNq>)&&WD#AeBa0TL{LGW>D4d9RGR8Pmb<~13@<_dbLORx~&c<@XXxfZXNV{_v zDw{YjSe`bvr4>Mb;R1%K$*6{E zBb2iwTXkj83nq0mp5*_l>8}7n6{{tR7H&wk7b}iL=%(K@Jy~{q#`b+8jRGG^U>Oh^ zAd_Obx9!iB2SMH-YvX}3#{7W$CFXaZgovlT!)sF)4g zj6j7+w;WCk9&;QpFr-s3=B8C0_vn#S8@KJz91+EFshDTmN*NpB5Zb9T+`LK7oqj98 zkgmC00Sw6$P1zIy>kTWz8K)#QduAG~es{@4W*yBl@lwb$eiXra zK(j>1+iaKWfLZj!2D}1TZ1pgarHb>C1k-&)>rd)6NYK-WA|Q!oCqudu77!$o*glkC z)^d_pDm)SpGOMuF#w5>2J&5rn+@~C91yD-BVm5fV({oZn)nq!_X|gy%S&-OesHu!eM8l z#EVcb?`jeW0Um?ngJzKBvq6^&jalLjk*e#0cw zY^+g#E~j9s6))S zI;e9sdO--76O-|3gpP7o*?=<6fEuK2DN7cF|^!w4YSGKq!S*zC;abi*ZvybU0O0vFTD0!}G8 zo*WlP znJcr+?mQpCR0r$Mh+ZfQ<0UkL*Ycr3=)P{TLp)H*X+-zzu#`EDS;R+;9u8bXK;88u ztJq7!g)p8&ir{sk#HAwAZzW(Qx++kIhiV@zPq4-zVIqWv_A$f{XX93bR)liZb%ofN z0hVano^A>_kCIuXtu=U(P6U+D8l$KmRa zBwbP_p_r+Ma|stfK2Zxw4NHdNM2I<>x8^(}Rv{yB>9heAss6&Fn&40gCtEvig~Lh0 zu%?eww7dwT zX6%u4Q|(1fS0d*`0rEzs-0oJ|N{emOajx8Ix)`U;ic6ubcUU~u?QQ^@jn$NgRs?s1 z0641MS`ySwZJT36UK2(g7z=tqj6dAe=kfRS_o1rH>+FpMR* zGlaqwz<{xE+(!(|H)~#Fm<^idz-;0TGSZDa)I>{lCTS<#5pEKRrdtU#>N#TUVV!D7 z`&2znSiL*0O`<|`x#rjd3`H7MBTvGKg!*zi>xP0x>So*562gIm`fOy!Sk=PyUYG{@ zKuLx`7a$F;tx55?qBp8wBvHPOW4-m(ON_zL;CvP7%hds2t?C4xc}>a@`0^MKYe$uv zoL2$pU<_(Wt1iv>~|#sno8oaOkRwtXWh0 z`m70&Kxrc50h3yknkn2e<+wC9hcV(a%W^dE(jtK~W_xH^^I)M`0iRS&!IkG;p;7jI znqC3a(!N~+C@GY2voq)|`>_@%ysXR%1*V**og<%$i|9yV@e1IUY|!QmM*y`M?^-j)3>lPRFzR1-Cw8XXY4NpDDzE&m+V# z3R-QZT&hM*v=CHyA0bFI7!k@+!dnAtS!MT-W_SIqIK&`t*y9T>7+86|^y8a2~AoS=|Hi^b5T zumv~*iuhQkiYBS9$g1YRXobT|;W)xq02LU>IhLzils01WS|AtAsXav!A>ixKbY_-X zIM?n3iXJs4UaVIOJ`gj5Ovk4bLM&7fwQ*V|%B@=2UlVq-;EvrT-(%|CVs*~-QlHfW zBM=Qp(Ytknm`lXm%Xt)sp%c z$U-8Mr0j5Jc>|&&3&avvRF0lE}M209pSsm~(?(R-Z*yD(LGSw%aN ztFM^@2@X02NQex;3uQZa7bYjbI81Y<#w3Wh6pV(`p!}o-+u1N+1-d`8BXtsX16J&^ zjv2Mnt_shp2sboWBh;(1Kui$AsSPJUPnbd@mKnzwlJ;Z~LQANLR)%C==82>|GaEHl zaIAK(??P$P*XoStsB*=P@rdjMLkBgJ`+n z7zWe#7xGA6wo8?XAT0^mua-k(COJ@b=r3DKp}rL9WHrJ{F{}=GZo%}JWz!Xk$+T8S z0S-O7jig%5ZIOIktWEu>O3A?SQTK~JHz@FGQmGC3Vhz|yirr}m0nD3P@8uED^D=V| z2~}a)uEG{0Idj#L5}$Trz|qLaUe@QSo+XJgS{CTkfssxG4HJ0i4s^N+HhU(_A%0b3 zHNvf0Tgr?pO(+j6j6ZB8kg09SFhH_T#Q~(!1jIIC^>9d3k!K~CLcy69IuuEwl*TIS zy$r7*L0;d6365l8J7`dr2|K!$%$KAIQFGk^v#=a|K_U5(1!RlB#^QiP^#O=G1IAjE zuGjE+TCi3loX5?yXA8L6?Nv2k8LqVJobULGJ=4VM*jJlTnFHG`rbckLH%@BpWHJ~j zeqMFl$ZATH-eLyynUNti$LoW>kY~VQ?Ykv!IJUElna*mk=<0X{s+UcwFGEouPW5R= z=9VQ4^&8NDD$RMSuhQ}iHsRtJNvidVZsU;RtVU=7ZM@9@y3++95CY+f!-un)+a&yP z-(%Zo9Vif_RC5N|1THd-5!@!h->~lM>O`jnAl_kcvDyQtA$CxsuZ_Dyh{%IQ@M8uk z0Kp~HEvRQtiGW5U7zKN^i0N>#VxiDb#d{NjqTG?1_0S>`A~lmVi^G~IrD`awMmPj3 z>&hgxHBz6KV8|4gTPsWnV5Kcm)wqOhnD7AZ)*Wa>%K4D)(-XvP8$g5|j*u2Momh)X zJ4U$X3Lr)RRU540!odXqDCmx1x{0u0L<1w(QZsaG1pArD!hE*^XRFK>FiJpMH5Zk8 zWv&3OO8{Mg>ctLH@RJ!8YN9I*?HOWcb89{Z)(0!8225(Z5?}MnU|&jyRQ*G#HG>5@ z3IL=sBwWaNF#YP>;W@k)F!hBi0gPM4@**N*dS=JcB(lUZ5;^msANZnxixZO@mg7a9 zbUJ>$vKB?EWS(G$st+fv{&c*oYKm8+dsDa(_jMbn;j&oPMU{2rLR3>Yeg;QPvYm}I zgF?naAuJ7=QrMrzl@PB_S5rnQ$}1?-f+UQorK%U_esz}4@^i$2okkl@70e=Gmx76@ zL@gr;RvVNmVkLU4OEe1W4T41_uaBFtJfE!q_LpSV#{JQtZDR=KAUm* zf{!>AyEF6q6{tDQIo<)I9fs4 zz!cMSA||YAo>=I}kc%@uKkqC%l2Yr9^MM8F{bgY?A6o*|f=3vd3}(bA(p!b~PN}dn zYo5#s1#;q~A!O5W+nRJjw2e$cLGS5sPXTs9hH?R&)-@U~%qqYJMp=N^GNAOPBs$1& z+@2$HYOkg|kJ?(71)?i4>-9q+nlP!0%mpBFngu~1O?oz*2?P$z5nX5$#*S>&I{8o& z$QX(92s}`ER2H##4CDlU1#s9;d3KTyxsDJun6!ytzEW!!g)uqysVbUqB+RMfL~WvV z7MZ{U9B<3SoIp%t?4lK{#)XQ|2M1;XX0QT?FBOaPtV-E z2{@lTZxh{_M^&v%<;^NJcCB_SR}``W6d;{NfpM~k19}Tq070LsjCAQ%RH9Wa3t1+j zC)hx?I#oexn6U)Zh{d95R>~44`b`gN8GsFFnQoDIzF}va7Z_SL8K@!xtpFCZC1AbI zm?gSd-4FZbG;hw;hJYxl&|^Yp%l^1BLf-2aq-Y*YZSAjOuLDSSy}wof*PBe6%B(-^ zE{^Psn) z>Qx7>J!|V`i5~U!Zd>ohets4?(V`D|nB#VR7P!h6OS{DT{%lxLP#>6qC~7I_%X*+> zVZvvHSsQLG3ab&ujljiSn7EI?@Y!IGEK7mA-g@>@AI&h# zYj;~nuMpGyS~BJnc033si63FzQVTG2%%r(7sdN_v*WiI$BbUmkMyny^be$9rYO*YKs#1UpFwQ_Bn- z#+y!>!HBNYXt}Tyh`{js8aN`-h2CXNM}*sHTCNX_v9w6`#Zj0e43aX~%$g-|rVcx~kej8}7l$A7ya(<|oeRaHSvP0Qf z+hBdh6$HAXn@fBQe)D-nWV@te|RNe>yf0+TU+Y*6UtxHXmk?b~wsQ_gb(Cg_u zjb@V8z+Gbi*mx^;G@&~NssXL9#W}OQkX2nC=>7bh6fIzGuOnv392M}M3?SUi#}EgqqVuOn*nQLRwsj6 zr8X(m>7mjTO-nL*O+rIDv1_*Ku`w@SnhObR3kCW^Et&vBmotQi^DqDw zTWLJD=RRTvgDO`-Ii_xP^FWeHEUi&)rLa4*dTJ$Gvo9RC;O;!DvVdn}bY;}xz{y?l z@K|aa<>F}0k4zwI)X~|j0x%XB{h*byi_!qAb;8-SQDY#mak6gNaYt)$ZURX`mUZzK zl89u!HJ+pdhsMJJ+3@>mQYPE6J{vEoS%PGZtY4L?C8wBgYaJju14*~CmMJ6>gN^E% zY_?n<9lZtIx5Nl&A`Vee1AnO5@?7c5v)*{3r>Q4M+)fvyrk&HWHRf=9TF{S=$dSPOdJ4CJwyd^Nz8kJaNo06?wK4EPG45=mGf~ zpG0sbQ9dM+bqr078@_@#M$=Zd~wVK6V zMpkNK7wB}A9;bPuVVRdl_;`x8TpFmMYO-Wu^8Bk_XF8`Op# z%nT?h>B06SLtWJI`$im+F<@yCEhCO4ukAKY!D}tsHH%%OC94NmWrt`kt1bdu?W7y} zh)z*@FEUI@UA7x)KaoeZq*M*NNzorhEdSzM^nX=d|xH4o;4U=<`vNB&57)HngO?r{f;~lNzsqVoMRx;KN zhm;65TX({N{@XIoO(~ORbcibZShG2RJ5jwc#u>5KiN}55;SUoWc&>XfZcyn$0V%rm<#R3PDr;1@M@P&*)5`R>jmaReB4v{|YWo36!cD$+Ox9S4$ zi30yR0bA{qY=O0#4@71_=#?^>tT}e0C)(;5tJRB^+2+wEEaL)A1webtJG0u*q?f?z zgX>uyn9o|CRPBaU5i5^sS$(`Pn^UM{T7rdhevz)M_p&bdj^3KHY{D%{X5N;iu{`qV z#LGL2_Cyr?sSy>bQ0ljlIwYhfKWR71PKIykCQHDLRvdOwS!r#nMVVEsfdc8^1OR?K zJ!xBWS*)AHtk#glMklWfBTpVRyl$&0@q{fiT--O=W6yHR;6jytbyp zNQq<-NLGz8;VqbMOYfQUlG3J163X;M>erU*Kn~3dYp6bpSAX>9k%atm% zrRt`rj*&iDMb*Jl3FAEDvG{tGDRRqU8KDzQOt1uvdBmX0DAxor$PCl-Ci6z6XbyR_ z<;(2^TMG12rwXwS@hvI@><;Jy*swjXi4#a(o1L49rDyy^08_8Wqj1Kw1;hci?K!P5 ztzNs&R%NrUEuP0JP_lNz@mbKJQDtC{(3Y_n z8AH?epy}Ap>PxttrRrFdCB56VyhRjE?CCrLXEP&8&Ac(2SBJ7)WQoRt^J_zjS!)4f ze@2oN2t$B@Kvws8qFZa|Mrk4dQB3CZK-+P|!e~xZxS3cDWyfX>j{*TqAbezkPhiHO zz}76IL7T|d);Zg3$?}v)o8i>5O}-^LG|!EjUPEJw9c;)kF%yPIP)QS;7-Sio8D5j* zS$EXJT5BJ@-St}WARf?3*D8oE@Cz0wT|wdb1h~=~u)hG3|G)#-8_l?f^C{w>REk|Op?lar(jKz(?O(Kd)}u9GjzbKm55}AZQUZkh7C$6?ha*( z*Zhz(CCN)`Rg!5g>xD`yZ$)BPtPKiC8XH;IU9U1ZfJRhDMZ_91j=XZ;r#p259Dlt5 zOaZrqxvX?sWeWI%w~Q8T!C-v3k<4Ye49vyd061JBIKW`9I)UQ#sTcHt`FB-96%zu4 zN^o^Jn9E4jqCoIOrPl{&$mSzFnny0&u^dGPS1d(2FKU@Gt2B%Crn?|0ZpvpQznXHA z0(_N$P{@OMk|0i1s-ub9B<*52_m^|K-;203->ol&8cg{mxD~+ukZb_0w3a|JI11s^ zZBTXsd4u)V)1lG?n3`)Nu$s(NPi2^}dP}%a1Deu0dkv+?9L(N=BI$0!g1Mv(nG2b7 zBM-0^X|l#4?9)NDTpgednInV%RZ~S6R1Oa=x{t24`idta8Ub0(o8*Z)FZZb-r>5&E zE5x{HB8>swF~=MTcbwLRj1X`EDffB}vDEVGUYsyM# z0y^NpkA}R`UCY>%-Zv)>iKrD^q+%lT#t9IFMqC~QfRIX-q&zoA+`43U2T^1$r?Xyn zj>K&?Y7b?-y%;o8G?wcHs6Q6`)uQwqOmr|aa@5wsHoD;ar5Al*m+bVEN);KoR9)+d zMW|1ot@x{<8 zuSOUu#Dw(gB-zOK`e-68meX{qF-;sAsCf`Ope%vurZKZQMI-tWD#7vum;4sXbGpq# zwmkD4TO16cUWBi;fEbF&s1V3`V;BM>4VxnLvW=i0T$i_9G0pC>&G9 zPTVacgpL&2oQQEPsj9VnXNlL>+(wcomSE=Ru$gT!l)1*|QDB1XC2$H?G7xP#Q89Ya z3V;t*0j{f>V`+T922Y`?Cqx!L1dNuVG?i_|2Ls6lNe4LTbu?`t6DX5s47p63d4gX? zeZ^EJQ@AhJ-K7A{8#pkExFuk@Bqd=E7rXs*>@P=Dfz6BvZVkK9nqxzA5x4^=l8Cv6 z3mMC4EXNv?X3VToV(3yRvi#Hsfh=8oY5-q>V$n4!!dM%GO|h{dH!AWHin<;iHJ$aD zGSd8IeMBU!=BULMOFdzLw1|Q~XMrGwryXD?qVcg@!a=+iT_u))E7}M<9CC$#hdEwo z_W3HJ`5=he64yqICR9aAAa0;=PhjAY_U^$vsKhqsAb?Zs^8FH!Hp9GJZRpAr=v>93 zy(Vnki$Gwh(wJ-c+0v=aStPUDaAPS|t)&bsIO8zlQKGLor5-h3x)Cc#eA=oP*+xEV zma2vF5F6T6x(gf_Yw4?qS=Dle;8m*v6x}ijj>VDaV+Fb_R=LW6EDgAcT44;d%hLG{ z3xwK6w`!M6ecHn#vX}MeezOqjekn25W)>hnmGuy!TS+eiu?dYnaI=CiH)7(WO`BD$ zUJKXxQEx~%3TL5Bb)N6_%G#vPdUJMCz#xxC`hc^qw)kqN9Ngyv!XltS%F(ru7LZBS z27ZEfio1h zt1{S5xQ0xI?PLICi2;!?NwbK+QhyzcN7*2%lJH#2uJC%+1}9)U(mNyE8~Gftp#tZa zf*B&AS+rD(Ql7~R0?UMRzBn8dY@%$*GohViV=5q$wJ$)&1sMa;IB6b7jLM)bR<$9^ zbR-%`#Zy`9bteYSF-5GsM2BtK?&>oFb$xJVvqV83v0ElJI8$|!!2J4Zm7PJ}q8XYU z+9E16 z-k1j-56l?ZM!9b#!^wPPVvs;%kzHvlR*OL?HT8=_x>ne8NZZxJT2@xX)2XaF;vI=skUF!yR0&ZBPvZE}maUmHFV9o_W znhbEfP}54jj$uw?2r=c3#;k9D#KlGo1qBx=BGeS9rL7{~s*FXp&o)(J1U%F2ZWaIo z#vI(ZOc>PaW>a1@YL?3LT20eaiwa48fTV%+OsB)DDDo!H02|Xw^!%hz>cd7mswCsk!4qVbbr7fd?jP zE&Fbn=F*YD2-phX#P=y4W_1dodlU_gCp`>dGI2rqM5&B|a0}lrH)~}sv#R{GU2l|` zS|8j=Q7J)Jz`;LqfC2w**0BOeZ%GtX9qz=HVUju&rpc;mf~z}Q&KMF{nL7DEl*3`Q z=T$ZK}ZiRT*N8;rmsXu?JKPjy4ls0R-mWVrP`8F2E0IRG0F=#ZbEhLieMo zCxX=)Mrp(>(Aom)I2!tvQU2 z(gvQ@fb*ph4}j4JryWj2h ztOJCB1?*T|9qWMjnZRna7!nW!Iam%m%Vv)TSFcthY%PJ1+uE`brXdw5;0%x2Aa)gN zb<7S3D`u7*o>6SDxu~+P7%}5x_K5NlNCBre2w|9jfIwil84g)g9IXHf?FPd4<*D78 zm`$Fo0-H_;NK^g5!AXE@5M5Pb^A1c~ARac>)5& zi1*IDy8zty{~ui&U%k3;KvuRMw75K!0hMem9(al2?z}@oK6Gt-UEv7Cp(tR_5(RZ% zL8qyG6S^Spo1kE8sHBV{c|ud=t-bJP&Hr*Ai<#!!>j41bKmpv}C+>a#U=3n{Td zT|HXJfmWOXuJGS@nqUp|-mU&JbY%u!SJ2eU;kzexcgB629GO%8|6}3)dra*A%fj8~ z<%a+F7jC_r_uhzi@9IC_xR)OG<4=4J+nK(43|C>|JT2w>;Ca`pVIq7 z*U^Wb8U)(bWqTLkA;G(D%9XbsP5&=Ho0}UO;NQmP-Je6L%`G5@0k~JSyQ}|~fA9Ke z?xdq~H|B2KwsBH!^Q4V!CvDvIN$_IwMs9O+8-Tv`lJe?v)b3qJZ`-kRb7MOwZ=VQ? zH#au7Z`;1(s2xWg172v}1j(JbT_+uN@;T`4Q~IawEy}0m{pVeG`ngmoSv={s2b@82 zPsRvwa?QJL_*$V{;Rk}E1}}W^R&Ssi0B+l%&T_ks+PQoC4gmCMQ2q!ovW;z99c_a`tN(QFFW-3kTgb0J_R+UI;e_|@RjANjej27ma|nP+|Qt>om+(?&O66~5B_%%!is@evpNZTF&&{rbG~UfQ{;_VDLj zeCL@zzvbp%|IG=F8;G7xi{)895^Y*K=6K=ZwIsf?9(|&&YFOSLHaaZnHe@s97r}{fS5MBQ*_m4MR z`TM(aAAW!TmrpZ~x4(F-zvFSQR`a<#A65R{TR(T}hfnLDrabW{k9}?L$Msi#>3hFZ z@3`zK|N4w?eBz>?-*iLm2~+9?UYcC~cW*lW&PU$*kw1Lp%HIg(zx!SJ%9qxrPdnzb z-~W30^y7ZL?_Zy}>z3;;$Dd4m_vvqZ#=}njJn?}=`8$9A?33RydDqvGGw9qMyX*Qt zY;XVIw*Kt*zu)$SL-Mz5jR=DdclD*H_=l<_~@7?#|twn>@XncUintl9wA7ifh zVelfGUvArC1LOM^uTlnIC(ferb3I0lHPVG$qYNDRvS;VVDpn5w8J#O)YHh6fdOnLO z?XO$HWMBOp1V0c~@(2cN2(BOqYvLA_&&5LPBj(o8+pez9OM4wsTu<5n=TqF*WIud_ zZjl8#$U5x7MN5$VychpZchT&Km*0L1Ij7lmM2?1XfyM`W7bb9Z3+W?t({@6w5uw%j*=>uOmFxC^({3HAF)iUP-eY%*A0BqH!xX2P@O8 z;HK|#V>v(I}!XQJ0bvM(Jv{_2jGCZ%oq5>6==z*x+wNK zI|?))v)6GMufNMIU>HmT(QZ->vHkex{#B{f+*c`AuZ0?GktJ>v-t(&ZUq8pRYd~`}`I?k1n^<^zpEn9#L#*XJjn^myhSIWD|yImkg zevdr)#xXvtb37+zGaX*P>4UMA-tH5XDjOWu<#`5su>gc2)D0V2R5=aq;1|T})9Gz= zGb7)wZjlzML%>X~m2xI~&q2yAd*^tVGr8z9$TXOTNop+18f1FVFp_p&OW_1XbCu=O z^R!xZgTtK=F**%!ZN7SDMnaS_ZqVzBseq1f$O zEaD_JX}#aHa-R*pA$mGpQzGRCMC|i&Y?>QkGwn>Q(b7g#6F9 zlI515(1kS?Q59iC7NAtVE?{H0ay~%3-7L{Kre_w-kH)%6Jqnz|W71}B|Mu}|9T#6R zeSBK$5h^NV6g87oRY><=UhE8b^d5?kR@MrYq4ne1x`)mw`>82eN)}Kb>>F={w6#&o zIYu|2)&*cWuLX0W+uQx!d~g_@tDwz zd;g@$y(%L!Sn8 zN1zn9$&vE?b}r{>>t|;sdztQvgaD0u`DVIeAKvrtBIV`L_LnG!eUki*_I^=)`nGb; zv%Hr@`T|eIQPi&(P7-h8qz&COk5FCb5^$JgWpE?oQb8OAY=bt_GljlH9KDs}S$tS8aB%S5JipL*qEz*U^bB=tHL zpMXP~T@HoJ@1twb1E3MCo#T#d>&y~8T)^T|jE}naQHn1KHHWkv9h3-c9&|pM%PKKm z$*S(zXI~6AJ6+lLQr|q^Ta@uy`r^>JYDVK-YP7*D_|p2BKs{FQ)|ruKV2Dl&y=zW1zR6Y%VTa}e z;9G*~{4rY|bbCI>V~Vs554tqchm==$u_>?=#_G$@`XsDnCeKhXdNgoar9^w}w3CH< z{8qj`K)M;&+SyKTy$5?O0xH}AcFcak+bj=pK3=FSx@CxFX&&A>eNK(XyI$SsVVw`g z>;;y{S^M5!+<~TFt$>zYi={%6?Vf1Qs zXO(+u(VNE5Or(mjJIj8upAn|d_yN?pEu}SPkQREr{geuw^Cq^87k%clA6?zv*H-j1 z(P{6EUEgPaCw9k0N`mIBr{2C=>DuA#Av#!bbiDo;Q+`1b*-)69G42-l(ZHZ%$Ae@s ztxvS&{G#RXRU!#^+NW`zHV2-Idlt z*O-kiJ_{KWjxQ12;yO4vJk!=#1c(&d`O?IC3BhyLt0#GY*Mg~&1z-TN z4Y`x@s!@{a3$2u5fbT`IK1rFA^(8+`Z9w-i!dAwwYtC_D&oP=v23g&2c$pM2zB0sD zCCX?F(na!;h_RXGWJGfsO*7hv&J2-`Xb>E|qsb(cMkf->Fdr!qElQIa2|wYbHe6MK z8r#=o$(@IeA)*8|e=kNUcH4=jDb8%uWn{bi>T>JhQC_NSU&~io(js2H2YoYrsJGR*bnQ1M8KluqsbsO zVzFZpp&7iXiP9>kO=Bi07$yB#E?HJ&=deP>6KU|?>})ArmqzBMeg7MVz?TKCR&Vef z5-91h)Y^UqZPyApJHe?N^3QurGd?jtE4N5_x{%UbVaZ*T)}G!g%M>~r*4bOS#wf*F z6}i~4_est*@k%d@iaDa6*u;mn7`6w6v$EIG)#gH(1*EzV%1pKImJYWEufqp;Qp^1H z=dY?M`fMAKT+QKK1a)1p>pN;6NZ2Mi_N*r0qVSlHpl~~vvcN((4 z6%B5R*d{h5YywGAh2e0mM!bW)#AFt>G0VsZB?E-S=OYO~@7)6INb&;!j#Ozr7}=*J z=Itznm5m4@h>7JWg@w*wKx$Y6k6QXhUOg-xTl6+x^> z7*EwN2}}k|1j{Lk6|_`kdC%gTkE<@hls2m(jQH15*ze50WpxsldfGpC_+$a1FC|;N zNed<2C8kAm9oCIf#I+zxJ*HmMEoGxO%1U?}97L_h+!P(*yZ!#w*G9nHYl~m(tX@TP zzn?$91h$#cu>H={W13i?(Uv4RZ@}%#>ED}KF9h#Lm<4|47vC}iM$9hV&!MGNX}`( z&Ljq>mZOV4m~LE;78x-4?ttQhH+e4vicdwqEtC8%dA@&Ln@W;x)cM+8Mtev7tfE3o zV%#X%2nqCJX_K=$@^cU->;D(1+0D8m8*`(8K}{75YEb?SHCiyJapwJ>pk_uqqFcO| z(9xOKzVF7uASx11;KN4YULgQCYmxeh6KJas)G`}XbzNE*KCdH>OjMhh3t%G2$+nP% zS%$rCSDL7*aaM^1mPlT+$in9?jYrM_hYx@NPh(Xx)t2Io0*`qudTpj;o>U_GHuMxD zfAxd%JvINQ6#Fb5vmUXd$r`BYu-)R5^;K02wkdU*qnJQ{*{@@fqg`(GJ5KMNt5Z{W z+1I&xV>QlQ4LfaCao;j^w(Z9l7z(4Rs4$ao95yxqiYwCg1evtv|OU#GXf z?`)*MBKZI~g)4)dd1Ymd9n`tZ>~c%}oD7cvJ0zIArsm6&4`{R;Dywp^C_wUcQYddF zFDq$YI^mvaCmrl&*v4LSh+uOi6_;3zU^ArxNxr1A?IwIOCNaiRSm--2fGb3W;R*l& zh+;&g_)6 zU=paHY%`%GX*hB4h97(Km&T&T6tN$j*!y+WR-4T$(xwjpArp#ltc??!gJ@nhtatP3 ze!r;vehi5ZY9osurNm9*o25-M6{%CSYZ0!Yn4B`<$wP>W9Ew)s#=nqvQk|dw4 zK;tV0JfB^N%qTgALBn_ird{H@u1 zMTIy5HiHyj1*04#FWe9l6k5VFqiLL5WhGoqk^m@KXjOmoZb4jC=I00P2$|5X zrz8$i*uYS|+E8^wh`B}2!MXI$z@>VeY|5i|u+M&orz_ZmI-$?9?S=833YlMkQ# zTm6NPywY{^;qhvHXaNGcw&pgRN+ievX8kKAd0BKjn2malNktA$StC3#G}&ib%txvN zQpZxy-TM04T{Z%Qb_T6^EUBJTZ@(hx8X!=fIZ0LNR2c3MY`aywpIvz_(v1ur=98NI zB+BL6jh@2t+AU=dTZ~r>G<2lgcTUn`5w$2#p=u>eEImg5?K*`7udl;Rk9OT-+jUDgUe9{Z>0z;^6#S?X*&Lahuak>d{Ic)s7~*bjbjEo&v&k$di64ZKeDFTJ605 zSUAnUEL0AnvT!XHF2}2I1n#y;;5Tg`~WB}7NlA_RMx*c6d>}R`Sbv|{$%_Bh>;ubQ2tsx-0nmJ9I#Xu%PSMAfxX}{ zM9w^VW6Z2_<>+wDD1K?%OpeY!GZpCJpE7`%2nR`Q$scu|Q$poFcuUcsK5Za}Wg{et zCS_k39>mYFR4hG@10~C;+XPK;4GQKRbE#HAtMFN>Pt+=UDhEaiySI*eT;pOZ?R_{X z^<+PWc(fO`kB2CaQTA*Tn;c70X2Zmp?Qa%iXQC>mq%X{89Qdh-^L{hx897`%KY&D% zCIf(x{ixSze#I_Eib~EpK|YnNScQcd@kV;@fuEnjhztOFk1)A#Nq;DxjH1`jIJu`L z*&-3WIDUFFnjLL2+Vdr2U_(boNpmnuM=$6?L#@?Yy`$Ro=5LYq`z_K-qdyNpLd(XK z8>L?cH(u<*lVc#m-I zeD7^NkzTM?sfgFKxKz8VhF6_9&xzK__q5h0_rk7TeMpJ$umB~xD+G0}p0OzUCxUKH znkpV`T&m9|-u3l3i8()XZ`ab?s%Z$ijMUyy&W|g$H}L+mWXXxNY0-Z9&??(dQkPWX z(8g6bOzl&S#(mltfdHxpMi;1Dglv9+iB zftr{WRd!j78fcXIbM4@aj66hF;cU|QT7(_QT4h_{H*@X$i* zzT{;&cWR`@v}%=7v#j4j_tlHuK(3iaRmDb|ex0-BIHi3|{S?8oV19Y)uQr{poku?` z4`qmg1<-w!-(Q)HO~=z=2WBz)9FKHU*>!bh4FFYiv@)(guX zBGY%fC0}+!Ny*@sB0AM_u!SO(J1(c&?Iq8>OrlZV~{Zy7v z&envVG}p{$fD$#?S~sd19M7mH^^LaR6ER;vrL=Akgk*R6+5NUO8|N&MzP^;^Hj4OG z>k4>dwA7vap0`SHu(OZjSZ{G$jSZ^Mk-H-M(h=>vmj539W2NrV50a5iQ%cl=@qTyk z;Rv&sOXCxXnF5_c7@z=B^jgwa5b?Q*Fk$clU;A zC2*z4`TVLd{t7{9{BLTciXP)y4JVYO0*O5%hAC4#NGUoFsEB8zQ}~SBz6T)+F#l)? zV@3cl_=LGcS)r*WR(b~BGLiSHNkOn_btzV6a{7FPN}MM?lH^a!_HSQY(n-THdus0N zGf^!WNF116dv1+MoSLl3vT=VKKwmJNpW}E+8|l~y_Tmg?-@HT22w?k=GAN88vN!U+ z-PQ{8D+m*wn~dFqf~?C*Sy8jlU9qOzA`sohJc=%Bq)L_V+b3YfUY=2PwQl7bCKXF6 zKck*^$5jAXWADxLJIU)bDO@4*LFkQF^>=gC@OGO4g&*cFDAvvlaZT&Gr6^Ga#3mWd zU{GH#F_svi>Uy+Zu<8tk?c35~=9n%#l@MS!cr5u>cATq7$MVDS$#cK;8| zD3;O7HijGVaxyzQPBD4fyHh!&IH5zUuX>kh0O?a1K9#3}qU)1EBSTEA*&5yFFRIhy zsjU;poI=T71iX}z7$0UboFZ&HP*^xFWpANh2oAt;i}|(KU;BZM6uz({FV5|RdBNK_ zZJ6r~vQF6e%SyrvW}L7HkvF@9sVO6j+&(6It2(^B9I9`r4k75-1q=Mk^lgb zouoi}ZR@+f@>W&$+4Xm`7F5;b1NtSaG|i#iMg{F&O>su$LH$3^izStIOR_U;9Ub3KPf)DZs$C1sdMDS7*npUoRiA25N4JZ77wOu07r=a z#q>LdbT#|t++*!x_en<&2{*Bn1PMCFwRNokvno6W0hdmlSSXPf4ec;cOqPo+Kza=V8Xi_ zp&^L%eJxmJuOO~cJbp6Z4qgLtEedw6bcQdGgS`|}Pw0X)Fm9^m>YuG?Rlf`p0TP8> zS!p&pN*4KHXyW7mfcMJgWw*tUYsyx7rtQ>7`hEWON#nT7a3#T>3|shWeG>NrAVpS7 zc838oH%kWg>c{qdJo9E{eAD9QT@m{t`R_V z7e5Xg{4DO1d@`TUNK6N^6lKSxKliQ~PBx^THaxA9;!`+T5{@ zobP9Bc7z9wA99}5Qhdph!t0dyQ5;z~mQGu1v=#^MP~Q(`Ea3k^`HeVN7)^%fhQ_|$ zw~Hg%=g3NKRN3p>PzUWrw5nL(m@1Qd5!+%|dz?mmZd1S*wa!QJ#oAJ~FP>KW$bN&= z3$EBTyTJDQY7(;XRxwT;cg%P9%H~Mr&>h~p(CPAnn|i$aBCZ2I^zLhu)?eW6y8~&} zdPoQth_7{H_W^);TJ-=>iwJ)JeBiCUE1nWO)bN7+_;twY9h>&y_|0N+?E|3UW%_L+ z#RH&Tp0(XLOw+j|ZM1y%r6s1$#O5@6j}v!^5vxjAHpj0NCUqS8c08U2Hv4Cc;H$*A z252)SV8z zS52(iKUE=7Y-y!qGHbcG+%w2qQ4!_O{T{u3$KF2 zUjkO<$(~V>KD84tyA&1-n=i?4R6H-R)SJa1Je($15dUsc;mVZ=Hk_3iG&gHE(oid# zlYBZDrMqqdNE>P$hF-^<@x{~oPNzW5@63g#Dv1JqCFXsZI%HcsS7vbSYgfaiki%g| zgsR8O|0g`2pHGvR@}HgVTANz@hQ}yU!^Be{Q6)3riL`Tr@uyA42xo#^hanb?E_-I$ zki|ucMqbivkQ2<>3xQ0t8Hky|l9Y(JB@cj*Qe5@7LCtaIQ|gHrNjh&Nu5u_p<)jho$dPJ46=a5Z<(sXnVm0e z-(CRVs6YS!#u~^o(ArBkPT#A-Y^>>p3oY-Lj+JSf6ZToFr@8$goE6J2@6J z0AR4gHt_LsRO^F1X^5XQ0FNiL0|3NZF5duC_&(@9zSF0|IaZwpwZ>2`m3SJ8WLN@4 zwMIn+JA_wO9>x`tRLNhz{h*(k`nYu=&%*y|$0}~Z!_=M{oC@}WI_e?bQl*)>KV^B3 zxfIcb)46ry-PGebVPE}o{dJq+9!s>#Y!5-;L6$&KkmrDZU`NQ$x}@)Wbuk&$N`Wo# zF`wroU&wgdHfrWnd~+ux%J#pw+tOW@wv-fu@}<(N@;Um~M)WEaM0d{#qo{uOYEq_C zk>^Kts}xx}I$nm6a5wQNC!Yd+L-a-wJl(a>(^h_brvxQ@XC?fy6n6-Lfv?H%2jUS} zgPm+mqNr8W@rJrF9C9{)o|hPG)B$~|k=qOk|3N=dshHQTV%6bQk>k62YVz{}aI)@b zjteawj9pD8s#~NX^LrI17)8?EQa?kyaGpG*dxppI0Z$yx(b^pzz8q(+FDB!XSw;b> zL^)K=H(R}X9p9ZkX&2H9nzDDbbi35~K$NI{&RkiKbazpt;Uy2>2iud!6gN5et=+Vk z$|dDWu3X_tVzE`Uj&U$It4+5WgWpeO6UtPo3u$j`@TU>Fmx!Xf@YAH>I-48+SCI7c1E=cX)c_f|8>J?NN7NhTf#UtT;rJ?mHBm&~ zAspQ^<1Af*g`@>Y)|$dILpVBR*phwMdF;qG0@r9BI1BGCod+#sx`5W4DbYLW{IYRUr$>pWYNGY5MM2AT>#Y?w(>UyE_TohPjkRam+a_b`r%M zJELGM+P0yE2_W7yG^YAhWg5BE#!pms4`YOO3{n|HggQn=TV(29N+IQ7Z}52(26Ahf zTf;gY#@?vf=amx=fc>_FqqMi6X=Fhyd%;os(``kfb%eW;Dx}qI@7V-g=caV9A}+A? z#i=V>OGq~%A4swhTHgKW(5XP?E?Y2pU6mjE_>Tzn!>tZt(K}eLq%I|6$7?MW=F$b; zJJMtn`+KDA6%^KG!&H`;>l_v`0+p`y24E6f2*(I>vyWk_vjB?6i#*wJ{K>_Vl`-jS zk%;r}`C8$xLq$UrPd+3L2ro>*Y`WEvh`cacA_?QjP_vI*tH7CZ^^GYFj^v*f~ z90@+OHIK=|uigapT8-7RX7N+fQNL=@?GV}Q@IqgMfc?yGp~cn zV9hCF5BZnmOq8;G)d?!QM9s1e*zoFlmWdbd4kpqu&Mh0*iv9@gzSJWYmkg`CL0
  • *GQ zGkl01b0`X9jI8B(2P$bVn~ZvroY?>d7XILnjFqB&AzYl~{(kGN%)3oi8>j(?xywsW z$bb~NVBJ+_dc$RUHFUUiXp+A$;S<_lI;--3tFsM1p7<0#@rQ-)-+{pQFqH+odeqj( z3$Ay!UFYc!rNY@zoPpme3X+@$$*jTT^v}msQ##hcwrt%4!0_7nmPtDT}U$5i2xQ}2hVIShECcz%!08l4uEnB=U6jrI@DL7#R8gy!$ zP}7{}l1IB59}qMr(=yyWI>^xzEW#M5Zd@(5O>KW|%8x`WN9IEZhQKboSe|huf|2Mz zcI_9MVpq&TV2f3_h98Bzbe@r@z|xBQ`D)@Xf+?iH#aFYT{MxZI7PX!WKQ8-UGTqrg zrVbk^%B&x>ftmgd*2)Bj;LcYoZjjXD z2LSgQ1<{}2^D}Ja?`4Jt@4eDl=4oozd%OKcB33_ZSWYxIdB0cHcmNbJsFKlI2}Owe zb44v?JI%UR2tM1WtVKE&o3#9vw5vY(Nf4K~zrW7GUK7I$NFrrE%;J3deBFM6IcUw( zONO9(kI&cTCpYH|gXW#euVmSrHQ?>&)R>p7hMIUTS858~Iix6pXMi*Pb#wN3^x;N5 z!p%;BE5=m&b|?MNJzgu+xZnY>;Qw}&Py2NVmRHk;cjnvev3$XR@pq>7c6HiQS!wxVxfs!P`3G0W98E#*1$D}YCv15L*M`VuIdCK{< z8Ke{G7Jc`Hyn1zJP*+_Wx1p|2em3@u%5qbbvK6Q@pLiA59Qdb0^KGt+VbF>wpgLps zFSEVtLilL58-AN@n4+3JhJT$fS@HYbp8o1u(#(1lAP5KVSg%_8&zb}RZJE3LaA|)-a~P( z<<&W`RMSew&G<__2ueQFU`YTaC;Y->G4-pG&q&1?3G~W1a!;Yj#Y|z@O zeSc9;Rp_pJ5bJKb{~0A9?4rhQ(%G5KCrb}i!ON;i0)q7Vc=<!!!ah$ z!u_^p+uGpTS+kq}gx5Qi#!Gqsjo-OFo<}q0?!o%f-DFK<%w_40c5%W%SH|uk7eqjN zU{ZBHg#J>I?Jk!VDGl;FSD12(XpiT7wvK&%-Y`NInezZJ(f}?V zdli3H2vPp0VJdhmk-qjH zj@W*E&8~_2t(DWpMfeCd)TUvs;jW3nV&bpx9m8b?xA2I6usPY5AiPtW4x05o8>i$*H&*{MC(0^V6p1uxKIOp#(n=8 zR>BowogCPj%RqRa@z;Xm=J$NB1b!J0TV%YCs|{Abo&UAks9Rl1U#!HHl6CN2E9?u- zdZj)9P?gt>R-E^`F0MkYM^P4(^-7OC$GyW?1tE*y$=;z=LgE-WD3c%4}jk71o5^baez9sOmp>ZtQW%61xJZ^9Un4gQ=~~@(i*Ee0Zh7h zFV!9Z)oFPT0H+tNVMiYEbwbxCN%ujmc^@;DXlbC18G>X|_XBm{X4rgSMk!}4^m@v_ z*oYIooml~{c-f47zC>vk8{I_+7M*wbz(VB#dHS;zbjIVJa*?9J$3cW#jz4AYuR#QI zq+mTa`tW`n07CMC!%))DF7Y|*r|oYB^%F`eM4ZGvTR7| zpG>*93F*@z$NFQY{64wk2OH(ztM2t%txN;^Pe`%xC#0Cf&vHY2>~O_ez&TSqR=IINCT(W0_kUOA5@1!18!`l| za(W#VJ1DR!mrC<@l`FRZX2WIuXGUQu1xt_IobA62wpRzi(xbqIo*k;FKda8m_KX9) zv}97VFd&(Ll;Cjq6_NZq6P9|Fm)H>qcD;s%ul6zC`zo#clEfoVT&3QNv3B%9gi}OB z!36?^3k!V;3kv}vD1R+F_?Y1dM6>E(JxSg_wQXOL#_n%!2ATUVG*r>gHM>okv6)Pz ztwU;QLW+45cRI%BYON;r3e<{hvYJ5LC?WodKHNL|(OJEeL91bSMtV;QztkJS8ncd6 zr%zg@rl#?0@y?x`4xF8xwqMAJgi}@YQzAU7uj-l;h1?4~BXWRbk?ojOv019g)Umo( z%R^w)rmV-^$0;3Mgxb=2wf3pQ~rtr)W## zu&94roiGoIL-JmT4>!;!thB@97EG;Ik`0i#`-LczXA@KIA6vEmpP-;J503i!V!@w*K&#e)E{i}v!lDwy2|SlrY$ zxu@zos+KBy^+cvv?u#rH`IpDwNhT;H7xMOJ3gepGiBz^dUQ9V8-}mfwdF;U&0!Te( zeFS)J*QJzZ_QXT{)OgN=pCrDDT0NB$VoO96r_I{!-(S=)WO>(2`60TiZ%Ifc2HLY4 z!nNv}%TI^z%50zAioE2KzJ(Z-?ynKi?pDqA03h`GsUfuhF%PpG3_{pLpDb6uk-N>s zk|n(Pl;S!GhdmSJ+5LUps<`KWg$)D$=!Pl6x?zOjkAU9sK?_S*oY*$wt=U@Ti;!lQ zzX9FOp}D!LYfjeFlLw*(dCS`90=EYE-3_bPdk=_FYle+Z@fO+746^3hf;L!_f<=_h zk1$msok@v%<(-6nRO1p#T>45NF%$;aqz0}4y^}V!JN?B4J@x&5>eM=(n4Oq@;%iZ!sKa8}d`|HBJ%fAPZePfvm}Ltfwir|bX23&xMU zVEwo2f8+&+Z!p(i(*Se*o#j9nFBCR_|HTWw#Yx^mCU0f-?Op4f%8A&U&;$-1c>(#6 z7rg8}OLeZVp}@I()9;VGa70+fUv2fFU%|<(y!torLB58iG6I7-zuCN=0x0f<1KVLNnKCNUM zmT7TCaQ!qgg7s&K;`LyIfAcXTC^zcr8d~$}v$K%qg#}2qoG1<(sGsq1FgP5}IC{ok z&_=Js7}^|ac~ zkO-wG5!mR}peE-du?VN73mW z9wqbD$wb66gA74mra`JBL#qR9Ydvt66hfy;!S0{Uw$AcM*zZ5i$?*qptTQ|9VeII2 zcGQF^-k+7=I1@SWL9Qm!_+cF^g-gtWTcpk1freUtZ!uaJxX<5X$ z@3{&#LJFi=!Fj=z>y+26Im)l^sg8@xZ$>@Al^A(ROba^NUupBbO9*T8W)-As5|{BY znQ|f<>ic1vzGAV-LZBfgVVoM|m>GlS%8`N{t@b z!UxU`i%KAIWOr*oL}VA|V-J|f7J40`YVOsQCT&!Tt&o|PgxUre7vJ9aP{0d9-+I>215apDfS4uCEE*8fbGSf`5X(%{{D)j8LVZT5gNnAh_FKMq#u&$qYAd+^RWZ5dMj z_Iiz=0Yi-c1$CzXchs5mn63P#PFS|GL;o-8EP-V!FzPe_4!43iHYR|E=8x!a3jz=pXIY`tP;7Oi_`s18!K^0oLp#7AMw$jr`#% zqW3eywq{sKZXtRW7ni)XV%pn-F7EF`$6#PiC}|k~IJnd0Q`xg8oJk97H~?Z4xmP*6 zEKADg8ppMg7b?ZGCyK6El0nGgf4A9~kDG}Y~JnYHcsx_Y0_0&M~37&Bfh4WxSNXcRAI4 zoc+~U)hHz4{JP;*GVlQ)zmiu-XKa<~h!TR8))3Qr5^tBXjWYwi*jfFJ4 zI=UpS9QNo(7UVVDQ4i>bfYZ%FVC}oTA^-8K-77oQ7pWyViVD5VqI2x)nz3|{jNR!1 z@bmVT2@mC8PH~l^4Kf}EDpCYi)L|N{pbabcf=^>7AIHAy4$0E46KCaac9job*EX?u zA8Lv|0BX;@k6RqQ3yh-gQDEZ*INr-etM?jB?hk;RUxLRb4}go^Z2@A^m!qQ*g83|k z4XmOZH>SVhfPOD?gu+N&5}y?DM(lJrliZy2{IZHh^4eLu3I92B6A51Sz^qaRJFTrk z7-(DC#Z<5eY>ooth2UZ@HjT7#c}WuC%L^bcRv#2(G3+Iq!jc!fo{n!y7LlIlcA-oInl;kMt@3Uqc(~x57=uTFhO&zXI4Q0N~ zp56kJ>6!+Ym369+N3`Q3aE#DyA#fZOF{1}ou&Lc+c0pszP3_U}2P^sz7qVYH+|TY#jjGBaWC7M0b&XL2vk+%B?;wif_)cX5 zsfwR=POG|Q40fVD+ROVfJ&KDP-awv0niYkSXGSmhgv{AOZ-Y$CQ>6l$JZH(n<8#Yv z`ttepWqI_ixbJ{BXki}Td;DF%xuMQ#@nif~Pdc5DqDWpP-UO`B2xyzr4Am&iD2J7I z!A^WnYeX?}EiIFQj?_Puy0wehfDl0pP6XmZxI^G&TNZD>nj4<=RP;sn;`F}iqzmgO zYz$g|SMKtu+;2T9tMUaSW>h)DOxo=+fe$$jyk*@nuZ#8J@wsw=h_NIAZgyxQ0~RW+ z4ZOc)?dN3x1bYC0URNSG4?qA(006LX>YSwcYNffQ!ff2*g$oU@?c?l$O1!2dZ1x}~ z`*HT5`f>JvDWV8AdjN#Z9*F-vd+^)W6D@ASrb5gqV9iR5O4nd2q&70P4;R|sJf;22 zH>;J+zUKx=1!%DJ!WX>!(-P}`!fgQCZtRRi{vV?U4H=Id47*Ui!=7;9=O_7(to(Qp zr+IJyED+7=Kph}wno`Z)`P5#jGgyrM$J>{nI_>E1sI_|iW$SmR|F-qBwN?ZFu=QU- zfK70NSR`WvWyCw!3?oY6)AhtOAGnFX;COK!0)yk;|HIa6{>#=&e_je(BB*KTHQSVK zu(TT_jTx@zj1^aqZiCDr4bnnx;m%)j&nDjm@s zew-Tp7dYPk4>)%C4>+d!uL3*#M__F~{;wo<;`hElSf5-)5NE$)`iF^%K$xDjn0?A* z!xc2QiKQSpBK2z-O}A1_(83A<@u}l1uFqAJZjKJhJL=afHMW-JHJ7vo4*=wzcOV^1 zpf3wbz`1h;;Jp9?!7;z}rY^=y>BK1lE!wr>mwFDd@@o1Ev0oEtocyU>dWkr{t5$;J zmO$qDKPh6rNHqDFn?G(+{P!J4?LmFEDC2YH{=8x-*?LXO>GhQJT=`Qw$K7}wi4*KL z!Sy%#Z-Yw204HpcdRX3R8>(6C*yFBsR@pQoZ^Rw#1Vi=fVyroWYi##7;5QX9=UBf= zb_o!!*(gQRO}=#EymTefy(hxKnkrh9TWV9Ay^R+OP`IFNuliTOkYR_#zAFRY~$a zpBv_{9(ZeMZ*f2z-IHSwAu*F3-IJ$R5>XV9S6D`VseHVC#5Hiv@Y-*11RU3HWTM`= zUY?NoT%l*x`o~#`d^Pr+i-E7W!ezw0A%zd+n2BCpfVz87$B0Z(L>Q+MZ1z5Sj~sf{ zFik@MYHc^Lu$uw*GGFl-jLxeMKey{gJFElI>FX}{?7Va(sUa^Q-wj@AZKpPGuh}0} zluCM&Vi9j4n`I#%5SJA$lx(Ta&P5WVlY_m7>U3jiC}n$LofZuoG|b){yF!m5uvIol zah26}4ft?NrGI-i+r5OiNM@|XuU7}j!IKJ%=+@N966sfc(?<|lSdXemV{h!xZuj&) zl-t~Sd%h}K>c31hP3qpmRHf$64s#suKOEDwgHZkE#;#s48*)o@mO(wHP3T zrG?h^DX_FK>UUb$)KTI03p1JGrgX@p_@+)3~MB=ZW7#FN379Ixc zi9Pw#6Z8Gk6Pxh)tswva5C!JC3w>~f|Nh3>(HWdt3DsjiYfOy2G{$ zww(?R_xF$*~BvEs@r=cF+;{2EP_W=nu7Ky+ko^;oL;ue&EKQ z)CghEiG*{;RT01A%@8s5N<@~Wa#2~W@@#Fb?@TX-*v=$xicZ_>{qH&{`A!Qp3$?qy zREh3%)96~S`eE_>)j9Y9;J;~loeQJLYX|L17w=z1WcQ+}>E3&T4}g1n?*{;hVM*v^ z)=}fMK{H&HiX-WCaWV?#S#{=|CY4$cqhin0Inv-enn&y{yVM4KmdPOYo?8&YMN)Rc- zt%`XIN%gO=t`ODzLgNCqhN)_X+rGNwimMgrJX488HmU)!oMfC*wv}tPFZ2ez% znG7v+ncVa1tyu9W zGiZT3ChPyz+;s*uxvgCg6%>#nAV>)%^oVrS0D?$6NR`lg2_n*j1OWj-0cpX6CS7TQ z5J*C=N=K@I)DRH}AT9KcoEts&oO8dqXXgI>=AGHIXa9ZotXa=`p0zfd(mqtc7{TsH z%ffUQc{k>&SahGipHGO7(mZj^8|KxXIZiUmE~L0cA^%IvM-MOkxE(%JW95-CTr-Y2 zP*l_*yWYjg9-y*Un^3rejW$;Ws;dte+uxS;JmVqh57Wk9>sq_m>?u!^s6)9aU}ihG z>qV`xthHFLRXV2j{(7H8IMkKlH08n}ZZ9Z$C#P^Vt-*l2aBrW_gH z&#her{IRiYKi%dDc&P$Q!0VI~UkwCy#Bn?KxqGQS(NcMbg$8w)= z;!{0OmXpEmCLFF>n>R~lS>IFoC_$C%;>@a-G_hD(0<`*3zuUDG#;zYOg9r3CBlkHLV)Y+h;vL43h9d1M2hpQXJd_z#!)#l{}`|ug(Mg-KYB&nMymArcOtF*i{ zfN6=!y()G`B(DU$!kyx);1|VR`*<=X63(v6{W3*+MX}A3&1Tn17XE-*fKD-^!zK`; zb76t@TC7tiAn>N;iwe7cUvpK-v=0t z9PbqyzSXGM_q3^3gt!j9GZD%fsfWLF{%yoDoSTU3GBy_cx8jNWzltZdk-m!fnwy(X zppU1Ei>DxgFctOBy&B3!gR!5a?x@G(Pf}-yyDW(MN$NCzk~(O&q$#>kQ<}QS@T1$K zVvosZWX1D;k-8~rXHw7T)b*;$v0Dp&D4xxf^C%FPkwiOV+{l(k9=g2+Rn=|rl~BFz z9I&&$Pjoib_%qQ1H?3ZGtsaJlzsp;a9Vs9`ht@!-NVJDN6-m@oc9BtZth>XW7{PKH z{1>9#;EKrU61olGSq*Xpx*yj#PCEi$`1^~+o8w0en~0iM4c)tHNb2Fqsb=6kP6ElQ3|o9&LBpz)Ah5iP-$ub1PU6Q8keUmJTuwP`4sWUhd_W5oam zm`(e#C-AWd8Fo>Zx}vPStrd$eW!qx24|^7)tjT%oo0w~A9tdA@6@oYA-8{3CK=J-Tuoz@^JGK={fTJle<51;2n& zn18V@ecG_DMW25T)~4OxDXcw^QL9|lpXvjl&3+jbkVg0zasdU> zvoYkcKR?(7r}d>cqR3##_)zzhxYC^Bj}jY2 zbzuZQ13t;gF8n8%5$|%feQs&;lb_7nP=r|prSb`Cl&yU%~a!Nx`KB@Ld@S1sqNrmAmR9W>SO zb-AXG-MEA%W1qYETSkOcm4#WSGo_B;!>(ZU8(Pu4+9++%0u^Qa@ar86Mt6TAKk3=J zP=b3*Eda?FP}ubTFd<(8wCMubjD$=*3^Md$5qVHjk^|kb3Mx~O##@TRz?o_O<9^lB z>%d66m#HzC1PxY(6SF6nu?DbPD@QC#Il*|q$RCD&XnL6BE$6)5maaF1lziZQfxmj9 znEb%Kbcf+ZQ|$sPVRJWecPaO&_8y z+V{b;1+1phHQDkB_f^8bG)AV@Q(#(T5sLW^HZ3YwBto z`d9rx`d=uxDL8+P>6$EUu+vE-waodFGCSHMTkL1e+|h4s$R3lYkx@_wolgSED07ZH zWa@arXP-Fh_8a;C^aZtpFgjeHKLKUbKtAO77)2R1SqYpPIX|ZPZ7LAr1mi;{O27KZ zL}bpBMwR3-s`7?i`WAL8jKM(DARu}Nbz>f(l^^FE4RP{yrbEPD#NEP(b$9=UBd=O^ zs{H8sR_ZpD;TS;9!HY_z=uMFErjoIiO?#oEfj~6=ygBa=E=LQ3N}@Obp@ zU|vmzfjZ(#zqv;9bqZi8QGx~LxtPdy%A{|K_VV7xs??+QO}%Ugd}()vrd(&61)xgi zo6NNrID~!nl%Y%{ctw(uWk7WX^gc&=r(v%>PFDILHq*Bn(e1D{*5&9q^6I<}OBn>2 zTYiCh7x|L<^B!-gT&t`plcrKbu_80V$=9y?;{mHPkZD5>Z52TtL%tm37u#*F8~4fV zCL%EK)U=~%G48@Qe9()gCRzWm6^K^uwvLJW`~>%x1PjW;8w z$r&`-PPE|J@VvPF(f-f7ds|_Sr}<{?qLV%G7TWw_++K&rH=dp0YG5Qrv=+3uLOeQ8 zdB4DVPp;KjIukaO^q1K63=SSvEXG}v6Gx6xdxho;gpRs53zJ3@5 z^VxR(m~PEbZC-IdTE1}ccM1*N-zjv>DG${ipQK;E_^9<*&t}p6^h_I|w6T<7#&77N z5ip(F;0TF1$6LWNJ6c)ebX0`mg4IGoPOJd7!9M5%^%t?veG=>HsJdu!sJFzkORQzuT_O75?2<2&@*Y4(ki2cL2tJX%`CShnue(?)oO>o7xZRi&$I6M_c7o{L7%8*>pNZz68Ygw@d$k44BvT->~#(|MLj zL`#5b!cYaE=lqP~=V1^qLgkJKtkEpJ?b{!S=Ys~*|TR6>*sTp2`aE5~kwwD-rR zS(glcr)ZCip$}|rYLI%}tfMq?Z&xVAa&+D^{XUbCt*mRsn&{>8G0dp*$8sJk5_inH z`F{JmwyJ+!>)~@noLpPwNCsRepej@ecJP&E!c3@1mMdi(-(08}OS?%In!?aJrTEsf zEb;LtAO6)&Ks<=XE%~h9_Uhn-##CRQj5^a;y6YsId(6IPEzrh>6zDKuoxqpULliu$ zB26Y>wr|_9i5SUg%|u9IRasnFw2(Q4C1WXm3i~o&ZS=;jn9`XO5c5$-x|*}WmN z@rwjyD#~BARpzhS>fV3WR-j&Of8gUG9RXRC4466Kl6P^<-(xlZwX3dXDOnkeXZm6J zU1?4t9M|x~eDN}|;-uF->5DW%-yfLG04(0)j0MM645KRJZPolQx zLJ{j{pJ!d!L%ldcA3T6G5`7C3q7@ltI^sK&pDR3zzYhTs6y$y7WWWq`; z@6I{CI%&$b52DVjn8CMMmWAsR{G7(%Cy&fC^_9XWrDS-Y;4JoxlA#IW6sm6QOL
    F8%4@87;y4Q0np;e7m@K?irb!oeZsbrI(smIx^zV}(wCWq=oHh~b>Zo;f>j$JXK zZO8GP&y&8_^AYs#?8+Re3yoeE^IM{0GfhrgiNU>vn?qsxBJ=`$yd50<;&bT1nUDCY zJKw_24n60(_>__cj?!&V;gzt^wCe9nEN;Q1f z%}kLb=oAy~rK6b4&WNTzn3Vs=8()e~!AP`GVDBJbAVhL$S)_h(@Aoeywnz)73xPeK zCTEvtV!+rb>}>-IUy4U8%#6AY zL|AA$K~Wkm4*IJ7a(*oTAx-}+Qvb*9Y`j4rpl~*cu!5K9EV8vKD9-L%xe2uEc{PR` z+o-0cn!1wB=^&J{chi2C>lklsZLTF$UW*zs+#dvMOl#k{aOC#B_Zubv(T6>Xp?A&3 z*kdF1COHeM_ReMkX*UfRn(`%z=UUs@N|3Fm$c_OEURFDT7rS*_cl>gd%19VKAXuo` zb09T5n+X>58geYU^q}c}Cs*U`r0%jqvytF0O0Vi~FSDU+Nxa{L6CT^L`oo+kl^uAt zEbTWKLrEq0=!3Vg9GuvEg>uRQ7knLLuy(^Fq)60O;g;xa)b@v%m{cN#Zd^siu}a$Q zJ^_aJIT?|5JZw`k@?bNU%{K?)^2*;C;OnlJ0o%o&724GbgY|lb=qa@EyXlUT6W||D z!*~Nj+D{dUrzIRpAI#ROPvM?F#Pa~cRWS>Mnv~a~t86zmLas{zM#_X=A7sIXW^psS zJSpFF0zmILFpEO^eHvM(q!oSUpaijx~7F zCdJ41c5(WPOV literal 0 HcmV?d00001 diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index 350fb493..aa5eab8b 100755 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -8,7 +8,7 @@
    -

    Dashboard

    +

    Dashboard