Files
hpos-registration-app/Login_Feature.patch
2023-07-07 15:26:11 +05:30

1497 lines
81 KiB
Diff

Index: app/src/main/java/com/example/hposregistration/dao/Converters.kt
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/dao/Converters.kt b/app/src/main/java/com/example/hposregistration/dao/Converters.kt
deleted file mode 100644
--- a/app/src/main/java/com/example/hposregistration/dao/Converters.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ /dev/null (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
@@ -1,27 +0,0 @@
-package com.example.hposregistration.dao
-
-import androidx.room.TypeConverter
-import com.example.hposregistration.data.user.UserData
-import com.google.gson.Gson
-
-class Converters {
- private val gson = Gson()
-
- @TypeConverter
- fun fromString(value: String?): UserData.Location? {
- return if (value != null) {
- gson.fromJson(value, UserData.Location::class.java)
- } else {
- null
- }
- }
-
- @TypeConverter
- fun toString(location: UserData.Location?): String? {
- return if (location != null) {
- gson.toJson(location)
- } else {
- null
- }
- }
-}
\ No newline at end of file
Index: app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt
--- a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt (date 1688622947580)
@@ -43,7 +43,7 @@
holder.binding.apply {
userName.text = userList.name
userId.text = userList._id
- Glide.with(view).load(userList.userImage).into(userImage)
+ Glide.with(view).load(userList.userImageURL).into(userImage)
}
}
}
\ No newline at end of file
Index: app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt
--- a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (date 1688622964273)
@@ -29,7 +29,7 @@
holder.binding.apply {
userName.text = model.name
userId.text = model._id
- Glide.with(view).load(model.userImage).into(userImage)
+ Glide.with(view).load(model.userImageURL).into(userImage)
}
}
}
\ No newline at end of file
Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (date 1688626715436)
@@ -65,26 +65,26 @@
viewModel.userData.observe(viewLifecycleOwner) { user ->
userData = user
with(binding) {
- aadharID.setText(user.AadharId)
- etAbhaId.setText(user.AbhaId)
+ aadharID.setText(user.aadharId)
+ etAbhaId.setText(user.abhaId)
etName.setText(user.name)
- centerName.setText(user.CenterName)
+ centerName.setText(user.registrationCenterName)
}
}
binding.btnProceed.setOnClickListener {
- val abhaId = binding.etAbhaId.text.toString()
+ val abhaIdInput = binding.etAbhaId.text.toString()
val userName = binding.etName.text.toString()
- val aadharId = binding.aadharID.text.toString()
+ val aadharIdInput = binding.aadharID.text.toString()
val centerName = binding.centerName.text.toString()
- if (validateInputs(abhaId, aadharId, userName, centerName)) {
+ if (validateInputs(abhaIdInput, aadharIdInput, userName, centerName)) {
userData.apply {
name = userName
- AadharId = aadharId
- AbhaId = abhaId
- CenterName = centerName
+ aadharId = aadharIdInput
+ abhaId = abhaIdInput
+ registrationCenterName = centerName
_id = aadharId + userName.substring(0, 3).uppercase() + centerName.substring(0, 3).uppercase()
}
@@ -100,7 +100,7 @@
val obj = JSONObject(contents)
userData.apply {
- AbhaId = obj.getString("hidn").replace("-", "")
+ abhaId = obj.getString("hidn").replace("-", "")
name = obj.getString("name")
birthYear = obj.getString("dob").fetchYOBFromDOB().toString()
gender = obj.getString("gender").mapToGender().toString()
@@ -111,7 +111,7 @@
house = obj.getString("address")
}
- if (userData.AbhaId.isNotEmpty()) {
+ if (userData.abhaId.isNotEmpty()) {
saveUserDataAsPerAbhaId()
} else {
saveUserDataAsPerAadharId()
@@ -144,7 +144,7 @@
with(binding) {
tvScanMessage.visibility = View.VISIBLE
tvScanMessage.text = "You have scanned the Abha ID, need to enter Aadhar ID manually"
- etAbhaId.setText(userData.AbhaId)
+ etAbhaId.setText(userData.abhaId)
etName.setText(userData.name)
}
Toast.makeText(
Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt (date 1688626715453)
@@ -70,8 +70,8 @@
viewModel.getUserByID(args.userId)
viewModel.userData.observe(viewLifecycleOwner) { user ->
userData = user
- if (userData.userImage.isNotEmpty()) {
- binding.userImage.loadImageFromUri(Uri.parse(user.userImage))
+ if (userData.userImageURL.isNotEmpty()) {
+ binding.userImage.loadImageFromUri(Uri.parse(user.userImageURL))
binding.btnSubmit.isEnabled = true
binding.btnSubmit.setOnClickListener {
navigate()
@@ -122,7 +122,7 @@
}
private fun submitImage(uri: Uri) {
- userData.userImage = uri.toString()
+ userData.userImageURL = uri.toString()
viewModel.insert(userData)
navigate()
}
Index: app/src/main/res/layout/fragment_abha_registration.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/res/layout/fragment_abha_registration.xml b/app/src/main/res/layout/fragment_abha_registration.xml
--- a/app/src/main/res/layout/fragment_abha_registration.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/res/layout/fragment_abha_registration.xml (date 1688628505589)
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ui.fragments.registration.AbhaRegistrationFragment">
+ tools:context="com.example.hposregistration.ui.fragments.registration.AbhaRegistrationFragment">
<ScrollView
android:layout_width="match_parent"
Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt (date 1688643652115)
@@ -1,5 +1,7 @@
package com.example.hposregistration.ui.fragments.registration
+import android.content.Context
+import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
@@ -10,18 +12,23 @@
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.bumptech.glide.Glide
+import com.example.hposregistration.data.Constant
import com.example.hposregistration.data.user.UserData
import com.example.hposregistration.ui.fragments.BaseFragment
import com.example.hposregistration.ui.viewmodels.RegistrationViewModel
import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hposregistration.R
import `in`.sminnovations.hposregistration.databinding.FragmentReviewDetailsRegistrationBinding
+import java.text.SimpleDateFormat
+import java.util.Calendar
+import java.util.Locale
@AndroidEntryPoint
class ReviewDetailsRegistrationFragment : BaseFragment() {
private var _binding: FragmentReviewDetailsRegistrationBinding? = null
private val binding get() = _binding!!
+ private lateinit var sharedPreference: SharedPreferences
private val viewModel by viewModels<RegistrationViewModel>()
private val args: ReviewDetailsRegistrationFragmentArgs by navArgs()
@@ -32,6 +39,8 @@
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
_binding = FragmentReviewDetailsRegistrationBinding.inflate(inflater, container, false)
+ sharedPreference =
+ requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
return binding.root
}
@@ -75,26 +84,33 @@
viewModel.fireBaseUpload.observe(viewLifecycleOwner) {
if (it == "Success") {
- Toast.makeText(requireContext(), "Registration Done Successfully", Toast.LENGTH_SHORT)
- .show()
+ Toast.makeText(
+ requireContext(),
+ "Registration Done Successfully",
+ Toast.LENGTH_SHORT
+ ).show()
navigateToUserListFragment()
}
}
}
private fun addDataToFirebase() {
+ userData.createdAt = SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
+ ).format(Calendar.getInstance().time)
+ userData.createdBy = sharedPreference.getString(Constant.USER_ID, "")
viewModel.addUserToDatabase(userData)
viewModel.deleteById(args.userId)
}
private fun setUserData(userData: UserData) {
with(binding) {
- Glide.with(requireActivity()).load(Uri.parse(userData.userImage)).into(userImage)
+ Glide.with(requireActivity()).load(Uri.parse(userData.userImageURL)).into(userImage)
binding.tvUserID.text = requireContext().getString(R.string.user_id, userData._id)
binding.tvAbhaId.text =
- requireContext().getString(R.string.abha_number, userData.AbhaId)
+ requireContext().getString(R.string.abha_number, userData.abhaId)
binding.tvAadharId.text =
- requireContext().getString(R.string.aadhar_number_details, userData.AadharId)
+ requireContext().getString(R.string.aadhar_number_details, userData.aadharId)
binding.tvUserName.text = requireContext().getString(R.string.user_name, userData.name)
binding.tvBirthYear.text =
requireContext().getString(R.string.birth_year_details, userData.birthYear)
@@ -121,7 +137,7 @@
binding.tvPincode.text =
requireContext().getString(R.string.pincode_details, userData.pinCode)
binding.centerName.text =
- requireContext().getString(R.string.centre_name, userData.CenterName)
+ requireContext().getString(R.string.centre_name, userData.registrationCenterName)
if (userData.isUnderMedication!!) {
binding.tvIsUnderMedication.text = requireContext().getString(
R.string.is_patient_under_any_medication_details, "Yes"
@@ -135,7 +151,7 @@
binding.tvIsUnderTransfusion.text = requireContext().getString(
R.string.is_patient_undergoing_any_blood_transfusion_details, "Yes"
)
- }else{
+ } else {
binding.tvIsUnderTransfusion.text = requireContext().getString(
R.string.is_patient_undergoing_any_blood_transfusion_details, "No"
)
@@ -145,7 +161,7 @@
R.string.sickle_cell_family_history, "No"
)
- }else{
+ } else {
binding.tvSickleCellFamilyHistory.text = requireContext().getString(
R.string.sickle_cell_family_history, userData.sickleCellHistory
)
Index: app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt b/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt
--- a/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt (date 1688622142624)
@@ -6,7 +6,6 @@
import com.example.hposregistration.data.user.UserData
@Database(entities = [UserData::class], version = 1, exportSchema = false)
-@TypeConverters(Converters::class)
abstract class MyDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
\ No newline at end of file
Index: app/src/main/res/layout/fragment_login.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
new file mode 100644
--- /dev/null (date 1688720722666)
+++ b/app/src/main/res/layout/fragment_login.xml (date 1688720722666)
@@ -0,0 +1,145 @@
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ tools:context="com.example.hposregistration.ui.fragments.LoginFragment">
+
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp">
+
+ <TextView
+ android:id="@+id/tv_title"
+ style="@style/title1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="@string/login"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:src="@drawable/smi_logo"
+ android:layout_marginTop="24dp"
+ app:layout_constraintEnd_toStartOf="@id/imageView2"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+ <ImageView
+ android:id="@+id/imageView2"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_marginTop="24dp"
+ android:src="@drawable/sickle_cell_gov_logo"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/imageView"
+ app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/et_aadharID"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="24dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/imageView">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/loginId"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/login_id"
+ android:inputType="textCapCharacters"
+ android:maxLength="12" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/et_centerName"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/et_aadharID">
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/password"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/password"
+ android:inputType="text"
+ android:maxLength="12" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/btnLogin"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="@string/login"
+ app:cornerRadius="16dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/et_centerName" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ </ScrollView>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/errorMessageCL"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#80000000"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+ <include
+ android:id="@+id/itemErrorMessage"
+ layout="@layout/item_error_message"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/progressBarCL"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#80000000"
+ android:visibility="gone">
+
+ <ProgressBar
+ android:id="@+id/progressBar"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:indeterminateDrawable="@drawable/progressbar_costume_view"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Index: app/src/main/res/values/strings.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
--- a/app/src/main/res/values/strings.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/res/values/strings.xml (date 1688629127107)
@@ -78,6 +78,9 @@
<string name="is_any_sickle">Is Any Sickle cell History: %1$s</string>
<string name="sickle_cell_family_history">Sickle cell Family History: %1$s</string>
<string name="center_name">Center Name</string>
+ <string name="login_id">Login ID</string>
+ <string name="password">Password</string>
+ <string name="login">Login</string>
<string-array name="category">
Index: app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt
new file mode 100644
--- /dev/null (date 1688629511306)
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt (date 1688629511306)
@@ -0,0 +1,92 @@
+package com.example.hposregistration.ui.fragments
+
+import android.content.Context
+import android.content.SharedPreferences
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import com.example.hposregistration.data.Constant
+import `in`.sminnovations.hposregistration.R
+import `in`.sminnovations.hposregistration.databinding.FragmentLoginBinding
+
+class LoginFragment : Fragment() {
+
+ private var _binding: FragmentLoginBinding? = null
+ private val binding get() = _binding!!
+ private lateinit var sharedPreference: SharedPreferences
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ _binding = FragmentLoginBinding.inflate(inflater, container, false)
+ sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ init()
+ }
+
+ private fun init() {
+ if (isUserLoggedIn()) {
+ navigateToUserListFragment()
+ return
+ }
+
+ binding.btnLogin.setOnClickListener {
+ val loginId = binding.loginId.text.toString()
+ val password = binding.password.text.toString()
+
+ if (loginId.isNotBlank() && password.isNotBlank()) {
+ performLogin(loginId, password)
+ } else {
+ if (loginId.isBlank()) {
+ binding.loginId.error = "Please enter a proper Login ID"
+ }
+ if (password.isBlank()) {
+ binding.password.error = "Please enter a proper password"
+ }
+ }
+ }
+ }
+
+ private fun isUserLoggedIn(): Boolean {
+ return sharedPreference.getString(Constant.USER_ID, "")?.isNotBlank() == true
+ }
+
+ private fun navigateToUserListFragment() {
+ findNavController().navigate(R.id.action_loginFragment_to_userListFragment)
+ }
+
+ private fun performLogin(loginId: String, password: String) {
+ val matchingId = Constant.STATICID.firstOrNull { it == loginId }
+ if (matchingId != null) {
+ if (password == Constant.password) {
+ saveUserId(loginId)
+ navigateToUserListFragment()
+ return
+ } else {
+ Toast.makeText(requireContext(), "Wrong Password", Toast.LENGTH_SHORT).show()
+ }
+ }
+ Toast.makeText(requireContext(), "Wrong UserID", Toast.LENGTH_SHORT).show()
+ }
+
+ private fun saveUserId(userId: String) {
+ with(sharedPreference.edit()) {
+ putString(Constant.USER_ID, userId)
+ apply()
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
Index: app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt b/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt
--- a/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt (date 1688626837394)
@@ -28,7 +28,7 @@
val fireBaseUpload = MutableLiveData<String>()
fun addUserToDatabase(userData: UserData) = viewModelScope.launch {
- val file = Uri.parse(userData.userImage)
+ val file = Uri.parse(userData.userImageURL)
val storageRef = FirebaseStorage.getInstance().reference
val imageRef = storageRef.child("${userData._id}/${file.lastPathSegment}")
@@ -39,7 +39,7 @@
}
imageRef.downloadUrl
}.addOnSuccessListener { uri ->
- userData.userImage = uri.toString()
+ userData.userImageURL = uri.toString()
addDataToFirebase(userData)
}.addOnFailureListener { exception ->
Index: app/src/main/res/navigation/main_nav_graph.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml
--- a/app/src/main/res/navigation/main_nav_graph.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/res/navigation/main_nav_graph.xml (date 1688630245819)
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_nav_graph"
- app:startDestination="@id/userListFragment">
+ app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/registrationFragment"
@@ -26,6 +26,11 @@
<action
android:id="@+id/action_userListFragment_to_registrationFragment"
app:destination="@id/registrationFragment" />
+ <action
+ android:id="@+id/action_userListFragment_to_loginFragment"
+ app:destination="@id/loginFragment"
+ app:popUpTo="@id/main_nav_graph"
+ app:popUpToInclusive="true"/>
</fragment>
<fragment
android:id="@+id/profileFragment"
@@ -76,4 +81,16 @@
app:argType="string"
android:defaultValue="null" />
</fragment>
+
+ <fragment
+ android:id="@+id/loginFragment"
+ android:name="com.example.hposregistration.ui.fragments.LoginFragment"
+ android:label="fragment_login"
+ tools:layout="@layout/fragment_login" >
+ <action
+ android:id="@+id/action_loginFragment_to_userListFragment"
+ app:destination="@id/userListFragment"
+ app:popUpTo="@id/main_nav_graph"
+ app:popUpToInclusive="true"/>
+ </fragment>
</navigation>
\ No newline at end of file
Index: app/src/main/java/com/example/hposregistration/data/user/UserData.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/data/user/UserData.kt b/app/src/main/java/com/example/hposregistration/data/user/UserData.kt
--- a/app/src/main/java/com/example/hposregistration/data/user/UserData.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/data/user/UserData.kt (date 1688623336113)
@@ -7,8 +7,8 @@
data class UserData(
@PrimaryKey
var _id: String = "",
- var AbhaId: String = "",
- var AadharId: String = "",
+ var abhaId: String = "",
+ var aadharId: String = "",
var name: String = "",
var birthYear: String = "",
var gender: String = "",
@@ -26,25 +26,14 @@
var isUnderMedication: Boolean? = false,
var isUnderTransfusion: Boolean? = false,
var sickleCellHistory: String? = "",
- var userImage: String = "",
- var location: Location? = null,
- var uploadTime: String? = "",
- var testStatus: Boolean? = false,
- var mobileId: String = "",
- var deviceId: String = "",
- var kitSerial: String = "",
- var csvPath: String = "",
- var reportPath: String = "",
- var CenterName: String = ""
+ var userImageURL: String = "",
+ var createdBy: String? = "",
+ var createdAt: String? = "",
+ var registrationCenterName: String? = "",
){
enum class Gender {
MALE,
FEMALE,
OTHER
}
-
- data class Location(
- var latitude: Double? = null,
- var longitude: Double? = null
- )
-}
+}
\ No newline at end of file
Index: app/src/main/java/com/example/hposregistration/data/Constant.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/example/hposregistration/data/Constant.kt b/app/src/main/java/com/example/hposregistration/data/Constant.kt
--- a/app/src/main/java/com/example/hposregistration/data/Constant.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b)
+++ b/app/src/main/java/com/example/hposregistration/data/Constant.kt (date 1688627667109)
@@ -10,12 +10,34 @@
}
fun String.mapToGender(): UserData.Gender {
- return if (this.lowercase() == "m"|| this.lowercase() == "male") {
+ return if (this.lowercase() == "m" || this.lowercase() == "male") {
UserData.Gender.MALE
- } else if (this.lowercase() == "f"|| this.lowercase() == "female") {
+ } else if (this.lowercase() == "f" || this.lowercase() == "female") {
UserData.Gender.FEMALE
} else {
UserData.Gender.OTHER
}
}
+
+ const val USER_ID = "usernameId"
+
+ val STATICID = listOf(
+ "SMIREG1",
+ "SMIREG2",
+ "SMIREG3",
+ "SMIREG4",
+ "SMIREG5",
+ "SMIREG6",
+ "SMIREG7",
+ "SMIREG8",
+ "SMIREG9",
+ "SMIREG10",
+ "SMIREG11",
+ "SMIREG12",
+ "SMIREG13",
+ "SMIREG14",
+ "SMIREG15"
+ )
+
+ const val password = "SMI@12345"
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/sickle_cell_gov_logo.png b/app/src/main/res/drawable/sickle_cell_gov_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..20d09526edaf23b358b7a048bb9669a9aecd5781
GIT binary patch
literal 12702
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
Y03})u>nS$w-~a#s07*qoM6N<$f@Q8gPyhe`
diff --git a/app/src/main/res/drawable/smi_logo.png b/app/src/main/res/drawable/smi_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3e2ea6516488655047e6808bdd8e9ba3ac20b3a
GIT binary patch
literal 25267
zc%0O`_cxs17dDL1MUUttYD5s7QKJhXA&K6iM>jJ@AEHJtL5R^yB!=jn5nc2$qSt5>
zU83{cKHum03*MjJS<AAFbI!fbKD%7kKKuUgLPwpPl!+7v2Zvl!Lq!h<2lx2)hnNuf
z<|k$`3iyQ&QPO-x41D~FZ6blcN!&GzAUHS_owq-@Df|@7z?Y0rRYR!0n;jHx<!Orp
zhr<OOU7aA-R_?ZfZl3m^cV(GyaPH%1syuz=o%v_p=cB1D^5)<K@=XRArkcPVTJY_w
zGCuxO3EXMM6x^4LDfcxEcyYN`MRHajK78bH_mz#x3zZQDz1OVOW@?Cfj`yXmf2i(+
zLtn#ww1x^im^XuEFS38&v`pRI{(6o<UHBkHHwH!vuyV<}=l>wsg$-Ql|F0iMqam=O
z%DVx-o}}QZ<`o69IeaArwjj?H>3$&!k8?I5!?h0@0S-CQVoe0{mTFc^^1>+zd{RYA
zKlqls+AsQ+YKhv&>rp|dV3gXy<P=^Ax(W?JTT5ki9&znI98&lI0lj*}zqx1Jg-4IM
zzEPwuAs~k)+KrxczPVF2Pc)n*r2v}41~D>U7kAWCSW@ZYsw-sCNwwYWk&F2ZRS<>y
zj)HZ#cEv_iA3rv&72jdK09~xk;i9k6*q~4s!`Djt{OI|R4Yte+T4kZDmubhUOj;nb
z0_uB$vl+D{M6{u9xNs?VswYF>Z*h;%Axmz-OK;xy#}4d1GE)CgEdt2mTfg$pi)Y81
zYatuw8nyHf4-flTKd#U_Fl@sh#sWendcstxL*vNJw8>GE6yU(Ckr@PWBU&JIwnk2L
zn&X#&PWWk3vW354J+Su^zl<x=Ge)<j%!)E(MV|1kN@Y0&61ocDU*qgXa6MX_a;Gne
zBW&z-_>20Ln!Ci+?8m-;FJ};35_ShPwR}m*Ai34k=x1)T2JBbuYaJBF%A2r$8qI~x
zWbnqloIJg+u6uY7%aCYS94uHVefE2Hsi%eVG9oAd1$p}i*WC#Ge(wonMie8=F{lAD
zv$0OS`!8ojo??KI$8e+f#)o>ZRV(ihCP&D7_zc*NP?`X%&eCw_kt;OBM3n5{G6|in
z3qOy)ovsK>52pO(vNRv+kGHXCgXGNjk`ufnoj02@j)*iIQ%v(VG4&-2z9GfdnWsF2
zTm~l$k0duPfK@x+6E=2^uZ)=x{~$xN+8{Z^;rvfe9qr)rHmn?D8cdrsLJcdQgUNzB
zO7#mCF2(DYSQ?Wl4bvjUZYOrEq%<Xc@h8!hJa3Ip7CGHZ+>}Z)($A`lqb}iXsnB%7
znn(w??`!XG;F*|gL{blnN}Vi1p@GTiWp9z3dX!9?V~v$v@YQ;T&1#**A`i-^-bL~j
zX>SUG1yS}dtweTq^<;TXiZ%2Pr4FUw_o|Y=p{!Njse;UmBTnKj6$vk=f~Jf&G{*hz
zUPkm5Al|WZ=#c?yGL<oX(xD0@>Ji59(Fn(}q}0X>+i#C!_&BU{g9S&^_y<66zV9ip
zC>6{qI-;*2&>5I0Ko0#-)=D>9DR>~jQU&Z*RmwATRY7BTO&pk*UkFT`Fp&*Uc>H7%
ztZF=DLDF#|T#PlxQYDU#D5g0WErGoF1K5U(gVA7hV~nw^{aCWG11pD!9-u?k0RB4r
z?_*?_-(XRl-IMjph+@C)Bg_L1lRRMA1neUH`)nLDKv>B@X_AG$(qj=UP2%7vx0YjI
z!;ccGxv21lPwt`*n@sxBuDcplY#?GIg+4xey{WDEt|U+T!0K-YD&!V!qD+@V09ilh
zY3+_>3Ysmnd+m?~PXphSua(>EjI&!^2X|n&IfMXv94vPG{qIir4cWB@_HN?yQ&!j0
z`9>q1j1Pp3VrkC8v8(jxEMTIEJ5fhR4`e2W7p1HMSXoBj>%ta|Q*2Nl@K4SaBQ?J>
zm(0f5XV|;c<WNV7mM}@0MyFs_l)j4E7PY@SiyZRABtoNkOAuZ$WdaTwF^dRqP#M2V
z?8apw)d^NvdCm{5ND*L-J8HwJt<a%n%-<mSQ76)b9mYJM(Pi3vTU>Xe@nb1%lM&*`
z`i<nWVnAong_YwVKUh!#<M!JZ^c@L{(ukE)?P49AThqf*eV_-#XkMTbC8m`G$(R&J
zPV~`w#})DZH30rcIe(Wo7WP+poS3#vwZqhSR!6F=u&&^UsKBaPDXqJY4vy=J=T)Uc
z?U)du5hL^Q){rR@F~xL^Vrq;1B;F_bVguafUiq?@WM$qqd9cW8d2(op!X7L3hpN;K
z51_|z$n|q=rp71&^SwGf0~ZV~4XC9{XmySc!zl3OPANVc;SKTr!+Ku#T>}484tejy
zoI{orl~V+wLl~DK{%Ce(3w_4gzC--y$9Zf(k=yBFVX7=|)ht>WU5wH%fNhCFOUnHZ
z#AL}(q8x&qN0KaX9Qf*-$fMtF6|S&cL3MBQgI*P$*G05%?3U)3(R*Zn$O=aNx_@~u
z=;}UGpwy#3U;cRBcQ5WogHx~vhL5_6@X}?;wfo{TgTfYt-R^N7>~2fp&OS>xB_+{q
zAU>~SMOnSy7Z})W>;tP9#}hVA^qkAg>?y?;$HrLmomwni3VljyjkPwN20KQdXZ?z5
z7k9&r>mlk{y%fV1M0$U$T+H^_>M2z&sBy^A+L>RPHGJJjA=M8q?3)jRFB07-`|1&3
zKM7-Z5VThAqzlN><yKWm5%IHBjms6DM8I2X(gXrXHij#P9Q5LG$R7OR9{-yI(>C+o
z>m_FiKPtu*9W}pV-na~d77y1BC17r6qzEA+Pi`m!+*(YDFT+PHp4xBIR~V<<M)7vb
zd-Z3fZ52A#?X>3zYn^j@%!4te<0Af=@!9MGnz;|we%OyZ6%@L05;x*@g=t1TpMIt+
zkY3WC*5#dKwfUu@S<!!N+F+3?*@0gQB<`ICm5srq;wp3;@q||9B#9rTJ-JOSpNgvL
z5$t$y!TRJ;KPt39sRkR6QC-jCqntAWKNUzEhQ+VUcVQU2!_gM1=|@naBVyCnGtm+V
zwycx9lRVud&45X;Ql7xBf{GrQ7OCG04>%reseVkTR2uj4(C>*M^-^mNUK1&XjaCYl
zx5&2+RO~Dox*J!3*O)PFib!DDUp5g){Q`FZ4qhLhq&aVAM&pRxi$MqtS>QvBHy9c|
z$B7e(LdqWiZo$KP@4oes`<C;H^ngK#LhSBDJJY)OQf4vlnKGDXH|&TWuV!(q_N*nb
zT{F8PE@5+w)a+{-c9HeHUl0ZMBjE+L?G5{RW^-KGqa9U_W|lc>3?KO$o_!)=nSeS#
zQ}J&$^;q{<@fSICI_8e<3?a37V3pxM$ie4=g)*?a3&WtS$|1)b2_^XSdA3mE=%`}a
z_A!tJ<7$Q+a<C*b{|aT!II#)8+=s@KTcgk|6dOXeSA=pN`*w$24H#+~xpRRRYHlx=
z#j6`^J6D%dL>7=*hz(U=onMA!r*=!8mh6C#-brztYy+A9VgP|6-fW8ay6obu2oGd)
zKzqiMn_qM^li29h35)yS)W_oun`}%>$K46rFj3d2b_f&9Pv+mHybQzK*zSAz|CT$}
zX8%r+7~5N(LHb*3zj+p17^h_FPCSo9R8S;3IQ*5gEfMcAaJbt0oL%WP_mXM-d8yy_
zqelI`_9G!hrz~S4T=~lkSg4Bnw>Dudf#0MzQ5ymnM%eGm!cvXah%<eRad9v4aY0!z
zX9fG|Fen5g4Re<|8~XrkmAr9Hkh2O+q%AbBiDe7k^6-DZJ8@$ep^<Wn9saaVz9+(;
z{~5Iw*ch)|tHKXuOy2^{S06ut+dF<zp99j0uU^l}ymn5CPQz?O8IT&N$1Z`;Ct&i5
zp>0{XrU3Sg^_6?(Q~0(Y=7F9v5DJK|&d~nG*2{W1)`M&_8)g#4bgiR>3p1b8ohTsj
zCwo&*+@1nixvxN8g^G=I&Jn2(atyD{aASQi2!!_OW`0*U`!NbcM{=c3iF6NQOT_Qa
z<9*z5q6Nz9Z)gdOwDtZIR;R}5XKBwzNzEkO#+>YH)}EaBzv+<WxmTZ{efX?D5Y8fv
z%@qEX(*EK6v6+M>uxd4cZR^Hby#E1<R)pE;?bXFmaW?!I^@dBw$(8D>4OYcmubDTl
znn|eLjxGy6sa|^0mKZ0_UKvNFoPNCLvsDs+MuJMKh8XF3*t9K5HpXo8#YSw$GZkjR
zxka)+A6_IMGZs9#L0gIRl~cX?hkIj!%^W3Ba5TF=sF^lryLykFl6y%48^h$A_1%*S
zQgky2R>^o#yDy)4!Sp>E)*mSamzwW0L5UVL00zXoaT*CzdhT-)NDi4U$T~hbShWwj
zA$?IXG|jQ6;EcRKsLl^PvtKl6<=olf4+flSW<M=K6EV@K#F1CGucic-c8`Sh+uaeC
zl}#D9lXYa}7*xKUv9rUTV;e3FAFFtiE#2QcsIxd2wPqzHe@E5{Sw*tSFtuO}oP;Vr
z)TdBB+w#lti)dLt`A97mm6Pg=Qf02Z)Z;yE27fwT$-$Grv-|UXavnoKx`vF9nwdMA
zZPnjnTwj{s5F4=7wu8y(z`xpeRJ0Fz?Vj(hMXMXBYa9W%$G{V6!aLFH60<j<<F3an
zSAsQ?YZl5H#uGByxMbgxw*)qqKP~v+Lt)s@TD!T^o}dpHK5MZUEtZ_gh6z=-lIRfx
zt<(aT!23fkOa^jGVIm^sP$R$D!Qh4G#}U%#De-|qS3BN|z5*R|6C4lJEl#`1a6_?5
z=t#q~c}SVH$$q&s{|wA?T?bPe{QHkx6G+t<#zPUgJ|{yNSKa+=qCZ~j$C=LmX2xDY
z`^+#+zLuoF-ElMwi(@{V6ptlex5Ct(3z#2(-*?UfR7hSMzHNZfJbct}9pKUa+nYk%
z`!B418M&2p(A@5%MGM#|=36K)^<OKBx@65OG&rva$O1V#GHCq!u^VYN(NpdK!YCbI
zvlTHrc_QP(P%n+vClCC4aO!2|1)!5@H0_ln{>G4FgS}_dGj@E$8vnIu&xen**U!qJ
z5&`ntZJ{+38?xy(sd1gVQV710dQP2|aa;H(HyroB1Y4tvw~EsLx<2Q&sdN1ekp1sJ
zUXqZDAe7`$@h%7P4RYEH;rc2y=7rl$VrctsG?sb)9d>^eo@0NQLD-xs#)ldqz@P${
zU$U*^Jg}(N`68WN|9+4X5_ClzqL9FE`ZVxNBDOb)I%6J2>y+)w2?RtT%-Ljj2iQe~
z7Q(cN7aV>5`yca`=E7Unm-=Tbj^2nl;u|Q=?j8RN5l`-&y?Jd+c2gjU)mzFXby$GF
z#^Rf)a-rwCAi3RUxHsZGtou{_J{~qSqn{4m4tYt3fY9$p_t7DAYCo0vq`h(*ss<3b
z4$m>~%X0gv7UnIXps_r$k<~Kz<N{g;!)WbJdCO|lCw|$Yy{u0!+<GcLnp)uoX!T4!
zdiKr|$mpjB<wUKdcczY=Wd7yUDHx5H^Cjj5v%#&rV_-i%Nx{<rSF|PD16`vCEgbRc
zj~Ftc?9(e1;-|iP{Bp@t37P>(-zz2en=%4-o_ISwZ_84NBJ`bWFp#666BwrPdR!6r
zC7nC|PY@(+;`Cc9MGtH(+9*}FQaQG*Hl{0c3z08#_GZ8M<v05&)^irQZb0?{KOz-)
zj!d>oNe}dq@?wrWJ3>m9v0s@oi62?9yl9pY49U{=rM8-7Ln~Q2Up(}t_@<erk`(xT
z^|8!%Nx_)i2RsihM0sIpz-g~(@vdBn$NC7vY2zrzkp4Ns<-DA!tWs3;<`gW3f2SPy
z;hx*B{7&@TFLUX9GaLG;F(j`ck6qHO7V6%bG`BT-2yMo9UNrU5wGQMdRiCgsh|3}C
zM8$m`#@*!2*iS{wQkJ-UR0$*W&Ga$2dW6m#Hld#wXzZK{Dj^S?^m4Z!U*F|58ClgC
zTw^dOlKHDpP0+O38+%Q58sfyx{W2$*%|1@jnD^D-**6sJI}Q`sdp)up@3*8*oGQDV
zdduG(3(-|d7kkMo!M_qoQ9q11-IEp@v3{1F+w*#H%;S!ZFK*-tq#vHFxns{NY&YG*
zvy7Q1gBle(@3Yh&ZEjxjh?;eQ)y#|Be&ZAVv=5OX+Whq++q`F{xE5eHH336r8Ch>O
zJ^qdrv_!5yA?g_hg!qBF5E&F5z^x^?fe~sUcof_dU@^@D1CBz8nnLI*_WcWi%dLZ$
z#lT_0SDMMAit*oqK&7-_=`R(q?}bfFW$&IQz`A+<#8bL)TGWREaSSRIBc`XjU2db-
zvox>0bnyJT;eLhsYF>enLrzc1k=u8jFHsweY#Ck=fU%o4Hira-iJc5vFfSnc>JPyC
zg^Yi>5E@JWIvd=oMj=xjYAn-_o)@Jrz9`6Q_CvyyUb9G6pk3C;A1l>5-QZEBXyxgn
zg?LPw)h<FM)2I6;p}Y#jETM2jU>9Nogc`Bd0Liu584|tfI%7uBcH4M(C@ke;81vVq
z5}$Z0619ruYH#bD%TN+XvU{`PY~&x3<xeCK`m&gL_{mTWPNu>ojd)+}5H8j(>-jao
zo~7`(O6~s^V&26~u&Y3a*(4c^-TOn*O6koSAa8}_jx7vkQ(vvq0=ZxqUmNyJthHdM
zUz@zXyhC->vt!AQ=gMs{Q0YDCgtA_<)!Fe6)jq%5tU&U{#R<t7TevZ@`q02%MrD6g
zXzyBES0v-J-I_rwu0;d#i~OT{$M}#7u6d+%Ci84N2Zsocac)l{uPyQg9sPm}@<j@>
zKXYqy0)}}VM<&EVyA=wW&XcdB6D|Pc!A(Zde!V*w-1=^5b;&p&KQ-TdE+1r}@&`DN
z#Q06clijD-(3d97E3l>Esv(DjHuh6b_Ot6cqn^mlSU?r3u$;QIG!x#Kemr(6{6zvD
z!(y>tuBS_qYtaEV>@$5}H7-HGk9*IMz;pI#D0L9Oz;9o9F`quE-^`L$c$1av;d1ND
zU3lduOo`xeN~6aOo8(YkK0TREAUq#j`(tBx_L=rA?0vU}k5f7P1A{b<#uej>cTga;
z!Glk*ACW$L#Iy!@;9qO(6!(u2T!5jq^43<yQ9G(KZF;P>fOw4UUp)YW<Sf9f&90;u
z_E<`PM$@Jk(*rq-Fb7HvB<EV@55-Hogr9tte^i;i7S)79Z)`8tU>3}tC}6JarCJP&
z(fAg*#M~64d6A)sA(<q3V?rM@QWvyS%E{60!6A5H;8|GJ(5~*m|2DA*2$+&(0(qeM
z@(RIUdHx>v+>>Bxo!a;}wr^5gd2h+P8dpD{l5PT~&A;E*5?S|6osra57c2AUAdB-i
zYI{Y`6M2AOAh}~D7QYKEt<m{a+P`EQB=M5*GmdU}d;irMS+QYHqza(^xsL(RtlxnR
zPaJl4YjlS}aB_2^xJk62_enry7q;*3o+~RS4c)C8W-|PqxIUwjI62wA1WhGrw$kn`
zXn$m@aI%ZDzF!{=<bgE7z3)TRj$VUTJbX3uD$uYvEkpX4-pmR1-U6?7i2TCqQiw4c
z-+iOPY&PJrU<(jS3ep{OdSc5}Aidu7sGba8z3g0BS9)T%8XZS+SHj@7RDa>0C#ic5
zW}IU&z>ayo@<TWB>teSZn`AYMu<l9-nyd{J#5kxUIXA#Gajsu?6HT9JFh;2|cN&)l
z#E}(FsgWC3ATh=0x>C9d=QOQ%59o&WhiMC?)W2KOz%nJ;<pPQd5t6q@zF@73g|&Yg
zfYOQdHE?yeux+FnZB$2=aQ$HJqub@F^OVFgP&)ytfXwU);ZZmL*|l&odqG=O^f+Ip
zg?9mQhoO21klNzQWvu^J@#9C@wPn;5w`V!zvqXT68HF?%(@(t8J;yqWI;v;3VZeo|
zQq2f@7gz3v>z{_rU&RA)?=ljQAA3iw*q)SNaK%r`SS@m70$3JUgR{)aQzVGxRq`s6
zoVWCS1I<=cKys=6cZqzRP$L#)ygp>}eSB2@<dN&vVT0WlBvJ_6*}5A*4izj*qS}aJ
zJm*H9N9`%U%jDQFyUa!(G%(ZUy$%c9aHIN;F7JYca+y2GAmv}>5OoPJ`LWdDt`#=)
zYc>3j74ijqZ`(g~cOuwZfzlMhu0hMU>p*iYSlJcbD}Qg4mPl1X_f`@yqQ)bX!pKb-
zZvdTBwm*5jc_tupq8AH$52`8NbPEM|N=*?EF5(<0pnE6PIu2jXh$xaZz4VuHSh%s7
z_mT(^0%vctcf-@(06J5bHw1!D;S~y`J)k+S3V##^X9p?RAjd^yd1*iH@f!HY!=f|<
zfDrSNYE*029VbAZskm%XS@#for*;R=w4Bw($xdXS^RVl2fUdJGE2qdk;NaFGQfUW2
ze5b>{>Bd%Gd}~3>h}!7gyw_qOl6ARVnlT)+(6h3Vi{ay#98-+X-(?&I#T(kc>I#c6
z<P{6s9db&~$c$MPai^Z^uOso%!=F<r`>x2_pm}%evqWp2uVU{g2KV{uf4P~ud6B#a
zgpn4=BcJopW<RCVI)~TBQ8SX0AJ=;(vTpXQv{c18Jd!KHn=ffW4-(N2u6lfqLolZ-
zQB;P7ptMxfo`K|Q=Rz<9uV=zc`Q(T5<JEY4xSeL<IAw(NU4C2{gJn{1P5=X99&m61
zMr@F4@ecVyyypNz^4#hAV~veo6`DP6^(CO&kzo4=4L|5iJ%Ah&)4L96ZSu6ARprnW
zii1dkJstm9;A-vVY2Z%g{t*Sq8%DNwvIc&Obtp*Rs_K>cNym<FZjXE!mY^aPW@PqK
z)~4vdv&+o=l4{rr!zW-#@btI0ovwu|E63qGAZyH8l!CtAeL(@`TGz1EiyuRRS%&?B
z9<m{4wTozZT=VLnL9oc)Z-CopL~kn+eR5%?l9nsU9;vY7ZEn*eYK`f$Q9^J|uaE%S
z5-JX6bCPca&3lMVznuYddfM%ZtLXa5r|icnwu5<p@GPJ5HR#0y>n#H78BH&e0JQQ;
z5~pP<OvPq!t1(UcE7{)A{l-NQW~SXjwd|A{OGOPhL!HkS%=_9B`BHpX)@4*$O|EZm
zsb>%8lA-+D{%d!1p^cWkaYW?i;FDbzNkiV4c4$%BvG%#)Uu|<`p1<aJ6a;y`G}+t{
zM;5#mr(a-^ou7d?Dh+Re{b1Pgv`0aUZ#3YZOaKq-z(`ZC?(e=m?1G?_xmtk$<~o>+
zAT+NYVhCC7y^XD-BAG|W1+5ytYRMKBsRs4E$bDKhT94T=jJG9N4@rOpFWF&Zgx#q!
zU06pw*R=yOvW_caoD}YP{{ZvqHMfO2Tb04WJL3r(aW2QemNAV+uQZI*s|)mt7SK^^
zf@lK8E-)_#%aEC7*{Rq6YP7+%hr^NoY9_sA=6FjvjWKxiNt(!??$WW*$95{Q6BL&T
zb7*SJ0~+?3pJte!bZ$g>&B)(WDNBC`c1*2U#|{s}^!NRV<}esO>hBp*GVdGuHnUtG
zCg##LUd|7fg1Q}8KI|W1s4GU0*SPxnv#WD(wCZtZYxs1W#0{j9a>s_11EmWx!;p1+
zp@aq*fyMHl#(CH_CfmR8C<h_RVLJLp1@0~i>tnxJF??e)Vk5RK(q<=klt%V3iTNvS
zQ77jQOJ1&fmEBKXNK2r^0m!acMaOjDTpfzDpvE!h=g(7f06Rihl-;&oVPk%!C!Y(l
zI+=sYba@+G-k(7F?#bIBAE31O8P6iV5f&vAr_o;RMfdPs$bCu+#DKX{ec7dh+&7ES
zudp9^UbQ!@0#tA4wgCGEV7%Bps`y<ift&B5JG;@q9>x9oS#9*j(Z~?%UT|?A*M1<0
z0i|{YMIt6YSg?F8U<jPcBg@XQcq4(0G5pEZhG()zd^rOy?E9l4ZK{;5YZ#&7Gzu{J
zXZQ*@gecK>=;aXpKB2{KFc+rL;zBlk;(%+8TIwVcrb8<ol{<!qC3X}5nD?`)<Zr>*
zhV~O0G>g~bSYli|Zns>S27Y`C9D~{+N75|aWC0d?V3*1uGl})jKrVrT&-ChGq0R|g
zmn<LtncZ)uW54*k49fiJIL=r?M-Dx+PoHo>?_e0kSFe8CMEe=r_YzhW$*KZLHWNXA
zx={*=*@<*&`T<rl4k2uGet(k+drIySwt8`l%CuzV5K7)UM?i~fdyeFcS6gG>Ayr!4
zqhO&b*}&Mj?L(R+O>7L)Oho%Lou*!K#tkK3y<+`;$sX5w_p|&u{NRkyq{%2zuG_O-
z9m*7rgp&cf_#?L#y<w!@t2UsepanmF+$=-tJp%4QJ2@(+E!b+`){JHzSrq^Nx8apN
z{(F!IliVCuiQqgPR-Th6^w{Gv$Z#}!Fk1LCzS5^*MKTBo<P*QB7TS`tj@?R?ZA3l0
zt`3e@eszEWP;KWhpOx9#Lk3vAoN?~Y^_mo+g1>K`t-9~>u0^@kQX~%c7VO&izr7*P
zM)h=+RmV^DDCyCmMr?mpc7;jl06{0D_)C3$`e)O3tQ;l@0?3%7MS_*@M;44}zp{57
zPmCh|D`uLce(`7g0?5%$!FBl;K;P|PmD(KMGv)XF!DtYMk9;J&+_a2W#HJe9+)p5=
zQkdEzU-HT<^GhbNOZ5VSE&m<=hQ3<3bIpYPNGKKKe-MD7rU5KMM8s-E))EC%LprN7
zTxWE3DWjBa$n10wadaigLD8l9+rt5gt%a+l{9IsQZJTv%KZXs#ilHyeJ^%3Ma(co!
zEQ87V3gm+!_G2^5qfp`cNg@>Ie`D7OEzW87Lt$#HupkSi+EXhm6=U%3nxy;gU1Q%_
z!yCr)H_lFgqH}@;IpODQLQ9uvrJ~!9gI7PVks7#n?d)KLD+%WN*q5)G92&?Iu7{y%
zP|g3>3qWy)N8XVYnB4Tx7J8l<XYD>VugIb!)I@EOr8(@1@_(Ht4j{!a^v#`54oE#B
zC(Tf^fo<P8uu8_~H=810(Gw<)`+{i&@$di5_R&)SjwkRbxj8O~)^RZ9T;<WO_5ZE1
zZren+NZA?Li)k=ko<R#*(b`i{!>e_106=QKvB((&7j~Q9ch|JzH86?LIJzye>mRTa
zW!>@>3HJ?Q!^XJFuO+}n80Y)4K@i85rp3DMBX(f%IkAyK@X=WO^87}rDAOMY|Fb{<
z$r~>Htr{;CDKTGS!Nz2eT^SwARiwbe#e`b;H2-$P%?U3@!TIgCoVfAXl*c3*ie;D%
z)!zPw<^YC!Iu9?+AnJw^)(e9LCqHjJq8cg`cT<^>?GfhsanVbsfSPa4n3ySE2es7=
zeW|#~83w|5fiw{Le%Um#b)M;(*fXT#WDYMC^Z<jcSUJl@fHV>wVZSo}4EvF3d#!Ng
z10Z=OaJGNgo|!$vqC(ZIWtNmG!_?~=>$7j^xua-S=)R3*FSyWd<>=R!m?Son<Qc<P
z8l&sG1hus~!oT;uPax*AJ|evJ_ZE`G-eN4CHjIGt?H;+ht@ETA+iO5ZNzL9_n>R)t
z`IdICqT51>wT2S}25N>9$s3dDaofHReMt|U8uU2S1rBGXpRSE)0MIqlkWjIyd{%?#
z8^hvG^Rjv}clLc_KxFT@xK6==%zJIjdbY{86CPbq;+`1Vi;?fyB{<wLH|Uwed6|C}
zu!W^IL{$rfEXx22X>iEVav9Vr=PVt-H~+5V$box0eJAxzGIq)bn<}#PEtuWJej<FY
zLNH-HPit3?{Y+1C0XV~qq@$CiI&juNT)c5{=UCnko0&P0``a5aX?z!sKqRtb<rsX*
z4=st`wPD+9bw!STY@VgZl-hV4eDf~1_{!{Zg>&f!1UrX(0jVyqQbq(}<Ag3^qvzmq
z4xF#aO?)ckSy<d#eol}5^ea81`ELCb*!quuccWrP#2X?#3$iqq!TN(bTtAayF@e1Y
zOFZE|^haaE#v7e#ZU+oXWpzUgqPp~QCGTP3zs5<;wz0=@<~e^Bab+EmW7V0Uy*RGr
ztos({%`hG30iAiA>pBdh_4=F)inc%+(8txF7X87sjiOAkOI$wdo`QO7b<$;2NGW8c
z9r6B4Hgfl>sT3HwnbagUwDO~gcrHFj0{b!Ylz{a^a*dA$@;9jh4*l;QlAlm6FT3?>
z`%>l3)Hj=BQjjqP5FEUO(&t#&Dg7p^T$|$}kL|ZmtZw6-Ww-;w`wTog#5QS~fxQmw
z8+RZDmu`5gFujrmz+=8~80BfCLM(Obe52wY#~iIySaI7O|4A_C+cEsd+y(=XtwRdz
zr_|MYG}y{{PIzWqQEa434Swjn^clmLxZ;6!u6060{fROH7AuswQg6Pff^{?e(Wu=g
z#1dBkE+mn81mzvZ7p&F!kb`pnVD8yPRDVAD5vKjq-P8{GglEVxB=6I>BE8Izk4VW)
z=YcA)<C)~c5oH@KdMsBRlcC%(XvqT`^Hn;oLWjzPY4dHl%wMBsx3HEP@>BdF#K-or
z<TV2}H#1sC`yqzTWWXu2WTKdx*+^oAZ!hNMwvOEW!yOdlZ5(C%f2XZQ*Chlv@M1r0
zl9p8pGK9Ez7km*&wblliWvIiq{oNtKR@jfdhb-YvexIDTv>xxDpRu8`hAx8rN=3h}
zgLa-USf2-{ttV;Pk<62zj{p>g2|wC+(sKGx>kXSNE3I@~CQND4-#Z8P{ucl()<t=J
zSgpMA_rJrQRW~5Nyb9E9b?1yWXu&k{h=gCoqiDZwR4c{bN~!~C+~syx$D^FMsxiLO
z_XCXSVL6Az`4<Ux#$cZ<j!`-O0JrluI^W}{n3*=mn(cTmwmx}3d9g^RFRM1^-Q4!c
zzXYB4gBfL=k#(X_qw_^i2HSsOs2)iUEbb}__f6bg>suOnu-#)S5y7?7j$9*Cuv)G}
z0pouOp+H~n)wh(=c7_u+iYaW!rmq?7H-o$}VBW)Kxc7-$4D$`c^hyK@k}-BVv7_?O
zZ*b4m?7oE92shYQuPt<+D(~XVt|~neNIOxK`vJ(cf25*j1eb#t#@7b`js0(=v4|OE
zrSIwUrMCBi?Nj|(cd9=6dpw9HT?Hgi-<QF@f3%fW^(m@nM{z8}v#{>{FkUiB-#Gke
zczJ%yMvpoW`c2LEVo`<RvJae3O816RcV&Pv1oL3b&^T8MYMa#7m3Bf9Xp0;ZX`a1z
zO5LzxcKnYQ1<{r>Yan8%9Qva4ey8VoU0g!<xMG?Ec6x{84VP|bgJ>{43S!*LOcFx3
zMryHfi+Y85Fy-!h0IJZj{R#^f%OY%4S;V6sLtYZv-VnM^8E;f4;MZ6Ea-Hk2iRLxz
z`Lz!>q<_`bWCnQo0g#Vi16uTbT=5-E>FDwDOCgg0nR?&D@~#6i&n|@o3%c@@Z2NSW
z(rd91YfX@uv99i6#K)_JrHktW_U-FoCMkRi^QX1mf&ubYtm9O{(d&wo0CCX(MvgZh
zTic8kFI|m#U%x|+D|IiQa)cCeXhlUB_e_{EOw##&31(9UEMvxZOmZxHj+xz`%FqcI
zSfsZs;n`)e-||}q82KDgiGRn${?*fX&+Y`m#_CoA!GhwWS*Z3L<3>4J+C@WOhIa&0
zn`FA>eD4(Fr(m?CwDj_}ellxJud!OQK$+89G%&ZN+Bkj_SKiEan(zAY8}$YljY!`r
z{JlnGyeI40(}5v*{i_?S$OI6L72ff`_tPhGr6{`290Jv5G8^w-(l-2{+%y>l^Q*A;
z1uuYaZqlfMLpj~nxk=nT&SFLkJpa1lv1BJQQ5$uMcJyAvi>I%D80e;*<F+LQVDQJ}
z(8R1Y%G+uHoStToIVU6j#ALZ6Y)uR9@tSXD1JblFjSc<!v2NV<<kP4kJ+4%D%9dsp
zIae@yF6A#LTML?N`NOWT|4@PU>t;a5Cs-aMUJYx<oakm#p1%*%C;FD+3FO+$IVpx6
z@1TrSy)4UM+H_fU6knckk6ic-Y_gl$Sc_~eR{bjpXb-r{dalR3;1W$npD1+o!SrSq
zBh9(Nk0E%iS%0q{@l*|<0XF*U>{8l1KDT#6x3{{f%U7T88$N5@r@KejZL$%gD0U)1
zT%#1vd=(Py+?VM{IgZ?JZ-V0yU^DL}qMLNbcB9s!drW$q&8Y@2_<lTSY3qr(ZdX<N
z%Iib!)Uy-2;cqztF6Q?3>OSJe#-vV^(fQ8Z3Msa(Yow*SEt>F)`LqV6L&m_hylBr_
zVI-L8fP6v6u69&~D9Ipf)DRaLXX8i)2X@$=;$ky<Jp*y8#-6vDWJj;BT39JbLb_uJ
z8+#3pxysw)5pt))AZ37CLxh~NuGz7X0;K7d$QLPbQ9AT7jKI-UY^OJeYy09_c~iN6
zgXyTe+Hc<)Q22fZUnld91uXwfIYu%5cA#<kI8121j}twJoArIj(bFQo_{a+zNqvwg
zYvTWqrtPujbKpcKk|0^yB3jdXaYt!*jlx@#EUK5M!zT7IN_UCQnXovHvbW8V0DDZ`
zJvKsr4pIOZDc#;sj=kqc!l5Ay?rR{5{bz{<St2DeMv4AM;Xn6Z%7#~A?j>qoW591a
z@15d&vO~TMQ%8YrJy><y1wi9mRZuQ-qU&cXeo3?XT-^a<;J2@mx^!|nz}6Ei@qo3g
z0<wwq4>%4dXbwj#J={M5o|}2ZZiV?+Tq>$oDEG+~(D3johGfi}X_F&1b*nkOq~uC6
zbM4=Im`=!L((W;3DW{si9eYFGS3Ow1XofLG`U>|L{$x#aB@?QM<T>*k)a4$A`ZdY>
z03c1Q!20CkZre+dGiSu}C2V+c1V9+jr_a*$*mmVdiGE$_xV^fesZWBv2V$1*+;M6x
zr^(znSlQgxYnu=wU$b|+Z{GqZt!ov;p(i%->)g^TddCI%lFq=V7yJ}Zk(_H5n{o6i
zg=g1M!%Ct<7RTh*|7*6vvqYz1FdgzcFFlH@&|#PduYC&YB~?7xPeg>u1dY{iwb3(}
zE=t&5jwe6ZnM>41w`h&zDi@KN*5!e5EVR(7kAjQe4Izhbo7G~zhPA&0V#K3&vs2z<
zit)v5h&M8Hr_|Fc;y}z62(jVxO`7^{H)qbQ<H=k-#7H+RlEru)1?&EG`h@~&<{HmO
ze(df0d(a?`mL%k&k6xkm8lvpTbW~i*oouf7!Ut6Ego3C&<Z|D$K!`ugYlfq#fkXs6
z2$(13$=veUmtU5?;wzNsY|M(>EotzxT!3`?nuqs^PP5alOgHj|XTHyYowLct5@AV%
zjoGe0bus1&BJ`CFdptXUXrf$L)Gj+UyI1b((ve|f1IVh_leN@__Ynn=cpKE-K5VES
zW5m$f0nUAg3peBi67aE<Z^^2>gu)#bckojm>4q^QW{NKfcB7&`<mt!KRBXg^cF3b=
z?FjdCHi7RKNWWs()0A*;-_1Y(LoJtrIyK6?dA~0b-y92^E`=OJw`23Bz4v-4ZO|6@
ze;j6i(D>?AJ!gKmyd6>W(v_cj@T8}yuR!e_A|Rl~UtaI&DrOI5k0aaT_}?8~nMra?
z)_*>=<kfSgh5OCEH9P#UC&s*~w%?_gYS4<py$Kfd>-IMA3Co}&kwZt5D5K<c;63_<
z*J(T@3xC$$HICa;*Gn$XXEU=eT_<PF8~;{JFalf+GG~jt?*$~Rudxbm&Lm|>=5+h+
zm0P`h@cJiLN$_-^%;ui#-8q(}Ey9-VzfgE>H?AnQPBm_y8{0XEA$Y3}k}K1BE=MeD
z@^=xQsqxw5wlTn9Zo$0i31bz3AXoB$-akJ#slLIfgGr1Y$q>51w^eObN}&gAbth{*
zw`6oaUAJ2sSOn9Cdt()2VastUB<dK^w7H{DdCy2s8DNSig+2jUCiRwuO@*IxLv*n7
znOGPAaovlJ>|@#o6Xzu@-YJ3P7RtW$865mkWth`w{iXgd7y0f`ywJ-IKHr&9{BPDh
z$%LGp?+B60>7%*RnpLsWjeP$%8P9qp(9P_A?d`2MQO*3b35ZD9&QpMnZXSKe2y|im
z+?Ks|kLTZ<J7ZvJf2gaxs97PQ#W!hhd1n9xKlRQB0Atj4KBFFg!^$JesSJc!5BvTy
zQ6F?(|EOHRI!)+`Ecb>dPVVdZMb^=lrYb_czU^lkMaPB7Eim;7zg~-LTw`+suuuTS
z<vt5(`_39!T7pIEb2D@0uT#iNR=T#u@Z>p6?4jFDY}CzLxyk`=MA>ayKwycLAk(JD
zMu42|zVXeUMmGz!vI+g3sl;~!0Dl7<iW^8Clf*ZvJx5R13)L^Q6p#A<?%j6ucK@n(
zDkbZ@jW#tfQ}ru2{Vc)dTL5c}nQVVOa_Vy!+%bL11H%K{|Dnq@WfT9FrrBabSvZNj
zR<%MPOJ4pZGhpDw!EErVB3XjDi5vr&tdT|CvhS8xoJwP_Zi9f=99GgaoPDM@+xugX
zt~mHx8Gr%tn`gn+&X=(Rnb(=HuwMXsaKHQ>TrPn-=i@vTsBm^&C%zA}<+{y%JS{=r
z4+-bKu{lBgKTY>ds@eXfCbZy~`37+h7OW$q`s-#>63cxhqff#{_?S%`%S|1aX=E19
z++6FdSql{zLV)VSw6|L@(&GR1R=#8p&$_QI+T=vWo}$6xkn_{GVP!AKI@bKkh-KsO
z#o=tDejSOxqh>-2*NtjMUE|^j?Zq*V($7%c$@m>{a)fAlwU^^v#k9HKd(CcZwkHOD
z<XJyInKuS>*k_DsuNP*!lvq(b5!<32Wnag6y6_(_-K<<lQuoRcIes`|XG-(_Mv!%x
z7nUDCq3Wf|D|mqOqz`Nx6HYu^^u+#MzRqMaPcdC%Y2CH!iJkW`Hx8UI<U?DMK=UwI
z&G_YtNS?v~?(KQsHbM)nwmF&Yi!?3GO|C^rI!omn+x)5Q8utL8!Ashqzs9^8kWp^<
zSp>5`^S5WJ+ZA;ezwU(GFxlR#o}jQDGmIwXo0*eS<abuR<g#5X$tLoVzHMHL^RQ)!
zE)|u?W1X9>_7G|qGeKE%y}x%FBvBWMVOU?9gNqORo)jDTo${j}9>gO@Gd_re5C9^-
z>D7oBmgz&n7ATt_u6F24B5B8R3Wj>jAKGVjZPa?~)T}TBwkE>_UEr}I>1!s^=k)wq
zx~z%M1SFVwCp&JEG*$hZj7x|BA+p16sU==A07~1(vim4mY*;y;Z*K?lh5Bb>7}tZE
z<^aVezu7z-ZicUEoq)>gbQp7~>fcx1h~2XN9*yM9+wT2-a&$X}Pkhx#jpxia6X1Gd
z{?$rpi1o~#i*jQCf8h8hgql1pgAy)a=_l)t7AndP&5RvCfus<*;SJ7Fx5Za2-4i?z
zhB1HT7uzM>8WF($?xuVr)1z!Dyy+JH3C=HSHqq=cmh%(*To5eCe0$-*l4flGs)zl<
z2|Q6CFtIg-w$!Ph-Lp`1Khp{M5`t@CyKc@bQ*4euqL?;F(t}`*+{PrWx@Z2h{2f@?
zMO$iJ@U*fE9&&RJ1xJj~#*k$=@~S&3F>O{l$|X+)-4p@j9JYK)(6AEUTb}Wbl@s<+
zAS=kJMrKCR{rat)j$a>GIpZ@Rc@{r{+`Au~Pq+{wq@Y;4FYLOH;qBK%q1e|I2xn0G
z+e>^85kJ978MifN^OKm3gKIo&4AV5zMr-%iG1l9<ZCoN#U+O~eDlgg_`?1k|x9zr(
z3>Ge?Kn|U*wEwxt@ebbXwjhrlw23wttMl~3GBAdidPof2;BS7{DM=3OZt)I-g{s^Z
zyr*xGh0yn*FBLdFM1}@NI%Uv%WX*y1@^}ouWW9K(3+kw&Yz%ToL=WY~`(;8aTldMU
zMxtSJ4By{nw{Bi}mD>(s?n(k|8@*8b5y0@z4-vUCu<sH{iHT!hRn+XRa35v^%d^Ar
z1)Gyimw%cb^r~Q)rb8FTyzZoyIbK;&;O{z<Lm0_XBeqb_t{Va!fKgUO9PC;jb0Hj9
zIfQPzp5HI=qM^XrM*#p&Gc@>L2kk1qJ+4!!=(e*#<{qcXIo~uL5+jVarZtb>&K}wI
zWP{*G?M-!D!saNcnVOJ=6wzL*4RZ9pQ#&Fhu7-YdoeT6|O)4%LjkH3JJz2QnmD`F&
ziE{ahjo2Rl-;(X^`wHYxg@u5GtTh45gNj5UmiO=$#WdJ6(EQJdHC&d}{@c<z)21HM
z`M{86in@I70i~(x+d1BJ@j^PUVJ95}S&_sK$`&|7d31Fi^J0`NIy|t?ut*jC%!Qaj
zOl23phd&zJfgVRomudvY69`tvIr0Hfb~(fi<cPfsN=w!Z=mjg~X@ShXrUf|DxX#a`
zT`_!WyPZu{P{vlm!*4}OXLz#noksyB*>N8(L?FfVC}pn3mD3Q;nvVi3VUQ`>MP44+
z5v@;B5z^yqwQ(OZ|5ztm&KJA;XTF(_4*2;9o!B@bXk8dAXr0D?O-Xgq<NUt{asc-a
zfQz>N3b6Jpy@5zN^EF3%#MY4Y77Wz@N(ESDg~=-h-Oo)R?-tlIT5sz5kDc|=u+=%W
zV^k)(vENZjp5PC_rtx=ktp`6JYZOepCv2QhbKAmELhz&fwkI7>1ZD3#yKIW&Y*?*b
z`#5E&C=kSZ3U~h4Aji4Pe{fS2`OO5}cG3gP-|Mi8a=BpuoZlCU9(G@@^LZFx_GdS0
zPk>dCAq%&Rd4%muXhRCQJ8@DfS^&E(kp7PHv8;uuB|lm+)Zq4bt+l8)Wik`@%$sy5
z0O!{txL8vFAZ3GKCF5v7syF{CH1V<56OBEk7!~5VnEd$fmz=&{em}qt1DKnpHnP1%
zqFpJ=Oqkx$;Ymg9Dix6boXj{-svxs>Zkkq<k9LRAx7UU*aN+!dmvjp^QQA{-n5Uen
z0!6{J?wQ0a&;8kDm}56c_=$w=&lgLT3;qH!2CO|3ZAY*N#K&Sf(Bw;QxioV>GKYvV
z*0ulqiPCY9A>D|_LvYnIVl=5&gOmUFMiENWtyWKA`p1UHE(F6!UB^^UJ3PO%+x~jD
zOV>X#tM9MOk6O3i_~uMm!CHTG(1G4<?BChHL*~sz*@n228_~dq(|`@fpTzm|kwHz0
zt8;pS=oE3iY4+GSiP<BT93Pc(E@yS5MG(^n;XL`nvU4qt^XjtJyG{IqrPB|0b@!%~
zPj|F!uh_Q7NBopy8@g<gASnKVnyrX8+t{et+4TC3@?dL}zDms8kL~3;_w|^kSSm*s
zz(ElIy{_cR{JjYlr4d5Mz$X9ce_h8Yp)#U(8k~cf|L&wL?F21MaOtq|eqkxL5{%6Y
z7K|0HgAfEGn6Yk$G>))gT;3;s=bpFk-H<~aGpDzjJg)JV2(Wh(!Nz3mGQ9=6)f9=|
zql#(W+d4PY8*xP2C%;l6kq=n*xW|2}V3D`?$zta4!#Ad<u8Q!hXZ(Dis!g4%ez3}l
zCdkYg3O6IW<`SDI6u*PJH!kS@7Wndy%~%`Z0;t&r$ss}*5*k<(-e5Qm*?cP`>5d;d
zg)?hh92qla?9Tfi<5f`snPn(@S-P2?GFwK$qI!v2G|)2X$i{ZC3O-=R={C`hENuiu
zCdHA??fK{rzGBb+_jXhlKb-sJ8F^MqslJNDa^Orqulp_cR8}$9k?hihq>JuYbw8KI
z-wU)ua#T`JjlYyO?J&(qe6u;02_)L+jbNE!u&Rw*cA@nS(Wi!~1lWh(ZotGKKk0M`
z>Zm?hA~`Bv<H7~!k@PE>b#c_wcLDVUMn^}`?9*CS!lF8d#+P&^tsQ9y&hMCIEM`uy
zJMg!W)K7v{-~RUUw?&XcK9G__KZNVUP5LI*M$rU{4yK%_p(DBeYhvFbN<%;g9|aq<
zj*sufKj4a&$W5H_W809|hKsnda)=lM$oY6cXCA%3&y0(F$6a%*{;2($X`SXZ(<aUH
z;z92ux<1-q-MkJn8|Qv0I2&tUNBV5T53pK+apRicXq|T#mY9YtxC5on<;jLV8{g8o
z83n7@lmhw`zvXKFIG3t``$>--hqohQCx0JFLArBbF}GbbT24l<G)C{4;$FJ|7^8p%
zk@H6$ean;YCK`_^reRiFI1MsGAQnoWM|%}y$^294`rIneTchfZ(*M0i82|i7%Q1=j
z1`aDm`YliAsFvZi(0_43t-u_3{NLYicEi7!25s12?>g2mDxba-F*`Agh@1fOe5ZP?
zJIjz6@gHj>$KUm|kc+$N6Y(f56(%5PtaSOQyDqgz-4Iy9u`DGGxb7RGHAjB8*+iHl
z7Qib9)o3Cpc{9<55RO;XP@=F2!7j%e$^eu2TuoEQ9IfWtHcMIyKc;$JoN*MyW`a}-
zF5IyU|CDBK&&qjgwfNVqZxJ#>+2kyCNKO-|WPNn{OoK`qMim1<dY>BqttZVlQu~6?
zg{Pti=<)+o72R#$+qX*dg9R)349K;4_xF0v8XQ8HwBkeBqMohDfMr!}#>GZdYYT>X
zy&abrXs++b-VjzB@pdUjuKFs$xmPVN8E;>drJ!;2V%p@$ADzwa<XvC7;zMIm5aW>+
zDTH{3f40w79&j=r9de>yVZV-<bNxteZ=sYMm%qoIdBaEtr-SIhjd~(gQV1J01lFQ1
zR(&Mn5Cs3!6-++UuAI_lWz(Koh}^ybl%T;s@;OceC9t)aUMa)YbFj2P>THjkz|X=%
z$jP5d|IW4e?*+pU72{Z7ExEsE_#I)OFZCVnyTllU)z)O#8;~sFHBWOB$$RELZIdX-
z0{B@$%5CAvxC{X|b!S*$zvF7LM2=R$mI`~b)sxlJZtQj%Tq_k}pJE>-){iRES70`1
z@7(hW>1>r+(CEc_Skc#SiB07o?(JQNAN};$b@NVr>drf_Z{YA(;O%XdEM4G{cF`bg
z*_8g2>lC@~s%}ZoBC|40{VTEJ>Tw%!GmdQZhA;~yDE_@41HF7WoS%`+yll8d^%gd2
z@Eg8j7_PU(OF6`Z?(9@wOgSG8pIb&QACkq8Wm)@dKpwkWfwWXr{(t)^=#$3cOxNEm
zE;JBzznt{DypTzLK2{{~Jmb%RPHofYTEp)vA;md(^!-{Y{mT9N)K4Ft_^Ouozb+G+
z_{I@=ibIE6h$g`0drv?5<M(TPT<U6Bt*WNyUT_J=nK1*2CP?5(e86Cl&z`eHU)Hd~
z&e>r4;-!}eBoH!mhFmln8xwJ}9AY8IvD=wR@oA}p`_;JUJ-n-`lzVnmn5mAF@T`#V
z@y{6}0TT)wS-D_zroS{(tSeDMNvd4b_WiFeL2n&IVzY`LBDeFQU(0FAzLxyIUVt`p
z6MYxIyQHdoneV*$Z{j2zF00<nj5#s%th?kwzY2|%vA=xocX#rsG&D>p_r*gy9N46U
z<yTsf7%I?DMNfGRG0_ox9Loi~eb=|6yrI9IG&M9puFn60UP~AN!|#emd2WV0c@FWC
zTYIKq-X5yVP--7fg_eD|8HDpzqqZWyT#{DoFEPWg$bP-r%qp_t7xwijNz~SJvyoy2
zvCw8wnmT#8Elf<%;$C*)H0T6x&7(j4tj~eN$F}B=-otlvzegaSil&W+{~?5Dvn?&J
z@qZ9t(S~;{g>mh*YN?O6kSf(+&Oft_jlK)e#dlrW*3*@?Z`CdK4s+vR)qV)fG}7O(
z(uFCmQQMB27Wu?bClodLT|M^;Y=Q+Glv9$uV|77CC{Jd2P4)UQUKZ$kDlt4{|9(&p
z?j<XFmh;Q5<$Aeetv9E`w!Hxws!DF9W&GNO`Pu!}>KUGgccVCJ7L=#nhX-;pWV3Lw
z<LndJHFjXC?Hik#n$+~h78Z7=q^c;n5Q<cBb|VjPwpm|$IW!SnFV!AI&AbnS+!L3y
zX!ZD+>M~htn>!4@ugvz!MFu#l#0=Ob5l$AHvIY5%XAz%Bs+kxs4&8Ni-<CFdQnZnw
zjd2zyU@axVn;m%mY-B8y`zZZf>Nncz4&vyI-=vT~M&uh-WP!%7lW~Ys)4)ZAwIK%v
zRB>f_nxv|O`c)JyJ@%KM&^q?5A?V_WRZPe4?IG?@^~~t`BF9<@8xi9MFkKA^_2SPM
zYh0TU(R2gcQ%0P!)aQY1Z3JHD1Mh=2B?v!1(n?W!Y4*;OqNU@QO>0SuC2xnTLY750
zb!UKxHoD7KCRy{ROH0&@;<K+r`}`4`$Oj!?-i=WWvPrR{OZ|;z{N->_lT{kIFL1=S
zN4UokGC%RJ^?p@mp;F~YyWA6&8kij0@Ga>>^S-t_bl%_S*<bzq7@Lj5A5r$=ReA<w
zlZ<@zJ`RzT3WBmHx$VpCB#kFe?5!W)vt4=`;jH?-X3~J%53Ic>jQ_{%d)U_bpPMg*
zO#g0AOnhTRJeXDsUmKnib(9FqOIY*88Hp?xB4%VOqose{!PXa72nqEz;qb616LZ=W
zy-V6<^AbXV<Q9UZsv@BQ3#Pg5WHhgcaF7*i*^CdlcsYKkep<`HbQLvFp*0DZ72EuA
zH8x1elO3a#a(^WQ!m7;eKAz3<(64cR`A{vSVW~PDtsunq05P(0wP`bxWOeZt=Zuay
zJw{{k(?uIjhv<MKY1rGOFAcU%cZ`=FtL2X-inKiEzYM&2oY)6d{7#~IgiA%HLv6!e
zfT4fRwV+6MqVezIs>;C<&Gr1VuHJ4J6MogNeq%fSk&*ey$(knPT5_f8y1LIw6wn|Q
zQO*8;@?mqNm~#=8M8n4z8OCrbx}*Qot6Ba<^*(+4Y|ynV-3^k`CEW;uf=Y+d-CawE
zG}0-ON{Vy}NV6=0fV6_Zf|N7}-246g5%+m=9?t8UGc%vhd(KtXRC!GKxUvV!()Xo8
zHu!SIdZE$z$ERzCknUoh$No<Y=C@n{+-Rk<f;^ru>978{EiKn==6tN&TV4n4-=dbY
zUe(qkTO?itMeAU4KkVbfUp5*rF+0eopZc00NZ91>RB@@sq?9+T<&o_~^}wD>?YXiE
zHY=*`o`AhjXMNyR<poxFAMoIYt?3>YL9JNaL)K@}cgp4Xr&ox6)p)vKDb#FD*WMc}
zM2y|Q^yl=oeHlpD4UP+Mz*0baqh{~1Q5k$5TB2$GUy10HIzn-w0sz2yt<IiBEzGSI
zJ4IzZ(v<5ViW{q7y9I!eL3o@1oDn-h?p6%Y6+U(=ZQPWWaAv@_6-X>qeLu~wsN75T
z_Ewge{`;#uEiNmvl0uU}U63U?5m~g<tv08!E4wl7^(ikdE`WfV#}C!+nLd3q(cD!D
z-)Z~Ptf96MU;XxFwvybfJSZvw9{PY@tB%{?__f(Z1s0OEUkH%H9Ws9#G;|UGWhaBO
zm#N{>USk8g5gsOkpBVWsuGyyN=EN&UmB)>~O>6&i1@GgO<n|%hVL-%4GVhWPCNflE
zPvIZz`&5T4J@JLXw;r^@zLa-KnH|U80#vY>L0XwO{V8g83cO*GYABkV)58gjD|Qv=
z6WvoBq30{vdkVFpHt_$;C|htI9v4{yOh#?#lX6Qe5R6ND$7a1lvY0O4%AFhhkv^zw
zy&LZoy)0%9ecV*zbJ=~^;?kj~R0LH>w9+pM0sbg!Q(*<Ka>X6}*5JGHmTF1H;`ESJ
zG*9J)H+AFp*<|+AS@*n6kl4=DU_Ca(67a&OdRc-R0C=`g@n}oVU|Imz8ImJRENdUw
zJC*p55}K%9_3E5y_`ULi^`r67`v_lteLowub(z=xL(A5%EWi-l&jpdYt!F>BkzfdV
zK<@bVwiC%*dIHcR69ZuiRzajh2wljAsLuYK??`2se8DYl%@5}7#eC)LOS@_ndO`2W
zYKRd2My?j&d;Xo7d+5+UKuPqhn<+{XVF0?LLnHw$B+uL!LH9o%9GQ*?D*axhcD`Vw
zJw@+{hG#2YN`NVepCy4*KwZ#vAs{9ESQs%Gxl2l>1E-ax`rFK4QRhNji@Yh1*507|
zR?$o9E_@zLMcqdU(0N@Pe_sw+u^Nj|h>b+Yr|RApIJFQfi!z3VhxbY+{)=+RYvK)<
zjPAG-05h1wtg}CScYbfAi78TE%j;6*Q*Zf=O^*w?T!J&@iXOeDJ#(y|5wBh|w19V@
zJE}lEf)w&Qf`I|%E(o2&COn)Uwiy?MJ~@0*u*kqxx&{~~f4hD7*BNJr2v&sEKpAD{
z`Q=^YnsQ{gQ>5IjpO&%lR{N_p@3O7H9rnv-wjEu}mIW!_v`zI%(tLJU25`&cnIJH4
z`hBbo9k^k3MMq`Kk_KnV-W%w2Y>qoiACouzVs<=}(d=?pnAFvlO-u_xxH8Tg(7)*T
z(1+|rwRF_}9?BMLPlX6J=g<5c26+{{X%PSNwrn|%Z&K@+7+Y%WI2}zuL+1PY`vi#x
z2dzONL-&Fw4#@Y=8k-{~&2KXVe0$MK&{l}qd_HZsGV>8BKn2dpe^e%PG*D9QmNHnA
zAg3FF4&;=RG$=R>4-x0NBqT^Ou&Ja2fF)T7<Rh<7tud#yzk$$EVQG|kS<D?-?a`b^
zO35>ZL+npXxDz^s0Ae_2hee@|?5xRxde`d9;l<S7g>%J;zXR=QiCbNctk-I&qk}m1
z^!dd3I(UwD?5a%umo_GF3a<S_@1fUj;Go2(uQj#CyTa9`NC&;S`;aMj6zG`iPM|<?
zHbA5hqXee%H+W^fCL`NJ*m5wz#1vJs_|A_G^BNjQ2VXl5CSmdsT_Sda%sZV9arsuq
z3w6`pD*R4tpSsW1pgy+`aF@e>$r@Tq1cqX*Tah(;WZ2w_Y|hLJyAvXGz@hyPH%JXP
zw_w6buWXxJNS{2$UfeIZ*4&FBD1NXVHT0Q<E39`<+k20z?2ogR{n-&a)e4Ugu><a{
zw1OYnK>%i%iK}*WygEpR7JsrgU7tuE%U$O<dwn?6ENrfN+=rI#P|5K^4EO{p`tk38
z!ed9v#AN$iq|gKgTM?g7&n+d4s0bDJ8udnfWE}FK<D}kJO6`oSICiu2l|H#)9}II#
z7%pbo|7VKWB?F2K7Z<M!R~Ywkpr)o(m=m*@Sr{N=TcR%05HdIjA`~s>U4W>qY>W`}
zV5{g04j=>j8<1j!aszD!ZUqOA%=VHe8?EJ6xy)qd(Rq@@4%}MyEON8`%Et_Ujb>+B
z3d&BAh_Iwzup8q}WRnGZ)};fVc!vm+HfF@uvh6b?7`g+byO)2uX#RU*E6oOPJtrQn
zbsFB8&{}A-8E?^8zNSXp(EkF;_3O$WQ8d&;DO$!?RHO7+J@yLXCD+~k_vSQ~rL%MD
zJ>%>gjDK&1Hq8@VL|$%{MxB$OuWxugYM&QMQborI=eKsl=c{eN9e1QauUez*!RO`)
zAv$<`QT*=ba(}8m`3VYr<^r;Klgi|;xg=X>tE>CdZ9aGiUVNpPSgd>J(sNK>h5x?*
zu-p{<Fm8~nQr&9KSlg09N3tl`P>G(XMDSZ*Vm+Uu>*`1Pn+i6Jy#X=v@77ICu59Iw
zgHxh|SG8hfs}o?C8$e+yuiSw{-c4FvU0si-cMruI7goycej&cEC^?g4q&;7|fW)^~
zDaHZT!i*Jfp3(NT?E-C$b5edxcn*}8_L8<M7Ij1JtXC9>A|71o`)|_+A-e5>>Pogp
z1d_4jST8uMK0bF7aO>>nSBmjq$NM)Y)VeYWA0M|!SN-TE%|ZH7?e!eP??u{plQpbM
zmSM4Tiyfz%r&7`b9(#++JFkp3<(~KK!zMG6&Wh>l?zGD}83OqzmpC|z@%zx^bTr<|
zBdEiRz3b5LpIoT_D(Z&xZ)MVnJ8QJR6D`n?A&%I<`n|D?o9Y!w6t6-eazDu8c<3-s
z!gL;W+}|d==py?oUEBmw=Z?>A$5zFwDt=u|U_?w49OIBz=bHKnHGj@xOTHTYdet|Y
zj_>q}*!tJaGwu8(NSxKOyZcBh&ES07@pN8fbYFHM802y6p2<b$nBznA2^1QDtjps6
zUdqWJo$3O^a)_0haR38kav$)z$WPI|1bJI`-#@uM$l2j(ou3d{U(ShPAN|zRwxXi2
zjIS;#rr9P|Q;;+BE%5u!_aPlSnL8-r*J1$Yg`8YWxJ`Vd%c%z1F-1jzFuT?48K+{g
zn+50!mM}wOqWHH>L+0*-6BUc|Qsx$~*$hre)1xamb=YV&P1U8B+{^x-?(z`7-{XW`
zT;%v-FJ~%7D{L900nDVTADD5+MSP+A3`6Mmof9bP-)oI*ce9h{$@faXq@=FOZVNbd
z+_3U9zGI?S-c+fRn*4;v1%HJtzBxYV&VdXMH<_!qkYA4x;DXlpkgpk`rMjwYWTAHd
z7>_yJ(S-*`fj&U=3xFeFiNYq00V^X+&4c8skXcR$z85gP!h5_gD=YhG`8%G%)1OjY
zmhaYjOG3(aGw?G`7;3gp>n>hQX7N0oA!Zn{T}v3O^@>A3VEscw{ncMS(slj0vdqrR
z;f`SUa4G&p60Xx2UOG+kGQqv^Pw8ZqxoQOSKiT^*0kb-ZXF2Sy^xcb>X%i166Z(sO
z8@-I*lWd58tY%1wMKqA<bEEfOm!(%AC$*({;^7L)WG`xQkr4ZyMqw4NBB!Agt{ETK
z#yTbSZc{2Y>$s~EKA(%rXEUl!Dir;}O4Fw*Ahw7LQ*@NcMu!~z_<(Y^X%c`;*CxRU
z4wT%P>D|9*-IrDA9_ur0{QL%KepF(5@j~5mS{$}a&4H)R_i+YGHb|lW6)(`j+pF$h
zSe6fvTk$|UN$D%Uw5!Bl-95<<v=Z1U98Ju#=YrviHgPf{Z7d+T4y-j3s(zi5Tkd{S
zS`;V(?&?h`oY4gNZ7Umn;U9Q*4ON?tDK$DgWACzA2ZZ+SFjEYOlLv+-saeO31qc=?
z^7ze3t`oT;D?$}bOqL2B)7mNry*f1}Q${4<*(^|0qG==6O;7$rxR^HHjOe}P+#=0%
z)AoEX{*@j-k!*~}+0=fQi#1!H0f<vI8qaV9eG&ado?N&0L^Smpf_t@E19k6t19IYk
z9Z5WYkY8NuP(CH~rh3*^BlZ0xXWrwM7xceTu`F;cIR;I`;>Q`bf|oMjyF}S+E7CqD
z=tjj4A6B?%67Nc~DAJ5$1vUG;QH5i|)H^SVyV*B`Ly95r2e(dq)obDqcV%@x&TVt}
z+WG^B^tPIj4d?S(@ZLcD;KuKrk61ZEHOdyBtThMt!fzC!wG$@#cqFpYiDIEV=LJ)m
z<&PPpk7pf4+7|FEsTLE_QJy>RVQ;?rs&0%f^?U3Y8rk9W{rjruv~cnnarKdLfi5EE
zg5aPgR{*s)r`OEFJ-H-PUWCVLbdYxrFWXEYVhF;<ew_Zg!BRq;g)VdXpA*X*0-?)q
z^r`F>YsbI477nOf1+!%bh{x?_2h||!&EM@c%+OAlAazMF-S*-~4pixD(Me%aQu(Nb
zzh}`&qtfr~FF7sR)k8ranjG}q_|i4ZG1)q7<XBB|{xI}S+a<AE;WW~`_#(Gts<ob%
z%J;m4!iEKEyV-5s*B({N-+i(_!&R!Dktd>O{@aC#jgWEdojwZX2EClcpnHCr|KC{U
zSs$uVvej%wp^)l!(*xHuEsE=0ju;Oc<8=|sI|FhF3XsAL<ZmwV%uOTG@UQM~(>Dqt
z{dm!s4ndP1!qXQyj)MiKaHfMn6SgJsxMve(paQe}ar<AdMH_hk2u;Z<YiKS{KX9kO
z_rUh%Ml21#AHaC2h(ftuW@hu+zbz?5LMkM(J2Um5^$8+(3(2g@p|S-Lh@5FQzsbwq
z+E%}6PJcJ-=7=hqi4#zs?z;5Y6B6O~cnY$(wA3d+&iCf7zz4DBob4rL_56;mJwvWl
zy>n??^uU&8#TpLLMihoL!pOR@A$9u(a=B1KD;m;z1z)GZTWUiELO~DTR;#gt^-QLz
zN!P*y>J^5Y)lDlk@In1}A=ogh8Dps2Y}VJjN(ZDDyARQSbdsgMwF_hzjYjqJ;AAP;
z#L%%#l*^tXe%{g|zAT{`=>!vPrd3{tl<%jNI9wFuS4b@l<Zk2~J$o%}Kb*DdXAdsw
zKiDy~=YFcE65m$wO!+{d@xPT%T9glnOfKOY{U#A}57)xtZhnJjp4<`;qx5blRkxSV
ze#Z@dET1-6AIy%ZZlq7P-|9Ip%bf6QD)Vr$XREdzUE0X_>2FJz{NMsn9TpSUBc)Qy
z$=YM*;Iy~QlH5-4gy~{y{_Iw%A~ZX8-y9LDuDuO06rWh#Pau6N>zy4xRD%PK@qm)b
zC%@*bqV)glB-rFdpx;+%F<8A~0YS-WA4)?|YS_Jx2UnoeykEMZ&RKoLU|&4CC8G?8
z^BWgaw+knleJ#Sb%?{eNu;j1i1hm)hndylD!h-Iq_A4!`AKRh-?X(oPE(~!*s>>ZW
z5Zp`3B-E=ZWRLuo-UrdhWFxG+B0_xU9VEb#UVm!~jJ+>|6-WODF&BK1ao+YMpssIR
zmx%jn3%(F$8BJfEi&`GiBh)C}hyHoZt$(JnG&4A=dCQ`Y`y0ipfZ=|QO{YgGEcA56
z>xrqaf;kE_qCVOflw(|`bnDvt6}<HU4jfzu4H*z>0Cv78HMx4W@uZzr`1I~EVfU0_
zoExySW9pz|`|@_U5lf!tm>!7u{h>d^c5o3MFE%}9B((vXfUxMx=h8^9NEoT~`TX?%
zbyDHb;=d3IYHz+(F{BYqs$^{()K&i`m4Qb)6c7K~!ji7)1M!c`Wu$Dmeco2dC8YD+
z7**M6{rgmzsNEpWy=yy#FmQq88?~oW+OR$i25fwTJ~uz`+3KXZOv853WPin<!VZ^@
z8w@nBQMvP0<;L`Gs5PA`00_N&_0~R0ff+@}b55;^N)nNEdqm*rSDjhHmg~XwsgNCS
z>tWQ!oDE>jN4dulF9Hl3`)oNWbsUVXLT8dnrh<6l=1WAM&1$JgiojbV(%O8UiKeyL
zfstKX&xpGtV8^u_HmJ8hMkn}bu|hQ!UR6;>wMMNgzxUYlqO%gBk`Ac3-risvm_Ujl
zZ?K6rM$&X(=-I0W&aFmt0ZZ`#t2@m@#3D!qaar$#Tx0?Um?TqT`S*+jr6M<Xjn-Q+
zjHl1mVx2xB@Vor`0|tg3ad;~+;c!jo(*dWE6$PnN{C@EwZf>%DeSQ-j#S$}l+Hwz&
ztX>ldldkodeFH3$ggNh3gZkZAE?=A)@=%AcqwFa#H><SjJ4!Jc*QTmKPxpj9^wI1W
z4OS1?$Jub~-Leom$7%-KD>BKZR#G#Dc#~qBRGRYw4;U`g^!91K>nt+zIaX<wSXJzp
z$exqwH!3Zxt}!3GzE6`cLd5zio^%U==QhU)YYf{Od`6nvK{K87>we_W@}L?_?TpyO
zBF!dFzaahp#iu!*X_*qP7bl-2lhCg6E;rja!bK-<PeA!nb5joH>$`5*o~<|4t(Bx>
z?+hsE$}Nh{z6%e!U{LK)bx>VOWhKqubFzU;n_7=JgjJG3WI)-$WBTd$n31JB!)Sgw
z#_cMwzf!f+Fn%Oe=ZBOd4NT$Nd=AXA*(Wb6B$kBt!a`&%cgI&g+db|-ujWu)S8LsH
zjAF0PzpkLe1WYBapC{NhB|U8STJlyE7wwvF*LfR`^YiaN0|BPHJJ;PB3QxKZ<n)B3
zW>JbCjVbfDlmI4f+)n{ZAF-RP=H=T~A_YEGwFf*@awVAILD9VFCO*P?utkW9^H2{8
z>g+WZe}YX&zsX0yIq#Q8rj3(g?zB}(ABgp;6vh0k4Bz%Sl+)<jWgPy$7RH$%K|m~4
zPKf&Xuac!mxx-N;K23{!QfbE8YR>3esE3a9gb71*f=iHtgy^4?giRLuN0{<AN7VVm
zE$&)x31mz7<mtiIokgrA({?;>XicTdEW9wPpjf7$3BgwkW2)Hw9BKGgR0h8A=UR+e
z$HT;q|0kNMjRN_+RXcjUtze_A!9CIcY_Gff1%o1MUoMQ@urbkblRC4CHO>E*Cs-a0
zW0>2U>9r7x<RO+)k8Al-uFxj)-x55LZDm$!<tcHu5}!#+O%b+D4BOGb!1rQTjjdHU
z=vh<#HPv1R)kJopxxNrR-SzdVEy@K8^s_3};Q#{UKe>GlsNJESk1QeAw;5E^K78~F
z>G+D#NAP8E>zPg}Vdd|~0P<`u8!KdW=7Y^s)mOfur&E#Rcj`?u#SqkH1ri<OxkK^a
zKMn&Bl!5hQb^F=7pS!veIU_uo8V1>$Hn<k5NxcQGB@W-D{^(fVz=3t={#+S-R=3WY
zjo!C!o9J%Z5*lW<ORWtCcj4&$B(j;@2j?&GO7d^-TDm_v7^s${lTg(Th??CbwZEXh
zmvj6|lZ=VTY#EpW`uSIn+d?cuxO~#2VVy%V#w#A}-@0{=kr_(d``ws2<H{!9D`5p)
z40Z&U4hRxsyQ?UQtNv~A^Eq<{P`MAuj__tg?NZ#w+IBFM0Pfkyl554~f~Q2Hd5NcG
z_}LCTPFi*Ga^|Jp=-KLcD%Y+Z7OT?i%UK8AiY0mO2#}oy=(1GcJodvcrP}`dd9tc&
za&Nw#$#R`Ec4SBB>{ILrq@rgzjU-3}anEmHSF1dT{CRqnet8kCC*XFoX(Gl>*l;52
zaL(+NNtck_(t^y4IDiOpWGkw{<3ECy4PdZUv)GBZmnhFSia{oT%KiT~vGj$Zy<u6l
zb}y+uy%0X|76_{ma~ykzv(z1X?Gw`bc*oVv%>s6cmH>N`0Nb>Sj3!M6$g<S{P`W`j
zIn5eD-s%A72Y!s*VIE=vO@L8TgIr`YsYb2jR+X4<XAU5_)B6u7^!eQ$i4iUnmQe2_
zy&Xoj`S+9?2Sl^agFbU9NQ!a=;^`kMr#0V&>k1#)nk#5;<2<?TPt(cMv7Sda%~aDp
z$!mj<Ewekno9{Gin$d+6q)1(^Y4l5zOwf&s`{wEC6EmdC)!=o}pQ867<!((B2PD57
zUSx|EQ(_E^;>@LD;Y3%m^K8RO5vStfv6-2y8?o2*XHMF^0Q{05hSDFF*ZLSnq_zrc
z`J7r^Omm8U$lB@Gfo&;~qw{7cea|q%t<A-+Hti;-%OM4#FX$E|+2zCAr^BU2*ui4I
zBa!4+=o{-GKy-a-@wmkTe6(87Hb1vH40P>eO}hTi5akV3LKa@YghSz?OREO5AD6#o
zc}pRl_e?}(D9IhZC+J=k;<`4n&I`x5BOUuw;e@dH=Gz}c?!tr5n_SdtU5l@EfJ3N|
z=%XZrZkWFH#c~q7N=w*J@!L!L9j;%6e9a*2I1OZM*_DbgfVu;S0sms9z&O34Z1LiD
zZkiw`y|5qb8=6F>sjgKP7>t>Ac#WFEB+8T3m?%rPsZ7HDrK6VgN*O89=h^bF;JF4u
zZFL}+Tx5}fM}lkyeU)fK<G)(v<>#aIq%`fEAb)>6?bZ@3=yTGd{%bTSvcf|wr}rrg
zE>M+`>xCJ2hl;;ESdI;_)9wGP<&92|iVC6#S&VUU!!HGaSj`p^6?Cjkf0kqm@9K$d
zU!{7*uR8fcv(aowj2{K*Ehm>Fba3Sz>K~+u>CsHS!1%TL$n2Ee(EiA+3-u|>yPszz
zx?w;R4%YFBFh_<cSJR`6>AciBr)o0ih{0FszthD3C_jVO4_rJQ_;XU@-o^wNqUhG&
z(f!WVsg*v3<1Xam1x4Z!A{2h8CxHaRnVXCrPy;qjiG42x!z#tnx?FjPY+fc1g@m~I
z`FC?^D7KP}%`AVJuuwiQ_xu1d8s_V}3hLa>MoA}qZju;!)A`xQ&(Dqc`g9VoeaZMw
z)7FZQlIZdj2QPUUS6|XCh&}7_b>FN6=>{$NQgt9g2j>JWe2-s2Tf#zQAH`Bs$r^>D
z8uKubJ>y3;&ab2AD<co{G*)Sk(6OZMLI9#MN1vz_kfdO{8$l~d+OE)u`hbR}o@vvU
zgA74K_@hvNQTNB=p&|GPMZl}YMPN021!_u~%oPTWeVe<MlNa`5OkZF5pk=E)D^7rU
z2m<(aR_7zOaf9QzGKtmTqaU5V<Zh$2IcqV^lodX{zVIf9zH4kfMg7-YY|OG}=CdYc
zdso&zB!~0&$t5}LQlY(J!sAfu$gi8w=Nd3Zn|`6R93MTq)m%tw#DMD$BfQ=Gt<WsQ
zHhn3D;=pA;M(agbh4zRYPHs|fmy#uHyz%>722YXh%N>-Fa-LDNp7lf>9Ua%eGI%`;
z0_Ya6b=DVt35p*K0uB_!4M$YOf2wT=IyzfN`t}nBCdU<X+3)o?E;zX^@^F~p{b~s5
z%me^1;eU4lvX&`$AMx>Ax@Miy0<b6k!6s@Ob3Qo0`~~&UD6_c$ZmiG-!vi8X6k(1q
zw>rvTzEc*>GL?ASFT;1aXSvHv8}?p6EcE4qw@1%%pK0T1Cxmfo$;X+h?yGnaV}0`3
z-n<=HuDdF7w7GrNUFNE?q}pPH@QFrS%U2fz1A|2ek*c=S8q?C_O9DV=UvRQ~;vA2V
z9yIg?X3uM;2?iEGLuxQ{&Le$?pI6F$eix}|)r-Y(x*x0a`K<v;-R7^ayUPA>3M=6o
z6pq9Y(doT;a`IVpiHp3BOES_qzkB%62fX8y#El;rZ#|l2J%uk1pOhY4rR|aoS6Kh$
z2P$I-*`U9ga@?t@ar)Da9t45PzRYS4hGi!<pJ_XZv%_Tv&=l3PZ*qsO-+=tqiqQ(S
z$=ZqWs*{sJHd{yvy@P_uWeo@fViFV>=$jZ?(I4-S*A!o6ljTzBi`OVZ`DUN?mM{9X
zbrwcc7>@jn^;90&U0jej@9YHyoi>rr0FG{MZVr~NW3%5~Qq<lr2{w|_{_n;GIsX6W
cD@W>|{OZ`KOVH3MD}Z@4RdrPAlq@6u553jqP5=M^