From 85181d866b947d42489536a89630ad6c3e6793ae Mon Sep 17 00:00:00 2001 From: Ryanpratama01 <220441100098@student.trunojoyo.ac.id> Date: Tue, 21 Apr 2026 18:03:56 +0700 Subject: [PATCH] perbaikan semuanya dan conncting hosting --- .htaccess | 21 + .../Admin/FilterisasiController.php | 8 +- .../Auth/Manualpasswordresetcontroller.php | 83 + .../Auth/PasswordResetLinkController.php | 7 +- .../Rt/CalonPenerimaController.php | 315 ++-- app/Http/Controllers/Rt/LaporanController.php | 4 +- app/Models/CalonPenerima.php | 51 +- app/Models/PenerimaFinal.php | 11 +- app/Services/MLPredictionService.php | 132 +- composer.json | 5 +- composer.lock | 659 +++---- ...07_130000_create_calon_penerimas_table.php | 59 +- ...40000_create_prediksi_kelayakans_table.php | 14 +- ...802_create_password_reset_tokens_table.php | 22 + error_log | 21 + ml/predict.py | 45 +- public/login-gedung.jpg | Bin 0 -> 227894 bytes resources/views/admin/dashboard.blade.php | 562 +++--- resources/views/admin/data-akun.blade.php | 646 ++++--- resources/views/admin/data-warga.blade.php | 308 ++-- resources/views/admin/filterisasi.blade.php | 411 +++-- resources/views/admin/laporan.blade.php | 477 +++--- .../views/auth/forgot-password.blade.php | 663 ++++++- resources/views/auth/login.blade.php | 222 ++- resources/views/landing.blade.php | 1521 +++++++++++++---- resources/views/layouts/app.blade.php | 380 ++-- resources/views/layouts/guest.blade.php | 56 +- .../views/rt/calon-penerima/create.blade.php | 305 ++-- .../views/rt/calon-penerima/edit.blade.php | 121 +- .../views/rt/calon-penerima/index.blade.php | 160 +- .../views/rt/calon-penerima/show.blade.php | 294 +++- resources/views/rt/dashboard.blade.php | 283 ++- resources/views/rt/laporan.blade.php | 335 ++-- routes/auth.php | 16 +- routes/web.php | 20 + 35 files changed, 5306 insertions(+), 2931 deletions(-) create mode 100644 .htaccess create mode 100644 app/Http/Controllers/Auth/Manualpasswordresetcontroller.php create mode 100644 database/migrations/2026_04_17_015802_create_password_reset_tokens_table.php create mode 100644 error_log create mode 100644 public/login-gedung.jpg diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..8bf1dbb --- /dev/null +++ b/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + \ No newline at end of file diff --git a/app/Http/Controllers/Admin/FilterisasiController.php b/app/Http/Controllers/Admin/FilterisasiController.php index 3ba7859..7d99f15 100644 --- a/app/Http/Controllers/Admin/FilterisasiController.php +++ b/app/Http/Controllers/Admin/FilterisasiController.php @@ -91,14 +91,12 @@ public function tetapkan(Request $request) $topIds = $allCandidates->take($kuota)->pluck('id')->all(); $allIds = $allCandidates->pluck('id')->all(); - // Top kuota = disetujui if (!empty($topIds)) { CalonPenerima::whereIn('id', $topIds)->update([ 'status_verifikasi' => 'disetujui', ]); } - // Sisanya = ditolak $notPickedIds = array_diff($allIds, $topIds); if (!empty($notPickedIds)) { @@ -107,7 +105,6 @@ public function tetapkan(Request $request) ]); } - // Ambil ulang data final setelah status diperbarui $finalCandidates = CalonPenerima::query() ->with(['rt.dusun', 'prediksiKelayakan']) ->whereIn('id', $allIds) @@ -118,7 +115,7 @@ public function tetapkan(Request $request) PenerimaFinal::updateOrCreate( [ - 'nik' => $candidate->nik, + 'nik' => $candidate->nik, 'periode_bantuan' => '2026 Triwulan 1', ], [ @@ -131,6 +128,9 @@ public function tetapkan(Request $request) 'penghasilan' => $candidate->penghasilan ?? 0, 'jumlah_tanggungan' => $candidate->jumlah_tanggungan ?? 0, 'aset_kepemilikan' => $candidate->aset_kepemilikan ?? '-', + 'kondisi_rumah' => $candidate->kondisi_rumah ?? 'Tidak Diketahui', + 'meteran_listrik' => $candidate->meteran_listrik ?? 'Tidak Diketahui', + 'sumber_air' => $candidate->sumber_air ?? 'Tidak Diketahui', 'bantuan_lain' => $candidate->bantuan_lain ?? 'tidak', 'usia' => $candidate->usia ?? 0, 'probability' => $probability, diff --git a/app/Http/Controllers/Auth/Manualpasswordresetcontroller.php b/app/Http/Controllers/Auth/Manualpasswordresetcontroller.php new file mode 100644 index 0000000..04d0ceb --- /dev/null +++ b/app/Http/Controllers/Auth/Manualpasswordresetcontroller.php @@ -0,0 +1,83 @@ +validate([ + 'email' => ['required', 'email'], + ]); + + $found = User::where('email', $validated['email'])->exists(); + + return response()->json(['found' => $found]); + + } catch (\Illuminate\Validation\ValidationException $e) { + return response()->json([ + 'found' => false, + 'message' => collect($e->errors())->flatten()->first(), + ], 422); + + } catch (\Exception $e) { + return response()->json([ + 'found' => false, + 'message' => 'Terjadi kesalahan server: ' . $e->getMessage(), + ], 500); + } + } + + /** + * AJAX: update password berdasarkan email yang sudah diverifikasi. + * POST /password/manual/update + */ + public function updatePassword(Request $request) + { + try { + $validated = $request->validate([ + 'email' => ['required', 'email', 'exists:users,email'], + 'password' => ['required', 'confirmed', Password::min(8)], + 'password_confirmation' => ['required'], + ]); + + $user = User::where('email', $validated['email'])->firstOrFail(); + $user->update([ + 'password' => Hash::make($validated['password']), + ]); + + return response()->json(['success' => true]); + + } catch (\Illuminate\Validation\ValidationException $e) { + return response()->json([ + 'success' => false, + 'message' => collect($e->errors())->flatten()->first(), + ], 422); + + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan server: ' . $e->getMessage(), + ], 500); + } + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php index bf1ebfa..fca9377 100644 --- a/app/Http/Controllers/Auth/PasswordResetLinkController.php +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -6,6 +6,7 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; +use Illuminate\Support\Facades\Log; use Illuminate\View\View; class PasswordResetLinkController extends Controller @@ -29,6 +30,10 @@ public function store(Request $request): RedirectResponse 'email' => ['required', 'email'], ]); + Log::info('TES RESET PASSWORD MASUK', [ + 'email' => $request->email, + ]); + // We will send the password reset link to this user. Once we have attempted // to send the link, we will examine the response then see the message we // need to show to the user. Finally, we'll send out a proper response. @@ -41,4 +46,4 @@ public function store(Request $request): RedirectResponse : back()->withInput($request->only('email')) ->withErrors(['email' => __($status)]); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/Rt/CalonPenerimaController.php b/app/Http/Controllers/Rt/CalonPenerimaController.php index 620bacf..b8eb948 100644 --- a/app/Http/Controllers/Rt/CalonPenerimaController.php +++ b/app/Http/Controllers/Rt/CalonPenerimaController.php @@ -10,6 +10,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Storage; class CalonPenerimaController extends Controller { @@ -34,15 +35,12 @@ public function index() public function create() { - // RT tidak boleh pilih RT lain - // Tapi kita biarkan view create tetap bisa pakai data RT user (kalau mau ditampilkan) $user = Auth::user(); $rts = RT::where('id', $user->rt_id) ->with('dusun') ->get(); - // fallback kalau data RT user belum ada (harusnya jarang terjadi) if ($rts->isEmpty()) { $rts = RT::with('dusun')->get(); } @@ -60,75 +58,107 @@ public function store(Request $request) } $validated = $request->validate([ - // rt_id boleh ada di form, tapi akan kita override (anti inject) - 'rt_id' => 'nullable|exists:rts,id', - - // โœ… NIK & NO KK TIDAK BOLEH DUPLIKAT - 'no_kk' => 'required|digits:16|unique:calon_penerimas,no_kk', - 'nik' => 'required|digits:16|unique:calon_penerimas,nik', - - 'nama_lengkap' => 'required|string|max:255', - 'jenis_kelamin' => 'required|in:Laki-laki,Perempuan', - 'tempat_lahir' => 'required|string|max:255', - 'tanggal_lahir' => 'required|date', - 'alamat' => 'required|string', - 'desa' => 'nullable|string|max:255', // akan kita set otomatis - 'pekerjaan' => 'required|string', - 'penghasilan' => 'required|numeric|min:0', - 'jumlah_tanggungan' => 'required|integer|min:0', - 'aset_kepemilikan' => 'required|string', - 'bantuan_lain' => 'required|in:ya,tidak', - 'usia' => 'required|integer|min:17|max:100', - 'status_perkawinan' => 'required|string', + 'rt_id' => 'nullable|exists:rts,id', + 'no_kk' => 'required|digits:16|unique:calon_penerimas,no_kk', + 'nik' => 'required|digits:16|unique:calon_penerimas,nik', + 'nama_lengkap' => 'required|string|max:255', + 'jenis_kelamin' => 'required|in:Laki-laki,Perempuan', + 'tempat_lahir' => 'required|string|max:255', + 'tanggal_lahir' => 'required|date', + 'alamat' => 'required|string', + 'desa' => 'nullable|string|max:255', + 'pekerjaan' => 'required|string', + 'penghasilan' => 'required|numeric|min:0', + 'jumlah_tanggungan' => 'required|integer|min:0', + 'aset_kepemilikan' => 'required|string', + 'bantuan_lain' => 'required|in:ya,tidak', + 'usia' => 'required|integer|min:17|max:100', + 'status_perkawinan' => 'required|string', + 'kondisi_rumah' => 'required|in:Layak,Sedang,Tidak Layak', + 'meteran_listrik' => 'required|in:450VA,900VA,1300VA+', + 'sumber_air' => 'required|in:PDAM,Sumur,Sungai', + // Upload foto (opsional) + 'foto_rumah_depan' => 'nullable|image|max:2048', + 'foto_rumah_belakang' => 'nullable|image|max:2048', + 'foto_rumah_kanan' => 'nullable|image|max:2048', + 'foto_rumah_kiri' => 'nullable|image|max:2048', + 'foto_kk' => 'nullable|image|max:2048', + 'foto_ktp' => 'nullable|image|max:2048', + 'foto_rekening_listrik' => 'nullable|mimes:jpg,jpeg,png,pdf|max:2048', + 'foto_meteran_air' => 'nullable|image|max:2048', + 'dokumen_pendukung' => 'nullable|mimes:jpg,jpeg,png,pdf,doc,docx|max:5120', ], [ - 'nik.unique' => 'NIK sudah pernah diinput.', + 'nik.unique' => 'NIK sudah pernah diinput.', 'no_kk.unique' => 'No. KK sudah pernah diinput.', ]); - // ๐Ÿ”’ Kunci RT dari user login (anti inject) $validated['rt_id'] = $myRtId; - // ๐Ÿ”’ Kunci Dusun/Desa ikut RT $rt = RT::with('dusun')->find($myRtId); if ($rt && $rt->dusun) { $validated['desa'] = $rt->dusun->nama_dusun; } else { - // fallback aman kalau relasi dusun kosong $validated['desa'] = $validated['desa'] ?? '-'; } DB::beginTransaction(); try { + // Handle upload foto + $fotoFields = [ + 'foto_rumah_depan', 'foto_rumah_belakang', 'foto_rumah_kanan', 'foto_rumah_kiri', + 'foto_kk', 'foto_ktp', 'foto_rekening_listrik', 'foto_meteran_air', 'dokumen_pendukung', + ]; + foreach ($fotoFields as $field) { + if ($request->hasFile($field)) { + $validated[$field] = $request->file($field)->store('dokumen-warga', 'public'); + } + } + $calonPenerima = CalonPenerima::create([ - 'user_id' => $user->id, - 'rt_id' => $validated['rt_id'], - 'no_kk' => $validated['no_kk'], - 'nik' => $validated['nik'], - 'nama_lengkap' => $validated['nama_lengkap'], - 'jenis_kelamin' => $validated['jenis_kelamin'], - 'tempat_lahir' => $validated['tempat_lahir'], - 'tanggal_lahir' => $validated['tanggal_lahir'], - 'alamat' => $validated['alamat'], - 'desa' => $validated['desa'], - 'pekerjaan' => $validated['pekerjaan'], - 'penghasilan' => $validated['penghasilan'], - 'jumlah_tanggungan' => $validated['jumlah_tanggungan'], - 'aset_kepemilikan' => $validated['aset_kepemilikan'], - 'bantuan_lain' => $validated['bantuan_lain'], - 'usia' => $validated['usia'], - 'status_perkawinan' => $validated['status_perkawinan'], - 'status_verifikasi' => 'pending', - 'tracking_status' => 'draft', + 'user_id' => $user->id, + 'rt_id' => $validated['rt_id'], + 'no_kk' => $validated['no_kk'], + 'nik' => $validated['nik'], + 'nama_lengkap' => $validated['nama_lengkap'], + 'jenis_kelamin' => $validated['jenis_kelamin'], + 'tempat_lahir' => $validated['tempat_lahir'], + 'tanggal_lahir' => $validated['tanggal_lahir'], + 'alamat' => $validated['alamat'], + 'desa' => $validated['desa'], + 'pekerjaan' => $validated['pekerjaan'], + 'penghasilan' => $validated['penghasilan'], + 'jumlah_tanggungan' => $validated['jumlah_tanggungan'], + 'aset_kepemilikan' => $validated['aset_kepemilikan'], + 'kondisi_rumah' => $validated['kondisi_rumah'], + 'meteran_listrik' => $validated['meteran_listrik'], + 'sumber_air' => $validated['sumber_air'], + 'bantuan_lain' => $validated['bantuan_lain'], + 'usia' => $validated['usia'], + 'status_perkawinan' => $validated['status_perkawinan'], + 'status_verifikasi' => 'pending', + 'tracking_status' => 'draft', + 'foto_rumah_depan' => $validated['foto_rumah_depan'] ?? null, + 'foto_rumah_belakang' => $validated['foto_rumah_belakang'] ?? null, + 'foto_rumah_kanan' => $validated['foto_rumah_kanan'] ?? null, + 'foto_rumah_kiri' => $validated['foto_rumah_kiri'] ?? null, + 'foto_kk' => $validated['foto_kk'] ?? null, + 'foto_ktp' => $validated['foto_ktp'] ?? null, + 'foto_rekening_listrik' => $validated['foto_rekening_listrik'] ?? null, + 'foto_meteran_air' => $validated['foto_meteran_air'] ?? null, + 'dokumen_pendukung' => $validated['dokumen_pendukung'] ?? null, ]); - // ๐Ÿ”ฎ ML Prediction + // ML Prediction $predictionData = [ - 'pekerjaan' => $validated['pekerjaan'], - 'penghasilan' => $validated['penghasilan'], + 'pekerjaan' => $validated['pekerjaan'], + 'penghasilan' => $validated['penghasilan'], 'jumlah_tanggungan' => $validated['jumlah_tanggungan'], - 'aset_kepemilikan' => $validated['aset_kepemilikan'], - 'bantuan_lain' => $validated['bantuan_lain'], - 'usia' => $validated['usia'], + 'aset_kepemilikan' => $validated['aset_kepemilikan'], + 'bantuan_lain' => $validated['bantuan_lain'], + 'usia' => $validated['usia'], + 'kondisi_rumah' => $validated['kondisi_rumah'], + 'meteran_listrik' => $validated['meteran_listrik'], + 'sumber_air' => $validated['sumber_air'], ]; $prediction = $this->mlService->getPrediction($predictionData); @@ -136,8 +166,11 @@ public function store(Request $request) if ($prediction) { PrediksiKelayakan::create([ 'calon_penerima_id' => $calonPenerima->id, - 'probability' => $prediction['probability'], - 'recommendation' => $prediction['recommendation'], + 'probability' => $prediction['probability'], + 'recommendation' => $prediction['recommendation'], + 'kondisi_rumah' => $validated['kondisi_rumah'], + 'meteran_listrik' => $validated['meteran_listrik'], + 'sumber_air' => $validated['sumber_air'], ]); } @@ -147,10 +180,7 @@ public function store(Request $request) ->with('success', 'Data calon penerima berhasil ditambahkan!'); } catch (\Exception $e) { DB::rollBack(); - - return back() - ->withInput() - ->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); + return back()->withInput()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); } } @@ -158,7 +188,6 @@ public function show(CalonPenerima $calonPenerima) { $user = Auth::user(); - // ๐Ÿ”’ RT hanya boleh lihat data miliknya if ($calonPenerima->user_id !== $user->id) { abort(403, 'Unauthorized action.'); } @@ -174,7 +203,6 @@ public function edit(CalonPenerima $calonPenerima) { $user = Auth::user(); - // ๐Ÿ”’ RT hanya bisa edit kalau miliknya + masih draft if ($calonPenerima->user_id !== $user->id || ($calonPenerima->tracking_status ?? 'draft') !== 'draft') { abort(403, 'Data yang sudah diajukan tidak dapat diubah.'); } @@ -186,7 +214,6 @@ public function update(Request $request, CalonPenerima $calonPenerima) { $user = Auth::user(); - // ๐Ÿ”’ RT hanya bisa update kalau miliknya + masih draft if ($calonPenerima->user_id !== $user->id || ($calonPenerima->tracking_status ?? 'draft') !== 'draft') { abort(403, 'Data yang sudah diajukan tidak dapat diubah.'); } @@ -197,34 +224,41 @@ public function update(Request $request, CalonPenerima $calonPenerima) } $validated = $request->validate([ - 'rt_id' => 'nullable|exists:rts,id', - - // โœ… UNIQUE KECUALI DATA SENDIRI - 'no_kk' => 'required|digits:16|unique:calon_penerimas,no_kk,' . $calonPenerima->id, - 'nik' => 'required|digits:16|unique:calon_penerimas,nik,' . $calonPenerima->id, - - 'nama_lengkap' => 'required|string|max:255', - 'jenis_kelamin' => 'required|in:Laki-laki,Perempuan', - 'tempat_lahir' => 'required|string|max:255', - 'tanggal_lahir' => 'required|date', - 'alamat' => 'required|string', - 'desa' => 'nullable|string|max:255', // akan di-override - 'pekerjaan' => 'required|string', - 'penghasilan' => 'required|numeric|min:0', - 'jumlah_tanggungan' => 'required|integer|min:0', - 'aset_kepemilikan' => 'required|string', - 'bantuan_lain' => 'required|in:ya,tidak', - 'usia' => 'required|integer|min:17|max:100', - 'status_perkawinan' => 'required|string', + 'rt_id' => 'nullable|exists:rts,id', + 'no_kk' => 'required|digits:16|unique:calon_penerimas,no_kk,' . $calonPenerima->id, + 'nik' => 'required|digits:16|unique:calon_penerimas,nik,' . $calonPenerima->id, + 'nama_lengkap' => 'required|string|max:255', + 'jenis_kelamin' => 'required|in:Laki-laki,Perempuan', + 'tempat_lahir' => 'required|string|max:255', + 'tanggal_lahir' => 'required|date', + 'alamat' => 'required|string', + 'desa' => 'nullable|string|max:255', + 'pekerjaan' => 'required|string', + 'penghasilan' => 'required|numeric|min:0', + 'jumlah_tanggungan' => 'required|integer|min:0', + 'aset_kepemilikan' => 'required|string', + 'bantuan_lain' => 'required|in:ya,tidak', + 'usia' => 'required|integer|min:17|max:100', + 'status_perkawinan' => 'required|string', + 'kondisi_rumah' => 'required|in:Layak,Sedang,Tidak Layak', + 'meteran_listrik' => 'required|in:450VA,900VA,1300VA+', + 'sumber_air' => 'required|in:PDAM,Sumur,Sungai', + 'foto_rumah_depan' => 'nullable|image|max:2048', + 'foto_rumah_belakang' => 'nullable|image|max:2048', + 'foto_rumah_kanan' => 'nullable|image|max:2048', + 'foto_rumah_kiri' => 'nullable|image|max:2048', + 'foto_kk' => 'nullable|image|max:2048', + 'foto_ktp' => 'nullable|image|max:2048', + 'foto_rekening_listrik' => 'nullable|mimes:jpg,jpeg,png,pdf|max:2048', + 'foto_meteran_air' => 'nullable|image|max:2048', + 'dokumen_pendukung' => 'nullable|mimes:jpg,jpeg,png,pdf,doc,docx|max:5120', ], [ - 'nik.unique' => 'NIK sudah pernah diinput.', + 'nik.unique' => 'NIK sudah pernah diinput.', 'no_kk.unique' => 'No. KK sudah pernah diinput.', ]); - // ๐Ÿ”’ Kunci RT dari user login (anti inject) $validated['rt_id'] = $myRtId; - // ๐Ÿ”’ Kunci Dusun/Desa ikut RT $rt = RT::with('dusun')->find($myRtId); if ($rt && $rt->dusun) { $validated['desa'] = $rt->dusun->nama_dusun; @@ -234,29 +268,45 @@ public function update(Request $request, CalonPenerima $calonPenerima) DB::beginTransaction(); try { + // Handle upload foto โ€” hapus lama kalau ada yang baru + $fotoFields = [ + 'foto_rumah_depan', 'foto_rumah_belakang', 'foto_rumah_kanan', 'foto_rumah_kiri', + 'foto_kk', 'foto_ktp', 'foto_rekening_listrik', 'foto_meteran_air', 'dokumen_pendukung', + ]; + foreach ($fotoFields as $field) { + if ($request->hasFile($field)) { + if ($calonPenerima->$field) { + Storage::disk('public')->delete($calonPenerima->$field); + } + $validated[$field] = $request->file($field)->store('dokumen-warga', 'public'); + } + } + $calonPenerima->update($validated); - // (Opsional) Kalau kamu mau: update ulang prediksi ML saat data diupdate - // Kalau mau aktif, uncomment ini: - /* + // Uncomment kalau mau update ulang prediksi ML saat edit $predictionData = [ - 'pekerjaan' => $validated['pekerjaan'], - 'penghasilan' => $validated['penghasilan'], + 'pekerjaan' => $validated['pekerjaan'], + 'penghasilan' => $validated['penghasilan'], 'jumlah_tanggungan' => $validated['jumlah_tanggungan'], - 'aset_kepemilikan' => $validated['aset_kepemilikan'], - 'bantuan_lain' => $validated['bantuan_lain'], - 'usia' => $validated['usia'], + 'aset_kepemilikan' => $validated['aset_kepemilikan'], + 'bantuan_lain' => $validated['bantuan_lain'], + 'usia' => $validated['usia'], + 'kondisi_rumah' => $validated['kondisi_rumah'], + 'meteran_listrik' => $validated['meteran_listrik'], + 'sumber_air' => $validated['sumber_air'], ]; - $prediction = $this->mlService->getPrediction($predictionData); - if ($prediction) { PrediksiKelayakan::updateOrCreate( ['calon_penerima_id' => $calonPenerima->id], [ - 'probability' => $prediction['probability'], + 'probability' => $prediction['probability'], 'recommendation' => $prediction['recommendation'], + 'kondisi_rumah' => $validated['kondisi_rumah'], + 'meteran_listrik'=> $validated['meteran_listrik'], + 'sumber_air' => $validated['sumber_air'], ] ); } @@ -268,10 +318,7 @@ public function update(Request $request, CalonPenerima $calonPenerima) ->with('success', 'Data calon penerima berhasil diupdate!'); } catch (\Exception $e) { DB::rollBack(); - - return back() - ->withInput() - ->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); + return back()->withInput()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); } } @@ -288,9 +335,7 @@ public function ajukan(CalonPenerima $calonPenerima) ->with('error', 'Data ini sudah diajukan dan tidak dapat diajukan lagi.'); } - $calonPenerima->update([ - 'tracking_status' => 'terkirim', - ]); + $calonPenerima->update(['tracking_status' => 'terkirim']); return redirect()->route('rt.calon-penerima.index') ->with('success', 'Data berhasil diajukan ke admin kelurahan.'); @@ -300,11 +345,21 @@ public function destroy(CalonPenerima $calonPenerima) { $user = Auth::user(); - // ๐Ÿ”’ RT hanya bisa hapus kalau miliknya + masih draft if ($calonPenerima->user_id !== $user->id || ($calonPenerima->tracking_status ?? 'draft') !== 'draft') { abort(403, 'Data yang sudah diajukan tidak dapat dihapus.'); } + // Hapus foto dari storage + $fotoFields = [ + 'foto_rumah_depan', 'foto_rumah_belakang', 'foto_rumah_kanan', 'foto_rumah_kiri', + 'foto_kk', 'foto_ktp', 'foto_rekening_listrik', 'foto_meteran_air', 'dokumen_pendukung', + ]; + foreach ($fotoFields as $field) { + if ($calonPenerima->$field) { + Storage::disk('public')->delete($calonPenerima->$field); + } + } + $calonPenerima->delete(); return redirect()->route('rt.calon-penerima.index') @@ -316,7 +371,6 @@ private function getPredictionExplanation($calonPenerima): array $positive = []; $negative = []; - // PEKERJAAN if (strtolower($calonPenerima->pekerjaan) === 'tidak bekerja') { $positive[] = 'Tidak bekerja'; } elseif (in_array(strtolower($calonPenerima->pekerjaan), ['buruh harian', 'buruh', 'petani', 'nelayan'])) { @@ -325,7 +379,6 @@ private function getPredictionExplanation($calonPenerima): array $negative[] = 'Memiliki pekerjaan yang relatif lebih stabil'; } - // PENGHASILAN if ($calonPenerima->penghasilan <= 1000000) { $positive[] = 'Penghasilan rendah'; } elseif ($calonPenerima->penghasilan <= 2000000) { @@ -334,7 +387,6 @@ private function getPredictionExplanation($calonPenerima): array $negative[] = 'Penghasilan relatif lebih tinggi'; } - // JUMLAH TANGGUNGAN if ($calonPenerima->jumlah_tanggungan >= 4) { $positive[] = 'Jumlah tanggungan banyak'; } elseif ($calonPenerima->jumlah_tanggungan >= 2) { @@ -343,45 +395,54 @@ private function getPredictionExplanation($calonPenerima): array $negative[] = 'Jumlah tanggungan sedikit'; } - // ASET KEPEMILIKAN $aset = strtolower($calonPenerima->aset_kepemilikan); + if (str_contains($aset, 'mobil')) $negative[] = 'Memiliki aset bernilai tinggi (mobil)'; + if (str_contains($aset, 'motor')) $negative[] = 'Memiliki aset kendaraan bermotor'; + if (str_contains($aset, 'rumah')) $negative[] = 'Memiliki aset rumah'; + if (in_array($aset, ['tidak ada', '-', 'tidak punya'])) $positive[] = 'Tidak memiliki aset berarti'; - if (str_contains($aset, 'mobil')) { - $negative[] = 'Memiliki aset bernilai tinggi (mobil)'; - } - - if (str_contains($aset, 'motor')) { - $negative[] = 'Memiliki aset kendaraan bermotor'; - } - - if (str_contains($aset, 'rumah')) { - $negative[] = 'Memiliki aset rumah'; - } - - if ($aset === 'tidak ada' || $aset === '-' || $aset === 'tidak punya') { - $positive[] = 'Tidak memiliki aset berarti'; - } - - // BANTUAN LAIN if (strtolower($calonPenerima->bantuan_lain) === 'ya') { $negative[] = 'Sudah menerima bantuan lain'; } else { $positive[] = 'Belum menerima bantuan lain'; } - // USIA if ($calonPenerima->usia >= 60) { $positive[] = 'Usia lanjut'; } elseif ($calonPenerima->usia >= 45) { $positive[] = 'Usia cukup rentan'; } - // NARASI PENJELASAN + // Parameter baru + if (strtolower($calonPenerima->kondisi_rumah ?? '') === 'tidak layak') { + $positive[] = 'Kondisi rumah tidak layak huni'; + } elseif (strtolower($calonPenerima->kondisi_rumah ?? '') === 'sedang') { + $positive[] = 'Kondisi rumah sedang'; + } else { + $negative[] = 'Kondisi rumah layak'; + } + + if (($calonPenerima->meteran_listrik ?? '') === '450VA') { + $positive[] = 'Meteran listrik 450VA (daya rendah)'; + } elseif (($calonPenerima->meteran_listrik ?? '') === '900VA') { + $positive[] = 'Meteran listrik 900VA'; + } else { + $negative[] = 'Meteran listrik 1300VA ke atas'; + } + + if (strtolower($calonPenerima->sumber_air ?? '') === 'sungai') { + $positive[] = 'Sumber air dari sungai (kurang layak)'; + } elseif (strtolower($calonPenerima->sumber_air ?? '') === 'sumur') { + $positive[] = 'Sumber air dari sumur'; + } else { + $negative[] = 'Sumber air PDAM (layak)'; + } + $probability = $calonPenerima->prediksiKelayakan->probability ?? 0; $probability = $probability <= 1 ? $probability * 100 : $probability; $probability = number_format($probability, 1); - $summary = "Nilai kelayakan {$probability}% diperoleh berdasarkan data pekerjaan, penghasilan, jumlah tanggungan, aset kepemilikan, bantuan lain, dan usia."; + $summary = "Nilai kelayakan {$probability}% diperoleh berdasarkan data pekerjaan, penghasilan, jumlah tanggungan, aset kepemilikan, bantuan lain, usia, kondisi rumah, meteran listrik, dan sumber air."; if (count($positive) > 0 && count($negative) > 0) { $summary .= " Sistem menilai terdapat beberapa faktor yang mendukung kelayakan, namun ada juga faktor yang mengurangi nilai kelayakan."; @@ -394,7 +455,7 @@ private function getPredictionExplanation($calonPenerima): array return [ 'positive' => $positive, 'negative' => $negative, - 'summary' => $summary, + 'summary' => $summary, ]; } } \ No newline at end of file diff --git a/app/Http/Controllers/Rt/LaporanController.php b/app/Http/Controllers/Rt/LaporanController.php index ea6d59f..0f6551c 100644 --- a/app/Http/Controllers/Rt/LaporanController.php +++ b/app/Http/Controllers/Rt/LaporanController.php @@ -4,7 +4,7 @@ use App\Http\Controllers\Controller; use App\Models\PenerimaFinal; -use App\Models\Rt; +use App\Models\RT; use Illuminate\Http\Request; class LaporanController extends Controller @@ -17,7 +17,7 @@ public function index(Request $request) abort(403, 'Akses ditolak: hanya RT.'); } - $rt = Rt::with('dusun')->find($user->rt_id); + $rt = RT::with('dusun')->find($user->rt_id); if (!$rt) { $laporans = collect(); diff --git a/app/Models/CalonPenerima.php b/app/Models/CalonPenerima.php index 48f05a2..6d3c355 100644 --- a/app/Models/CalonPenerima.php +++ b/app/Models/CalonPenerima.php @@ -10,26 +10,37 @@ class CalonPenerima extends Model use HasFactory; protected $fillable = [ - 'user_id', - 'rt_id', - 'no_kk', - 'nik', - 'nama_lengkap', - 'jenis_kelamin', - 'tempat_lahir', - 'tanggal_lahir', - 'alamat', - 'desa', - 'pekerjaan', - 'penghasilan', - 'jumlah_tanggungan', - 'aset_kepemilikan', - 'bantuan_lain', - 'usia', - 'status_perkawinan', - 'status_verifikasi', - 'tracking_status', // status tracking proses - 'catatan_admin', + 'user_id', + 'rt_id', + 'no_kk', + 'nik', + 'nama_lengkap', + 'jenis_kelamin', + 'tempat_lahir', + 'tanggal_lahir', + 'alamat', + 'desa', + 'pekerjaan', + 'penghasilan', + 'jumlah_tanggungan', + 'aset_kepemilikan', + 'kondisi_rumah', + 'meteran_listrik', + 'sumber_air', + 'bantuan_lain', + 'usia', + 'status_perkawinan', + 'status_verifikasi', + 'catatan_admin', + 'foto_rumah_depan', + 'foto_rumah_belakang', + 'foto_rumah_kanan', + 'foto_rumah_kiri', + 'foto_kk', + 'foto_ktp', + 'foto_rekening_listrik', + 'foto_meteran_air', + 'dokumen_pendukung', ]; protected $casts = [ diff --git a/app/Models/PenerimaFinal.php b/app/Models/PenerimaFinal.php index accafd9..5d11657 100644 --- a/app/Models/PenerimaFinal.php +++ b/app/Models/PenerimaFinal.php @@ -20,6 +20,9 @@ class PenerimaFinal extends Model 'penghasilan', 'jumlah_tanggungan', 'aset_kepemilikan', + 'kondisi_rumah', + 'meteran_listrik', + 'sumber_air', 'bantuan_lain', 'usia', 'probability', @@ -31,10 +34,10 @@ class PenerimaFinal extends Model protected $casts = [ 'tanggal_penetapan' => 'date', - 'jumlah_bantuan' => 'decimal:2', - 'probability' => 'decimal:4', - 'penghasilan' => 'integer', + 'jumlah_bantuan' => 'decimal:2', + 'probability' => 'decimal:4', + 'penghasilan' => 'integer', 'jumlah_tanggungan' => 'integer', - 'usia' => 'integer', + 'usia' => 'integer', ]; } \ No newline at end of file diff --git a/app/Services/MLPredictionService.php b/app/Services/MLPredictionService.php index dbea3ee..547df31 100644 --- a/app/Services/MLPredictionService.php +++ b/app/Services/MLPredictionService.php @@ -3,80 +3,49 @@ namespace App\Services; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Http; class MLPredictionService { - /** - * Dapatkan prediksi dari script Python langsung - */ public function getPrediction(array $data) { try { $payload = [ - 'pekerjaan' => $data['pekerjaan'] ?? '', - 'penghasilan' => (float) ($data['penghasilan'] ?? 0), - 'jumlah_tanggungan' => (int) ($data['jumlah_tanggungan'] ?? 0), - 'aset_kepemilikan' => $data['aset_kepemilikan'] ?? '', - 'bantuan_lain' => $data['bantuan_lain'] ?? '', - 'usia' => (int) ($data['usia'] ?? 0), + 'pekerjaan' => $data['pekerjaan'] ?? '', + 'penghasilan' => (float) ($data['penghasilan'] ?? 0), + 'jumlah_tanggungan' => (int) ($data['jumlah_tanggungan'] ?? 0), + 'aset_kepemilikan' => $data['aset_kepemilikan'] ?? '', + 'bantuan_lain' => $data['bantuan_lain'] ?? '', + 'usia' => (int) ($data['usia'] ?? 0), + 'kondisi_rumah' => $data['kondisi_rumah'] ?? 'Tidak Diketahui', + 'meteran_listrik' => $data['meteran_listrik'] ?? 'Tidak Diketahui', + 'sumber_air' => $data['sumber_air'] ?? 'Tidak Diketahui', ]; - $jsonPayload = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $apiUrl = env('ML_API_URL', 'https://ianvv.pythonanywhere.com') . '/predict'; - $pythonPath = 'python'; - $scriptPath = base_path('ml/predict.py'); + $response = Http::timeout(30)->post($apiUrl, $payload); - $descriptorspec = [ - 0 => ['pipe', 'r'], // stdin - 1 => ['pipe', 'w'], // stdout - 2 => ['pipe', 'w'], // stderr - ]; - - $process = proc_open( - $pythonPath . ' ' . escapeshellarg($scriptPath), - $descriptorspec, - $pipes, - base_path() - ); - - if (!is_resource($process)) { - Log::error('Gagal menjalankan proses Python ML.'); - return null; - } - - fwrite($pipes[0], $jsonPayload); - fclose($pipes[0]); - - $output = stream_get_contents($pipes[1]); - fclose($pipes[1]); - - $errorOutput = stream_get_contents($pipes[2]); - fclose($pipes[2]); - - $exitCode = proc_close($process); - - if ($exitCode !== 0) { - Log::error('Python ML exit code bukan 0.', [ - 'exit_code' => $exitCode, - 'stderr' => $errorOutput, - 'stdout' => $output, + if (!$response->successful()) { + Log::error('ML API gagal.', [ + 'status' => $response->status(), + 'body' => $response->body(), ]); return null; } - $result = json_decode($output, true); + $result = $response->json(); if (!$result || isset($result['error'])) { Log::error('Hasil prediksi ML tidak valid.', [ - 'output' => $output, - 'stderr' => $errorOutput, + 'output' => $response->body(), 'decoded' => $result, ]); return null; } return [ - 'probability' => $result['probability'] ?? 0, + 'probability' => $result['probability'] ?? 0, 'recommendation' => $result['recommendation'] ?? 'Tidak Layak', ]; } catch (\Throwable $e) { @@ -85,60 +54,30 @@ public function getPrediction(array $data) } } - /** - * Cek apakah script ML bisa dijalankan - */ public function healthCheck() { try { - $pythonPath = 'python'; - $scriptPath = base_path('ml/predict.py'); + $apiUrl = env('ML_API_URL', 'https://ianvv.pythonanywhere.com') . '/predict'; - if (!file_exists($scriptPath)) { - return false; - } - - $testPayload = json_encode([ - 'pekerjaan' => 'buruh', - 'penghasilan' => 500000, - 'jumlah_tanggungan' => 4, - 'aset_kepemilikan' => 'motor', - 'bantuan_lain' => 'tidak', - 'usia' => 50, - ]); - - $descriptorspec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], + $testPayload = [ + 'pekerjaan' => 'Buruh Harian', + 'penghasilan' => 500000, + 'jumlah_tanggungan' => 4, + 'aset_kepemilikan' => 'Rumah Sederhana', + 'bantuan_lain' => 'tidak', + 'usia' => 50, + 'kondisi_rumah' => 'Tidak Layak', + 'meteran_listrik' => '450VA', + 'sumber_air' => 'Sumur', ]; - $process = proc_open( - $pythonPath . ' ' . escapeshellarg($scriptPath), - $descriptorspec, - $pipes, - base_path() - ); + $response = Http::timeout(10)->post($apiUrl, $testPayload); - if (!is_resource($process)) { + if (!$response->successful()) { return false; } - fwrite($pipes[0], $testPayload); - fclose($pipes[0]); - - $output = stream_get_contents($pipes[1]); - fclose($pipes[1]); - - fclose($pipes[2]); - - $exitCode = proc_close($process); - - if ($exitCode !== 0) { - return false; - } - - $result = json_decode($output, true); + $result = $response->json(); return is_array($result) && isset($result['probability']) && isset($result['recommendation']); } catch (\Throwable $e) { @@ -146,17 +85,12 @@ public function healthCheck() } } - /** - * Prediksi untuk banyak data sekaligus - */ public function getBatchPredictions(array $dataArray) { $results = []; - foreach ($dataArray as $item) { $results[] = $this->getPrediction($item); } - return $results; } } \ No newline at end of file diff --git a/composer.json b/composer.json index 0cf6222..3ddaca0 100644 --- a/composer.json +++ b/composer.json @@ -77,6 +77,9 @@ } }, "config": { + "platform": { + "php": "8.2.0" + }, "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true, @@ -87,4 +90,4 @@ }, "minimum-stability": "stable", "prefer-stable": true -} +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 5c8d767..7b93023 100644 --- a/composer.lock +++ b/composer.lock @@ -4,30 +4,30 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "61fce7afd7bfa4be47ac89062b07f583", + "content-hash": "e0c1bd04a3bb8afaef35697676fa0752", "packages": [ { "name": "barryvdh/laravel-dompdf", - "version": "v3.1.1", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d" + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d", - "reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/ee3b72b19ccdf57d0243116ecb2b90261344dedc", + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc", "shasum": "" }, "require": { "dompdf/dompdf": "^3.0", - "illuminate/support": "^9|^10|^11|^12", + "illuminate/support": "^9|^10|^11|^12|^13.0", "php": "^8.1" }, "require-dev": { "larastan/larastan": "^2.7|^3.0", - "orchestra/testbench": "^7|^8|^9|^10", + "orchestra/testbench": "^7|^8|^9.16|^10|^11.0", "phpro/grumphp": "^2.5", "squizlabs/php_codesniffer": "^3.5" }, @@ -69,7 +69,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-dompdf/issues", - "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.1" + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.2" }, "funding": [ { @@ -81,20 +81,20 @@ "type": "github" } ], - "time": "2025-02-13T15:07:54+00:00" + "time": "2026-02-21T08:51:10+00:00" }, { "name": "brick/math", - "version": "0.14.7", + "version": "0.14.8", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50" + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/07ff363b16ef8aca9692bba3be9e73fe63f34e50", - "reference": "07ff363b16ef8aca9692bba3be9e73fe63f34e50", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", "shasum": "" }, "require": { @@ -133,7 +133,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.7" + "source": "https://github.com/brick/math/tree/0.14.8" }, "funding": [ { @@ -141,7 +141,7 @@ "type": "github" } ], - "time": "2026-02-07T10:57:35+00:00" + "time": "2026-02-10T14:33:43+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -1301,16 +1301,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { @@ -1326,6 +1326,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { @@ -1397,7 +1398,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" + "source": "https://github.com/guzzle/psr7/tree/2.9.0" }, "funding": [ { @@ -1413,7 +1414,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T21:21:41+00:00" + "time": "2026-03-10T16:41:02+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1503,16 +1504,16 @@ }, { "name": "laravel/framework", - "version": "v12.50.0", + "version": "v12.56.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "174ffed91d794a35a541a5eb7c3785a02a34aaba" + "reference": "dac16d424b59debb2273910dde88eb7050a2a709" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/174ffed91d794a35a541a5eb7c3785a02a34aaba", - "reference": "174ffed91d794a35a541a5eb7c3785a02a34aaba", + "url": "https://api.github.com/repos/laravel/framework/zipball/dac16d424b59debb2273910dde88eb7050a2a709", + "reference": "dac16d424b59debb2273910dde88eb7050a2a709", "shasum": "" }, "require": { @@ -1533,7 +1534,7 @@ "guzzlehttp/uri-template": "^1.0", "laravel/prompts": "^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.7", + "league/commonmark": "^2.8.1", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", @@ -1628,7 +1629,7 @@ "orchestra/testbench-core": "^10.9.0", "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", - "phpstan/phpstan": "^2.0", + "phpstan/phpstan": "^2.1.41", "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", "predis/predis": "^2.3|^3.0", "resend/resend-php": "^0.10.0|^1.0", @@ -1721,20 +1722,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-02-04T18:34:13+00:00" + "time": "2026-03-26T14:51:54+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.12", + "version": "v0.3.16", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "4861ded9003b7f8a158176a0b7666f74ee761be8" + "reference": "11e7d5f93803a2190b00e145142cb00a33d17ad2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/4861ded9003b7f8a158176a0b7666f74ee761be8", - "reference": "4861ded9003b7f8a158176a0b7666f74ee761be8", + "url": "https://api.github.com/repos/laravel/prompts/zipball/11e7d5f93803a2190b00e145142cb00a33d17ad2", + "reference": "11e7d5f93803a2190b00e145142cb00a33d17ad2", "shasum": "" }, "require": { @@ -1778,22 +1779,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.12" + "source": "https://github.com/laravel/prompts/tree/v0.3.16" }, - "time": "2026-02-03T06:57:26+00:00" + "time": "2026-03-23T14:35:33+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.9", + "version": "v2.0.11", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "8f631589ab07b7b52fead814965f5a800459cb3e" + "reference": "d1af40ac4a6ccc12bd062a7184f63c9995a63bdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/8f631589ab07b7b52fead814965f5a800459cb3e", - "reference": "8f631589ab07b7b52fead814965f5a800459cb3e", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/d1af40ac4a6ccc12bd062a7184f63c9995a63bdd", + "reference": "d1af40ac4a6ccc12bd062a7184f63c9995a63bdd", "shasum": "" }, "require": { @@ -1841,20 +1842,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2026-02-03T06:55:34+00:00" + "time": "2026-04-07T13:32:18+00:00" }, { "name": "laravel/tinker", - "version": "v2.11.0", + "version": "v2.11.1", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468" + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468", - "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468", + "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741", "shasum": "" }, "require": { @@ -1905,22 +1906,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.11.0" + "source": "https://github.com/laravel/tinker/tree/v2.11.1" }, - "time": "2025-12-19T19:16:45+00:00" + "time": "2026-02-06T14:12:35+00:00" }, { "name": "league/commonmark", - "version": "2.8.0", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" + "reference": "59fb075d2101740c337c7216e3f32b36c204218b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", - "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b", + "reference": "59fb075d2101740c337c7216e3f32b36c204218b", "shasum": "" }, "require": { @@ -1945,9 +1946,9 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 | ^7.0", - "symfony/process": "^5.4 | ^6.0 | ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, @@ -2014,7 +2015,7 @@ "type": "tidelift" } ], - "time": "2025-11-26T21:48:24+00:00" + "time": "2026-03-19T13:16:38+00:00" }, { "name": "league/config", @@ -2100,16 +2101,16 @@ }, { "name": "league/flysystem", - "version": "3.31.0", + "version": "3.33.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff" + "reference": "570b8871e0ce693764434b29154c54b434905350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1717e0b3642b0df65ecb0cc89cdd99fa840672ff", - "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/570b8871e0ce693764434b29154c54b434905350", + "reference": "570b8871e0ce693764434b29154c54b434905350", "shasum": "" }, "require": { @@ -2177,9 +2178,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.31.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.33.0" }, - "time": "2026-01-23T15:38:47+00:00" + "time": "2026-03-25T07:59:30+00:00" }, { "name": "league/flysystem-local", @@ -2288,20 +2289,20 @@ }, { "name": "league/uri", - "version": "7.8.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "4436c6ec8d458e4244448b069cc572d088230b76" + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", - "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/08cf38e3924d4f56238125547b5720496fac8fd4", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.8", + "league/uri-interfaces": "^7.8.1", "php": "^8.1", "psr/http-factory": "^1" }, @@ -2374,7 +2375,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.8.0" + "source": "https://github.com/thephpleague/uri/tree/7.8.1" }, "funding": [ { @@ -2382,20 +2383,20 @@ "type": "github" } ], - "time": "2026-01-14T17:24:56+00:00" + "time": "2026-03-15T20:22:25+00:00" }, { "name": "league/uri-interfaces", - "version": "7.8.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", - "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/85d5c77c5d6d3af6c54db4a78246364908f3c928", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", "shasum": "" }, "require": { @@ -2458,7 +2459,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.1" }, "funding": [ { @@ -2466,33 +2467,33 @@ "type": "github" } ], - "time": "2026-01-15T06:54:53+00:00" + "time": "2026-03-08T20:05:35+00:00" }, { "name": "maatwebsite/excel", - "version": "3.1.67", + "version": "3.1.68", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "e508e34a502a3acc3329b464dad257378a7edb4d" + "reference": "1854739267d81d38eae7d8c623caf523f30f256b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e508e34a502a3acc3329b464dad257378a7edb4d", - "reference": "e508e34a502a3acc3329b464dad257378a7edb4d", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/1854739267d81d38eae7d8c623caf523f30f256b", + "reference": "1854739267d81d38eae7d8c623caf523f30f256b", "shasum": "" }, "require": { "composer/semver": "^3.3", "ext-json": "*", - "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0", + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0||^13.0", "php": "^7.0||^8.0", "phpoffice/phpspreadsheet": "^1.30.0", "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { - "laravel/scout": "^7.0||^8.0||^9.0||^10.0", - "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0", + "laravel/scout": "^7.0||^8.0||^9.0||^10.0||^11.0", + "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0||^11.0", "predis/predis": "^1.1" }, "type": "library", @@ -2535,7 +2536,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.67" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.68" }, "funding": [ { @@ -2547,35 +2548,35 @@ "type": "github" } ], - "time": "2025-08-26T09:13:16+00:00" + "time": "2026-03-17T20:51:10+00:00" }, { "name": "maennchen/zipstream-php", - "version": "3.2.1", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "682f1098a8fddbaf43edac2306a691c7ad508ec5" + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/682f1098a8fddbaf43edac2306a691c7ad508ec5", - "reference": "682f1098a8fddbaf43edac2306a691c7ad508ec5", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-zlib": "*", - "php-64bit": "^8.3" + "php-64bit": "^8.2" }, "require-dev": { "brianium/paratest": "^7.7", "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.86", + "friendsofphp/php-cs-fixer": "^3.16", "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^12.0", + "phpunit/phpunit": "^11.0", "vimeo/psalm": "^6.0" }, "suggest": { @@ -2617,7 +2618,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.1" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" }, "funding": [ { @@ -2625,7 +2626,7 @@ "type": "github" } ], - "time": "2025-12-10T09:58:31+00:00" + "time": "2025-01-27T12:07:53+00:00" }, { "name": "markbaker/complex", @@ -2906,16 +2907,16 @@ }, { "name": "nesbot/carbon", - "version": "3.11.1", + "version": "3.11.4", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f" + "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/e890471a3494740f7d9326d72ce6a8c559ffee60", + "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60", "shasum": "" }, "require": { @@ -3007,20 +3008,20 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:26:29+00:00" + "time": "2026-04-07T09:57:54+00:00" }, { "name": "nette/schema", - "version": "v1.3.3", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", - "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", "shasum": "" }, "require": { @@ -3028,8 +3029,10 @@ "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^2.0@stable", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -3070,22 +3073,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.3" + "source": "https://github.com/nette/schema/tree/v1.3.5" }, - "time": "2025-10-30T22:57:59+00:00" + "time": "2026-02-23T03:47:12+00:00" }, { "name": "nette/utils", - "version": "v4.1.2", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", - "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { @@ -3097,8 +3100,10 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", "nette/tester": "^2.5", - "phpstan/phpstan": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -3159,9 +3164,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.2" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2026-02-03T17:21:09+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "nikic/php-parser", @@ -3223,31 +3228,31 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.3.6" + "symfony/console": "^7.4.4 || ^8.0.4" }, "require-dev": { - "illuminate/console": "^11.46.1", - "laravel/pint": "^1.25.1", + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.3.5", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -3279,7 +3284,7 @@ "email": "enunomaduro@gmail.com" } ], - "description": "Its like Tailwind CSS, but for the console.", + "description": "It's like Tailwind CSS, but for the console.", "keywords": [ "cli", "console", @@ -3290,7 +3295,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + "source": "https://github.com/nunomaduro/termwind/tree/v2.4.0" }, "funding": [ { @@ -3306,7 +3311,7 @@ "type": "github" } ], - "time": "2025-11-20T02:34:59+00:00" + "time": "2026-02-16T23:10:27+00:00" }, { "name": "phpoffice/phpspreadsheet", @@ -3905,16 +3910,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.19", + "version": "v0.12.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "a4f766e5c5b6773d8399711019bb7d90875a50ee" + "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a4f766e5c5b6773d8399711019bb7d90875a50ee", - "reference": "a4f766e5c5b6773d8399711019bb7d90875a50ee", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3be75d5b9244936dd4ac62ade2bfb004d13acf0f", + "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f", "shasum": "" }, "require": { @@ -3978,9 +3983,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.19" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.22" }, - "time": "2026-01-30T17:33:13+00:00" + "time": "2026-03-22T23:03:24+00:00" }, { "name": "ralouphie/getallheaders", @@ -4262,16 +4267,16 @@ }, { "name": "symfony/clock", - "version": "v7.4.0", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", - "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "url": "https://api.github.com/repos/symfony/clock/zipball/674fa3b98e21531dd040e613479f5f6fa8f32111", + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111", "shasum": "" }, "require": { @@ -4316,7 +4321,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.4.0" + "source": "https://github.com/symfony/clock/tree/v7.4.8" }, "funding": [ { @@ -4336,20 +4341,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:39:26+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/console", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", - "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "url": "https://api.github.com/repos/symfony/console/zipball/1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", "shasum": "" }, "require": { @@ -4414,7 +4419,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.4" + "source": "https://github.com/symfony/console/tree/v7.4.8" }, "funding": [ { @@ -4434,20 +4439,20 @@ "type": "tidelift" } ], - "time": "2026-01-13T11:36:38+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.0", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" + "reference": "b055f228a4178a1d6774909903905e3475f3eac8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", - "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b055f228a4178a1d6774909903905e3475f3eac8", + "reference": "b055f228a4178a1d6774909903905e3475f3eac8", "shasum": "" }, "require": { @@ -4483,7 +4488,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.0" + "source": "https://github.com/symfony/css-selector/tree/v7.4.8" }, "funding": [ { @@ -4503,7 +4508,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T13:39:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4574,16 +4579,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", - "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", "shasum": "" }, "require": { @@ -4632,7 +4637,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.4" + "source": "https://github.com/symfony/error-handler/tree/v7.4.8" }, "funding": [ { @@ -4652,20 +4657,20 @@ "type": "tidelift" } ], - "time": "2026-01-20T16:42:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "dc2c0eba1af673e736bb851d747d266108aea746" + "reference": "f57b899fa736fd71121168ef268f23c206083f0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", - "reference": "dc2c0eba1af673e736bb851d747d266108aea746", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f57b899fa736fd71121168ef268f23c206083f0a", + "reference": "f57b899fa736fd71121168ef268f23c206083f0a", "shasum": "" }, "require": { @@ -4717,7 +4722,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.8" }, "funding": [ { @@ -4737,7 +4742,7 @@ "type": "tidelift" } ], - "time": "2026-01-05T11:45:34+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4817,16 +4822,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" + "reference": "e0be088d22278583a82da281886e8c3592fbf149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", + "reference": "e0be088d22278583a82da281886e8c3592fbf149", "shasum": "" }, "require": { @@ -4861,7 +4866,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.5" + "source": "https://github.com/symfony/finder/tree/v7.4.8" }, "funding": [ { @@ -4881,20 +4886,20 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "446d0db2b1f21575f1284b74533e425096abdfb6" + "reference": "9381209597ec66c25be154cbf2289076e64d1eab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6", - "reference": "446d0db2b1f21575f1284b74533e425096abdfb6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", + "reference": "9381209597ec66c25be154cbf2289076e64d1eab", "shasum": "" }, "require": { @@ -4943,7 +4948,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.5" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" }, "funding": [ { @@ -4963,20 +4968,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T16:16:02+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a" + "reference": "017e76ad089bac281553389269e259e155935e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/229eda477017f92bd2ce7615d06222ec0c19e82a", - "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/017e76ad089bac281553389269e259e155935e1a", + "reference": "017e76ad089bac281553389269e259e155935e1a", "shasum": "" }, "require": { @@ -5018,7 +5023,7 @@ "symfony/config": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", "symfony/dom-crawler": "^6.4|^7.0|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", @@ -5062,7 +5067,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.8" }, "funding": [ { @@ -5082,20 +5087,20 @@ "type": "tidelift" } ], - "time": "2026-01-28T10:33:42+00:00" + "time": "2026-03-31T20:57:01+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6" + "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b750074c40c694ceb34cb926d6dffee231c5cd6", - "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f6ea532250b476bfc1b56699b388a1bdbf168f62", + "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62", "shasum": "" }, "require": { @@ -5146,7 +5151,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.4" + "source": "https://github.com/symfony/mailer/tree/v7.4.8" }, "funding": [ { @@ -5166,20 +5171,20 @@ "type": "tidelift" } ], - "time": "2026-01-08T08:25:11+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/mime", - "version": "v7.4.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148" + "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b18c7e6e9eee1e19958138df10412f3c4c316148", - "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148", + "url": "https://api.github.com/repos/symfony/mime/zipball/6df02f99998081032da3407a8d6c4e1dcb5d4379", + "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379", "shasum": "" }, "require": { @@ -5190,7 +5195,7 @@ }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/reflection-docblock": "<5.2|>=7", "phpdocumentor/type-resolver": "<1.5.1", "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" @@ -5198,7 +5203,7 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^5.2", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/process": "^6.4|^7.0|^8.0", "symfony/property-access": "^6.4|^7.0|^8.0", @@ -5235,7 +5240,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.5" + "source": "https://github.com/symfony/mime/tree/v7.4.8" }, "funding": [ { @@ -5255,7 +5260,7 @@ "type": "tidelift" } ], - "time": "2026-01-27T08:59:58+00:00" + "time": "2026-03-30T14:11:46+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6088,16 +6093,16 @@ }, { "name": "symfony/process", - "version": "v7.4.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "608476f4604102976d687c483ac63a79ba18cc97" + "reference": "60f19cd3badc8de688421e21e4305eba50f8089a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", - "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "url": "https://api.github.com/repos/symfony/process/zipball/60f19cd3badc8de688421e21e4305eba50f8089a", + "reference": "60f19cd3badc8de688421e21e4305eba50f8089a", "shasum": "" }, "require": { @@ -6129,7 +6134,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.5" + "source": "https://github.com/symfony/process/tree/v7.4.8" }, "funding": [ { @@ -6149,20 +6154,20 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/routing", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0798827fe2c79caeed41d70b680c2c3507d10147" + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0798827fe2c79caeed41d70b680c2c3507d10147", - "reference": "0798827fe2c79caeed41d70b680c2c3507d10147", + "url": "https://api.github.com/repos/symfony/routing/zipball/9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", "shasum": "" }, "require": { @@ -6214,7 +6219,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.4" + "source": "https://github.com/symfony/routing/tree/v7.4.8" }, "funding": [ { @@ -6234,7 +6239,7 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:19:02+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/service-contracts", @@ -6325,16 +6330,16 @@ }, { "name": "symfony/string", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" + "reference": "114ac57257d75df748eda23dd003878080b8e688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", - "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688", + "reference": "114ac57257d75df748eda23dd003878080b8e688", "shasum": "" }, "require": { @@ -6392,7 +6397,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.4" + "source": "https://github.com/symfony/string/tree/v7.4.8" }, "funding": [ { @@ -6412,20 +6417,20 @@ "type": "tidelift" } ], - "time": "2026-01-12T10:54:30+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/translation", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bfde13711f53f549e73b06d27b35a55207528877" + "reference": "33600f8489485425bfcddd0d983391038d3422e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bfde13711f53f549e73b06d27b35a55207528877", - "reference": "bfde13711f53f549e73b06d27b35a55207528877", + "url": "https://api.github.com/repos/symfony/translation/zipball/33600f8489485425bfcddd0d983391038d3422e7", + "reference": "33600f8489485425bfcddd0d983391038d3422e7", "shasum": "" }, "require": { @@ -6492,7 +6497,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.4" + "source": "https://github.com/symfony/translation/tree/v7.4.8" }, "funding": [ { @@ -6512,7 +6517,7 @@ "type": "tidelift" } ], - "time": "2026-01-13T10:40:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/translation-contracts", @@ -6598,16 +6603,16 @@ }, { "name": "symfony/uid", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" + "reference": "6883ebdf7bf6a12b37519dbc0df62b0222401b56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", - "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", + "url": "https://api.github.com/repos/symfony/uid/zipball/6883ebdf7bf6a12b37519dbc0df62b0222401b56", + "reference": "6883ebdf7bf6a12b37519dbc0df62b0222401b56", "shasum": "" }, "require": { @@ -6652,7 +6657,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.4" + "source": "https://github.com/symfony/uid/tree/v7.4.8" }, "funding": [ { @@ -6672,20 +6677,20 @@ "type": "tidelift" } ], - "time": "2026-01-03T23:30:35+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0e4769b46a0c3c62390d124635ce59f66874b282" + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e4769b46a0c3c62390d124635ce59f66874b282", - "reference": "0e4769b46a0c3c62390d124635ce59f66874b282", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", "shasum": "" }, "require": { @@ -6739,7 +6744,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" }, "funding": [ { @@ -6759,7 +6764,7 @@ "type": "tidelift" } ], - "time": "2026-01-01T22:13:48+00:00" + "time": "2026-03-30T13:44:50+00:00" }, { "name": "thecodingmachine/safe", @@ -7121,38 +7126,39 @@ "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v3.6.1", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "b106f7ee85f263c4f103eca49e7bf3862c2e5e75" + "reference": "ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b106f7ee85f263c4f103eca49e7bf3862c2e5e75", - "reference": "b106f7ee85f263c4f103eca49e7bf3862c2e5e75", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a", + "reference": "ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.4", "composer/class-map-generator": "^1.0", "ext-json": "*", - "illuminate/console": "^11.15 || ^12", - "illuminate/database": "^11.15 || ^12", - "illuminate/filesystem": "^11.15 || ^12", - "illuminate/support": "^11.15 || ^12", + "illuminate/console": "^11.15 || ^12 || ^13.0", + "illuminate/database": "^11.15 || ^12 || ^13.0", + "illuminate/filesystem": "^11.15 || ^12 || ^13.0", + "illuminate/support": "^11.15 || ^12 || ^13.0", "php": "^8.2" }, "require-dev": { "ext-pdo_sqlite": "*", "friendsofphp/php-cs-fixer": "^3", - "illuminate/config": "^11.15 || ^12", - "illuminate/view": "^11.15 || ^12", + "illuminate/config": "^11.15 || ^12 || ^13.0", + "illuminate/view": "^11.15 || ^12 || ^13.0", + "larastan/larastan": "^3.1", "mockery/mockery": "^1.4", - "orchestra/testbench": "^9.2 || ^10", - "phpunit/phpunit": "^10.5 || ^11.5.3", + "orchestra/testbench": "^9.2 || ^10 || ^11.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5 || ^11.5.3 || ^12.5.12", "spatie/phpunit-snapshot-assertions": "^4 || ^5", - "vimeo/psalm": "^5.4", "vlucas/phpdotenv": "^5" }, "suggest": { @@ -7166,7 +7172,7 @@ ] }, "branch-alias": { - "dev-master": "3.5-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -7199,7 +7205,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.6.1" + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.7.0" }, "funding": [ { @@ -7211,20 +7217,20 @@ "type": "github" } ], - "time": "2025-12-10T09:11:07+00:00" + "time": "2026-03-17T14:12:51+00:00" }, { "name": "barryvdh/reflection-docblock", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201" + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/d103774cbe7e94ddee7e4870f97f727b43fe7201", - "reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", "shasum": "" }, "require": { @@ -7261,22 +7267,22 @@ } ], "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.1" }, - "time": "2025-07-17T06:07:30+00:00" + "time": "2026-03-05T20:09:01+00:00" }, { "name": "composer/class-map-generator", - "version": "1.7.1", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "8f5fa3cc214230e71f54924bd0197a3bcc705eb1" + "reference": "6a9c2f0970022ab00dc58c07d0685dd712f2231b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8f5fa3cc214230e71f54924bd0197a3bcc705eb1", - "reference": "8f5fa3cc214230e71f54924bd0197a3bcc705eb1", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/6a9c2f0970022ab00dc58c07d0685dd712f2231b", + "reference": "6a9c2f0970022ab00dc58c07d0685dd712f2231b", "shasum": "" }, "require": { @@ -7320,7 +7326,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.7.1" + "source": "https://github.com/composer/class-map-generator/tree/1.7.2" }, "funding": [ { @@ -7332,7 +7338,7 @@ "type": "github" } ], - "time": "2025-12-29T13:15:25+00:00" + "time": "2026-03-30T15:36:56+00:00" }, { "name": "fakerphp/faker", @@ -7521,29 +7527,29 @@ }, { "name": "laravel/breeze", - "version": "v2.3.8", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/laravel/breeze.git", - "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd" + "reference": "28cefeaf6af20177ddf5cc7b93e87e4ad79d533f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/breeze/zipball/1a29c5792818bd4cddf70b5f743a227e02fbcfcd", - "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd", + "url": "https://api.github.com/repos/laravel/breeze/zipball/28cefeaf6af20177ddf5cc7b93e87e4ad79d533f", + "reference": "28cefeaf6af20177ddf5cc7b93e87e4ad79d533f", "shasum": "" }, "require": { - "illuminate/console": "^11.0|^12.0", - "illuminate/filesystem": "^11.0|^12.0", - "illuminate/support": "^11.0|^12.0", - "illuminate/validation": "^11.0|^12.0", + "illuminate/console": "^11.0|^12.0|^13.0", + "illuminate/filesystem": "^11.0|^12.0|^13.0", + "illuminate/support": "^11.0|^12.0|^13.0", + "illuminate/validation": "^11.0|^12.0|^13.0", "php": "^8.2.0", - "symfony/console": "^7.0" + "symfony/console": "^7.0|^8.0" }, "require-dev": { - "laravel/framework": "^11.0|^12.0", - "orchestra/testbench-core": "^9.0|^10.0", + "laravel/framework": "^11.0|^12.0|^13.0", + "orchestra/testbench-core": "^9.0|^10.0|^11.0", "phpstan/phpstan": "^2.0" }, "type": "library", @@ -7578,20 +7584,20 @@ "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" }, - "time": "2025-07-18T18:49:59+00:00" + "time": "2026-03-10T19:59:01+00:00" }, { "name": "laravel/pail", - "version": "v1.2.5", + "version": "v1.2.6", "source": { "type": "git", "url": "https://github.com/laravel/pail.git", - "reference": "fdb73f5eacf03db576c710d5a00101ba185f2254" + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pail/zipball/fdb73f5eacf03db576c710d5a00101ba185f2254", - "reference": "fdb73f5eacf03db576c710d5a00101ba185f2254", + "url": "https://api.github.com/repos/laravel/pail/zipball/aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", "shasum": "" }, "require": { @@ -7658,20 +7664,20 @@ "issues": "https://github.com/laravel/pail/issues", "source": "https://github.com/laravel/pail" }, - "time": "2026-02-04T15:10:32+00:00" + "time": "2026-02-09T13:44:54+00:00" }, { "name": "laravel/pint", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90" + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90", - "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90", + "url": "https://api.github.com/repos/laravel/pint/zipball/bdec963f53172c5e36330f3a400604c69bf02d39", + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39", "shasum": "" }, "require": { @@ -7682,13 +7688,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.92.4", - "illuminate/view": "^12.44.0", - "larastan/larastan": "^3.8.1", - "laravel-zero/framework": "^12.0.4", + "friendsofphp/php-cs-fixer": "^3.94.2", + "illuminate/view": "^12.54.1", + "larastan/larastan": "^3.9.3", + "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.3", - "pestphp/pest": "^3.8.4" + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest": "^3.8.6", + "shipfastlabs/agent-detector": "^1.1.0" }, "bin": [ "builds/pint" @@ -7725,32 +7732,32 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-01-05T16:49:17+00:00" + "time": "2026-03-12T15:51:39+00:00" }, { "name": "laravel/sail", - "version": "v1.52.0", + "version": "v1.56.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3" + "reference": "f43426bb42a1cb7a51a3861d9138063e54766d28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/64ac7d8abb2dbcf2b76e61289451bae79066b0b3", - "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3", + "url": "https://api.github.com/repos/laravel/sail/zipball/f43426bb42a1cb7a51a3861d9138063e54766d28", + "reference": "f43426bb42a1cb7a51a3861d9138063e54766d28", "shasum": "" }, "require": { - "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", - "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", - "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0|^13.0", "php": "^8.0", - "symfony/console": "^6.0|^7.0", - "symfony/yaml": "^6.0|^7.0" + "symfony/console": "^6.0|^7.0|^8.0", + "symfony/yaml": "^6.0|^7.0|^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0|^11.0", "phpstan/phpstan": "^2.0" }, "bin": [ @@ -7788,7 +7795,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2026-01-01T02:46:03+00:00" + "time": "2026-04-01T15:17:32+00:00" }, { "name": "mockery/mockery", @@ -7935,39 +7942,36 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.3", + "version": "v8.9.3", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + "reference": "b0d8ab95b29c3189aeeb902d81215231df4c1b64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b0d8ab95b29c3189aeeb902d81215231df4c1b64", + "reference": "b0d8ab95b29c3189aeeb902d81215231df4c1b64", "shasum": "" }, "require": { - "filp/whoops": "^2.18.1", - "nunomaduro/termwind": "^2.3.1", + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", "php": "^8.2.0", - "symfony/console": "^7.3.0" + "symfony/console": "^7.4.8 || ^8.0.4" }, "conflict": { - "laravel/framework": "<11.44.2 || >=13.0.0", - "phpunit/phpunit": "<11.5.15 || >=13.0.0" + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" }, "require-dev": { - "brianium/paratest": "^7.8.3", - "larastan/larastan": "^3.4.2", - "laravel/framework": "^11.44.2 || ^12.18", - "laravel/pint": "^1.22.1", - "laravel/sail": "^1.43.1", - "laravel/sanctum": "^4.1.1", - "laravel/tinker": "^2.10.1", - "orchestra/testbench-core": "^9.12.0 || ^10.4", - "pestphp/pest": "^3.8.2 || ^4.0.0", - "sebastian/environment": "^7.2.1 || ^8.0" + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.9.3", + "laravel/framework": "^11.48.0 || ^12.56.0 || ^13.2.0", + "laravel/pint": "^1.29.0", + "orchestra/testbench-core": "^9.12.0 || ^10.12.1 || ^11.0.0", + "pestphp/pest": "^3.8.5 || ^4.4.3 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.0.4 || ^9.0.0" }, "type": "library", "extra": { @@ -8030,7 +8034,7 @@ "type": "patreon" } ], - "time": "2025-11-20T02:55:25+00:00" + "time": "2026-04-06T19:25:53+00:00" }, { "name": "phar-io/manifest", @@ -8499,16 +8503,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.51", + "version": "11.5.55", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ad14159f92910b0f0e3928c13e9b2077529de091" + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ad14159f92910b0f0e3928c13e9b2077529de091", - "reference": "ad14159f92910b0f0e3928c13e9b2077529de091", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00", + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00", "shasum": "" }, "require": { @@ -8581,7 +8585,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.51" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.55" }, "funding": [ { @@ -8605,7 +8609,7 @@ "type": "tidelift" } ], - "time": "2026-02-05T07:59:30+00:00" + "time": "2026-02-18T12:37:06+00:00" }, { "name": "sebastian/cli-parser", @@ -9647,16 +9651,16 @@ }, { "name": "symfony/yaml", - "version": "v7.4.1", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", - "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", "shasum": "" }, "require": { @@ -9699,7 +9703,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.1" + "source": "https://github.com/symfony/yaml/tree/v7.4.8" }, "funding": [ { @@ -9719,7 +9723,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:11:45+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "theseer/tokenizer", @@ -9781,5 +9785,8 @@ "php": "^8.2" }, "platform-dev": {}, + "platform-overrides": { + "php": "8.2.0" + }, "plugin-api-version": "2.6.0" } diff --git a/database/migrations/2026_02_07_130000_create_calon_penerimas_table.php b/database/migrations/2026_02_07_130000_create_calon_penerimas_table.php index 67e8e5d..087ffe5 100644 --- a/database/migrations/2026_02_07_130000_create_calon_penerimas_table.php +++ b/database/migrations/2026_02_07_130000_create_calon_penerimas_table.php @@ -6,37 +6,44 @@ return new class extends Migration { - /** - * Run the migrations. - */ - public function up(): void + public function up(): void { Schema::create('calon_penerimas', function (Blueprint $table) { - $table->id(); // NO. URUT + $table->id(); $table->foreignId('user_id')->constrained('users')->onDelete('cascade'); $table->foreignId('rt_id')->constrained('rts')->onDelete('cascade'); - - // Data Sesuai Kebutuhan - $table->string('no_kk', 16); // NO. KK - $table->string('nik', 16)->unique(); // NO. NIK KTP - $table->string('nama_lengkap'); // NAMA LENGKAP - $table->enum('jenis_kelamin', ['Laki-laki', 'Perempuan']); // JENIS KELAMIN - $table->string('tempat_lahir'); // TEMPAT LAHIR - $table->date('tanggal_lahir'); // TANGGAL LAHIR - $table->text('alamat'); // ALAMAT - $table->string('desa'); // DESA - $table->string('pekerjaan'); // PEKERJAAN - $table->decimal('penghasilan', 15, 2); // PENGHASILAN - $table->integer('jumlah_tanggungan'); // JUMLAH TANGGUNGAN - $table->string('aset_kepemilikan'); // ASET KEPEMILIKAN - $table->enum('bantuan_lain', ['ya', 'tidak']); // BANTUAN LAIN - $table->integer('usia'); // USIA - $table->string('status_perkawinan'); // STATUS PERKAWINAN - - // Untuk sistem (verifikasi admin) + + $table->string('no_kk', 16); + $table->string('nik', 16)->unique(); + $table->string('nama_lengkap'); + $table->enum('jenis_kelamin', ['Laki-laki', 'Perempuan']); + $table->string('tempat_lahir'); + $table->date('tanggal_lahir'); + $table->text('alamat'); + $table->string('desa'); + $table->string('pekerjaan'); + $table->decimal('penghasilan', 15, 2); + $table->integer('jumlah_tanggungan'); + $table->string('aset_kepemilikan'); + $table->string('kondisi_rumah')->default('Tidak Diketahui'); + $table->string('meteran_listrik')->default('Tidak Diketahui'); + $table->string('sumber_air')->default('Tidak Diketahui'); + $table->enum('bantuan_lain', ['ya', 'tidak']); + $table->integer('usia'); + $table->string('status_perkawinan'); $table->enum('status_verifikasi', ['pending', 'disetujui', 'ditolak'])->default('pending'); $table->text('catatan_admin')->nullable(); - + + $table->string('foto_rumah_depan')->nullable(); + $table->string('foto_rumah_belakang')->nullable(); + $table->string('foto_rumah_kanan')->nullable(); + $table->string('foto_rumah_kiri')->nullable(); + $table->string('foto_kk')->nullable(); + $table->string('foto_ktp')->nullable(); + $table->string('foto_rekening_listrik')->nullable(); + $table->string('foto_meteran_air')->nullable(); + $table->string('dokumen_pendukung')->nullable(); + $table->timestamps(); }); } @@ -45,4 +52,4 @@ public function down(): void { Schema::dropIfExists('calon_penerimas'); } -}; +}; \ No newline at end of file diff --git a/database/migrations/2026_02_07_140000_create_prediksi_kelayakans_table.php b/database/migrations/2026_02_07_140000_create_prediksi_kelayakans_table.php index 3d18ad6..bf9f2f8 100644 --- a/database/migrations/2026_02_07_140000_create_prediksi_kelayakans_table.php +++ b/database/migrations/2026_02_07_140000_create_prediksi_kelayakans_table.php @@ -6,16 +6,16 @@ return new class extends Migration { - /** - * Run the migrations. - */ - public function up(): void + public function up(): void { Schema::create('prediksi_kelayakans', function (Blueprint $table) { $table->id(); $table->foreignId('calon_penerima_id')->constrained('calon_penerimas')->onDelete('cascade'); - $table->decimal('probability', 5, 2); // Probabilitas kelayakan (0-100) - $table->string('recommendation'); // Sangat Layak, Layak, Kurang Layak + $table->decimal('probability', 5, 2); + $table->string('recommendation'); + $table->string('kondisi_rumah')->default('Tidak Diketahui'); + $table->string('meteran_listrik')->default('Tidak Diketahui'); + $table->string('sumber_air')->default('Tidak Diketahui'); $table->timestamps(); }); } @@ -24,4 +24,4 @@ public function down(): void { Schema::dropIfExists('prediksi_kelayakans'); } -}; +}; \ No newline at end of file diff --git a/database/migrations/2026_04_17_015802_create_password_reset_tokens_table.php b/database/migrations/2026_04_17_015802_create_password_reset_tokens_table.php new file mode 100644 index 0000000..2ecc465 --- /dev/null +++ b/database/migrations/2026_04_17_015802_create_password_reset_tokens_table.php @@ -0,0 +1,22 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; \ No newline at end of file diff --git a/error_log b/error_log new file mode 100644 index 0000000..8bc990f --- /dev/null +++ b/error_log @@ -0,0 +1,21 @@ +[08-Apr-2026 16:30:23 UTC] PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.3.0". You are running 8.2.30. in /home/tamyhost/public_html/E31232406/vendor/composer/platform_check.php on line 26 +[08-Apr-2026 17:03:37 UTC] PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.3.0". You are running 8.2.30. in /home/tamyhost/public_html/E31232406/vendor/composer/platform_check.php on line 26 +[08-Apr-2026 17:06:51 UTC] PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.3.0". You are running 8.2.30. in /home/tamyhost/public_html/E31232406/vendor/composer/platform_check.php on line 26 +[08-Apr-2026 17:42:39 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:39 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:39 UTC] PHP Fatal error: Uncaught Error: Failed opening required '/home/tamyhost/public_html/E31232406/../vendor/autoload.php' (include_path='.:/opt/cpanel/ea-php82/root/usr/share/pear') in /home/tamyhost/public_html/E31232406/index.php:14 +Stack trace: +#0 {main} + thrown in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:42 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:42 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:42 UTC] PHP Fatal error: Uncaught Error: Failed opening required '/home/tamyhost/public_html/E31232406/../vendor/autoload.php' (include_path='.:/opt/cpanel/ea-php82/root/usr/share/pear') in /home/tamyhost/public_html/E31232406/index.php:14 +Stack trace: +#0 {main} + thrown in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:43 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:43 UTC] PHP Warning: require(/home/tamyhost/public_html/E31232406/../vendor/autoload.php): Failed to open stream: No such file or directory in /home/tamyhost/public_html/E31232406/index.php on line 14 +[08-Apr-2026 17:42:43 UTC] PHP Fatal error: Uncaught Error: Failed opening required '/home/tamyhost/public_html/E31232406/../vendor/autoload.php' (include_path='.:/opt/cpanel/ea-php82/root/usr/share/pear') in /home/tamyhost/public_html/E31232406/index.php:14 +Stack trace: +#0 {main} + thrown in /home/tamyhost/public_html/E31232406/index.php on line 14 diff --git a/ml/predict.py b/ml/predict.py index 7b9a399..651a581 100644 --- a/ml/predict.py +++ b/ml/predict.py @@ -2,15 +2,19 @@ import json import sys def predict(data): - pekerjaan = str(data.get("pekerjaan","")).lower() - penghasilan = float(data.get("penghasilan",0)) - tanggungan = int(data.get("jumlah_tanggungan",0)) - aset = str(data.get("aset_kepemilikan","")).lower() - bantuan_lain = str(data.get("bantuan_lain","")).lower() - usia = int(data.get("usia",0)) + pekerjaan = str(data.get("pekerjaan", "")).lower() + penghasilan = float(data.get("penghasilan", 0)) + tanggungan = int(data.get("jumlah_tanggungan", 0)) + aset = str(data.get("aset_kepemilikan", "")).lower() + bantuan_lain = str(data.get("bantuan_lain", "")).lower() + usia = int(data.get("usia", 0)) + kondisi_rumah = str(data.get("kondisi_rumah", "")).lower() + meteran_listrik= str(data.get("meteran_listrik", "")).lower() + sumber_air = str(data.get("sumber_air", "")).lower() score = 0 + # Parameter lama (tidak diubah) if pekerjaan in ["buruh", "tidak bekerja", "petani", "nelayan"]: score += 0.2 @@ -31,22 +35,32 @@ def predict(data): if usia >= 60: score += 0.1 - probability = max(0, min(score,1)) + # Parameter baru + if kondisi_rumah == "tidak layak": + score += 0.15 + elif kondisi_rumah == "sedang": + score += 0.05 + + if meteran_listrik == "450va": + score += 0.1 + elif meteran_listrik == "900va": + score += 0.05 + + if sumber_air == "sungai": + score += 0.1 + elif sumber_air == "sumur": + score += 0.05 + + probability = max(0, min(score, 1)) recommendation = "Layak" if probability >= 0.5 else "Tidak Layak" return { - "probability": round(probability,4), + "probability": round(probability, 4), "recommendation": recommendation } def read_input(): - """ - Prioritas baca: - 1) STDIN (kalau ada) - 2) argv[1] (kalau ada) - """ try: - # Coba baca dari STDIN if not sys.stdin.isatty(): raw = sys.stdin.read().strip() if raw: @@ -54,7 +68,6 @@ def read_input(): except: pass - # Fallback ke argv if len(sys.argv) > 1: raw = sys.argv[1] return json.loads(raw) @@ -63,7 +76,7 @@ def read_input(): if __name__ == "__main__": try: - data = read_input() + data = read_input() result = predict(data) print(json.dumps(result)) except Exception as e: diff --git a/public/login-gedung.jpg b/public/login-gedung.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d2491e77ee6173c7caed30fa25ce3590079fb33 GIT binary patch literal 227894 zcmbrmbzEE7_9%XWd+`DV26rb|kij*fNN_2h1cxAn!VI)P@#2smMT67g-k~iH2?Q-t z!$P2nv_og+-WPiB`~KeN{eJ)b*2y_%?|t?@S!*xdlKlJCzuy7u*5+2`00;yCAj$#! z`#lh9b{7={09ICV00RI3)PO383ZSQ?)F>w>6*WLbxl>UN)I*x zx&=@`571CbRMgZ|sA~UH%aD%p0-NtOhoKnwmoIxZg=iY6kuPeZjw902~Z7Pw5P) zL1F+E2Z)*j^zTVPm4Ysa0{_AE=M_XnO+!m}T}XldyZqnV01Gt;pkk+Hr*zNhr@fDF zHK_oZWtHomvF!-Oum%s z#5HjL=k|YG4FPsQhLXQ#86^p@FJC9Hz|BX!k9wRbh^$`cDc^>p)Bz#?HzNNj1SVO2 zCjQG7O07)3)U1^MJ_LXa5ek0)llz|p?f<0yCt>*WYp=6XDL>x^WoM#vhfj+3U)uLd zQvq%;%TM_M1n5Nh0NUE0=>AV@;JUZ2;eQah&QQAM=ZAvy|2NqE-^GUiPl3pPl0Q2c z03yGA{YL2t5md^5iYpMNTP~F{NU=im7}XwkIzY#tT@48smQnD4vCs}%^5~|nz zLB;p89o2PvD!x?8_5TK{lnf~VsQ6hd^0RhE%KuS^{lDq|lxdG@|3zWQPu@t#6x17M zNwhLmJ;C?(ox>2X{$O4B_y12!VROZ92-}Kn>x%y9b%mZg;N>| zJ^;4Ib&{1)mfcCjCxzXiXp+V7fI^4s@Bt`5v$o9eA0cC(xXx3+@aOgCMJk1I)4q528f9vjApqpCWQees(fKbP z9)5ne5vbF)$wq#LwqND)trC8*7s{__I=ST>l%*acv0QYqw35lo6%g~q`>LSZU~DzpyMHas>U6-F6QCSYP~q*7a$qQWhe zTKiLaQeZzt%Swhb&0P&eL7qlc!UqKYsWTL^DD0#tqX@9~VgEy23Pts40mj;*`{+$D zX_cY3Z~vyPm;KVCyODABelAs?t$WdZ*6n5FsPXRXleEcI=Y(<#U8tMereJc;*^5!2O;^fqpIz#(73E2 z*^q1j3!HJ-6LGDi_oF1XJnhMoq|A?=zHk0M(`Pz2AwB`?3!H6{Yy588j@4c+N!)>- zJs24~)fY;_>dT)6T%OL{@Jp(_d|a}*>Wxec!8Z`~NW$6g*v`|12A^A?UI@)#my9AA z-~4IzDPPyN7xTn^&cgbz7hOGlB(rr+>^p1wSQD0K6*)OU3s7sire-r?o`!-{sO)I= zPY+HhcH_EN0CteA?bvD>6HLW6FpQd$v$aK|*^{?lVZZ4O_qz46G0cuihUg-2GNpEp zwzwhTl=F#aymxZXN=(@dWX5uI=Vs0$XCXeq$b5T2HUAuGv_pGKb*J)fbGAS7?rY?> zz+Gj-Ui8}hrv4Y=c$E9Dx>Z(D7yLE9L3k5%B}C0@;kN9!gP;1E34dvVS8yIbUO)pA zu*k!zmi@rJh~;HMg;9*u7cHl(UMTA%N$VzkJ9e|TT<{S64O?XqBbYPDrIdG3%#zre z)bK>npJ!<3*8GwCP${x(naW(k5igZZ?WnSh$9F$@?dck+R62_x^?fsg{ zjG|px(!f!dXR+7Tl;Y4R04l$EN2Edq3)DMSs1Az`wRNeHo>&GAR$?h$E<>zbOptf= zDXl-JN95k{55d#a_88KeVvyX|9u03VC3SN2%93?;WHu~Q>#!y-SI+CHrZTI)H{vGD zx1JEcEo~O{EPg5DT7)k}d8pHlNtw@+ z403;L?O4tu?#^Moos?1yU$DQ-c~abUZS{U?8NhM{NifCQYl_gM%MtF2eeKwH9o8bD zj_*i&cEH>%8>u)sIU43aAM`Ha2NJXl{~bOfF#Q1rfz z6%UBK^gPjA>~){ec=15oJP2tX0ykdvtVu0=>Nmi+0eau224?w72SZ$)(7>@EXnVk` ziXO*@M7&}zbXs3l=VF7aLGM;mY5M$54*Ymkhyz9Cz5D!4B;!s}vVAzpkYXxM4?fgV zDE^NrrTKahU9{YqB1+{;?LZJ3w%u(j8-k)VLpJBO{%HLFJ>i$=JIahUZ&vA|HmlN1!J2_tSJA*AOlz^EXKkYsbD^+<@f2 zR^5Trv4h}Qsr)WRM*>UrL;Sl@>Kz9Nw^>3%38Y*k_L+`ubC%HV(5W(v)Yvs6L&ZWR z=j`r|msRMYnq`XQZR9Hqpp`HI+08@!_#|yb`izO}a5<(@&tBtD696!!7w+~A&sfcq zhsYR$Cz#oCb*Eo~DK?+trWCI|fe*z@ricL1vG1bq+nIJyImt`r+eHZft@8P3Y&hHF zEQC0-E}*)?XJm<4F%!vT22mWLBm-Y+AMl*IQN_dcQRk+g_9ik?I3?k9 z#R8jXd0t+dFMndbq}bcWl_3(njKE2A$J(9~!WUUz(k=@wMNYit8#m!{Q+KCJ_Qcw} zHG?@#O;kJpAsUsrL(0D1mZ-jg5sIA@n&HyDDeqmrNO(|_2QBQKTBxf)2A!Iytl>+7 z1QgbS&0wtBxcet=mQGeJ`34_Oi=Fz5wo4z}f~%?o7e+kLr_Xpt2|egoa z;rFRS=&srW$b+I0U-XJ_7`2eit#X)@Z_Phec;Xtt*6Rx>Wu6P_lYM%4szF5|1*-ky z3bIC*Lg6F8OUYBENI%Zsdc|D|nD`nzu0EN-3a+TeD<*8kBOrl}E+uQ*CblIgRm>cH z;vU;-TGw~dO1vP;XKj=5FY3cz#fQHTUq!1o9wCeftFbwncaI(Bu&&mx z4Mz@ia&qhw{1&E{*O6=qaP6_^us;bDxemNR&ua?(v88lb?7zA!T#5izbJoV{n_Oj0 zD?>eeG@ioYi6l7zKvb#)0M#RJ8TS|sa}-UBG~TbG<(z(})WcfCvi|N?MMFG+P(DlO zEzlPld+gdNMsx@f;Yg~o=t!Wt$GmXE{wgm15B=&HwucS}^4(wQBZ_gH<9oQr4M$`| zouHTODBmj6lBu~zfXPTNbsV}HMELQJ1fiymB;9MEZ&Q!qBm;#Fb4obT?hMruCVIb=i z#TpoX?4pa`tXXm%OSvpBS%M{GUfxi6VwLc`W1+Oyy=HMlLJp~f6!6`ec@<2fLR*u1 z$lcG!xq__a8rVAo02wNKaCBVMw`)>UC}%Cj1tT77@PZFe_3nX*zag4sC_^ex#?@vG z+Z5VHwho9qk3BcLqZ03;?722zT*(l|NWjkfH)>`As0X$*Q`QtUG=eU!sd=bZ9V67p zY=LXaq8rk}m4|XCM`Y`vaWk~T%d+UNiO~r&^)@7BOTC%nh9&RJgoPC+N_?gF3A^DP z_^RQt!SZ`usi9=XHzb780>@2oncnY+MHNk(oaNj+&gaPcFV%>WbioC>4FYjR9ZrzB zLSKyaB&cc0x-0+L+F=a=e%RV3hZLxbi;kUZXEX$Hhv(|vA8VQU?@s=6w< z=$dE>Y-$VKKeNZpQw|j02g1I@JY3yQi)NuUdQ+Yx!*BtNMvc%es}rPT*lU zv1*M4%0)9l$B2_1vs{G``iuZ>4BT^ls_!I4M#}MVLj{d%3lB@$q$m%h)P_G~^*)Ju7LjrIgNuhNPzFEpQ^)@k67h z`g)$DPlsoEAGb;LE3`4f+l3>{yOL&h(hKdS&7#%2&)n9&^jcK&T5;P5@KpfR5(+7U z6>cJ5H+9-}9ybY1Ew8Gf)?iRzE{3y{)6U9B-8bEa&;bSLx~78rvB4QM@D;Zs@NNxWG&lH4juq8P1;dKQ-Vm6Ap^+7@Os!mkz%TZvyECT!06-BL`qak zp}1p~xalEx1s_Hg!zHVX*hkX!zx+Cg5ON6UX)~pYf$Pf1OhZhHbk%jl`?sDO-lXt0%(i4Eq(guQDgzrZJ#zMALN0lRuAuFa!r z1`@A=ZRW~r-Hu%1EYv$bpoV7GmCzjpU7?j}dY5dWf9*c=CC|O|;xD$xEME!4R;`Uz z5WD{Vhq~n{ssL2x?!&{4gaHg-c`hITHrcn=l1^&3%fAL5e>VGoX*id|FTENMpuRD zGB244F2|n5&OOb-iTK^nbl*UNQaW*Q@Hdt|8SWVjG=~&FL`VUcDWrq0O*6oShXsR| zrBXPW8%RGm^K>Zef0?B49`y=5xe6c}>0$ucA-#UdYE#PeAXcb*kaOB19|Lj)!RDI)y076;$wn)1SBqUF0hDu-h zh#r?Pd(pgvNIr|Rb_iyb7If%N6coB#kt)HK6`LDabRS?!*i}pz;iW9>RQz%u4$0sh zp@N}h*U#zM**(#l33o3Do90*)+9Kliuf|>BU5n9=u5r8Gx(o{nR5|$2r@F;*u3vHo&lS zXzGN&jI*M5z=P?i0M!9rBvN(AY;dX1^gPm1_I@OO$58u8Q-!|REtsLdJ8xji2{sVK zs*)exs*~S{?n-%)Nc;R#vB0ut+4JH}YQ3lxja9|;4y2&hC4#M#H}3E_;q0sDRtzRy z!)u%`0*j707li2t3^j!#lRd}npK{g$)QhkX1*#Nh&`wkWaBaOF{(|@=pcbG_q2Nma zDlUhF`DXik3k^9cSeI_om(4qpDFZ52HwU$h#?9o>mT50=k1Sb^0kL=ILCp?bZ7CDL;t@-K3`qaYHq6nWj`G3jdz8_GfZMm(sZ{ zxY@0XAbfmUYmaBdJ%CcwJcUZ>hGuYV1!XlOF>BYr5gCcM?U8z@$fyJ1s=7QX*S8}h$e_7X08$coK@AVq13gg51~C7<{R z$46c=N7aXs9*aY_v|;PT9b_k5VqK$sbNhk)iLl+XCpoTCLW2L$W`c(rM)dxERC{>V zv5t3zZ?{3UUQ(~@Ja74agY6OO?%qy0+K`)S0JDR3tG%XH&}+=A?Wgy;&H?;n%#;RX zPD32V2#&Z}a}RA(l^9&Vx==RqXa2v~EX;5C0bRgf4~ zR+RL~!y*1dZAsNN z3Be4tP2eRPS)A7te_)>ivSp>|)rms5>(%#pm0PYc`~y-Sb#ECVd9iFiu=t-;?R|Xz z$&O;XK`MqBdl}bM7EWR}tdOWWsl1*5^6W^BZuFavdKw>Yz2E0D@<6evGe`>!z*|_nGa*Q7B=ehR= z1XBSYw(i7${=u6L!K+V^vS15?za2jKZJJ)HJT_jE`OcV>^g~CbKQEA2a1t}$?)Bwu zWNW)T{$lLPNlXZ4AB75)BiqMR;Sz%o4wvQj!SL?kR#(nK-|9Y}qkb$%hPICJ7`{QV z<`g3w`91Pm1IUmaFr-;?Y-y=?onYyo-Ggofg24w|X5jNi`)biT7RjDT>9JC9(S#xO z?OT+Eh^EdUAPc*=em2}y`an~aHP^&ZG}etS1G&C;OTlvMo%0cBl*H9^_R#Twt$$v~ zjpCjKgdm8-m&khD96-XONnX-2aRw?MyVyT#QxBihdtSXiRthg1j?;Y5|7Z3c^y7t3 zot~p*tAJ6`-)euk-<8;0R;JPa6d~1MnK|FAlL35YwavBBeET@rxGosA5LL;d7>-od zS6H^i%OOW{N|vCD+lg~g*6?NcP_0x7z=4lSe2FTdddjuj+Hp)7Jp$}e6h*HECIAx? z?p<0Ki{a!Aq3A9ZCHM+sD-98*NA5cW*w+}_%9Rsh6+tRSEW&XqDNN}$Zi~pO3xca} zT56%EU8VwaiYC|sTN@M}f-Sk0 zf<|x%_$bQEaDsVzRjz{5J|P2jaG))#xC}Th(HcQ8@@tY*Eu>98LX*g z|Dcw2jOQw3rIRvbYpr9@`ve<0AI}vWHAv>{J2-V(Us|WCpW}0WbsD`LGb#AMjkq(j z6;vA{4&|~bzY))diu4~f=r1bo{dDE zkdmNE!qqSSgPEV$xW)x(0~{9>#$b$epT)A6rHyG=yrfk(1RvT4dB{QJ72P)Wz85vs zx7Hi#)hNADI7Z?1qu14rkI28cD8n19r-Sk?UnU2o-j9whLOAWbd>fQ<$*w9bmE={W z(_tPn0kph`A+Wc&)MTvEcvt->$+kXTfZ2Tg=XdeYVob6CmS@VX*BT$LFoG?gX>HdH z_sYlJZ)(9l;%@8MDY^J@l^FE2H6ASGfE>WQb#z;%spY0vbNwo>7Ru@zlry1RS}yjE zP_-l8ERZ)$y*fZ_vT7YsuBq(x#q(LtjQapK1z=ptAKn^a7J@O>s%>)3UHtur3*?lm z#K>-S*s4ByQ-*-UwYFujaNUq+y*g&6M99%f`R+027ibnE5C855hW{w5uPLCS@+5Um z%C1iT_|+B?68*hwIo+&a;#@~-pU|)7=;2~OEWh)MpFvG{sro7;_ghYN;#Fdoc{-}$ zoQ9GsR%iUJH`=BD->(W)qg#OZJ5d0W3(bnlZ( zJe8ZG{94;JoHQfs13lgU{JdNu=as*gv1&&>-Sy?%1xN3kXj2q?fGQCo;^NmfVkqM_ zkRd&N#4kQTUZB*~eo;ieL;lmACs@bj8dg{ctq{gPZdu^A=2-M%hGv(^Z-40Gbayx2 zQ8BP3ealf`W`Y8|9zl2CJduuz9W|}x5$SS3x}mBN_Gl-2Gw=k*A*C}ikrb2<%68S; zD;vsMpq*FW)YwbOS2cA$O4dErmfaWc$3}+l;Th|P>O_TIenAMwiInUJH3$<7o?o2D z5Nj~^jU$M7Vn^SElXUukJIU={%`d~PLpQ}?@ZA~ZoR5DNRVO7Ui~|g`&`8q)xlF;b zkxDT6NGUNwC{}*{Qd?f&zV}ED56rENS!0NzDmn>?I$YyzPh0A%y0es}mHw9cTwQZ` z9y4vJ0LX%otNKj&Nv93JKtk645UN={8}*O8xpcaJ>P&-p1nr%Acw6IWBiIXaw|<1g z%BqGbgg0&eW-w1|ZeLh9Bo#^2|P)o(YIRB+LCih>(%L*Nx98FMppnS^Qum#4VX>R?x zsyn&5rfbY=_*wj&lFc=}OQFC2cEG>WjE=4LI-gr7zIf3aER9M2S4854Hg<_EyPRe8 zPYX_)uHskvj^!?}+ zfCbyV;}mq@k;~Ou3Wi*b#FpOulr#HH&m-!se0k6LvOqid7L1O2IpO=#rU%74SAb`< zMl{T3e#tc$1f#D zr$~XA7;~?BC#Gx&iD?grK`YFvtALB zqu)YKTAF;sIQ(GD`f9l+O2Jjc$G`ZEeOc($eTHt)ejA~1RH!|sQ;hOgs~ zguD~?l_}f1A+v$4EB4!cglS=Fvx?yKIAqUz>y&S-Igo%VoR0 z%QLL%U6Q@GA)D5FG3Rc^Jyj@7hVG#h2%=J8rBrBXomnPAH?opT#%+L{AG!#4uZ3xb z=wjB_MgbX^U?0{Yc>1Ui{F3#nH`|-=vCr;M0S=ZP^Q;BWeSwD>4TM6j^h#StF9CGe z?Z=)NF4x%=57Cy?TUNhVs765jZ$@iY3nf)MbaUC(e^_sBc}`7bs7LUA21QAghUF6> zh&nI5*P1FOhTcC_3-{<|yw0Zb@Im6Y7;rE^=R!LAco6Tefq$JrtZO!lJiljPP57}^ z0mwXEvK)>kzYJmP3a>21CA$8-WRsro^+a;j^{HVcI5>D!4tKa$h1NH3J5*iq=~uL% zIU^~f-`{X-emJg9Z4W29J+o@7+K6aa-#?BkbdLPIwDF|85jx=HxrU$%Glk6ueF}CI z-JRW~ZDS$B`_3;m%SKLZ!*6)Z-!>uK2BRHLSEmq9JiSI|X&D=`_g2jueH|^a!O@q| zH4*LmKd#;y0<4nhY2JRM+%qeM*KL}EI-7Kgq^3pI;QA_?XpQ_FV>%I(gS56e#uMhj zQ?0KzE^n+DUtO8nGGSa_#wU!Bz9R)L<_ReyYH{DWtp!T~K=%R%da(Yo!a_ELp6^M@ zarlWffHx63mLy#Ms5&P8O32|ydvSx?w&404y+X{nUoFc89N`umMqFA&Ll9l{M`TjD zDyB)=lIE2;ZX!=f>5jC1x4w%;^dvcxk9iN#<+jSD``6$9y1+Mg;HdXMPlptKBPmN2 z>Wq`LjH8{CHFC&DbfJ15H`G`5^Wv?JYMP{rVjZHE%!9&r&67L!H`^T-F8=(7*~9$c zYP`zriGDQRsh|HA@nL(}wp|Wj!HWqc^sMuMr7DIK|J+}={QHq#NF)fy%B!F?Iiu8- z^fYW?R0#3V0Z|<*tK%Cmu3Xef7CXxQEO@#8UUz@RCvTA~=w%K+^8jzDld}iXoV?>= z7}mnwd3Y@`N71oo2xPDmE|zU?o_s`p%ARZa_P6BATUa^I8u8nZrPp7^cQh%g#^osZ zFRk8vgiU)n&O1Lpyj`=k6Z-Wn0ef!M_-)V072alId>#o zB~XfUx4=BKfc(Jg7UJ!Ii95H1z7R6#BkD*$7%K!8fED*LZQVbE>a_8zq2IFdRCr!! z+MXu&yqT-d4$t?-@kJ))=@~rxFsIQ!wbMZgUD91X|A!_&`A?|C-LNvMf^=5W&g zqG?m2-1R=GS;i{Z__MyBRBhe-1^M}MoQ}fi{D%{%{u01D4h9oOD7z?W7F!orcvw(>?L9@~F&PO4;$S?KnXfJa;t4((wt&P77lI)mDh62=HGN%WT~U zt<${Q_BLGT!{@H#?}fPRy$yE+W^Q#ZuP@6ZWpok}d-R47@LaXp>u>#$S=y3Sz1)EX zi2mbSueu&89e@ILa>qVfJb(~12#$(9ZUA`6(LMVX1}4uvs@J8l!`fe-K<=nGE$N|Y zfEv2Bmj}%?j;pWR5sRS$ag<4}Y3qzSsod#)I*h~0GUwUuook)FSbtB<>Wd*|;q;}{ zE=XR3ueCX$(qd$ibE4kA;tig(zf7yHc~pkI)ES2Op5_bS6NN3BotchwoZVWLa!)(q z7gOhP2xY0kzV7;X5pGc)MOIukE)5Gm$T)H_k!L#MU)75)>k-!|+Q8PG<_QGB(7ICZ zS1g^=S|o5!k(n{G$8)&lwNR)e0-`7z$bT9b9~IGYIn;SD_R)^xDC+z9{@q)}o=24B zV*e2?aX12g`lMCg$GRijgh0CZvv(}{k=7c_J#khP4#y-sE2q<_3WWtew$K(Zf*dYe zHBRFDmdyM&G@PEfhsZ-kYdYGk4{5}1g zaPEDx|(3qJZ$9ee{B2l($04?2Jzd>bx%}Rd z$`}_rnfMh#Sdm@H^VS{w4(DB6;mL~dQ-egJ4eb2r$9Medg0~m?B7SbFu|7|&ks-b; zZFTm|)uq`pwI{j{mOu7)BovaNW9sBDRmq;u8i!UeHP8OIF%mM4Uf5sl7gv46O*ZO=H@AiOHy8fUe)jp{hd)tcPjgOABrpMO>jM1vLvSf$S5AGm%dpvyQe)r15N&GR=XaZLh3H{z&Ve>;-2^8M-`&y3`%)ynk;IG1*k)HqkM zN5|Q5E~5F7ZJ6X_FR=vK_a!XWzbtn{L$wkc5_W|lPW=J-@jM;PL0%wTo}WAt&UdVi zjb4cs64Lw1wT^EIZ8M<@*!=1h*oEgt1hjibrLQjB*r z_TuY>^LBKn?dDX-COfx%btwz+P-;OU_>7ehd3<+U$GD^4obGE-qE*lnke2KGr|!Vk zp;f4JtloB@P||`9_S5-=_tjxjf?QMCN(}NVI4SOyFDh11C;(X&h`a%1_Z#S#U zD_G2QXLa-S*~%BC9S+%E>%C9rT9Q27+Z5NA#J*vJHR8cKC)~xIcWx^>|Cud3gi{>H2w_cgQ1?Kuua*7Y6L zY@x*R+@mUuG&qBMbGmZFxCS9$OwhdDkz3;nNbDZ#X$3?r1K!69Vc(0x^PV%Wg5s;P zG>=J5$9ESa)+h4IUt(~(BhCvq10;rRLb%Jh&xTijH;2^5CE&n0sM+XaG;V-f{B;6jtf~v zCCjNJ=PI$lWn}ErIVtZ;PDmbjH?9{x^rUTT?^*p&dA%TgWCE!+pKG|v!Y8V_Zen!y zz3zFJ(@MV0h7_hcX79_#q|r$Iy|Z-3YR)MW#!v~L6ahZ0j}(tWvl2*!i(NEDv=-Xx zoCZvA@fF(`QnqUwH)W+T^1f3@1t;{HM^vs^+;%Y#N-Ebuo~bM$7whFU7w5t`>olLf zC<-m`Rgg+Cp;3VXe5<0YfGR6hp9#)*Ssff?-l~2}q8qIsGJqLn&|q1(38~|(HSy!8 zE)#7FQ3H|TZGY*ZatXphE#U5+PvgdM~*1S%1 zQGISz$Nc8UhxucRKN9+|9bgx}CHUgG;)YiCYiFqzd~j}_J*HmtRgi~z+@6yfOyD3m z7lsYEh$^fN>NgK+3hHOcqn&-FnwW6|j?je#eR42o;LAu+$b;3b@riB1M(iDU?0nAY)n+ltOfNS~>KAyXrk?P?&^1H3TPVYU9gRsMvE0pllk=VTj>$ML^ks zY{?Nz_^fl9T~8|bYB$12P_pz36YnHo?9WS57~YrFdi+LyY4D_ zR&-(r-^@emq0Xt5LX>^+tzOeoB>|y);~bai#5t$8)0vzb*On zmZ<6j7-ex!l?h;Fn4l3&k&+yO@=XFPh7vxhv#P3^bIs=HRkgkE4VYN3O~}@9Dh~5Mx!?#4jMm+voRDDb`nR*Se1)Le)%DF;=NPw6@+#5eWVBcVvRj_fJb@ z4(D%eYrIX8w7+A8gIzEh#?8D|#wm7_9RU)bdh0FJO#&_J3-%6Vffh&oCb4b6w zv2H4@)6%_H9$QG}dCLf{`ny_hRW2OOzCFLiSLunaJg#c*YT8SV8M7J4r+*urKtg-d zzP4a|EBn%`P5ZWy2gxN_IO@0|>rzLXFrriQ;n0gU;jyF6FYv0b>o!a7y-eG_wz-F$ z*g$tR3x}guQUxSaE@Lwt&cV=CyKKb__rhQ+8Jg#|Jq2x{j_r0-77nH-Spy&O+ny(l z&tv>oz5en3wRecsrW!8Z49+gR&tZuwV4#HPGG$!Q`}d9R`_?dlXgfIo{`9M!ptRB z;9B5V5G%4b-B=u4zC+`=HAA$JAUxq>T6T4@FKjF}D=KiX45Z@gt}ljm8Kr7s8EfIr zaUFQdzCVzIVVLPM3%sw8mJ=+y!d}b1#da8&RW|R&)$bUYmTi@`EH$7e!~UE{tm74z z&rxTir~^`xHoF!rnU!*s)$jQiK|i81=^vp4*L*K0XxT%nKAS!m16)La!_ru+sv8V! zi8Csw%VI`t6zL6wvk7Cfr~4NPgKsl_M15F-{ay1f{)>d}$lIDIO@@l@dL(x_&uvZj zOh|rMgGG*q=(=p<;;L#E@7XYw-|O6M$FczO143z^Rp-?A7dd#r{&`jfKF%I@HCYr@ zzoX%OT&9yqc8O7d=cp@{0GD8~eZacBU63o>$^l|2wOt!*UI0^-dsgu4Esp=%6@~hB`Zvle_@PlpTR;;p}!c?0^pc!qPFeCOHNjbrCVh5+QVj z{z(4PdhGeb2lH|yENH=O-M?PcIg5H879<4T(s1Z(k}L%zWL<*g?AIQcvD5y^F2}h}QbQ_jrJtoQ2y30WoNc7i zDuJ%WjPvx>gg7|B=6j)9$>48$mymO83u(O#^wP}gL4org7Af_@D62h7){e%8{ncC} zn-c>P$q-9D))Bq(eum7OK>xe+?;5cQKS;k-zI!|OX_c)Kv6Ni(1Jlai8p~HnXJ5;P z%p^b1bq;h4a$X4(f+c8d*w42L#Pp={z_UHEVmKBDiA0zD(d4jZ4DmKPyJ5;z%QBAwk zL0KQ@_R$0DDSYq-&s_B&1H4EjoZ19ZR(GH8zTsL{!^7ZKj3NxM=jJUAvs-g4b=b~8 z_`}?{K?PWaV~HpXErhS%$O+Mw$$?{Qj|G* zRXk}lQSVueaMvzA>0i%6NB3-R4nXkyNYyz-`H+U_i)lc;=az32U~dai+}?f84TW6EBGkGyp@VrqI?twXrXHo{*lKL~y< zPq7h&)~<&S7-g7XGOdPMrYsUTNjp`$QmQ-=Y_OdiA^cbK*vHD@9q1K7!O_c)Bz2-^ z>1Lk!lP8s!&yV!mN|)Ni)e{$UW?a~J2Bm1HR%oChI&|M}zO88G)Vq4kkkDW&=|K5` zgrGFqlEJ!&1L~YklO4$&7!Bc^QfY~4#TUuJvpM^0Dn)2yjd!qoDNHnG<^-vP?oFjX zl&qC}o|XnTEnE3k_E44;o%MN;Geg3GYZ{^}tnKwS#rj|A7y&v}2R|-LELOs-phx=AClT{63}1lv@{dZc0k1W@}4 zK$|KY;Z|@zdxce#sDSB~={5_svdG=?a)ZBd!{VX3SA%cUzn>>Mkv^kWGfMN$?syyg z?xMl5gv$;Wuw-a#EGhdE({>($+xyFxv7XRS-T21JHHd6Ry>sVsrtuXE4#Y9v>jt*Z*aI~nYO zuiNr$1mx$(-u}OhsVSWQ*te<*dxIpJz;d%Ux)qLR8--nLaa^7sy15y>{oxaq*0ps` zs_aw(F>H3tP71L5EjHG06eDM=T;uFg^wO`&x0S~3dJo6GPZq@P54JX!4;H^ZM%2tr zJ#4>e5c(ahnoSohqz+zYS9UV{Ht#11N0*caE%?nI!!dG14LR%VIJ_1^D}2(rS-o=I zbmBR#Sj(DOzxJAjvsYKlm~~Trx@FnkL&YMy2iVp+NmAddHW~52R`Gykk%yKt1Txk9l+{Zv$;`02 zg@DyXu~xqdNjsf*K2#%>b%y0K$73_$m>FKZ90n~NWSKoDn-pR6 zG5%8BZIxj86IX1gSoC zAG;uL=rJxU&nz@8cpDMV)TU^iJ<`mtbOge==QeIcJ14p$&=RY%`8)V-_R>d5ecuwQ zxHi*KOMjH_eqz(Vkjw|04!xOePwRzrtFcOD$4ZupS!0%$tcyx|b){N0nd(7v0Vw-` za`tzq%wZ0rYCGxxkHxXq?5+X9xj8AVa((z0M<)Vjs^6pD{wnhM@bsmqz7N&7e4gH$ z`iDUYVf?+8skkx>N>LPTW@01G9~EQz(PnX^2mgH9ZCqZutkBl8BXtT~v2LY1JGhdb{jc9 zw`!&BJHi%)-O7XR-xb;9W-QYzHlG)5R@#t7xQiVSVzaWNy`&BmvQd&T{2UDnzvXdx zFR{GLJ6{@Hyh!@pOebk%6{}#RxD~;9h_Bxrm8oj?X_xf8FJtRz9A z$WtBpmM+9HpZ)`Jd-XUu9{}+CRX52$>(kJwz)BRCLtp(%{b=TR^=cC@PS}0^;FhY3 zcsp-L+C>~@CD=Q=xA6$&$qE9iG0cy0G;S*Y>Y@yDiKmY#$(rOHjF4Pc$2du=zxIMD z@(M9y64Wl{>rXUBN=hKNox=yJkp98Abm>6P^D$dA)br%8&(M){2%mRY z)cf`4r(f?-*5VgBmW-#r;F@B=H*4wz=#>`GnxUmzWvh&RQ_hJkU8Y+N^x>UY;*7up}gPW{+T|srP`QP`dtVT-=1;xxgF$-k%#6!nbE8}ZmHYLQD zj#>#$eNPAai2Sohyid1IU7dS%7Wjh%Ui(v~OUGS)rw=IUIv0(|33n1t`i6xwV@x!g zx`tvjhd+HqI2c>E%(seH#kJ$HX z4`rim0_qF6TsXp1J$qVV8Qs_zg}$`~2QK5F{=0KTpm@L`JmsOCMx7;K$wvj}ZZcUi z6?5I~Nn`M-mH**7M5EVvF0)Ox4(G6&xjq(sGu%d4hMA|8Ki$Kk3t?g zJ`815ZOF<}+pdoLB-Ow9hic1U!u!+nze1{`_v`4e)5&!mj;0WPxz^~gl2+=*bXJkE zJo-5QCP+3)J(fCDeQj}#&~g9VoiA(nmYEdJgD+E}2lU3MC&ON*H8h8Pg8hYY?(2FF z##`JwqTLR`O`g+#sV7ZS{{O%cMEPyM56x{=w??4A2j}5mSvhtUi&B_Z?^vh^fyPpE zv#exAhsk?%#g5e*O82Tt!E)s+YKorU403PvxH}xm>`2T0fpqv`|8=t7vy|Q~KbsW} zy;WWG=m_b=xx-#*1*5Wq>Cik%(~0RsD(hXSvt~CgZk!|CnR3uc#9es-m|j~cGzp`!wCdLcG_U| zo-|^*bNG3V)NBl+Cgq2eAH-r=VEhlZKnxq^HWI-VrJ}Z(_ureVw3x~GtktAWMm$DM zx}aW2NAIz%PZKB`9c?Ngy#I@=w~UIT>AFA%3GVLh?m-53cXxLu5Zv8eg1gHQAh^4` zTW|{wL38JMzk7e(q1UX%boH)Nr>jqO?;{QOi^|3(3+_v;=jd0a76YHIN6JjawCE`) zg|-}?thDY%@(ekiFv$kPD#SktaSGL961hK7X~n!Cof<7-S?N5aoLFn zXLHPe1B}hptV}jHr+w*|E|ZgCoxJ8(YF_B^8EM_kS{eJe3lD2g`c0=UmyOkm5rvZ; zuUw@v>kRL0k>)vfzs}vl$AfKZ0HeW$m{v5U!9&K@nVV&GV{K&%Gd?v!How(mj>H*< zO3Jl12! zU@=+gQce;h5mF@ejJuxU5!G2zjgbO6)pqdq;06qlE9Ps)e-=GP&ta&1{3wszK*@ChrDgM2FwCbfzTmvj8Xe_pDUP zOx6dI$K+zp(YARx-$IUji3fI0a3%vi=1;{R*)@4uE*`*;BZi9nkXZ3r@QomLd4>pX z4s)Npn}Z@|{({A{!cI}nd^U3^lq|K))K$Md4^POBmMUGlnqHdvbXr!kL|Sv9l3Ws% zv=TVM1qmWLRKX0(1V9#sOy-7~;c@cIyIybE;&Ay8m!?e{lY00x%kIjZW<8UoGCET; zFM|m=7sKFqncw8TjFrdYNj7hqEaNto?qvVZ{)K&S=wiCTii|^cWmEYvKBt$iEz{69 z&0mYIdF=@5%*W@FR##RXkM=*xBXY9reoKY2d^^4OJlcUrHJ+ud0eTENi~Ftb!p_#u zgB|Xb7do-I1L>jIIVrUuD9Imk)O5dN@RE#RMm*4qnZj(WaPHaBLs9E% z$|7L^1{|n=GK6WUd`-u?N2ak@KF%0Ja2Ls<KuXoRnBZ|0)Zd)=;UMlPu&cuA&kb_tyAn1#0qNTJHbwZ=4RHSjr7;>!!>WfAhQClq-rfp(Z%&QCTA{22>0 zp0}}*@x?1_L1o;rt9@jGFI0&r>A%G4s1JU@lBtBwj4lk(m5Yx~=!5@~el*{Loj#u2FNFtB7)saoZ=j>~LVM5CG(kuHdnXG>Gd zoyO^=R;j#~SA0-@Tdf^sEbG;Ov%8P!b{IHqrk=a_p%m6N>Hqg}PmnhLrR7xZWwb>8 zxIvwBwtjD~=coIuGXFuQe8-?ti~D$)%j5kkEc*G)vyjJ89O0>xkwuQE((P1wU#3pp&aEvSrKN zm?)f-WG^O|@hR2JSSlX;DoPE*&qqIq$L3BG4T-@tP0&SkszWvIPW=9%oZTQA8lR7} zHg4?;gzugr>byv_`iiQiKv~t0=2QOd(Dtm#?_i$#{-R5Xc0Hn;h3m=hVPTcOQkx&Y zhWk6riGWi0l(y;^u{7B?qH3df_r<}-r|&}kJUX$Uam;*M4;35{wWMOaaoIHSr}q{4 z>%-I4jPec?504&E{uw@jOmKoYo+nXQHzK6H@8M!*g*pH22LV-jm89IP?t=T}E=!;} zOxj)Pf>m`iauHi5eL6ygQjS7?n0a|{&Wem4g&g#dd6!~NA&J(wt2j222r{CesuYe* zDMH-zMJ`X=pmlf-ouv^=i%zrb4}Dz;4<%7?fQFJUC&e8-KZpLrKu280lKV=tN}KIe zNAk>5bM6_6qUSiF9;p!L>Yf4?42|t<^}Ke$8q^Pe9S?KgtlI4<{H9PtaLhc}vK3Ad zET7P9fj#%`cvZ4hge*5ZasjUg(ZDw$@W{}*YvS`%XUrP{x)M)563V8Iw$0)z$jTsf z;Xq$n$R#pVDcp^`E?zE`8(?TcMTV-Q(W9iub)t2mTk16@=c}h*KD4Z2)8}jV8;sic zY}m2Cpb?@6FBb?FmCXFyq*rQ=QOZvgP_I2MaSzU$!~h5KYYVmN$TY3-O>^^U8|I?U zP0WZl*1U~{}u)T0HV-n zeel=ybYxx6yZ&4YA^@@wa0_t46&%|D+(Fm#VuHYR??1plz~}ue5Zna30nilhqafcV zAfSo;AFyotN&kGlf}sc$zs>^p{zF2#2dfPLp}p()nQj9BkW%3mgxu4%Q$FDGS$Lj|2zio$ z)dYWPy)c_QO@sRTHbb8_g2eyz{U6{p`|a+vX_|eQZ4lL>s}O*;>wmxd9jqSh-G2a2 zZ2ur=Bm*{4IMw`bia~DfXbFQ)uM2mbGW_^Z-p$vI3HKg=M5bdkl1`S2U8aOXe8c2n z81@MO9d~LHBt`Za990s44O7P2xK{($KM3GLx*?J@th>!c>e@}4AQU$ut=|hx4(S?& zmTL%qF+XfwE5mx+WaZPd)%V32i33y3Omk9gFzXxsm&IAKX^GX)<(G%8XAM$+Xf#on z4@ZlytF`UugJ_;Ln*@GZ<$s!r)^t)k4Nb-pl`SZEzm`QDu7IA^$#@2NgDn@cU)q$bZzEJB1M9-x&w9iFg$-Y_@Y_}IvZt)hc=;C0RO5wS?-6W-|@bYfKVH{8RG9*#AK}Jxsi*H|=@a{{mY_bL?Q% zsplZ3FrT1$*BjQzhS1tk;ktf@17z z=y(jh&80Zk8ibv?7msi%i)IY1es{cG5=U-IYRpopMDtI7f&U76UCNWGMFZ`S`~PP@ zx*ssIlRJZPLf;N^EEFYx5>q`Of!m7gD8#}G zDBX2o2ebj)pYOuD^k$!3Xc^GTg3tc|J+D8?U>>6bKh?|hgm=akd$ZU%LN@fByPq=+ z9?Zu#4&-DU(lAlQlMa+644i-2v{qF%d@pXFAELxsp^d|`r42KKadeu(oFP z*?e?!v<(UU`%2w^U}<1|fzbk9AJPr4Ymm5kxHFVC>o+03DcTnDD*rl|e!h;UI>%0n zE0kf|XYjWm2|S{){K^y~Ju|B~jBvXL@fq$5jV|%5=|20L9gM|vzx(<2916qSi^MIx zn$m+1L&bO5!H=n!tm4e<^$$?Rp{48@ktM-)@LkbvQTw)xfx#Ihyf=#c?T;QP7%AKt zc$M)SrVK3N)4v9Sv0i_LLJM=ikr{gtt-N9=VVT>tHsz0uxOtOz!mT18-*yb(!xa&N zmRh8KUb3xy4!Dn;91UM7tywyRGV<=_!~7uq2S8%hzxMkNt1Dc?p8<~A_bDx-b8k8G zx*Cxe7CHxQm2amqgK`RVBprRL z{q5TC8EnG-0a}Aicv@Nr8y^ibUQ5&I%!Q)JLJ+0Ta2IBUYH3+m;*!Z^_iw$WCm}5V zzM0_i;<|Kfn?AQ0R$od$B3?t)5(hpMrfmKP_W9XkWO-c-UewHHx z5xrx*wi8vYyM|*<0OyAixy#sw+;zRuHCnW6EB;t%=T#S+LVYntRM6<0<(#;<2A@Xo zQd7}a+`_H5a_hnk#f-o(4O zKe$sHk4Ys~b`Oqf+=;L1WvBSNv8;qc#Mt~CnVCe1T3C&8THnsagHgR#!7J*~DiRO2 zNV?1;ZM!x03wS{(SC?FrCx*qghsS^PoRA7Fa1|gzf5ChINP?()1&YVA*z|Ewv^5WpB9$nA7w*$+0hB*QWq^m1Wc z>E&fCG$Rdltj2XvWNccdu{x^IGVAMY9{_M|?7Sm;jU=W1Zbk>ycSNfSiE8d@!2EkD zii|_KoGwIxXA8IX3B@Zc`RN}3E>puaNOQohm@68I6GgYCBBq+wNIKq`_z%1P{j4A} zk+}iFDu0AuNe2Uj1o{^YHEbE#_fu%KEN@)GL8DE{(N5M&LC^4wy3D1pMIp3^?MA5; z3lm98Ps3r@x#Bc*(gAN~M<3VCUDtp)b!CCoarGhK{Qw+~?#QwaQw;fM+M?2;0+#w} z-iL5mI~2=T3EswEtuMv(;>?zm5Qm99qa4Dl+q%m-=s%a47m=~A8%2@WM1Cw64+eW* z2E7ER#K0dY4*Qt*1atYNineV_ZN?!9@(n3t+niDxxyCv90iZ4 zLI+4ri%k2n(u`gyzRrf!7Uo;{087LuoJ%be!E&0|0GGt=XHiO|Z z>3Pk8!}_8^;S#R1C}Kp4`9~F^%R`6zmKDwbz&EvKtPsAMW>TyZP6CKuNG@)%>J>P< zY;ILG_IQbwDSZ&U_Fpxr{TE$=2iunvt3+|=`AtO1EeF)k#PH|E%sbPs<8_QzmDC`JJNb8dAMyYR(|l!fD(lz zzLY{f*6c``DBE>li13+4TePb$b+%j3WA3aJg()+S`3X}016U>|%ce^k7B^Fi)30c! zefx_1C2fV35ws{QBpPE;B;9{@S}y}3BOJv3VyEZG)8x3W2=U;)e3S>pr<#sI4y)P3 zkUQ;|h$hEMN^r^ToDHs_7>qG0{||s2PsiPFBa;v{R24kUK!a7pfp!ev!kx>fKw=hs$U3>(u^c z6X^lB@=uP-!OHacP|-Tt|&$1A|b@6*tFWhLs;@f=QYO3Eg)1!F?$WZR69H4{A|j@!gdc z1|4JlKJeqHp>gKJKCTAi6c{RKIHo^-a?k4FnCBuQdco0S8`S)F4N|f07)|S(j?GnI zI#`Zg^Mbx8X!7X^E;r$(+(F=QMec_rv1=uq6FZb9Vqbm+Qb?0Mg9lSo535M_}23&YY5ShGgHhduDoptgmd``I~jC&?MMDx|rKq_50s% zUMRQmu9x*9RhswK)3gc@cvEC<>(}bA_jq#Fpak9Vqb30}S-L58Fw6=z(xkLT>-kGReTULfb2})Nd zP|hCv)8Mu*ErLW^i|s*+XU%%&Gx;a7NoJ1SH~(@6>BGkLGh8rH8rqfTq$}WpT7s#h zh}6=GOCN`-B7y+RhXrp%&#bL0!`2f!LqM3oF@3=EdvxpAjn^8vF?9C( zpTuy_la_QE=L!yS|;aDxtB3?L;amQJrH| z&S;veCaI1Aeto&Hsp$?IF`VMZkYxMm7C=Yai1rf7eI>)}DK6b~r{|sOYTmlR|5xR! z352id?kfoYaMMsv;HR{%pLL#xUXGwVLE*kOiB~~|@N}lr-%lV6x>4809#YlaF^eNn z2$V`)=+&`emsA#678M=cbAq*O3ASoENBoqr z&1Gh@zw_258hRyv3k1;IQWqZDs$}(b^6qU-_Ha55P9tPNuteCX+c*Sn&)nT{*Om;` zG5g2*z9)UC_QF?Kr`5-Kk)uX$DU?jH-Q|j0r3yz1dp=X}?bo_{*I1Y1GGQA{Jf)w& zXrBB7^!jV-JNk&OWeUGv>+qbxu);me{lavUB&tdk)odB%pFzS`IkboOSYXOccOg>! zU|N>$QFPd>wf)h6tXzJAvwbO&5R$Z4zvbjN92VyK89w%l(|Ta&vxhv|&oNsbMj zvmKkCzePP+;#RBG3QG>%bGS0Y&0nNs>-3J1&Wgk#8ic;*wdc10(_{zB<=_!T$DKH9(9ZFp$g5+QQ`t!m8n-)K4vCiU&cS+;XOs(ixBe2-wOg+9&{h+^>kM_kos!&QY}< zhU<$LEnPj{PTrhO_ot=1_S)!Mqzxy%UvzFJyL!1|{Vl8T>QkHqLDGX>EQOp*A;$s@ zYw+M6p)?vmm7T7bgv$IFaO^r5J}3494#=~&#y9K=XFtNR+!0z-Rj3y@jLF0l&nvMP zbG>b7RNM<@^%0oGvJ9)Am9n?q_nX%8k75{@c(ZIQ!D6%pbxyM*F(^JLwnMe)V0gDI zAK>!G#h$Wz$a4(stm_}NJ&-_i@A5ld&e?@(lsunFUs1<+5@ z&Z=OHmi4A%i2YlH{4L)*j5mdFT_our;O*z%pstD2zVafyB+YZ%0%?V75{bZsT1{V9 zMXr1-0)r`QL{~u9|7VXl2TDY**P$-Tn z{B{l4psr_RO&T=@Qyq7q;Oe0AOrS}+AOM;e+=1}hf#TO4HfS`F!C6sol@~DSS&F83 zBNcQ%ELbae0h6xbeG`MY7oyja2tX35PzIZ}khLQwwm9&k_J4nGiwd;7-~<1UD*oS( zw?ml3&$~iw{}HI*4=-R9cmovzA>v=l+QITtq=pHN~bMJp09C80gUiZAkBC$;Z&}ISdxd4C?0IH8|sSikwDDymb zfm#?McZsy}$2%0v7Ly`V3)b`2@=R{pk76ovEh>Hm7koWPAcLA_V%vV+bsd6;fvaO1 zMCjUsAo>jp1QW(kvvjL{z~^D6`V=~~5ICrR06*AmpNW3l(IbEq7H8ogsh^8mS}@wP zlItiHmr$RyA~?v|Oz znr0I|t)Gwt;ecWbbGz6)!!pJ>xJdYA?27==Q^_s4{UQa3Uze1&i9kiXbl*Xx@C? zm;7=A;vlBisHtaN5uiA-;GI*{$jjq~V_h(~{Gv7{RqVZpRg<&=XT*#|iX~cp3!&J3 z2o$4BYfQDhZz_j|$Zx@|D!jc%W;tSKBGMyil~>31p!;=sAm%i1PdW;_w6U`aTOESQ zr#GiOy8h9&6r+6U@k&x^5von$M`$i-wp*KJqAb-eg0GO+`UK=(nOc=ol??=~5FWYH zn=6!1@nKD%_O5@SG4~$HkKUDdGD||KS=pumxGcW3F5J!+SinqZq=U zz1!Eq4hdunVRul_80#!cnc03&%+8i{_27Cqc~N>Sko6ihh# zx6xV6j1jCR*+z6xO#i1~An!FtEZp8iZ?6Ms4vzL-7=mmfM2k78f|nZn5{^q$`HA!R znp25d5CC?FkNpD(S5|O!6-UUBlb-0Py`@gBj0Tudy=8m97}?lQVh4tVoM7F& zCHxV-hJ{N=tP@9grT+(*9g$w+m1k0SWZyXjU#O(MJ7mc)nRushZO#L_-v}Mi_6*Cm z?)?i!KU#&C2&4^Au$p9O^#~7>>U>?7$W&KssptKpAS`6;9&YT}nK{Pq=R(xdUE$dJ zAcK%(AYa~3$78QT$Zip4@sNr*i7g2W;2J;;SK+B5jrh;U94j z-cxS>1Dwj~$f_n@z|L*!&w=ig2BF!4Ark`{thx_${ozUyPR-AA(IyF{uMqumYW_QSM3;H|@JSyL|+t|amGv%bU7QtCMs{zc5&6daV_$e?cwMFL+~qQ<+w zTjJOfRL^%dDP?_A;4HFBu?NjA+Gcvc9|C~x%s!8%Uw#SXv+{efYNPohHuQot_6;rn z(lhHtQAOsU#6mM-KWO%V{ZBCviqDq3Va`B3FPBB}4>>|j`02hFALfNDGFuo#(6@H| zCl%T1h~{G7#sUiNYbZK{jCM=-$atDut>xbU^3=5kMrhWh=#%%|e}Fsuug;z}kVGwB zy*?F4Zk^CFBiy3X1f}`*m*on_GZ*8}@f8JEHl%MxiN1wRY73GtyxZ@?G%$&=k9|%) zMb}7cD8M>$_WD<{#KmF?mqbB!QC&=v^mRFb>m5Gx~^ThYlD%7+Av zF*Aa{dky>#ioeFu@e}|}g?DEItB?nSO$VSpL5J~GbGmE1-VLE)PS=&R#tsFB(C{&_ zOJ6YO1j*6x$A#%oCECFZ&Q=`_i%DOkH(Uoqk%=R7uEuV7W;2N!e^vsJx4lRnf^c1< z0`}aMD~N+u$$b#7cRHq9Wn+{evmvQ!o;reU{{f2m;}T>d>&&&GW-GKJVo{w_P@NW$ z*dV_!w*{n;NvXd$s|7*GAt!5DnPWo=`qzIaS8zL`PiIC?Jjj2CaH(pc)SJyDZG2b~ zv2K_eT!Twy8Bc+Cp2+Ao$0Cu+V+n<0>j&7E#|l6=AcoO>34&0TEHjR)W!e9E)Q{72 z@{L!Uk5XH^Q@69yPcnn$m*nE>u|@wIG2%457+kRMNc}xykwlGQGAgG>P%zj7iOdyk zy+S)?1yBa2lpmT9bgyqfU7)uS_%T|`PwJm0+w4~-_qc(MCg9gM_UkazA*qdQT=lJLR)>*qq7+;5cuZ_R! z%Y@vG3Q$@s&5L2+yOZ{yZebxcx^L5Eay!v6yL{vhY=M#AxyAq#{!1|mvO=AXWRv*| z95;i=>D`OFD{U*mC^6sRVK(KJ1UMIXevq(muT$!?a$v()JZX8bpJ4sGj7Tnj$kjC` zWJ3EpIr+0=yl3O?hs|4j5yS#{w&x&x$bAKT z6pE<+Q59g1j}A>5(YA)PTK8v8y$zQ4W*u2izFTL7Q$&~}gDC5}z(Q7gFY;ELGZK=M z|A*XpP&h)%ET7g*T0-E*xqQMPGENKw_t;LOD`PYn{RL|q!9vG#7Xg2xc~mJm3~)u@ zAAn`iUDoGB;s;4FcbpXdkF2${w?7brU%i!MRh=9a3)gg}ZcA$v#(uy}I&l=Df!%U~ zhEg7wRd&7b(B5B=Dqv(RjA2H%*)VQl0D&B}sE6^rqp-pyQS4HueTPOXjOz1TknKR0F=&M8`Ng0u?%0ZvM^>OD9;yp?A&ja7~Vult8Zh34Ka z)I9UKY9`uZn>TFQrBXZk9n^<$F>%jWEcX(}5N@?7UjIb&ak2}j8&lD|aoT$U-Y&XI z_b`MQS;Bh_Abm(>>Ywe6(tBL@U?@#k!A>BsZ&D$-YkvJ>tJ7m*rV#_ZpRj^CnoW5P zNMMB`%A%%o&2h&LUqTBDcl$fFMfJ!IGoM7CwF>y)W)=XUkb)k^PWqk5wnbM?XalD( zkV=eaYint_GMeBd)t!=D25-1-Q+;&~tAl>k zvdh2UJ!E9c?-}uFvB|r=`LpZ(KoDv)=^UJvw%gtE<^0BXX=~0AOLhzlqg=KGiJb8% zOW3B&tfY3fJd)b=Y%e}L-)ZYBP~^TQ{EBPP?janH(Ux9<+7HWLUC-s|dMV+O*^L%+ zS2H}}Yv(>}`UlWBS$NS;Axb*Kz@D=Tj~e3&;lvOU(H8n%f@6m6gI-D(8c!7e6fJDa z5FYvdUc8A&RE z8xxar_eDCL*QFydxw{A>B?5O2@8Ot;^&3znxjDS4hW0NNgT3RgtVLtU7v6d05dPNm zHQoHQ0^HW!cSKSGxo{)?RE`H((2Sk(lk$c_z@_aESzf`%-wz9uipfom-yR$zKA6g= zl`eOrzK@(28M)?;K*+b=Rz5`vVp7<3Cj^wd4D*)`MBNC~)&2t@nh%E$JW{~fuHpm#!j4&P zW0%Xb6vf;dm@@Tz<2kW}4iMcom!_D+z|LGe-=H@56*;E`C-U$&fqwo@P*$r3!^TtH zzRE`TSrM81p;T$hP$EeWzQn{jOO2S-QOjgg98BfH%HubC=z7U1kw)+~vY-q#To+ZZ zW|GO%nnu~_af!MsV2wc9+Q%Fe7<8IhXp$4D%p`^4{*muh#dt{0Zu7}aH@$gzdwhzC zKxIzK4>9^8W%6mZr??)r1uV%V9&05yeODRtjy3Dmf$CMOK*TgQhYQHTZ*Q7S7+crE z=dIB{06z}xX)6NT+x|#3?f#wf*s3w&(At}wIfq64E&i-?6QDr%O*sJDT!WQ9daecysY6u0g zYaxB1Gnn>~=%?P%)q6e8*`(G%{dA9%oQ;vHVaYN#WDc@Mxv!+~*r;sfgHvenyCxN! z6LP2C;RtEzzZE5vFN91jD{^SCX!uAbi<|{M1!T{ zfOPQ)8ANiUkCJ{^h4#Wg4JtdLw7{xpi@K$b%sF6-#i_y0u|{KQ)^U9=80p9f+=tkjA9po_Ut zPUq#1+-O~Mzj0hlR(s6VV)Oq+*5B^k8=t!Mvaf6lT$r0xB=kq_)}_ZNbJ)Q;U_yyt z9Q;xHxKcr~do7dcsKs`|X&UWpYUQ(Ya9K*%xg{vIbcho=skWt=^z>{mqFr6sr_n?F zepo?-ShsgfT;zsVaqM#8UctL7cjYAgWES}8$J@_iU9r7N?GK>{v-~$Jp<(Z-{HsbGgU>X%dqh8P-=kc^F%pPH=&Vut1rw_!zjh1B~$~@;7WGs`rb3Sxxi`lj9MF{cS z77s;QT6yUpNAPeAH8R9IDAXF;#noz@A^U*kG)J(S+lqSbmbNb8#d^(DkZ9_?J_WZK z>D*EO_EyvNB!AG;a4@9&YvOv==2!a8;^Ci<)8A9aNiIaj#^_q2X`iYmP8|pkTQcQP zEsHxW0{Cuyl-M}*c)4{Ow*(so&|CAJ|Um4$q~!+Vx;Kza){6|MH+4%iq@|XyB^Wj>3)V z-w&2StPpy-9pbp(yJ#LhQsU7nJuDHOs zOGPZ#uB&XujE)A{36vyAHx`O}zv`9a^&zE3!9jhhdesnmlZ3(yuCL#Fypl`dYge!c zE~JIaWh+dM>dYvlo~}xu)bL`acX+9;A_2y+-Ea=TW(_~H0LQrZwfu{R)lZ1IMPcD* zVqTT)%_xv1YjcUX7W!1ryU5VNZ1G~|(RS{wYZ>?bCnHGNRKF8=D8(WB{qSK7SF%Bk z5<(_s_`GsUMQlNz=FHy^pIXT1r>v8@Hj`bCNS{MyD;XU+xM=x|t=}-F*I&gAB7#!U zc4^ae%Y6E=2mirY5mYK~KC3!yxm%|{oVch`DBQ1U)mx@5?mkT0I1ZwpMjHx{#-#ph z<^eL`5QgDulWfW4ghAoWeL_qkE8tHnSdozSdnU<#WFp&PEp+yXpT@*PgTICId4^Ym zpN0e?aAY=&$+fvU)!eNzW_s&<-2%!jhsubC^OU!G+Hz&JCS(@MGKz{C|Gy zoSMBAyl8lKclsposNk+9--RCY)nXc?f}$v8d6=O+#|ZQ*tcXYvk1FiRH3}*F6sitVYw1N3iDE7(VfVCo%$YpSN4f#M$FXBO}hKz$2kAgL#ByY^_3ha~B zc0`>Cq2Xz!O{cD^DzxIEg~l=~0WP$U|l6I|N~;%i~Qjt^Py!&JA|AIzmh z-s_GwdRr->qUlssbpX#=5rxgK+-#d~pZL&bPgZ!h6jFi-$nggM0R-YjeU$8|$J+u2 zlBLV%n`6QhwDW>YX^!(|eEs!ff0YU*lcGXF;v~&{JsThk;6K1t)f>UH&>{oy^K&E6 zC&gH5%ulD{R%y)LkK%fO$zon~03;;f3l!uRC@5%12=FU8z^@!YheE?3XNM+J1y^BV z<4`ljqHyID3C0#POQuvQ5?41dcLT>F!$CkoKnMdeg+G~kJbD^FD6VR2-ZFZddw;Oj zyiHs+{K@<*yT8|d;!-u<($f3~sLm8-MS<`BE65}aTSVHPAM%zc`Z4xkoaTdhmnan& zx=;|hnCD`X*`=%8)Nu9D`@m)V#BtJ&OA5EPwifzRmumCyW7pN4TV|Egpo^sD#-}&J zr}BF;bxbCrtCDj+OwJC&?D{_G-*<|}E=ncbFrV+zWf49))@6||f_MSSVnVv74Zj|= zw|s=}1c}=P@x7%>So=?>9<28sthys3g`vW_I3*fFa>SoLkDjzN)4_ogECFIC!Igix zN;F-Vr2mA+bm4ZVxG9_Km#^cTkMc`b*ElI_ew26mk~a;>{M6&&p=%iLzH>hO*pbgn zIXP^9`Jb$bYSNXns`)iH@;Dl2cxoxJy%a;-MH94_PNyIF=x;!ZMzF;11TOCcY_m$R z6;O+j89pv|vvMTLazfxu5uJ;bwzMlh@$ey#?x7&fM|nb!-dnm1Ec@6)DUk2GARkFw zSIK1_X*a{t-vm33M4Q}aT>#;j7HJ(u#8dD!_`EW$Ti0-D~93IFtTFZuHqbdNjG zT@%+65ot4*?A>VJj*OUPZS}-B|4-*b=P*#RW9iV5ndhWg_Bo0^Ir7{gJsMRjR(gO+ zDW8*SHBDuF@x0AXJ-W4)!>+u7Umw5Sm@`?aC&#NLnyhjv*ZIu8c38Mt$_faYue@{k zOJwdv01LWf(MhVw6Y&`ZC48Fhe3I{cV#lkznZ22oU$})S7q78+O?#j6a|P>2V%{Pn zR+L+fwZ{!S%jrQQz{@80P2RO4VJdQ^&G8b2#kHzr4OPb2W;IMVGl`^4u~tb{i^?UP ztV)mWaK|0RMIOvnT~^vF@=k~3bMO^a5W4h^=pL7$ohsXel67<7*=iPzS0u$4mQ2?` z>4cuT8h{Qm3rN5xop*s+)C676 zGs2ra!*>?r@}{2Tes5GlJFsTTEfwk5sV9stnrZiTW98iwbVWsK%s8=<|2y-n%su84 z*%H3aJR{Sa1odNgG)7vw-p1qRe;l+^$C00U0`zA5>WA8{yp6Ps{f{h7SI-*V@G|?cMVA;-zZaZZ|D6 zbp11oRL2i@jxtj&Q%k9xsW&Zi;w3@r;BPP#c)$5paSSQ(5|w1~jVW)jr1A(UBsB$GS(FTf=$ii&Ggp{c2nFm{Fp96OZI` zD`RlYCe6*j6JazL=S7}-oPtzs{D`%p$u;Hw`oA)!#LOSN>yZE%Rx7ON`9EkW1l@b3 zgLciQ5u5ySCg@}`Y%vZamq6a~XO{+6;DN5a;Eow2f>c{=tjlK=W02XOeT$ATieJPB zV)qjf>^EC@z;cXsCy_XJnjVI+OoG+>r$`Omi#CULlKhb=U-|!V?sR)3ScY?sP(e!N zVT;DhH@-!1pvfMUgNTpHhmtGGh0HV{UxVq05q^7nRg7fqWz;?Rg{K?g_eYodj0FyHYKWHw=ucQdJob9-U^1^c?7_JC-l$PS05Mb$8zGO=k^OK7px=0b2I7lUIK4 zSsya~S?kj0l21+UDMzS@sevqli3J(?-_kQvt*Gi$aTVg0(T5z5*DITVsZ7d#yHMOX zv>Pw}pw~`KPw{i{%OTlB#6cWFMS{8V0!IO^CdotruqfcycXAWNauXz1;pjRfTKs6$ ztz5FRD$zCr&)12$!-(;5UNfRD(XAeBTc&alM(>jTkLnd+Te>!{=I>`+v+vJGhO45(za{*>3C&!hm)2IE< zqLr)9y1Tmpi-DfX=icj;T( z(~YfF^mjVL#LP|Bnif=EfB9CwG%eLb-7!nV++En-Z`kQf7a(Af>pJ&awyw~aKjq}s zz|oVrTLf=B*t0%k+_bot}C3 zb>cpeE|EC(HQzyZ@az(dVs^)!HZO@WzLp&H&}Q*VmqIZ4(hvQBcAR8%+&|^Dz;j&} z_ASGG#7{z}&dpA3+gd_^6#CaV$-1x5^G0NvP%*ta<=C&wf~7Ycm4i0KX3XT{6}1_5 z5U-_%+Bo`U?4?->H~AgQxW6)WZcjzV$Vly_W72DePIJRXEMEEE$8fGMDHIq^h(tqG z7jzFAO*7@icP-9)eR&nd1b18i2MY#hDq^o0?Q_4Epnkb=F$(9dd4||I!-QH+tlxYdAQk7K5 zmf=(PEuxOW*n(j~E8AVEU!MqD6?fa)QUgtyuKCP(Z|s~?fbr+iVr#nf0{AR$2C;Dk zNV;My3J-x4{hsoOvMx8VksGm*AqV@&BXPX+hKUH=O@+R|VwUl{HyoE&x7x;buz@{( z!`CwHi=iEn(FF;npk>$a=)CwIf(-CLIT@2?%wJPj1qhkjb)Dvk*Y(Wb(-C$elA2>L zGojGJ`!D4qbgR&Y;`DKtbnzM3^;{3ve%eXa775Z;$4j)2yOEy=8Jo=zSxvDRxj9lO z@}m{6^YX?pGZr1rLz~uxDaWli#IH4b2PPxNm7Y3g=n}2Vk2)TXnVzSUg!J|^@%Gbn zrT$1I#LBU-wCBBhqaK`gPuvIi=)b0f0L6W#8Q>-najgKBn zt+r@9njw}bc5UFtx~EDfzC0CEX{+@wkRL%o7_G%VzFT-C-c9x=Cpbz3oHg(zMro2_ zcwM;aIE<;JUzY>F88f%|^bwz)k0}KoMaEx2iWa|iEvea(B11mzFxp=cAw5IRj%OX{ zAor0bn>yqYUuJf0s-NYIhy(vx&GOf3N73dHLr`MqDoGKqDYcq}D5W)=uowY-???TY zsIg9|0UU?g4EGe-40>`|ow_2VB3ph+Ap(+@uO zJJTL_D_TlJaCw6)Gw>u58-MB<9&t|nZPf8yZJ<;AiT*7v_xBI2#HD@HjojsRI-b$6 z-F7CJIH3Z2r$jkAjc73ra_C=TPZZBAaSAqE3s~u;>vpX~>el7dVAbp>#cGe&=F6c5TC;=;`N5@NGi=%Cn&4 zGfDBCy^)LnjzVfFU&;^e@#MUsj7W-M@-a8FROXCnsS=e68@F*dDV+0ND+W8|X0Xvt z9ugG&9q|8<_1@uZw*UWsKX)gkT4F1=h`kykRE=*D1VK=H+)eCFQQN1rV>K~i6mN+= zs-l2pdXV#IERWJN z26`eKZCrA_OGX<|AWM7*7~$}k8ABBcLWt^|ic@3|7#gl{$rc!0H?zwQDW6JDgc}C!syk_gk9c~@Kpq$QQ?V$m~ z2N_FQGl+~aa!I}EMMb&1Z-U5Td4~-1^Vm`O<4~)xJWQIsA69f~VFX$*s2K zM78>zCJy##rgrSNH=g#w{WpktS6vL76#TFe7d6n4(@KpKxK-`}z zHvnK@aV7j!?jYVcyDUxJSifQ zTi`Kl7C$PzXT+doSMsS!^Q(fR@s|uUfL@T7fOTulv^+F5n+ifpvS$z|bd0?VdGNSZ zn+I)O6;vS}E&M6HrH*xpsbEua#u8Xebb4P-YGpNgr4Jv-XJe^qQK%1qtZUg6#2}N3)k+nIv$O z;q6rO5vVii2F=c6K0#0n5@$Q5d`nva7R!8pVG$9ysGp1!YFUGB2m^XUWeEIbZM+SfH zo?`U0)+L9QaD6$j0q0g0kv!wAOeE*p`gCtkjmlGPeWu2YXT}&il54IFO-~TC;>R8s zG9nx|4fB3I_2PyH6Km0)6(jnJqBHm~sWIXg~ zF_o9%Td~VA<792!9kN6(e50i;iJ`lp~t-#Ltvw6)(G-+zSd%~IWb+l(7W6DTJg|~o?7#P zo>~1t=t(O@=!tyuh5b1!#KPZ8e=AU(aL7|^tcj1n`W%9(__yCF5{G8i$$cZr+OV)O%Fb%e(7^eE#pL$?*L+IV!gQk_t@E{jdt|6Dp%O5OO_A! z)ibLGX)y%uU5zMH;801{^uT$hdF(Sm(3g&%NUdiMm*4GaPL}FfWOuhynfzWObr!oa zG`4I&e; zR|%0J3CC*rL8Eg{ z&w0^lw?}`jatBxp{ z-U;(Jo>p%FUBaVY!#;&Yh>A_miza}cJ~raI=j{$k{%1u`N{R`D3bs+L4f}H?8%0;- zl5N*8crD5`2?qm61rm6SHUUY%sUL+*2-K=D59(;+mOywvY8I&Dts;fSg%)yco3CdAL+z98Ey-&3V zCvPiLI7L4+ni_egQ1e~sXP-EE2SYkT{|TA3dEF!bL0O1vYya({aFQ&fzA;))=IbXD z?R-90w+&ye__0*pPX=2tL<)?x`=^xSF!B>g+e%n*v0_fg_Gzq%)}S9mqPsvXin{N(%r=HykN+I_VgLrZohtjIh z_-614mA2G_PsmBhg&>kHR8zZZ&a7!-K2luUby*(1k^DKWp%4;1bXi$qQY|Kx@LC?) z7yYTN^uVg!KB;dx+#XP%Y><|h@A@Mg3{2hbK9=#+db)C=$usfZ>$s5v;-&?Aq4DE7 zy~xxki9c6RiElqLJ$AU&_EJw`6x*O#ULU?QXKO}5xee_I(JV$Np48bAS1v5a14enX z0M6g~V4&_5wo8^0U6A;>aOBSwUO#(znTL}m8=Dd7a+9Ld2hCGNkqg)OTAF&4Iy4aLP9nN=24{KA`4ElEE=U|k z$ND=*k|*QUmjrn=0l2&r@7s;iN~~@3sFAds6DwVSOH;w}>Cln>i3FbF88pUtjBGu< z*x0J%=GpYzeL_=3%ai-h=gJ8t@AcLJ`7l?qFH^3M)SmbXPguGV>KBM!3M0K<=aY1c zA2^q&D|x1aW`sl8$uQEqn8y7^cr+iXdwXd(3*g}@ z49t5qW0;s;=SO>YS)i6$rqKk?MH~2wiZ1)hCd^WQBZ>71x+<8xPbHJ@%)P^zgm~gb zrYd>Ly_S$x2<>FDg(Edn}>*gG+z~Ls@q>xh$*LRYieB! zQ{w=b;k~fBno2+9HI-U~vz9`egYyEyK3iZ7hePgbRLK}DH8z?W+iObv;*;N>uMis; zAkkEIVu7REjXYVY^KhPMKTu3LD&vVzFxp9>yB;@}(hNev=cN5HDGGgDU`11^XE+yD z7FnOMP1`}u~vt{Cf zNQwkmwbNtc>~!s5(=?|^ts9z>Mwd-wT#XzI(xdUx`&S*#H=UEVU-Wdia1o~5zQ(Tk zI(+e&)3t`#%H^I!kgApl{2BJYm#cCx#x**TJ*ltiMXqk>Tec=+C0(_#Iv((}C8-4| z9TnLy32oQLq%0R?aMQtF1-;Qet-IjUJa9m!ff(!3B?@RmJ*TmE@Bg_{4n!zhO~JaB ziE~_Idh0-nt37oRYD5k?cC|Ws$hsxMy*(uMD5^-U>b_xfygYS*Y^8dtgVq}k>N~Js6X_aYyG zK%M|I?5Y2wPhHZ~ha(R3_%86$r6jxmY|iXAdWylNiGGwwU?7|iq5T3i@Z1tIyla3! z7HH?<)7btqF5RE+y2&VBK5bX+2r@_^cyFtM@O%*3jpz76_sehKA zK9!31Faxbzi$W6rF1q_Z$Sqz;Ij6C1g2ZKpHqe6~5nUM9aw!Y9#6=GVEAe2c>9Y0r~0lN3m* zi^CEp6uoU|T=As&iGn)ou13DUluuwtXkYbrh&f?Yd&kfF<69`Laxv2t~^R#8!`FiI0~=68zoPAs$3hS|{|IRrek9 z`c~<0q!G2)%|BPN?l!MXYDa7<5>CF1cO6=Ta&eVzinUxmZq^V-?owwcGc`0i_;y2IxAP^C`u>}r!tat9M z)a8H9FVlOb!kJSj@n%pR<0hworZXZ{jmBk4+IQMDz)y+)tSWo4BRADjG~Sl~xuSpO zZ+85dw6{wrfn!dbEsh8m(){oLTp`lM?_X4Hb%rmS>Q+^F&caylh-HqlYlrl2nUeSF zB$24D4^sul+a3JM66`uhY-!!-;IZ2m2ju+PPP>D7y_?0ttw7W zu8NyJ#V4@y_%_~Gx7sEpmSJbp07&czO}nn@&8SAB;}pWU0yMHiFr`j(7g%En)Qeu* zbA4^s%iDDB6TQk6zPUF}aQJzXWp|SyAD_N;x&V)J*Yd#Nvn-!y;6S0LKbz1Z&f@pl7epe(q^O2%eU{DsNvkI(Irre&|K z$HJsHO;3UdlrxJ<^<=uxq|l!$W<#HY*><)jgeHiwY}Pkov#7CtK0dK}TR47addYf` z@gsM_wES|(k=wWOXS{!|ph8_~ z{=@#m5m_3xl%Gb+hpu}v4a>H%sHxxmTZCz6mP6|g8Xm>X*Oj$jdt=6|MQa&eUStX* z*OihhW{ZrlMQ%GX@}{E)+-l!)9Dk-;>>&HH$V5&3_=EWeu8yW~x%{Eu5;6L}b-|5#wZAu<+yN8{w3 zr=J$jt-f?Wed8Qu2ENdN*!pJNYSoc(XL(~|PQKA6pK-l}rSI&~X}SAq1Y1nuW%6Nf z-f91zE83Sim-Cl{OJ#ko7kPWp%KM-gj?yT2?6bZ5{A=PDW|z2^_3)DQu)eQaBY}}W z2y_A)gEr9g4chZ+6>WM(*p5*xQA;=H+t_|$R z@A2)Dp^iY@iW&Sp)#v7ak>A7rxgvezko$uMbZ^{TyjCbQ;?=2!K~!;>R=yzPmw%0x zPU$3mQn8XGou|AR82#lSM=Ia={0akABr}ZzrdBucTIQQS*0f9tPj!3CCy}X+n)0$i z4?D=MJ8eF85Sww)A}vQ;Wl!_uk(*zaSm>La01U2n2?toCD}|ioI@mOQn2V*P>lEng zq$7uL)#UwUajcwe_OO^#`h-FzjpYV;RcYqnot4oM}V%6^hrC*gIfMQU6z`F<8d z{LZ&5NSeZeF}Ftl%38$q5qzzb20MMH&VpiJnv|G=#?RyaT$#vw8!Y#zNAk;XCtGEN zVqx(NAuu(@HjY42ZEZp(6^qKj4jk3pCO`JoMd5`^`&AIbOZ0nZZoFe8ci0>M{>;ru zGK4s2QMv7Y=4T8x72^h+xI~EkxsoA%8oU5A5n9~p%`Cj(m=O@e@ja8aeK{h324mYS zaz8hYh5zKfOiTKFDE(UT^227+n?TcZ!Pj3Ncwe$+u4D?0KmeD}E@}sVNq-lS4f_59 zAX*Pltw@BPay6TsY@6g$4#$}nL_3A9o+VA59x(DL5u_K^*sWX&gSyn5N>>Z8jDUiSh86?o@?@GkE=6v38j&9^7?Fyso)-ia?ngXs zF(I2gdm>5xbH$o~zr2&lw#tDfw|dW=6RL{kvMLUQr3yHgSN z`sYawzd;*7*$39}Z2EOsAufwQ!{wMP&WI*@D)lKzp3lv=riln3yfZ}#Bg9Z+SOFN` z-1ik(^-+95Y!iWds>wI(x0Qj`_Xpkg3WjNAIO6o793zeS=Spc-^*A>22i81RX7fw^ zs&YqAuW_^h&F$rZE9Y}bh8lMqm#csk*14ciA>_nqELA49@ORrqT0@N?2dThc0GDL- z<&Z0;RZa!-$WuBcH(E~}6E}KezVCtJ;X|;Yl#xKaGeE9FVSi%{Im#AOaBW6uqQnp* zqakw11hi3e_DSb`u$Jbh*z|HXp=Kop{ma86>1LZx4tT3jc4J^{aHU5WQ;~nty%{#9 zwQH(G-8J_=OP}MK1`6~&(VW>^8$LlGTw9l5AcRhXe{MbB_Fs@mw&jN4X|TWqoK zW-6#u8AK=0hid!iZmwJ6xqcQotspdmuJL!Tm7;!Q&}syY$F3R{Q;cE!Eq&Oc(sNRa zx2XT|*p3d?)i$$kD-dOtR?QPrT71X8PlKNSj5><>WJ(tASuDcP>y<~ir-Ld__ureY zlSEW(vy|2zf@Qg3-H)5(2qe0?@AQY%Zf2y}+;``v)8*JbkR{*2VIk9`I1q00s>5mfwSzre@WxCrQ>eKF!>YkRW3b$) z<$CW{>BThta*v@oBWE>R_m?=AM};yy{zepUy0p=5vn}`BeO2%wuP_D<-#t~!UmbhN zYo*MjX}6NTm6*3WRyY4IJ^|H=yS(XMD&2Bcp~Go9^ZP;-VBo7|9b)qcT1B^_4HqO%U!SE^oVPz6(^_{8zFsK?PUu~hAS@N z6Q?Q$i(?;6J{Ab0E&VUje=dLPW&OFlm_7^xpot`QZzBrAW1nVzDnams%HD$llq@9g z7!gxI zS9+df(-kD15M0m`Xyk>I3rl>khCKmT9RfM1HGIGsZ=Q2Gab>|-Q@u@P62bq6S zC}KKAPMPWVcIDgao#hSpB5xbwQHa@$J2O~0}& zXq$n-EZg;x2-^fN2(fa{DLZ_E1RUi6$%Q;A7bXGFP~m3;p7Y6>Z*9;MknIf(8J%;d zWaPS6(x=|{E1}@%TK&O>mRsJ?{tkXh4{Jrd=6YEwcBQ!1q0}|*SXOf|3nDyd)EVE6 z;yjsozLB=L3hRJyNca*hXK-n<>@oL%jA6%dnY4yC@dq z(FH(`Ndq-X*#ifbsfvD}1j(7MPG@2~Nbh$XViJIcuM)_zf7i1SwnR-QvEqqgOW#wi zl+ZHKqxuz7=8z0gfG=Z_+ns6`0x(@I!1StlG*njOunczF`8xXFduJdw-P1*5M0_yS z0K2kzU*ijk>aan2&p@9h7Y{&K8j`WDz4u;k?_!O+e9$# z#&X-Y^8+P5!HuI6Gs(>m2m_uoNBZce^BiQRs<6)UG`AVOTlY>Esc#DGJKA;$n>ldy z-x%FNt~G7Op8Pxm-`BrnY;Tt`5s>B{jb0 zlp|lpKG{5vXrA|l6q>CvUJUt!T)c9d8Gli(SAhL=@y#AVCO4O|L_lquOEaC3q_Xgd z+)Nx{4f>v)v2ilKB}zdf?}StErtXPgc6@S~`3c`%B;!c_o!9r@jkpm0@1_!HIW)&p z!#LN?^OuI97N=I$`N8dMldiP71f47XDl6L)Y+%#Sq!cw6ZF&i((t7r-TJAF&z768-8N0rfN}FS}excHj-$ zCVlt?OY<9$$0Bj zvT0uIg^0JGe@p22vq$A|<;9cmtA&X*)TN87Hr{1>=);7X<{T?# z{io=hXpP1YzuSc7-P7$%2F1FQk$cGmFKwMEoa>{SLn~z;ykGa%g*j!y0vA|8;FwzN zJzIH+`AeofBP-NO>|>8ZY$(jK`9zbY=+!hh+bRvq%NFfQusq1x@mU<8vqz`KKWv&p z7DPa0tL9Avg$l$YJBYA7F^Ufjah*yKN@n1_)Cl;|kp8<**LUjceH_Od9atQ)H4$tr zxAkjXE_XDQhS4(u;82_95Z!zr->`$mJ&>%~DJ4L2=)D9!xlK2yA1W;v<Um#?4;;y*STnBv%uvSA2^*QTwbMK_?W+A# zAxby|8#A-9|_yp6izh_5|Fhyg>GtfHHo(tpXtQS zMo-3OmxzFAhtb&W22clYOmIEwh=E+I>gJ}NapF@92%eeuG3k*2^n%u0u~Nk7VuTp* z_F$%-{L@X`&00)&jTCWE>sABVcr=An>0+g|u5I(@N)9L6OClZU#knGK&9bl$C8yf# zVtq?$<^H2OZ&-kW+J}T%!EDprZSs%{cRGrnuX0ZFp4L@2Ij4q3qxTezd!oypbj}}^ zb>+G-QxMn$v^Cs?uv`X=Zzh88?$zpzEmU6IF8-@#smevD4ta&)WfA5Hx5C zQcHYo)}ys(Z_Q;V+V*Xz?f3y)d)wUH=?3yV7 zfx=Yb>-T^dQS%ue7ShDk#TV}ooaMJB5QJ_gKI z6}rh21@$yIWbdwcqy(1Z=l;DCw{4mPmO37ar3fn|3^px~(zQNE<#iw@>?$-LaZJ-R zonGZITlx9~c#}cf=qw0XaJBSZ0Ls`7bjj?wr?O@o7`dAenMZ@F`B>-{L_kbm5ChA? zb&e?e1fXz!U`Ny5wj+pc!Nrogym@B3Ua;mBV^YhUt3=>j4l7>|)8G{>)LzWXav?4N zYa~78ZaBR?w@SucoeVhTN{x3}KAsU^!SOxz3m&ZAAm?)@6Z1~FuoNQOj$kduQ%-;M z3-@1C*FZwB@|=WCDYXo!`_XItje)pN->n|k!ITpYVvwzekB@Hnw&6U$oDXag&{NMo zhWQOr>kTOb#lKqPn{Z%*R%o?&%iT~yh?~o%%(tdrD5L*G-HG@SNKpvL z3*Nj(+^><%9im3{AUC-Y$#lw|p=C;Uy$T<%q`9CA<|IXB6&Tvi-sIVK%nK=K62LY- z}Qw}W~s8=cn(_n@S?4tRhs#qEAuLUt~9sN%e7vXyxWOna>|}F z$Qu=@P(DR4iX1$R$*ZQ&5%%De{khB+V2=)+AG+Px8U-x)V%(PXcUjmrF({$-hfP4p z9RvxD=wpGaR_gFuN>){(hENIEL5WGOJcjHqhk~Bg2N7z)9wHS$5EV1rq>cL2R*0$0c5pQm$x*nM=lWQnE17YVrrB;Ju|6qCr*Y}fF+|Hv z^xUJ_lfx2~ApHeoL6d0hot%svi7-8dXRhRPdL>^B4k#Oh&b>A4Nnl5_Q(AS)%xX5u zloH^q6uucfdy`iQ6XDwHLI8ru zjFn}F6#^r?sk2G<>djiRJ@J8Qc9lE$<#%6I`;gAhG~$PwCxRtoEQX3aqVw;Qi+e;3 z65S=s^*q~2*29ft0+(Jlo0LXScm?j|Gv5VZeb!4D0w90mlxrRUPki4cQ4b(J62?HW zOrP(CZYc!z+VbF)q;#_cpw~n}bpE0MuyFr5GkcSZCCa?j z7lOw)m#^uO^j~JVg7kU@@k2b>ueJtpF3veFO~H-BD;d7zpaMow%3hef^Ud_9sw9h- zZYt9*V-os*m4BZUXZo<4s$V=BEUB~|?lSh#zh!Ad2_#zHc+eEszUY)5-lXa5K{K%k ze69#N9z6OrJ2U~W*jehIM9tl*9P^k!zGRPJ7^dar!i;JiM&%46?9V7)*!0)ckm)@j zX_gL6zTaOg*>AY^)@{fLnEvO=PAJ+vYrLOI3+K!}Y`OzYZ*|{nJk&C`#(^v=x+}Ls zY$7z1Dh?G6IbdNO;l6*a^e5GCKI^Zw)qCvH` zAtFjixn?({%w^K}=i*r%v*703fmY?g+x~~9m2rh73RdH_7y36%r%VBA)`5o9qWkiQ zlZ3z_Osq}k<@Y(jNObiEnitA%`?kWYxnA0E0u5mn%KNJ2%}=Jmx^^5lnr$Qgtp!0& zjLP($yY~3>eyNd33xt8CV#7&!a^+>i=(PgP>O=9&YBE~&DPrG0i!hp1mFf*BQuCG8-T$Oc!sl;} zE+4G#`FPJR$iD!hV{eeP++@rzts*Q=AV$jz@^KSc8aL#M=*4lTj0Z(pQliJf+~#fe zV?j`aa|ba~pdp=CzDo}{=hGU_x#@aY1W^9kzLi5MTD}VVX!@%Kr?Xljl^{ulcd&)tR8Ck4s zdcx|TvrPS*39{+&o@jYts*Je|T!pdoLQi=LWpkbCs+xV0tA%Tk|4oef0M}#_g`Eo) zVPLU$H_y`n&ECiAL|uwIOteP}BwHG*U6kxKJAF6(oFe+8 zh;L649*`iu8$UfKR+W06V!B+>6F=v_Y@TiW`4Fs3%fOYLC8`$^xK?7KXjVC2WAQ~i zXCE;?$cHWJJ*KrSJM);yg9b=c*i`ihjL}u&&lOfcZWPv;?PXXQ#>Z|ZdC^aWAJg8f zp}y&QDp>bC=34$bko05Gf!}`->z(LO(w^nLE6VJU0^75I*Ogce;fPGX7`kd9+Oss_*QQiw-<~g)WDKWvWOd1e8 zVK0o3ad+tjBIdda<1xrY)Rw^h_t6*e^*wrq_p+_Xt`RVbYumozU8RyLnRbxvlZH$l zo!>w^L(GvwfDGQ@WmVz?hxxLZZbw;0G|6KTd?Jejnqy3@Y`f#JF9GjL22ngpdA>bch7Agz0RX7>{Qm%pSt%D_%-)pt~1rgaOCc2 zh(0FBoM&3`-6}2{vhY2l@8?%P%}R)bs-@dRaO_FkR_rhN?WDtBHN6qJ|D07$HIkN| zD5YJ*I`TA}f3yB`4<0%RHE3NL|GB~z@{o4O3!oXoP@R6Gcn-WR z@PZ7Jm$DN3Zm5*Od%ylvzg$o+=Lx0N`J<{KJ>#DK%iF^nWyzmp5r=|V)2Z0=FE=0G zX}e)`prESNVIh2DwLm9T2g-R?YcCITc}+AD{KblxihiW|DA0b5mc-_kx%cPFWJDB^ zoF((zqO9banq~=K6$)_~-x;x-?GW9(7*FvC(#|$w5Zof4(q0mwf_JHY{C1PmPqNi0 zpSy#GCnXw{KI8N7@pAB9Lq1V^+e0=+11JlIMks3XhAWS+Zv&)2@kiPwl#z~VqJvvP z!u>DsL8+@Gu<3ZVOF`^=(Pa}$Utcut?e{Utaq_&|%2YzSk_1@`K(;>;@Xmca*(us; zu-Rxg&j5-Vt~Po5$4&03vU=)VxR&#F3h)-SPxT@WhIPv0SGsV>0vyXC=FqeTwFxjM z^}?Os89=#YAcJ*F`(f@x8Cq{~HKfzc@7OA}}kco3R?;IH>9otN#FxolK=J$sWY zrw(<&#rnmGY)b1`;(Ux*QSse;QMV;NS$VR@bC;4A4L7Hx=|eRqhb|6U*@s|;!Jj;4 zU&SUH`rRw*XA>b$TDe-0EYgN>@-^*ft6Deh)0W7`kbvG~5bP z;}rff#te>9L_r?`*8v68pS|UW0=%3qhVn@UXYSM1j3wfZ&2>IAXqxp@Fw>hQl7Q%6 zM9w)oDOo0x*ub)%Zo#CNx=4_$P<9sD354l|pJ3UCI~d%86Sa7K z1+&<*{kl3p+p1k!SLxw|$`bLAk@tVF#Sp!1oRHJ>iA(%-E4$R6hV|^bZMxUlTdN%V zH!;hS)DL*bTJI~mep?vQll-vlm{VFMtdc#@PZJ0;O=9OKY(oa~@~4AGAu7D`8#ao=FLh=w`%^);U)(i4?1}*C=Ik7@_*i!KH9u zlddRlRLD`?PoQf}zISvem#A#jWKF@_ObQux7>rJiX|mRHz+WN5<&y|hA9Ej?h&O8J z5riBh?P4~56|dSrmdMs;_am=ohjTd&Wc^Lyju5|ALU!8%PU^nt<`S!o+mgF1o$h1w zDzmHOE#dibk#`owupCX#6*N>3;)o9_7eLZMW_7QcdLP|%@7HAKZXqNp|Lq7_Ia7ab}j0T=`x)8F0P$8s4i%6pGYS0|5~)wG;8gJzZGG70aZ5s zu&TT#p%>_xf}j@B(my_bLm60pGy01NBLsF7CJqi}=P))a@X99bA@oTeZ7>Q9wrrSB z(LSYxOm4nKF5%+jrz3Q~RPwg`a#8zMD8BC-%aUQMHoN07kX%^J<>w;qP+TTN3_KC& z&dpmis~IE9=}zH5-At0g?-QP{umSQ}{MrHLT9O7w5|)_uqVqe7F{>M$9^|pL`0~(Q z2^*`QHu$U)gWOv+&1r##x5jQ6N}9$A$`xtd6Igv!<3xSxL~VdQ0*JePX&YWl^{|}| z*U8yS^QNZhrikiJ`l4l8)7XM&DN=ypaWbye%VbE-=f=uW4yXH=>@PCk3YUY^vgWsvO~20l)JKCB zRw$3aD$*>N@xDzn}+F6#LClu`nDj^SH)}(lpnU4 zS1mPeXAvUYvD*v=l2SGZz|IaoeX>tO3t<~5@9YttK8%z~E3 zm_FQqY2PtN>|wG>f0}2n$B71gRk-_%%=5-x6T>N3G<3{W7k05-?vO5zX;}2pnL%@J z)kwG26Nw zn3|ULM9=0?%e!)k7V6=Sxf7HdWT+Vqp+0G06F2MK0%SF@S1e)#f=W7gb}U`8(AvWb zHKGYFai;wz;{1Lv%+Qaxy)BdN3_!xoZC88eEI@T322#@A>erf}Iu<6CB$n4CSi@xi zD7iYsB!hloV|MXr5z{<>BBxA48CYFO*^)@`Q zIbw!ZbRbVyqYYh6gc-baZNE|oL~I{@FHolKdoMKY+n~BPbsu18m_BmCWn&BZ)z3@C z#hcvAHh;CcIy3v4<^z#`c^7@mOQheyp=m~dEeewoJyki9?csB3f9jOgmzQ^8Al%El zc#9)_XEtkyf>f=cHiz+^nxq1Pue3+H7d_Euc-Vt_*ao`?e|E-7iGbSc2DXrSCzk!- z>CGx)C*at}73$B)ECD(TG#F9;dE5kSmLTU-43lRu9TJmikrw)1`tG%sFIXz2BpzBz zHR1dob6v)FW;GDTRhQ;i!C0f;O)MqDRJ2b;b0sI(eGo3z7{g^u0U|F%$dJ+Qq4f)WBjutJ>xEfwKNjiP$d5@kNS{V zCrhAkr-9Niqx+Pn;kNbs?6=gczq&CJ*-!&SlNS^SFLQ|RliVcu7_2skWXCYM9nHH0 z`D92c#|+Nm6=U0f56TZ$RCM3D_5>KXsDDk9C9jmzZQZ+{*Tg^bum4^X9<;ZaqMkg^ zws)ecYAoJnt|h$JUJ#j}DGeA(iaqi3D5T*@@bWb!_nN-1>8!tX2c5sdQv^p|4SrO;n>YuK-v#Q2X z6@EsBbErn&^v{)4cCrOTxE1$TkUQ1_S@a0`+SY^q1%-?A5>3C&;{T#%5A!zZr6+`b zHyGL@E>@F1q@IGhNHOxJS7n%DZ5v+R8GC!efmUZJ6u!}&DQz6LSm!CSC4?Ay;R73q zy=guDV+*ucBp(ln@zlCSnrQp(!j6WCY^JYe$zPUZx(qnDX0oi37kG96XMsoJ07j`MDPrKOt|&t`ZeKUm|{F^sn2)Q_1M|9 z_|Zm%8K#ZMcEAqFbWnX=M3k~qN*o*9k(@?+5Ww3|2iEcGWuOHCLq6e@M%8Q>P4^l4 zSaj-fEW2VzUNlYrJhkC{-=W9_=}<2JS%H{y&GOMmZ2nXKU&yl(Q~Jlu>9gQ=%)#l} zPm65#A@H%t%ex_MWC7nV>s;4&^##oE16Y1F`l~Qke%hxJ=J>?|s=tv6|0l$1;!-5T ziH3PID3DM_p(n755iaxAg>o+A)SiCm8eLAad;&1r2%%=@puJ8tJmfoJY_*%_ze^Za zAIPX-^Lgxd;n=C@SUC5Os-$C~=`*G7b?zB8`KZiu@P$9#;bGs2+C#Yp?&{3cV{W)s zwv0UWz?ys#J^n$9d8;~=@SCoy=3l74vV5sODNogGC9Zsk=}Ic*26cX?M`T@YhjaY) zE&Tkwmz9AR_R#s4`hCo`KJeD6?|(@lAhlCZAW=>4RXE0Z-WXrF6nKfYjYp+klaN@X zmJ#ff9J{AaNV8s)E6|dmD>1aPP!}Kb_O;n_0(w3*yxEGjEialr4-=gZVX&2Uv0t%c z5c((6OMU5e9LKwLfS+~&IK~qc{b(~U!UtAv?oHm%JrLQ80G|NZR~WDftD4q8SED=H zSq2A(=x`tm$Dwq>B&IRFV&Xv~4~IL2=(F{91k#Pk@3`YZE_h%yhpQ`WVW*x(m`jvy zwlDh0ALM50TIDP;WT(_U&`?f1@mq65NeA!cD(2uaH`>Im(oG zt;#*w$~Xr3lFHAo+1mHZH~_-W8u#C;68B!*Dlsx~2Ce5&9&;%7A6j4^TDT;=IL46TlvD1}RsUvSqj`j(w^XKF$)Kn8?_Oc( zrro%Dlfh3j=;>=$ZvKCQYYe%yr`P@lDwqep06f4bY9s$osfb0;OX40##|+g^*$=?t zSFS5@>RLW){2zw;zpnh3)?ZE2v4_CXu|HR)Qe|V$Fs==Mu9(X(7|$(eM&HDjKUXS3 z)fzTti!}O{H^vlpzZZpbN}&%rV)gn6+6!kIjNT87&!)_7^_6)SC{!|vTjB^@pU&_- z%zgvak&9amChH-QnGDr@!gsBWFIsfZ4SBlB=*PbD|L4;$Lu=SrYAGewe4cq-#!mR= z#>F8abHNCvsZz&X`}=;8Un`y~i9fN=>e62_{UzI#u_F{6-7?P&BI z;7+uU)lu!SkcD^0p;ZrCb@N8FW5w`UwY6@v^FFtiQ`Q#YZI>}v!y_7+`-7cyxdM-% zph1q2ivz!`WxKj}X}xiri@#hPtwS~!W1l|jcy`?3(5xN1(za`gJx5G-A6#aZEPd}~ z=;`-wM~&`|1Ygt*Y0*9g9q^PBQy9o7m~r;##-M109R&(jP2cO`z_1rlvk@{3Pf+j`TGc=v31?c&hQ%_`E{f-;*hKBb)+fc5YkK7 zs#gC$_MU7H3BGiZy(f_08 z^ZkAQuh;MAiN}Mq?)$p0`M$3Ey4hMx4>9H|WN>emGd`KaT7#@;YTEe1f53VQsjTo) zFgco2JBHguU!>&frJICHH}_YV_?TKeeV%x=%TY zJh*9vw`j7VW-XJH`a@*xYi0)V4KqiH00HihaF)QVE6ifY&D|8nL7|ZSfW1QMe9=+E zI-jTg5BvRx6wKzGpcP;pm%{b(Oq8Joe^hzZ=_@Me1^Q8-pJzYMUL&TqKnIp9h?|iS z&{d?$$(1G&B++D_nTVUhLu>3;4;oGq8b)b$p{-kqf!zR$wMjY`<<#vYOnYaM48E&w zQ`Jp0dk48a)WJ(;15YQIQg&&HV{sdnoEAhLcUMs7+iWXqwvMEf3j*4IF!h4CstXNu ztlfECfcZ=JX(j+y%8RcMypC90fpn7eC*bukKPq24sZbihu<^-*fPndz+=%w`$o0~n z_TIIKEN;lqeX_}?LVa>qmGK5=>7g(VP@!p^&nu$`_@Y&NWL|+vSD0w|bG&<`b2{HF zSgU-{U11bqh8UwRKmpCLy*sO}@h0!1_XuiqPu=dZa%S~@K`}m1KbE|zl30LT4G!YT6EW51W9t_Grh!NByS)3+w9!nFd%Pv55Z8H`z$ z%Sw`MCK3;7LlR-s(t+PL{a1M-O*Nxs?^aT+dEn<5x3rMUbJ;{ndlo&}vTliybC&H7|- z#5)>bx*d7S<>fNuk~u%A%7p~0nl2Dx$mf3lS9F#=APDYg_hM61yhTCU%;F%Z_f@0C z_D9Q^hou?^8d@uGE|7Jt0ct-McO+|-qcyH?5zA#5!W6O^hGsIv`dB5BsK_oWuR<$# z8DH1%*|U0K66G)1#izPj#B&YHYqMZY2b>;dJ;pDrx!h*2V4;KY3GdCH`>*I*DbMr= zm=(X4cZy5OaWW8b6yqg?XDyBks`{^~`H&hAeCOPD2mN*5EZq;3xIZDW|L;RK-Fn`l zSx&g8Y4&Zb;fHF&H~%K4K6_X`p?}FRx#%$^##}OAU9CAt*qV|MlBgl^r1qY<_OKr0 z?{aKU8acs}w{Cf+!d$kp>ZVq-PcdKXQtnkoYo$$6bUyTw{SYB7ZBT6P%f%u?MtrwR zNYVp;UY#6I>->11B%?hUOk6wdS%{zsBR%nE;lEzsWAXp}_v3K>d%rGYZfOe|y*6M} z5raY*|2)GBGYO2}`gx`d|2gX`v4AAr*%s11$l|Gd-5WWfbWh2ITkpCOa+X#aC|jq@ z3)4TJB?e)uASo$7#J3~ZwF$voh5wU4S@d8L>sQy9t{H1hbJazpy{!!B z*q_QJJoJj|me{c1-Stfky}CV2e`fyzl#^`$>8vDMiBEF@CKwcY5pJoOv__6RH*A>h zm~}6UO$yOb>!$Tiw+O4j&D+qfbhp01MynAN;Jy8<8Ce-IKWuhU#|jOfzdkGA!oATG zgL8jDe3)<0LZL;7o`qPsZlK`&X{UPpYIBoSWl~>{sd00%($q(;MDI6nd)s%VX4*yd zf-=FzSmFiN>-dQka#FRYO7z%A@tD}R3EXS9?S>xeJQwGVXXkWtEi9$r);AzieUs z{wrI+_#S^#nz$zds%7dw%m0n4`fjG+OPfp0o=sIT13D%eeD6wqIP3LXc6>0XNp=Eo z^eh!(V_oC&buIB`CE@AedE&~sY=8|Lgnb2GX8Iu1aQ~0G8klB6KkVvMr+h+7LQ9f4 zj86wT$YGI)Uzq6+$L`aWs|4st2m0ZKntg^v35MT&Y*waKrhp1caK}&wOkd)z`HZ%O zYX#HnO}6hdr1HLiZ^XQIt|>j=WS68>60WjhENEIm)Mjr- zI9n7OV*!81l53`;MgKN2{$Vm)tCQn7t|MqK%eJT}L`FElz!d|GuxC5(YCADw#StgT zyR6wQ{f(SxtH5k7D+e`SG|9K40rQyp^>*EMF3ipDz>6~}l$NmzP46&*iTRce{2 zk}x1u`*Ke;b?oa8)bZ2+xt&TbPM(UNUeVYaxikF_pX19)nLh1f1{-wk& z96oEA>W0WGg8p&RSzH>`Io3V4h!#&cP#u~1W|H5H>B0d2$v;=PP-u|q=$e0tKZ4kq zx1tu7sA}6m*VF2{wyQ!P!&|g28)sqSc}_jaHuqxN*+9bvFQSru!OJnGRrm!75)0?N zwrQKVDHT!4kcp5et?F34WtV;Cd0S?Q*j+1}i7ynCs`0q@e7h16w9fj0<9s_%U ziMunU+5ByV$;+^z?L7^t*!%?zO%4w2+L=nEELW|PZlx(? zrp9SseWXfRqWBR#0UgkH$(9j*cQ0gGw%n>F3{+?6S#UEz@`7&exf;Ug<_{!bnZ_&+ zxliC=i~&_;UtDt-hi50{$&(Lc#8PjPixNy=owa#g?%@L2ryqIZD#|skb*D1=1H`zN z(J3-N_3_vM4ph?^z@9g{)`izy@vm|YYx-=?t3!Ab9Ha_`d^&-sYC=A0z1yGlCaxKQM#pg(tbKh5qC)s5H%`>kze7|lA@Qbr07q~Nwz+Ml~!b2(KN z6xqos53%hsmeJ*v`}todaqDfgqb~ z+D&t1D24O4B%!(#VSKfTQ(Z7B>_i{DO`l3n%o_+j>&Hb%d8IofMDBnpt6_l zl#1C)Px(i{b+@y92H88sYZrhY0f$Pt;EFbRvxOGXrRQvt08r2E3dl z$6{Nc90|17?e#2BHpOG%V+%SVPcvu>Dr`NIxasHIUYPx1C?`GmD5{S-OW2uktShF>-i3;|2^!sBRk{T+CaDcLedAUOmvo;3;d!$ zIudYtqt(-a@IysKy$q6mbMK!^IzcQ>n+cZcH7g0?6|1Zu_D+g-xVyVQtEsR5C{n%T zVQ*{8cmuMksr?~K1N0$h9Nx+bkI{wjL$vc&!t3gkO!5=+6AP6(Dv_2x^)4HWO{+xsuryd?2^*{8n>4aWtD>Te;F+ z8gEr!o6lo}q-d9D#fWoFRhm9j((UA`)%Y`NJKNc*$y&e{PRv;C-HE_S{kkzz(v}Xj z%>VcH=EQW(3ZL6o0{1P|`3msGt2Gc(c?(Wln5oZ`X$r8FzY;x(|r%ba&Lu41ajB$Gl&=zJ|B3NfI{3=5st>^FQIv}H+ziO&9K=wOutwFBYr zTaJtj+=rMQ~aw1wK z!r^e7g??4p)}CJOLVZjHuuM_nie?N9V_Zah67TYCV5>aOIrBw-YlR&s#y*f6Hv-XIz&KLP| zyHc$Ci^M!e)P@C~IqLO^bOg4QaHV?&@eDOSWL1;Kp!i*jW1KYz#2e66F^>>wAM^K# zgeXzMz8!+w_Z55fh&u9p_r2iF$}@)~^&MsDq@)|7ffs=&SW+O{28Os=s9MS^QN<8? zGd|P6L!~;y_#6(Zex5O>O_fVANWY{}-Z^;wvTYkGD)k9SY(xe)Jm6iwxkd}UxbJd~ z8oyNS^Kc=VO#oKy)>Sz0*r`FUSyX*KP*=n-6IQgnU+J2Z<$RuzwtQTrGaWOI?75BE$U(@?J0@XD*ackjE%81T|yVi zRFn#vP<>0cRiJ59Y=)rK87HX@ZM7WA2TX4H;tUaH^SH%>eO~vgX9^~@mVFC|l*U6L z86g>;r^U6OGP*B1rA09i9ECRl?JLQ4DIIiy=Xs1N*aeJILh~)Is(C zHK;qocHRsDPr=4eyXVk^c5z?jzgrAOYwY)c6L6WLrY!W-QD_)uZ)9J5eYIIDFY=GN!u%NZOKsB{74t+Z zIK!s&H;(MRHu8~Y*kFlMN#v~qgVDjaG&iiN9IdT{MgKL8vQi3!OO6Ith$BR~EN6bc z6!yc5*|#Aog+d|1=Cf2zN25IDQqTP$ID zKC+Knx>28JU7!Dm^SMaW(}gty_Q9cK;mo%S_D80i)z6_c8LGN;@bRmJgaW=W2bC8p zFEo=cmvmnY|Hmu%vo@M$aV)7`OGr;<8xUgfB$2N^0)R#3X!Wvq#07I*yD4ogxD9NL z3>BCL`#QUJ_s`?9=Sc5%Y8qTtQS&2O8?A%nmXpsl7*-};X_jZvdZ?f^bA(EVN1~Sh zECyMUObA<=XBqZpnaAlQ72rd?*x?ar>%NBq;9w%=OLbkG(w{D@8(b7gSC_r@q2zp+ zVZ~^x_0nUQZk@`%@%R`;Onc0ysF3SwI(=&Z{;rF7a@W)?$O)8N%7~b2pi@G_cXq+y zlOZD3j7p8IFGmKmNXp^2Eyk0G6k3mm*M??x>_w;zbj+B3J)Wl-upZ7j05{^DmM=ne zRJ4}rc{ZB6XMiy3_zMwPM?}uglF83vmIs!@Yzy?b@;xf<&2mSFwGkEzt7AP)K8De! z4#RiGnXI@_+v#_^ZGP*b!SjgKlr~D^4w$evRBYlXr~Gzk2*dxwg07x@Z>P1=5^<#~ zp?cHaqC{WsUY4;s)e7%eF&pL-J%5zT^^BY%n43=%VB(|A_DR{(x*}hRHyW* zECfek$VIei9(u91pi}?n4^9zwyXR?NLPaUG;f#i!#<~@Z^ksp3&p9{G&+MOiQ|f5l zuv@Av2^K)|f~Sxt|0RDWsu(qHjJ-Cnq_CGn*0&v@a<{&)NA7bGfj>>uj@BY$4K5WZ z#Y0U>C6a=JYzt&baBmHx08;%)|6~ZT<{35fG@bu2rTzbzuAcVu+UIYAe#kTL*>^vP ziSwL~P49WT2*7>A&p)34n)mm2DYbj6XX(k83s@z*No3P5e>RT}+aqpZ7zz6%PK#nw zz0$2m$x>}D{$oT_<82S#_xZ*?FC6va5C&& z9t+b)=(8TKs!5Cd!|}eh^y|ptK>e#1r7hd!*>06mlAmvxnAchq`{Es!hT>+b-%dNc zA_Te;O47NV&3nDmThGrA>`jLPy)F^|GqB9;|K*Jhx#RB#%sX@DO=iV>K(syW5<|IN z)V2g8&bp=5Cxp+?eCDq+5KK39wQdHsP5oUK2bY#Y$vhLAs-)l%lu18cQRfFww|$Mw z1Aj&bt}pjNV6_d-_2dp&eSdZ_r2-)41%_PO;{!xz@D+1f_kCn>AsvX-ij8OE`M(i6 z;yVra-mXHBRW1pUG69@Y_O-|>iD&Jdr_p{>wL1rZq6B(Y{*UDJD{4fZd~QqIa%|_p zHNu1kHblo_+k!uFjdKvHO|jUL`4`$PGt%wvzV8mznE$;!d4e$@{XBy))(5guL}07n z_CUjNKIM~hLj?P$Yqzuphz~dj)7L5FB8F10kiI{gE7lLXVVfUUH7+|}JTiJZ+|okT zTGb)d;i+#ys&n1froO4f4Tvl8Cjo3hM3z?dEQx7u2!3m;Ul*-~EpPSPZZWPeJA1Vc zu-Yo?cDrd`4%Pc<=Dmt8NjlBl`>-vBpt+U$d94@kQisR9Amco(nYW0Azb$pUABiZm z?bv=fVQW13~0)%$M2$i}`!(HhM>09ee`$7;E0Uw{eK> zseIQwexeB72(>)F0#l9U6tePn^)CRful`>nbverZ+E<#g=?k@NQTN2(0-|rgr$juV zthS-P?5%Ddc+b2jS4-5sm#T)8T872&u$LFK-VIQ{XH~^2Wy}xk2d8AV$vaQQVk0X! z0Q*_jJt#`>TVjsxm`uU0(Ca)M^jbPbtYmL6K;El2fCmHq|Rc|9bF7}>A)0*419Fw*1M(omHoL*-e=n@*t@D+ zb6^bRbAXWZmv_4n$Wj5dexPC6pX})6{_Ur$YZ#X!v?kMU6jvLaF5RR&)01zutZ)j! z5B3KP#S|sLXZ*XRyF)_8O|04ycxK`r)vJS3PezOUR%dH>jt`bAT97XPS)xK1lUM5* z>kV3}rZ#fGA;kamXp zy_InQ@>)0tSk?LkTj2RGVBt^L&*BdKcAonDJky`DWb<$u{NlysWH!w|&kbT<9}7tb zCfu}FoKDb5=llBcm`nat z+5X3}s(=nw)UWv$d!}vG zB1@Mt-*sJ|scye|>1ut<%L2{1VQ+ndMte=KxB;#a6S_LTmJV$zO*m(AQ@J_DU96?g zz%`a#UHq(8yTtna{?g;*VDxd;8-V5S07oDE(Bk0KzrFn3V@LV`4nVJ$T%nx-hCStv zPTE0DC(B_!&jj*0)4}LN>Ad+E$P-p|jUvl{<_>AG*G*~!IXFPB=9+-zdtQ!70x}O^ z4)G!09;jjAyjyiCj|RRR&Hpw**VUJ2A6z<>ThvZ7ps&M7|FO{XqQm`ttXPJe#&`8c zygUj(=;~?_CXkJVCw^u{_XGP_T4KvOjF)S||1c9F+hlC7bbfLFFsvI6e=|{LGhu#E z(y~yR17pzhy#GqMa?OBsS z;we58FRz}kY;I&-o3KBNV9qb~BM+75nc04M%bm*a-U2E)U8|79v+@m3STv^%$W(s8(zY*P(9jZ`L z;jLw`6Ok>?kY++Q8cC$F2!qyX(Um`IlF3Ew{qUami zb3}`^9Grq>9?Wi#I6zDr5p>GhD!`S@>XX5vg!Q5Y2?l>0iYV{g!pb~gMVD`#YUSkh zM-9w<<*9bzBw)%q`1X^4oBhWV=)@CGN3?^Iqi>Q;?#2ES%#DNV(^Y(QtperU`{<7` zpB(PA5!)kPBQhT)LG^c-Z1q@y6s6DX0dF@8v_^%q_Z4B(w&y^&E>1-!Xq5oT)hFz? z1|;U`@Tj6M70WZWCiO09cHs9U{ZL8=z%$tM>ot*UPX`25ApkBdPrfO`g&}?Yp6s8p zrB~`v{UTVbNiH1rykMxle(^!ykEBPWmZtsIvsK^u6VS1V?)t{Y^wFZoQ} zxqPO4raw^O;MdZ7F1=z_uY{n-1k`;;Skfl-M`FDdP&h1hDt3cwe4YYEPdQZY{nCEe ze&;p7>qVLOng^aA|05!+v^U2n&_Gzz750Kv0Kj!EjTbC(VxK6)b<3Zuy6>8NY4JQt zJ7_MBUDscpg@>U7TEIlxIt{0E#L#!&w%=bnA7F&*!DKg*X{ak~lM9v>v6UbbocH{H z7Vs~xz-DpY=P!#g9E7u<711~E>7O7gDkEw(Ph&Qcb~KwL`{3%2ljPB!?pdS?0hK@P zxX1&NHCm6)cC~jm!;_d&TYQmTHA%JlO@seg(B`(02*M7^{PPbl7fkNH*zVGkfUS_Y zQt)3Cel{-EKp=aLqtNC&!!MCeN8d&`Nm77*arlb8BRhRBi)ljx^em3?lFWNjLw|~( z8vN@B^YO&s626`KSo)!1@i1=_FxkzmW54Hu^CHMoHFEuHQ@Zb_gTaStLVXf1V$9x; zVSDQDlfZx`RW}zG4W1eJysBeQiuX+;@@v$;wJOcE{H zhL@~;tSX3wDqo9?(bwg+pd0YTA2$jA`tMI(6~4u$Jm{C3QYntR7m za%X#9_G^z=<;Qg$xJf!5&Q&)Cs_&7kB9k)Ia|j7pzy&Ym99XGsQB_vfS){h$|wv! z@W*K|)BQ3ZBAf%XC#PT3aF-C-?Mz^gxXL$eaHlJro0JpC=2zWL_0 zW{dRY2q2JOW7bQUbQhQY-P)NaDQK9vaX*M|-mmDAVp2Q{R0oaW<2qcGc=RP)^~E_)ANdoo zTP`vIEy$c3dx@$cd9gokf=zCkjF6Qn=^5m9MHAJ)J(KOHPc+$%!krCi^0qX%;Dq9~ zYrNeS1LUfG$|15tKy>Mwe@zWMMNxe(M=plAp?fu~2i9ovzHy&h$>-$H&uak|ckAAc zco-20TXvfFCLGQ;&6b7%7*7rLgI%+1byN7Y{|qkAM$KDOw{o5Sdu>U|Aq zXIP3>ESFtvpz7|L|LV}U!MB^GW;!Czh5If4aHboKPVF`xbJQ{Xb}4&};8olM#LqK_ z=Z}Ec2lx9rdN==23-j~L8;;(+x}Rs1Mbp-oH)5BLyv?n^QX>vO&xrQ!h0KDbhQ9wXn9${#=DG(4EE1u7Oj)j`%xn?PrUqH zaPcSuPxtQ{_7MI;2Ui}C*8V8TN=tQXZ0_r1{$i(Hns6Z&EKZxnqq=VUG`u+GMH$YJ z8mnI+uI6{F$r!Cg!>1*SBosQQok5&{e-p@>h*H0c=#0i&J*P#y%h-+1O>5Uv&{fx~ zwB{yq_23`HwSI_QeCg$(H=G}U)I}%~IM?LQMjRr6+>&f&h?eyxgLF5S8JWN$IscoE zBrTd8-8&E|9MU0WcNlOA>B96+k=m?9*LWb8l=T)^ee7Qe=cM_8r_&!4z#OwCR(Xyn zr%FM!W@140R6(3-3ZVVkjz4?@jhPnGRt8+Py!Kyi8k>z`kzy#()y zE`2kf_#Z_9fOP#k{+nnrLU8oB`%tORp|^EslYxqfjKme=oDpjn8GJw2>ijlpe_;hi z6I}+fAC8RMOg;cq-_H<6|2aP88wpRQ9ra(POoy9F3I5k2q?{`^6sx=JSZ?cL*pcf6 zg00DiK{;PG8{nn)n4J9e;{P{2UW>){=B-3-{D&ycwf$Qy25)2Me-)kmDv|nid-$sW zuk;IH_u8Xs=)mx*Q|GVjtVOZm)t!0R;QQ(>D%q#2A1o1B4gKOb>aG&!&wl-7R%d*& zJSaQKf~!X5cg<)_o|{v4f_3rmin&rhmd(6nU@ggkvo(U$x6A-^nkb0DguWSIwazOc zH$M~-=jd(*HB(`iw)*dL92ukUbKKr&nQnuiOE&?GP&+zPYq2>yUD`fWd~?2$rN%82 zpwq6P^YZMnHTuu!l5*8!c8RwOc=i}Ra@1KK3!{zuoE`G#sfKpmiYf2n0s(3SL++M_ zLMN)O1MGPq_UuExWeH?$adO&r zRj2hM0`ro#M)%u#o{2^Vran~qD;$Dt#?6v%^HUDPzQ3>FFVO%ib2zm+IPeLrc>?b{0LKb#f3dD~@8(F+i;}KVU zUab>>Wxy>!5TKUz4p3U0&?mnUSf8+>4sQy~?n!PkxDTC1J0K9dN>0_bV3vBLh+f!M zcVA2Eq&tv^BxuLI#U38We`pgY&TaiAkLsvD`6~`PupVl6D3pcQNtHEHNjLMGdXxeY zW;dWawFjG4MWnTA?2O5w{70s|pL5aB9T6jhC-RgrUEbEgu>p^X1 zd^&x=qR)^{=?|TlGng%&=5lu>1}gbHD|Z#Y4@&LD%yhu}*6u7(HKBbcu0zR%;`!G| z<{PH86L$qF&|tX;5|dwP1aov{=F?o(RpC0DP_)gV#F0z{%F|xa+1SJ9y|hrfu@Cu2qcW9 z7S4))w3V+7)Sx!rtV(pW6{t^D-I66DX>q4%b$A4pOcR0ML(0!HC@)s0Ji#_wQ(PRY~Ns%Zcl0&l@JMhNr4Vd;M3~0n=ce4EVE!y9{}aGzO{m zB&ThB4r#o~2sfa%t^y5-(5=fzca}M$b#Yv{bia6}j-~3X>}2^Wj*~ZcGEm(imecxV zB*Ur1q90K8X94T5Z7~Qu{juKu@^15BzsOR`m*AM{Wu)x{|PmX8NXczB)~# zhBnkk&6mQwF2~=uy|9Sl)H1hF6dN2Ab3z0KIn7Q{1H|7}Z;Dod0|}ug>V0(cDO+_C zc>Unia|W!NLLDICsu?ivUZ=N>q_j++><(_AMxs-+ zR{vi!ZJG(=c^g;$+QY>T(#wm+pUyF&mO&T0mlL<9zaA2-y~8gu3C8 zqkKuEe8wo?I(c4+axJT1@X;6#w+fN%T6Ix zZZAEuGo~RXl1;5awNAD0b*Sgt_1DGLx3$NUSIi<}#iG3=2a2B3wV#n#g?m8AH|%s! zz1g%rI8E<9GG{?o#B5DyD)lE7bTH7e_~)6(KKkb)+-79YVI~n!UC@5T(bxvY>r3}5 zH-fXTjn8Z$eEwl){_t7Ea!P>f(26~knNx!<6!qs7E#&asAT^+(w%+Zu?*E|$v;@8+ zrZJ4=?1^$KmAX%{rpof~^X7IKSYm|F&-zJysxKVTi&|ODd9x+ES#_h*r&z!;5J=Pd z93}bzncKO>`xBgzwtJy&*GI{u@<~`6W5`wO#V%6{F0;if_ zTeUoxxfOt55Ll|=&YsIk27!Vzox=U{f5>JA=MwhOUuFSvgjWJ;&B4Rk*HsTN<0GpT zqW?c>Km*cnD{?hI*LZ!-p}lhAM=Tp2fD=78C$UKFny9!{lb}Gjw__YBm?FTmv z*U?S^rz|xtP$;3Giu?{hzW_Zd0^=#bA#vz5QNWv*JTbXIaed}9z1`}r_4&lA?FMjv z1l$LKy9As<{lFzJSLx{Myz`WF*ZkyLH1JQU2EPMbKNeM%N_R=_X&1)CsLN&|ae&|{K0!VXnfs#RJ6E*aNWhA;qJtdTSY-BOqyi@KRAlX|<}iXywsmO1 zSP;oW!Qh23aVt`4Rmv1A&t!o!!8`|_}m0ddf7 zxzJZtUxzOkzHDjJdNz9U#PGA?$C4tbu!*{!1i_j_K+zYC*k4&o$(Y~1+BpZ z16;v@t|NWu4pg@^9_@dW1h{ST{NGL-l)8`WT~iJ{x>`Unsz1+U0J%Su@T%JQ4`RlN z9$g#&I5bHt{KzK+7pgEGYUycG5^qo zWak}|Pt*O{ijR`Gym=r7y4x9?-k0o4k?yNA*diF-^NEx0CZD{SIH<#gDlJElJXegr zZ*{kW@ z=kUk~NjATSv_)po0bS^v%)()j-va1B$&UPS;*0@;bq(zM^Ncs^!aN6vK`&853J>1j zk(-RpxNAVZWhpj4Xi}Q)nh2KgMO+uV)ET4~?D<8^BDXqnIVfs-deT$47M%zk-wp~E zrL-puNarS|ruP5XllS&`TfsU^%UK+$`Pzw9=Kx%%DJUg zKAI2g4D0 z613k>ToTVSsI&p`?kR)Fta} z?j^fP&8VdvU6;i|jRt$p%tWm;tQsKlMTRiYIyAvpq=@9Cxmy&$|3lsIvt=ZR7$8){B z1P1Yi39pAP11zHD3)qcf4nTaoPQ^#86$RnUMCK0aqh~XeD-Azb5WQ3|PmTx&*V85F zbvv@TJx<<0+8=15$@i6zE{T9I4rq}2RvZ+CS_THauW5LBju>`MweZF$be=%-&xhC+ zxoO{dx>Gs>ozk8&vy;D>Kjk<~bUb$UJerrV==O$^{b%Y^eLCuubJq8AT?}T670+sP_T$p~%dzNeC|TkpDBR8OUDf$%u8=LtMUF z#d?HfZDhtU{l?uSW{Zo(-_1zdPRZmEumtC)_SJky;Ra)8?naS*3<~R>(K9Kih~EqjZIf z^-f$kC<5HlK6-~0UIrv0-r*Yl3M+!(lHw8%Mq1TaR01Hab3mro!+h8vNf_0xZcA14 z-Am2qIOU|ypv_|os}*DarxlOLHmDbb(ddgvc)lk>V@cLa8zNk>mxGFujC+}0oR=7I zaqxCbi;;d}JGU{rvd23@;scE$v#zHMI{rq0VEOfuve?(lWdnLe;0{c?s)wx#<`)@} zfZBgSK$QbdE7}6JMWm=5K+Pok=Ul`ho6-&`2Bd+*%R{*(`Zw;}=u5&|a_Gc7zNwkS;hH*C)TrSoqG)8~ z^9*u~4Fb}@E^XgPD&)7PkiU9wr`$%?1FUIB} zy zbxryeT|c7Z5>4)^d*V#whxZ1@Qi@Q8>&|5bE8zmO*}AuRN&^IwS$~>oKbWVWO_tKF z8n|J?SNfgDFq!^$9Y!`Tj4D9slSgR!^`oai|A_`v+5zB#6p#4s~)Fkmc92%t>(KU`Ba+q93m#4(;iIW=?#>i>?B#m?NevA9Lf zSs1EE0bAu>R$P~}zd%xBa;AQJu%}b6yLk<9^P?hV?Dh4qxrV zFPpNzhVu4;znPE}*CXZzMpxzDE}!cjn^d}!a@8TB#zsn8%X)SbSGr@+%K-c(e3Q@@PgLI(^Y|gvl1~qedJR#^RyNn~0921kX-`^-+^k9`w4AXlPK+ zK+8pa``Q5|>?ISszJVO(hiuP$Nm;h53t+Sd!Q`r2Um{D)ETVu$RXg{mO@hqW>}QVU^kk|-(x9;t!OO&*!g z0hGH*-xVHR!o1KlDv`djtB_fr-5&p3Jjuk!$jrFphO4WO=i@|i!ACualmhPTxDJCm z@xw;(Lk_7R`;qMQ7fVs8^mfZvTRKEQuk#&+mt{obu$Nlk6cS zpE%t4wn<~?1+mxzEtv4MfAV0Gi7%!aWZ@{61OAhE%$>X&0T z2L-XA%fa>AWt;Ce?sbORs$A+>#uj%Se_cjSteLL$ zgk4;y`7A@Esiv`}#El3A%g+p2%T*E&s{q1W$V!N{=5UPVH7F6DIlP`uHa4sTlK$F$yNp}4ZW zYw4Z>0oqu0IW~_Myf0e3!vTL-aSsc!+2T++*32rw@HrM&&_m2`wU98)llzFRNB~8g zJ_v07vbO|)q{ZH|v7x=?4=w)vj>yC{Hw6+;XF9Z`%bL`Ic!vY)2|Wm;>ms}+L^>+R zXx|vQ(kS`ng3_K4Py=rYdE-MQ$6N?m$wNT8J`{LdboSXP@-lhylxeeQ%G4eLflK zD(|($dsJKqXYUIYQiEGe-^zCpvMAN=%NjTE`FY08%O4u}@`9Oy7TlP}0h5Y*MHK|Sfwk8Pi!R)Yh9w6 zs2X29G2d<4GF&`MCbTm`b<v3(~CU=E5DkXBd-#A%i#;9yc7KQCag~q z=lRjJjVLlI2dX_;s&esUTh<==TznL&Ok^2Jg_rc|&f5%d(R08=;L zlyedQ;9D-GfFN-m9$ig?^9wuWOn#MKjw$P2&hFCSIbbJXA*Z@-nelk*3wSsN?u)}7 ztTSL51!Z-z)_Q}M?XQXjeY8Wo?=`1o$c?2#% z^}ub0rEd2b(msFpck!EQXbjU=-1eVW-BEJA{wPoE&P0a)_Ne8?rtM}TkSXo3RR_}} zBb>!--r-n#ZNDYW-1ufBi5I#VBjepCzKP52o_^92aEt}52R#u#58ft345+X2pRnZx zi^DxRm}E`KS7SvJqM1Uy_Wh#q18)|DrpsSiOaXyd;r~a|dq*{uw{6?=+%pysaexE@ z0)8Zv5Q-!e>AV675<&@~NS8nYh=q|Hr(x^T$o_X65ER*vgE`gM9S4!`JJmX#?oX4OcuH(4O6^3Bj#B!^hC4lI3 zzPq-tYKr|!PO(duU29p_`3LR??ALZ%qe!=6wDM!x?!~4bwH8LM$8QD~%xpLK{wtX} z@F?pl>oxA}pq?DhG&j7uW{1dB2t}Q#*lc9105`r3{kyT>Lw&IS4F3+X;C}12Rno;D z)%Tu9A%=1YdG~&%s;ODuS@Q|7XoepA9ulpBcex>Q+w+l zXF2y#j#b8x)N#Q+h)^-m8?{IfPNO)D2u&AA@{mSoF2#9|*7Eg#Ukl)}^4_2(fT|7e zhz=Koyy4RQL)P8Vubk6ZE<6XvPnI0~rP5@gv%c-1#u*QFB*0mIne#gtyT-GBCGr|u zd3q&Mt`J=8rLCdWT}phFTsNKw;%VQ{1V!uP_3=w9R^cfU$(bNKSvy(WpG%?lEvu@` z!di5d20iy-DGb|c^whF&WFWiuXWTa~@&A&^|3Zwc`Tza;7ivrg=*atH|A_&z0pduQ zID$fF^K-|P9yWGB2P%`C1D0b!N^9i1xn|a7e#A2n%o;+I9P!d3*XCg-He zb8EzJ#$Y3)MHUrj+06{aH8Tu&;E7Bcd~%dfWEvNS%A_4GOQ93adW`Ykh+H5{{lojGn% zqJ3V)j5dY3=AKjzHlD@(&xs*Z6t7jin)U~04&jdy+5qb|L zf)CdDqyL^?xy^|F#v2*5;|wa2HE0X`0DA@V?povEf|t{EhU8e}l8(CjB3m zF*$Ooj$)r7349YbyIS_X^sb7_B!ie25ZLGx9aR{LA|)Z6H+hmdS4*V6!EkQ*;#Y$j zQyo7OI7?Sp5w|r?_l*_FsTG7i+2`qhVDyx!66W9ieUEW*u(nweVvU--HR&83rFr|* zpsK_dP?_Sj98w!AV>asQqY}~c&V!Qp;_DN>i^g|VnEN%8ohq~UKnb@$SMdm75?+f^=8Ob^@a;9#9iwID-(V(thql#yV*+lPTVNS9gyk|jp) z;;o|(`7z-K{`u#?en00ERMP!vxm!>dHO5uJR`sdn zPn}(tZ7`|mQ+2<_ph0zSlfL?7f8ZBy$I;2MEgcx5^H4)w@H{HQabvpWDGi9eG2!lzNoTI~tMct;ly?q_+QKZb$kWRO|HLFvc2x!FS4kEZ3o4t8Rz``k)>?uPWR-XWpWaU zi=*X1>AH@06s{Leuw~`126(eF%>2M2?WJ;53QXv>)x&48Gt<4&L-OL2f7V1!h&wUC z`iI$a*Wd42iC^K55o^c%PzKMx>Psfr{gFVbB+-lq=~b%z3`2xy%h)Hk)>1N(Sb%iA zNI>b))-iUYud^5n8{lA7`w}aCSAL4FCk@yN8asV*cpTg-GtnWfM=LRl3|E&Z`qZu6 z_xFmreKGG$)0ZcVOV;ti#p-tM9YS{~qIm;#`_R?>;i`9G@U1n8ym0x7!sP&nxv*+Z z&eAKH+45^Nx(~E4^i>6DE*rI$bPnk+}4_4P}@jExAvcj~1h^srsaVV*Fr}o`SciN_!HF3JN zrFSK(z_;rv^4dVwuacb!GE2~CoD%dZ6D+OYiU09v(*8$wV^gWhDDNp(A8?89YbYOv zjxk8Vko~GPifoO~eVdE`%=Y_rbg`5Fr_rmOUp0u2T^VQezW|pW>t|c>CBa6HQo#KL z5xZv$eZ;KHjccX7xu2a{ud=rIcimAlv$tOZMc;p<8*_H8U5dn6IbBK_?;mn~{!UqP ziXQ@jPRT$y__SL@;I;+u{}})h1)1FtKM!aC(yIhOob#zNkIv?;>}!4y27wL5i(R#4 zjBdQYZ>9(i08d9XZtG(kp#3lR){U$X6bb(u;kRO@%T?DbS47?ZY_>5#WaIO^T=n3t zmLUPye0-tC`4VHzs+G|~vD<0x&dkA2>~R-{Qyp%LNpCboD>bgpf4)I>$6hy(Xz4ln zitx(`Hqk-wm=oC{6AjsR2L3?$Ba4tGU!gnQ*G8Ws$jq;H`caPYNBSMUM@IgzjSRze zC&Dp*l?c;iLF&k@j|6Lt?q3kYHeMpP#rp2Go8He0k7NcZA5CY#w~cMH^IFE6%YyEg zt0Y0{d^J^yYWO*I<$ljTqo2KSC7!RF^`f|>nQ9a^C=c66FSOZsyi?#jqXK&cx4C|I ziJiu%J1dv=+^+UZ9pm2{{X zQ#6Xx;nB8z?HP(YdjeHSt*+|*fS}OTh(I?;`X$I}nAU3U%O?GxaHSx{99;j3Tdvy~ z)J<1~CPXbYFCbebz@WCu9ca1E$%w3m;ey4kE#0VPCw>rX&gs?f4D+d>abj~utO1<; zo4LzfnL2HxlIk7U8dG&K1pcKq66PAXCFl3(M?St^rz)zFg0Hsz+GcEY#qnXf!qu5g zxV!Om=d)?HJSQkyubNojpb$kh9%wZaSHi(YrV8{7OvdCdN=7O!{55>w)SQ@G0KE(6 zG48 zmiSDg?uxjwRo|I>1QrynQfir}Tj3XjLOIUSv|;W#=+^U%#%+*?Me}_wUiMOZKjkm3 z9cswVt~&dX<{UO%(Io$qQsUAO*d2(VW7D{HO6{QQX@Ui zPNStfg~dzFVBx)lMuwbG@hS4FHA4?}W(S>nnwxvwOA75qJOBA@RIpEm$wl7y&fr`T zq}&ctFVfGHhT2F>cSn#gu1IXUc~g8Qg0hX7)X=~OTUoksJZF=2J7RN675eaN_rxaC z6@H|3)0cu)Zg}ffV-VqrE4G>$2-~5S`Ul|^oQ|gaKX_1`>UtV1NXSM*+{n3QF3CR~ z!X1Gk9Wp>Ct^kbGLT)`{^XgDU)&sns%vdSB$8Z3w_f7q2652 z&R2bkRdA6^{~@eZuX^|NM&TEzBb7&nzbggxyKf9+-TWY2BsyU~5^xBHmP$wzd9T%F zr4g{}Pe35|3l;Eq>uMKK{i-l{f=Mx%I@C8c<1>6ClHNu z+|mJHNuKV;+g5(}=!0V4-{Q!YRxk&9iP_y+=LsoheQ8ctI^FhsSo+R$iZ43&|T_j@(inG=HdthWuf5*IF8`J$mDjcs&-ZYh4J*~3{ik`MB{ zjQlDJJo#%@t|e8IVX<`ty8_cS@!mEdat*Ws=BwlU$0attCgne znWWr|fpV~vI)VP;#YN(#i-)`h#e}iCkS+soEoA5FDJ~v3S$E*@uV|S^IOr_H zxRSibYToX0rIUKIP6b2i?dKf}IDzi{XW6b@k~w>?I{mf)fOW_}PP^O9-TWeXRQR9Y z^iBz(U0M%eLGYL`r46L-c2M z8W@=aqI%(c2Ew*O&9bx1knZ8gd$9Bw*;|#8u$KRFBts2ECnDuqb*et7@vb&^VXyQN z$uQw;wNnEeqt+LlQ5^fCDFm=`|2Vr1P$qzD=-Va*vo?Ndpg{ohUt9^JlOoCw_P-WfFfN$Eo=86GFP^1H=`Rv8Eb^JuM}U^Xtl= zC9v9hS z`a^~dTQ!k!M}P{|@u^co0;ZDGM6KQKJ*@#vTO6`p*=txb!aUDIcKUQ1&w{7UUe}!b zH0cx=HT-SRb+PPIXvKc(y_4|HAFaDz{2EYMM2-H3%U3uxa$HqC%pH7R>WAzeq{K%@ zfie*>1ej)2f%Ys?RL8epi#(W6;?7h?$UsTn1zy*t5kgpK4`i0s&3wR2?6wf?lk_Dv z>nGq;&VJPo)4v@7_-?)goZZ!j{Q1_mYG-~5swz4Wgv}I-^}iO}VgIx&taG-~z8#E* z_Ab__SFucW-nrRjEAQbS42st}lhWd)$A*Q>?t{u}LlJ}b!cTfxh7T?Rbte#>F{XPfi=&(uX6SlxjvKC z1<SlRnID@8 zCVAm4CEmU4=DUzr4k2HkbfiVa=&rWV3>)X&`VT~H-zVU`kMD82fN>q*y}`nSwb(+y z)u8huUR-Wn-v#_mTZpVT3ah#b%0SeM4%=;#(@6g$i?RE!(?x}Y3 zWQ^iFHuJT)iI>r^%=>G}Llt$bC>PR&)Dx5cuNUf&tf)&J_J{=GKm$&!HD z1qFz8E5njBt(P%F$p7!1sgp^eR1D=0= zn+PI77G~?)gO@8`bG~ZPuRel99NslDhIuws4#OYF0SUqoH@gqc!|k7!#_lzy?6kjM z`jb@dYj%%9cK1{_Vh9 z`$;vhxt@wpSaw%wzi4oFH}LnsN+Vh*!VqEwx~4V#wtrH8Dtje{j6bW9oqQgaBIz*t zQOJWkvuvJxIRG+#i@aW5?8|3yJtU)(SE0RFS7_qBwly3mFRg{eOWbFN zx?i;p+^%oVD?sVBQxdGZ2EQs1XBljbA()U-<1Xp(+D|vjYt&Y)$qmSNd(pD*PXGL7 zV`WOb@#^Q0FOX9>H}3{mKmqIS7W^p_u;?uvpynqwcaLP<>_aCD^Hg{6I{ux(YCqkQ zpD*lPYf$(<8HM%9lD-UE{zc!)NOYV=e8>0WAtB9g_wIHKnf~CG#Zq5>(+`_pvGH}Y z_noJ70ouGIUyU$*gEG6P`baIexyx==e#srmr;8!lTkoD8n3i$Be%_ZoP3e+D`+`R@ zNBL0>+aWhb|42w77NE4YB>uCgcoh(s+0?pyYJ^c$_6he?LB$$ILY5<0~o<`|v_OHnC>NeC(jqEOgPD z@N$S!1fKu=#np;;bB#CGZud*laod}%GSIC-6{W$iaUk>%9{vTSoFACTLv`JG4t;>}SXQ^uCfG0E zm5j@?N*&$VWpXhNQ{ijNdw$=3(tN%S{g93T+1-NI)ZSzc}f2!mk~iUSB!&qxb~xrGCtm!d1(+fKKo& z?ZoMZ#XC{x@VOslC!NQgWY+lXw#3kLQWi_qNUsK%wrH$$nCXd~@F@X*iXhD6)M;|} zf}#gkH-Yon3$bj5dAsyZeDvLOMKz@bcd?+K6m9pW61RslSi{py^z6=%5GZ{;q}Q37 z?L3Ss!ODs3a&RVCGze~2rc}H+Z166_>TVWip@wUh@Lkza*~81GBWs`uDVf}yLW|U zDPUR*gfk+2J8U!?rMu*R_z>l=lTodjO>lo_ka(KuzS@qq< zw;d+Qvk%~K6N>1?uq9iZQtVNOGyK&$G3)3VY3zKYu37<+m*u9gTtBrY1v3c0s zzUMygI*hMqb+u5&{2h8FG_lpPR_TYAwWc!@{k%SbfZ9&l-5vcnIINxa$0qh>3?V?Q zb?^;}*N8W3z|CUEt z4VE6PH0;7jOXc?IRn$VTUdM$K9><+ad2D{vWBuZ)zU?aiU_PMxDY@16Rp38FD3YnK zf3cC=foATyv=`Pi3tS0e_3V_yrXpNo-aC(9S7*=+^I9%?a>u*BcR||}LpqmJVjq^| zj=U#fS|NU4H7Z%5n(kv>BF4xyw!t0u>hgQ##t*|h8Jhgg8!tq}lb#XVJM8UeFne3M3rLkxpZ;CQDYOfBKpw%Ko2~rk)Rw@w@@E*K}oVT;0L30&1;^^ZGh&rzqQ@D^8`*6Gq&*= z#C!v}&$AY!BTU7Tw_(WYvh-#IwokT1NJZ`zpgn2N&Jpw~EOc4cZpc@rGcQjv7!K_C ze))?3!GlO9{Zh}0`Gl|R-Yu;TzS+PA?L>Z8T%NpkzpdJyi8k6W&03v-eSf+CI;8NJ zMFpN**%t+5fP2>w1Px|b`1%9m3n=f6g@sXbJ4~nq=XEwx%gV9QeSFT(s7ZV2l{fjy z5!{y~H>z|NeR{`8ce)Y*ws|x^^{CPHGJEwY;n6#}?6-*e=-Kb#RZRk8(>Z*z;zi$u zZqGjws(jto?{Eeh_MBmi)%B`GR(<`3fVk}}%^(;m_%20yQu+jxj5%WMaJV9D$;pJ_ z&B0YWHSnAV9Lb(v4vl4L=l&X0DRy(;kUCC%id%EJNHzr3SI7jqKB~Buq@zR1t670x zp3BbfmF!hzf%4bQeyCNt z?mETYi!WW5;;ka@DLm!*2(Uvyx8TFP*f-~0`H5^E;pM(%En%FNFFUkT4Opjr^g^~c zqs60&vGkgOQCb%@krkh*O;Tj+R)>5SmCw-~Ww(sx9f5-wa2w*2^jw8BeEmD&}kRu&49L8(e;P~%`vd?{hKJqO~jOWLy@V~bT67-C+1F%9sg_!K%2L&SbZ^EM6YfE%p`O*N1Wew{PboF3PLf`>DYRCj$nItQ^}C7C^tKhFtp zB=?rU35SdiQN-K6{S_p|J7bc)I3<4`lov?p$oi~j`NQ<$;=`S_v$q|CFMHfdQv4!; zhVoJFh8eK4W^st4EB~&-%gXBv9PR+)F6^(dU5wK}Zu$%=|2DQ5K--`#6OHdG*yH6M zL*;%+GIUqR?D?>}K<1RgYWFHr!cROeteUAOa50c=!6i&aB5nyka5Oe*z596gLCfobYGX_vw1~Gh%K( zPSv%~E)B3V0)i>p)+&|%sbSI8pS*i`;d@g4ooZ|@aTwOTXh;yV z+Rm2N%|(noz`Oe6zskESc(&1;nYNv$22;3JJo@KbipM^HyPbM9{!LCz=vQLEpf@L$ z@jYpG2prf$|Ap(!PI>+D_K_-V8HASkbLEpWXEp1sQ~O(5qBkXx311q@ZjB!pF_BIk z%t=4)yzhMP$^GHbb;Iv3&}j`wD_(lF{6(yPC_(A+(`V&8nm1dMpk>`wp=)@ClG5X@ zh+d4vTbtfH5wcBuWTLr)G3%yyXF9IT{wMG@Vf!4P~JDQMx0xnIm;$@*9W63uU!@Km*2{i8Qt^5jh$` z&cdlRwIbhX%WP;W$3V0~_eWCF7jBLO|0g&p=FGfndvm+mi(8eS4Yrf{37T9de=>=) zaEsLFSR1At4c~{mYs19Lh|c9V-X~wwL(T zvFtINm%Z4SqfT1T`o|xI(eFGBAtX)nVdz!Abz-C&go=Uh=+Sc|&svjH5b8rDZa&F5 z5*#C$0iR~ipgM<9sBdcLY(<{P1Y0W4SqNU&_7>3XOBGsqiC4KCk*CJ-CHyxYe2=>;$ap%Aw4MeBz+Dx z&sEdELZcSor|Pi#5>nrjhXy{`s8sFLPK}!VrKZ27Y;Z%_H|?)5f7TP|x4@p@LFqW@ zQZsD3@H!Q`yB7U2SG=vZC*JE*JYa0PWM`hQ!gL3>pR*7~UrKh|2J~S9eK|KCjkbU1QH#tAa2PV0_ zvEyjeER4b^P88^nxU0d&B?}-p<(?R)0uu~t`upx<1(+x$ZDj1+dFtx2Q}Xe3QV`eqS(P49EmFi5QXLN_`%yXx z=k_$z*(UcCcS!Oby~-{AH;>VT5maqx;?D_{1zH$M)};WNtiZnuKf*(L!;N(Zg0xd4 ze|Dv3QiluSJXuJj(rFO0Zbn-w>V9`)_CTGLc{13s!mDq#%Mb1!zf2qEVmF6wjff0E zydq^<8Z49s4vp9&h4=@^^UD25fO>&>P z3oOH=Mcc1XIU|4FX&0b_smj zK+W+jdL4*I!F_66sPJt8K(j*elBXQ)jOQYFau%PMx$zTd7^;LNSCgB7k+TQOM)dYC zd(rM+>b<(vQc+cQIs-L`1Jvt}asvagLV7?DSJv&(XUJ8yCQ15Zq(@s-eXktAv03{k zPObaKC%!>;h~QXS%oX?Mvsf9BIQm|i^G+Ow6=wI~QOzfkH`$X<&CYOYFrVY2fC8=> zwQPU}D48a@q7NbeG*m=`(5rFiGm0p|yG4{$+w&oML?s59wp^x!@&GR7o`@cCmo z$)Vd+>ryHH)BzYZ{ga-(Vr;w$n7%PGfi8vgHtDc|US76i4H2I%Fw$Toec>&icS&7D z(|`@1{|?FijF!6w8sBH6px&Y?HSkg~JI&QXe92imepB&?A#F|OPl3vGG~ZJsF@Pin z366G(p&*fvGDX8>k0u1=LzsVIr{E4xM=>DE)#1q4dB`fYrd>vNX|3u#ZvOH2#3@BI zb1M7FuMf8OLOlT;p1YMX{~OoFBzbZj-;|dDH;a`ly>%S7nWauaIzG4s1W|MwukOYv zSaxHdY^%Q7jL)-wxSfAxjFFCz$l9^2+5nv0Y2>NC- z#vYZ)0C^564FockR_Zz7>UCO;_zdq9n<{*v(9+C_UHmQ;SSJvM< zAD7P+eF@LNY1~~c8>GkPy^r#s^GvWHB;?_z_ny7*FGve!8f4WeK>~5aDCMu}R%^#W zuD<;a5tUd93FcvQ8aJ_{HoWuJn*KLkktS4+yq@Rm#>hdlmpdvK{m%TiSticb~ebHh=JA4zI%B%lY61t>Y^}yJDLi_yJyQ0Yq*b3dpIC&Dj z#l^}Gly9nE$yDesqMbXZhbd0?xfBK1wehB_ur-Y92G45jvi=L)TFJ1C+jI{D_xzG0 z3CBk@zzp%%i6s#Obz*K`;I41`j)S4w_+V%rcLp+RF3=lwG@v|9-~Yzh^arf zl&*gB-c7y@6DZxmWbRC+E&nC%<=t#uT;xgOmKm|>v$~@iI~Y?|v~i3a0&*H6K=~U<+0Y+cgZAP)ooTzM)NvYm@LLxbM=% z{Ekz-=MK&-v0RVvKw6s%{eo$^9=FA&N(Gn3lr7duZJgon5?$Qye0SSCy zJ#F`nCaW0!^V<)_*9R&HNyc!y`2(rD7d1|Swmd0TE_?DZmC-IhhW}l?MN5hSg!Qww zwrPM{Z9=KO?%;Lqe(ONPM>JIR461p%${2)j-zUVk4WSEMUTG_XhJn?jgeA6xi@is92_wOAVktOatOH zCpD85`A@Vy9D)z`)h05+ovX^XibZ^S>1E|T-?SHZT=jop2d~Fx$X~>l9t4E9Yp(w% zwd<)?PBWD!-UtlmSDi9ivd>?A5$)6~Gzax6yf|djJQ60OgG3tUIm^Un$#><}X{A5= z$QePEXbv!KnzbeJdzJWI2Rwkzt&m$NP^iGCne=mhridvL=Z{eFePh98-?On_ZdA;u zS%#_R->N)o>hElpV0~#@Qnrd<{I{fx{~amVOGlf_Gn2IdIL&rvEBrvsjU2r5JdK@` zg68}!2;AVzq#il&L(*sAl>2T7u$AaUryd&G8DnvJwa^&9S8=`hKG!Y+6^pzVx(93q z4e9P~@*hCvZqhP=L|s%UTUFko$JGuK2ia`ldRYB9Stpre>0EIqt-H`j@p-hhe<0P_ zt7i_?`1cQRTDGNspeyqeqLPL~;|UkcJ4CC1RaM%@x)JGvYJa@EqH-CqwoU&1%+jY0 zK0HK~XI?dPl-II6+1Hg$y}lZG@F~+2#UiG(EB7N32}M<)<_@nJPJLMg~nb#+2|S0CNhq@lEOK6j$rx1hH2%dcMdbr+35 z#0_G6KC$-)Wx9GJ(w`{1=^7~8Vi4$eb23SjrmgU{B*y!Qw(HR2L<$7r^IpOn9#DN0 zLDrh0FSwN#bqKv$Q_NCcFE1F!5_Ag z{vRU~MtA;<;?@sb!dy7~Bh!kZ2fG|W>q&k@TpwU?O4JX1;ph7%8G zUSGu9@~!VqU9_Fv*6F~wgNoofL$*N|a`Y$MI)I}Lw0XXlmjkbNO&iC6?nEUK*&{IS!%Vg57WC*__8U6GK(;v%yfvk@>Xkr@f`}-XY6y2 zd;cm`=YckpiD)Z??usFWCrw9!f}W7bOyP_-sTp~h%`nvXH3d`Hfr8=>Ybo%qUn^p11Ui@P`FwwF>>86 zl5liVN5oDg=}-+WGgK#4Pm#b zo#jW&?ZttYj@l|n-tWAu$n+JZ=;MvBFj(M3A4c~XBehzt_=4sR<@LuSAWBs)@at5H z3cStmPH8em-|B8hp@Ugk`!dqpN1qqBaeO`3TNYvb>{_w!88&suLWUAo|# zq?w~cWeHo5<1mKDnzd$9Lkm7=jf5e{+ct`>XAatXtL5yo9Yz_lDUH6DAel3J`Z*hg z$}Q34fHwnNf_?DTh*-|ujh8bqLe?N)^v350?HMf1VAe}-YYf>;J9@LvIVK6quZh4% zgsmB(BiBpL?L)J_va*ehU?NdgqUXM`&l;TOzxp&Z#V5^meDeM8&WZ-nu1j^zELnf> zI%PR10T;I9(k}@u2&IIQEvm=UBl+xY-))B@ctfo4^YKZLHrM`NLqcMXwvKjuJxg`^ z(c`7RD_E8RR=|nDc`qv}3EsKblbr@(ds!jAKo?wFQqsdk?^Wq%*Qr|c;sdJIK&r$U z(bn-^`Pj6krlng}&zhA)_O!-A{qfDo2l^2sZ5e4D{qmd^ch0brwkRfa;=-v{-YjHB z<-o(v4df~wJ^3cns=#ZBQ^4_T|CP^7C9(aCsP%XSZ3>XzPJoMRl9 znd?T6BH}96fL=I(Yy7ALAx1FvAF>XSEE|jzwD95}4}k(t*4RUuw6c?pL`Sm(o2M=2 zCW~LCYPHkY+)m(=9vmHC^@8g&7@r+v~;9)!fSaU0pHg9{95*wfy($lfq zs>be+vRz=ElRIEv^?6Uylw2rX%oC|_2eJ1Uj9q8rW`uyJ4A%)7$xRPd9jD}sw9)yt z0uAGLSuXJm#n4!=_R_jPyg$@DOXWzrQrXXH@Dow}XlZ$5103ZwM0I@B%wyUyOmLz5 zu(Y!i6yx%Lxv5>E2f!Kt^@DGnEp2salNmSqD#(5t&euu^Hn<~vYIenIj+XjGsb-Gc0-uMjRx+vq23esLrxzw0iCvuzE zyy@)Vl68YJoJ&r?S=ZhBPb9owQn6!b>QT`!?3m-RcG*pE2?9%V&2w|!i7%u>pGZ_N zGBF~asa1U@W&(DCn5DrUipU~0S0C}NC!KaF=Qch`yK~P0a;9HBu2mYz9AWZEmoYUx{wXkRY0rIQH!$XE@*8De?q7TI z&SXReozf=qO||6B$+$GrD>H!^r@Y4WFg8lzZJJMNmi$J4K0(19Y-fL5Sru5F;>haX zpo%R3J=d1LobZIPoV@XVIl$V}E7z;Ua|HTOo#n-Ba$gidc+%gmzTYx--UB8Slq){z zRpb`%f=oEcu&MOG-yeVB1eA}Q?{3_6;HFk1?ofo`Iq5UN39fgKsoAfzMzhA?Bd)I{ zRDNiq!H0Zos)kNakN!k`Z3Y6hEABT!H1teMr-+l{&9lk+6YDNUdFzZqXj2_db*HcY z(tw@k5Ql{nZpglpm!;&G#VA~Ne&Gfd7=j|EKNEl{nO^n^Kpc%p%#RW9m>o*SCHMEa`2NKRxkW|al60)O}yEb4xm##y~D8la&IYa zmWCC~DTv>j-xV6G{U3PFFs!t5$?pE`A~i+o&03)L+nShGkiY%sl~*TQbjC-YXPiLf zl_^?#01%ov(gt?IdVV-pqQxq$EpMPAw)Dg<(I0VRC%nPN4pV>hNT-*d@ z8xr)0fuEp1-bX^85}nned%w!VdMDQ=7>tk6sg(pF3o+*?324%}+<)&})Hg7pq?=2Y zI~xeR?3vqGeaV!mv4{j?pvUZ=-?X>b?WU#Yo44METnq7SeAWE5Sj`NpWid%rBfT#E zRKo6gfj%eJl|o2Pnw}f-8|cvpQ#=^BRnztPjFj%>7X?IXrmb=E_sj^;HzifUW9GZB z5QC=M8kB_z{4_UB*b8g?`ffL^;R?II6yMXkEQ}Y!8=S*Au7l@ZnYItHKvWZ8o zTCi5==$SbY7DG{QeC!>NP$6Attlo0>B5{z|f&m%9-^adSRgG6u9YG8i73CISnwj+& zsD`$(z6%u73Abvoh1-hxYJ~rQ{2DpCx>Fw8PSvKkjEj7GKrM#RzeU9_^<*WxczBjC zFf2^phxsDwaYiU;GyP=>*u{jz)f6*T+z%v>1B zJBEH;A3+Z^hF8O@Y>hVu+=9}W1b1OP;6K|6lTxP`f^wi+RU5KfhjO%%;KUxD<922a z#|?b}&NOpi+MX=!RmPqr6D4{r5bO&I20G5H=i5W9CM3OsuSTyj=Id-cTv!R#!Kiwz zARILTxB_VMTnk6ai&{hOrCFw~f6tG?8orN5R?jo)1Q7!O3ZNUQn=D^1;nCEUfP6FUH zFH6Q-;-~AVl19Rn?%+|IPuI#Cen2i%z51CcwMRa|1`2uRdHm_s~YR4Nq<>fV{A58A%wZ-%x!)a|+=LU7xTHgZtiQ zbb|~jaKVV?%Yy;?D3`73BQHn+p7rEDj=g>-@UtC2?F(W(g`_ef zr2pkb%VM-7A!yan6NHU0y^meK%Z&?*%_>gLvlO=mv)uJG&x>85v6W z#W3g`LE^?Ra-q(VYi)K+)d`K?-p=u&G{4?S{toebyxBTXjjVOM zaO&AxU*~aV$rzhwxMsmTJu~rVqHm=0xBO>e?#m`;PQO=BX{-#T*M|(3Ov8QQ6S*A~ zEifxS)8YY;%loSfh`w6+2?I@0^DEtxKtZ<~deWz8v0B@6_o$7nCb!EU`WZ(<+{M`! z^w@!wx;KLE89GjW<7}j=1vJShLxqb`96(P~gN}cXP%%8X z>3zi!=@b-3lHAGjLgiGNdw0ph47dFiQ;txTX1*4O4)|@~luIrl|UdVF)+UC6KeYWw~nTgzO8Yx zI$T$m`203U0mjK(m0yPwqThI5_3l%qT+s}yTTZiEVa!6ppY#8cbl&l7e*gP#m6qDE zcOxNY&8nIe5fXdUE)~0|t+o$h$4Km&F-xggs;yPK)F_J5+Oulcroa3B{mFkG9+I5< zoO8eK*SW6eC6MN3hc=%4B2wM3qJDSH$ahuc5g@p98{PL|WXoS=i$=03IeBEFvz}7X znO6ub7*u1nDhMrT~!&!YrObvVeW5x=xyh^`Upa0 zOJKU|Sh0L9vhU_Sy!tlE+5lG!AKsz`x_4|qDs^9ityDMaUH?9}VlqofRnbwu&L1y( zJ|5e?Eg-TfUNdZ4pmm5#OHrM>YP@B~IW%;scvm`pTwmH?`%5us%kIm&iJq~n53D#X zAYVEjxIN7kE1~J45QOXSFW6P9qmfS5cf@Gt4fLlNSSC2=6>GfKiA25_pcCMKCqACT zvZC+%HN9~4?iuoo^L{CJ+L^TAeKQIr*AlwdD?gw2-H+_Od~F;w>bd8yMxkh?sf0P? ztx!a(d-Dw>eIE=S3S4vP_Y7FqDPut+)rv}d+um!zG0(ApjMTF$!k0<-_4absI;)*9 zatl)Q;q)K0&??Wn4G9GORzt%mGI$wrSaCO+>q-L``ST&m)IdK z!SoG5P}I2W(INbEZ#^c}oT+=0s8bd2Gk+;zO`u)|-7?SL$l&K*n9qlIcKPzqs5V+y z>pLRP4VFG>!RCGy+jAg3^!k&DNW5^$!O)pdluDHxJ%I>RXtFejv z1*2#bC|&(m&Wew${|6ezvg+I;DXGejPxTJI#1`8cU6nqM7gZOjH=~&7t8*-~E8cO; zS2aAAo;YKFond7_2>zl%-*H5YmW@NJJwN>LZatf@ZYcyo-?}E|ym||5?I9PcY*jZ%n}1&_I^=c2 z`Q}0j#P0e;@Fj2B@rsQFP)A3=XkgTw4**5+V)YDKVTj_;@vdSR?6#tssr_J!fT%~7 zNR#^A5g=S#MxBN`?O9AID;P)?+Kyr2lAf+Un%#avqyLk&cnc}8^9XG2UbgC0@x+@R z#fV9;96Av&e7!7m7Vj&d_m#=yeVOAG8apv*#WllvnFC?I8Ie1&_Q$$Z#laoMlWDD6>pwShq zfK-O`NK;pkeEUH3AaOr!b49`J%t_u<)E9&!q-rw+C)>z*^OuT}mp6BE zep!2@WKN?!n9Vve?HRi9S%8yQTvPqYM5+C&WVAXgC`8^54^Dz^Xh z;4KROZHuCSW*u3P)tVj03Ph~@mzlAHbMbkkb_n%IBsCF?g#F z>?+KI2O>dY{d33aaoYxJun%0hZz@^5aVHubEA+|-x~0UD0+P@ zEJCXMk81A@+RT`jv!Xw*u;k0&iQXBMSXP{2>cfa>WO4$YS4KCYl8_{5!6rdF%FRGp#tNNJOH8?0H>Jx}Y zF)o(4E0M1U7;RT$4M6Q|`{b=z;(A@2VPR#D!-gi4n(>i%*DLX<42?njj-r=1IyW9I zN6FmfEV5zDW_U0>wtCiDVUO*+%x3&uxbFpDI`o8>esvuhmyoh@?1=Y8_VoytM!=a+!ln!px2``L2wTqyS#1S7>icz z_RmI9NK7)d7JW*lN3mM0Jj+i(XtxELIW8!=z1L8yhi>RPi;EB}JwVIy1`{+MZ zYFZkeGx0!dRl;01K#1WE#*LW+zM|k6ol?0Z!QWSw`SvdYX-Y8f6dqLQ@?4kLe8LO( z3f`hUV1%|Lagj0cc!|F)$Mz3OHo4TG(=}JB0ZVxU^!v!dzM>ZW(a#v}GO`wPC)+Lc zl(pw)Nd_(kz!7hDMw)D8n>jZ-hEGT#tNbZ_m#&col0GK-$?ys?%XZs8U9zUO6qdoR z1jjbBr*k8H4_>K%Zm4*)fqbfEp04W+l7RL1Kus2g{3~)ep@*-Fb?oJm=-&4AZ>C(u z%hdA*6MBy>Q|fZeb72PJ{fW3rk3xBlhZnl#F$#mGd+SUTC>ot8t(JP@w*0@z_HVsF zMMa}&#$713tk&4~+cGT_8l?~T6m;)08kkv6=(O9aGED$%mS5j6ZmjV?V=EUdFez;wAua5#mp3@|$;H4+k zVGq{~v-Op(jw^R3* zxAD)hpTk4fY7qQI`*)70LD%;cq(_mFFVU!; zp@z32>4_Qr$k1yULK#w4@$R)ouT}T6mb%vkeAb2>tHkcFYa)Ne$Ki2CTaVts45Y64 z-ykG{*bZ4*3SLj~GP`FLrJv#ugaEy&v|0`C_%-y4r_;TL0nCc2G+qWQd%C>OYJe#d7LM&TlRs?7JxG;M*W`iO^#zf zWHd3nD-drT#i-HW#Q?1Nb1zKB$pF6z%?FC9wlS;aMCnV`e>XOB5w>yh@=UWIW~bjw z1JK9QqWQL=ejSi5Cs9hIN|4ndYqZhY z2R-4+3$TL^7rd|7_bJV=b2NgrQdRn+s}d1K`SwmnEdxwi?h<81+3Y9>;y9!cTBqe7TjQ!@Zbc(Uawf- zMURszF7A&1;O1JwsT9-CsPp)G3wjz!Z$(4=NGZKo&Os>}Aqh7$Y+IehO%#@Nf z8$O_4<0{+NTUJLhy~;Zc%E}^IOKj&Zv$sd+k@-N2_RFAcPra~Gl%0cv9*Y&a~!C!j3>GGHTeG30b5m66SKIe>n9uUfs>F=BXswyR|V9?}b{YF7 zq=|{r$_uBd_rJC8w#GL|R=xEhF3*Ib&3(j2d~7mbCj|bfJ`x4zgP-~IcQTM_QC37j zqCaGT<~lwk381A1*j)Ac$7kQ~)Vx&sdxr~WnXlE|ECFGB$zfU0*`2i97?)6yaQ#}| zwEDU68=-vB_z~N_(UYAAbrx-a2be;43nuf6>_DK$**X%uA;+pkXXm=%kNzB8KA@c# zBU7)rnzEiPXCF1mq;!{+uYEzktjeBCV5W4sMCMpr_lSJs};Kz>qOQeozfTSCC1tHhVE9Y&AdfcjAo_->-~w4 zkh_c^0lkUQbTgK`A5XL4X&b_VSf4`U>ijK3JVe6DIjUIREvFNKE|Xpj1rkx#ve7u$x?O z`noU9<$;&4T*AW&Rm$luMI2~)QPUO+m^^z%{hr7=-g#XWhVR<)$N&zsW&obB;MsGW zvp&7^D;lSs^vRa0Bq2?O8DW%Wi$TeE-ob`1Pw9^a3?lYS@QLyj4N{hgXmANc(oLi# zA!SS}7X8|7O0&|a+Q-2mNMh>S2%~)hHPfW9&nKlGnbwjaenx#(bwf%QK~~rnk|HpQ z-5bOuET~%(q=>!DxE}Ew#OEK`pRq{&sZWur;B&xeB zil9*x>UsScJs=4v?kV}=ic%T)OXn5DcdyYx8oN)|8D3c1H_Ysk8<>j zhfY9fFJNcfHtGgy-~SkdKu#fWJfKc5MQ?0;;!HM?-q>Pio3VEFYr(>#5V#fB6>o)mQI&29L$Ph_4< z0Zo>`G@<~!B@0{^p+vy{7cng8gdG<=7Jym(y$j%P&(klO>QRO{l9o8Lq((r@NR%vf ziqk0dp3rt3+ZKL@E=nOo{ue!SeBR{7iOc}uSUw!CkhywATI_L}OPW=XmQgjnPY>)+7jZun3iKQMjg8!rl_9K*b>yrJla=+2|Cqub9nW@$ymCK* zY!bdUMB~Uia1!Eum;{%@3nn3)MjyR-iyV^gRaabd&VQH?DSBLb$r}Kf4zL3LdyB?U zffJD@XxEb|VN{%S70awY0vbo%R+i@!oLHm-Fz z2$_)A(9%+>?_m0*{Y#|DxLiI1<*E>EBDYhInEq0}Wh^{5UMzJnpZ_;@pOQWs=@^ge zvckkgZ!Nwn4ov^htP4xXz!`ij@QOcQIBsi(sl-;KN)KE<&6`PQ_)t8;kNLbQ789Z# zdYFaPINuz27Ps_7ud~bNI_=1t=05pS_HfhT(K+%D&mZNUr&`8Q zqAvyAK8XL=NuoN_0QRSahW~{q>mP@d*k}&nn1eWF19dq4)ajNu4dat|Wn+Q;0a$QZ z*>UL(b|Rb&mIRE+x)R5$~E5n zMZD&O>=XTdKldpBtdKkN*{aOrp0I!`z~g{7Bujg^9?QxEamoY1w*j28hw8USY@-}E zIc;kfoBg6)KII*0EslQ?+%efMxoGl;pXkPE{Fm2@LrSs5b`NQF4?We?)TME3{#7h6 zl71%n7XkvNO$g!-GjqZte}fuGd?t8SH0HUdS&wbwh9@5yn98N-tGLjjYy1Hu1jr{9 zs%MrA$Ys}GwYU}|s@}C6(4oxw^X@rRv}nlST__hhT%wJZDmRSl%ip%j?Jt${`T%DP zT9O|;tdOLTBt0yB!qvFdAp1@B+uX9Qcbwu({1hPh%8c!DYmhbm$jM<9b3255`s=5e z&TB^!MKxQR;`)X)8)L5#^`R0!pbHewB&@AW=2ZheYOUIO$4~?CZQOl?w=T2L5{wnE zb{-f~Sgi^cmVA8wF_GWDcxs#PXT(U$f2a%L`P{+-SD>z`9&+)H<1Pm&>IfYHiD3zs z`aMCA*kg5&I>_NsV0OGkdT9BTDEg%Iyx^M>+(Ed~c*FG3-C+rnCv2=sF>aU0-&xhh z1g>VNyrzS&Jj&&2_|73b3WD&rk(qlQqOO`OnsR|S>RLy z`KNR!v1Aom$I7=Q9tI)#%PH_z7W9|drEAFy*r7ki{0AG2p+$8ztR+zwlmMOeXVJZ^ z+w!vI#AtcOmSmA(^H;wnfozBuo^N$kj7MN)Yf-l$TFVFVt53?kTn=FQF49k|zS+OL z{An>2GyV4G&_mt;16ypg8@TpVkF>D1x`ZFk-!a51F+R?vRGfbm6UFb zA^zRiG5L36>CL|zIOL?fvL4(vL_rC$F5-G6mNo~qMVcvQMNcLQ9bkcD)gI*3HGk>j zZ&k(T{{L?D<^iMgXLixR|4lIO0*s-Xyp|6rpC0ya$BH`bSM4s_c0(KR(r#w=_ zwtgKDu#r1bpc68W4ULOB3{&2}oIm$W3fslK1QJie&Lw*G)c2%60iz|J&y#vSbLD#7 z2`%Ck?mWOtG681d!dFDAK zEWoe2HC;}S(S>+5a}A}`=X!3r(1Zz02aHwdNmoDIJNlshr{qh%i2{XiYjk?a^61=y zj*53X&@$E56An}$cdxKZm*;;i)0gSgW$AF}{e_fK=m^np z&Q_$@qE-Zr@gh=-Frhl99DgWC*hwDo;Nwlihlewc*5Utd+??IJ=Y7f*20H2_eSf8& z>BMdYx2NWf(vbP1gDt0A=bIK252@fix8Azp6JJ)&z)4D z)aOYnJcjc$FBeos2AW>9DhmTC+-dgPd^-?RKy|;qHq|IZ>Z3 zO)ktlD;P&K^~go*RP^+q_s8C?d1`6cj@?^~$KGcxh)|#(-3c^Yb>Sjy)UBYAz8ApK zk)TJ~+|S!IF`zk4pXedoogbqz>O?ywb>Q;nR} zu?hV*yq$%nzYj!rTS5=WhhiWtd(gPsk1$o-)}NVV+HEO@BSsdT8iJg$2kUCCr^U3Q zF1Ukrb*J~k+1x+OYP`Su%;ul|l~LG~nzZeoYYFSWZy~1jK^5+*p;q0jY5dKgdv^Ak zC-s_w`;OD#ez8X>?pJzqB7^(g_Jtp4(;UC6cNwE~9|5>~$>PYR1h6#USTHPHH=%$5 zN_!-qdoZlBvT`a_sQAH{eL(Krqea4^;sk4y!ULBlc8wYy#N&G#>fsaVJ^aXVX4DRH z;ZxzN9{-ES`WjiXjk)v!SV&e~R&iYu-4MOx$_}DYPNx<2Y@6Hchvpk$@8gkx}9E@-cGWE+|eE~;uH&CxV;D{*=w7BRIqJNn9htg+FJ52HO_ z_k50M>jx!7SSjtO0sekFgI;r=oy*LU{A0L&rr6Y}^4 zDr@kF-q4i0C-H8M3{_&C)y;IClxWRdJu3=1tpca{qOPT)PC7s%)OqW}1~OKSg0F<` zl@s_uP>)UD)Ju)Je{Y5lNPt!YBlW+%a9K2DuI| zPD4@`l2qFZx9F!`*h~u)$>|zDQ5F!-2@LUG$i41?IR*AC%8mh6^ zr*gY1TF^^{>IKI`?Yv0s=oU#=BkU@gf10?xhc8k>x*+0QOfH9TOI%U z$|1LEziR!h3l*?ZXyf9@GCDXpo1+w`z)s1N+o&)Q=i<3?s8D~&(v`+Ji< zyr(|FmI^D53dgkgGwF0ovN_h--{OE!)Q5%Jx{(4`1qI#61L>rp7dDb({oxxC32A6h zaA6P+T$r?u%O4{)0TnK=5xaFRL%CfL_P-s&Z%#$_D*P-TK>-d%1m5y40>k7x<@N=* z0ehu;hj(;CMzTNl(|89)6o?g{LCaE)rA1Z+M zlhS9`CJz#oNk^`JM-|1us1<704E5^olga&r1Uw`bfi=r)8)yARBl_|RFH~hCOE!hk zc9r;g*&+qH7^UUMFV~xvF?Pe$3$>w1jYF* zuLp|3CWo-6^lE|*qvB%AD<2uU^efzMe&eM=TTio-p1Fj89QMWlxV7m3gt||ugG$+x zqVjPqpF078Dc})K97HWayWTtggeh82wr^G~q$C^vrsyrpGh>4v@M0TMMclW}MWZ#0Js~SB7I2 zFZ=$yGp+x<_MlJs9_Olsoi$#tyqh^z5Ub($Lap9Jo|609%MAl<3M3-R~;I zsN)>Et0YPwIgNVQY!9f#$c8KD?kAd6%`XgWd#py9yB!k=CER8ResHh~)jOVg9+I<0 zN)T#qM3k1EH&_%pl$^HDtFF}_$e4hZHk1ip6}0M(uwIY_RgbRyDA&K@&1Gob=|=@= zk~d-^=w@7oM!MlLd;QkqA2T1;Nvpewfit`n%)5!TdOLolJBIWv0nUpgB!8W zHjLVuY5g|4Zo5F3e2yCo+_OE1mLdi2}@oP;tVo7bE^6Tth9PUsdGv+kOoEoCo zF;$YW1l|IRP7|bF8q2%}w-%Qo>=GI2VkZ@gL25rVpO3|zfg&`L2m!otoJ_*J?zL$O z%iM^#Fs4_}4)&bpjMe2E`) zt7oG!FVu<_;iDWQNgHmut+~ef3lqhtSU~N>KLb6O=36NV`a>NFTAQoLU3$oPGj-!J zVJ`NUfN2n=NT)_l#J$)23D}OsjB8RIf|`L9%EwDZo<3X(v`E~7^k>tHCH5mOSA>6_ z7DPI|8{UQ!tRa3O)3BNdkX9%@(EAi9;VGs29#Lt`z0ir4;YZ#n)+=W1?GQ?EMzNHn z3E(#tf{_gMQ49yF8DVH}>u3wn_Lo-;(W@ghlFwB}7u*nnT413aP33h8hb&}YZRh>| zll^AfZzH8vb>vo60=WsaQk`A7`4WcYq$t>a+%G`DF2 zm1K?>cUB%}7>>n|c?El>9;o0Lsb00ob4woKMc>gzA@GD^eEMrpLr9}up)(ynHd?s* zg@DcA;5`G`d5?V!7qw?UtB1Puglc@Cubdn5WZ?UdI>s1wt_VTp_fe843E2IRK`N@O zS)t~EXLEiU=ZIv{`{e53c5o{@6wG@iXV#NSi-Cu1>E7hLwFsU*V;dWAwkAKOEaLDG?{KoU zX{epE6Ig^H7OHo2qm*qwX(igdfv*y4i^-nNp7n2_c(7ONc-;E*# zwI+mB$`t%*{K*;nSoklf)wc5>uh8JblpM@`hwi>2@-YfagkQ9%LThvmB@IGm=s7I0 zag4i7Pshx2F$)@61q_hz9=B)&3V|yQVXx*0AJ#|Qy7xTVR5I#;xkMmU0tZWB#`1d~ z$=wCFCGBw9lVT;(_s+gx;o0rO;0)4FbuWXttyP~+#4Rx91rv^w3DzttPdWPm1^b;|?F}(t#Suk8%Lq%`G zx;#5~Wcl8sT6w*(PRdT9V}5^Y=>7%lDtXgxv-SkTBFS({-w{c!ELS#N7bw9{l~l8= z#>oHTQ!MsZ+PeBC-pVxK?<&wai03CDK&+$b)J|jUd36y4J%r?USq9_S_-z3LUUgae zkLsk!DuSIf9xB^soJu?`cX@dPf@z6gFOhSXB;nWi^0fON;|{0FB|M9?S^n1=%C-=O zYdd#k2K*J*>&&C1_V5W7-I=lD`#eob$_=5{I=6?f*SWw|$4-ID2zqn1JCRUS`~UuamS;C`(HN_ydhQckCS5lV8Hzi8 zXc-rl=5tNX4a;(mIFpMPk3PAp{&+LRmBWn?U?_sh+~HKn_A1G}b9r<1RQOA{CYMa2_-^$6ct^whLT(O%FU z-XtJ40=XRc*gH^Wl8L8|jWH$tIwA50=tY5-`vg2}fS+f-a58*MxrLylEquWsU(hMA z$@M{ukN5|cQnp;ETDz^fs_s6<{O^V;36eW*t2q#YB!Idryt-9$d8OeXmWmz4_T^My zt|U{|wZjR<$+yh+s(3RUjCq_;#=dml+M;8YO}S8lYq6}d*Znw?IqR|1)X!KDX$k{Q zGje605+9sl6r4|++I3)h&wFTJia|jtF@GtDVS1>`yEC6^CXkenCHWOxu;7c}9!Ugc z1I}@q6S{XtxNS5eMJj2sr!RCM)!-mlOO@k=I63F}#Z}Ve@yn3J_aS+2R<8TXupi5s?wD69SJv~z-!%UH|;zs;E z5KNnZdPtK0fX69XT5YzWxGU;Mad44I4Ywq-RtxKzkaT zEPj#9wER4BpdXf&rRJyvlflMzpI2_21QwRF} zX~|EovR8PvxQc@FJ9(BMx95LK@Few zIHh4@9%-|Kprc`56J^bbwrL(9chY3%CB;_9QH%pgb_p9{%bGb}j<=2=H=Pm4S(B@K zMLum>`z<=;aga`Yot?fQ^dXzD!^2`B@@?OakE9ps9i>a;A#`ADv z=MnT{?0lq>mU)quv2+7YFbn!@Y)US9SOh1TuUPm#*oPrcQ)AqQ*yYi~5=KyNG|a4% zk9GUXRenSWaNUBq`Jhfxuj>8#T0*Er7YxmDnkQp?@mS{pdZb=PoXaitKzhX@3XU+n zsT#a@qV(AA{d)hO|TBN6)nQ8>{5?sETd4dbRY%XBOua_T&aUrx|qL+;S zgP z(=8|nM0MVd((eDWN#i$WR}bF3&#+*QOw;l@b@!ic1+CY1j)z>d>k0D`l zd>A-_?(xynIObU~f8L+Fq-UWqk}1LEykm9-4~TSNF%dT)j;C$IoE7)r!n|iVxs#?} za`j-rpD5y?ANw>X$2t6cVi`%bflppHPsjDj{hDwti03!88&2G`8KS+%fj4DzsB93! zlvnj(YeFO2sk+H41#797i~Jo7duMdh&N@uF^K*tj540E4$#UbqN{9$5{<{G?!utgi z_IIo$jy-e-V0_KW(9&^=w3m4@lq6{Pm< z@ketem5NFpf(^%B=((%WrqC$$q}#J@&2~=F%il<~m#}mx?Z@RalyVBOUC5Bq4QB;> zPcRoIoPTYW?NNDC!tEs)+{KT_J;mRB2q7dWm?{V*2PNn;Ad=Sn>V!S7iPvY>Z^N(4 z@YC`??637b+Q_<2Wm6Y6qlDK>)x&O=gGG$~1CFS*G>^kq3J2X?Z4 zs;FNkgtOQ%h%(t~R%c+yO6PPm2D`Rbx@QEv)ac-R!_hNo?Hwi~<2*ug1@m4$O!FIF zzfAl;Hr~q!T=J_>?q)f=U3eX>`d)83`u9fDg7#i{3xw;skoDd$$!yRE6IG*$7N=Ny^`Eig)j_Chv`p~|XkucyO?d3Gr(P-h(JALpRg z8#yDoGiS_~A-NtRXOH-4J92rx_cT@nZ~(Mo5igC{3`w0~@@t&gqvUj+(SV7nuVrAD zuL&e0#0{O<}jXQY27>*l9yvZ?T2o(w*3pK16JWKe`t| z8eRL{^WTm4ZR1A}>d>5tbqvRh$lV}Do8l+sq^8l&z+eJ6t5Hef5V5XX>|9Q*`WIOh zLHG;K>n`VYo-=SXo%MU5@3RMUD(G~~y8ncx{eM7!Udt6sz?d^Gaqf~{ zp@`y(JilzG98}@ML_Ih`%PK@q^x*L;`^xd(!10V&=X z%d^)3+_sg>ys?bKSXqu&j@_yaE1Q=E--o|PDKEhKI!-RR?E)0=E6I|Gfenr9QD4bm z29O<{3ZojGG@p40*`~4v-S-5!$KPYw!T6#9iaRO;&6Sc&k)nQV#}P7g{lKx&PyRu> zMvvwJt&pmD`c9f9*ShJKpfQkCt_MCZHU-(~oDwan{IF&hD<#TWS3dRc#+2TyA zOjTZb*L~r-r)-1v;2p>ASv+cwli(^t>E_4Qls14Ut__K2##cGtj(cwzhqh^&hY#vT z)CQ6L5W^1R*;A_6IB1a}3$-%*lB6o6^c!}887a@CB^Ak4v!WvYo|z@Br?>N+NHN_$ z7m0OX57o7vXU=x&iS+(&e0Sep$&x!xg^gG1zwb`-)2Wg)2a%J`@Mn`8$zX-2*j2c= ze{_;ZjM>@|8VTryx8$l%>*XQ!4y}Adw_+KNjy<<;^rUj&sm^P2hgS&;gpel#q;yc2>buVWjYEoJ z&A}TPD3Lr#YB-$vBbC2|IbEz}J!uR0?*{jsaItWU|D`FMr+~Tc`E3_=n8{3LwXzHZ zr~LfN$gz=TOgIxsxQYnAgj|z5%04_x%u+j0p>X;MqE17<;vB-*<#TJg3RXbL1cqOi zbxG2kdD3ly2ZmF<-H;;AXIEi9;JE)kueIj$xZjfpC`Dce0A|w6ibhWc{g`u5v4KCW z&1U4yti7{%&`H|8%6i>Gc< zohP63mGg2V^-{f*)}y^L65XIGkXw4vmS8eoi80Y`R+fAJ`#^!6O+c94l;mXSND4#9 zg4iGNrH;{0%*|!^iQBPVwJJ<0a@* zkJk2rxLBu)$VDKivpm+96n_C%UhEWtv-M8lKB7BIq5lbK{V3 z`8fO+NP+CgE?yyehCkMhM5TXBjeq4_3^C~EIM9|73#lKlBLr{*b}H4QdS=1H}dBv3_gJI_3;8kmmj+8Z1#;ekbJ`*6&kM zkec*@ixwP{@#>&ZyLLr`;edZZ?M@r^djiUifZ}5+;iXGAZFGFoi^B?X8!LwU+*hmB zR1aVB&xge=X_Y42N;DsPNZP;?W_ASh+B6OH`55&{=*c}>_~Rv=bo>~h-4YMmZ9Wuc zd(V)ut>E1;v-I}JCF5G~tz;Z3qRcdcyj#Xt&*az;O0~^3q82c{;N-Obe zRCq2W`5s^Am4VI+ovrp;h>AH|79xnGsv{yXnb&HGE&lm8j;g^V$_ky=uN*$jd^sIQ zvY*5$`%(0C1&z&xL0%PLLK<11f@O#W>~B&RJDg#$s8tIw7LFKw$12jMxl(_|RbFpG zsg#=%tG*)6>^rNKe}{}tg%+jo0E!w|K`F)yyyWG_HVA0&=Enx`$*L;AEgP8H?5f@) z(=FoY#z7(?MYFJEs!ZvY@tsy<#Q$9*37}R&fPq={n-F#=HMaR4kP@(6CLmt)ipnxG zCj}*SoGGnXt+26DvRA1{+=aZLQ937T4`&nHUFg#eVl5>7(;kH0&IU!y1*eXG5qbe} zCN>55-)$_v+MbK~6iWI_oiS%>X?<^+_Ovb=z@}#9+2rDxrtj-(WRz6Xhi6ndbal9s z<|Uv}2*MfP0ZJ@&PJ6_&7VN@1b?9UkTJTyYb&HAuJg92*RVhOWBDi7pjr?Au`wfDT zU4Md0JnMpma|7H^03{+Sei&Glpq3~Z@b_x8(Y%_qe4M@S+A1`$FZrC`nwK@Ih+Ds} zw1Tl`n7h~9Sh|YGVzXDQA*eM-N?@k6~1LHg-P|JRRL?tRkO6D@>GPU5Ej z*BD;-iU=mrCy$W7mvr>F;$Bo915_^#df7`d{LyK2y<@!p;?9?I_ORlPhyQNeaU7fL z>+dTCj0B^(@9an?@|T>mpqNH2Dp)HyyyLZY$DYfv)f-;c|K?vDOt*HH{@0n zW0%?u>pMu013wRtJwiFoX0v8FPoEbD{v~3S`Q?JC=#L~pbVU@*wNfzy{d`9rv%mLj zXs${Ogu>h>9<;RnyJ5guW=n3!r|Wb7_T`=JK^K;pKQ}v1LGoI%wpYy9p$Cej*VmCh zP>Y2V7qFYo_$FMS;6;DIZ&p1P2GApgzLclsDF<|3zEZ6R;@Fq{QTPRO!Qs?NY36S$ zBIMKa+9RzTf!3E$0)n71(aJ{EOF9}b97oN4b6h6W+_3JMYcjd&yJbs-U#~^Q$6*E5 zvzW2xjpqO@%y}`HYSic`pQk7GF%jSC7ZWAiT^WOQ_LCIkoF3eI=%W&Ft zc7`PAKm$HEXys!cWqZISKEu|1>;*|1+mSv4C!sK|?Ql!5BSKO#WE)6~FqU5B)~iit zW+p2;f17@&uD&uzn@YS-QJu9=#B&Qn;gl^Q@B$aDBH%-vfP^i8QYox&BhMdF8^^3p zZMPbimRVbDO9X2Ew{tgngi?`h0Go!(wFSh@SUQ0DS51S|XkEFDO&^uF)Hex&uhv@a ztLKL4|86Ka^&N!Z5dO4At1Hp9{oASMw%TL2ML{g89o;8q3Sz_q*+XT5NGSUyZD^?D z0ldArqkJZ8GOo&gJ5sHA98Q+6)_kx7j(#C_J76wd$J(aF9m`Rh>>RDM>Z7Cr zuc{}|^7jTegdNZoG=-`qi;*xVsFC`1Q4Ec*0ds?eHtNg{)2=&e%AB*=!e-#x$_sNj z5pM3*nK=uM{E-~~W3Uu~o>|o!w-)Kw{GC-cGV}Py-ia+isW()2j8XZA!>rP0o=S}v znxEiQ)5s9gx^PA;2jVQgM&yzK;(0H!H`-e6DzkFsgK3!D|ad>q2Jb#V)F^NnU_c3qEZf?yJ?oAo@D zb`6!D|L?}3^8;$M?0UGRdpXkn(~1H6j`}2Vzs_6xZcv#?p!FTqg&1X9+bfdjzv!OC zm*%Xa)_|_W4qy9`@@AZtnEhpP<|5_#Ugid@`QTaBDf`Nw2ja{9qpJ-UD`E3j;I1$d zDqH!DdPO}ZSA-Sq49hth)6qC@p78MKRHEkhw(`!}?m%sk9>jv> zdL}6RH}VvFt+feyirr8f3i>Ec$M%t* z@88-IPNmu@fq7f5`H!}yp|=d)pNp5Z7HkIqdkaC0>{bEzK$E?lK$UfE@s?~XsRu77 zY1>ycv~xm-{j7(}=k2eLiuA*gj{K~drB%aIb!p`{xev0GB#r=4S|SCf^EO0|K&{Jf zBwu*z+p;Fun09)DHuKh3n zg%*%b_oqdRaI`)d`*$NGx~X{nl#gZC&V<&p-DUqerP3y)n|&kb>+WUtB=w|nVd8Gf zJ@-=vA;XMEt~A*t1F}B;3ed{I8jUS{}Lk*#8bu=2uNQl)P*)m#VN8U}0=- zD({T|4+f+Xlom>nV@_xq(X88N-2}%4Y)oW`-a*K}8zw*5vJ#L#D6jo=?NY!81?0aA zrbo8ynCVoLeKwEoT}57c?zG1ZjiM*KMkG2l_G$NuQ8^iipWBt*?d8>rrcAS)aL*>7&fy%gGGiPCA%Sg|L*2;RzbbuC zL5i^0ro|ld}3!65aGKn^Jn?lc&_^cl5NnAHE)0rS1eCvy?PC z{vl{8zlU6q`a?R>oem}c-B`ZjqEy=y_qQtw7U0HGaYGG)K@`yDDV`TGWj`R^yVV@n z8G6>d&~4!BeMPZUD8)mpF)XC_X;W9)%%~uB!Lh+vA(tsKaO#3O$RiDdI%SyO)i=AA zOH!F5)~`{U*#efyE!}>|njh>g?q{kY%mv;xD}fxpr(x_I-#>3;1ca&TUiN*^ZaI^N zUD03Nv(fG=dtU@MkBap88aYxV<{BW(|3jDE>{H4Lx#Mi$?xxI$Na__~P)uDM`0vG@ zO3G*U|49@-&;dChr?$V0`vUOyB%)_Dj-~a#4mfaWyo&S8?}E=p}J zg9=Rg2peN*r9ZfzY@aY|Ykv=`;hN3!pZLd^om$K67{$zcbTMGrPx)9C)RBnRXT+Q# zEX*j=qoDDVo7Uez2BUea^T3?7={t%?=0uDGT5+3@I1}j%Ei?hWl2Tt)<0UAB91v#r zU!PC;XuvVjCE@slt=s`?gyp~m$_+`RLvB`pgz8}G2i70ed{*r0Tzw05g(vvR#5lG( zuTxz>eWpFt92|0e?8fg*>6-4}&qnzRQwPbj`x#Gz4`dKg-Z4`gy>-!0nBq=%Ms0*| z0j)5*sDiP)7@#Pdz(L7>+XPyMVkP5BIgK#W*74%Ysi9=JpQp56txrvK1rU{xNlG{| zxN~|ifLnvDm8i@vRzui<)7bZgwzlWfE~d!oij{LiU0DEEX46cA7<*9)$n%*-B7;B} zUO3mfiEdl7%|UJ2sdXIf$HKGnK0kpS2>_m^eAn7w8gNnflbr_2P&+<|mWfVjDrSX2 z%9M2PDZyWt(c+$@=_E1tY2_!gC)5s>vB$v{yd-V@_n*p32E6>cMzNxDpKsP}S;f(z z`_Kj^XSO-!bEX*=RWqj$$c{C2&zzY%#Ku_!!GtU&YJj$wI(7hB!7Sj{Z)$AGg?IKPtv-Px93z zm?)2cvq2WQYQk=10`GQi%UX%$Yb^tpAri2wm&`RhSWV4?PO?m;#?Xnitq z-tw^BxT^mnYnoiG7q^vJ18sF_)w?>Q#x1ORZ2*06DG6>kjt!|kv66e2ytxEIJJ%R* zu+rL44F>rzw>TEAFTC$2R*(G;J00=c2%-1YxMAym7^O$Vhmx}yC80M&c3>~eDY`ty zkf@QD{Z3xrYfokm)Av|PtJQ9;&CvaifbqA?8#B4O5Y(=d^MC#SqE$|b;s01yg|>&3 zEpC2_kV~d!&R92ZO0y5MNhyj3_|dkJaB}AjPUH!~WkoVVk0opZek2fI^tDhq*C6k> zLYE+fR19c&RgpXYO|6Ss*tMu2m zpL|5taf?l{f@ObYxtThRII)!2RQQA(OQfPmuf9cunp=xDoZ1??sP^vH?QR0zcrC{7 zBgN*!i82v=@4#LqYlD`bKCi6tmWy%ue4_#jzzVfaSEGgqPF+_y2w`~1Ie9bvomGVf|`gB93mZc9bu zwc3?OY<`|VsZ_0$O>nk%1%PhY|HXFrlNnT91md>H_$XYvCjF4M2t|Mk5h_+Hx5h>v zP7&KBh6fl@?|=WP#;JndZ*A0wq;#LH{d{n)z7&rbBk&lY!tGLTh?}POUV>(AQy1kz zR8gGyfsQ{X_=C+9ZP|AoQ`#24U>y_$Fxh&yEe<~g8VYg;#ql1OGm$45(8=GMb zpWjXy+VNQ%nkG6wVoWIOZSlT!C&?58^CeFmai3O39}3T`wzS1IuAnj=ON;#y=_Su-A{eG`X+ynz0oNeRp#P7hiYA+Nspvd%36o`d90ozU}Y} zRAt~%dh5QAnh)c-zL;B|X8=jHfSV$F)I@lSxhIa_(E_mGoudBjP^0kmZWBubIX!Ugz%()q9r{dKn7x0wqX zs^8&j`U@kcaS60!mEE)&ROT2_2*Iw;&Y9^i726KolP^%~ah{_@hqh%keaPQe0Dg67 zqleOlEQbAqnm=CBg$dn!mNA5}3SO`4`kh5SBZCP63eVCiU2-gwHfr@667G zZ}uwPO6lK5prt^JsH441#}^r%HC=_>z(Jn3Iywsd{)WjhvN-T1cRo$*mZy~%oJ*4E z<&56;uGrMLKfD`EIhl+pa8wPWL;e;>vqrM}^kdy~9z6rPg` zY$^2J%%LWnxbz~x+!MuS3~@t1TSp9F`d!QBFp|X~`|XWqLPFI&sfI&9Zmr!3o5^z? zw%syvaxc_`O6c#=**e@qug6$lY+|Tx_fA9&xLy3yvPpzF$@>N8&L83Ac+-nhQ#nad z{%;q+UVI=IMrmRoX-+dal&oFr)$LUmrqsUfN0@3P-b!mGUn90za=p4hOa~HbcqXSj zZx=DqtDo~phqRSZSKi=#9X7m640FCXr(9YsUN&YLk`r7oIxJQJ8I);i2nU2N>`A&z zUTa`O4AbXP3wz*oT8CTn|NpD*3sEYGa*KROpYt9f@2E?w&r|c?M4^$6yR;`<6To}YV+~jGw zV9VbwXeyP$AzjOEz@PfO zJ*#DuD806{W?!Uw2+xnF<-l(}M2MC8)+DRlhuXU~){YrI#nWlx1+!B_&0Uw$hzUpoa@=^0P zKc!q9(j}jHk@o{Kh{D<4`{PqNo3fR)LGHX{-sj$TS)+@on5JgJE6Z@}P}t`#&h?rI zyukH|^j8<+YYHxX;88Y){&h<YD!wjV~RPiBTZ=bj-u%kKPv_?+Cw4uYtX( zj6eDm7qpu^K%3_n1fHgzshUz(Jx?#6|T}0``Y&*x-E^q0QO0XPz3ca@AaV zFCasz;*xXYJb=>DjBD04deQ*yrl0QUezk~Q;FruaG#anDgE3LCAPO3AK z^+sEzU5J3xqJCzvwGdUS_YuZD$DhdG0}tM7q{{{Jb7|X}}E@UO| z^#7EuB?b5AE0@~ZyT>*U3&}3F{N=P}*Lz12;&=xA6n}TigASG-S;Z(?ZUmcP&{_vfOeYy$CJTrht{RhO!&b|jh|=NL4F64v65-u ztgWsLP)RY`$LfbdfL29HwtP&SXQEu=4{RdX$K?%c%eAb9p8zbl=fyADa<$qfQg(as zRz=eIsg&bQ+`K?SHb~N*v~V#1GI{ru>)iW4{7L4Ue@hdQ_z%J&(c9VqyVy^VzJ<|# z_<^9(Q)G!wVRNoT`XeDbMk7My;qNAV7vjsfbX(so+4q5)fxTY6>3-9iYUsUB(5!K= zLtyY1-L6KMr2zZ%z<8cKjCuiZv+Mxr<+Iy2ri5(W2d%E;BpOK zUvruwNa771EMYW+2Fu){E&uel`CrXTAyr=N9vRpqm4^aK%8@|S0dr#9Os#r>H$A$~ zw&%r)hN@fWoG)LZs@f4l@Wp)s7t*>tu#0FoHC4=Y+70ZXSzW79JT=+*)9dPL#NUkB zawr06v%C@V*rC2cb)^g`zKR%2jp1-B>m%fY;cn^%T`eMmDfux6$(jAtDf~5yW7XFe zP4#FZosX|7R^G5_N?_aT^PJXwVDryOzzREs4_W3FkdOOt^kBEoHKCo?c9RnLIXDWu zf+=}~7pXHXvr+UP6jsQ*I-i{?*oJ)|UfsHjyil9>;4bttN3)c@jQTzT>RUHAWGds1 zq7Hn!K*+qkd{GqhkweMwjbN}ruC`rL1AgJE3FLCLOdS_UN$8(LC(m0qSNx;*Mnz5Yhh<^xKQBSWhnVs$k_xIgcYs5l8sF1@+<{AUzvWS|lMu%>|Wv`AO!0Jm% z=Uz4g8|lIp-YfRwNg)*A0ls7OWqK`9y=p76)qfT?E z@<;pGVe<2Fpa=M0tq5$yK7D5*({;|%FM85q61ietA(7){WGuZIz@wC)V(AEbRIQ37 zTui{%M&wA|uYRsr-l;d)g_c7|FeAD?TQu)gI@zQR38(`$tiWry7vh3v@oEOg9noC0 zT;u8=G`DJ>GJ#*ToLfFWFQX~?P273Q6x+l!>U+SO;<@8-RH{qZ*YY+? z3P3HaLVVv*%McM0tD2+G64M`WpCf0vKgrBz7k85#2otI+3&oV0)g>2UwY8DK&+1w+ zZi#AKjCzBg$TWC+s%22TBy+5zHpC)-Ht(ZZJLE6gxkvCo zUYz+aDBjktx`yu@4-bz+N}2GN7v{?Wy)e(0d6jdJ{22E+{u{yz2`xU>q+n~?(YQy! zUXM$Cv?4AY$7A8DwVwN?q!)Q$lPUgPCyf~Q1|%ag>%s>s!Q&&YSh$iVU2m!r|H|L9 z;_?h+tX?Ih_A_z_xV`Db1+D$i&jNievLd)o%f3Fsk&i*OlAwD%4vDOnf)4s9CNo0Pg%!*-tS^+u;MJuU*J_|jTDwue~ zp=&tN5E7pe>2RSgjyVwsrlGljkECx^_3Em5ri8+5%4zvt`;yh`fxizF<08?F4ZCP% za$SoCK{%uFKwqNr)`F}A79tK}mvbB~p_LD+cEL6fr=)XB^fO6k=M?rhK1)^b5lo2x zQ1s;JZ)HHtn+`X>UK7Y%P;pzLgAf=qtH2oi?=UN#l^>T&SnPEa_2HxJkSQ{no zOaKC&*@duQk1$QQEpC-s4&}G30ljk7XjW%B^xwh+~1Ty??V*j?OM+fL#3G(B(%^8Jp=jClz8fFM%*s=A-#HRUaTDc|0_PxwrmdZqq$+Isa9grPl3oUw zmZja{J-Pe>`=#}*%zQHh#b|i$z`0Syo1iTc7n5L4TTTGTndh}K){|&1(_qh`G5J3? z^*4NWW2fJK-wE)lS~^gN8@0aa%{1NbH<6e~ug}a~sYH6Dr3~g^W;a~MgO?Q61w_9| z%Nj5u48~txdB;E2%pMcp=2d^091+LuB1=6aTBN0+Zay_5{iLblfq{A7gCFs2c?O_Z z@@+=&kRLb)gnQmt?pu_@tu`V*+;NwTTSgWi-3Hk~s~q_IrM(S_Wy;vsZTAqVXJ+OY zUa;ro;dK`Eof2xtvB^lGQ@Kdh=HLU8ij`Q$_Zx%&}g{>`Y^e>YUz*@SzR91_wu9emuNn zGVV;BAV($L-w*B(VjKIVR_Kx*37#_C{4{%@whpA&k-PObI-pB8in-GtSzOh9X!Ghw z!n(~&eZfUaP%d3JPBH&pfRBxSIj1Dw?-b!2OWW&EeBsdT^FL}dJ9JUd1WI{XoX+*V zReUFOS`R(X{`R8mI~Iw6h=>3y$4Qooka@VhZ#Syu1K2fckT(eOZH}v$JvOYN*F|B2 zyB_U8`>hr*iu3g`(H*kXq`;NV&?5s*h6bGd1+qN%ZC*7ep z`iZ4bd7)hE5jzHIrxsd0AYCZnfIW+s3`7^ zf*o{SF^9YFP6V8@vW;m?NH8#^-NZ9EOk-hxW>WjWkS8}x#*j7B1wnlV?im|yKuv*5 z!{x4Op!^DVOI(VZIx}e(+vaJ4D!6I1ZuXmlIui!F$NbZ3&tpLaFCV!H=mz{KRA+?ejas^JyQyYNFEC%+DL=g1E%`MV-u${Bj zK-sC@2bBYgd4tQZYFTjPY{dau-*q| zQ&Tm`W)9~>C82sV%ZS>|kYRj|^{?(-m)B%FNG;9h1&@`c5#wc?p5HRIVLay`ePf#i zX8kUeySP^pzs&7U$d+aMA~zo=T)9vy+f3P+$Ofrhwxb=-hD+WuHB@5|`6H7N)3A}9 z+18~$Kw}f$IZ;Dugm zrJ~d=g6l=0r>#mi$@bF)-W_Xs6Sms+4k!z{yPq+5GiHu2vkZ9;QV!+@c{4{A?s7Jr zH}-yEs1v>883&WB|5QnH)mBwte#CVtXp4stBLrXA=d!`K(xbsErRlOe3adpvFC@7j zyE#*stw9NwM#sq}u-QfO(oHx=w8V9xydLoPwdb&Di1ysBiupPWAwV4^u9p>8n$WzH zxKHQ|x=;o_!8BI6998w%C?_)x9nxrM^tPx|)OXaUIj_CILEwl>obwyW_#;U+)!Eu@$Rpf@JO+2B z%&rGpP2bfkj0c*&8Fv)`{9!IIU&{3>!B+rCY3j0$odcg&ko1U47l?^D$VTuk8Tw&^ zBCB9&ni0|cs$m9F$@E{BQ2rFDBQ$Ja@pSMoq z<2>Uvb7ep8LFmZac&?V$F&Y*f2DL&sC2@$yh$0sP?j5=vFgzimAClwh9elm4J?2A8 zK>e_2@HhnrVqKi=xQS0|f|ggizHcI;+4#*H_qmuo8Cy4=DZAzaweg-~5Ntl0ObckQ z8Tez|wmGDOExc1BQCueZaW^iJpzdyer(Izc?{j~CebDNan%>*!ljoA2+2~c1rof4v z7?|*1E^+N|dJ%_beg<5$5=@v-Hbj_AXUF7P5cPz336@Lf`BB)P>Ne9gY%f-(r{{@R zFKfG^b)N37md-wt6 z&KwSysus|C;s-Q>z5kqjp1yP_!lpM?98)r7P*`x`PR*ihWL!9`xR$RTY7#sFA2~kg zfFIQ#MbFrYfgy(gJUlT1QKHEiz0c5rD!L}WCuEHkB+}4&$ z(l@6dZnv7yg;UIv|6s#&S~YP>XRiF-Qkw_-#pGYCJ7L)tQcDy7ViD-0F2dcUBgrw4 z;sutHPd|gk*B!icW-hQXfmUV)2`gQ1=4+B@9t}LM5v>jVBi}_!#8DUVJTv`sx2>*& z673cPQhWxFp~QAQPX;$-+w#=ksKmakCNvD|Xjn5T!7}`=WnW14^5A{%PqoAI2Wq{s z?6C}r8B`H4WN7f#qLg)7{-LAzbqzkN(Bbc@Ec&*#(A|tcDWAH7>9G6{mNQGf9lRI%@?|oqJXZ?^)d>zYS?6tN!cd( z{BFsprcr7R1`$!`Gy?Fc0(MLXXDUc4gBLHfAeH^*d5==G(sMGhG4BODmzg-ecFjp>W#3yB`7x!KPeST9Q1)*w4edjcviQKmA88f;4KdB`2U3}o zvT}2yEYN6Pe)51Iu{cn1ew^pUKdC}Z4O-7B9CgibuZ@2kiq?Qu2}5b}TZXAk8d!u& zPlLzU56Nz3jeQRtc>IaEnV|Ua4`RrdOOj>B(sVterfv0;PuS)UU2aBi>zZiU z%x1}l`8L7T=B{+29?5?IvoWXZ$3guqnwhLHGEg|R{8(Vf2eF=n1Y#NhkGMBC41QSFk8#Uf<~Eqe+ zAm$9^#Qh9A0OCpxsUZ_ywr}5Ky?610PNOkP7ODQZ>;8>=6Ts*k(V}PquxOFi@myIk zADV`2RSd|GRt4`GE9P6u2ws0|FH%G;o>SuU;vTo_KbV&&1|}*AmzH!-*CFwPcb%?^ z0jgi!l0E>0bNjBr`Is*PuXl@bJKP_j_T_Vhxo*rc#&H^RdF{1}GgFatQ=iATQdM8D zV(@7~IMH(cKQpypBJ(Iz z<~0sI&u_!?k8SmUA%8L)`LKzlD?-zXF7daHhQm5A^g z`EJjZiQ!HVTc_{3nh!qnyjP@6aTwT5Laj?6rnsyH%{D#@A#@#blMylioWsK^=Go4; zGiVZ$b4KR}Zs79hGP!!7ydsbzSiaLIIM&<7{^Tl!>B}7346*aMV$M_f#>CIU#&8ix z%2gCp%!{CeTR2~P@W4>vUn{yqi62XRS<;jZLl^C6wHVK{)p5Qa91DH!snOi5svGryQM2pM0>)E!~F(xRz z*I+mx-NvU$vygMFzl0+wR74}Fn@@@sZ&=p5IVd8aSkU+DNL)5``MkvnHZ7nnQf-Yq z`oI5DXmJiMu0ziyIrSW7%>~U_LYU`P1@@_os`iAXAo?Ef+((cTH!+YmC{F!}8(YP2 zj+xPUp3#eqh+s`Ug>Iw$Q|6FwQwm2=*TzeNPbvrCV4AfPv|E&BR}+U$RO>4-fu^ik z*lczjC^sN~AJx^JvyBh_59ralA?Hg%Z_5$Le;9C7?%z z+s>!!F@hEyqKr2e2&AOvvHwV5FR@XJu)4qdQ5d0cxiIHX-S>H|$KEf0=-dA4u;Js; zrJ23-U3w<3%VA5F6OjhUE&xwhVbwfKZynUV>6Yc*D-)uciv=>&)?meQ+W5TF_^BZS zQ<~K?H_ZWd7YQKQPGvJ_j+veKb{!&*5s=6_$YrP3VNyI`o*F=xK*x@M7zagOf6X1x zA<7gz70dR>O#A+?HBHOiuyFfWAcy9SJTo4;t)BK$O*712e)kY7fg=mfamK#C_<5WlC%Dh#hl_zXhy*Xwy$N zDZm=1y$ZOpDS+){w%CcTQUSSTtKCUakS;M5w#BGja-`3QV|bthyRAks;wEF7~qWT|Kd>S zK!xgemd665%rH!HVKP3sIJww(gYW10Q`OZ@q$xLYxHig5WMKO}vG{oDA!#WFP>2e| zQOK2Rvvz2)X=~4PRDvM3`f3T$ElTivx_sFv5$*ETmFdWz9V)}QSafhLQ99cD6H<5ABWmC|B(NdEYP)KV*0?$k1Q_To9PV^&!gzFdsVaDK(1ku z1lKX@G;gT}8T-uI0X;OoFRw4P)SPpT-Q&v;|6MbSPcM!Hy&J-=d?W7(XoEf^v2}vAUF}fiY;S`LBhA>EFC>x?IskoBs;!N;V;U zN2&S=Or&J?A1vWg)$M*In4fAl@Y`Y>VCZZQl$oB=h6=g~)%?if9kRye7u1o>(Dk%m~ zjA%sr36aeT^E30WKr{Y{_bSeJG3$v8al1-ZhH6k>W$LzTcC)KmG1@&!me{!>NGIMI z>5gYh^IWj$#W)szYvUbO@JU@6Uh;PvKZk!XG!gJVQLKrs3lCa8W5HLRUkkrHziSP= zyBqyR_1}4Cz$NFEl^|MyuI*?edW;&3$NZ?yM7X(?#8cnlTV6fjxZaEFJGW*#Y{2*3 z=g%=K;gF&saZnv<Z*2r?*Gm>NDY_3w4I*{gg7~~i zCHD0W& zbNSflqTa=Gk#Bxaukkspb4iCM04f1TEJwIYvoD83!QTxVJnVqOrfW}V@|gd)0BS&zh@0O7O?y% zlq#C{Nf`0Pg#TKpv^Q*&LssNs-KCc%JK7JX$0VeAfma)_wwX9MQ2$JYXfu5zD*hDk znCT_k&k0$z^I+~Q8t(b^O?mSa&5y3kR-+bek|l%6?%(>U-HXqwDRh~zAIPo}(TZ*d zbHrfCG(A{JINZBb3jE;Qi(AY31<5Ym7aXtjwkqWBsn4~l_?VYE-^hM5Ku-i;vsgE< zHRr#x;oTr3TYuw!|Di8rCE>cRw5^W?_OZaz2f_pjH_2hEhR{qginiw46`Wkl9*1?# zH!(0GP^P=GD|MdEr<~p}76CPvVBZQeEt_cBFB~f2khc_knMY9!beQ9~y8Mu*rK(*P zZv9T0?Jiam5xRMKAw<~}(>p3R_|hgJj}djDS?XiO@FzrBQXRVn&t4 zV}Xk(Yg#T#v@?q`dpIKHDU0*v@9Ir4ddt>V>lEICEDFXF_@>D|zgB9cX71et@K`qs zMS3zkRt9P(s>Vt99QPW7bc5@5|>{ zs%Y`^EG@FQ#l6sLq`a#&L$lpIxg<^X7F4(^Af(QLI>_{*O||%!Aj}q7i@GP*pt8J0F__cbK>@u@eonF%=kg2N3bny-sxI9qGt#Eb`WazA znjWn7c2Xo3CREy?(#E5}$YnVf=}2L7z1exWbKyXfNw8UW)3oZ5>~$1o=`U!R6yAjv zaCP64t{4QAq7(pV`F9!JbWnpUxV^}A6(i_mmNSA$ahv%KMt`Y3=JZEB^Kp*bir?8WQl8Ge!wxH{zzqzULPAIg5MGF}c3oMrJ$T=K7g373L+C1+RhtT2C zZ#pgj0~7hnT;rtE>tt7ux&;d#ilShu*I^1{;3!TP#eY`UYB;nU;(O?X{*wO4o3IK7taA6w0gpg7`j~X*IE!OeI?rxD->IOfC7pc>da#=?=~idw!E24%@U=JI{2nlp_XA zMu^)AuC$Cnts4x6@;)rHP44SlGhlf04rgy}anwFAZJ2=AEF?4E+n3I>le%xEY+aV} z)KJ}s*gXmzDSyM=>alNpS-Ct*#9@;T(A#``ix^?W`JiLR*KRQP&fEvV5m9y!vf9+i z_q}vv@5AiXD}M>EP&wnjLmZ2-UXnt~3TS+a4vA;2@Q)Jas#ynITxZ6j2l-wdcum*_ z|760g*a)d4Aa%XY?<4TiC~{94oGJD4MKD-Ql)MzeF*)I7)+W?YiZIg?g-STeq8$rGv1{aJE3GsDG2eV^V{;PCIb%zi^X@?QPG zJj#mlz_ugckeyh9 zgcW3zMa9$MU%sxws>o{8kyi*F#R)cFLS~Q%L`{FlR4#8Te{|`5&iRz9Kl0UXXF;T7 zd|iDl1M_&=?}>l`*X#x+xF7mD;o$<7J=7&v!X?a$oKi zwS~MLlavHHj}Rnzlw^+hVGmG&$^Xs2wTiq9gx5cV?%3@RgE}9%8`oZH3WIubrE4#9 zgC4v^NnUY(%So7U9cJ}^>G{Q=8Y-jK7gAk68AdVwZalJZYol^4*L!WT02m@3F0UywCyh|1FmZUnsls4m!RPsIb3Ep*SSr}Lt^2V zF>cGi4l8wqP~P;{U!s-~i9{wJ9B8i2QAXj)vpPT8s`6O7;(F)oJd!zkDXUPqI&9hY zN@o{+!ah4f)78QMGfZ+y?*Yq2X(8d@56&XFB*(~x=jc<9q4caZsyUc0>8hZKYc(yi zDlOc{grKC#Y~%uN%SJ28ZSNs?mMzOrS>wP_jx_If{pWY}Z{*;Pci7hf4qU0{XYJ zKE*D=SQ=>B(Kyg5@ZO=u##ec30lqiwd?hVJU-Zf7rA=?6!s&{DVQ{4et?$!kbD!|% z2y+!L7)~+!fCG=yH4(g@Yex5QA7NGi5Y)=yY zy7Y!2HuvsDmaO}3Xz8n6My!_a=g#dd70LL0rbx{n0983h+%+mLu}#k3NflwqANJc$m#FKtzdJPDuRKp;E4%vo9;+Cq0Si(oyLN4)@~iTg9wG!^r(*vX zGV|3}B~!o>QjAa{_MVPh3OP-`ghO@#uNg!9TaQ?Ph0^yB3Hfo?akTLKcsxZtp5d4~ zkD7hKZ~*N7DIGK4P3kZN+7fyNf~SAgDw2kv7UK-jaOMG|TaTTCogj6;C=#l5GghE` z&F&jXzg_wAW^jmI;!@)i&Znzxm3&gyQT4tW{{X37@we7OCyOS3gP)4$GeS*w+}?K{ zi4K(7P!}z%Ev(i3jHc3gN4rI?Kmp(uQ9(6zSC-e@!axB_;7t{Syhq!cfV2Cxf@NCF zqejqdQs7XDQXsFz9LsHx38>ceStXJ~#UeNZBm?0Ly^>|ZACd(qGRvr``vnxQN~fis zaiGq(o&p;Quk<}c$v(tSpbQ1`>LliO$!PLh5c;)no*N_ z&}TI-saGe*;N@jRxd+*M>I)y|5|fLg}$dQefc+)gn5h-Sr>C)1n2zkzX|d_ zdoohN`1h5P&Se#<=gMu<6vNk7>yx8U?th+Av0^(gEJSF@B{gwX89QfVP@vGchSLwXFsKCznE;+e|A?PdZ}^2aveh#Ji#pMi&~bTwPN zzqJ)|)R!9-RtuOSsaBG1>~Ij7<0e$DZa7$qBlmDyJd0TY4$3P@oP&IW^oied3K@xgb0Ekbc~cp*TUVTvM}5aN|TYl z49Csu-QDa3lwLz_Lnm5FKt4lBnJg24KXdHf@0L;mBKdbR&2ZteV$GSD0M$_~3Xm+= zu~GeGWCgjxV>Rf(3HoetGYhJpw61Iy2wFGq;ffT`lTOIrO@9XL5@V9XXl8!1^HEn7 zxQlUgs%6?^Tg?@U7vb{^d;T^RG_57>1_&Y}Suhu?!G#K>+g8wSXp28eMq?y!N+Dp- z3;&!wscBLbN_3K#rV@A%O`=nTBKe`bSDhe>`aBc+4A5erBC?=1>_(tOom8sn%sED| zB0nnt0VeBdkt_}oc}+gLQulb2vOs`CboH^})Fa=_RLyq7EUD}zEAL+*IxwncU$}{X zjTo#<;O%U>#~HtKM-Y$(?FOc3dXRjAtW!d&b);r6=C%T&n2BMW%oh$4HLT`X3794# zb*EM|Z)7G)apESyaGVEV$iFyfD8&>svX+*S5=0Nzi`ki&`05lIWxA3 z^l>IvID%~=k>g{JZ2GH}KgOy~@#{$&_i}flqqGOvk>lo5N>J+{@K=Ds~h?w-aX#jNB{}0p&_%58+au z#a??)`8wLA4dfIpWk5Awa^Ro%K;Z(Za)|qRsY3ZWF=k45b~wTX8e#z4fc8Kud|FEk zaI%p&#@zkTj8=$Wf%d{=CZISdP+xZhZRxkx0u#XFXEhpV12_#!ITtG z_)+^E>lg@~bO;LJpX%BNQzsA|mRgA;+yUWdbLw?|Hg@^JwwQS4O@SL-`)a1r?=A0_ zt16{`5fFXhbze8vsB;BW+k+tNd_!3t^1m9*TD_7bXZXFjY8eVW1**WxPSK9 z(Z=mm^VY>T>6!{$@}7&R$Oi)LpupVN|2&5FLDq$PJi~u0goz5tCQ^0iQ$(TJplUpi z=K8p;4~4RO*zfZS3LyYMFxa%?Ehgui)**_^U{ z9$e_ALVy{tAFPoW*7Otej&soVhOk0n~9 zbWA0g*7{|N*t3gUS4rd{0UOOvYZkI2KPnl6CO+nlRVyGRMkVr+n;Nc?`h)FhhoZDH zwhUuu?C{e45Z??L@VDh7&b~Y*7J9u$jLN8gfYo#K{;Br5V9a*lLAMl5`)c{bsnem6 zhMd8DAL#>;$-%hBj5MNMO0B`G7_^%R`4%FzGCwPCyKr;aZcuLbO7XR`ys{%$k_>0; zlj00IaJ{@*eg%n&#|e8BnoIB1-8H>1NMT*H@b-x>-1ihqZ4+2-#rd&fz!x_WFH61{ z1=Lets11646u$3EisuVZq8$r;G@GHxZc@$sM)Kbp@d_n}@VEq?|L>m}aw9UCc_|r< zxW2FHYFCgne4~sZQg?b%l1u85^(mIZ!HY1k3X$^aniNeg_5ob+km!K{DM)HUcJPi_ z(3ewUd0wS_!LD{OXzLaLCoa93`wQ?S@`xOvR>B_7OZYd$7!oVt*Ws2ubS*f)PD1+r zA6(yt1*d9xUsec3teRuQ*h^~&+=@eg8u-I2CUwe@H@O;$v|al`?!^ko@7n?6pOTp# zM|)K^AY;PJyXS3`I@@3D5zl2M8gczNxOI7LN0OVif;VtC;7vtL50##W@k3|+#(dsre9p^clM3>iCv7g zj2*XjG?{Km&IC9?bMFzTk1vl@)IG)y4rW=RCnL3i@LUgj0^#;TS3yv!0Xd*CVKB_A%>&g^bCurU1A zbY&@zyb8Aj-^IR<2L8JY+Jb7k$h@M<_qcq?BiWr#fkl5ll62k0H(dmaK*=J$%b053 ztK++JVn?Lp=CK(cXaghShis)h7O&O@jzy%auM4t8pnru%ApU9PaZN(;?N;G6TAfWWE<43ol^)A4BK;$cFm1 z@o&|N8Hv3U8B%-Cazv1X*j204ti7trp&Z1Boy6XIbfRihYpzz!_?W&X7sD!XMbd zeF~$S@LVW?4-8)q75w<6^@k+|jN{UUJXvT+A*?6&y<`8I$Ez713VbKU&+%0r>u}(J z>dKM}r!rn&QmE+QyM4D=;5|!*kHkno6x{+FI`_N-u23?+btRTtzI`RZ zU6~%hcK4e-wpuNNsB>r|9r-MTeDi>f0k?$?^AVOT@uewy@FMoY3fbkMUUErS;iGPv zg_4Q<O(cw{;lmD=67|0n?B*%8Y$(;)PgnNRdc+HPHCsdD%V}3R^JCk zm!3pFUQ$U#MZ&F~v|$cz(_GLF%a!dmb@DT}XW$X2syuty?qtx|Q;~N39dmq9uf(+% z++O4hRH-A>e<~~4B2Zkn*fBE%#|W1D&Z-v&Z?B-|Zk$r)-j9Nr+m=`BC6D>Gxar}A z>uB#_BQx$p#f>)Uk%+=XR^LZW`vz^Z0@V|C8`9>dh}PnZu~4g)I>Rs1u{Unho|}CH zEx&*OuY#ECeeUXx1vAd4g_g@Pntu005|i`avPv_B%`3dYrH4vo@|}W)HdEwLPam(| zY0UfIARFebd#Dv>rk!R3t1H{YxotKYc%CwrGw zwMrO_mfahJPzAsFkBJtlf@%{MTYCIKAT|Duu;JW3(!ecdw8&aT?o{cC#{5Rjn8Y;f z*B{%P+jspsv|#=A>7|Ps)MSA)i`j~gnL!IiqXA{3_NKTDzr@jD*ND5(;e(Of#Tf`5 zHd7yO!t~$*i=W-)Z(y(06?HLv&eg`u`#^$o5lpOq&?{aOr6yDuE4*Vlmv;TD|42ld zq+qT=BxGjsq zGQu*m@Sby9sjL-+_w6(2w*#Y;w7u|hRAy^@yl8&kmFh;> zputh-iS(0X&r4YyRxrQUeAaoXh8GcLw$@i z6NknCkUn2AvV`lkliuTOoM4an+R{tn*P;bV>w&3#>)EZKdV z5;+T}3vDbJkBu@AB17d?uQMUf1LRXEMrIs*3Aw6&*keF77vQ8?+x_c7+FqL$5+%u( zOi!xV+LePumqL!g9}C{$%hq=+l+QpXez{Eh=S#bV`t*sGzK9DnFx9MO_(1E*8&=qT zBW;OM@OO)6fLM#12?klcR=5t5)xqKycc{UM!#uuPMNqlvXcyZjL zGt|@|Mt)=M90<`#RuFtjHp~ot`&hQTTf6@VxTG?qJ3H_dL-S#Rt^N)09}Tdf-v;Ok zc6&?}4f~n(sXS%b_FeG}@p`zyU2HH3#C|m&)0fX;qZ=Cq`~+Exr>NcCvzjm7cHWZd{S$BtZ=$j9!JyZ6UiB0jq@VaMjfUKHg zT661+IHLm+0!ps1>3Lpe6KQX7dycvN3$)gK8f6)wRDs5=PkQYIOY_V4Mi(^yPb!;b{wlTc99rq9sk-Owman#wZ%zV$G73t9OL`UoFy zJJGEJcZ7O3A_@nHouesC04@5nlj70irmhMKQlu+oa1EufOl>+N7Ywx1s1-1 zNc2;CIKFfws>Gjx8SGU=?(ucM>%SR#eLYlsIzr87FALs?yHw9N|J*x4vd)6X(JIO$ zvJBD#DtWVSA!irjPWxyYcT6mINb<6{q;O5F&!(d)ckMMM8fIaW*=@|eBPua;k_f~5 zHA)2LleY?SVuC}t={sJ8XZz+F9vJGS`;Yc?#+LHEm{SzgzWwUH3UTH^`>Hl}U)kbF zZXd=#ldVL=xfUR9F1z>`#5d_tFK(vUn?I~eAHXJ6s(DJEi>-r{p70Tin!IQlX zPR5rWk*^k%F4zi*m!<{90TyT-HxDuMOh6&(J-MqAe@-(*sR(|8B2h4T!CpXD zf>;G=`(}fx;_FQCaFOCjblr9(tCnKso#lzuhYJ3rM;U^y!Q=s`$DGA4!`xl>0kmV7 zt5dnT2<1BhqI`mhOyI5;H*2({?csyQ+7npJk(Q-Gt2f`hH=Kx~El7L=QKY12@deGg zjJ$z~RkLxzfyF7Q&-N_8&&W64cRnq6JItzo(VGpX?wq<4@=*r!_!bTAbz-mi`4G6e z9Pt4ZcgFAPxf2dN=x7LxFt|1JHUmX!nN|X2$lGT?T_Uc`>{z4FMO-z$4c1LI3vwP>P;%3-3G7e1^``9kY~1Sty22RIsib`apdOn4TP`wvUl$y5!c$No?vDQY8Iy?02a-NYS7K1W881YFdv9<6GF)cK_Wyv585=3pR3*j=i?O zxM`;+#Wbff2BsTTLYcdkMulD3v~w%Ssf4q8Y3pMna~qr;xAxG!O$8IgA9F+#gSx3J$CK`5TN=G|a^}cS9_f6B?8G ztP(!$=_F|+ewY)Da?xWw1D;M{9d<5~>CcphxJSB2YbT)YH+n9nNn_v}FDTo(8iFUM zw^HGW1a9e)g?6Ya=yHD%(Kydz}8KHo+LX_z-8fw!;NF5-a7 zTG%a@GCsBZen*0F0uVk=;T-Jb3f+5n$88_68X70QpNQ2^iZvWa-z~uw=%QDPW&Y7l zq_J2cVU3;QBeKVq%dwhuZS{Pa#20a3_d5MNr$xcH5LBUv5bUu~-^IOEh-hU-ht@;{ zvv9I2bHj+~b8ri;^E>%=gtgA0SdXKA<09OX=>s3Yoq0)>>0lt&yP^$6s{lEXYnBUzs9UTd{ z-mg3^=Gp<1H{%(TVd+fe_Dj|jzR}k3fMc-z&BmLkvLrf5StyH;hYKi#7?c|2@gC=9 zI+hq&XaHvfK|RT{awxs{DT>a{g<4&?px)nK@S^m%oUqm$e~gTnx}$^V2olNgzPZFS zLbA{;5twJZ`H;`)%4qH&M#C@ezLI_X9l7vMq;KB!9Rxb+@K&_xxxfPBkNE@Y?pS_6 zLKs?tkl&YjZgRy;*U-*TAVJgo-!1O;ykFYg^Lwxnn=2n>gOl!K*a*vB#iBnI#bA0~ zqCDIuVk2CBO#mrPwZi8xLG>+ldpky`*no@9FexVY5~$-%B{dQ7)ExPnD^o(ph|~Kb zUNpKaz{M`v!?=E+tBb7$;N*hU%Jc+P-q0Q-gXPm@$`Rb}%9vVPj3 zm8GT6sEn6oY>l_{%?rvN@KX|-udy5>@4per%ijhg3M=qmwAEg`AidKpp zdguRsLGr#YsCxUZV%A38U8ob&Lax#jVV6Fe5v_fsFo$_HnegUW4&-mq9iT${ zT4yxL;V3~J@WQT)=Ttvrr7vUJbUL+$Va+UK1hxvCU1%&kQG?6Z@LM;lq-KCmdc7B# zA)V5$n6Ka$dHvVtm(H8YWc+o-yb0=uyp=L!`g)-nh|FvWaJxxJs&#HW%xk%>X^ME+H0D0z_Px(Y6 z(%&%C$GRtRXL-(G(>5w6S(_&WSHr7LT%}1m41*)I^t~gs1w=eH{ffkG?j9gr1RTnVI@ zCt^okWXMh7{jLtGrv1?g@n~W+)W{8@*qQayaD@+cZS(-u>mLK*jrE)#FBWk8MBhzo zwZg;~shQ8<5A+M3$d%i!P|65v606mVCQ2_`?Sd0O^A64zPeYdAzqBJWI!u5~iEO)L zTYoVApClyM|2$X6{~fJSkz_mmI2)l7+39dQJzCupvKv@neN<)${O2;n${pp-lq%nYz6x8z6Nx+0o%6L1ZC#)}t| z8(L|KBF?hXroG+s+&@J|>4U-j32eT4tihgY^-IaZEs|{ZQb(-ehY}*wif(N~->$f~ z!m=H|-A;zi&qE38J%8Bvd*fZDgaU1%~#y{UA=vG4k_4#S2!UKhu@%|c& z6!;mWMZ=ggeJ$(;iXymD@BV&8qBeE(H&pt^P}MzY+lCV!#M3Z@X4{Mu9a|!xlg?Yh zG>?HxOkxSMsI3CJA?WpAK7xJnoo6||XS{k($nI|YF`yIa3&V=ZA4x_KV|*i<{OgD_Y;%AS37%o8;HZE4?~I9ua*ioFX>0Om_ zwDExk;nNN(mah;!MvD;!Bl?v_%f58p#uGafygtf~lxXCp%PR=;*=hb@6V5tz!MsGT zMNqAr-~Dt_;4osHzdD8qVtP@gh6uGQAG~*1ZFRyhE9{rkWAs2 zoYTDcENP#EiRl1W$rDwb74SmKuyLsKC*7gm!-DaO@>rAOH2M9nII}?pqRb;Y77(Sm*Dy3y zILH!MGZewNP%K4!dhdWsZRIa$8(g$KN9O#+3qk;+1Ug@+#&CkO%_kiUhyJX`|vmB3+ot2$X z_(=TJ=k5dhb*4>3VXTJBiQEK7a`{nmV}5K<>#??I$^lihEV7rjBX^I_JM(S?R8MZy zG`=GeZ(g`+XLEUo*kp;0L6E-qX`_sXZ{a{Y;n8XIiR>qla-y(1++@`Ro`Sc|A6lUv z=1VBD9wf9I*8yDL(_3MA@rmZ``_MqO`~=DVhqb3Bc`tZZwthW1w|oz)P{TaHZg2H4 zW?J~Y!VLwK*W1k-?lp66zbL~KSo{57j%J#NRC6Fp%^^B^N~X3~C(boE=~@(|%K~2; zScj*8q$0)hy@l+c1hQ|$lAlZTCQfqinnlsfvziGH^Ke|p!oMIlJ(H!~Zk9_}&N{E* zMV8BpWYw0!{$R`P5AD=myxVp;^x-z?o$Pb5&Q*L^V0j2!WM_3Bb?5@#5Rb6DZ@~;b zjHMUXX|FM#uWtkV{;D3soIHuPcu5S!mn3R;>lvysCf%Dx~ktEH1(;X_U=KtzkeDS2(A8}G8%hi_@cn?u~ zazxMpWrfsb4+%@9n{_J>zauepHkmkBgGkh={v5pu@|>k+JJ2e8CRge%Z}cVmrRzSVCr1K5V*9A|Gc3yVdbuZ47qHi$4?l zr3p4ORc4QOqwm8V&~TFAamTTqb48~_8ZOzND&AKT;%xtNqR5Q>8*nj@L^iqdhcl9G z*bJvkLjUlv2tSik1MQ=;lbKgSR*FJ`RHMeo#W%x1({7Nq&+K&NAe$7PLGOF9wKds4 zsFf#z_g<@}H?Df<2rrD7(b9U4c~(53Z)_b0Er+ps{|WyS!(QdQVxotfyzD@?=I*s- z6gJlE>F{r4caZ7lL!H-O3h4hS!nn~69u|9WiWuP6zJ?yxb&L@{ zB19%b4&z|DIs;E&=`0+$oM`5Tyv&o3amvI~KZje^*<4mo=#)VH)%+81FTCdX1@-s_+HsbVyHQLTl|Uo)^w8z6=O$xQLC6@3ThOrO7u2$$PQhbPL$*Zq zriTwLWLQ69_STMF;qsfu7bXo)udb)n9OhfxURR}NIV3&+M0ue~jpNiqIhD||$>b$s z0kuQ=UXCEbBKe2fp~JBHyI7EEm#s=j8T_%B!0@gs-7{Tbe_y-Glxg+Flj3HVd@LM+ zbya8YZ$2NlQehIRInE)9MRioN#@cS4gJQ_WU#kkZ+~)gPcG?adVyB$my3=wQJj1Xu zlrOgOZq4QNZgTmnc)&xzyYC%WX3HMJ+xvO5#2XIi%l3y5xE90`6p<0GPMC<-fo@wQ zXBHiryv?0I&G{qgock8?GBbENs?QkqTAnmBFv&JU5=p*8Cj5*VE9x!=$@*rG=Ly88 zMEtp2cwNyxUi4pw0y4iF_Qw}8*QX;1)z*-WJ>7jZsNYH{C2t3N_rE^JPj!kp1PF|c zod7NZx(uc#NbZ^jc>$!Zk8!EoYQ!sfQ^L1_+phyVXvUFwoVY!KF-r&LqyqXHY+QwM zV^oJA5utoy3ANXzYicjsFmZJ$$~JY+Cco+_wNwIJO6HHs>nfb=PI!$R{yGShmq%5! zU3A_|LDw{DD@RRZM=zXw0OuV&QNADb=XKtKh}R>?EfNq#$2aiK==?#HPp6uyV%L ziS-xeV@%B9y_e!Ozran+Hk1P#Us7!{-ZKU1^W`-8m1uyC=U>b(^W|O?Y%GAQENvfl zQQ$Wk$htY*om(lYK*J1q+f8QuMJMYQ2GBLR%PF>h|+2xX+g!>Yh6<**^H9Iw6|xx zi#4sMuKSqVXRI?(-@OJb3Qs8m7nHwmvw;lk8=S~<{m9$grQa-iH+`$dMm;9`W|v3l zz*Yr3LU-@Bx^p|D86#Yo$K@mv<1s}nu8q4SqG|nmtuJ4dw7{p|Au{VMVOa@o*L*lj;b0R(DaM)^5LJll;7OldV0vwlwF* zfl7L>v^D>i10$6qrpqO?fDP?=64B<2dwjs+!vT7$U@a}pK-X7Ss!9891G)Y#t0~cS zVyYrunrGTpc(~4$<}Q=G`}k1MG2V7*uyx&kU~>FeS#;^z!^JBG@D0XyEo;8qp*J_D z;hB#!`m>vr%?nUmEp8M1Zky`(&0 zp?S-Vg)r^bfcXjg1cN%`A+sAV7vR0b5hUp{k1gI_-;^S6I-im$-V>|O4y%hwklCn8 zy%TS}i99z`not+~ws)1O3=4`1jW|&}c>Y%HrCO-C)lD-mW3rq!Dk{6Z#1B&~!NDB` znpC__Rngnhh@_opD;h6JNENK^j$Xw4+2TNN%P0%u%i&~QdSp8x@|P2{33>~#V;+k< z%WP1}n<#jaw&_2oeKN}rdULMwaS@erS9@_icVGjnaI62|K%wG`qZ*uaczGKa$*sm_a?OEmMtY)5GzeTfd zS@(Y6*mIKI{s}1n)2mPtyyrSros=TH>Vz=Huf!@_qbK#E|4_;^1Zo7E24lFF%YI zOZ8avFpL9toMb+sa13cjC-8tkkHGE&mXxUy8hBJ;=zDVddZ*z!PjFmZD%d{aeS7V> z319HC)7w*UUk10cKz`_0W-uqQ-rC7dkNuVMbQy(pd{xAa2Itk`;*=+tijaBd^yG*K zmhphQM<5%I(ZQuBUzj`EdZieK%@8i?vaSTiWPPweH9{Wxs+|uZ^vl^eRhZ+`f1^kt9#hrJLtZ2J=fclWj zNE1?`oz<>|r1cBJn&BPNkX+f1p+ycjequpZ0AV$!Gl><^fk8^}>PDE@u<%fbnMK;m zYb+7ldR$i7}T>kkl!bJ!D~k5K2PBK{obKd9Xv#%&#HGG4CS)gKF(Y~i4PugOA}F)IhzZnF@ia( zN9j6N`>?iz`N7H^nm31lmpL#Yw{xvxVnj7RMRio=Hhsks*3!atC~l#CXXWbRF*Hs3 zlLhq_k>-4g-SZcedeOt?Ev&!NaZZux6PPR#$4(yezEF%C<}Fy8%9BBFlcH)y!4`oD zQk*&Bm>1uoEJ{DPo$>zhAT(Iy$bw-}qF?rW}gVIF42iPUx$ z6^y%4rEy16Whlb}y!V8O(4kFf>T{LL_XgvQN#P1p(mqE^3yaigeY2JvYK&8e*^DB^#F7lDg^^6tLLXsVK zpnI8;L@XH4@i_socK2_1Ih#FjbjAz3j3PE-T6%m^vVY$sSoPM~Huo8FcE29ltxsgH z!o6*-cLa6qO0mR@JIFu`yg~*eIVq7OF-k`DzM{&Ew^ffyX>vU(1M|QqPVnV?YI0+t zP9z$KQ9XOlX~7zn=3Zd{7ea-zC|Fiah~LhGlGGK{~s`kkO|@BjNB#3+e<*fdl8;y0&6 znluLMdydMbCUC_RocZF zj6rc+Uc!wl@9S*=vvpGH>vD!XF;x&c3@muTP&S&#&iH5Rl}IbFD-LsrennFJ3gy_M zWO*mr0cI#S79|K3SBBOp1VKNAt*ot;+oofHxau1!!gGKIl+HNn)e6x{%d-|?XAu=I@B?hV!tNpYQtrLkB17r z-Iv2XI1~vUJ{-&MRawaO8vL8miSslIDCsLviG?_&gguA9AbE?&a|Je1-WHkSTr)XO zGJcvlSbtSbOQkqOH26-%Km>ivH_P}06~Yz$(~qRw#Fn`Jtvt1*C@;EDR%AKzh$6Pj|#ntj943jzQ>9B8!4xmvBd1xI@w%qTBA5xk1A~#U09%* z?vsvokw-{%_nBZ(2?K0cqfGwS*#83BnfclJ4&Jvy#UG?pXq*DyHdiD7-%h;2@i!!4 z^i_uDGt?zpAiUhPE=gip_{lz2FB9Y%Y6SSi`rnBzr;WF#ocr~u>ayKFuub8yWI?}i z79>R_68rQ4BK@bvE_N(NTv*R|sCe{QikQ_0t%GRlu1~b`WLMz_nLXZK$KSrLirr{% zw<=M>O-5K2`nzERYPd03-FwF}I0X4AS5d(^;sTq=E;WaECo z26+AhILb_RU8x|mCQ678+cZ^}auai4ijZ69Pqum@8L zH8})SrgB&xrK+*Nm=YOp2rA!X4)s^X1O%k8jd&a7@!as&z*1z?#F2kyLoh45|XB99Rc90g- z)GIi0bc?tGU_GOD@OB@kg!;_ad2bYa`R?u4w5Q&Fo;w}St6FvF83LM8%y8pveo$=p zq^=6y;+AgJBUhD57J2S+ImjW}7$Ene_=Cnu9YJNNB_#rEXGBu#fbEp)d`wS?I!p7h z3SV|IQzr>{m3^B_j^(@JZN3R_w|;9gUpc#>XY5nzDT{)5Gx0SePTWJ%^FWC>Z$ zkq%FS{Zv8Z@!2t zkCi$pSM&+cFPuj%8c9{eRMofY(PJ5q{yKwL_^2=|%miAHkj}*U&JT=DMkQfd0{YZH z?K|qj-}?kF+v04i8QOfn`;x!Rx5pd{N&9cP>1xcif=_agj{mUo^Tla}u3gk}p zATu>^birQ`RNT<42o-XQV?(j(D5gv@fbrpZxgJb3< z+)XGl9pRuq*g~A$6<&Gmsjz3EW7O!Cu$wP4D8!XL$s#jDz%%Vr>ErMcehNzIMYozh zu~&2l7bqe43W!2?AAKMqi7Rvw>Xh)?8FuMgt`(7Rb2+xpOee0o~_VclP$ zI@|}kA1}Xi0q^XZy!G)j`@mEOL|NT#F@p&`>_*^xk)N=Wj%szZB}SpK1n6l;!wy@w&qFN)Q*T>STm+Ls3l!1pumFHw_X~u4l(Q z)v(pTa?=z8$WivV%wwJFu3RhuHXJVB5#42pDN!~j*{_lUR zu}POX@pqHkn|*!@Y=R4{QTum2c8YK(<}tjT^2u^Buj$Gd&1nYh-*h8|t-1s*!nK{- zA2CHvz2~I-mx}fo)8fXF)c^aRl4OE)7rGQ$IkNwXWGLnHC{~6Q&|JvN|EpO!S}#m% zC4le?TcRguNHZuLfMFd$K{g%XauMISnwERBJYr z5PPwXY;DltX&x$=;hsCf$iM5X8c?IKX*e?q0Qy-BqL~>-hE_N@tz5tf`(DWTnAObxJ4XFFn-Rq5JTD}h&Q$&0H>doy7 zJ($lG$4v#52F%7cVK2JUw5z&I1oJHEd5hb{qh$bIc$g$tdB*3+6}MNMr&j#sj=R)| z4I=>o+G|yt+y4P^=dS*7b!WFaDC5_fI@D5ryFY{69vAoY*lzhpq=4!Ki!w$CY3d+tk+N`IceH;8Vl`DhL4>BE)eo6g%~yr21S;>xVEw+wSl)gbS>Dz$ z^tb%uQ=(SuLZlZr}XrNiMi2OiK@M9Sb9sY z{lcqk(L2k8kR2H!s1Ooj49l;^teR>`RNrp!y2t(tubZbFBe5j#$;(CktPDf|Kr`3{ ze&=2Dgij0rP}MtW;A7G3i%HKcfw>IMx_@D27JS%9qmmtuHmDlUJTC*^Y&y6}{D{wT zjr7*bo%zW5Jbgua0&mtX{KQwg$wVq;)%Dzh%Z>P4JebHC9#1le;S(gLW~!m;II)ey zTVw_J_lS4UCIAf4D>!Y=>zfcIPffncq_8zG+&#yXYBD`Xfr@t8BRFO?e(qnMvN=2V z&Iqsz>P6xt<_jo9Rq-#cWfS!md2XZ3r;K>@UfKBZ8;T)3YwN=u^4}OKd6#J{dRxQs zY9UF!w?!m!%A1WQ$6B5#$B6cK2=qycF7h7gGvUnwF>;7Qv?PhVW^*6eh9pZ7+uwJj z`F|(4PPT$nVT%Gk{B~qLtVyEb=F??;h*gl&V ze7K6uG;MdYn+5%X_khp1)IAlYe#W4*6%)A0`_@`WB9ai>FLNijFNL+mTZn(dww-6r zZE0u`DmJ^KM}f`+xKA61TNwvzzWWA=NW(N`c57j-*sH()m8$EWGPf``Po@ZOIii+s z&q#~#v7 zT#UNbWfTx~|5}QK({It%JlZRTm+2jw6F}0-aX7AP>=Env6~w zTXj2u382M&xN=J)c=x*xF!k9T_oFkr&M)J~ALEP8Io*1g5qO?@_K5+QbF-&kgG501 z=~bF^;4Z==+6MNWm6nh_)X-tXk6EseuTKkIF~ZFG%HLk>pi41J;M!}3pCzX@ zI4HVMlJt((y$c-oYJ9FT<`LSv_;r!0c4%t$k#w?W7V}iuO-I zjVVhck{ll5jb5Cc{#DRT-a|gX#b=^A2iYz_LvNap)JJDEZ^lRFDT5ajQi(Uu6>}Dg z+ItZ1lV5f>esn&X)&sP5<(0uxWP0zUm^Z0@(nPqpHKyIMKj{>G3ch2y?AhjAd{ygd z%H@b%hhhC;Z1nBqa_aS=HkP8N63?Ql(!3mCb{fqucy4oAHSUAz^~jVt!HTOndyL|D zun)9u3xgPUVLxs!!M`$$;J^bBD4~0X5JLwAwAQ`KInk+7M|ZFlQ|@jqcWihcKecOOEbS?4g>91?e|+OjE4WP`Qt2YHloaI*3VwpN5!hv1s$E*AX&|!BWD48 zW55pS=r@<`?9$ZX8jZb}v)W?zn4(F)|1d~U$7lOdCPS6pBW>1qXoC|HDasgH`w){r zRo^#^ILxTtPH$k>g!y>s*VQBw4Xb7t;mJ+-V_`|ip=C%0oEKt#e2-VbOlKFhEfppE zZj;bhT=ChoHZT1t;F}GDU>lkz$#aO=J3*#&UYU2VEp4&c@zj^UPJY%N)vUdw^yETz zRTb32vi=UC5NHTucr8l=`(G&}B?7)#*_9zkP*vE!yYhN*5|zd6BN+v!R9W?jsSK9e z%_9?}|N9^LI+9Ez38I8!0n%utG9kH?41)#h^!L~NtUYwR6Xp_~M?3yb09Ke797vdZ zaBeA2DXoz1g9e1zP=k=)8+*P9oF=Os)wGHHS!H8ug$<&$3Zo{}c zDPiF|b~Qv}HidG*SD`LwgUb`R3DxX~zE0{krtAI#&KQSI`$B#z6)Q5QRsEa=2?1+* zvB6al{Ve^#YHUoI-4`dptiAyC^% zJkJ~Cavq6?Fo{MiGDy3o#kkYS1Cw69WFs%0+oQIaJkHMR`>?{QtjoFs!!7oNO6vZR z#Zg!IpMXPUZPU=7$hB=PxdVkxmz9Tg=+YwrEg91dLp5EwU1J)IU@A$Ke6pXf`h~qm zhH=56*%toHeAbOPpD(}u&vJ8NEMVUfhSS$A)lDdh&O1a#*c+PE-TZe1vo)Y)}{ZGb!qTG%dLUA}EAD za@(wdHx<{DpAs`pI;ZW;7iN)t?!N$5fLHXe1i}n8nc%kQr0wjn8T5t*&<#0O9e=vK z@w%|^W~!2g$Wl}+-@`U9rZXiO!_e(ZjVK%#ABx2Nricmy%kZEJ54Kf$O|tT=)$WOe zQvxXMb~Dy2ZrS>QN~wr>(^#(m(ji`}&#^YhDe#tJzk2iDI36@gu`MgSE|XGzgk8Cz z?x%2Zmu-|e<=86-M_x|ijpuO1JxoU+a|?>CqP6ab+`{V^XQCT75?tPpgcR_zR@T*K z*Bo4gqYS`7tVOe}k2!CN#2Guk0G3xdW|_fczM4+kS$UD6++Lc|*lJIN>7|KH^!A5> zr^Pt?iWoxC6K|83ZW7Em%jABT&7tkY#I98ly~s)PamKar9h`+axD)41;B*mzcJqXI zSz0ohKp?HuWt+dnUtiMPoR%w8%b;8UG+Hnf#P_hrcI-PhIv%QjdsU-f-Z&(Sgmm z+u>d{rc^tdSXakPflSr-KE~0FSc1(Ti3O4Z_3x3s?y=^du`k+BzP5|#gPTw^DhQ4#rDRq!HYnv+G23`5Uc#hRo{5c9;wpYx&-bKmkxy%%K(KY#0 zNQC@Lx!h%sRI-nd51PE#9cmv!@b=`VE@a%S+PF~9zJKtl7+W@ttK|pKs;Tnk{W9nY zWZIqda7+7S_|iqiXngQLitNpxY48Q>pkPk&uSLN|tCn^UXgIVPYraYy{%g4+cbYqS z41Jd09+y8p$bFmrhQX(A@`OP074C%xFQ;{_lkAGF)+P{-&?eR?GtxUH{OH(^NG1Gd zUr2vgEZH?J9M(tOMNm6l@OwK{9E#5`6C9?tlEj6bJe+qTcpn3l<6b9s>>BR~N2ErC zQp!g`xOKTgMhWN&6x`n_mc_)0K~^|=AJ5ij`Nkk=(Q~@yzWLhl?6cwr30cQBTlpVj z=Cn^lbkl@$)-#Q;{etgE%T@$DxM``{ut@lqMi+23FWH6eE(U25RZGDONuC{x8`%hJ zH$6A97j&|*gdKVSU;m5gOAxN@WG$Z@t~6k5+Hr>2yA!wt`P1dj$^m8;t8pDI#&T&b zz5S)s5VMe2Vd5_v0Cdr6J~`(9{rllNG^vL_$;xnhP66Ktr*Ri7F<|Tg$mcqU9Xa5xR-uh$ReT8DXI2Zbx+Gw! zUA2}y7D%gvy85k`-4|xb8(bRFW~PL(ebZt|t5QJYiGuhlv3%hZtD=oTwz}j~m2{>n zU<^NPhO_UmeIsQ>u*rhEEpr2Wqvn_3quaO{&}kTS4p35ZIGF0 z7hP}n_T9(%>OQg82J@qoJao}pQV{OQ>*t-2B#2pzWa1?I&y=JNNJ#t4hg04HF5TA* zoYJFH1?%_8E&}VUQNP)1)Q-dx1a?e^uWswA5+ASzrUZ_HM9@z79*`k$_{kBZcwhvd zTE@^W{y|f-WBIdNtwQb#y>~2MZ(ciJF1sBwH))er`iG2|5L(~l&`}xy*1hl>}b3xQRIr-CEy zqzKIr+@?Rhi6`~ofkq?W%q@Fhxl-B%VA;~g6GpLq(60c3p8&s&tBcrlAQ6v-5tX&& z!;I**#AU^Q!OKgIxsRu;VDOIk9IuvemU{o<^IRXJOW>_qudA;b>K;$rq}=scjo*e* z95~&;i-54JA4mK;pIL8zsd^*Urbzpo%*+3*ghQY@Mlrnxo5kxV=rDn8>-j*9SkreL z1Irg$?T@oOrLT;bI#XufjcMWOWj*OzEDsVo@DJ_r8G$+i_x=zJn|^>FbFW>UalwzJ2jd5JhBY7n#C$ z?P@JSq5gOkhNL^tRVxh9BWfEsEeA_c&ecgN0G}N?>8@sf3fsL_g)Ui~;%EhaXj_PrfK-V|OeHn>Uc-7fu$Ti@vttR;O^VGJW zYE6gMtzYW#*TuxV6;X&jYB^`|m*@qZmy@gwtT0btkux(OESPzF_GZ*8ES1{pY@vAd zVhp>;;@yayE2ba0lPlFFt5V&no?j^yh!vMF_Bv0w@nrXi*W>f9(m1~;IQYTPC)ffn zcW+6rj&MgZWkt zw%cpC?+G(#^mV+1l+e%`Qt(80<<5MSOy=q{71$%?k+31i3lG_nxg7m-ln58!-FzAk zDR=}zS7wm)ZUZ9BxxEo>e21UR3Zulsb;Z?x!)hj1?30^DTvX+pueS4^G-nV9qez>;-N3y{8 zN3$dDPfgt$3|j@7?L`LnY%UB_fevV`D@XlWmoAx#gwtH^D3i*2 zWY-9??np7WP$CnLW+ClzLP04j({Z8RYz zHHpC5X_L359E;iOB((3k@H=7DWT9)M3Aa>HOW_kl+JC5>#n&XFQ?G!|O0rdti5Zs7 zo)g37#$pK-@KN?r2Sv{PgsvmRlqo{McT9~Y)BALB;QcXSra)=~NG(1U7h|Y?= z!+XILY%RB~NStfjm5H<1e?j{Q?t6+f;XTg|fXuA%l30ei6f%a0ay-8$Q~7664nB?~ ziVYGPG;J0<3Rp;v28J@O_6gW)p_aSQmvqgNS195|a!MdiBsa);W)2kS%TBQS!#@>cAk(qnMDBJRjG$JvV*#e~Jaq?FJ zrt)Qr5h$14Arf*^oEAc%ks)E}C=*S^C#(uWOLE>sO)1dJmn2V-GIw4>;QAGgXE~E( z+aO|YJdZ&vs_(s$R%) zBXb^D(1u_f3mq%DM$qe@*6;JS%y!dt8l>`skhFoGbI@`>d>OIi9IMKzJ# zp`Ltbl_cDbnEM-4n?oktt(jyh(rpiZ$7KhSY+=3#AW&`2{tOWvikNG{2xbIM!%_hY ze2LJcl{JyIC!_tv%=r^+G7$1dxg5Gft?TeZX9DTo>t-vakC_n1!xsxB@JkboiRhjL zz6ofS+_L!lE|m$1wVdgK{H&ku5+x{0pX4r2kpBSCbWW(>v|VntC4zJ_*rBcqLUKUm zOx>Zw$>p9IA>KQgK6FbYl1b7@B%LQs$LXURl7VI@&Y`QM{t2kF2#=l0p(LnC@m-I3 zGw>)j^2CWX5nf3y4UCfgi4`Js$eNXp)NeRS=F~cow-cH3M7ai^ak%N>9c)b0d0ABbcHJiW^i=?`H^{toUL?v9T;RF3;GQc9eUL z7h<*V?lgr6QiX(I!+eUB35pW-GF_1@nZn>%e<39)3BiiODd_MfXJ$z(H{eE;u1@Xf z$F*dGC@OiPf_TE zQdt)SY{?FJ6P_WJkFkSEC**V@7l9$uX*xd7VBCp;2_TKo?3F;7Izu6t_L3gJB&aEN zq*>cvhDC4S96zu{%*TYRO%U8`fyE^)HkmtuKdfm#1R?t(ev1&)G$j}sdog5F`eU95 zEO7QOvJwpy{{SSSGjPQz(<(=Xcn8s!Sr4gAmbRsE_7Vh$9cYAMK4kfbGGaH^{^?Po_6_JSc(9+l!dWJ&EVuB?1&INK{1f^Z72b z#njO9emg*$oFS>CSVX(b$I-Yf>`bX8#@06{DUz;|sGO3P@DQq7VK$Du2?yEauVc)h zlrGm&C?&y-#njC`#;q>gVs0Tgx0be5;=ZsjxP+9oVX&29c*HTt`0kS8@ixKz-HnFBf>ZnKtia^HcO>=h=)>G3AsJh3?(v@56~ zNYowAkt?RkM*O=$8mSZoM;q=wL_vmIcpHW2;(2_&pF2|c88 zpLfX3%1s=W5oQqDI!J`TQ^-bdJ{b!*Y3?>()+1woKw2znP`wUJ&G`{_Rb_o2CId#!>Sl+O9Ur@>O}RWLfJ z&y=T5P5j|=h#_5qc|M2z*xXocCHD-rn)wkei`+#I!3<0B{;bL&=ySm)Ev+QPGIW*6 zB$7S@gh<%Z3nJG-Mx_ZH4jD&6Oe{SR{{X^&@K%-_vOwCCflmJbBV8*a1gzkNxr7hC zu~ljGDxB|PmmlDDC9Ekap4psvlX`uz?kS|(LrZlSl^|(#P`^6}LTW0BuYu{^nVfqM zIVq8){KR3YbcklnwR{S%KPJkPf}&KgD!4^QVJUbX#BP-ANrETm$uQS-ID)#;*w>Z;=~{uWM%JLhry&8bryI4yPOJ zMrRUDa-*6oB#M#5OFl^6)Pe`vvP*9E$n=>D60Dg77%EeImaF4pD?utXZi#tv(Gyh1 zMQ0)*Ulitt$$o=U$j&Ciju6XoxD!k=j^If_t;IqismDeM5H^O1ayGz)w1src(2dpf zWSwwG*(8yLmN7DA8wu}6;DPR+0*4WTSC7cjxRE7l6ZaE=V8>5I5sJ)MrED}cIvtw~8+B#?YXJZjV zMwbMLZS=^TLC|u@adY}dtk(Cl3NI;!R%*!5Qi|^a)h6CG;d4!Bj3n}w4DQ~ z{{Vq{CsrbI9HgOcC*+5O{{SqS_b@i0&KRy}X(o$CQ=efs*q`KrYu*S+vF~Ei_LL#) zL_0Y28yINdsO9ck5S6LTNpjS7);VPeq13(_cpA;b$0pgz*v@_k6{L$|%V9h?OG4~A zDk*8@G^Bl(zXM1_{LtC5a3b%HWbRuABA zY7*(1M+hh8#VD~lW;cOLqDkHE)CgED*WhiYNrEI|9K%>;8c7eOD4WN?Y%@K}N*;e;p%(+>nM(Nv zWaiU_!8_V5h#Ne$@FYCS`##W=VUj7eB+#j@f`+nOQzeo!%v>@D3}b?5PV!eeW5Feo zMmMwjJQl_oJ(9ohtzN8?HOQrGn9KAQTZWsoe7(!$Qd=rIJj9d4kC0sLL7wcB0UV{Y z!NwMFnH89^HDuF46Rlihh2U3hzho}jr?}~qzhMJ0Z~h7%!;;h!?oH{ER?{40b++qn z@?>C7A)NQI75ww$2P^DVQ$BhXJGaEMDSmc zONtWMns7r{W-kJ161FUMnF;wJRQ-h0O51W=t_i6iM#(&i4Ab0m;yj7+92CUqvU!a$ z?InIp@}FV3L?gh$ljtUhPhtFw47RelLP*`)I8*sz;QM2ncT+?tNu}hm&)J(#vlY+s z61#k+@;f9DrW_EA`N0}U-e_V){3Gym zK1erTCs0PznhB~$ArO2$nHA5-{egizi4S6b(CU1U!8gaqoDFEmzp$j?%6tt@j z$dUg5;ueq4$YX!HFBm+ZxQT~@rb8PO9`BJEC{F^8QX7&I5^(HoLvv)>O&%Kl8Raq~M58wS zX(m;CoBEO1a-(r>p2Cal#Uz&Hre4}T#Kh#7(|BjKoEPA^Sm$C@k%5%bP_*I}293rK z-Z7!ATlUys)FtkT<>cOr!+1(gIx134$1+NZ3zp-y!W5A|0nON>iNXj`E9|f4V6uwx7EG#M>5hHP-Ezr@GP9T#m$yNFTCM0ZZZ_HuMOF1R!42g*@sF}HP zVjMXown^}LK`vYg_EIKUUglT(6U!uIr7t5?8%;b3wl=b&X8!;}War?r;IVNBglv%+ z%BGN-^n^f)k3I@m_9wG}4Gnkw2T3Mk?4IScNUv=vo*(Z56@l(cD~mm-ohdJs$dVQ> z^G;99Kl29MFKQc$FQyy#x)hE)i9hTbBTcV?u`-f%P$guJ#E{gE--W5g3Y>H> z+kr6dl}_R*CP{b^uP=jU!&wv8L~cSzbrN5&YGv8{kjr`^{E%hTnYxWR*hx}j!uz;C zAgRZz?Q)y zmjeQuu|KGLeR3^n)2#3}-Chf|Ew$MZ?OUOVvd`OXAk0{ib4@~6e3yelHb%lODn7~- zGaGjbT<|7m+$ALzT(NHus@xB`{a{BTF%yBiAiaovP;K8d|7=Wb5oc#(Z-`N;oB|AfV0?GSQG7q`AIMBHbCnZQmgm6b}MAeJ4 zXJanhO1EM^QHIX}rks;toPXR4X`!`OKLCW{1>J%8!HR5f=qr=$7C(;MWorhm}F3*S!C04U?=_*xt-(r z9EoohMX_X(mU(bUoiOtPw3a+CHw5_OQ?b8Z2e$Z|FLufL5m043aD-dKf>6{$Vn$?l zLv&N2BV>st%Sn62wIq`Y@Fi+f6J0T*VVcOI^t%jJ_$4PYE!7H1(#a-Yu>wY--FX+~ zu*29pB6cKfk*XzyDV!-W%jMfDW!FL?E&c@2Om!b803j9T9xUX6fL8Y!@q3@^gtnO9 zklM*1pN|Lt#BhmzeGJDBxjB!r70Tb}cWubh z;vKRR?m-Z}$>g7ciS=gtn&FLh&2%SR3w;OlfhZ@uiiY&Em8I_3!CUeqC`cqN-bAoU z$G}}No?uGCOGmKXo$P=^yF7UrldxH&5u#k}Cqe#sS0Gm_tu`7XzyqDYX= z%tRt!S-N`=i+=o+f=>tXNvsGhVGSsjcpa-8?N=f8k{*df2H8Peu{{j~W>G#!;gs@p z28cj3P|R1o{kl9l6m$A(V`7^h%b^v9G~1@C6MUH7WNPmgp&tenh)pBqr7o zWir3mNPE3HA`YPr!8NfW<)@8hbEKiCBIF+_*gRO}jcI4xbVGtXYD|#x;7@-O+;E!+ zRS6J?U-6AFAfEz6rsIw$W`(0x!(N2E9wdWk#+}wLTxt zr%Yx^(PBi5o5YA+55c75TCd+#v(9&AN zog6lFW4jZfL$TE}%t^^eq{ANF_9|qCHf~Ky6wxZf4k43^ zPjI*kI8ruQLz-z66SB31JN^gup*{Z5tkY`jg4CB2!MHc2c{Rd-5$m*YH z<@ks*^ciqo4XhAcG}&nm&HI#D;DuEK+r3yz4N3h@8h#JxV&jd%g$c{UCE_S{*N*hu*B~B-DHk!6s5`2=614I`80Fge5TMZi9E>onIpy{l?^l9_BGWfo?G=F|uDWD%84zM-aA^ z>`S78$?pAvR*39M0wozome0txhM_Ws)|*lpDUJUCBD89)O|p=hw*BLl<5Qws4#^?6 zj&zMTh-|zIWQq17w;a+Kr%aLtDi<@gg=_Hb2(tT5` zl24{|{KPtBdJ!V2!sN#!#4HlLqENs#6q*>+YOpHcX^N!TITE}f&7*+%8s~6g49g{g z%%}Zh!xA@V$dXhT3x^`Z5>prtf9Wi zMoFBCNF|PQw}AV25JuJojz=!;pLh8!oD97}q+Jjou{JOh4#b8? z?04IS>%j)4tDO@Zc`}uPTHI5~k_MSsE=gl(@{WNc-6cbMG@2EJ*o>AYfB(b)Ef4_! z0s;a71OfsB0RaI400RL45g{=_QDG2qfsvuH!OfByhS-^+*p0OWtq{{Z}u{$Kw9jnYtUg(P%X7O#u{0LenF{{ZqJ2>$^1 z@BaYw@!$Ud)HDA8#dN4>bogPH6?#p->K0(ZO%9(ifopD)zx-=UvHt+})!(%L0R22q{{YEq zf~6-1rXfVNgm$`Sykoz^=3Z<15AW8r0qdBoVR^)uZI|{{RZA=C*b~0yaP4ewn)3eV_jTAJ%^) zWHuImP{?Wj06PM;U-|w!_5OL1@@_W=5Lbdf{t|&*1;(tDr~cjoQ^3Lh0QCO=4gUc0 zuq%Eu{maewTVL1e94rM=onM)sSn7d~g})dOTGz@mem)Zc2P9^_T|N>arS=nsv!nJx z+(i*tcc+-CH~GAtVWhE(VB%!y)HM&qKfk3*_Lv;kCzwLv0>@B|LUUik>Fx#iJ%5rB zX)1HB7u|Z_pap3E03j7GC#DiBm%8l#00vswliYwqk{W%VALdu)FaCdx{T`3()BHtt zYw;$5eg6O%m$kco&-_)d&+(7{08U|?0t=%sEh$-8cUKF<`Yzcne zxBf5wy&jr+2CV-8(-wt@p_Hs{wjU@kcE3uL7&J>U=%K&zSLHs<`XEEjzrm1hsP|wI z!C(4}t&p~JP#F)ak>MBJ!Tu-yPW{vM{{X9%Ul)V61p#a2{{Z;HkN*Hu>S9nqHD7m6 zEcsv2J(tfuKbC*X`)B$|uT};_E#~E_!TBE2wcf=nlKG0Y?SYJ903&dX!8&lqw3uSk z%0k_GAmUZEIUa#TRZM*)m|4nDxJIh1YFe7Mj1PFQ5OCrh`oyD~L9vt*(RZwt5ln+k zOb_CmUo4IR*jyaHa&kl|-e)m=lz^fw?2`bU*u{y?ie9kVrMm(1&}{wPa9 z6a``zgBiV)_%Z(gxs>TX{{ZwGlK2B_)O%3wAEUwl0P)4QOaA~=v|38)XNo~Kqrv+L zS@Qx9)GhC`{U`jN(tpkUWffH$K0px)x!9KYdqvXIumC$O<^vZTS)Lsjg5+g@pHN#K zkn3ffGTj96{3lvZYwkWjxYMKP@!I;9^ZJiG9&fn$WiJrqR8sw>2A%_cVf*2;q9(>e zG!n2-`5qEEOvg?GiBp0B+tU#}$Qn}?(4-epi)g5O%R7vhCF-tTF5=eWr&e!u5HQph zgV{`$K%umtI>iB>xQeQ$u!5`~aRt_}yN~`P7TQ_Xm3f9W``8;bA&bstdr9yn_9RZv z>IeYkYqkwf!)ZxxMrf$)t3c9FT)3E7k*u6t#i%r>-3O9qTG;;pZ|~DSq4a0@^v|dR z_WCP*?}r|qEGheDMCpEgbA9iJ9*GlKe*@DmW~MNFS2ldTPYw|p*k{ymcYU(u#YsdW)O0fI*8c#*HTU}C{{Rb} zj`)b8vA2(OAR+)3tUOW3@!)pF0aOEQbZGAL?0?{)C?(KQ!=HE6uxLKx(fqZ1(@@en7tDrs&N+*SoIQ1 zDPg@3LL3b4A(IjcZSg7vpAcP#Qx5J@-{6>^6O_zMu&gmHO%z8g()t1&Og2(`!+?Fp zT6uclfAc5*05UPA9JML8+=^m};l-U#94V~F%{+|qGZxsM7p@Mp>PXqdu3sh+tC$Vs zW8{TRrH)W_V$+zGjm}t@NgEMVRHCDT<)ZsFO<2Mqt$9rH1=wQXwp_?_ekRo#MYl3R zJOVnR-MJBE#Ft18Kmi7_yi^n|%Dd(vzB}!W1rrS=$d_y|fCXX`PuM~!C4s1N4@D3# zUat;cOD#;f;6Ylq+F-c7n)3z%r*z%-1_ev#Y6S$=qwJQ&7h8tDO9ZljG>?KjOzn&O zLt`u`w7s&JNDH2zMHk@|OI@_V1Ly&azyNFyqdura%Wp&g1qY>1E1=sQOxzA2iFsTB zwkUf;h%29f+RV-FI30RAY_vBn+n$XOi})O{rqN(NS^oeF^sgMQhS^r#eLpaxf68F6 zC?b>|mgPn%fw29AbjdU~1d3Md8h?M_Evqknl$O=BdR~;!_*#H1gf9-_6jjypXlG@{U(D5);rZ|6ee3!HQ&42hcxT~N{_1LOga2X&nHkmLg zF)lS0UAAk871{R*fAk@qA7F*+0p>6|K-8_2i(G-@P+`=)uM)>gNvyazmjbTDGXDUU zYK1)ER9WvHD3CZlViqRy{{Td%6J6I#y&BPJ7THT`acsv#F7sQMkq<4!QLE*+loBgI zdSMnov+k6ti$rg02oZAD0c2L{8i7fhmPo8bQt2^UWu3qz8ZydYMyP^tQe~|jlm7sl zF@FT`eFusAi~19-#PRsc@P4D{Q^rUC0J1&UD;?zP1rOnMT3x zkcAFS%M02^pXiTu^v9+z5qpg7ta<{i#dinhJ;Vd3**p=r#LuYP44vc*Hxo--5y~s7 zp2jGboidV)Xv;yKfcx~aHjx%su+HOL4&_!mj-_A}3^WgL3fiqMBh<%by! z7DUI3tNB#?GI2izfsN|}W>xPSEDsld<8v(E!2I()-^cccOd>2lClL?;+Q$ZH(2IN} zZViw$bg8n+?EIc!00BWO$U9*2>h=%vx7#^~{@`8GYA}&sLIEkDO2ojJSd>!9Nrw@J z&;hF@J5O;J!AGA|bCq#jg-alyq)Lu6EfAN4=9-Qy#-PMSgy|Bk9fSKD_LSlVq(*tK2B|s{a1ymOMWz=W#@@4lNt(qqjG(1MI@dl#`+)>D3 z3Q-b;UJS=MB-6yH+a_*ijB|*01RSu$L2S1ysH6lU#sdOqLjC2q)3?m!?hQ6E5iOCH zu3|98$?jN(fR0UamYk+#Wm5`-Q!Ldt+6tAAh!sj(Re^Cw+RG+Nz-h=-7{GhS08<_> zwDEnXl05$aNoKzfK$eHpdhvci@#zI{zN69fAYRlpsCQ#L(Dk7FBJenV>61Q~Z-xH= z(G(W5-w{~NcEvfGejjfU?%#vK%MvZ$Z?TD2pt@7jv|{Hmhnfe>#5L^~*%1E#FmWKj zj7~T!T`;Dr(5q@N!)HMS#?ZTJ=jveQ`4tK-}4t=z|ecLz}1|==CKfC`njnRI85qD4*m3Uh6SZvcKRf>b7wrE4_*OxdJVzXQBog&0aKKF<4BrqWfz9(T z&nT6RFPfFLdL2Onii(DoKjSDN{eKZX71U*m96=?w7K?o)nB!&`)(UD7YRU|_P~@l$ zzQBNLd_X}S#tB4Kv4|FBxQ=k-g>8e}jd4Z6B^Gmdfm3Wd-4UbKXf-eiZql66T+i{8 zBF}OIj`@I;A#)*j%OALmba(eCgpNoKtEPlS7Rf_>Q|>~U1641sgJd<)$(eg<5pQwC zaNY(0RtbFNBLlDh02ra>AgeB6Z!RMmU%QUz-tTzkh8yxnRxZ}OAdQ7?W|Ri=sLSeR zPEnP{0aC<{#r_1&+j4UV;D$uitB@{UCe^eo29qSuM(0>l5Zcsvs_fP!_bXVpg^fhl z7N9m6>R;K^sI^^2ew9XI!^0{z!;yd@CFUd+GQqf23p%(W0}b*F%OzUBx&o0sLfN;% z4~fiCRt18-pl=&aB^dP5lP!-F1!%E@=H@(v$M8b&OMGuq;{%4J?GkY+>Tjs(tW5-X z%(5&!OTc3XP@SwrQz3|DWN#`|TI=*dIYc7TFevQ?B{IvLM#rZHW_psqhu}f0yvCq; zC75(wQN0t4{$TNWbq=6po@226;`9mVZVzd2+i()(RILlcI1ukXu`XdwvF(6rqrJ@W zN3rRwZ9TI3PXx9z<1fq!6;R=7J1uo^s)esW&0osU4UvYRAvF zWOJ|{h^{q5?qX`TyO@B(FeRlDV{76BO0(dmmQH5rcMN@L=_g>7*2#1dR+9z zEn0!5F5C%dDPoAA^1uPa4c`3-ozmFD;CqqA@}jzXP%6XdBj2HbmJGCG+FPhn#{?9l za~dIUbg_lau)2(hFaYSAgQ7PhyTiBxAQygK z;1ngD%trGL;>MoygM_*mOBlUx+FT>#l!C77#2PJZ;bmBNh`k}UE4RVs17%NPfTE;; zcd+{*y(+tDgj21Ms&pzL7Kam1+#Ru&#QGr1_ikTXFDStl&^0K63~Cu<3Y1%|)LT{GFl!%ZZV^07;`)f; zCHxVIcCQ;Fg8u+fT@eQ6z9TmL#PrJL4?*nz0B~1CsTYfWmO#L$@P7t44yp^c3WA-M zui_I`oRX#cnPqTcfe+CG+dfbs^^^IaQC7bH0O4zU{SW^D1!)m}$z!Qd1R+e!kxGIT z>4qUJ+_Yt_4GmnXHp=;aW^8*aPr(oi@?Y{EhGZ!DOEN5JrjUh_7NM1kt&Pmy*sGrreidVOez>k3pdKZY=ani5#7ZKMp(t# zsKuE}p5b``LhQkqwD*hNI?kVJjq)XpTnWJ#2sX2f&HQgl0QMZ*2qe7NfVO&C`-7HT z?3C@{0Cwqt&iqVlRrM`sM5k!EFTzT6n^~l(Q1++nhYe1z4~S++AfPIKRn)ey`4-BL zih%rLRH6498;n(6XUn0HRP7Aa?{9s#iFtR|&4vIfq|_ z%C=l+yp`eyc6_O9#*=*nA1J7~t<0J+8-24#>xKx`*m#h9_k$cg9+$hZ1%oq%u<}b2*kLptgvoI2mBp9j}?1e2#Qo>M6>RcT- zmTx%4z%4<3#4A{~B{H(NE08z2`@;cBVSF(JC2Gd*1e-SUvba=b%OJ)jM8pdMJ(B7J zfF(q&H;zm|#A>b7*Q?KW2M`bt1xj*U)TagYFERJQo(}GGzi8n8QMRc2l&!(Wy#3%Gra{s`rH6-w4u$asy-v(ufv*4IM}VvFP$+T?im)I5{Mwo7_RsQVSZM*Wr~y@q6G!H$V?^QZLbP)KzlXv~tzZ@jONLGn%KpO-1O~D^3~W$GoQ&sjw>wF-ugg zDhZR#FsYqV#PNS-E05-GP{&X{Ur;MY;KteP*ucXzIEA9W%(^Fa+5Jk@>{%9I&}zwD zsgtq+x37QhQo&iQ{{XlS&04E~y~v;3GYy^4fbcElN5j`g_bb`GmHo#Xy1ajK<}{T> ze>0TSb^hfdj|ei9oqNjVPWfE4S&c=2ssMZHJq~(fWmW8dQ=t0FOfld~V9~@LV;X3e zy01)PX00>3k7Y0m2>Y%+<7H}bvRYNAR|4KduHw}X*_H~qIJm<=ab!Yssdy~F8*$~m z<-hcTDpq!XQmoiuv-*K^YT}a+tbuo$l>-ODDFAA&?20esq&;Tt>iK&@b*a6sP~glv zS8QBPAk0>tgDTt?WfIMYwj&bpbj5>J&nz>6@Pu-s+iVxf^29-fb9_SvEgcgDpx+f9 zgjKAyiyX0-Q_I?88OEsnz-BdrKNG;tU&{feg_)*P2J{~zcn!j zYaPoR3*m;xNsS`5opY70Ea1`7rZ+5qt{h)KG+ZoM>Amqwug zv4IO^N%922wfCY7ucF+}*!)XHh53pk53;3BLFX)ZSHhJZo>-A#eM+?6YyH4Au^Z`` zR92>gkF*JGreEoUS~CFU`ze8cP6i0oj=z}Em1lFv`G%sZqSH_L@f{WU{{W~f&m6&V zP8TLi?1abUBbwvc^#1_3Xs`M66t$vZEee7dQU>#W(PTeI`i(4wb8qSgLmv%59HE`p z`iBBN%Vq)7$M+O*iR}L1(PgfIB0v-oC`BL=TyYk$F&T{@R9Y$>L-Jd3(Y4i|sjwL` z{{ZnZxti5~657VSwfL2SG2{J2TgenDhgG?;gr}w!S%%H{{@{93#s2`f4ByUc`HLpS zT^9UiR_EvarR(aq_Yqa{f7QzXJO#hp5#}ti241Ob37%N<`MM1-Bb@`b$f26m6#0H<}*!43;}Nb7#WA!)uUEQNjQTe;r7N>YYXXB?n(PoUeA!EsF6Pz{bHoAw5!#$ZoZI#3-?QRJhNY!WAu4 zHo4ccFg!xuQmr)v$*AksR&#G` z0)%uG=}Sp_iZ7~*SVy!0RVc$~mLbA78c2oKKl5a!SynWEiBQE`$Mi&9Bh|UCL0v~^ zd}1?4tCN!I++R$gUnnqoKG0^TNYJ{xq@zc|O;jC^_cAEC?fuNVFEtG#@;He@UR21} z(nhKetOcLIgCY1>7gfF~{KAa4<^8~_eg6QmIU8Bh{^4s#*=QduK@ith4p99Nc4_#T zN{WFc_bh(Fi#q$*B?)R8DHr4P5|{x0t02Eea(L)=5+!HUk{^gAOzwDKgx5)ujzvJd)%lH1!(tpd$afwlq*8Pye zgc@N5bsA{;2(@5_{{Zm`vfo zw}~Z~>&&sU*qn;)p~|f45w`8xC3B?Yobsh~kOy8Aq-e-S5{d92?Y$luMNob&2rYHW zB3Na~@!I);n8sbf5yKnk_N+9e!fFCVIiRhGqeAE+kB z-kFO#mfHjX;xO21Are$qqTDy-H2UL;bQRb_XEN1rjqXvE(7O3+%e0Zllhw1pD8p{`ASN!+}v?) zTd{{3aJo&nNpaD*4XN4}a5PW78jnh%lMVPTBI9%fGVD5{FF>7_`i)IK8UFxrvt11l zb^-GL03=vYzcAc~hU|hczAh*>byH{aNP3K1+b1el3%=JLP((Ul?fx_7_=Y2StGGs} z<$a?JMNGSwhq%F49VV3%Ddr7A-qc`wF|Bn|5iU^m05rRpCVWIsY4I+Ivey#aw+gwm zqBKQ8*McLp_cBE*aU|O}Yj}p^FKC*KlBHb9Zi!eW;w`aU3yp`?WM$rd~*tfV18&bW`Fe>zHt;Z=_ntW7 zW1zTkYkv~NK_%6d-9TyX6DpCoD=&8$7^znfE;*K0G{oHT;lcVC@Um9QexM8=ak!4+ zY!wdU|m2+(9A*imIy^B5!82e9b%24 zp^49AKM?-_aGOuh9$xA?qY{fmL@h`ffW>_bGoK~Q%%QxnEG;O1k{4#Tf=r&v59$NS z_^CsexW19|!5u$z7cDndI3scSpsK}?@sP=K4gPs(s8*uQ{!$KrJApaJu(+0*{US1g zvjH#9p;LZ<)TwQRR2f#XSx*aNghgesEx_&tAX%uArVJ(KC6s2=M+vx%wKp9b2Cg(~ z44?RDn*RXtjG9QE@|46~#k@=ym5WzoR}d+<8XQ851q$Y>Rn=(OF8dos)eg_NT7o4i z*K+r%*zQo-2BAFRmhmo|mKe&%W(?VK$|^P8&Wv-4VIff6rYz1n;v}S?Gk>YEgtwo; zG^nSloe$PIT)pUvWeo^9_$LZBmBZ}dtKeEtf>qH9HTOU)!ScYj`DVKL$*Aq-7P8*# z;Q*}XOz&|`Y{g^IVKWVdAjk`F$FO>3@X^*7&-60%EpQlV@fB<_1DIClNZ2k%f+R~* zs6G{<5WjO!<33u1!E0pN1Y94(9Zf?qF;GGm^lq>?j8zOVxV@HK6&Zd%xrFoVZ~#}e z{{VFkoGr-|OA&iOd{1K6d3_BF2G?yFniq(uP)_opaI2Qx`HQ$Vs^ya?p=(eDAQ~Y){{S;4ODgj6 z(D6G5-Zu&tw2j;aO!sHIHqv|%wY1T~jxXg-UxO0-t2=0y2R|!EoH)$5!hBRMYEEiL zm^f$n7=~26+)+3C%{9LqDl?N&wM`z$z?ZVHtd87$i0y$#1Mo%G_k?xrR!pPZcMZUS z;U+STbnXbC5E6@qz7rRHO~PX@5fx%lsH;#K5NB(z=#QgK0sEG+Gm10pjIm3I)pK!^ z1i65RD=B0PltRuj!zP=&ga7~lIR5~^*Z%;G=-^D%b{7n-!ZUcSOfxvSX{Qh^v7mIu zU6y8Lsy*dP47NmUc0|-ccAV5PQXZLm64h-*PzZ$kpcvuipl_C9INvhua5BoRLcp|j zsQW(=3v!sW`Ga@)V!FP=a@8z6k>JB{_&woWm+=h7UJndK%eH2lP&Vw$BEp&@(|%?9 zf$pPW#8OjM5R}EZMjUPNIN>Z|Th&YP`idhj#90i7v@A2PZ}$Nz>lWFg)N|40!ydR? zl@!8UQA=SW79VOS_n?J?ThW9Cc6UTGL%3P|Sb)WOR2h-0s0)P@O}!Mlnh5OzHpmQj z?k`Jq?gShc7AT0Vx3QK7;3UJXTc##0m)sbc8r-=x;8!hkQpVPLvTq|?xe*Y%_KcJf z26<`ka;8;`Ikm>n<`&{mKmiDb1z2-TSJbE%5V*z$ARHN-G@aQHaGk{P{iBJDP1`dZ zEOyEV1=Ezg-D{-+?JQp4YU^DvXh(iyWJT9;9GMXKULZA+SZIDC!ZGJQlGIm} zO~AjW)PWoMDV2-4)iR1N@I}Crz-RQJ!i<-ZfPb)mFtbEYRQ{P-AGn~`YSb`fc+4HC zPkh3Jl;-86-V8TVmR!oL$|@;}h1JB`%^J+iCin+X(wjAzoW}8G`MGo;7N`-R^urH$ zvZA|I*g;TSFxW&STdA5SZI;&Bfo>gJfBwjQFcvUl6+p@w^u~r(HLjx_%)_l z%9?I|@q)%lUX2c-PHu6N9Jg==E71_yDvNU`EUF^$<$x;0zNJ#@D|18;+#*rYGoszY zeSM<9uvAqp_+@i%&6sMk6M;wpbi9N)vzXad`Gl~bRlA^x#Ov5gwltQRX5|p7yiFf? z0D$5OR#Dk2%yX%v)eThR3cv2=S~G&h_h9K?!}SD?KM(35cSjf|F6~p)1;5o4tJ}d) z_UGn5TZROn<5_@Me$mWzGe#bIf-=GHF?+6=n6%`VBrdN#N^2v9yGNPY|vg_$` zxH0nwhs8)C-a3Vu+t^|@0gjj|K=J+Hm81Nvl+$MbKojUfK1S;4U*o+>X5!!D0 zilzkuWwtzTq8*34J#qtT{lpt;{45xdFeM`pYP8@Rc@w?kN4}f>JNQnJW1cIq)N`5ECbPOqk%?2Tw$(4*vj%!$a0z z>Me~WF5rUI>ncUmJgw#!SSF&^m*haxdTP)<{!i*RgVZ?aDb=Pe2j&&1>;7>$f9dfq z{{X}B1GM*Y(6%b1wrCq#Fp*-UpbR|`PTzb%)*>}90eZ}Kp{ZQcP5%JFDW$bHSNz2- zPykRtufE=pKe)hc)m?s~JY?E1RN08-dYPNMeWf}_yPB~o02o-v*PH^CMH`tZfG zUssoPhlyQR$f3~4-pBs{uR{Y^B68|iX3%uA4aM#(Qiq}y=B8*MRpphevlGUU1yNna zRL3oRY6pfb85mzYm?||JZ)`(cA~sS$T!`GkrVkRdWE#E9VN0%HX#Jw8K6schQF;sb zhH^7lMT0G&Rqi$z9qu6I@s|+18Jfr7ohb|&OL|zHJPW6PWbhv}#}x=Q1bJ8e%2RS= zVIO3Op=$fH`j%Fo8FS%^-?m82Uc9z=io-C0m{}?WC@T_(2{6X=SS59}SNy5KgQ+aC z2Wr1i0>DE(tBUXM+C!j$nilxi+Tokpz zTvHevykxBMLH8Hmq<)YEreOKr7l>Zvfwq0jf7!D@dF_io$bjqKw5gK--}4I7Yz9~7 zobj?AWDoX%o4i&b{W7Kp3)kaCFz#I&U6rd6rY+!rRff#%N^OG3Ns zF}u*)1>#=eAfi+bX4O~G0%4W*Y`eBNb-~FadzxCmrh2c-(mN^-AU-*_Yb>h-{ZSqW|W%mO*VwH;h#v5;hmK2cI z+EoU-LBzG#@wslG9p4j&^CDQX>>mK80HkQTge#0)&B!BioD$Mr zB~!VIZGo(?a8nq`!y{0+biNn>Ew|R$g2u_G5a}RFa|p!s2h?O;2Nb$p!~X!={{Zqk z^avmeo1nEgL;nD0G3U{`#^xOT2lEl!<6!&`?lsW759$I7zahUV91a^*Maph25MTj} zGhE>{XXfP*#6@LFgA%h3MNHqVdJMSwFk$F=T)A*%)xt8+QrecdsdDA|*pzBAUIL!X z``@e60zQ?Cnnac!V_Yy;$M2Tyz0@iI>_j#4kY67omLYxf4o}#DnGd`DpbQ_(Hi{+n zaZ%?0{YqGzC=tW}FEt0@fol#;gpT*xZ{U&-Vp||>k1kcCvLc<=$98_NUf%-nbhAL2A zw=*AMo6p769T-ZG!h$10k7C>h?O+@#5Vj^ZGQ8b=MK}-7^)I)=AJxa19-MyaWkP$2 zd&N<0(a{GmLg`4FFkrb?n|#8CDm2spjwJ?YK#Ur#5f3Z?&>!M3Hb}L#0uBvEc`8#d zXD|seW>OOic>e&(pZ-Cg{n>`)&SJ|pK*UM^03*2X{B+nmSh7EKcHFYVL?NIC28bE- zgxDs@T+C7f?-}>rmxdr}Sva70zRU*xxk|U>sa~JLMoJBd=}!lxN@b-=fr7Zf0e*^= z5>yB;MI=Hb25}wAl`2%IVJkA8jST+)rPQcK;xe%+6AW+r@#z@)E+ShB?lm~|fn$`o zh(^#zO+!(_n}*{D6aG&gqr`Sc(8K<$LXd|+7T|^9FEoZUr?S8b2ieMCA{1(?<+FBQ zb{&Vo8gp-WA&of-h1QT(1-gJax6Mn!-xmv#4-6V=(Oyodgd3viU3=L9n-R1izBW37 zSgFE4%%mGi)&BstQGK+;Z|GO*Vj>n5F`zxF99m1Pwlsmh)XWlIhnKW5T;f90D>KKs zh#_qV0bpR5!_T8%Pt5-Sl|)!6?nO!hB(0 z1;sMlJ1nvw%Wfj4K*Mn6ThIpO%|aw~DkRKc!Ge%w7aIYc znSrRm;sKERA~us9GHWL~vqUrl*^c1%ZgF0D&_uOq#I=GT1TEtb5~=}f1g46Mw;j!) zq7PlHcQt$e0L<6;ARdiS-~MQS@7ezVGs9VUdnV$d7UrW4u7nwxc){b!SFKQ>qRua zlZ}7J%xK5Vp?CA6{{YvI3jCx)D#guH#GK^#CceqM0a2QVsLk5N@Xr$`B795`E@y!f zbbuX^9g`IqZ1l~$h*TFWLE5GOeB837^Ce*ig%qRp5XvO^AWnYvE5mFc9N>Va{{W-X zSwV$N;t7ZRn1YA5pcM$SNHHmRmAJzQlE`ieN@sJJdR(k9M>x_exEX9p^mQGuUIK40 zOh?*MxpseucQ>b7EjqGvemIpi+QI_{JuXv8qC20n{(q75K7lqSul))C08f+rtN#FR z`dz|0gf|9WlRxWsIsX8|^rB`4A^rMyIY&va%r?71HCRU=jb>tsh4Yv!5iCii!o_cK zE}~O)I*|>MiFVw-LZA|{E6gAuprIi(Ln!2B26;H1=}lRvXBOpoAv^QvdjzM#R6Gn0 zAdOn5gO#_01iJQu3?9>X3{DYp^q-}g8<_DF*(&a)I#0qnE9hn1-tzB%jJp{pDSuy~ zn)C2WwG>)|XNl1ZGcFc7f(4O1dICXSLy$+&1^8OJUJq0CZc+rALUCXbi#P=#i-;0b=o^mDZ{ZYK! zsNU`XMTDkq2K@$LT$dc$qbh*;WqbDGz85eYd@)_0-V$oO;9jA)7(Nn~N)UDoa0(~WM zfp0>~RR~c{R-n3Y%z&!BLN|96gB=zIYCn?BhxG&+%zVH%1cDE=J)n@T*`DTv9y8km z*AoWtONQ+%)%!yNGXmu~gj^)Mm@X1|8AFzMC8nrbD9buy6Q?8!Vg-=R$m%0xc8@))aAqz_=4|tBDW{(x?NH{8koO; zm7%KFqv8ueGMZR_Kj9Lf(rkg~)j6BJ{{ZLz028=inV1r@D?|+c0Op^W{{ZrSN(9mt zGUcx{BaHt5;?MZk_&WIIXZ!}(M`YD4vypQF!e&*8OEXk8Tn~L16i7x973~1V!R9p# z0t$p6H7FHq%eedsn&`O12w-b4e8LBKmBmBB2h=-9$t{D_6?Ver;QN-c6IC$egKL;v zF*1oWZeuM)MyxR?U*Rg8z{6P97MR82GBgaqgmg!U>TUBfq-l)4buRJwn6_pnSJW-f z>(LJZ4CRqm`$D^wZ}%E`WyZ8@jnuHxD+`JaSSAln2|xl%p`XmpZf2o3$6kxdD@gw2 z@x##9v>h9gq+xY$K^X!H?2Nlp|kIWQ%>BhY1TqWi~}hYYcsjL?=w7>3b0j#LuD z;%Xa$Zq>JJz>YQMrey)V%&Dov1AAFTM3rL^_f`sNelA*rEq*5~;w<8n$E~y9{(ts6 z^elN{A3)^)0QaHo??ZD)Lvojc5ZeR)00#d6@%?yi6KT}e5tS)OFiXNxHtR96u;d#O zHb|y6{={L>!FCtaRA&;qWhf0?OrjGkRY`nB-bqg=K2U78GneSYSlmV`3f5Sj;K8V* zzb!uW!7@1%1}y`No>x86m}L5tUVf15KBoIVm>&>9K&ft2 zIe{-BGZiqg5`rKh23c8a>JZ1dsp_61rXd}Bs0R>=&<@(vqX0vNvaeFde++!znMUdX zugZC^Sv*jxitD>vZL+HoRZt;SGNf}u5&XiA^E=D|Z%}xFNB2It4iWzVjK3lNXa0_6vy|J_p$(t;W&Z&ALvM2p&3y>pG=noQ_%r_ikL8nT zRRSBFFw{FEq6XX7&B8mVO=v75j^z|*j5yGMYfh!vE)q^rH7ih5%1@2)oeZS`-kY4r zz9?ppPeV`CEC?qN>i5E>8H8Nq8<+(nw!?^lf)&LdGfBrL0`TZ)iZ%4$KMrzGVbBl?+|lWZK=^C?tA z@e?dWJGjp+gbYBPF(Q|8yZ$B+tGIZ9h+3CPh!8quEmT%}Ofy-DP>?}#&Bgj7t5^%v zp&)|hQt1j6H5Zv~jm5_m6t7hCIP_LMS2Oaz=l=kAxvXaFCeuVW8J&ttm*O$*C9^(d zJ$`4xf8FQ&AO8RcKXx91aGT+;LH_{6KRAmqgyoC|Gh!A43Lz9|sp0&wBVsT#xnoAZ z_XDy6$#H1xaTB(AGKScg+(@(WnLdFn>*`9F?V=1O0VHm93_I(Rqt_s|~ z(xVLU$275am7~xKdok4NZi!^o_JmU6HAVQ$4oWv{O^UjYRQ~`H<0y%mi^GT`{i4_V zdRQOYf7Qi;@bfECl~?7tm_VQvD54B(F&-6ec_X{AYJ)GMvT(*+_mZJbdz9gW&C8I6 z&^vuPa?9fJDD^3xf!!VB2QWJ7Xo#{L&{`1EcwiMwq@oMDT)YrUYLew~C}&LaVDOZR zC<3(%2{8{6!56&3L~AptdI{i$VBoMrUDI0#9@nqDCasqf9iN2f6`NFxtdG=FiYg+QrA{mV8mVw7_!&WWc+-_ey!!&Gp%O{7%);q^mv1pA8pN`4tppR^a{&76Xf>u4h#Hm;kWVx*x<+Li7Y>T%pTM z*Js3{2p!o1z<}K_n<9`Nikb9USs=qOPt?vM#I)`v8J<^Ah+^|Da9(Aw?gpdQS}44v zu1f+HJMK$@b)_V-k<=FP3z@-FPy~3Gbu!`#!Uhv}qp~o{e5r#>s%ld3#|^NKV(O|| zJ(CA)PjjG%;yv&%@GYSP4&^ndgbo0oY%8WVZ8V(41!YtN;^A8txg)9pp%H?yVYpS1 z6lFz(1XRH(exO_P3^1`|#*oYO{{WBFH}N<3a`i;BtC$v@ zEQY#ft2kiUW4u2yw`w}Fli`g?pOjmC!-}JTl>sP5`LD78X}l#D@Wu#CS_x%5E2$Ny z6SMact83O|ood~gjt9_Vc|I5iKXNx9`(h(tisSPSM12Z+rMjUsbjQil&GMa=0KG2u<9> zW%D>$kK!U++NbE4vZa=XGj;PGi3@3#6c*kIng0NPsitx0>mU4W)!{{Z84AETyg(Yg*JKL!5)kKv-s)6=sZ9$B zJ6&RWSi4!dEqj z-NX22arR&;i*zFPb?duAwjnxK+KI#kP#>CQV(C;S{9KJJR$;J+DVhLn_G0IvmRF7( zLKYjlzYMdO)jWBmfJFto%jt-?6xacXFD_cHTB})NOZOW~J{b8SN|%v_zcADxyah$o z0@7{saO8%W`rzd`B^!%T(Et!@vs$RC06x$MM75GyP19sYi|9h_NB;meQU0WRzNhyN z_u!QO0H!wo017|646^?K0t`k0LV<|C`V#(8R%BK@X6$2x;fy!ag+5|MSEfm1S#sF; zOU4hTFG<#ciIKl*SP(=vJ)jy`Qr*i)VZXMPsn#GOhF^RXklym{j~BP4#Wu3TL^ygG zqCT5aiAP?f{{W@muXoX!!+-gQ{l0(ve}K&qYCeYM=yCr5nEwDqJfhhRkT*DH0&IIu zeelu#Kk|C?KqxT;sGuS%q5?tES^of+2`p@3mbpzx?y1kIbxp;BEbdKU`zK<&S88%;f6)( zv67E?81gHR@c<|a;~!+Hr28B>NzKM7;uh}yi)lS!jY|)3B`&`tdRN>Y z=|HrU%dJjYW&I$d2j!LbdT+#*4?{bzF^neIOYIF>5_p3Fj0~BP?}155dqb4bDD=N9 zHR&3R)c*j&iT?mAxcxR^8LT(|0GKbi`~Lv(;qRiu+AFB)9-F5G-~RwB(d>w{Od!B& z3yuirMQ^|SzwGq}b5>u_XqLRJ1fr;nq<|hz4Op&$P??iR+5Z5Z&$~>^6|bby1Izeg zd5fX?xKSV|`_d0`ypa{t!5mlliFLkU${=i0C&?F9Be=A%aaJ8)eU8>UrZQSS<``Uyz5 z_yph`$^OZ_?oeOhV5zj?YaPPS6@@xp*qcXe*X;?gCbe++d4t0GAJ@{|oI^^Ufd1tbAZ!>&Ord?J4yX0gpCd()6I8iGuOs z*57C#Jq5N)-W%|EXmjjCmlLHA?r<}+_z9y6xEGexBm{si0I7<>YAFGPq|I~O&oVA> z9gHq=VFHY@D!+Mz1N<}p0Bfnt;F{p#KBxVjKgi;L((Y(_EU@%gA;0|7XSMr3{B}OS zRK!gYaW?eb4kqlpM!0U6sq&>8{-fUIq6b-G+8}k4P2?bawR;TQ0UywnmXuaR0ACaP zOVLm?D>DdmLX@4wh78f|1|KK+f8Xj}UQnY`-Z|GQ=$3TC;j{3~XSu^K2qhF|vVTV822+}(>_<$TSkOeos7H;zzSb*ljOT~^AvK_^X zlNe}r1+%a%O;dJt1JPNFC!@NRX`eJ|2Ie-_Kcq6doFD6ma}64ZaCB5U6t%w#^r%CTR8IjPeB04Pl%*x&vo#J!YP*o_;$g=Va${ZkH~BNaLXcMRViGb_7a z7jpL>x>HukZ|*a>svQK36IPh9?}ni2qQrM9D(X6h3Je5;RaUXwDz=pxJMu>Gwpdb#XfV*0s?~f1Oei3>gZ<5v zg?7~AImN5$BPG8f9H705X3+V7!D1XCO;}LUe$qRAGi-QQ*nzDGIuAtNRme~7iv(?b zqd9)B`W;1?RuNR`=s3TRE_%# z{#pr1@X$}dQDBanl=UgtIVDSO6RpHV~F3rpO?8YEf+ippwQ6n+aHLQ030Dyf5G?al+q3u5kW_q#n>;C{l zsJVuoh{oWWy+7>n{zl1fl{NI)oJY`Ik%zOEN=uh6TNl$lXXd|W{{WBj6If=DW^$AQ zUP;bp>6h{qp2fkzd_rcY%le=59L7g;IP9(_iA5)QhcdM(N%#ow{D0+j>Fu0mpFWLK zOgAm&1gS|gdV?{{4!0>C%+Hh<#d;@Zz2mff(kuNn7ygb~@b(Pe_Lc#}_CmTJ2$wgL zM%4HJ0CI=&zs!G${{Xb4VacXdiXK<{hsbe%WuiByn*3D8JQ%_Htl=2v1M>loMQ8F$ z0>(HAH}{cYkM%X2kX56EI6ib6wyW^On3RMi+)7|hUEF6=E6sd27guN_K+hn37YN1v z?8$!MqEKkof7D4R;#BkWpWM`Y!2V;2Dx85gUpGsD5G-5G&1TUs^f^KSET|gsQO1m_ zUt*2M8w}Nb(p&1fwcq82i1!Uk$rc%ThK=PC3hxJ<%RJY1mP}f;+d@~!eX3E??UWfb z@o;A$FM=wEJ^>VPie19iDt5|RsR(uD@<{XgJ!HkX9c6j-oJh}r)DNo2BIxqdwa ztJ=;n<~oGt8jCQ*lUR{&+(hYq5iR|YO((M`mHr=^{h$6kJ?z)exMMR7dPd2&qk`!$ zHEl*>g(d*~!8&|phuMeHCsb$Ni_U*DwLD;|>+gUS&S5m&F-gQ%|M%fdMs zd6;0lYU&g}i3+Hv{&h4<^ZuYu=Ux7yx)@^$X4)=t{$PskG5w{x;0yYM1IJ+gAt)&S z0Jd43_l09NVlANnC9+J6-2*WC7SH%Paj-#zC!^54V5^m`7MIA#b9^%5{{Xv*alz;s zjL@9J{{SAPN|h*-M8oYiBbOF^9r_KxdpUl|=OQmrUXP@De?(BGG=+Sz4=>vT+J0O1 zfB8ROLV(A(M~G~TXQ72}MF?F?GE2)3lSo+HG8DJm5@Aw%EVwgzRH8u141A|^S;O1Y z+^`VPEF!AmckBNEXQ{W*H#PT4igD8h^8|E~r@1rS7pjzfH|UGioP!ehFvucVS$)L+ z0E|NS_laypw=l6P+G^=OW6pe_M<11s3ShRHw+YtBgUt6O#=!99g2fPsvkxKt%zi}N zWc*438zwgRiLyC|lYkWTvrwOS#*AuEB*nAZZNB8%Bj3=t++{I^Ps9HGCi97*Ifj`( z`a%zqeh=)!MCUGWmxgl6^Z1V8SOq=EGG?H7#3i`xftx4C`i?4--xkik)OpA4l{Hu8 z7JoSZ0GSzS<_ga`f+o_YlAfYW0x=gBL^i{qA}iiYTi#RDrc|?;`$wY7sLnLXB4wTc zH9hiA11^8fh&hW5VI9GU?1Kt8aJ)lP@qqz9O!mK1Es8Bo#les7jUvLXaKPNsH-8fU01i8z z?IHM&ul>HgJ@IOO??L%MdqUw?sG8h7#3`K1@jnwUGSV*jm8dr(DR6j?yC}`Z7nyc4 z$`soZztR=o>k{UDhw&S+_O$W()>!rI1V+pEFqspqOXuHzF%)girj;km^RiD)gMtj>*5ltK0l-o&*G6&1@nr& zQ&qtOwWcOq1!wL^uI)zK^iuI9XEC1@I2Z%J;!XsS0RpMfQ-U4G5Y{?jxqA*Adstte zsc^7#vU$J1aa^e;ktpHlg8Q`T!evpVre<^f!PyV_r?yo40 zulGt=_@uZL)wZLHW_qo3RN(qQXRL;SdYXlXSKZ3n{Md_ij%^6p1|EkKNacgKk%44U zO4TPCJKHT++?4+SWy|5AYl(P|M0XV|CoqQR;Qs*f8N9#ze~s#E6yj<_iON{NOu^8p zze2`{lKWEN#e>mip{89&9sEYZcFGP1iU9ic{{V&8rGkqj{K>>cz2fws$fn_3dIy9b z3@^m9nO@0BXe`6ISjITGg*jmz!`YS1Ecrz9a;0E^RK!jtGU{Zw{V*IM7Thb@2+!^( z52awqTwTN33qd201=i~@R!6qB`NL*-_#0W*V^M% zMw4i>Nwmqw&LF*!qk?|)TAF*O8KOHwasAnoDige>-OZNEY9)%eh!+4%7Zx>`3J0}$ zgMtsb{pwL##@86)pouF@mRXl|re}f?lsCTXln5ciMR67sdb2~(rMZ~J^2`wn?=q&Y zCB@wS$*-b0jW0!^q8vLX1RNupMS@&=G+|M4vB-`Tv2{=ssN!*pmOQhGdYVIj`P1@0 zv;P3c_(!0c!Wxb`~9)3T; z{{VZaE)IU3J=2C@z2~*{=x@eY>o@Ge=nhFIUtsL4A%%w{*za<*y0Qjc57L6*V7vbb#Y}c5OA7B zh_M~V6)oLNWA@M-vFGn>&2~QO5nMjZXon|E8xxPCoGJq_hyMVXKjC(N;-ixR(;dZ6 z7ySPKU(!ur%_j(KnzGncZB@!SfK(-((F=wt+-C#XmNfIIe&$!8`;YE_4@V?%=o6D1 zPa`0F!JyJNb`d;x-~RxCzx%NjOUgNc?+mHG-egJ+q6xO(6>Lj%%hsbpoAgIyY208Y z>Uky&&mIlSOqfjA~8xU!^N_;Z6DHCWD5$_FsrvCsFPnn0g z7SCklnliNdtPATC$VLwUv|&csRj3B@g0m*FoKp_wTI6A_`KvV^;S=u4zogHz(*!M9!6Qp z%P?jdu(G*u&<9N+(Db^UL{D$pFoO}K7n#HffzC)L=yU7dziA$AmJ2I%@%!Zsao<@78Nx=0$vgN z1T_W@J|n~b06Kna_J8Duh({4Ef>HqQ{C_C*Yv?sNLuaK7t2EHY4jX7LZB%?IGvR%( zInU-+0}}a*s-y3g)k-|r9_Gg-y7!;PIIV}A#owW1iZ=+5ej#I9xbaiP^qxPY@yT9Q z2QFjQET(Cp?*@icY!|aV*v7xaB#$9-{UaMO)t{h=>+d5kA9#jc*H*MZU zd&=mIK*`*$8B`8%P<0hcVP7u(W6njBif%X>aM*S`|k0C;k;E5t9ypgrmDeMimp z9>2u1{{WG%{YK6h=?|%&P&|KA4Sti$^o^VPPe0Omev|(Ikq*P^0jPO@HUbl%MAmEb z02~L*jLVbvW@t{yRyexaoU_56+%p&sKGSLZ;=g)w&K{7>wP%I(JIo;iNX20g;%CkW z`;#(v!-EhD-f-Lb^Nt~&4cO5og#)ijSR)6y!~C0Z%WV#nVf{Rl&-vtbsa z!#GW*h7n!h;ZsNDv+>X+M?k8$+1dAEwd%cC001_^7H<5;ZoXw}wyTHcRac2! zs@pN8yncyEFI_=v!uEosgE*}HvfmezOZ=PmsnlGcv+)wKC5LtM%)ImIZ)Q`sr0%Id zMghSLBLV5L>2xLfALjZi2(teG2sb#IAl!B7Z5}_xpNzvq)R(_W=wSGp{{ZLD&3@1P z6Of+5J)dc>4ETrCm(;_`2CvE-?hmixJpfH%4NcEp-)}>J^(`t_pjWAH2BN50t?|pkuE2Jo)&o6bh5gz z>1B0@)|p)y?PW5UFqV+$o4%jO^!9@l2mMUE2BaCm+L6SS#KGS2hy*wfq(`^`5^T-kx4??|5dX|CcsZ7c+1rQ#FDpFLhMS6)V(8XUQ ztV^P7`$LF*12nmb0^n`zN?p}b*1|683 z&ogO+Ob%vMxc#C%TK8V6{{WH;r%;UV3?-r9DkRu zqB%pngSXs&+j=)=_?A2#IPpijJ=k_nG`b%_pH3ds@~3C6#FEOD4Sdpx8Yb^)tko2> zygdxR?8_hU5TpyGLdK=JAee+C3HWhElq-tk`9b%kK!zIB)r--r9n8na?H@*3=8eE+ z5kjX8u5&R2UIa;jSfPCJq7^~#+}GY9vs>AqmWowDDuc4(BOSHC?%tFDPW(-^ZX36{ zkx^d*Pm~JXoU)&iAO~7PQd3opM%J9*1=zCXuHsy&Lh=mKvS%?CPuo#<#Xx5^@H=5ME&~2$|-o_=Ioh`&tErrG+HEjDp z7O-yqI{mJ6TgA^}U0{V*o0P0+{vr$_D ztb_4GtJ0@z_pn*MA%tz_@nDWj$v$Oyl=m=)smePh(^-GH_-F1ihTvm{{js7laux)r zmW0SPe{m#Gg z{{WN8>wn{A(-q&4%`4OlkuRXTAR^btoIBIP^Px`mxaMlDHJ9A#Uo*t93i7%GXu3Y zS9cEGQ4lMjL>&O^ib-(VD&uj84LgS2^ZHBr#z?_>OSZgPP`)C#x}2YGwM z_E+^Z_c3SMnGm3<4T6#vo(Dam)dGg;lw#TKl?qg^rdgX_S3=jNrw^}R1hHIJyhB}Vy&qwpW8oFaIYl5W&=`oh2aaR&rof?+@K zJskvQ@X0wM!`srs{>*>mzv^~ZAr0<`YntK4fO4;zP{OZ0I(!Ss~8M{qgx z?d+8JX0Vy{U=Ttz8K{a<@iVki$*x{;%xO7$KtgGiZi46ijK?zN1NFbW-1t6!;7f`-xnZe3Bq;x2IO#H58sWVvLp z!-J@$Em?Ic0ISRa!0P3+ZpSh8bz^2?B~Zv-cTh?ekO79u&vN@JxXctWPnmKD+@SET zu5EcKI^4_}>6pHn`>(KuIquU=rWkYR<3}@t_x%l7X_>k1uH<|xoinlcW zu!uIQ)pInGeN+;`^2JwDyG%v_?(XB8HgxwwM%wP+SHC|G_VsrQq$c4k8_{9u+kN26 z=>D(jXa4|Q!|HC%Ca_QWy-p=Ey$j=;_&pvYRW@O-RlNTIx!3+*@p(VO{{YM@otFq( z%jg0>tTw?AhT5V$3NG9T1Q6*ZzHjPp4@lw;BdAvTc8|lFf0OzV;T@9oH}txOqRd%( zkiuo`{{T>Z82UTm)YIJ(qfbBy(ZjC}Lp(pJ-}Fl;Hc4%FBxT?CPwpI_bNh+*w@p+n z&*g%5_cFKqtYQ-&UI>4;PyYUY^wO>iLgtw<=M9s%f8S|?Z;$ndKhgf6lB0EZUX`vE zD0qH}m-ymD_u>`CBhT5Ni3jlXH1ta-I-A-503WtKiY-ipRnO+8(fuBTZH=2?i@1Jq z2Byi*VJ=#h6XK*RXPPLeKlNi6iK;>k$AsbNE>Qxmzmx~}6DRXcA}59(xN{6BS9IoR zb<7h~#bxi*LK_Mnd43vQ@=Kc&MZsgHVMbfV)_ncZ_@Si1pffD)TBXi z4OBe<{)tU`R&s=PO6}&Rr5}`w;;LrsEY3-`w zXCh!Mf>moLEygKY?JA{5$5#IUQ+PY{lETZVMWDvXQot44#Qq7NwKa$MF#~waA=0N& z<_s{@-a3{gZSVL?moezuHpbGz!1*dw z6o6Vy9|C?fzb!eA+x{!ig7#N_hO^Bd~-iu4zttnVw6%&SG6>)@h z9NMijCcIbp*!p_UO{sG@yhiF1X;DA!pz3|K`aM{|oVcd~V0*n)dN{%!zl|~We^~kv z!S{ML27k=z4heF|{{ZghXa4|AdLD<@V&SKfL&7X|D=lH4u?BwVXrYmQ#KfPO=>sHn zKlJ-!>3*+M@}8EjOatB)2Z(D5#J-BcX*PYm8X)8EAIP7R{V`^K3M>&R_m`}~t|`!t z3gw=WUXP<0O9*;n3iB24YCKKlK}ahd(#yF~YL3+k`BybFMTPd5E)K(kwipBy*|<#? zbkXT=&rVtY0Bf&KGdBB97^)Vkeq`IxlT{LO{{T{K#5O^Lk}G{Rh87X&xkzZIbN>LP zJAUc^0MU=|P8-eBf)Vtr9LJAK@PGLa@k{g)IJP%wwt5p~sHJ831(bnFtm(+e?o_3# zw+PimBXAN2Sp#vdS3;HN;vm9$gj=wz#6hi8X=#NViGzQ|F5+MlL8^L2rgMxT$r50v zf+8;3YNZ`X7%>vMVPq{w7pCe+i$1`p3|pXVPzKiCo-Iv-)8d2*2RwI`@A`aJYK)K}nh=l=6i|2<(;^ za+p7KP(ev|u^p51V#*GxT0i0T$NUvRQ}dH)qtjef?L}9O%JXrb0vO#lWzZOV%zfs5 zXY~5UY6lI?5aL?%nSX=#jwSj@82VH~tsw=#P6LRhfUR6MKxz1mGGZZ$@h+8PdA0yR zss+1>PTZ9M>=TSYUTbMaDnaau`N*^c*8H&J3w^K~{1O0403Mse{Cyn#h}n!xdz__` zyb!dFAuUZUB13PW>(q35Z+_`$xw)}3{{S>Bh}(`y&E|ds41_8%M^KGOy;R47Y`l>= z!3ek+Z-84FA-1#^iWmg36Z{XST+C;Xwx|IBUvkP)#|nI~i34?OCM&(mX-LksZGkDG z70QMSZBEc4!DOVSHc?|5V_N`VpaUp1VZ>9NgGRmuqliu9HY!(faF&hmbO;GxK=&N* z%DopFyG_~W=42BWY+a-Ua0o{rEtoBjyc;f416tZ*18NO-Qq;JAi=HqQL}J-S)@6d? zS|+dBIwSl|0&Obe9JZ(b00{yR*cFtArTQ)=$+~Dmk95?m&>cVE2zq`rH|_qhj3yrb zGJ`VC*>n^F5(vNR=27l`lQb|>a1-(Vr!2)X*GNA8cJfI0}+$lmH(--BV*tm*qEaE*y{bHKPH!gU2kM%C1daC~b z=d}EU+Fqw56p{5ZeVN-Ael9R#kI7A=4If8yUruAk#Bq!cmDMo1;f^gttTOh?#8ona zzF0ETTgfnc52;)n`v?NoE#j|oe z)~qd??%)AVt5Tc9UsuW~qj$wVU( zv_66mg#2b=sa1QFBNQ{gzFL&4dqY)5gUL5@v*U9I@_iy2Nt0{o1mCv=DgM0@PlbB7 z2)zT7PfFkYNRS~q0K(l4g5RhJ1nHmrB>w>5Cuh)r&<8}Vy{4(rxl%f*Uy>>HiVXh% z*X@jd!wr%BnY7UK0+31n0LUl*01TAsSZIpLzCNBAiQHRHaPq`hX~v=Ue&Lmr+=);P zGPMGwGjFAQ2WP^6^^m*xmplwM^ky zl@Q8lV3y11p>7DhLRud2ivbFadG_p!gipqp7qjpEXQ8fyiBr(w9eYUXaY>9559o^z zo&LIpib9fUDGSW2Gngj33{-~7p5gi z12i%`a$*)@q(Z0KWYA^odJsBT5IjPKRt-E{#%YqHF%fHI^v+ejint*tXjOgLPhFQ* zn4*kw(O1p05I2!Qf4I`Dh3k7Mi;m@>pg<4J#OwlqKn|W$?0AKjKSIQ&)+%lKjRLWF z(tS#2k{Eu;P(%&3tf`AELGU|$qMO9Jz{p!Dj#b9mg9TUo_bTAVD{Pmsiior(M0*9tEc$*LemnH~R0cTF4SE8lLEr74or~fLQo4vOf8o2@X)ek7 zBY^Z4#2|$VF5aHlPe>q11Et8jSS?)v?l41P3c;dnG(X4irkq?8QX-Ej$_Rs}Iuk1%4$VCd>L!twk{22)s_CK4L(%QdLh zS|>{uh_4Ecii0NG;EiBxDqEJw?0XDw^$_XMGfT^YrEr^|svxZ1;JA7|xe}@O!SgTN zEg{U~f;bS`my~b)n;}ta>PW5c?HPmB!3U}AMhgm2>JZaGHxyHpEiYUMw72A7^ZCQl zxguSDNU{qS(mR5cT(E&$M-+t7k~uI`SibB7qqo~ri0Q(kik^40oS4b057%(#d<1&lk<~v{6jwyX$Db) zE&j=m{n?+0{WC=W0H@4U7>aH}Yw7sktJU~#R$L)#tub*6fNIU*jTYElML<-Q4Oxgj z>V~b%0rVn`#lUd8{ZgvC%=v~jMNi2F(Xn<)mt*;TC>HZdKGqXQrDMZV#^o{lVN0XK z66&n}%8eyetL(TX%_9OnfxJT_-tv7xjR}lV?6fclbPwDd%Zz539)<`~4pQDgaTy?T zU?tw7p;AtK7g`ib>uLg(s9Tv?b#jfwvg(C51z43kSx{qI#g^X*0+30vHSJ!BkO6jF zMpt`gZZPtRVK0-5n^-}-+!7qx#$Ry2F)2j2ScGU4eegmRYIaIBT(~7Ja3#Xam=`V6 z_5=c&E}G05dZ;W^ERKgp?pclRGDI1qa=VI^^6n?+ev;C(T*5bcBJijwY_|()wJIWv zyaDYjFo>xQ>@UnMO;X@6W&wCEpdBW~aYbl?hxreh55X}10FLD-oTf8a&Jl;>e$xCQ z9`fpMP+=eDEIE4iizHK7aPdUJ6=)PdN{AwA6(O(qa{3=r=qmRUXt4FT%>9{K zl@!y{E98^@&vWqKrf(hp0MBzZ1_o|LsjsKw`i6XeRx;SmwHuXtAqgC}bKq`{-Hihgmxn=OD&C4k+@r3i(mA(LayD1VZi$7_p4HYUZN1_tx@bnA| z5rxKbi8ROjKIJwjeJ!H0r*W2iLKWN}O|(rj5g(zN4A^4v1ylnz%O!>hcr0q9*xL7p z9ZfpdaX73~d1j{O`i+r_fqP|(2lG*CuLPF&ZXq+`hyw!UaTI(XQY%uVy9IQvrfoe& z8pXQ{yXjb&8^R?GYZg{TO2LLV3^N%v%|m-V=mxPbMMWrdJ>>>HVgaTsH)!|~;ujj( zo``NEA$1jfbwCMg&KnxUauKaC90P2)AfB0rWo{{WWdrS<;k;QBFh^muzksHOh^g$bX-Ea{hefT^aXiamwIzCi}f zUU3o}m{J9ejijsr7}q&Cm8DXeaZuDYGg&TaL>h^tV!)!X*EMp(PXxh&YQmjJb$}D}NuVTKzvC>dKNX8cRRH zW;x;&WpgWHn14}iXC=d-$y;(_=mMyFF%+TulB;5xnC)hZn!PoBx@d0PeJIp;nCCiI zNro9|yEKBU=5^|)&@h69E)^4p(y=m=0RI4+mA}&Z64fu4COx4`ixTq|XAyFH&1RTL zZ7y7aq&(_WlbE25OU5MT}~ZI>6pbasJYg>cg;Q6XZh2D?bpaI5;ns_&i*M|+x~ zsa&_Udw~WD(Fha`RK6_pT*Fg-u{{;C;VKcaO;X#47YnLRA>xj4Vg-_lsJ#CGIHeWX zs@T$kmty%?hWa=Wh8lb_>21#^h9!YqsD4?BL}3dcLn+rDI*eEf>?#nNOFzN%2MPT2 z{7f}b)Z5U_4|t4zf9*SoABfC$y(go@Ur)cp*#7_lSE>5Y8Hg5CbA<)eNACmg5U4~- zz{=EHrs7p8x=NGfVfhhI3rp?*wNJDZyHE{#n3KWnGv=5kO|tF~eS{dCu~k*Z%Zk<& zh$?!8m(xrTJ#J?G(@^M}Mu=e}rgL*y{{S1e(2*k@YVG{SOJaT_=_p_Lehk(ddMZcr zJtF)c>TNDhq$20htRwn=RDC}O4@YRz1XV$5Z_$b);zU|SLFFo1(fKfp(oqCjphxB! z4Nau|P+<%YFHcMGp|3&IAHo_k_KTAFm!s2}6*7GpjdG4XD~WJ%JGju_p^&)4*R$po zjscCI&;H@XG$^XoOZ$ppsk`DhUWLqAoKNK)1z-_OLpxEsT8)=T6bBphxf#8V4pyCe z61NtJSEouVqs&6PHYJFB#;9#}Rkc4Bp(s&$b2F0Q(I^r&%fgw|B7jh6AEdi)d|Zn% z9JCLp%Hn_rrjKqTDU4*yFK=EV2szu_PQWa-U#O4<+>BQh6jGlGxOP_U&)P0*Wx7SAvjrB`EqUO!C1q4M-;c~G*=T|Fzllcal!;0ay03Ds31E!X#8z#a zfOw_a+_)wF7(cDlL}2`<}A%1J{JvHS*S6F zz1bOnX{4_WW>b*m2gu90qA~6gR=Sm9+3d%(!P+PIM?}q!h-ma^3#;gr6@yL^rDDNy z^&51_s%|81YcD?1g9UAZ7GCm#Q-lWA-vKh?Q4mpXU1XHY9eRk9EUB&;8(`ci`k6CX zR~cFWVSjMm+Bbop=328^x?}FX?PgyzEX75=V)g_8%-7{F~+G|k+YKX3A}Yreb; zkx&Yt(QwzJe_o$5@Wen&8fA&XKMYO+6{a9V()}X}?i{RP8CGDhO1SdndxBWDL#)i} z%x#8rQy2v??=T3xTOE+HfV7Fy{Y18Ps*DoPF~HUzf<5^%^G;Zb+H8yM#Zg^11*Iob zfd*q|adC>d{=(1}3l2}fL;b`R3qIrcY7eE$k1u8#Bd9kwCW%vzJ@V`TK@pb zh5)jDBR85ozsGNE(1dB|oB5Y9$#}vSH83|)%xWr*jn;h!Gja@Q(#B}2b`hShPIXKM z>G!0gE~kdF+_|Xtui)D(QVQ8$^)E!!s8Q;sEf1$CwSmruu~_|fkfM=Of#xNZ`>8i%9F>!WG6p{Q%$AHn@06^M|iim0CCt5-({6_Ztg|+y?q;*XTq*0F#g1)<6JGN$Ov+T0&$SGOW+F=#4{&G5 zzgUS^8oXR^m_g%w%0hbIdoW z7*e7(0;uS?oH;0`2H*qZHyNIm}~xA{RCNd&lx}5Cn;Dp z1*ia5k&gDs!MUk&{U#VbQO4pj7D8(D@E37N2gSlgHYV6ym?Tf`hqB69^NmPKc`S1%K|5b+*R*GB&U zaA9UC#DVAZnq{r-V-&55Dxh(?}W|4-Q0I&jOUmoUge-OLSAF=#V^w0%iRhk zsV`8NjI3GC6D=qF9@vqL(SdUNe%^=h81poLkKw@qmJAT90}R#w0IS6>=8%2A+%Qg4 zbJHoPA6NJ2(J13KHSry(s?-rJ2tR1tlJRA};7@mKBv)Xv{AGfwiZN6X!RQQ;JvLM|iRR6|$k1$tTOh{22$ z{pO6@(F-#Q(zqB1A5D$ax2ELtEk;lQ0h_i|n|f}@wIzgU*%pne-!Xq83yGqBSz{`= ztU(n6!m$8Tpn!>>yTq?HHpP@urJY^wqwH6b*?pkq@UMbpw2B7A56|9X{{S<#F^{2A?>K)RpZ6y5 zV3#gjxs*W!v|^+#;Qs)pm!y7KKR5eikL8;uPK(&a=P(@R+IKgnPTzF~XwduqOb(^DGA{f>ACe zWoWhM^5>&fXQTH+nQwrC&QEh@h(0%U;}wcPXJyLABQwQs3( zt>WX}E-^*3?W36Dn^;1eFj&v1usV44ifzrDco=xC9NMzXb=6nMdn5b@Q^!Z z{$Z*K8kCeV4q-^09okN50iNIlvsurCW6Zg?p`IvP(42dG5HbwAJp@m zAOSF~dkiZTLzMj=TZW^Hs4Ee9tf$&v(vz46?T(`i#&rn3jV71LDD_D#6^0DPzM3Wn zr0*aZd`#rqQ4F^MYE=z%b1i7zq}7RY!n8bwA#ha312#1wE*X_9?63J2R^9R!E z%TP+3kXW+mdts?LP>UoS!!UDGuBA{XIdLq9BWZt`Rc>et6AQPd^9)zsx`<)Lg`F|t znK+;^2i1vhu(T7|Uaty>r?gdZMPzctgy(#*lpll;fBiqW7Ag}8yKm8D#e^K|1S`~0 zQq85mjv&RWy#U~PC~^>fDkwKE)aGy&{7WjiX#y|$2*}xM79!Zki~$}X7UfjH2rm>y zyep22%LL1&zKibH-Y%q|bSUnk09v)I0m1OA7PQ*#`Hr6qM{@k3tAUYvCBW68##lmi ztg+L|E)YP+Pu(5IUu0NjLQrCAFDIk_0CTo6kD!QOFa{QW%-VSsKzWr;SRJZ+&oUB- z7eV~N#4AeWvbkn|_h-_R4|V&UO&N;`q%NOmfsld2?3VukhJW)V-dl7=ma(=M#Az@4t6kKC(Psc)7yp`zcTb(^22c(N1f`5S(HVx15y*p8s z`^_h#(n9N}FrGJ>y9nI9dMUKD1z>VRK*AE^{_!z?EBcT7bbO>emKUFSv(W612qjc| zgux)yQ~)XsaYYUqm0mK4;s^RzeTYa#5NptHj)=uuAXFdRcK-l@i!!I8Xe9k4V%c|?JCC7&)WWxV<$OaxTL}iY=qL6Ik0FJ(G65oyaVi)=xfkka+)E<&^O< z#3aOJGqc$L00UEO(2o5jR7)Sb=wG1A(Qv?V40<!dSF>Kpvh8lkAohtP8DN z5ENKlURVWJQ*sG6Z_hWA}$jdpE=~Rd{E>@~E0cyd3sL>Q?y_o>;pkIg&s4cLu5~O}#Q>k91AvtOj zPj>Ek&Q5^jBfXI@(eVS_;UMWH^R|bsT2M#h$nfE^aX~+_J|m821doG?j~qL>25mbBz8GVr}=1 z;FPqGWB&k`ev1=tO|YRd{{X(?O<4xIs6M`(+nkG=T{O+kf*b96A>*x9AZm>Wx`=}Fyl85!E_U^3c; zHD>By`VI!Xp`LV6FcX#q)ER1!L^9ksbxJf$LEehY62@xu*Ey9xH!91@blp8T^C<@v3o7CMG1 zVQTy^-EEVwI!1CMZAzkCEgs^#g#;e;7QGQJz9Pg}jLM;;91~c2F5t_Y%j5u#F4eh{ zMjl1Dkn6foBr8k{*X0pKokI*o9mQF>YFuSbq3cg_CE=)QsNlpQ=*tooEPW5~uT(!PF&Owgk2V94kmcPu)!F<_;({L{toT#VL;^N0e90^O5X7$u zB=AF`KW4f1iuvUMb?yif`(Y;m7NFq@Q)YXWag9APijdiO^Bw>$ubPEwO4^EC+n5V8 zwdy|ySYrQnMnd3O}DZ-T`C0POnJl-~2^qPOU$u^tJ;%KvJsf61tg&<`Hr2i-8>4ZvmN==kZy~9idh2GQEV&O~2)%rZaN9!4cgZu5=8wi%G|}+I zWs&0dHT@)OS6+Ak=bi~i7d3#-6YpG$Itsq3;JCx5WWCaqPd5)bzj|=7n_E5O^5-5mIcY>hl z*c**u$fJYzlFZ8L3)^xT(nCW2DKO?6%);|Xxgn%c7zuAST}5Fj#lukFyzUQ}J)5<8 zR1bR#&1z0m^JhKc2JglMn5Z>fNo%AzpQZ&h!!IY%wlP?Y?vrIa~p>K)wG866fE z?y4sW`!)&s9xrwIkm1TEx4-(>Kw94r4;_s@i0}Fogt^I zhELvw5xNc&OfX91it*xE8Lu(!ea|oMc^`5A0P3DE-0=SAgZBZ~+RG#0=l=jUS0AP% zUm>kf_e}h;6R``n{Y!cD18z}mL@k^zF^#K8Uqp6Af}txgGQ_x|8-a#c1dS!VLg^17 zDhEM67{)8MZP>)O@D=e5!2*Lf#5b&}qaq$5@Cx97Vxw@>*lTUzyk1K3VJOv$%l|R zBLL5mX$!x+C>QsFA1 zk)WXJATFdOYm)f5)X_+yp)@?)vY?EkOECqSHo;;?3$pe{I@KA{Vm_;B)Geq70vcY$ zJBkZTXcgPkVb=^2MFLnce-qB(9sdB!+GoW*I;RYz2!_|9;z3(DRJlq*_~`_@A2SJO z<}_-da@Gh9g4DzpEoNK{puF3t+*+xwi^L^ukUG6XHYNu5T+8AYPm-<(JKiF^SeS!^ zEZP;X+;;|1q~5KzhW2#>04s}=9Z$>~iUf*c2p`PAAgA#eP*rqu`(;zbte^aErqsiy z>Q_h9>XF;}mrh>=oJ07i$*0WHd;=>ATB0bX^95Z#p}>Bj0+!Fzw@jEK{E$Gm!7&6F z$zM@`U{%@u+|FUJZ?^pjko4 z%_-PJi)!E)b_2vwRg&;k_g%(`W@?N>)?tSv22%%6d_eyIR1UYq057{!Vq99dnN?Z9 zMXU{&;-Ii~jKHmY+DdWh@oIK|hEW%bs1LMqbb?j2rs>?FM$rpwlmtw+InqEGT7hX* zi0G4yP}Or)7j@3s+yNO@0GQ zn7}ZzE(rdgI1A}&Z+mUKX>o?NyxgI0P;G8OSwi)xn1mHew{J{#-N6D3ycG%t{UceJ z#urE0R#82miq1TW6fN^?tdMlQq$iPDtZ9Ty2;4h37lX`Ts30-R4Fsn6UdOTvz`Jqu zC1fm%1&i`B-b&q5!rolQsN@XS&umd6iVIBK2&tA6?o?36xSBk>9vN2=;_ibiv;k7~ zMhXbX(g5_cNJJEFR2Wh{#wE#8p^GdqA4^gzkJePu#{yft8m*R5w5Y*us$@6~tYOj{ zDh{#zOvkdGg8C?-j za??{2X7aPSlak#h@Wd8q-QhjSdBBFH1Y>udiSq>4%L(H=8AC4KRbFU>BNoI991*B^ z^=Cp$mn^TSxFexeRtkPZ2EbMN@YJX}_QfEw^xC-JL?84;^m|P@{ZI7Bb&}(4juRlg zsDIa661Hx_mRr7^L5EzrVg>x?FHAwZ(bxFykWj3_C^K0G~0V&>&SRBxzH;OuoP()iYbYwlql|gtp7?lA;OG06^ ziqoH+B_z{rbG9nvIkGKfN`R|Yow0iG1>tPFN0X>HqNSjZ6WTTwjK2_Ij;piwWs(&@ zw~`+(#mek^nQb}^RNoJ={6<)#L7jY}()`vh#95VHV=P8kEwnbZml~a%S`gw4q`h8E z)N>MYkJ1lx6dov-Q3f*DyMthj>iBALn~7RNRJ1T^uw9QRGP}l95`c8J45Kh*S!yb@ zG`iF}d?^;5Q1L`j^FTVq3cxyJiEi+&i>7QyHZ7{Xsa$L(=pWI{cq*+3u58q~eJC~_ ziBc2dD$}~0lhMk7-MW-;A(1Qx7b++|g$SeyUfEiJsQHHq8ovzB$vc#Ad0|pfL>GfE z#J2ZbSD^^JBwM$`1-Ont)4~l>lBE>JKw!hrPBZ|-CD#ZG8?OK@i9x=WwrLZeQ3>}_ z-LdMb+a1d*m;uXAFA?JAD_Pfw)(c~J7rA>#LNiP@j3D2(p^{R`_17nu6L1<*T)CQL zy2Ab?bgLVkE;thI*NP^qL>|Pn6{NPnM5%|Hi1;TIa=r3E%x&zfp@B^F+&c9juAWHA zI1cM)gqOlQAb5a|ZVDxJxHud+L2{lSao<F8CaS^A1t% zI>X{ALi|kA22qsm1G!GvuZa*u8;&+MHK%0s{om;iabBFxP+ z0xs>u*ID~7GTMbRO`K*YAgQ;u;vj12+7R>(5!C7_rEhgrsP4`MYTLV%nBb+*OFvSD zVe5E6asK7xr%=0I<;rn%+%*_e8;mb1(Ipc133`K)G;DPiJgZ#D5BD?I2@3~uI0=v zaIT#DVom5!!Xi4=zS?d*F_k|kbbaSNgw-*XzrrK^VmOzID*+?^FwRfTpQvH_{{Xub zjN)T`kZCRvtB=c-Jp4zK>%7Y&)0Dt_vf81+WkF%Rs=lJ7fvVg(aYCVk3;_ypy7KcF ztCm)xNn`JaykDD)LD5J?g^I$Q#H5ZNaUG43vup%4g~T0=aS0K>;d0=#l!x7d8c!sr3pTt)-M3HfFqNBK zB)R4dY2jcqQ|~=^A}u&VZIP2Nv}U|E^X(jau(b^&ct(!map66#XhOd$PMX|*0b1G` zWB&kXHR3t)hjGfF!!-az2praND!P)K%Z3&nnOxOEz^jomIa_Nh}M!DgwHs$eFL^RFEd@gtOu70g+L{w4F^sN7aG6jWt*a*&)zuCq{{WT* zv>(}tC{{^4v74CFXC1ro1=K8NXqL&IXi;+8D%;c`T`4f|0uF!_^yZm-VJNb#bWK8| zwaH%xGawf{%gw|q06DM&l^HpQHIGNb1Sle8eTbg`+J2H9RJb&-*{<5Ty1)=2cHMCI zxF2ya8K^|$H146Wpq11ODY${QB7{S)5CNdw%kfWPMGzDv@xi{z$El_rHH#s@0MJyQ z>5{?rG(oHBjMP`9xWeuEV6FY^9IW|=JhtnGl6)+0FW87`Iq~*J)8PhmFBFS!=){T= z(>rZj?NYvYB|y=m*%sBW%qpUmYLJbjs9W^|+u(pP`$}K;lx+N>_M?IMq7C13J1h&m+kE#xi<6*L@Euwl@K*T%^O%e@l!*OqjV%Vly8YY!Wl%;C{-OT8` zAFztIUB^Y+?1~7N8L$SST_C2|mskQ`vx!fjsY38ZI;$*fk%3WBxZ_TMDdf2593`CeF4kOa)1+2@@vY$&XTqLSS*N8=xb=w>ziWZ^DO7N@9uK?vs@o^jgz<$`C zJ0-OH%I&)V%UrQ)%S-OYptz-v5O(UXxpHMd{Kl>pmJZP2^f9O)=m$@g&=4(YIR&L_k-H85{S%HRz^*(aPn z*r!z~3$g%muwW5z8F*!ioQbhJV7LUekl=YDO%(oY%EYa&{DCr(8*RTH37)ZFX{Qhw zRlS#)txU%@)CF@@#1fT8zC!;1a+wCEw{-#1I$1I|)M`ZvO6P0L0@oT35sQOk2xRD@ z+w99R){f1Ld*&}mMpr`{hAxQa5cX8E6!lK>tS(owA8adNVglZ!9wHN7=5y|Tj4fl0 zg?|Gf8?mfS>|o)39zj}(8+4KiZ?Kg7m0nfbq6Io z&1*zZ?6kG6vMb&TKq-Qnr6@*D*_SEyblg}d4b}D3u0i6q*H9LfP#bG{94}-!KB5cU zD#*D}mW6@D*f!(|ZW2Be!K1=NI%74IMk!zz9JK*btklcMy)_%@Z?eS@fr?l56%06+VviZNv?x+5DEZ4gK0BK&nANQFdy}z_y zyXp)vAAjP50?%RmvEd)YCCT#&Yvo~f>iU=Aquh>JK1hboxD}=CAL1zhierxLj*Qqw zm4I9!Lz(gBBP}kd8M+e#;I%GMe4tWnw=4F<%B4kFbgr7E%L)hzwwUno%>JRfVz2oS z4eKeeJk4i|V6-|jE!b@w3fjd5b5iqE&PMQr`-+PZ*S9sBH~Hn%$9u zG~8nunI*d$-A7qKAS(RL1D+W#If)uPaAiz`@hblSOhccni<269i&BI)4K9dq&0${K zV*9AP6-2m3?jYiZal3B(EPILiS2XV>5qoS2yBEFa&U)w)sEZQ!LE?~uy>*;Dm zDVH%+;DWC&(gF|AY`28~n%$xMZ&ejv7PLLaCK;iCDe!P9~L3A5J) zj07O%r^+#rOc(OB14|%p;F%G65?TaUEC(RKYL<|-yG`X$IOV4g!afvmCAonBUf8;o z?7nfsQ4N}JYGqJNcBbKZE!J&jswS<6Q{qJ}41ZwrzttEESFw6RFk0)au#l_C~2QSAf8q$xozW9o${*vhm; zTJo%QZ;uE!E3VC|I5N6{nY**zP=sroQx;ijmagKIBITkohS!wG#06ma)jw#$-NO|;N=0px^6s<=KSnxQ_pY4gbiC<=Fpc+a{ds9Y)(&vzM(YR$%U`FT2J zGl`Nt1;z6fNnHZj@6AcUzri>M_==!E5n=m~tbEEX-uOy<{1p+az7*Un$o~Kmma6)e z3omqu1M%iuv3a5jS@{rM52OjId`?t2g3$B zL@woPQFP$ybi|-u{SXvV1;H~FD1+2^0;BtPZ3~Zah5){v(_p`N<%|-jOfxk>f>Q;` z7yBl0pLXHA4c*3rLSu)A_JxL?>rNIqFVJJA#G$eaNRSz)&L3o|8{LThsusam#eW!g z5i%n3_=emQo?6r{#Z-6@X3HsP=#7-Xnl1zas4ymF!^0JTH3ZG+h`NhV0$RjouH`AQ z5qEOa${ZDtRHmtKpG-e+;+b-yQgwH69uuenH>6YIU%a7g&CHLsQslM>po$>HL=~&$ z6YP&KxTE&Uy@b5Z_JPy18~!FPt}XTsnT zs;(Qj3uc$@g1{knI3sLK)FR+ZUi~2R9ujz&i4t3E6M(3sy~Sk(Rdw8>y9zxEF|sA1 zk%CweK`!;t3Lt03aujF1&{9__Z$jil-9j?o6u(pqwW#XKJEGM#dJJB73aMszm4N9U zsjX@x;G0IF5Ln6+fGL9LHg~ALlZt~i8o{W;(PV4r$?{5MvML4B#U&FN!i2vbMqnP0 zax)RAjJ;+{Fh@+2;eT_HuSg26)uD(xw`Qjm(*`F7Qf>W27ax=#wQy$4o(+isI$X zqtT7-#v5$C-eD@k*_XBcSXDDA1n=yC;a25R%7Ep}d%#roK#X#j4@*dfC1%)a)c8=c z9$?o*;;i~*EM%{U2`fgMtp??<12#8DQFdarJ6~|a%V4m+!X|)iNC2M195=8;+jK;3 zfU>=*1Kf%0+}Izq#?~oU#qNlROtJK3X(-qmy1l@lfQxO9r?>41p{a(Z2?usp<{D{+ zE$QZK=!3A4b(SCr4mn|zaWe$WEedJ$3}kaJedbdRXW~*V83#M8#P+s%u8D}4Y95Oi zV5RCTHFKMNs%`Q&svuQ-AbmG4c0qvgMiMtm5JMeI6qjXYJ0&j?f*`q+lt#?LRv;!4 zp-b>gIwk~Q!jn6c`VLw2YARH22uW1j2wwb>zy+`hfL{==GT^|?Fw+|NmH=s~OCbnt zf$BoKsB;i7E4;+6i$M)$atth%R}uD^&LX;lM7%JlVli|hS0ut|0l+08yV2}{@eR}z z&psg2R{DY{i_t7iyf_mm9cKbqYv$Cnu1nScjgF$7ufhQl zk9Z(>M&KG3x{3w2+)cCYB96Ueg}WYNAN|X_UzyM!EUeTam}*l|;Hh0gkA;u5A2g_| z#h8Hzpein++|FZ1P-`!t#MExjK%fw;CFgNo>KfZ{z}y-o83+Orjb)t1;i*Gv;?t>Y zOR~s-#-+7&0dXyji~+h~gXun3Ua1w+NVqB4w1yRkeuCnCSh)f^bpc{o;TKOGC$s#uha3pdem-P{RqUQDdoT-7fvM?3+# z8?TwTKpR^rGF&xKcTkC%*D_EX;t{c=V`bWWMODn9Fq>w`y@<6p3aD-aVqB}#R4~OO z1+x7H*=7(Fe&UVhHA;)JWe$rf1=Qen7;CBXJ5C*ml7Tl;IMUZDrU{7fH&9)H(=O+@ zvkHcfP-+F`F(^1*#wSQRNP>_9-XdFHNgPyVtu;Ean3l)06lr&{{K|D#lIjbJPTPkd zoD~$R3^$~MS%{M<4P-{_MlLZ;=2##dkyfoo!G+D6N}lr)Ml&oO0AX((-8m?8wXxO$-?35e?EBT+*pxFz0z)>K-g zGMIcFF_!BA?$mV{pA@qnw3gVG$`5tAjN999Y+qs)# z!x~A0EPV+wOiGkMmJFrL!4jgABRKy64Jd;B1vW;xrUMjI#$2;+rUIfCjdIMjP>!e0QI8vgjW-$(EIY0|In$C=-rO`6YdNQgAb1PGM zV`v8wyC8=oM(zfME)LQNU$k$aToqxM+`zorBiaNpNMV*Pa3gAn;LfL1;|gVJDNwqg z;$hnXyQ<<*3r#_HneK_HxRF%JDrwAM#vmf3%mD5HaYIA*T(B@>%SYHDTX~It5D=qi zC%(py#K~G{0Kd6fxG8H6t~|lOx*`pX9Nj{@ZUJ-)o>Jl_Bc%wO;EV^oLfyq_3Z-J_ z%xH!@+*0uiLNWIAY$2OK?gh&d5{=4~j4{l!QxxBdg}F!(Zak(JcWhoMo5}>Jvrvu^ zF1ds!Ewwxp7z)DN{1CI1BH?%G8Fjw;gQd&baLL36&BA7FMH%`aZ}oDLmoqSo+jKvf zbE%2D@#tRec$HF{mKF&TH5(vAQ-lrfDm1_*VX%%7E0~4ub161K*y)xUY6Gky_((+; zH2^3AP;8aBwPB9oR8OY?u(`f+h>V~DN}4A zL_<}@P3zxq00Nmwc?oG?yNrCEYf}#X@vg?7ETa`)n1InvmU0L3mVic5#r|2rUo((P z@nRv-Q3d^k3oxZX!EI-8RU`?JL3y3U_Cwks;LHh|VTDx0BFsBmmMbJKbrxGQC0dku zC9jFnh%%C`5pB);GdMtzTmf*WG1OBtEEwrg;-i^G-aP^ez`%LAMVIj&h+lKuO5f5K z+^*3{VD2YZ1g(<}p#t*4YyuzxOSxu3j61?cFBAz-BQTKmaV@2m6%F8qAlkfyGK&U?{+IA9Bqqr1jA4*(@<)4wku*f^bDruq;QF9ESFM~YQ?7! zc;nPn0cD2$IUwU+ft((bol_jD;Lx(FI2A1D5v$!!V5V=f1nAbFj#d;^zLQ5dn= zf^f^lUDc59nWoacA_h{x8%ggMOa%g`u!Gm=fE2l%7z$OS#ek9Qs8vO>^jRn(uthCc zw(0@hVmnr-0j5~+niNW%`(wt_-fgzm3ozdxYB;~jWr($-=HpETzVRZyKomeggL(1$95(y=@;m{FAf8SZZ23s1q(qad{Z;LwalPu5phro0BJy$zqx!$L8#sr*QQvC%Op+H z65UR>qE+OC$JHFQs20D1YC$P*yiDOT2JO)UjyKE!#G&FGrPRxUA*ej6CE8Yj60XUM z0~E$?QgTFX)u0h)QPE>8P(GmV?xq_GiQ+PsV1@`&YX>zD;#hD?8|5*phQ+F(MJeHR z4jQqBf{4vba~24u8iSmC;Z1~gqN0;3d#P#JhbsFZ?fgZiD=KX>z~8Av1%XjY%Xa}L zX80h6RfVud0^^bH5etG(BQEkN*V7tCVN<$N)WR}jhL5T$=%j3BQ-&8Ru&&;qF0Msp zx`THJtj6Ala80E1+W=^>?H06UkLqSybO@y?8~BQvD56%e7uox)B}WG_7kqcFb3lC{>vV!?6G za38~Xh?ZAyzww2_{4d9+Aj&m(YKV(!oYE)~-DaiBm`@9S2&{2n^DF6BV<=`_6tROT z;8Iwts>TiQ#VsN7yW#j?%?0uNO35#yh}jJ3jG;hymaXoQ$Rl{t4vY+13>d0)4%t6Z+sT$(r*$thRHN7-$I}Y_Lxvn*5`d<+ zWVGDy(*p0?Fg4ZrIjEIua{fpQ<^ja=(F7#DlA%RHvQcXgWw1;e?k__G zD3JsaOKJEf5yr3a3W{r}qS5Uvma`lL@?zyUYT#9>gQ68TK$jVKXDz@^BCTzO*;MjN zCWSC9LepiyXAm?h32R?yDY$xU7-Jx8?2BG0gd1Z?oH%%CZn%8+i6f>O&cO7n=^tt_y9Nqkp(vHEIp zt(C7GL2q(exc5f)O59MOx-F^)_&|&ZIkia_SB5VUVjo}A5Yv2iai(1Af1;#EJk0F^11Id>1IUjAX!qEBs<5%t70dc#M?AuGU=I1LLKTOEUdYh zq`AKRL6AmN2xctVevL9ca^meK5oU>Q@G zyjU%}ON@h>WnoGbCuPg_;b0bsfYi%n(nv43F6}MY%#dcLy#m3LaOI8k@!2 zB{}zjADK~t(%Wib;yS>MT~ugliGhRYh4cwk01tFr%MFfy+`xkd zXu66R2S8OsIx5kSCedi2Y|0N!XBWv4&|FbN;FAa?bWsbX*@VX7+CGxRNO$4X23R$c z^z@SZiqM!;j2UFCnA+PCPu-5!IA|T^e~Z80JSu;X*T_ipNb84_!G2a!{O$;LGDT8c87V_AvLw zG{k&{EKjm2k`OO?+ndmX_jKTNkCs0XathFY5dG02TD@gkQiu;3nAhV87;Vq zR@z=mnFiMA4`vKjq^y~ZtQOc&`IY*IA)nb6aUU3M%cc7&79n4EDB9(<1}seO=hX~B zX57*6!dpn9AGv_4fS1|i zv-fhyiEg(l@3Z1ilm=~o5x}R*D#TDi(KaInfwRR+=mp_eatLxIaY=$gTtKdjWqcSk zN~J5BxGmLn%#0?>s-7!c#?8}NZ*f3~ICCsm)$EjM{Q43YVhhb?_OjKCRk*Q&n@gNV z0*0mhp+psi5F;j`nM?A@M(OfFU|yg@Z8}MUm+cM$`%RJfV&x;JF#yStX_N+q#7ML| zMk0%8f3Xv0-l|Xn-mt)0fO5uAUxovPnftNRX8Ek)Jl|_ zv7zycjI9fRtSvUv+{uc^I+X~gVi4MnaTHb>yHN>tIR(}^hahM(21275u!e4eUZ7~_ zV@%4`9-!3ccn$fC23D-M`Grcy*- zRRHvyJ)O$-p>5>qG&l5L?hUl^RY`c?@{NHfQnq&ivkTJ5BLQ427ugD`%yuI+AqB1V z8hHCiJs&DDP4akPZ}Psr;#aHV{o#8RdC&WbG5-KRnUO=t5CXSwJZ^c7VLI5Pp;nzF zPz$fP2AaGv+e}0W8{q@-*OVi*^Hr+SRfG-ra2C+f&L~6{)oYB z44hLF)Aa@vy;{Vxym&Z}h(vNYNM0L-3J*K`l+?VK{K`HTXX+xU7_!D_-ESmRGQ8OV z6}3@NE1WodF?%8J7xc1*5$wGTtKw28+izPk*(V4EX z^936Twc8R(RMo;Z%r8s* zOEqSSqdn9?Z`x-}8+bo35>VozaW%Z3+9DBep1qWSoC8ZAiK5G^1t?!&59TdRWL8Fv z*%^}|<%0B0EtAXk;Dvo6(3&fgx zrceRCpr|a-S36n6yhn*@Of)XybeAtEXq79CRljIcs`7T`N@kPOf zQ^9OLRQwULi#*X4TC!&+!dM|4mz_ab>{SZp-p*o0FJj0_u2ujjh^+EaU3*1=k+s?t z8CKnyn%2WeXo8$CaK!3l9L9ht^O@8Mr*R!+Too-;8eUOWvR;M>h^0R93r)9Jx|(o} zggH|w{7ZhpMq6eT^AMD>`dZP!h`cJQkzZL^0}GCeJ&#*td`2Ii{<@A zh=tg%2RXKQA&N+eg$ipbmb?A(AYW;mkP?;q7%gGxMa(Hd{^amN^ltFrTNXE ze>O007k=K=Qm!^$(?6AiK%Uasa~^4#0?cyC0NcE09Y-h&D)|i$#K42Y zQo>U7rTk1s!t8}?ofk2dg~SR2INDR)HhIjeZJ&IRD^Q1^zq|cQ2g^JAm-W9V!!WZj z3YRDi?XpD_zk}{Du?95F`HfLfb>Pvf5BqAAMzS+Ka10~T_b^9TWyWPdHWW1yi3eBNVJ7bC! zhshj4*k=cWg_H zBnk^##$v{Tc-*AY+_)vdrCwGSpR}+L;Y2f7UZZkRea2Wfz~(xjLrML{m@D9F0|NuO zZc>KqtBzk`MzHHNq`U(5xVsnucEPk8`;=#j&BV~*T69E!3i4_vkf@|(_P7}UR+7DZ zAeBftXA+{#-0>=cgw?5wv6Zbhw|2t&ZEJ?3bVYC%0R#bSOiOmvG&5yfxFMyu258K} z%?vt%x!+~m4FOkhtcwFzr%^7LJ3ol$Dkw8?fRw>%rY0Mw z#Z0u}`+^eD!PHXNzHC2G&=bz;Z|)aL^f>}ALbl1xTnlR}D=s!|ETujp=66>?x3U37 zjaQSYWx5r>RZJ`~-rz(u@eU!U3P%dS(D3Tw2ct!U4wiW~`@uYm6k7T}!da~`bS)GOzxVJRJ=PBrC;!pp3hgzqC)kj#rB_=?I=r~r(>@oAu)gfd~&fw%S9@uWnvbtiI`z0=Y?9uZt zkovOFNHpMYKQW34xpljmw{nItd$4TqI()>+q4`N`KpY0ook84pFvGZ&x!J_hRpF=*njJF2 z)|iINPGn!qz6K7UU>j!lC^BmGakL#Ow-@awWzQm2e^EezvGYkyVV0{Ysbk(TS&=db zws%l8LVc0Yq&hJXrhK7t{?}S? zDnF6HVmCd$>-d&s_S^ZIQx_bf?cvbN-S3Sbc!GurTba*|DqxLGx)H+jZ{gHlF6cP@ z#Yodu3Y3}yBd8@-T<kMS1zI@QolBrrv5Wl1!Arn%F9oeNR~Vozg17ZET2q4v)@^vJ zzuY90(2WX_DboOtatjwhE1rGsQVv@<(d`JmF2Kj!L{TS0<4{~embw`4fwgbsl(lBU zSbasfr6YIDEUa^eYxNauDCoXrfN;{&F-41FfiHGx#@LBk%=MV*vYBf4Jlww6N&^9hA>5#Go_w(o5nkVfsxS>GyDMs+C_%)Q!@-GAJf+-R1mKyT z;<7US$!JPWYEuH5f2v^eqLo4*#20vP`i3Z^x+s3uWD9F5Q{tF-ZvNx$oiSpILC4{nwZZ>joVSS%_Mde3${-f5xYMDITtk66)P&tE&pqUDe{IVGvL_4k<-ME4*mx7(6dU38!{{S+Tne2xjDAtyei4&sZmZei} zJBxgd=eY)k?Cw=n^@b1z1GIsZ*PLnY{^Fy|z8Oes?n}XIWt9flduBXOAy8tCR(4qu z4;9FQkai8sqA86B%zfo4B?Rmfu776rV{vb_?ezBvGJ50w>`qYEXtQOVnr+V z8bgAtl}U2+0xGe43WufaQz|Sj%1QxkQD?g-ge9>~mD-g=j+gffD&0`14`kSmHCNoq z1|m7Aa(6VUVrM?_S4=7tJ&)~}l&^AL6z@saBgiBHQr*I}@eB zF{lp;%VX{3g4tPO6shdE0;9#-a>+wSH4w5lF=BzBdzO_g?i8dg?U@Ta6{zi=8EU4n zC$uZ02JaOt2$u*V+rnVn%)so%Vj;{n%!A(5!J7)Tm;((y=P~k1`h~C`wpQ!XoCr1s zbxn{az^75`-ItT|aYEL@cH|3l z-A73a>ah*fyEyS1s};0F=udVl#wBnkVLuGA$Wjc8?h!c&Z!kD{tsC(#WX0pJXoEx@ z8*|LIDF!iY#agCqJ}s6J6$UjGL&10!4S}Efd&jc)|D4)M;RbNJyh7LB|BVV*f)-$$a2*S_R9O8Oc(PBQvB|j?dm#V zEiv3XKVmIM@gLMMX|;yPsZ^@Ve*KsgD_-o*kvLaz1vu=hhERG0xp;@xQJ|czDqFn0 zTtdNq%&c3@4BcNeqFI_eFr|gaC1&4U5xKMEA(%?EJf0z1py{|q^y_l&K$j*3BX-T^c^+~5(WzR zffZ{hWGu>u1@uLiiP6X!J)ZUd>DlKG^zT;si#nf@M@Xo2Yvi1DhIwhW7fe&BhqT@)z+h zCLcSE??0H9#U5a=X>~>j(p4M710=0m6$1b08QXwQ}!-5*oE;{W>at(v}ovmlZa|=ZCHx)T$R&c=O6oS5Jp@UY zC7UPM2sa9r_TWHNS=3Qt;cL}%76=iB2iczmt1P;i!1Vc63poKU|AGwl2 zyE}@I6RdRmet7VGo78EvgRJ6Tp z+jrs#`4xGE#*{f6%R$mKl`oPwE5n(x@&5pMWW@16!pIk>8$}lROd5Ue14-i>0odFD zaheH}rZ_(AA#-PgiB4rWYLWuNoN7Mu(6jLr1n|i{yiJY1h@udh4EfZ<^dtJ1SsgVj z!;#yVfuy^}bpRPgKayXe41pM9+AYEhyXA%yo@&Wv_7sZbSJGg#{DPw!5flYy+;tvV zq4z1Nab$e|0H{EC#HsAhDRMY6$D&W;#P|+N^j{qvKw|#@F+-K_n75{RCS$`7*%ewGpTw#SZkD5* zI!jTlTXEO>nf*bjUD`iUFjrvQTEg;=-cT_yWnNIE>ukQCa-xfQO09oPMjaTns5)-( z6-#Ryq?cqjkpy%VX1E|I6U%6f7GIW;tMg4t6_(u?RLR#xFEG$?cuGurD+f;r2%1|X z2`F?AFwipHvRM??rjLnG*X=;ek|hgzgt&r@>dR1Ei9=|ZcrNN@4V?{; zp=`V?Lso-fGRB^4fSYdelSp9&jG;vn0XS0{ilq^xQn|?+1s`!CLGFuh>KEi6D739B zaA}S8k$Znz9Gt62$Rk{^Ku8xHv;mO0h17$TUn! zJdczGhFx7m?bV}{h*k@7R$*aCE$l(O1FAA--Y%_adP9|3@_V+xAbtbM>N=Kq;fBL~ zm|3nq=kW(By3^_#02;7z`C^!J)&U!Vmv*cw4GQ=OhDR2lD3yGz`^qxP&Ml^7tc_E= zO!Xf2nS2ldztI7O19wYqT^zVuf*EXnOrFqv+XAQ$!yQByU^bkPVMVYi%tD=+7tWC? z#o*e%6DNXIIVMyg6u=XRs{0cYSxbP}&W)cWAI z&H+y*5%z@R;l2FCsEsiGvbyb+CGzNkPydoFcM(!4rUlt2pM!bZ?-X4Q&V#`3EkU}}~v6h)vEperVB;h$?N?3op_e;rIsuyEp1 zv<>Rdm;xD%7A0WZcz~j)OdAp}o7tG7+MF`04{or0n1CB=!(shGtC48a@I{yUPwHli zfWhVpRk}o`RaA#zUJVj~bYQfUFe#@5l|y*^rI`EJouG^}M|6p7__|BGO%6TcfR-U% z%dso-6A7-3!1UHOhJX-oX)yzqV~UN|#B4Y2K@mgAsYa~0#{H{g5EDczY3Z~erJ4CF z{ly4b?fo&d$f~=`*^5%AO%_E$6O_y9$l5Y{SM874^H7wgilrKf*695x(JOb8=c#sX z07M!{#SbB*aISU4pfv=qmP4=PYG14l>2jOOxQGMfQFjw%9th)ZJ4uB=Bas);K%fPC zF#=C#ID*&KU8VJ%i{sv=P)qwlfkon+ut2u-SMDV_rw}fX;1^7_j+~(>F13rBlS0iV zSnw#j0ODRh6WBVes`zf)G zpp+PCzv7^EW?w&~Die7sP(m_&EeUmjR&0fdyVXQ5LK&h&c6-%Faldd{z|PT)$}#O< zaHWYvFBG>mHzxkbj~?e~E0T-NWrsy5nFxD}y&NFn@DKG1ZeBTtDM2!*Y7n-sy~A}& z@%vO@(cM{(q7I6xMN~>@VZrYd3cBcs5Jz?Vp+7ACaUEy-pQK5**pvjyJd_`PY zrfE-@5I`*r#bas1E!#@v7o#W<6Jw-^Ef&RIrVu(Tv*Im6FCE7tqsKoitxMaSGXPYf z{&xZuy2|qVC6uee<|=|wdWDTPEx4>APOVny=B$loflgE4H!r1f)<}gigaLK3D-Z+= zz5-!we#@^BFaazer^GF~0$mvySRf0g1+t!Pk}%OjD9pyxHbScWfaYG78RW)$g0qgiMwznyd@5pInrz9!rOg-G%lN<%bSqewE+&<%swA`~RNulhkd4J6Yn zTc%W3mqpLGH!edJbmoI4-4;*a(5_M26I&mSLKt%K*Dxz{MH@^~4W&SCdlG zqM~UVC!z25!{oa6dq(9duv!DY*;?zu#-_n(+Svgq151y&DRGqQtHel3&naio6NOGy zPCFR&p<4$TxngGxh}u4J0|h=YER6?Qb2HKhH;aWmiczR&K=~o;HL(xU5Pic7*bY<>F6fYJ0PY9)p zwCf^QmwVYU0-a=+k!8uXhv|wItfJSEf~o~otMrid)Ve~5JdN8dIHOkyTvvJG1hSWO z!ef*M^2D&Td|MU?Vq~yV{SykX-YPE?Vi{=~ZKmJ{xq$v7eK*wrzYIvtn-Opn5t~IZ zdaUlKVQQ^chxRd|o}7egPCFU+hFtPm1o?ym>t$;_!2&ZO2A$P|j7_S!z=q#_>|k}N zTQ@9-P}R2uwVnz>5v=4A}-}DrfMrc1Qs8LrWq&8`ip2-s7?JPYGyb& zJVGE+bTdnjH4@cG6}!qRI0}vQ#bUpN;%22Fg>pv8fum%#SET5Xj(w)CQplY@%L@aS zVF|Rit-%XJ*p1Sm+FLuU^kEF)D^*NAp*vzERvsHcHNHG%WR?*!ivoa^%ET4T!rFUG zLEEGjArQLj0v5K_bY!?%rMYf1XnXE9@+-Odixe260!F&6@tc*P{qdZ}IH`7B7Oj5O zF90D-3gu2LpUuXj3*ifI&ZQhH8W6>cTIP_YE|Y7|nMZQgd6=Afp(rZpMa8~13*?IPmeUxA zDDrHK5JJU!T-`koFA*w17|~Vj5yh!ou|h%0Hnd%^rFc>VFGVeY@JE)Apd4JpiI=oI z5L|PbU&&yKO;dQ(XdCx&WKnVP0!m9=vj*j^akD|1+~Na6Yfwl&Xht&73ma7)W5WI_ zs-~e93CsX0j}g|*$amMLT#iIUW&AyL1vD$ShV64)r}6f#~C)CJXHbx|kv-(}v-Za0ONQNGuc>-?9(~B;`^^Al%K;^>M9_+rN^zsA zjW?T`hB;lEBc?}ynGR~&nPp6QV+$dwKfFLzU+yDqu9~P`-o90R!REVSbL~*jt(hT& zSBkRS`?15!2}%aG!kBKa;X-1g6$%7CL-jP6sK}EbyV=4LEbz8a4h>)T4&C6$t%b>G z1hHF81_y8@Fw0JjSg^-}`CKrI1A(``ZX-+RfG1Lj*<4cMGq-y)^qCb!Zq3U_D#|3P z*S9fqX|%4;kj zD-H;+Kqa<#As9p|cnX`;4G$Nu3EowZOdPDkzD0?;a3WvZ{ z91wD)%48v=QsYH`B`Q=G25P*O3W&#D{mNNib|u{78dLQVG_N_io4HgB2~;Q+xGE#$ z!TXKUfxu>4 zus7_)1)E^hX}5J^+NgjgTC2kOu(!0Kr46_@?xI61M#iUwXO!SZUu-i=j!;Jy9S&=b+y_!F&QO^Sx7G1A9D>| zK~>ydKAl+`_KE<}YisUfP;FUn-fZN?LluDG#rG_qkp>aXb&DuFT(4&oB}*DtyqDob zhPWyJ04f3+=vz!`iF+>cnR_wJ5x_X85k6`rH8Bk(`^7+3GPF=4*-X6Th-s!8>Fh$~ z2Lh_^xo1r|*iJ|*{{Yn^TiL?Jh1fY#pJV}PEDwpf_SPkJLt;x=f$#Dy$VMlH>KaqYsm&8)5fq z{l%I=W!L*cmRFR)Q%8*woF;VHUNS;#u=EQ1Vl~;ZxMl@h09VN39Df@ScE!`C4@suR zrsL_K)G5c|6zP5;W5|{UU{{+LB&D^c#_}-$r(k4+FB+uXI$`-F{0OiLL#H$Z* zg2DynkRoR3r|r2!zQXFn_?YB#xW4rRSYxQXG*KmL51`EBtKgDVr2n~lkL77X~A1I!+-Shy{d7=9o{9i7Bk1(mH3t2DqHm+h=1_QbGjQCbOh z8D`2-*o}o4elkVCfMv~2ZuJHTI#iG#t5tuXly4`!RLO-ot732}-QnV5$c7b!M0nXt z6Z^Sdm~R@dXlekfv~e8w+1V1YzMe#AjU{U@+=$Yz0n|xU4L5>45pJv}0jQ&wC~Wy2 zVOm6CBOs`wvLj+~D^dfpGr=voqF)xBClCu&Ow!ZjgmMeJFXWZz!6Q3`cQD0smO6n) zZ+jz^$#}Bkq{wL~S4^=5R-#a;w45OPMOWHrqumh}JSwxgU6D$c9gA|jF>J5djYUhs zI2WCMo3!TSdc^r3+#N^a{{YMjIr31rV^1z4EUn0jV!3hN%j+bmkR2iLlW8Bl%y>TRYOR`o zLvTypdVNaK@N@P?gi}ssI=stNwqiwZ%BK4zVS}ZQ$iTe%S~yusVmov9HMVtw6>f)5 z9$_F4M6zEiOfZXs-Lq$op?toj1!>TUFQ!j5F-G0&V>)l8H8WO$-QV1*@&*Y|eN<=e zQcn!kQR$ds2PKd(m2!6VG#NIUNI+FWs6F5SQs)LK9txGI+hmSVBUQMJplzyd3>2K! z3BY+-ajbb|t!g~86u5@zrXqzcoh>Yq7?2%GJq87!PLFsqb_a7M;+M1NO0+R8Qib1f zOKuAkhGVF)z`b)D0!k+H)k=y>n9MiL!M6qTcN5mrP^xzsEox~&ei@K!XqE4!Xnx{V zn;b@S4$ffZBeA-I)wCLgu_kPnF9TI_p4Pw`1Td{^`!)?+SlEHDlR#X|s(jQit}k@} zn|JVqWleB_*hI|~K!`jd!NH%k6)KK}J^v|xD$%MHxO zFEAcxfp!x0rSJxzwM&*?rTQfpWR}jRuK;s}%?hxNWojh+&Hh3qti5$O_%J!8VA=qV|e1n=4Ab`5+-y zi!7?>c!sylUHrzfA}9tOZaEqugTn4yD3zV6VuW*ivoKY@Na*m!*894J)`~t|v_KK_ zbfIP-7Og4DcTJ$UZ$&t+1nL6aMfRk`XsHIk%+A4mv5G=ax*d2-pi}I`jt4N^6{KC$ zl3pl}bs{lsRfx7lz?s$abKS3&91_Po5sLDKvN*j`n%4$zC;K29#;BPTUckyIV{#cv zHJ7oLwMSt?>MJXu!xa!#>kLss+6?<7x&hJ>hQfDRUnHbB`!(|_8!yO=pd>k3_=0#m zQ&PwKLS^?m%N|_he>8ST_;P_XT_twSrbq9||R+LhA3(jN5w-ea0HQHg0K6lq{OU>#7(l ziN*0Q*Sd0CL~)*-dyEJ{U4=nuOZ}m$=J8fQG>ftvHA!;HaKi~9UrQU7Ekq=@6by&V z3eZzzuwEgFc_Li31m)Wha#Fqs^u+1@(&20$1QSpI?j#djJf%w|AT^ck4O^e@dJ=g>(5dy}w#AA_ln607B)Mpgx&<(NXF;5g`bA%Zdt9XS2R&uk3t@TgLuqd47 z?iES_dZ4y9n-=ZnISrj$Rbda6%is)V2V=M>mRXC%ZVeK8H7xBfdDL(V9(C@)OL0|h z4|uA)1Ygbxtk~0!;sIF70Fl>!?l9e8swgfsNMi=2(p+s(9`_z@=9$O47-#{23AnMS z2UUH#SKTA4Litb`X9_SIGeQfiEq%#hEJ~7Frrw9BwY!!G zs;u6aPy}Zlx5Y%$9AsDUN(1E_L#Tw!H!ZaV_e8w~qmxvXvnyr*O@L?_J>5j5Hdf`3 zxoIt5GSX=(@mbx&sQ}q+!%T9PE03llTg6g|LA^%Nk)SHE;s;{f%pI-|=poeGP;Q$~ zFa?8UrPs~M6S!Ib0Kx7)i)zzfVH#A?Wx4p6ajH3NS!JGqO>QADe4LlmEp|HHkUK}B z(uCG6(R-+CVMw52h=f>sNWYdB>l z1jt))6!hDTd&!v1KuFlXz?yI7o0IJsHbSe z9n|gA8msrW)Nm~v@SgW7Ti|RMl~{3VWeo;jwDu@OhgnD&IW&3ikAWzJ~+WdKWDw{vMDDFmETk(?noSN2>)E~@T{al8>JLh5^h zJQ#_g1qEj6w86ny5n#EwRRiI8mraD}n5brj?sDQ;icO?_QF7@7DhIlpg!v^+sOV*g zmIs}{H2lp@J>dr0=(-_vJ{(GA&dIWgf{AqO0|Wx12^d!VBSIibTz(uz#{=Tx*aY!G zCxIpRJ*A|Um&*`%p{nc!2_Es zD&^Vq%*QyVo}lZDzHU_!T(d4iwy`--b4#zeNRFQuD>>EeQ6-P1IU;iGeu$9x#0uCc zREGrkBV;NsMGb~s;$Gg%?EAGTuq(ErPEzthrDKDDs|32#0j#g@8B(>kh=qVK^9iB9 zC_FC_K=`=2wfAj)8-RrJ6_1G66+5lm3M0Z@+VLOp8DmhOX;R?drPLu(Mnbd&t|Hjq z0>W>nH$+pF4V%jG;M+3#p{2EkR01_ruWo!xuCg=-6)clpjGoCbi0X@;!5P>J46=bv zk8@7$0x~PC%5>i4^#hFStxXg*8-+gc6Ao=$9``7BDZ4=kDLkI~A)!_l-`Jn%RfYh_ zE9uqJLa8*REO@wR5aFuc;VEdlNHP;*whKO>_npHPbuO-M{f_DssxwhTWlEgbT|Is- zBhxXI0S+TuEm0_;39-P7h54qRbPlx&3>xpbz%r;-j-hDGX=C)`1+xDDNQyeW=<#tF zjfL_?4#a>M=sr&3Qjj8CD(NE0Z(%8|@G(;t7QRWCxM(49K(Ta@xmZC>_X20h9uF=@ z@dWJ&L9`7>YfZ%u>bXlP-e0mH(wL@$-}Hq5$d;|ETOSNYkV54zv~w<3bsyD=o2Nn} z3aYbyXJ|ecQmd`hcY_qr+zTCG{ShFFxqzfup-&L(Wzmp*$5QEm;*lUX$yM@PzZ6fi zxq|9^H8?GUxHCZcYBqxo?hPzCKZG4^$J{0c{EkR(x8m31n2>#ns)X##0fqo3`9c)` z090|D_)nPDgU)P#kJ{(nLt_j8hdVA(a{LS(0=zcM>px4InG!qT#b}31`&7s&qT$6*$B~P+8t6=GW;uoy7lfqwmA|Dx*I|0S z5fK{k!R-s{HFFCI1`shQi!_DG_L^=SWVKoy7yMWXwmsf&s!Z!1)YJg|yIp5pdA&qR5 zRR+Z^cfW8;0+`_mWu2{W^-#rzFKu>aVmvLHA8w$&O7{pVk7hFfU<=Oe#a7u%X^8H( zn^kq9Q9$9q%P8OqOs*h|SY0T5#Izemw4)M&Z@tfUP(O5{ytg*t7U-_=q9+mKboNP? zhc*Nkp)L-QeJiLWg3Gm4bTPkP&W**~HAOk>!KH|nm%PO-9)(BOiUILZNBYIyoa9ayp4QrBFC9}Bw zD8e;l%E0P$yqR6=N&vrOXURVta-Rj$P6VlqZ6g+zQZ(B17Q)pT~d7^JCLhJ0EK-`=Pd^o3$+vTQuSkIIso+~QW1)r%RI&*&m% z;+mx~zC{+C$4t?(g5~cpL#MgGTlZj!6X3&Ou%Oah6>MJs-|kYs&_!l-f{8?5YLE9W zqL5IbT0|;g#?m$NIf5noGLWU#th<8p8hMry!_C02*uyi13zaF<9e}&Chqy{ljd_c07EmdN0;eUHF-(@H*FIPEM5w^TA@vc3Bkx{oWyyt zj*RW>t$W9-xz&j!LXfqSe4iT&n{oH|+ylO0t6jS}BKB6?Fkv zqo9H+EjCnCqOuA4ZXP0!H^fSingxQ}BI<|kD{@ZKtJ)Gop@b_@SUzYKn5Nm2P`$`T zKny#piDU<5FC9}HyzyUr!qQ$)=2GtKF|~?Kch5I03_O5;QH2K-S><9>1jj$o+Wxl*1IMRu_0p7@XXsofGZG5U|r-Y2m`9Xbqa*NWL#D# zs;-3KZ!w>I0^3lwnvnq%mN76!GjSENrL8`00dx^^f!Mpl00W+`QQSO`Z77oN05p(n z)j+s5CZKs2_o;TDZ2thX9klkp-aCq_tWZY5zj>FDf06t~?b@;-{X~Tg=WPAMN`1H# ztuO?k_c&u}M^LcqLu9rYP7sDQXD9sPG+Fb|*TmId1W|2AcM@QiP2DksSt$?G)8ZQ~ zacp`OS7*sBr)^QCmY+)DK_Rx2*@M7p>c`oF8>h7KT6kp#QHnYCls~QoqJ7?18{4i0qu@tbTa)g{*T1&ugqJax=6}hLO z0-VMONuFS|g&o}yp*(1Ayid}(WW(S+NU~PpsJh7Q) zMZM-|68T{U%ZC&a@L}TR2xZ`9om52^Zo=6KK?tO0=&5)HyBLN(J3jz$K##vLGFe>H z3G^HU00>*kp#s%CKbcEa<)|tX&u`p798BT2-Gv|*bh?x}^yZ>la51Djp&HZ!Ep@0} zvCdX;(Np{xP+o^lg3thO;XkFG-1z`hQBFYD9330}vieP}ytYP;m!7yn4Dp5ro zE3cVXVN?M3jWlD%RF~CP3u2weA)51XR;9HD;5aEAFHy0`+gdzk22i_7OrX9<@`ZR? z`jn|@*57)VRc-RrSDx{>`mGaacuSX2g%RM0qy7Tibpw$f0v$>#JA10k7L;FDiq#{_ zH*7@$syPA$c4YyzVU#9-9n3FL&+y8!pD9@phN}b0d9pTzb+wBBF{WWgl!@8F@KZlgAU3iDeaLDUUbcCQ636yM`G7&9}{+ zN=O>X+y)d?sGuBhE%KF^9aLql#=ziGa2WN##!5_NaiAKJFvsTOiic^ByH&OzD}IFVcUog(b4EK$zIVVJ7J+1T0TCP@=YWCKBHQ zOtvJoIpc_>th&}E@O5>`4rQda2BpG$N9>K$G@^aRJeF?O z@et~s@UBdEaRQ2L?F$w55CgI9Eq26Nf61#!Q&G?msPkgeNA%$$f`5=X$+X)g` zU>spFZf0>r78(_s#CeB?(!iu^#X}-3yC!I!=@e{S0WAIyA`8xdh2-I81#)P*xT~!P zv^y%tlQ4Zh7BCoG2qn6p;($hi>A^(H;2{l#oB@_{yv36vaA_kf+dfxBFV>gV7+6Ir zNk$LgaScGCRTcCQWPG`fkNXaymVVlgsVVTW7$*%zU%3aH)KF@7TQBS*S#)6YVXNke_h!2N@`=C15he!(jRslA#VRGND z3paim!!J}5MPP;tA9yOU?w}~4O=SW(*FvqpLGd=hXS7ez$f&>J(+Drwv4`8HS`bUf86X%CBIP!?y0|YuB_v!t zTBxPT*Wen76kdvDJwH*e4e~``xY&!ArX%ka2XCeG3qr-B{+?sL4mT*>ka3QK zOu|f&jiSPVgp?LN!v(wjNo}bS$a~bf85Pt~+OKxzC0czkO%u{b%#0v!GaV9*Q!K(B z)hp3*A=%-%vd6lZnI~zu+ENpS48g8aiHC%hgRZlTn#?bofT$Hzmc*ES@C3{1a?G;Fq=gL3z2>!l7VgO zm@Ec299Xx>21}opa5OHUT)j(PSnCiYSW`G^;lXyaT-qx4X%&QP0S2_*EmcOEYwuA8 zE&$9B@C8&;r_+LNKLvxt_gG?;F9H}_``i~s@JsDXOSKBsOhujrP2zl*8(?)U7%fDw zTW%R^X>MAkx@{#43R=eA>}rfr4kLuL;41|Jm&!yE3g#t9UI~jWn#l#hRUC71-|kB0CRZLd0@eCD1)+NMtHHl zUBxhE;ZfEw3w4J1l9&No0XmMTfzUp!6ex`&{z?A;g913NS1BB>7Pr;0th!ot86xVg zt3Dxp4eh)~ZoG#Ps3>8|z2dsxNllb@9!esUcU<@*_Z6X~sO0HtqfUbZK+FFCGMcq3 zp(;{S^OVWvi+ik0XYU?WQvHEhhDhiZ#gCBde9oQ2MPFjTWv zm%g#cNLoi4vN2n5E+!X->~34aDB8uB@h-D_(SiUA3u0O)NW2k^l#|FQ&hZo-p)$V^ z)Mzy6m>&}`Kw#n(M_mgs#mf_!0l0`az2Fadkg735`<6-^sU_0Hty_wh;BVvF3eE#~ zTUZ$sO@KI*Xxk#t)hbo9K<0EWxoiE$5Nnd4;5Wi;7S|1ph>C|=WnHf6Q2t=8ei&w; z_LZ`K3*IbZ&%{;PvqgxhQrs9cF{Wk~2Ua+kqUNYtVsmpbA1oFthT+=w(Lx=Vq1 zO?ePnG=`c0R|JkZ6OqFKEJ>c?n{f7XrjG?;DRQF{THQdod_^#@g1appOa{y(qbNJ#Jc=M1D9f9V8;DYOnLrRW zc_pp1!fX$y7#ujwktWz?G~%UNqIYoy*F$mSg6|120w)YGgDgWRsbf~+I+7K#+{}T& zYg~}frDEnSC3Px{@|69MdrPPeP8M9@Ox78uT|k#EQPCD!sci2iu2JWXW`rPSY!T>2 z7?lAIFN+#Bco0p~f0!6<0eFwR{dPczIzm*jbjl83<0u7bake!NbuRPxA_OzraBbf* z$yZ#aV1kl0l6t$9X*FG?igDqgjAbs zJcKM2WEIQaVm2)B8kh2eeL)3HGgWMIJ6}11QPfhm>?|@Re2SEG#$C(g#x&|N6k3a+ zL(HkAvng`u7u~oL^dZl2K6RR*{VvQ@b1?aRQSq zw(8(3ij1&YIMEAh2byyq6_G7!h53s}v9>Upd#t>_I-;@OJuXwZeu1X8tgD%~24cKW zO+{T)c~T;99*V%lKH^THX{M@%q;VA=vq7SP@zV7YA^RKraNKtdAI z>Ou~E#@@+Egg8TQ zQH41W$|AvIOeDY1(H&e>j#N-oxv9Pg1+(GVFH5MdR~3!O84Z%8An}O8M3;i zjucfYM4d=&?|EstYV{13k1GS*fbC>93JoU4QQ|y+feMy)1-c8}SCN^K+b9Q36wfK@ z{{Ylf!FxCOp6N9zd{HUTDi*Q-0G{zmH?~mwJVMJL+T5j_vB)t2c0GWW$3MiXM0wLG zbAK=`QPsevlKjO>q22o+!o$eI3&oP#h6`K?xIa1R+-q!1@54+$Ui@U4WFF%7rzTlN zXnfgaaO~IZnDcTVL7M>RV6-QeT}4)>F#Z~gp^vZFX9Gk*Hl8c`nMRdY*Rqkjb{u~UyEMyegJHL{)Phz>S+EdlY(Sv5 z*a%&bUhvSFhVWE9;yNAqiF}sW<&zBF{vzd}*4QR&>RCmR8g(kAX4koRDOS@}?@-EwWeR?ymZOR( z`+^${2H+`ut_CZFvdH-c4FKWn1^7_1YaVz0BM(boU;v~-Ds8R|#_qZ4EVx8Q` z6gDepmYG&tQk6(GfT$a!wkX&uCB(AOgz(ciqnGmpsb zHSvi^l>CrJ02oDTAZ%`68<;~7AgT^7S(LbPdrVRcKJ`@{-362ZE&C$M8kW+K>4DKu z(vh&Zp}yWYKQUZjjrQ|Q#6j8HP`&{8 zw8D^I?G!0b2*Qh8-8U0Vj#=g?t$H8K6H1)4c|lc}`^qn7-6X}2mD4;m<&~QFK+9X% zix05~X&$ovpz&qw$Mj>bx`A?qJhF*unoW>t8l4sPKv!q83kBaXq*|lQEtZ9Tu2cu* zxL}~L;@2#HwigaRE8;jGa)7`H$8`(pj0!+r)AE+7afBT}8>Xd>V7TImZ|4&|+XCQa zXkLf1aKJ%4RBb^qD0D1VDvKIIznHAE-nnLp=P@i385sJxZqTottH}d!P}ZNV(-UkI zXQL{C1FQ&2S)&@|k@QKXM|i@6&_Kjvu_X{zU9a~S6ifS$v8i{AK4uJKFjYe2w}DeD zbWOLY5}xD+49g8qas|x$a72|g?sLDU+1iY&`B*dJt7U>?#T zOdotiTCw9_1g7pm7+^e7F4Jjx|? zP1mr%sc`TiyfNn03P841ZX&U7RAq*R1%`9f7|}*cy!B{6q8j+fe6uyV##RV8(0Kh+ zXi7A#9}P@v4oV{R*bL@by@7E=0D0#`q$LTO!mAAYO$PIOxu0b#0}Nf z;}lv0S8Ev-Z3j^gAjdx_3HhXI2ujtES`QF3wE|cxT(4e@piN28Nig#9Ogg9ch^Nz+30nlpG!*QSj>Gt9= zs)1%77Xrb{;{*bs7S>q1gWVX477U70?h>U5b8f+`N~*J}-q~&o&=G6%F1K~)Bevc# zmEef%*%S>@#@ZST1giFnb@dTLQ}2)iod82N%cLsRV4S)JMF#tn$7OuUTv4Iydz?5+ z21MN|>E^BgvN#;+27L8hdqp%W!px&Vd=C)SRgQ7RL809gc$6m13wpfV%z#&5y~VoQ z(Q>tc*~~yQG{s;yO9)p>jYJLhIx!xFG<6OE*`fQ?=a?7=+jKRw*HNCeA)miRF6#hu%yL8uvDt85tmm34KhFyd;KJE&&zj6ra zwl}2eR2m-no)6p|Ve74+<~XoXz7jtym}K*E@WBDvtNlF08Jt)&8cAAC7B}zI7(g79 zSx_STLSj!X*AX+xyun#kdxTo5^KewQyjv2!e%XR64Vhvud3emSqRpI=)!Iuh%2&9> zGCe_ms8e!*&^OQ!KEkes0lUr`F~Gfh0D$s(Kp1VZ1*Bzyy~an}oJMF1Us0%vI?aOF zPN7#pTx^D$h+r0T0Ev0dY6Q0jnN&|8=k99Ck0(MuhIG%^h|}nFVBq$bEC@2BUe2Lw zKeXR9(+t?BhT>SfLMsfv31#jyS4>eg%XB8WhK-(yYbbo9?pK@fO$!|J;w(#tjF$v-fuX1Fi=ji0ol7i^r_aZkXoea#93P%JC0 zZ&j&g+%$!e#!z!=Sg8KvkpvDE#7>qk?i@FL*tU`@1@Qq}6_tWBm1ES&(YsO_`2;2D z9Bv{m_PUH)9<)7)b4eP_LxmZXKbT4u#Txv~t-$G;`0fge6`I54WuT)Ouv{35JP?Nk zrF1ZfLz)WcgNz}=iOw1NDi2I8*o-T)4c2CsE0Qs*G5*^t4luoponydMxP1r>+xbdfja6C7@uNOH<5 zuCWs*vy*CIg2EvLO9qGF#zD1m)8%06&6#xg2#7K=nEVjfXd6BI5g}KsyGee#ycCXr zD=oOYZZu? zkEu08a`}qu?}c)Xg$mF@X|`$vT(kfPDv3}DWl$+yOCar54}HKg;-f|GQid10j*_UL zYYX8y%2V1?=#cNYO0S)8Y|L696dTM|-IDWvTX8^$T4Om_^$4xez)Wm>n?7abX9nOlpWeCL5OdO}t%-#;AN(P$WsAWo3;qhs-|RMvyU_Gf)mM zf+L9g!YfE{89rm9v)*7t!^BH8TX$J7V`wB7P@3R=9YcaGWs!F`#v*$`%PFMT>R6uE z545mDIX}osOHSIzI3mIS00GDz$*K|zdi2BvENY6D0BDA|NZqqB-?mB%Rwi*{jArA4 zC44ipw4Px3g)lyy%E;Hskap-iOVyOTMvEZ*)TJ}O24dM2+D70$VQyV>GS|7>YpK7O zbx2+e<$5JGy6T!DK|ttQ`bG31x=6sOYX_#iR6scy#%52kWA@CJ8^x@B;nx7@%)V6M z4$l=Yr5ao6V_+Fw&GaQ(SNetW9au9A?{`RqxLp>0Savce3;`0Hn#~LeK^n;ZP|LdV z1ad3c4pk;-7TDor9_i?Z5U>I-V&&S!8d#*$tth~Oo0`!TXE?+Aj9J>i0ES>&zE8F# znw~>%+@>u^`^w=%AZs5H%agRQ_dLR(fC(z?YNZPix))zE_$>KUP!FW9kl)9&MRs)+ zfHwO;7ecd8HKxQEiHW8uy3A8Af0=s4k0PQeNNY4(6Jb%wXR#_{gJ9+r1%Y=rLWTlU zbr#*Dj5l?%R5Bl{Y@yLCg{^cZA%W2B60OxMXk#YhV^`5O!LYyC8AH8d@8&Qe&isT) zh7K&NC}NTmi<;wTF0)#Vz!Ze&?s5VsrHnlo6!J_e^3@BML#jG-MS5)j#$ip9(#Ca$ zkPS>A5nE8c3X2ZofNBCWGFdyYDknM76K7FA>6ax!iD)#@&L$PIu8K#@LRyuK-A)&| zt)pbFv=?j$)9kvoQk5MxYa92C1|!Z`J25@OF#_`TC4G=*i$$xrt@4GS^#xc)#Z};x z<^`&VXDGC}W~OU|$uoV@y%h^m+cI5Bo3W;}#Y&lQV{E7+cIqu>aH_+w1Tm%fjvc1~ z3D!5Bqd|r3JBsH6nk|Etv<=HBS-~pEfXgkkCuCUnVlNE+*q44(JA;%okP5x~xC@^S zYFeb)zR=(mDkfgZdeG}NLop@-FiqAVS#&rIqBZd52M5k#Dv$8Ts2i7$Xu4)=$K{x} zuXxibmsK(WUYaAsoA8Qk6fP(OjF!xY;FK!GJFLjsZ1Ls#^8b%gZtAaH*pb@#4fHhW` zgj9gcHBgXHC3fv#h4Y{l8n?4;LEa))7w`f3jd(*~+)DK?86ct%#R|is<%R`&WAz%c z7Qv4u9&$F|AZo95fepPIu?mK^Tr&_*=jfS2!3wKbE0onBS2yK}7!F$#)k9-OQ)Rv) zNG?@$!EjVf<;)Z*eNk2>O=D4CcSN zdk-$4d&_+G$pfzH0f`(`Xak$I%1fGHlADUtII@5N~HkabA-SRT&h%5EqYGsj3qqI&MDc+9`b*aRD9& zW3;EfVv0SsBrBz5wii`rca_a$u+p%x`IrlkP1HOfQl|-=tW`N&B&if$4>6*vw-)?HvJ{&|H1ZRVVeLtI7nZ8ZyA3i$;b~5k-}jua*LfKy^)AsiJeD$6*oyaa(KR zVU$iRX@KFOmk2Ci7*$uy0VBW>HD#s}8(MEKmS!f9RS=uLDxM)goCSiBK)l~Z;DP{g z;!=`XQq_2KJJ=nWrC-!JRQ;@Ti&D#?Y+~+bXgEB|gC|pVsf2AdZ8iPAur1&AN;X~2 z5x`RDm#hbhBf)ZE2tFb-uxbdkM;4Apk{h&2nPBO%Uf!^u+*WDqU3f+XRCnehbDr?X z2=^3<(77cfv`8>%Zlk<6Gq8oS!N#d_qNa3}M}06A2+Zk4MKYt)rWOd2n z;)Rz~60vMMbWH#!hArLy08s?%P_ELjeqe%+o2Y`MYZnSKNQGrZlb6{ zg>nQdn4k^O&=G(j8O7JUZB?qVmo+f4VdpWRqZ&%0beXdi3n@>;A=nWpd#Gg)Z3PKL z2IL7oSxQeK#mvuT8)n(B0R=T%z?`y;?)Qj8Ik&-AF!+?NOUrv@g*51kcYuOhCai|a zp?yUtMx4HK5A!mHut{*Rt*YFtzOmRxiNzCl@Dlo8cC8UHSDve@fR$olMUcZvt30t5 z3&6B1n)4Y#vvEcTD5o*Iz!K!phi?j~`iAH!U%6an7V>%mz2XVQLa@<%w=CQgpyBWm z?<%BNqFOshXjH!^Q`4wyXf6xO@f30<`z)zYDc~wy(d8Bg#HEyNfExGrh!-5Yd55xd z<1Qe^>|xPayhrwqOKlw9U|OWr?#f=F4>(aE&>pW*rlbarT1!LhEtC8=OLn@mTFoB1U9fus>DdEi0S*5T}(AjN`|?c z5G~2f$`NW&RJ8o-4~PNusaw60qNsfXEfk!p+ks0}N;e$^sayka=1Iudby2_vFT=zT zs+N&f`Ih8>j}f9GwWYjR_NH6m)r!1I?UNhdnReuC+EmUK@8wVvc@#yAW|qC7Ht8$pW;+`j^DBgAw;MJAP14?~w-R|obM$2?u&^tEjx9rT zK-c<+i<-V-b6WR?+3?LH@7W3&d4LUgm46#ERQ^oOFDlhV#G!a)yP0nX-H!AvyJZ1o z&wfZ|6tCh~2A#|zYedC3eEEwdglRUqXC^r=l7?f!l*1-7y=~$5kAq6-{v)l+0K!ua z3vcm@Y~=lWkaHP~0lu8sE0?!c7B9FzoRiD$RL!vCs7RL63>w4om-KcJtEJ&7b!4py zM?7JnvL{~V(Sj|Nd4H*SLa|uY%YT8y&qlnF)D_a9sb28|Exai`?&VB;2|ddIm3QVQ zl^{_OAf6(Mx8)7?19OE0TpjT(p!$JBcgX}fj!jt=WCS8CPbU8W5w6qV#8S0=^EDyF z3V{lXs{mUFZ5LIQ4-`*G_qG)={me$o+Mnheuk=pOxSSLDfJuUt_Jhsd>dZgEG~ZqW zp!h(o75)@Jnjh9$0tURpYg3jkPUVfJZvHhc@HPu`cmOD6lVO+LLj{)dV6SEh14%Pv zNgFPsicUoz5aSDG2g?Sbb&@^;W{P@TsRE^Cv|7YEN~gO9Cq{Gu3K3T9(;AooQDJkp z^KlC1!oSKY-wnTJh{{7U5Mi>JaQ62U-TGFgYg-OXO3}5nT*P6^RelJRFlR-^_`O+D z+;h=FeWf)k6fIP#%6QZ}yE!31yLc#uAROB-v2xq0#R>_6A-lS&=48ueoV=?OwkcA_ zpp62VY3S}K-Jx4Zj0H*vBTH*m^2NHVd8ZI6QH5+$mu~z*)L^a9_k^lJNGcNpGf6W0 zLW&KV0_8ExQi~-bC$Gu^TFa(lprKD$VimJN%36Sq4R-=7b|GMfK|>{8Y6`RlZNYq0 z3Ill7ie_wGX}XUP0~ZmG4%MwNP!LkKMF@h{EEIBP^9!g!$|~=YcY{{iy{0u)7W?xN z;>(6;fJ04S?}R@_t) zmR zfx6vFI91D60yak=Ei$CmEw~wCv-?fWWR*Ios1%+>7GfKfORY?`nY~mP>4w;u9;b76$t{Vh3 ztviXHt-1#jB9=zR<6BC$6yi?|((^5i7XeOV zvI1hS)CGynR0|R54AiCy`TqdtU-(?)=fH@qZuYa=>q$+Q-#yecSJ?um46vjQ!dbde`G_z@D((qRb|q7~gnsk2Qp7QcLgv&xTsSd)BMq&p(mn1Fgc=8Dw=7Bb zyVL!~w9VW@qH>F)#3}F={{Rw&86dh=3skTu*v0adls8j4a@8P9nNsx#Am5l7%XRe#|s|TZX)eIK^M;sh z5*SU@Lgh5xf>H&fBHf%@C~cN)#|85mAPoVC?JH8zSIG;(P;zd!nAupSFtunbLGyCy zjg)x$Ate;67pR~aZrJ=mli<^-Ve@+P%PE&k?93(5t)7%w4fH1nbnzy@93-OQ!jG+Xs7 zP&=(AceN;ewiuVFuB1J$x3AwiqZ9q#v>d8&hrEVLB z!U7DBoRE0vcBm(Qv#w_M!@ZW&R_X?bH6C zWqYeXVFHR(T!bu^^qh!0;E;e33o~I4cvWQ2HJApYJ%|pJ^$zAKi;5kWE}4o0 zm`kyg_VB|C*fai+#0ZY1)Hqpgpy@Qt^#BlxyC6{&UeFp97O&c2cA_IGmT~qorBHOS zS;JNR6E>JeLEzLlSEdX>m_Z=?rGNMk3bYd8Z3Akw8X;B^Pp92vhXqF}TE9`#UQV#d&K;eu3W zpBDs8R85^KQ~>4{`dbE#mKNi3nK0{l>JWh4t|dd{ln?k^skBv5LsAh+3fXNKHoRP8 z17a^J1c^R4C7LJVK;&kC7v;ow*h!|I;#v$sS5~mAM;W_ZQe-%we(GwUTPFWik(Vi9nNLRoyHU*d+zDp zO2`%W3AyRvC{lg{9a>6fG)oc{=W?2bR!%S!^>&Y8{TZdcz%-s&nv@rKV+5E~ux{U2cv0f_iLD2!fBI(}cD@H=N z%oE5CcjRGjVWWILBD2Ao=;Be-EU+t@sP0(DRv6r)T(x@&H>pq-UaOgK#w@_SK{yJE z?8V}v2f*oKVEd(1z1V45rRIpp8W{>8<%r2<)CIiX5z>Ie%+ycLyl&FBv577P#Z8Dfr>)!7;uF#vA+3(Ekk z#pciMEsfG)sbD#IgHq6D*ec0#ivakQ6){lqLSo@BW*Vt-tPs$Q68`{#D=b^}3|j`c zMpdhw$3LAA0DhvyO?Pv@bg@8qhH%OTk%|^Ny07yGti;7y`^8%D z(Yk+RyMPW&dmxFYypgem#p-VAI~NDH$x-QkqJfb0%vA2-h&!vUdYuD(L4Z$jTmxxv zczcNQy4ejni-=D-B`{L)?2Fj|+AglYN|}EZe@JJ+{{TEgPtT9)aKFVB3coR0#&&^% zlnQyvPqd>ankaaJ6WkzY%V0HLq%Oy2L zl`8MVQ(W}QvZ^`^eqv(T(p}5;TZ|^C@hrI9!f7f`{{RD|0E#%jd8BtWYco}dtD>g4 zje2D8J=si*Y{`e-7Pzoi2ZEqjR+(+YJHHgu`n#8cjV}ch1au(4 z*w{7sqE|_6??lZ|T&YeuV_FR}P6N!Wse;-^Y#_o_V&D}KVmQ@wkvWk=n|!XONiw^o zQ&GCd^V`*NEWjWso306rwM`lVCH?xTTmx$V0Jb2uz21&Q=Cf^L;YT!}6;2=`Tq=sV zYEiyP6CfdOlLv>iN_NytS5PMc^bNU)HU=&NSW005x)O@vhy?}RT;yF^Ep}t_O2Df( zq=@L{adW~lhc_7@4hFEzx>b9iYL1yG_KI4oRAQzrLUIo>$!l-9-OQAp0@ZTI7Ud3i z?FJ>Sx?qLDDAQ2@0-Y_iN_^|Pm3QH|=L&bYc&RFZwTlqkSW)5*swOSOc#K=ThI?5= zwS_#f8UR^Dm+-2(9C8qKRnU}f@dH6BfoiX5jmg`^eN1swF;|darC{&OVyVG6{y zVTIK~Z7RG%hPrf3!OX?pn7T9fmM<*J#kblroFbG9gd2MB_#R@atinp1+7iI6wW0;I z$YgF77&oS4BpeZ!%J4zRFC+k{p!Q}msInC*%YK@JYOu!9PdJA<3p2ta;57|Hf6mcOpdtH&s`P!FaFRONY$6{&Xcu;jt0Jvbb z7LHZ>yfWU{dr_d%V<~(O>WZlg?i6TOQ%)=16dHrxBHC!?=0fe}*+K800&6-b%Y^-az z>@`fM2$z)pp>`k0Q!>!6vN;Slhnx3?K`#|NbrqK|ftfOwjhTJFod_&Z$cM}GDpm@~ z9p%{!8+?vfmM!MyRWIDA2nenGFkW(QSev;-Bh2ecMWi$ZVTJzyL>iYb{{UC(L|vL1 zBN;2vRu~kcBaDy*UqW0a^cPhEL_Eg*5GpCGpbF*OyH$*Wp6t72UE5$wY7odS<6iw} z3u2y_ZVj~!Jd(_^TC+5J5}gGbP_hh+Zt%Zrng?B>=m=S8t~q7`4ZL4Z7cSkSBG|Zl ztB_&{7&g5;7ZWUihDNn3Kz7o8tSJ|oifwzSv@ADj$;HGcXhy|N!9WbQ#)_g8m|whl zYM`JO;};P|r7NWKe9FDST6JWg19B>yS&3effprau3wkI_DLXFUz!MR&0&cLW!4%H` z^8g~K4CEb@5%AX_D3%8T2%jtqR~#7#Vv8(=B0U4#KW(sjBM;&rHC5FPZn?w|wJU6K zH7FQpGRMX0XOa2Ja+2$BpJr0N#7*=s}Fb5*m8g#@$!rB+|F$n9+d-JrSUnYJR6ApFiZyC=-stC}Kqw=)DZyM4vDmy(#Z55RwY9h16>&B*9Z>px1K6s$5NbkUO!N&{@io z3rkqx(o4nRJU#oDV#+)WM*-|q38dK5iAKeTUzc+Am3K)CtK>;TONd?SrMc6L%Gkc+ zX!TvptAnzV_%kV)Tk=5R@0AVZz14b4nV{PMjS&9;3wxI@{{S1J_?E{5L^g~$#X?%F z6hjL0)N;fV7Uv!yHi^HIJ1s!9VHF$KSAi~wa%|t2)6=)G_*ex|OMLXO3sbv850trB zjrL$nNr2x2CjlygNuzfQAUGZ(SD{=(uSg5 z?ga&#<#RC8HuN#+rol^xw5@ehk<#=evYEOL#nN#yg$fX4(lDE+Q5+TRcQG5XFqOa{ za|yg9FxB8RKIsZj)_D&|OGFVIqk+*9gcV$k%=;N{$CzDQ%Zo^1Ec1K#seyK|jSKw3 z*bI194XYP=GJ#1GT$fF_odWNq3Zes8#IXjY4j>_V)4<2d)G<98K71aL5bx)5)1Wb? zF$23AJQ1VaT0|+o5L$2m$Pqiq3oJYipKD?O1KBYexA_cCje0nZy{cxa{{V1z#J3|* zSI9IoSX2B#DlNyk#}g<~$>4-wP7evXlv~Typ_j_7aRq26CdZks$@3Mk)Vw(+F__uQ zjn+AS)5OIv#hyq4IhhJSsI5JtVdKQ4%X_jSWCT=9rp^}%_S_W(^K?PWo_I(e4Vbhd z9IW(6L@xEQBp17uyaN<(#_+?TnyY$?gzb(AzlWln6|V+wT zR|~Oa6rs(h3_+xB+ON85Gy>y*x7bQZ>xzx91;=IeS=S^;8L_etEVYGgZLoP`2u>&k z;I%oKdytBT5y1Bb<~pdU8!s0DHomAPfbF}Ag=I@HSLEDWTek1{#?=iV20h%s^T-P? z@n;yJ}B!5g^Id3OfLW5HDR$2?KaqXO=nzje5w+2rBAI*czN zvw{GNP*fAAKH>V$AE-a$UwZ0NBV61O&q;|ta;;e+z zCv=-ch`QOJ6W*n^VdEKKyr7h?sOS*^+W!CnD1m1s zYujWV43w&@QEf|js@ujUF=EB9T|$*pT~)v&yK1}%THkr18lWE6P{FdL*rg#21~73g zR&Fsv@&%?<+hh9lz}z&lw!y*M9>GN{fWRF^T64VZ?P9}`Of{ld!xmxzMPbf~ZWG8U z^-{z=k^G?HbvMN$;0_c&k{RaFM?o=+4RM$Xa4455$dgo#$C4#tC6#_9HkG-wMFqUu z1!Qrk4~l%+4!ir|1TNcX(eN{H(B{E@AR49fikV<}x8|7eq1oU1!2*0S!VBWYqF+(S zS0dBe8h4tMvTInKSn+iG!DtXV0=y++maHdhUiOAVWO9{uHj zPbyvprVx<=7JN$WcUP~;0B>J4ai?#@rBvT$Ny!gzMX5ci%nHfYOi51GoRt*?O#}8z zphhuH;N6a@XjB^ST}lWS$gRe=R~uq>gWeL-uKkiW%PG74j?B6Ibkon znAJqPAabhpswJagYzk+W%m7Ck1*dN?5Q@@+UiTki<&mp6l)yGq)j(>%8MH09C1KVk zE%R}N8bwieUBtjT9t%TC|w;en&Wjw zy@Fh=qV@-_;p&)Om`dtkM;ObjI0K@(qve%w>dOUuLIP$>k?k^GrQ1w#E+Y9%CUMoB z(@=6|s)LT=Q@U1i)3hMWt(q>8$KnjM$BX6_GczTjtlI*MY0&fLE~rykquMuxi)RxC z(0du+Al6(L542*Eq7VF07Ko3Cs=b}1I{1jxZ$+tMJ8@1-j)E(!Plt@)k7zH0JIM{g z{uCij11rOXC;`dvzNK>(tie$E)C!=jHRj<&hS<_8bV_ETt8(JmU^~%yc^u40l&#z1 z);$dFn7ZJJo!!m_kGQbLQG+4?G!7OAuXseJFHQ~jFU5gGD*d1@TwPTjgF^1~Mtem? z@pmm_wCk(`b15p_3mP#;QM5|cgcz5D2&5g;LIHVf(_YQ;`IU^2?7CG}V^E744ApfJ z41tl?+`Tyrs>w3T*`dI+_i`fxz1+;%Ag=xp^BNNDZS`UP-ZQz!l@Qmq!&GHF#Q&0$R+a z!Q23a^D{)GjHuU1vGB)W>gtA`#H`(3P+6DBVTlzL!p+NA|#7qn>5rYJw@ zm$X^NGJ#M|dp+R(2CLy3{4y79{{S%U8@Q0L_aNhTI$DgWXY~Xfov0}mqMl>Ib{s6>I8L!sfr$Q~^(REZOuxK5#J}b1GDWV?R*_ z*rAuBh+LKrH!kDsjhiKMHM2{Y^p?6qg?tm(4`}g2vf!Kc0c5TE66GqrqO`1ONy~Qj zhfo{c@!YEIr_=&P3*-z_Tus;ZO}LK6IjkT-OS(C^zTt06_lOjHt|l!W?oclxY;24K zs^Tmy=yrQDk-N$ewuSkHjB(mXUp<%kId}S)uUpE9S-Ik~YRpGbdIj!xlT;d**0yg8n6krGr1lUwYH7i1ZD~;1AH=|{)*928V-h4$( zMDqS+24G&NLbDE3(9K{|SkxDhY_G;5wYRZGoif9dfUR7j4Wi0MCW2XM6F{8-%z2Lq zzk2Zklp$%8+>TVKp~VeAxmp%c=Q?6aku3xsFbQ(_CbG7OYX%Ekt2{)jK&htsVt}e^ zEvI>u{!FUiWo7HyV7Me78N^r>SA*T@p8o*2Y2_**xMG@pvXKmGQC>`MyWCbWfi3=o z+)2lIu}vEq&$z@YSSbBFi`zOay!*s}S}U6IC;{1b_XiPbED&&4oGh_Z z3(Q`Hv|KR})V_-gHgsqs7X*O6c=UF{!`xMKASGLjD2<|NGk8ICTDGd*Dq=Wz_K2O} z(?bz-kRDs82q3gp?j517@SSz`aLSNG$Yg-Ffw@JCf^wHo1#KD!2sPMTF44G$nuDWp zcdCVJnPRe#ZPbM={0NqcZpGBEs;^+28lG@58g6q3C9IXP>}Bo6Yq2Z^j7-R1y+x%v z1g2Jh8Pr`wOeL`nXlc47g{|K=Q3{$RWdhnA9G>#I0STR2F0K|F#g#3&pfOo>)cml( z8*rS(NDc6lXLVu=R|Oi2qL;iVhbe@pHHh6xaGfx@mi~w@L+AY>={K);DU3e`8I9!~ z6mU)$fH$FBrYqS&7TorkOB8dI;Csswof8|z)}jt~x`mn-G_@)Z?w9P(htv*-)j`H@S zmxA+)i>QRMidUBSm_dSouDEJjGPA;iH&vABE^ z;^iX;71Q?vih!UUx{j3;T$qQvlV^k;o;~B} zprF1ZAvH?@g(Q00TdN3(nXuVY%FDgmtT*q7+HU|bAk2U%b@IW4s>xmP9)~asXv^_Z zx($>Mjm4DTCCXwC1)_CXmna}+XoHj1e)5A6v{=xW%hLfrXqAiIv)c`Sp#=iBm!HJ3?HuO> z5V%A|W%_{y;M3+aFu7D&Hzfl^Hr>87FS&@yf*E#ZQkp=iplh0r)TvZjNM5D@$*j1{ zXi~X^Ksa(Ef`i?;TYqTPx%X-iI{HB%wkwW|R*ERjo$16=32$*2*^=>j^D2TK+&~)3 zZP{f?s$`^ZH!f_9adQ6C5ljIiPfQbPV#<3Y1@Ofe^D=zZRaJOfc4@`u^k z&&*7obgYjm*~MUZ)b+U8(BiORQi1ldv4q9@8! z$v6Qcu3|+p&nK~hQFqCvr3G5wd6X0p#VgUM&{Jk8ji!HKjUTq5qXQ#)hM=#@aD7Yk z9*E2IT)A@M&5~T%X4eGbFsY2e0_Gi{gN|dUDYEG5Cv%7^?TS@usMS{ynik3b0OA=* zRUuza;upon7$fUFqcv#+s8;6yS8YYbsiP(jFu-dxXTF z3WI{exW<^#%vizVl7jS#vZB!;Z8uDfllY@2d4ve8-6kxe@6@_EiR7I%^x-suFjVPr`0PWG6 ze*{Hh8p70UsBmL7;g=H#J+FJIf@W%zFK!?z6SA)FYZU@1odIr zK}2zu8|P4n+bvUw79nyA8YZ+=QyDEnG#QQ9?+`Rtkzg%X-OHxii+}^0S!9Gott$4k zV>pyiAbyC~migINrgvP-USV?VK(P|V~NvRy#5D02HCPExixj1*A= z5mL}(ckfUgI;5jE;^Ed%v~0v11sh6fI=O+ct=KW3Y#B3{W0@+Ay(|jIZs@oKZ}LHj zrUttDsKntLR+CQt`AcMbNNfaj=ZfHMsKRJv5~Y*7sMv~L=&SdYs2)IkOmniRMtz9B zg^eb9ZH=zjR#|yPro^F59*sbPtMDK5iOmTJE4S@2(;WmW1KLxHjtf-VU$pfe9IAo=_xI%mIH7BbPHL{!gy`@ z%5?db=x#Y9im2Ivb*CgsNu|^mY%HyhWUTQLH4AQ@qLanMwlNxM`(=|4rl^f4$&z8s zp5iPJ{L)q{o=QKcQIRmKf2d%o(uKzT!v3NKbD#DhptaD=Lg;LACoxkD5N}Z3I~|X? z%payS`$9FIVl`C;$O~9Rk?P7k!CU%q0_xspNQGU_+RZ$Z0e;PobD3TV+)g9zBQh6V zoG@Q?)9lV@Ljs_8a{X>Bxqg9{E?gzWg=StocP=oCV%R0n-)yr1D5c;fdckHnViGy< zJk&s76b7zfz2wAHhzjO7gp^(CQ`+#y3|mA|HmQ@w9M&PoENJPMVznDEJ4FntXa+|) zTMpyP#&p7B¨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 E*_y}S2mk;8 literal 0 HcmV?d00001 diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 85af2ad..48d1615 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -1,16 +1,15 @@ -
+
-

Dashboard Kelurahan

-

Ringkasan data kelayakan penerima BLT-DD seluruh dusun

+

Dashboard Kelurahan

+

Ringkasan data kelayakan penerima BLT-DD

-
- - {{-- โ”€โ”€ BELL NOTIFIKASI โ”€โ”€ --}} +
+ {{-- BELL --}}
- - {{-- Clock --}} -
+ {{-- CLOCK --}} +
@@ -43,121 +41,112 @@ -
+
- {{-- GREETING + NOTIFIKASI (asli tidak diubah, hanya ganti class ke inline style) --}} -
-
+ {{-- GREETING --}} +
+
{{ strtoupper(substr(Auth::user()->name ?? 'A', 0, 1)) }}
@@ -166,11 +155,9 @@ function clearNotifs() { NS.clearAll(); renderNotifs(); }

Panel admin โ€” kelola dan pantau seluruh data warga.

-
-
- - - +
+
+

{{ $totalPending ?? 0 }} data menunggu verifikasi

@@ -179,303 +166,200 @@ function clearNotifs() { NS.clearAll(); renderNotifs(); }
- {{-- STAT CARDS (asli tidak diubah, ganti ke inline style) --}} -
+ {{-- STAT CARDS --}} +
-
+ @php + $cards = [ + ['label'=>'Total Warga','sub'=>'Dari semua dusun','val'=>$totalWarga??0,'grad'=>'#2563eb,#1d4ed8','shadow'=>'rgba(37,99,235,.3)','icon'=>'M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z','tc'=>'rgba(191,219,254,.9)'], + ['label'=>'Pending','sub'=>'Belum diproses','val'=>$totalPending??0,'grad'=>'#f59e0b,#d97706','shadow'=>'rgba(245,158,11,.3)','icon'=>'M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(254,243,199,.9)'], + ['label'=>'Diterima','sub'=>'Sudah ditetapkan','val'=>$totalPenerima??0,'grad'=>'#10b981,#059669','shadow'=>'rgba(16,185,129,.3)','icon'=>'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(167,243,208,.9)'], + ['label'=>'Ditolak','sub'=>'Tidak memenuhi syarat','val'=>$totalDitolak??0,'grad'=>'#f43f5e,#e11d48','shadow'=>'rgba(244,63,94,.3)','icon'=>'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(254,205,211,.9)'], + ]; + @endphp + + @foreach($cards as $c) +
-

Total Warga Masuk

-

{{ $totalWarga ?? 0 }}

-

Dari semua dusun

+

{{ $c['label'] }}

+

{{ $c['val'] }}

+

{{ $c['sub'] }}

-
- -
-
- -
-
-
-

Pending Verifikasi

-

{{ $totalPending ?? 0 }}

-

Belum diproses

-
-
- -
-
- -
-
-
-

Diterima / Ditetapkan

-

{{ $totalPenerima ?? 0 }}

-

Sudah ditetapkan

-
-
- -
-
- -
-
-
-

Ditolak

-

{{ $totalDitolak ?? 0 }}

-

Tidak memenuhi syarat

-
-
- +
+
+ @endforeach
- {{-- GRAFIK + DATA PER DUSUN (logika PHP asli 100% tidak diubah) --}} -
+ {{-- GRAFIK + DATA PER DUSUN --}} +
+ {{-- Grafik --}}
-
+
-
-

Jumlah Warga per Dusun

+
+

Warga per Dusun

- {{ $wargaPerDusun->sum('total') }} total warga + {{ $wargaPerDusun->sum('total') }} total
-
+
@php - $dusuns = $wargaPerDusun->values(); - $n = max($dusuns->count(), 1); - $maxV = max((int)$dusuns->max('total'), 1); - - $W = 560; $H = 210; - $pL = 40; $pR = 20; - $pT = 30; $pB = 45; - $cW = $W - $pL - $pR; - $cH = $H - $pT - $pB; - - $step = max(1, (int)ceil($maxV / 4)); - $yTicks = range(0, $maxV + $step, $step); - - $pts = []; - foreach ($dusuns as $i => $d) { - $x = $pL + ($n === 1 ? $cW / 2 : ($i / ($n - 1)) * $cW); - $y = $pT + $cH - ($d->total / $maxV) * $cH; - $pts[] = ['x' => round($x, 1), 'y' => round($y, 1), 'val' => $d->total, 'name' => $d->dusun]; + $dusuns=$wargaPerDusun->values(); + $n=max($dusuns->count(),1); + $maxV=max((int)$dusuns->max('total'),1); + $W=560;$H=200;$pL=40;$pR=20;$pT=28;$pB=44; + $cW=$W-$pL-$pR;$cH=$H-$pT-$pB; + $step=max(1,(int)ceil($maxV/4)); + $yTicks=range(0,$maxV+$step,$step); + $pts=[]; + foreach($dusuns as $i=>$d){ + $x=$pL+($n===1?$cW/2:($i/($n-1))*$cW); + $y=$pT+$cH-($d->total/$maxV)*$cH; + $pts[]=['x'=>round($x,1),'y'=>round($y,1),'val'=>$d->total,'name'=>$d->dusun]; } - - $poly = implode(' ', array_map(fn($p) => "{$p['x']},{$p['y']}", $pts)); - $firstPt = $pts[0]; - $lastPt = $pts[count($pts)-1]; - $botY = $pT + $cH; - $areaPath = "M {$firstPt['x']},{$firstPt['y']} " - . implode(' ', array_map(fn($p) => "L {$p['x']},{$p['y']}", array_slice($pts, 1))) - . " L {$lastPt['x']},{$botY} L {$firstPt['x']},{$botY} Z"; + $poly=implode(' ',array_map(fn($p)=>"{$p['x']},{$p['y']}",$pts)); + $firstPt=$pts[0];$lastPt=$pts[count($pts)-1]; + $botY=$pT+$cH; + $areaPath="M {$firstPt['x']},{$firstPt['y']} ".implode(' ',array_map(fn($p)=>"L {$p['x']},{$p['y']}",array_slice($pts,1)))." L {$lastPt['x']},{$botY} L {$firstPt['x']},{$botY} Z"; @endphp - - + - - + + - @foreach($yTicks as $t) - @if($t <= $maxV + $step) - @php $gy = $pT + $cH - min($t, $maxV) / $maxV * $cH; @endphp - - {{ $t }} + @if($t<=$maxV+$step) + @php $gy=$pT+$cH-min($t,$maxV)/$maxV*$cH; @endphp + + {{ $t }} @endif @endforeach - - Jumlah Warga - - + - - + @foreach($pts as $p) - {{ $p['val'] }} - {{ Str::limit($p['name'], 9) }} + {{ $p['val'] }} + {{ Str::limit($p['name'],8) }} @endforeach - Dusun
+ {{-- Data per dusun --}}
-
-
-

Data Per Dusun

+
+
+

Per Dusun

-
- @php $maxDusun = $wargaPerDusun->max('total') ?: 1; @endphp +
+ @php $maxDusun=$wargaPerDusun->max('total')?:1; @endphp @foreach($wargaPerDusun as $data) -
-
-
-
- - - -
- {{ $data->dusun }} -
- {{ $data->total }} -
-
-
-
+
+
+ {{ $data->dusun }} + {{ $data->total }}
+
+
+
+
@endforeach
- {{-- TOP 10 โ€” full width, tambah kolom Dusun & RT, logika asli 100% tidak diubah --}} + {{-- TOP 10 --}}
-
+
-
+

Top 10 Probabilitas Tertinggi

-

Seluruh dusun โ€” diurutkan dari probabilitas terbesar

+

Diurutkan dari probabilitas terbesar

-
-
- โ‰ฅ70% - 40โ€“70% - <40% -
- - Lihat Semua - - -
+ + Lihat Semua + +
-
+
- + - - + - + @forelse($topWarga as $index => $warga) - - {{-- Rank (asli) --}} - - - {{-- Nama (asli) --}} - + + - - {{-- NIK (asli) --}} - - - {{-- Dusun (ditambahkan โ€” pakai $warga->dusun yang sudah ada di data asli) --}} - - - {{-- RT (ditambahkan โ€” pakai $warga->rt jika ada) --}} - - - {{-- Penghasilan (asli) --}} - - - {{-- Probabilitas (asli) --}} - - - {{-- Status (asli) --}} - - + + + + + + + + @empty - - - + @endforelse
Rank# Nama NIKDusunRTDusun / RT PenghasilanProbabilitasProbabilitas Status
- @if($index == 0) -
1
- @elseif($index == 1) -
2
- @elseif($index == 2) -
3
- @else -
{{ $index + 1 }}
- @endif -
-
-
- {{ strtoupper(substr($warga->nama, 0, 1)) }} -
-
-
{{ $warga->nama }}
-
{{ $warga->pekerjaan }}
-
+
+ @php + $rk = ['linear-gradient(135deg,#f59e0b,#d97706)','linear-gradient(135deg,#94a3b8,#64748b)','linear-gradient(135deg,#f97316,#ea580c)']; + $bg = $index < 3 ? $rk[$index] : '#f1f5f9'; + $tc = $index < 3 ? '#fff' : '#64748b'; + @endphp +
{{ $index+1 }}
+
+
+
+ {{ strtoupper(substr($warga->nama,0,1)) }}
-
- {{ $warga->nik }} - - - {{ $warga->dusun }} - - - RT {{ str_pad($warga->rt ?? '0', 3, '0', STR_PAD_LEFT) }} - - Rp {{ number_format($warga->penghasilan, 0, ',', '.') }} - - @php - $sc = $warga->probabilitas >= 70 ? '#10b981' : ($warga->probabilitas >= 40 ? '#f59e0b' : '#f43f5e'); - $scB = $warga->probabilitas >= 70 ? '#f0fdf4' : ($warga->probabilitas >= 40 ? '#fffbeb' : '#fff1f2'); - @endphp -
-
-
-
- - {{ number_format($warga->probabilitas, 1) }}% - +
+
{{ $warga->nama }}
+
{{ $warga->pekerjaan }}
-
- @if($warga->status == 'pending') - - Pending - - @elseif($warga->status == 'diterima') - - Diterima - - @elseif($warga->status == 'ditolak') - - Ditolak - - @else - - {{ ucfirst($warga->status) }} - - @endif -
{{ $warga->nik }} +
+ {{ $warga->dusun }} + RT {{ str_pad($warga->rt??'0',3,'0',STR_PAD_LEFT) }} +
+
Rp {{ number_format($warga->penghasilan,0,',','.') }} + @php $sc=$warga->probabilitas>=70?'#10b981':($warga->probabilitas>=40?'#f59e0b':'#f43f5e'); @endphp +
+
+
+
+ {{ number_format($warga->probabilitas,1) }}% +
+
+ @php + $st=['pending'=>['#fffbeb','#b45309','#fde68a','Pending'],'diterima'=>['#f0fdf4','#166534','#bbf7d0','Diterima'],'ditolak'=>['#fff1f2','#be123c','#fecdd3','Ditolak']]; + $s=$st[$warga->status]??['#eff6ff','#1d4ed8','#bfdbfe',ucfirst($warga->status)]; + @endphp + + {{ $s[3] }} + +
-
-
- -
-

Belum ada data warga

-
-
Belum ada data warga
diff --git a/resources/views/admin/data-akun.blade.php b/resources/views/admin/data-akun.blade.php index fe6d631..ad4802c 100644 --- a/resources/views/admin/data-akun.blade.php +++ b/resources/views/admin/data-akun.blade.php @@ -1,299 +1,383 @@ -
+
-

Data Akun

-

Kelola akun Admin & RT yang menggunakan sistem.

+

Data Akun

+

Kelola akun Admin & RT yang menggunakan sistem

-
- - - - @if(isset($users) && method_exists($users, 'total')) - {{ $users->total() }} akun terdaftar - @endif + @if(isset($users) && method_exists($users,'total')) +
+ + {{ $users->total() }} akun terdaftar
+ @endif
-
+ + + {{-- FLASH --}} + @if(session('success')) +
+ + {{ session('success') }}
+ @endif + @if(session('error')) +
+ + {{ session('error') }} +
+ @endif - {{-- TABLE CARD --}} -
- -
-
-
- - Daftar Akun - @if(isset($users) && method_exists($users, 'total')) - ({{ $users->total() }} akun) - @endif - -
- @if(isset($users) && method_exists($users, 'currentPage') && $users->lastPage() > 1) - Hal. {{ $users->currentPage() }} / {{ $users->lastPage() }} - @endif + {{-- SEARCH --}} +
+
+
+

Pencarian

+
+
+
+ +
- -
- - - - - - - - - - - - - - - - - - - - - @forelse($users ?? [] as $u) - @php - $isMe = ($u->id === auth()->id()); - $isActive = isset($u->is_active) ? (bool)$u->is_active : true; - $isAdmin = $u->role === 'admin'; - $newRole = $isAdmin ? 'rt' : 'admin'; - $newRoleLabel = $isAdmin ? 'RT' : 'Admin'; - $initial = strtoupper(substr($u->name, 0, 1)); - $avatarGrad = $isAdmin - ? 'from-emerald-500 to-emerald-600 shadow-emerald-200' - : 'from-blue-500 to-blue-600 shadow-blue-200'; - @endphp - - - - {{-- NAMA --}} - - - {{-- EMAIL --}} - - - {{-- ROLE --}} - - - {{-- STATUS --}} - - - {{-- AKSI --}} - - - - @empty - - - - @endforelse - -
NamaEmailRoleStatusAksi
-
-
-
- {{ $initial }} -
- @if($isActive) - - @endif -
-
-
- {{ $u->name }} - @if($isMe) - Kamu - @endif -
-
ID #{{ $u->id }}
-
-
-
- {{ $u->email }} - - @if($isAdmin) - - - - - Admin - - @else - - - - - RT - - @endif - - @if($isActive) - - - Aktif - - @else - - - Nonaktif - - @endif - -
- @if($isMe) - - - - - Terkunci - - @else - {{-- UBAH ROLE --}} - - @csrf - - - - - {{-- AKTIF / NONAKTIF --}} -
- @csrf - -
- - {{-- HAPUS --}} -
- @csrf - @method('DELETE') - -
- @endif -
-
-
-
- - - -
-
-

Belum ada akun

- @if(request()->filled('q')) -

Tidak ada hasil untuk "{{ request('q') }}"

- โ† Hapus pencarian - @endif -
-
-
-
- - {{-- PAGINATION --}} - @if(isset($users) && method_exists($users, 'links') && $users->hasPages()) -
- {{ $users->appends(request()->query())->links() }} -
+ + @if(request()->filled('q')) + + + @endif - - {{-- CREDIT WATERMARK --}} -
- - - - Aplikasi SiBantuDes - ยท - Desa Ngerong -
-
- +
+ {{-- TABLE CARD --}} +
+
+
+
+ + Daftar Akun + @if(isset($users) && method_exists($users,'total')) + ({{ $users->total() }} akun) + @endif + +
+ @if(isset($users) && method_exists($users,'currentPage') && $users->lastPage() > 1) + Hal. {{ $users->currentPage() }} / {{ $users->lastPage() }} + @endif +
+ + {{-- โ”€โ”€ DESKTOP TABLE โ”€โ”€ --}} +
+ + + + + + + + + + + + @forelse($users ?? [] as $u) + @php + $isMe = ($u->id === auth()->id()); + $isActive = isset($u->is_active) ? (bool)$u->is_active : true; + $isAdmin = $u->role === 'admin'; + $newRole = $isAdmin ? 'rt' : 'admin'; + $newRoleLabel = $isAdmin ? 'RT' : 'Admin'; + $initial = strtoupper(substr($u->name,0,1)); + $avBg = $isAdmin + ? 'background:linear-gradient(135deg,#10b981,#059669);' + : 'background:linear-gradient(135deg,#3b82f6,#2563eb);'; + @endphp + + + {{-- NAMA --}} + + + {{-- EMAIL --}} + + + {{-- ROLE --}} + + + {{-- STATUS --}} + + + {{-- AKSI --}} + + + @empty + + @endforelse + +
NamaEmailRoleStatusAksi
+
+
+
{{ $initial }}
+ @if($isActive)
@endif +
+
+
+ {{ $u->name }} + @if($isMe) + Kamu + @endif +
+
ID #{{ $u->id }}
+
+
+
+ {{ $u->email }} + + @if($isAdmin) + + Admin + + @else + + RT + + @endif + + @if($isActive) + + Aktif + + @else + + Nonaktif + + @endif + +
+ @if($isMe) + + + Terkunci + + @else + {{-- Ubah role --}} +
+ @csrf + + +
+ + {{-- Toggle aktif --}} +
+ @csrf + +
+ + {{-- Hapus --}} +
+ @csrf @method('DELETE') + +
+ @endif +
+
+
+
+ +
+

Belum ada akun

+ @if(request()->filled('q')) +

Tidak ada hasil untuk "{{ request('q') }}"

+ โ† Hapus pencarian + @endif +
+
+
+ + {{-- โ”€โ”€ MOBILE CARD VIEW โ”€โ”€ --}} +
+ @forelse($users ?? [] as $u) + @php + $isMe = ($u->id === auth()->id()); + $isActive = isset($u->is_active) ? (bool)$u->is_active : true; + $isAdmin = $u->role === 'admin'; + $newRole = $isAdmin ? 'rt' : 'admin'; + $newRoleLabel = $isAdmin ? 'RT' : 'Admin'; + $initial = strtoupper(substr($u->name,0,1)); + $avBg = $isAdmin + ? 'background:linear-gradient(135deg,#10b981,#059669);' + : 'background:linear-gradient(135deg,#3b82f6,#2563eb);'; + @endphp +
+
+
+
{{ $initial }}
+ @if($isActive)
@endif +
+
+
+ {{ $u->name }} + @if($isMe) + Kamu + @endif +
+
{{ $u->email }}
+
+
+ +
+ @if($isAdmin) + Admin + @else + RT + @endif + + @if($isActive) + Aktif + @else + Nonaktif + @endif + + ID #{{ $u->id }} +
+ +
+ @if($isMe) + + + Terkunci + + @else +
+ @csrf + + +
+ +
+ @csrf + +
+ +
+ @csrf @method('DELETE') + +
+ @endif +
+
+ @empty +
+

Belum ada akun

+
+ @endforelse +
+ + {{-- PAGINATION --}} + @if(isset($users) && method_exists($users,'links') && $users->hasPages()) +
+ {{ $users->appends(request()->query())->links() }} +
+ @endif + + {{-- WATERMARK --}} +
+ + SiBantuDes ยท Desa Ngerong +
+
+ + + \ No newline at end of file diff --git a/resources/views/admin/data-warga.blade.php b/resources/views/admin/data-warga.blade.php index 0536a25..4cfd2b9 100644 --- a/resources/views/admin/data-warga.blade.php +++ b/resources/views/admin/data-warga.blade.php @@ -1,138 +1,137 @@ -
+
-

Data Warga

-

Kelola dan pantau seluruh data warga dari semua dusun

+

Data Warga

+

Kelola dan pantau seluruh data warga dari semua dusun

-
+
- {{ \Carbon\Carbon::now('Asia/Jakarta')->translatedFormat('l, d F Y') }} โ€” {{ \Carbon\Carbon::now('Asia/Jakarta')->format('H:i') }} WIB + {{ \Carbon\Carbon::now('Asia/Jakarta')->translatedFormat('d F Y') }} โ€” {{ \Carbon\Carbon::now('Asia/Jakarta')->format('H:i') }} WIB
- {{-- FLASH --}} @if(session('success')) -
+
{{ session('success') }}
@endif @if(session('error')) -
+
{{ session('error') }}
@endif - {{-- SEARCH --}} -
+
-

Pencarian

+

Pencarian & Filter

-
-
+ +
- - - @if(request()->filled('q')) - + @endif
-
- @csrf - @method('DELETE') + @csrf @method('DELETE')
- {{-- TABLE --}}
-
+
-
+
Daftar Warga @if(isset($wargas) && method_exists($wargas,'total')) @@ -160,17 +158,13 @@ @endif
-
+
- - - - - - + + @@ -188,57 +182,56 @@ if(strtolower($warga->pekerjaan??'')==='tidak bekerja') $positive[]='Tidak bekerja'; elseif(in_array(strtolower($warga->pekerjaan??''),['buruh harian','buruh','petani','nelayan'])) $positive[]='Pekerjaan tergolong rentan'; else $negative[]='Memiliki pekerjaan relatif stabil'; - if(($warga->penghasilan??0)<=1000000) $positive[]='Penghasilan rendah'; elseif(($warga->penghasilan??0)<=2000000) $positive[]='Penghasilan tergolong rendah'; else $negative[]='Penghasilan relatif tinggi'; - if(($warga->jumlah_tanggungan??0)>=4) $positive[]='Tanggungan banyak'; elseif(($warga->jumlah_tanggungan??0)>=2) $positive[]='Tanggungan cukup banyak'; else $negative[]='Tanggungan sedikit'; - $aset=strtolower($warga->aset_kepemilikan??''); if(str_contains($aset,'mobil')) $negative[]='Memiliki aset mobil'; if(str_contains($aset,'motor')) $negative[]='Memiliki kendaraan bermotor'; if(str_contains($aset,'rumah')) $negative[]='Memiliki aset rumah'; if(in_array($aset,['tidak ada','-','tidak punya'])) $positive[]='Tidak memiliki aset berarti'; - if(strtolower($warga->bantuan_lain??'')==='ya') $negative[]='Sudah menerima bantuan lain'; else $positive[]='Belum menerima bantuan lain'; - if(($warga->usia??0)>=60) $positive[]='Usia lanjut'; elseif(($warga->usia??0)>=45) $positive[]='Usia cukup rentan'; - $summary='Nilai kelayakan dihitung berdasarkan pekerjaan, penghasilan, tanggungan, aset, bantuan lain, dan usia.'; + // Parameter baru + if(strtolower($warga->kondisi_rumah??'')==='tidak layak') $positive[]='Kondisi rumah tidak layak huni'; + elseif(strtolower($warga->kondisi_rumah??'')==='sedang') $positive[]='Kondisi rumah sedang'; + else $negative[]='Kondisi rumah layak'; + if(($warga->meteran_listrik??'')==='450VA') $positive[]='Meteran listrik 450VA'; + elseif(($warga->meteran_listrik??'')==='900VA') $positive[]='Meteran listrik 900VA'; + else $negative[]='Meteran listrik 1300VA ke atas'; + if(strtolower($warga->sumber_air??'')==='sungai') $positive[]='Sumber air sungai'; + elseif(strtolower($warga->sumber_air??'')==='sumur') $positive[]='Sumber air sumur'; + else $negative[]='Sumber air PDAM'; + + $summary='Nilai kelayakan dihitung berdasarkan pekerjaan, penghasilan, tanggungan, aset, bantuan lain, usia, kondisi rumah, meteran listrik, dan sumber air.'; if(count($positive)&&count($negative)) $summary.=' Terdapat faktor pendukung dan pengurang.'; elseif(count($positive)) $summary.=' Faktor mayoritas mendukung kelayakan.'; else $summary.=' Faktor mayoritas menurunkan kelayakan.'; $dp=[ - 'nik'=>$warga->nik, - 'no_kk'=>$warga->no_kk??'-', - 'nama_lengkap'=>$warga->nama_lengkap, - 'jenis_kelamin'=>$warga->jenis_kelamin??'-', + 'nik'=>$warga->nik,'no_kk'=>$warga->no_kk??'-', + 'nama_lengkap'=>$warga->nama_lengkap,'jenis_kelamin'=>$warga->jenis_kelamin??'-', 'tempat_lahir'=>$warga->tempat_lahir??'-', 'tanggal_lahir'=>$warga->tanggal_lahir?\Carbon\Carbon::parse($warga->tanggal_lahir)->translatedFormat('d F Y'):'-', - 'usia'=>$warga->usia??'-', - 'status_perkawinan'=>$warga->status_perkawinan??'-', - 'alamat'=>$warga->alamat??'-', - 'desa'=>$warga->desa??'-', + 'usia'=>$warga->usia??'-','status_perkawinan'=>$warga->status_perkawinan??'-', + 'alamat'=>$warga->alamat??'-','desa'=>$warga->desa??'-', 'aset_kepemilikan'=>$warga->aset_kepemilikan??'-', - 'pekerjaan'=>$warga->pekerjaan??'-', - 'penghasilan'=>$warga->penghasilan??0, - 'jumlah_tanggungan'=>$warga->jumlah_tanggungan??'-', - 'bantuan_lain'=>$warga->bantuan_lain??'-', - 'status_verifikasi'=>$warga->status_verifikasi??'-', - 'tracking_status'=>$warga->tracking_status??'-', - 'dusun'=>$warga->rt->dusun->nama_dusun??'-', - 'rt'=>$warga->rt->nomor_rt??'-', + 'kondisi_rumah'=>$warga->kondisi_rumah??'-', + 'meteran_listrik'=>$warga->meteran_listrik??'-', + 'sumber_air'=>$warga->sumber_air??'-', + 'pekerjaan'=>$warga->pekerjaan??'-','penghasilan'=>$warga->penghasilan??0, + 'jumlah_tanggungan'=>$warga->jumlah_tanggungan??'-','bantuan_lain'=>$warga->bantuan_lain??'-', + 'status_verifikasi'=>$warga->status_verifikasi??'-','tracking_status'=>$warga->tracking_status??'-', + 'dusun'=>$warga->rt->dusun->nama_dusun??'-','rt'=>$warga->rt->nomor_rt??'-', 'probability'=>optional($warga->prediksiKelayakan)->probability, 'recommendation'=>optional($warga->prediksiKelayakan)->recommendation, - 'positive'=>$positive, - 'negative'=>$negative, - 'summary'=>$summary, + 'positive'=>$positive,'negative'=>$negative,'summary'=>$summary, 'input_oleh'=>optional($warga->user)->name??(optional($warga->user)->email??'-'), 'created_at'=>optional($warga->created_at)->translatedFormat('d F Y, H:i')??'-' ]; @@ -246,37 +239,34 @@ @endphp - - - - - - - @@ -351,7 +335,9 @@ @if(isset($wargas) && method_exists($wargas,'links') && $wargas->hasPages()) -
{{ $wargas->links() }}
+
+ {{ $wargas->links() }} +
@endif @@ -359,19 +345,30 @@
NIKNamaDusun / RTNama / PekerjaanDusun ยท RT Penghasilan Probabilitas Tracking
{{ $warga->nik }} -
+
{{ strtoupper(substr($warga->nama_lengkap,0,1)) }}
-
{{ $warga->nama_lengkap }}
+
{{ $warga->nama_lengkap }}
{{ $warga->pekerjaan??'-' }}
-
{{ $warga->rt->dusun->nama_dusun??'-' }}
+
{{ $warga->rt->dusun->nama_dusun??'-' }}
RT {{ str_pad($warga->rt->nomor_rt??'-',3,'0',STR_PAD_LEFT) }}
+ Rp {{ number_format($warga->penghasilan??0,0,',','.') }} @if($probPct !== null)
-
+
+
+
{{ number_format($probPct,1) }}%
@else โ€” @endif
@if($trk==='terkirim') Terkirim @@ -288,14 +278,12 @@ โ€” @endif
- @if($trk==='terkirim') @csrf @@ -305,20 +293,17 @@ @endif - @if($trk==='sedang_validasi') - Lanjutkan lewat filterisasi + Lanjut filterisasi @endif - @if($trk==='selesai') - @if(($warga->status_verifikasi ?? '') === 'disetujui') + @if(($warga->status_verifikasi??'') === 'disetujui') Diterima - @elseif(($warga->status_verifikasi ?? '') === 'ditolak') - Tidak Diterima + @elseif(($warga->status_verifikasi??'') === 'ditolak') + Ditolak @else Pending @endif -
@csrf
-
+ + + + + + + + + + + + + @forelse(($candidates??[]) as $index => $w) + @php + $prob = $w->prob ?? optional($w->prediksiKelayakan)->probability; + $probPct = $prob !== null ? ($prob<=1 ? $prob*100 : $prob) : null; + $sc = $probPct !== null ? ($probPct>=70?'#10b981':($probPct>=40?'#f59e0b':'#f43f5e')) : '#e5e7eb'; + $picked = isset($pickedIds) ? $pickedIds->contains($w->id) : false; + $rank = (($candidates->currentPage()-1)*$candidates->perPage())+$index+1; + @endphp + -
-
RankNamaNIKDusunProbabilitasStatusFinal
- - - - - - - - - + {{-- Rank --}} + + + {{-- Nama --}} + + + {{-- NIK --}} + + + {{-- Dusun --}} + + + {{-- Probabilitas --}} + + + {{-- Status verifikasi --}} + + + {{-- Final (terpilih) --}} + - + @empty + + @endforelse + +
RankingNamaNIKDusunProbabilitasStatusFinal + @php + $rk = ['linear-gradient(135deg,#f59e0b,#d97706)','linear-gradient(135deg,#94a3b8,#64748b)','linear-gradient(135deg,#f97316,#ea580c)']; + $rbg = $rank<=3 ? $rk[$rank-1] : '#f1f5f9'; + $rtc = $rank<=3 ? '#fff' : '#64748b'; + @endphp +
{{ $rank }}
+
+
+
+ {{ strtoupper(substr($w->nama_lengkap,0,1)) }} +
+ {{ $w->nama_lengkap }} +
+
+ {{ $w->nik }} + + {{ optional(optional($w->rt)->dusun)->nama_dusun ?? '-' }} + + @if($probPct !== null) +
+
+
+
+ {{ number_format((float)$probPct,1) }}% +
+ @else + โ€” + @endif +
+ @php + $sv=['pending'=>['#fffbeb','#b45309','#fde68a','Pending'],'disetujui'=>['#f0fdf4','#166534','#bbf7d0','Disetujui'],'ditolak'=>['#fff1f2','#9f1239','#fecdd3','Ditolak']]; + $sv=$sv[$w->status_verifikasi??'']??['#f3f4f6','#6b7280','#e5e7eb',ucfirst($w->status_verifikasi??'-')]; + @endphp + + {{ $sv[3] }} + + + @if($picked) + + Terpilih + + @else + + Belum + + @endif +
+
+
+ +
+

Pilih dusun untuk menampilkan kandidat

+
+
+
- - @forelse(($candidates ?? []) as $index => $w) - @php - $prob = $w->prob ?? optional($w->prediksiKelayakan)->probability; - $probPct = $prob !== null ? ($prob <= 1 ? $prob * 100 : $prob) : null; - $picked = isset($pickedIds) ? $pickedIds->contains($w->id) : false; - @endphp - - - {{ (($candidates->currentPage() - 1) * $candidates->perPage()) + $index + 1 }} - + {{-- MOBILE CARD VIEW --}} +
+ @forelse(($candidates??[]) as $index => $w) + @php + $prob = $w->prob ?? optional($w->prediksiKelayakan)->probability; + $probPct = $prob !== null ? ($prob<=1 ? $prob*100 : $prob) : null; + $sc = $probPct!==null ? ($probPct>=70?'#10b981':($probPct>=40?'#f59e0b':'#f43f5e')) : '#e5e7eb'; + $picked = isset($pickedIds) ? $pickedIds->contains($w->id) : false; + $rank = (($candidates->currentPage()-1)*$candidates->perPage())+$index+1; + $sv=['pending'=>['#fffbeb','#b45309','Pending'],'disetujui'=>['#f0fdf4','#166534','Disetujui'],'ditolak'=>['#fff1f2','#9f1239','Ditolak']]; + $sv=$sv[$w->status_verifikasi??'']??['#f3f4f6','#6b7280',ucfirst($w->status_verifikasi??'-')]; + @endphp +
+
+ {{-- rank --}} + @php + $rk = ['linear-gradient(135deg,#f59e0b,#d97706)','linear-gradient(135deg,#94a3b8,#64748b)','linear-gradient(135deg,#f97316,#ea580c)']; + $rbg = $rank<=3 ? $rk[$rank-1] : '#f1f5f9'; + $rtc = $rank<=3 ? '#fff' : '#64748b'; + @endphp +
{{ $rank }}
- {{ $w->nama_lengkap }} + {{-- avatar + nama --}} +
+
{{ $w->nama_lengkap }}
+
{{ $w->nik }}
+
- {{ $w->nik }} + {{-- final status --}} + @if($picked) + โœ“ Terpilih + @endif +
- {{ optional(optional($w->rt)->dusun)->nama_dusun ?? '-' }} +
+ {{-- dusun --}} + + {{ optional(optional($w->rt)->dusun)->nama_dusun ?? '-' }} + - - @if($probPct !== null) - {{ number_format((float)$probPct, 1) }}% - @else - - - @endif - + {{-- status --}} + + {{ $sv[2] }} + - - @if(($w->status_verifikasi ?? '') === 'pending') - Pending - @elseif(($w->status_verifikasi ?? '') === 'disetujui') - Disetujui - @else - Ditolak - @endif - - - - @if($picked) - Terpilih - @else - Belum - @endif - - - @empty - - - Pilih dusun dulu untuk menampilkan kandidat filterisasi. - - - @endforelse - - -
- - @if(isset($candidates) && method_exists($candidates, 'links') && $candidates->hasPages()) -
- {{ $candidates->appends(request()->query())->links() }} + {{-- probabilitas --}} + @if($probPct !== null) +
+
+
+
+ {{ number_format((float)$probPct,1) }}% +
+ @endif +
- @endif + @empty +
+

Pilih dusun untuk menampilkan kandidat

+
+ @endforelse
-
- Catatan: - Kandidat yang tampil di halaman ini adalah data warga yang berada pada tahap - sedang_validasi atau selesai. - Saat tombol Tetapkan Teratas ditekan, sistem otomatis: -
โ€ข memilih warga dengan probabilitas tertinggi sesuai kuota -
โ€ข menetapkan yang lolos menjadi disetujui -
โ€ข menetapkan yang tidak lolos menjadi ditolak -
+ {{-- PAGINATION --}} + @if(isset($candidates) && method_exists($candidates,'links') && $candidates->hasPages()) +
+ {{ $candidates->appends(request()->query())->links() }} +
+ @endif +
+ {{-- NOTE --}} +
+ Catatan: Kandidat yang tampil adalah data warga pada tahap + sedang_validasi atau selesai. + Saat tombol Tetapkan Teratas ditekan, sistem otomatis:
+ โ€ข memilih warga dengan probabilitas tertinggi sesuai kuota
+ โ€ข menetapkan yang lolos menjadi disetujui
+ โ€ข menetapkan yang tidak lolos menjadi ditolak
\ No newline at end of file diff --git a/resources/views/admin/laporan.blade.php b/resources/views/admin/laporan.blade.php index 7e810c0..dfd5b8c 100644 --- a/resources/views/admin/laporan.blade.php +++ b/resources/views/admin/laporan.blade.php @@ -1,90 +1,116 @@ - + +
+
+

Laporan Penerima BLT-DD

+

Kelurahan Ngerong โ€” warga yang telah ditetapkan sebagai penerima final

+
+
+
-
+ + + {{-- FLASH --}} @if(session('success'))
- - - + {{ session('success') }}
@endif @@ -99,52 +125,39 @@ $periodes = $laporans->pluck('periode_bantuan')->filter()->unique()->count(); @endphp + {{-- STAT CARDS --}}
- - - +
{{ $totalPenerima }}
Total Penerima
-
- - - +
-
Rp {{ number_format($totalBantuan, 0, ',', '.') }}
-
Total Dana Tersalurkan
+
Rp {{ number_format($totalBantuan,0,',','.') }}
+
Total Dana
-
- - - +
-
{{ number_format($avgProb, 1) }}%
-
Rata-rata Probabilitas
+
{{ number_format($avgProb,1) }}%
+
Rata-rata Prob
-
- - - +
{{ $periodes }}
Periode Aktif
+ {{-- EKSPOR --}}
@@ -152,24 +165,28 @@ Ekspor & Distribusi Data
-
- Unduh PDF - Unduh Excel - -
+ + + Unduh PDF + + + + Unduh Excel + + @csrf -
- - {{ $totalPenerima }} penerima terdaftar + {{ $totalPenerima }} penerima terdaftar
+ {{-- UPLOAD PDF PUBLIK --}}
@@ -177,14 +194,15 @@ class="exp-btn btn-send"> Upload PDF Laporan Publik
-
-
+ @csrf - -
@@ -192,24 +210,17 @@ class="exp-btn btn-send">
@foreach($laporanPubliks as $pdf)
-
+
{{ $pdf->judul }}
-
- Diupload: {{ $pdf->created_at->format('d-m-Y H:i') }} -
+
Diupload: {{ $pdf->created_at->format('d-m-Y H:i') }}
-
- + Lihat PDF - -
- @csrf - @method('DELETE') + + @csrf @method('DELETE')
@@ -220,6 +231,7 @@ class="exp-btn btn-pdf"
+ {{-- DAFTAR PENERIMA FINAL --}}
@@ -229,6 +241,7 @@ class="exp-btn btn-pdf" {{ $totalPenerima }} data
+ {{-- DESKTOP TABLE --}}
@@ -243,109 +256,179 @@ class="exp-btn btn-pdf" - + - + - + - + @forelse($laporans as $index => $item) @php $nama = $item->nama_lengkap ?? '-'; - $init = strtoupper(substr($nama, 0, 1)); + $init = strtoupper(substr($nama,0,1)); $prob = $item->probability ?? 0; - if ($prob <= 1) $prob = $prob * 100; - - $sc = $prob >= 70 ? '#10b981' : ($prob >= 40 ? '#f59e0b' : '#f43f5e'); - $scBg = $prob >= 70 ? '#f0fdf4' : ($prob >= 40 ? '#fffbeb' : '#fff1f2'); - $scBd = $prob >= 70 ? '#bbf7d0' : ($prob >= 40 ? '#fde68a' : '#fecdd3'); - - $bantuanLain = strtolower($item->bantuan_lain ?? 'tidak'); + if($prob<=1) $prob=$prob*100; + $sc = $prob>=70?'#10b981':($prob>=40?'#f59e0b':'#f43f5e'); + $scBg = $prob>=70?'#f0fdf4':($prob>=40?'#fffbeb':'#fff1f2'); + $scBd = $prob>=70?'#bbf7d0':($prob>=40?'#fde68a':'#fecdd3'); @endphp - - - + - - - - + + + + + + + + - - - - - - - - - - - + - - - - - + + + @empty - - - + @endforelse
Penghasilan Tanggungan AsetBantuan LainBantuan UsiaProbabilitasProb StatusTgl PenetapanPenetapan PeriodeJumlah BantuanJumlah
{{ $index + 1 }}{{ $index+1 }} -
+
{{ $init }}
- {{ $nama }} + {{ $nama }}
{{ $item->nik ?? '-' }}{{ $item->no_kk ?? '-' }}{{ $item->nik??'-' }}{{ $item->no_kk??'-' }}RT {{ str_pad($item->nomor_rt??'0',3,'0',STR_PAD_LEFT) }}{{ $item->nama_dusun??'-' }}{{ $item->pekerjaan??'-' }}Rp {{ number_format($item->penghasilan??0,0,',','.') }}{{ $item->jumlah_tanggungan??0 }}{{ $item->aset_kepemilikan??'-' }} - - RT {{ str_pad($item->nomor_rt ?? '0', 3, '0', STR_PAD_LEFT) }} - - {{ $item->nama_dusun ?? '-' }}{{ $item->pekerjaan ?? '-' }}Rp {{ number_format($item->penghasilan ?? 0, 0, ',', '.') }}{{ $item->jumlah_tanggungan ?? 0 }}{{ $item->aset_kepemilikan ?? '-' }} - @if($bantuanLain === 'ya') + @if(strtolower($item->bantuan_lain??'')=='ya') Ya @else Tidak @endif {{ $item->usia ?? 0 }}{{ $item->usia??0 }}
-
-
-
- {{ number_format($prob, 1) }}% +
+ {{ number_format($prob,1) }}%
- {{ ucfirst($item->status_verifikasi ?? '-') }} + {{ ucfirst($item->status_verifikasi??'-') }} {{ $item->tanggal_penetapan?->format('d-m-Y') ?? '-' }}{{ $item->periode_bantuan ?? '-' }}Rp {{ number_format($item->jumlah_bantuan ?? 300000, 0, ',', '.') }}{{ $item->tanggal_penetapan?->format('d-m-Y')??'-' }}{{ $item->periode_bantuan??'-' }}Rp {{ number_format($item->jumlah_bantuan??300000,0,',','.') }}
-
-
- - - -
-

Belum ada data penerima final

-
-
+
+
+

Belum ada data penerima final

+
+
-
- SiBantuDes ยท Kelurahan Ngerong + {{-- MOBILE CARD LIST --}} +
+ @forelse($laporans as $index => $item) + @php + $nama = $item->nama_lengkap ?? '-'; + $init = strtoupper(substr($nama,0,1)); + $prob = $item->probability ?? 0; + if($prob<=1) $prob=$prob*100; + $sc = $prob>=70?'#10b981':($prob>=40?'#f59e0b':'#f43f5e'); + $scBg = $prob>=70?'#f0fdf4':($prob>=40?'#fffbeb':'#fff1f2'); + $scBd = $prob>=70?'#bbf7d0':($prob>=40?'#fde68a':'#fecdd3'); + @endphp +
+ {{-- Header --}} +
+
{{ $index+1 }}
+
{{ $init }}
+
{{ $nama }}
+
+ + {{-- NIK & KK --}} +
+
+ NIK + {{ $item->nik??'-' }} +
+
+ No KK + {{ $item->no_kk??'-' }} +
+
+ + {{-- Grid info --}} +
+
+ RT + RT {{ str_pad($item->nomor_rt??'0',3,'0',STR_PAD_LEFT) }} +
+
+ Dusun + {{ $item->nama_dusun??'-' }} +
+
+ Pekerjaan + {{ $item->pekerjaan??'-' }} +
+
+ Usia + {{ $item->usia??0 }} thn +
+
+ Penghasilan + Rp {{ number_format($item->penghasilan??0,0,',','.') }} +
+
+ Tanggungan + {{ $item->jumlah_tanggungan??0 }} orang +
+
+ Aset + {{ $item->aset_kepemilikan??'-' }} +
+
+ Bantuan Lain + @if(strtolower($item->bantuan_lain??'')=='ya') + Ya + @else + Tidak + @endif +
+
+ + {{-- Bottom: prob + status + jumlah bantuan --}} +
+
+
+ {{ number_format($prob,1) }}% +
+ + {{ ucfirst($item->status_verifikasi??'-') }} + + + Rp {{ number_format($item->jumlah_bantuan??300000,0,',','.') }} + +
+ + {{-- Periode & penetapan --}} +
+ Periode: {{ $item->periode_bantuan??'-' }} + • Penetapan: {{ $item->tanggal_penetapan?->format('d-m-Y')??'-' }} +
+
+ @empty +
+
+

Belum ada data penerima final

+
+ @endforelse
+ +
SiBantuDes ยท Kelurahan Ngerong
-
- - \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/auth/forgot-password.blade.php b/resources/views/auth/forgot-password.blade.php index cb32e08..b3bbd20 100644 --- a/resources/views/auth/forgot-password.blade.php +++ b/resources/views/auth/forgot-password.blade.php @@ -1,25 +1,650 @@ -
- {{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }} + + +
+
+ + + +
Reset Password
+
Lupa Password?
+
Masukkan email yang terdaftar untuk memulai reset password.
+ + {{-- Step indicator --}} +
+
+
1
+
Verifikasi
+
+
+
+
2
+
Password Baru
+
+
+
+
3
+
Selesai
+
+
+ + {{-- Alert area --}} +
+ + {{-- SERVER-SIDE ERRORS --}} + @if($errors->any()) +
+ + + + {{ $errors->first() }} +
+ @endif + + {{-- โ•โ•โ• STEP 1: Verifikasi Email โ•โ•โ• --}} +
+
+ +
+
+ + + +
+ +
+
+
+ + +
+ + {{-- โ•โ•โ• STEP 2: Input Password Baru โ•โ•โ• --}} +
+
+ +
+
+ + + +
+ + +
+
+
+
+
+
+
+
+
+ +
+ +
+
+ + + +
+ + +
+
+
+ + +
+ + {{-- โ•โ•โ• STEP 3: Selesai โ•โ•โ• --}} +
+
+ + + +
+

Password Berhasil Diubah!

+

Password akun Anda sudah diperbarui. Silakan login menggunakan password baru.

+ + + + + Kembali ke Login + +
+ + + +
- - + + \ No newline at end of file diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 6eecab2..2b6ee37 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,4 +1,3 @@ - @@ -9,6 +8,7 @@ +
- + {{-- โ”€โ”€ LEFT PANEL โ”€โ”€ --}}
-
+
- + Logo SiBantuDes
SiBantuDes
Sistem Bantuan Tunai Desa
@@ -358,9 +439,11 @@ Kelurahan Ngerong
+
- Penyaluran Bantuan
yang Transparan
& Akuntabel + Penyaluran Bantuan
yang Transparan
& Akuntabel
+
@@ -384,16 +467,24 @@
- Laporan & monitoring penyaluran bantuan + Laporan & monitoring penyaluran bantuan
-
- + {{-- โ”€โ”€ RIGHT PANEL โ”€โ”€ --}}
+ + {{-- Tombol kembali ke landing page --}} + + + + + Kembali ke Beranda + +
BLT-DD • Kelurahan Ngerong
Selamat Datang
@@ -401,19 +492,18 @@
@if($errors->any()) -
- - - - {{ $errors->first() }} -
+
+ + + + {{ $errors->first() }} +
@endif
@csrf -
@@ -423,13 +513,10 @@ d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
- +
-
@@ -439,8 +526,7 @@ d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/>
- +
-
@@ -466,11 +551,14 @@ Daftar sebagai RT
+ +
-
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 491d94f..7669788 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,128 +1,292 @@ - - - - + + + + + {{ config('app.name', 'Laravel') }} + + + + @vite(['resources/css/app.css', 'resources/js/app.js']) + + + - - Filterisasi - + +
+
+
- - Laporan - + @php $role = Auth::user()->role ?? null; @endphp - @else - - Dashboard - - - - Pendataan - - - - Riwayat - - - - Laporan - - @endif - -
- -
-
- - {{ strtoupper(substr(Auth::user()->name ?? 'U', 0, 1)) }} - -
- -
- {{ Auth::user()->name ?? '' }} -
- - - @csrf - - -
+ + + +
+
+
{{ strtoupper(substr(Auth::user()->name ?? 'U', 0, 1)) }}
+ {{ Auth::user()->name ?? '' }}
+
+ @csrf + +
+
- - @isset($header) -
-
- {{ $header }} -
-
- @endisset - -
-
-
- {{ $slot }} -
-
-
- +
+ + + @isset($header) + + @endisset + + +
{{ $slot }}
+ + + \ No newline at end of file diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 11feb47..bd24052 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -1,30 +1,40 @@ - - - - + + + + - {{ config('app.name', 'Laravel') }} + + SiBantuDes - - - + + + - - @vite(['resources/css/app.css', 'resources/js/app.js']) - - -
-
- - - -
+ + @vite(['resources/css/app.css', 'resources/js/app.js']) + -
- {{ $slot }} -
+ + + +
+ + + + +
+ {{ $slot }} +
+ +
+ + + \ No newline at end of file diff --git a/resources/views/rt/calon-penerima/create.blade.php b/resources/views/rt/calon-penerima/create.blade.php index 548edcb..9d9dd1e 100644 --- a/resources/views/rt/calon-penerima/create.blade.php +++ b/resources/views/rt/calon-penerima/create.blade.php @@ -6,7 +6,22 @@
- {{-- TAMPILKAN ERROR VALIDASI --}} + + @if ($errors->any())
Gagal menyimpan:
@@ -18,31 +33,29 @@
@endif - {{-- TAMPILKAN ERROR DARI TRY-CATCH CONTROLLER --}} @if (session('error'))
{{ session('error') }}
@endif - {{-- TAMPILKAN SUCCESS --}} @if (session('success'))
{{ session('success') }}
@endif -
+ @csrf {{-- SECTION 1: Data Identitas --}}
-
+

Data Identitas

-
+
@php $myRtId = auth()->user()->rt_id ?? (auth()->user()->rt->id ?? null); @endphp @@ -51,8 +64,6 @@ - - {{-- tampilkan tapi terkunci --}} + placeholder="16 digit No. KK" required inputmode="numeric">
- {{-- NIK --}}
- + placeholder="16 digit NIK" required inputmode="numeric">
- {{-- NAMA --}}
- + placeholder="Nama sesuai KTP" required>
- {{-- JENIS KELAMIN --}}
-
- {{-- TEMPAT LAHIR --}}
- + placeholder="Kota/Kabupaten" required>
- {{-- TANGGAL LAHIR --}}
- + required>
- {{-- USIA --}}
- + placeholder="Otomatis dari tanggal lahir" required inputmode="numeric">
- {{-- STATUS PERKAWINAN --}}
- @@ -210,25 +172,19 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo {{-- SECTION 2: Data Tempat Tinggal --}}
-
+

Data Tempat Tinggal

-
- {{-- ALAMAT --}} +
- + placeholder="Jalan, nomor rumah, RT/RW" required>
@@ -240,108 +196,69 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo - - {{-- tampilkan tapi terkunci --}} - - - {{-- yang dikirim --}} + value="{{ $myDusunName }}" readonly> -
- {{-- ASET --}}
- + placeholder="Misal: Rumah, Motor, dll" required>
{{-- SECTION 3: Data Ekonomi --}} -
-
+
+

Data Ekonomi

-
- {{-- PEKERJAAN --}} +
- + placeholder="Jenis pekerjaan" required>
- {{-- PENGHASILAN --}}
- + placeholder="0" required inputmode="decimal">
- {{-- JUMLAH TANGGUNGAN --}}
- + placeholder="Jumlah orang" required inputmode="numeric">
- {{-- BANTUAN LAIN --}}
- @@ -349,18 +266,112 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo
+ {{-- SECTION 4: Kondisi Tempat Tinggal --}} +
+
+
+

Kondisi Tempat Tinggal

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + {{-- SECTION 5: Upload Dokumen & Foto --}} +
+
+
+

Upload Dokumen & Foto

+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ {{-- ACTIONS --}} -
- +
+ Batal -
@@ -431,7 +442,6 @@ function showToast(msg) { }); }); - // Auto-isi usia dari tanggal lahir document.getElementById('tanggal_lahir')?.addEventListener('change', function () { const dob = new Date(this.value); const today = new Date(); @@ -444,7 +454,6 @@ function showToast(msg) { } }); - // Submit validation document.getElementById('formPendataan').addEventListener('submit', function (e) { let valid = true; Object.keys(rules).forEach(id => { diff --git a/resources/views/rt/calon-penerima/edit.blade.php b/resources/views/rt/calon-penerima/edit.blade.php index 1dc8afd..c7e028c 100644 --- a/resources/views/rt/calon-penerima/edit.blade.php +++ b/resources/views/rt/calon-penerima/edit.blade.php @@ -1,6 +1,6 @@ -
+

Edit Pendataan Warga

Perbarui data dengan benar sebelum menyimpan.

@@ -15,6 +15,47 @@ class="inline-flex items-center gap-1.5 px-4 py-2 bg-white border border-gray-20
+ + {{-- ERROR VALIDASI --}} @if ($errors->any())
@@ -35,103 +76,93 @@ class="inline-flex items-center gap-1.5 px-4 py-2 bg-white border border-gray-20 @csrf @method('PUT') - - {{-- hidden aman, walau nanti tetap di-override controller --}} {{-- SECTION 1: Data Identitas --}}
-
+

Data Identitas

-
+
- {{-- RT (readonly) --}}

RT mengikuti akun RT yang sedang login.

- {{-- NO KK --}}
+ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-gray-50" + placeholder="16 digit No. KK" required inputmode="numeric">
- {{-- NIK --}}
+ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-gray-50" + placeholder="16 digit NIK" required inputmode="numeric">
- {{-- NAMA --}}
- {{-- JENIS KELAMIN --}}
- {{-- TEMPAT LAHIR --}}
- {{-- TANGGAL LAHIR --}}
- {{-- USIA --}}
+ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-gray-50" + placeholder="Tahun" required inputmode="numeric">
- {{-- STATUS PERKAWINAN --}}
- {{-- DUSUN (readonly) --}}

Dusun mengikuti RT dan tidak dapat diubah.

@@ -174,7 +205,7 @@ class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm bg-gray-100 te
@@ -184,17 +215,17 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo {{-- SECTION 3: Data Ekonomi --}}
-
+

Data Ekonomi

-
+
@@ -203,8 +234,8 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo + class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-gray-50" + placeholder="0" required inputmode="decimal">
@@ -212,15 +243,15 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo + class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-gray-50" + placeholder="Jumlah orang" required inputmode="numeric">
@@ -230,9 +261,9 @@ class="input-field w-full border border-gray-200 rounded-xl px-3 py-2 text-sm fo
{{-- ACTIONS --}} -
+
+ class="inline-flex items-center gap-1.5 px-5 py-2 text-sm font-medium bg-white border border-gray-200 text-gray-600 rounded-xl hover:bg-gray-50 transition"> Batal + +
+ @csrf @method('DELETE') + +
+ @endif +
+
+ @empty +
+
+ +
+

Belum ada data calon penerima

+ + Tambah sekarang +
+ @endforelse +
+
{{ $calonPenerimas->links() }}
diff --git a/resources/views/rt/calon-penerima/show.blade.php b/resources/views/rt/calon-penerima/show.blade.php index 1be2896..d5c0361 100644 --- a/resources/views/rt/calon-penerima/show.blade.php +++ b/resources/views/rt/calon-penerima/show.blade.php @@ -1,21 +1,21 @@ -
-
+
+
+ style="width:32px; height:32px; display:flex; align-items:center; justify-content:center; border-radius:10px; background:#fff; border:1.5px solid #e5e7eb; color:#6b7280; text-decoration:none; flex-shrink:0;"> -
-

Detail Calon Penerima

+
+

Detail Calon Penerima

Data pendataan warga & hasil prediksi kelayakan

@if(($calonPenerima->tracking_status ?? 'draft') === 'draft') + style="display:inline-flex; align-items:center; gap:6px; padding:7px 14px; background:#2563eb; color:#fff; font-size:12px; font-weight:700; border-radius:10px; text-decoration:none; box-shadow:0 2px 8px rgba(37,99,235,.25); flex-shrink:0;"> @@ -26,31 +26,96 @@ @php @@ -82,7 +147,6 @@ }; @endphp - {{-- FLASH --}} @if(session('success'))
@@ -96,53 +160,57 @@
@endif - {{-- BANNER --}} -
+ {{-- โ•โ• BANNER โ•โ• --}} +
-
- {{ strtoupper(substr($calonPenerima->nama_lengkap ?? 'U', 0, 1)) }} -
- -
-

{{ $calonPenerima->nama_lengkap ?? '-' }}

-

NIK: {{ $calonPenerima->nik ?? '-' }}

-
- - - {{ $trackingLabel }} - +
+ {{-- Avatar --}} +
+ {{ strtoupper(substr($calonPenerima->nama_lengkap ?? 'U', 0, 1)) }}
-
-
- @if($probPct !== null) -
-
{{ number_format($probPct,0) }}%
-
probabilitas
+ {{-- Nama + NIK + status --}} +
+

{{ $calonPenerima->nama_lengkap ?? '-' }}

+

NIK: {{ $calonPenerima->nik ?? '-' }}

+
+ + + {{ $trackingLabel }} +
- @endif +
- @if($tracking === 'selesai') - @if($st === 'disetujui') - Diterima - @elseif($st === 'ditolak') - Tidak Diterima - @else - Menunggu Hasil + {{-- Probabilitas + pill status --}} +
+ @if($probPct !== null) +
+
{{ number_format($probPct,0) }}%
+
probabilitas
+
@endif - @else - {{ $trackingLabel }} - @endif + @if($tracking === 'selesai') + @if($st === 'disetujui') + Diterima + @elseif($st === 'ditolak') + Tidak Diterima + @else + Menunggu Hasil + @endif + @else + {{ $trackingLabel }} + @endif +
- {{-- MAIN GRID --}} -
+ {{-- โ•โ• MAIN GRID โ•โ• --}} +
- {{-- KIRI --}} -
+ {{-- โ”€โ”€ KIRI โ”€โ”€ --}} +
{{-- Identitas --}} @@ -150,7 +218,7 @@

Identitas

-

No. KK

{{ $calonPenerima->no_kk ?? '-' }}

+

No. KK

{{ $calonPenerima->no_kk ?? '-' }}

Jenis Kelamin

{{ $calonPenerima->jenis_kelamin ?? '-' }}

Tempat Lahir

{{ $calonPenerima->tempat_lahir ?? '-' }}

Tanggal Lahir

{{ $calonPenerima->tanggal_lahir ? \Carbon\Carbon::parse($calonPenerima->tanggal_lahir)->translatedFormat('d F Y') : '-' }}

@@ -173,6 +241,11 @@

Aset Kepemilikan

{{ $calonPenerima->aset_kepemilikan ?? '-' }}

+
+

Kondisi Rumah

{{ $calonPenerima->kondisi_rumah ?? '-' }}

+

Meteran Listrik

{{ $calonPenerima->meteran_listrik ?? '-' }}

+

Sumber Air

{{ $calonPenerima->sumber_air ?? '-' }}

+
@@ -197,7 +270,56 @@
- {{-- Tracking Pengajuan --}} + {{-- Dokumen & Foto --}} + @php + $fotoFields = [ + 'foto_rumah_depan' => 'Foto Rumah Depan', + 'foto_rumah_belakang' => 'Foto Rumah Belakang', + 'foto_rumah_kanan' => 'Foto Rumah Kanan', + 'foto_rumah_kiri' => 'Foto Rumah Kiri', + 'foto_kk' => 'Foto KK', + 'foto_ktp' => 'Foto KTP', + 'foto_rekening_listrik' => 'Rekening Listrik', + 'foto_meteran_air' => 'Foto Meteran Air', + 'dokumen_pendukung' => 'Dokumen Pendukung', + ]; + $adaFoto = false; + foreach($fotoFields as $field => $label) { + if($calonPenerima->$field) { $adaFoto = true; break; } + } + @endphp + @if($adaFoto) +
+ @endif + + {{-- Tracking --}}

Tracking Pengajuan

@@ -210,7 +332,6 @@
-
2
@@ -225,7 +346,6 @@
-
3
@@ -240,7 +360,6 @@
-
4
@@ -261,40 +380,42 @@ {{-- Status Pengajuan --}}

Status Pengajuan

-
- @if($tracking === 'draft') - Draft - @elseif($tracking === 'terkirim') - Terkirim ke Kelurahan - @elseif($tracking === 'sedang_validasi') - Sedang Divalidasi - @elseif($tracking === 'selesai') - @if($st === 'disetujui') - Diterima - @elseif($st === 'ditolak') - Tidak Diterima - @else - Menunggu Hasil +
+
+ @if($tracking === 'draft') + Draft + @elseif($tracking === 'terkirim') + Terkirim ke Kelurahan + @elseif($tracking === 'sedang_validasi') + Sedang Divalidasi + @elseif($tracking === 'selesai') + @if($st === 'disetujui') + Diterima + @elseif($st === 'ditolak') + Tidak Diterima + @else + Menunggu Hasil + @endif @endif - @endif -
-

Dibuat

{{ $calonPenerima->created_at ? \Carbon\Carbon::parse($calonPenerima->created_at)->translatedFormat('d M Y, H:i') : '-' }}

-

Diperbarui

{{ $calonPenerima->updated_at ? \Carbon\Carbon::parse($calonPenerima->updated_at)->translatedFormat('d M Y, H:i') : '-' }}

-
- - @if(!empty($calonPenerima->catatan_admin)) -
- Catatan: {{ $calonPenerima->catatan_admin }} +
+

Dibuat

{{ $calonPenerima->created_at ? \Carbon\Carbon::parse($calonPenerima->created_at)->translatedFormat('d M Y, H:i') : '-' }}

+

Diperbarui

{{ $calonPenerima->updated_at ? \Carbon\Carbon::parse($calonPenerima->updated_at)->translatedFormat('d M Y, H:i') : '-' }}

- @endif + + @if(!empty($calonPenerima->catatan_admin)) +
+ Catatan: {{ $calonPenerima->catatan_admin }} +
+ @endif +
-
+
{{-- end kiri --}} - {{-- KANAN --}} -
+ {{-- โ”€โ”€ KANAN (sidebar) โ”€โ”€ --}} +
{{-- Prediksi --}}
@@ -311,7 +432,7 @@ {{ number_format($probPct,0) }}%
-
+

Rekomendasi

{{ $rec }}
@@ -338,8 +459,18 @@ Penjelasan Lengkap
- @foreach(['Pekerjaan'=>$calonPenerima->pekerjaan??'-','Penghasilan'=>'Rp '.number_format((float)($calonPenerima->penghasilan??0),0,',','.'),'Tanggungan'=>($calonPenerima->jumlah_tanggungan??'-').' orang','Aset'=>$calonPenerima->aset_kepemilikan??'-','Bantuan Lain'=>ucfirst($calonPenerima->bantuan_lain??'-'),'Usia'=>($calonPenerima->usia??'-').' tahun'] as $lbl=>$val) -
{{ $lbl }}{{ $val }}
+ @foreach([ + 'Pekerjaan' => $calonPenerima->pekerjaan??'-', + 'Penghasilan' => 'Rp '.number_format((float)($calonPenerima->penghasilan??0),0,',','.'), + 'Tanggungan' => ($calonPenerima->jumlah_tanggungan??'-').' orang', + 'Aset' => $calonPenerima->aset_kepemilikan??'-', + 'Bantuan Lain' => ucfirst($calonPenerima->bantuan_lain??'-'), + 'Usia' => ($calonPenerima->usia??'-').' tahun', + 'Kondisi Rumah' => $calonPenerima->kondisi_rumah??'-', + 'Meteran Listrik'=> $calonPenerima->meteran_listrik??'-', + 'Sumber Air' => $calonPenerima->sumber_air??'-', + ] as $lbl=>$val) +
{{ $lbl }}{{ $val }}
@endforeach
@if(!empty($explanation['positive'])) @@ -415,7 +546,8 @@
@endif -
-
+
{{-- end kanan --}} + +
{{-- end .mg --}} \ No newline at end of file diff --git a/resources/views/rt/dashboard.blade.php b/resources/views/rt/dashboard.blade.php index f8a831c..eb84945 100644 --- a/resources/views/rt/dashboard.blade.php +++ b/resources/views/rt/dashboard.blade.php @@ -1,238 +1,220 @@ -
+
-

Dashboard

+

Dashboard

- Ringkasan data pendataan warga {{ Auth::user()->rt->dusun->nama_dusun ?? '' }} + Pendataan warga {{ Auth::user()->rt->dusun->nama_dusun ?? '' }}

-
- +
+ - - {{ \Carbon\Carbon::now('Asia/Jakarta')->translatedFormat('l, d F Y') }} - โ€” - {{ \Carbon\Carbon::now('Asia/Jakarta')->format('H:i') }} WIB - + {{ \Carbon\Carbon::now('Asia/Jakarta')->translatedFormat('l, d F Y') }} โ€” {{ \Carbon\Carbon::now('Asia/Jakarta')->format('H:i') }} WIB
- @php $avgProb = \App\Models\PrediksiKelayakan::whereHas('calonPenerima', function ($q) { $q->where('user_id', Auth::id()); - })->avg('probability'); - - $avgProb = $avgProb ?? 0; - - if ($avgProb <= 1) { - $avgProb = $avgProb * 100; - } + })->avg('probability') ?? 0; + if ($avgProb <= 1) $avgProb = $avgProb * 100; @endphp
- {{-- GREETING (asli tidak diubah) --}} -
+ {{-- GREETING --}} +
{{ strtoupper(substr(Auth::user()->name ?? 'U', 0, 1)) }}
-
-

- Selamat datang, {{ Auth::user()->name ?? 'Pengguna' }} ๐Ÿ‘‹ -

+
+

Selamat datang, {{ Auth::user()->name ?? 'Pengguna' }} ๐Ÿ‘‹

Berikut ringkasan data terkini yang perlu Anda pantau.

- {{-- STAT CARDS (asli tidak diubah) --}} -
+ {{-- STAT CARDS --}} +
-
+ @php + $rtCards = [ + ['label'=>'Total Warga','val'=>$stats['total_input'],'grad'=>'#2563eb,#1d4ed8','shadow'=>'rgba(37,99,235,.3)','tc'=>'rgba(191,219,254,.9)','icon'=>'M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z'], + ['label'=>'Pending','val'=>$stats['pending'],'grad'=>'#f59e0b,#d97706','shadow'=>'rgba(245,158,11,.3)','tc'=>'rgba(254,243,199,.9)','icon'=>'M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z'], + ['label'=>'Diterima','val'=>$stats['disetujui'],'grad'=>'#10b981,#059669','shadow'=>'rgba(16,185,129,.3)','tc'=>'rgba(167,243,208,.9)','icon'=>'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'], + ['label'=>'Ditolak','val'=>$stats['ditolak'],'grad'=>'#f43f5e,#e11d48','shadow'=>'rgba(244,63,94,.3)','tc'=>'rgba(254,205,211,.9)','icon'=>'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z'], + ]; + @endphp + + @foreach($rtCards as $c) +
-

Total Warga

-

{{ $stats['total_input'] }}

+

{{ $c['label'] }}

+

{{ $c['val'] }}

-
- -
-
- -
-
-
-

Pending

-

{{ $stats['pending'] }}

-
-
- -
-
- -
-
-
-

Diterima

-

{{ $stats['disetujui'] }}

-
-
- -
-
- -
-
-
-

Ditolak

-

{{ $stats['ditolak'] }}

-
-
- +
+
+ @endforeach
- {{-- GRID: Pendataan Terbaru + Aksi Cepat (logika asli 100% tidak diubah) --}} -
+ {{-- GRID: Terbaru + Aksi --}} +
{{-- Pendataan Terbaru --}}
-
+
-
+

Pendataan Terbaru

- - - Live + + Live
-
@forelse($recentCalonPenerima as $calon) -
-
-
- {{ strtoupper(substr($calon->nama_lengkap, 0, 1)) }} -
-
-

{{ $calon->nama_lengkap }}

-

NIK: {{ $calon->nik }}

-
+
+
+
+ {{ strtoupper(substr($calon->nama_lengkap,0,1)) }}
-
- @if($calon->status_verifikasi == 'pending') - - - Pending - - @elseif($calon->status_verifikasi == 'disetujui') - - - Disetujui - - @else - - - {{ ucfirst($calon->status_verifikasi) }} - - @endif -

{{ $calon->created_at->diffForHumans() }}

+
+

{{ $calon->nama_lengkap }}

+

{{ $calon->nik }}

+
+ @php + $sv=['pending'=>['#fffbeb','#b45309','#fde68a','Pending'],'disetujui'=>['#f0fdf4','#166534','#bbf7d0','Disetujui']]; + $sv=$sv[$calon->status_verifikasi]??['#fff1f2','#be123c','#fecdd3',ucfirst($calon->status_verifikasi)]; + @endphp + + {{ $sv[3] }} + +

{{ $calon->created_at->diffForHumans() }}

+
+
@empty -
-
- -
-

Belum ada data pendataan

-
+
+

Belum ada data pendataan

+
@endforelse
- {{-- Aksi Cepat (asli tidak diubah) --}} + {{-- Aksi Cepat --}}
-
-
+
+

Aksi Cepat

+
-
- - {{-- Daftarkan Warga Baru (asli) --}} - +
-
-

Daftarkan Warga Baru

+
+

Daftarkan Warga Baru

Tambah data calon penerima

- {{-- Lihat Laporan (asli) --}} - +
-
-

Lihat Laporan

-

Lihat hasil akhir yang dikirim admin

+
+

Lihat Laporan

+

Hasil akhir dari admin

- {{-- Rata-rata skor (asli, $avgProb tidak diubah) --}} -
-
-
+ {{-- Skor rata-rata --}} +
+
-
-

Rata-rata Skor Kelayakan

- -
-

- {{ number_format($avgProb, 1) }}% +

Rata-rata Skor Kelayakan

+

+ {{ number_format($avgProb,1) }}%

-
+

- Nilai rata-rata prediksi kelayakan, bukan keputusan akhir bantuan + Rata-rata prediksi, bukan keputusan akhir

@@ -244,11 +226,4 @@ function updateClock() {
- - \ No newline at end of file diff --git a/resources/views/rt/laporan.blade.php b/resources/views/rt/laporan.blade.php index ac6bea1..2502dba 100644 --- a/resources/views/rt/laporan.blade.php +++ b/resources/views/rt/laporan.blade.php @@ -1,111 +1,103 @@ - -/* Empty */ -.empty-state{padding:52px 16px;text-align:center;} -.empty-icon{width:46px;height:46px;background:#f1f5f9;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;} -.empty-icon svg{width:20px;height:20px;} - -/* Footer */ -.tbl-foot{padding:9px 18px;border-top:1.5px solid #f1f5f9;background:#fafbfc;text-align:center;} -.credit{font-size:11px;color:#cbd5e1;font-weight:500;} - - -
- - {{-- โ”€โ”€ HEADER โ”€โ”€ --}} -
-

- Laporan Hasil Kelayakan -

-

- Data hasil akhir verifikasi warga yang telah dikirim oleh admin kelurahan -

-
- - {{-- โ”€โ”€ SUMMARY โ”€โ”€ --}} @php - $total = $stats['total'] ?? $laporans->count(); - $diterima = $stats['diterima'] ?? $laporans->where('status_verifikasi', 'disetujui')->count(); - $ditolak = $stats['ditolak'] ?? $laporans->where('status_verifikasi', 'ditolak')->count(); + $total = $stats['total'] ?? $laporans->count(); + $diterima = $stats['diterima'] ?? $laporans->where('status_verifikasi','disetujui')->count(); + $ditolak = $stats['ditolak'] ?? $laporans->where('status_verifikasi','ditolak')->count(); @endphp + {{-- STAT CARDS --}}
- - - +
{{ $total }}
Total Warga
- - - +
{{ $diterima }}
Diterima
- - - +
{{ $ditolak }}
Ditolak
- {{-- โ”€โ”€ TABLE โ”€โ”€ --}} + {{-- TABLE CARD --}}
@@ -115,11 +107,12 @@ {{ $total }} data
+ {{-- DESKTOP TABLE --}}
- + @@ -137,113 +130,149 @@ @forelse($laporans as $i => $item) @php - $prob = $item->probability ?? 0; - if ($prob <= 1) $prob = $prob * 100; - + $prob = $item->probability ?? 0; + if($prob <= 1) $prob = $prob * 100; $nama = $item->nama_lengkap ?? '-'; - $init = strtoupper(substr($nama, 0, 1)); - $sc = $prob >= 70 ? '#10b981' : ($prob >= 40 ? '#f59e0b' : '#f43f5e'); - + $init = strtoupper(substr($nama,0,1)); + $sc = $prob>=70?'#10b981':($prob>=40?'#f59e0b':'#f43f5e'); $colors = ['#3b82f6','#8b5cf6','#ec4899','#f59e0b','#10b981','#ef4444','#06b6d4']; $avColor = $colors[ord($init) % count($colors)]; - - $diterima = $item->status_verifikasi === 'disetujui'; + $acc = ($item->status_verifikasi === 'disetujui'); @endphp - - + - - - + + + + + + + - - - - - - - - - - - - - - - + - @empty - - - + @endforelse
## Nama NIK RT
{{ $i + 1 }}{{ $i+1 }} -
+
{{ $init }}
-
-
{{ $nama }}
-
+ {{ $nama }}
{{ $item->nik ?? '-' }}{{ $item->nik??'-' }}RT {{ str_pad($item->nomor_rt??'-',3,'0',STR_PAD_LEFT) }}{{ $item->nama_dusun??'-' }}{{ $item->pekerjaan??'-' }}Rp {{ number_format($item->penghasilan??0,0,',','.') }}{{ $item->jumlah_tanggungan??'-' }}{{ $item->aset_kepemilikan??'-' }} - - RT {{ str_pad($item->nomor_rt ?? '-', 3, '0', STR_PAD_LEFT) }} - - - {{ $item->nama_dusun ?? '-' }} - {{ $item->pekerjaan ?? '-' }} - Rp {{ number_format($item->penghasilan ?? 0, 0, ',', '.') }} - - {{ $item->jumlah_tanggungan ?? '-' }} - {{ $item->aset_kepemilikan ?? '-' }} - @if(strtolower($item->bantuan_lain ?? '') === 'ya') + @if(strtolower($item->bantuan_lain??'')=='ya') Ya @else Tidak @endif {{ $item->usia ?? '-' }}{{ $item->usia??'-' }}
-
-
-
- - {{ number_format($prob, 1) }}% - +
+ {{ number_format($prob,1) }}%
- @if($diterima) - - - Diterima - + @if($acc) + Diterima @else - - - Ditolak - + Ditolak @endif
-
-
- - - -
-

Belum ada laporan yang dikirim admin

-
-
+
+
+

Belum ada laporan yang dikirim admin

+
+
-
- SiBantuDes · Kelurahan Ngerong + {{-- MOBILE CARD LIST --}} +
+ @forelse($laporans as $i => $item) + @php + $prob = $item->probability ?? 0; + if($prob <= 1) $prob = $prob * 100; + $nama = $item->nama_lengkap ?? '-'; + $init = strtoupper(substr($nama,0,1)); + $sc = $prob>=70?'#10b981':($prob>=40?'#f59e0b':'#f43f5e'); + $scBg = $prob>=70?'#f0fdf4':($prob>=40?'#fffbeb':'#fff1f2'); + $scBd = $prob>=70?'#bbf7d0':($prob>=40?'#fde68a':'#fecdd3'); + $colors = ['#3b82f6','#8b5cf6','#ec4899','#f59e0b','#10b981','#ef4444','#06b6d4']; + $avColor = $colors[ord($init) % count($colors)]; + $acc = ($item->status_verifikasi === 'disetujui'); + @endphp +
+
+
{{ $init }}
+
+
{{ $nama }}
+
{{ $item->nik??'-' }}
+
+ #{{ $i+1 }} +
+ +
+
+ RT + RT {{ str_pad($item->nomor_rt??'-',3,'0',STR_PAD_LEFT) }} +
+
+ Dusun + {{ $item->nama_dusun??'-' }} +
+
+ Pekerjaan + {{ $item->pekerjaan??'-' }} +
+
+ Usia + {{ $item->usia??'-' }} thn +
+
+ Penghasilan + Rp {{ number_format($item->penghasilan??0,0,',','.') }} +
+
+ Tanggungan + {{ $item->jumlah_tanggungan??'-' }} orang +
+
+ Aset + {{ $item->aset_kepemilikan??'-' }} +
+
+ Bantuan Lain + @if(strtolower($item->bantuan_lain??'')=='ya') + Ya + @else + Tidak + @endif +
+
+ +
+
+
+ {{ number_format($prob,1) }}% +
+ @if($acc) + Diterima + @else + Ditolak + @endif +
+
+ @empty +
+
+

Belum ada laporan yang dikirim admin

+
+ @endforelse
+ +
SiBantuDes ยท Kelurahan Ngerong
-
- \ No newline at end of file diff --git a/routes/auth.php b/routes/auth.php index 3926ecf..26b90ea 100644 --- a/routes/auth.php +++ b/routes/auth.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Auth\EmailVerificationPromptController; use App\Http\Controllers\Auth\NewPasswordController; use App\Http\Controllers\Auth\PasswordController; -use App\Http\Controllers\Auth\PasswordResetLinkController; use App\Http\Controllers\Auth\RegisteredUserController; use App\Http\Controllers\Auth\VerifyEmailController; use Illuminate\Support\Facades\Route; @@ -22,17 +21,8 @@ Route::post('login', [AuthenticatedSessionController::class, 'store']); - Route::get('forgot-password', [PasswordResetLinkController::class, 'create']) - ->name('password.request'); - - Route::post('forgot-password', [PasswordResetLinkController::class, 'store']) - ->name('password.email'); - - Route::get('reset-password/{token}', [NewPasswordController::class, 'create']) - ->name('password.reset'); - - Route::post('reset-password', [NewPasswordController::class, 'store']) - ->name('password.store'); + /* forgot-password & reset-password dihapus dari sini, + sudah diganti dengan ManualPasswordResetController di web.php */ }); Route::middleware('auth')->group(function () { @@ -56,4 +46,4 @@ Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) ->name('logout'); -}); +}); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index bab1c61..b216505 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,9 @@ use App\Http\Controllers\Rt\CalonPenerimaController as RtCalonPenerimaController; use App\Http\Controllers\Rt\LaporanController as RtLaporanController; +// Manual Password Reset +use App\Http\Controllers\Auth\ManualPasswordResetController; + /* |-------------------------------------------------------------------------- | ROOT / LANDING PAGE PUBLIK @@ -25,6 +28,23 @@ */ Route::get('/', [LandingPageController::class, 'index'])->name('landing'); +/* +|-------------------------------------------------------------------------- +| MANUAL PASSWORD RESET (guest only) +|-------------------------------------------------------------------------- +*/ +Route::get('/forgot-password', [ManualPasswordResetController::class, 'showForm']) + ->middleware('guest') + ->name('password.request'); + +Route::post('/password/manual/check', [ManualPasswordResetController::class, 'checkEmail']) + ->middleware('guest') + ->name('password.manual.check'); + +Route::post('/password/manual/update', [ManualPasswordResetController::class, 'updatePassword']) + ->middleware('guest') + ->name('password.manual.update'); + /* |-------------------------------------------------------------------------- | DASHBOARD UTAMA (redirect sesuai role)