From 9283e717d914723accaa85d1692385279850be94 Mon Sep 17 00:00:00 2001 From: Semper-Viventem Date: Wed, 21 Feb 2024 19:03:45 +0200 Subject: [PATCH 1/5] Support network silent mode --- app/build.gradle.kts | 1 + .../software/data/repo/SettingsRepository.kt | 18 +++ .../main/java/f/cking/software/ui/UiModule.kt | 2 + .../ui/devicedetails/DeviceDetailsScreen.kt | 27 +++- .../f/cking/software/ui/map/ComposableMap.kt | 134 ++++++++++++++++++ .../f/cking/software/ui/map/MapViewModel.kt | 34 +++++ .../ui/selectlocation/SelectLocationScreen.kt | 53 +++---- .../software/ui/settings/SettingsScreen.kt | 53 ++----- .../software/ui/settings/SettingsViewModel.kt | 13 ++ .../utils/graphic/ComposeFunctions.kt | 112 +++++---------- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values/strings.xml | 3 + 12 files changed, 306 insertions(+), 146 deletions(-) create mode 100644 app/src/main/java/f/cking/software/ui/map/ComposableMap.kt create mode 100644 app/src/main/java/f/cking/software/ui/map/MapViewModel.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c619983..8e53692 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -32,6 +32,7 @@ android { buildConfigField("String", "REPORT_ISSUE_URL", "\"https://github.com/Semper-Viventem/MetaRadar/issues\"") buildConfigField("String", "GITHUB_URL", "\"https://github.com/Semper-Viventem/MetaRadar\"") buildConfigField("String", "STORE_PAGE_URL", "\"Not specified\"") + buildConfigField("String", "MAP_LICENSE_URL", "\"https://www.openstreetmap.org/copyright\"") buildConfigField("String", "DISTRIBUTION", "\"Not specified\"") } diff --git a/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt b/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt index aa363ec..1ff13f8 100644 --- a/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt +++ b/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt @@ -2,11 +2,15 @@ package f.cking.software.data.repo import android.content.SharedPreferences import f.cking.software.TheAppConfig +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow class SettingsRepository( private val sharedPreferences: SharedPreferences, ) { + private val silentModeState = MutableStateFlow(getSilentMode()) + fun setGarbagingTime(time: Long) { sharedPreferences.edit().putLong(KEY_GARBAGING_TIME, time).apply() } @@ -63,6 +67,19 @@ class SettingsRepository( sharedPreferences.edit().putLong(KEY_ENJOY_THE_APP_STARTING_POINT, value).apply() } + fun setSilentMode(enabled: Boolean) { + sharedPreferences.edit().putBoolean(KEY_SILENT_NETWORK_MODE, enabled).apply() + silentModeState.tryEmit(getSilentMode()) + } + + fun getSilentMode(): Boolean { + return sharedPreferences.getBoolean(KEY_SILENT_NETWORK_MODE, false) + } + + fun observeSilentMode(): Flow { + return silentModeState + } + companion object { private const val KEY_GARBAGING_TIME = "key_garbaging_time" private const val KEY_USE_GPS_ONLY = "key_use_gps_location_only" @@ -71,6 +88,7 @@ class SettingsRepository( private const val KEY_FIRST_APP_LAUNCH_TIME = "key_first_app_launch_time" private const val KEY_ENJOY_THE_APP_ANSWERED = "key_enjoy_the_app_answered_v1" private const val KEY_ENJOY_THE_APP_STARTING_POINT = "key_enjoy_the_app_starting_point" + private const val KEY_SILENT_NETWORK_MODE = "silent_network_mode" const val NO_APP_LAUNCH_TIME = -1L const val NO_ENJOY_THE_APP_STARTING_POINT = -1L diff --git a/app/src/main/java/f/cking/software/ui/UiModule.kt b/app/src/main/java/f/cking/software/ui/UiModule.kt index b990daa..099e5ae 100644 --- a/app/src/main/java/f/cking/software/ui/UiModule.kt +++ b/app/src/main/java/f/cking/software/ui/UiModule.kt @@ -4,6 +4,7 @@ import f.cking.software.ui.devicedetails.DeviceDetailsViewModel import f.cking.software.ui.devicelist.DeviceListViewModel import f.cking.software.ui.journal.JournalViewModel import f.cking.software.ui.main.MainViewModel +import f.cking.software.ui.map.MapViewModel import f.cking.software.ui.profiledetails.ProfileDetailsViewModel import f.cking.software.ui.profileslist.ProfilesListViewModel import f.cking.software.ui.selectdevice.SelectDeviceViewModel @@ -27,5 +28,6 @@ object UiModule { viewModel { SelectDeviceViewModel(get(), get()) } viewModel { DeviceDetailsViewModel(address = it[0], get(), get(), get(), get(), get(), get(), get(), get()) } viewModel { JournalViewModel(get(), get(), get(), get(), get()) } + viewModel { MapViewModel(get(), get()) } } } \ No newline at end of file diff --git a/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt b/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt index 5e95a33..b3e04c2 100644 --- a/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt +++ b/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt @@ -34,6 +34,7 @@ import androidx.compose.material3.SuggestionChip import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment @@ -58,8 +59,8 @@ import f.cking.software.domain.model.LocationModel import f.cking.software.dpToPx import f.cking.software.frameRate import f.cking.software.ui.AsyncBatchProcessor +import f.cking.software.ui.map.MapView import f.cking.software.ui.tagdialog.TagDialog -import f.cking.software.utils.graphic.MapView import f.cking.software.utils.graphic.RoundedBox import f.cking.software.utils.graphic.SystemNavbarSpacer import f.cking.software.utils.graphic.TagChip @@ -389,15 +390,23 @@ object DeviceDetailsScreen { @Composable private fun LocationHistory(modifier: Modifier = Modifier, deviceData: DeviceData, viewModel: DeviceDetailsViewModel) { RoundedBox(modifier = modifier, internalPaddings = 0.dp) { - Box(modifier = Modifier - .fillMaxWidth() - .weight(1f)) { + Box( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + ) { + val mapIsReady = remember { mutableStateOf(false) } Map( Modifier.fillMaxSize(), viewModel = viewModel, - isLoading = { viewModel.markersInLoadingState = it } + isLoading = { viewModel.markersInLoadingState = it }, + mapIsReadyToUse = { + mapIsReady.value = true + } ) - MapOverlay(viewModel = viewModel) + if (mapIsReady.value) { + MapOverlay(viewModel = viewModel) + } } HistoryPeriod(deviceData = deviceData, viewModel = viewModel) } @@ -445,6 +454,7 @@ object DeviceDetailsScreen { modifier: Modifier, viewModel: DeviceDetailsViewModel, isLoading: (isLoading: Boolean) -> Unit, + mapIsReadyToUse: () -> Unit, ) { val scope = rememberCoroutineScope() @@ -484,7 +494,10 @@ object DeviceDetailsScreen { MapView( modifier = modifier, - onLoad = { map -> initMapState(map) }, + onLoad = { map -> + initMapState(map) + mapIsReadyToUse.invoke() + }, onUpdate = { map -> refreshMap(map, viewModel, batchProcessor) } ) } diff --git a/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt b/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt new file mode 100644 index 0000000..f2370a9 --- /dev/null +++ b/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt @@ -0,0 +1,134 @@ +package f.cking.software.ui.map + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import f.cking.software.R +import f.cking.software.utils.graphic.Switcher +import org.koin.androidx.compose.koinViewModel +import org.osmdroid.views.MapView + + +/** + * A composable Google Map. + * @author Arnau Mora + * @since 20211230 + * @param modifier Modifiers to apply to the map. + * @param onLoad This will get called once the map has been loaded. + */ +@Composable +fun MapView( + modifier: Modifier = Modifier, + onLoad: ((map: MapView) -> Unit)? = null, + onUpdate: ((map: MapView) -> Unit)? = null, +) { + val viewModel: MapViewModel = koinViewModel() + + if (viewModel.silentModeEnabled) { + SilentModeDisclaimer(modifier = modifier, viewModel = viewModel) + } else { + OSMMap(modifier = modifier, viewModel = viewModel, onLoad = onLoad, onUpdate = onUpdate) + } +} + +@Composable +fun SilentModeDisclaimer(modifier: Modifier, viewModel: MapViewModel) { + Box(modifier.padding(16.dp), contentAlignment = Alignment.Center) { + Column { + Text(text = stringResource(id = R.string.silent_mode_is_enabled_disclaimer)) + Spacer(modifier = Modifier.height(8.dp)) + Switcher( + value = viewModel.silentModeEnabled, + title = stringResource(id = R.string.silent_mode_title), + subtitle = stringResource(id = R.string.silent_mode_subtitle), + onClick = { + viewModel.changeSilentModeState() + } + ) + } + } +} + +@Composable +fun OSMMap( + modifier: Modifier = Modifier, + viewModel: MapViewModel, + onLoad: ((map: MapView) -> Unit)? = null, + onUpdate: ((map: MapView) -> Unit)? = null, +) { + val mapViewState = rememberMapViewWithLifecycle() + Box(modifier = modifier) { + AndroidView( + factory = { mapViewState.apply { onLoad?.invoke(this) } }, + update = { mapView -> onUpdate?.invoke(mapView) }, + ) + Text( + text = stringResource(R.string.osm_copyright), + modifier = Modifier + .padding(start = 4.dp) + .align(Alignment.BottomStart) + .alpha(0.9f) + .clickable { viewModel.openOSMLicense() }, + color = Color.DarkGray, + fontWeight = FontWeight.Bold, + fontSize = 12.sp, + ) + } +} + +@Composable +fun rememberMapViewWithLifecycle(): MapView { + val context = LocalContext.current + val mapView = remember { + MapView(context).apply { + id = R.id.layout_map + clipToOutline = true + } + } + + // Makes MapView follow the lifecycle of this composable + val lifecycleObserver = rememberMapLifecycleObserver(mapView) + val lifecycle = LocalLifecycleOwner.current.lifecycle + DisposableEffect(lifecycle) { + lifecycle.addObserver(lifecycleObserver) + onDispose { + lifecycle.removeObserver(lifecycleObserver) + } + } + + return mapView +} + +@Composable +fun rememberMapLifecycleObserver(mapView: MapView): LifecycleEventObserver { + return remember(mapView) { + LifecycleEventObserver { _, event -> + when (event) { + Lifecycle.Event.ON_RESUME -> mapView.onResume() + Lifecycle.Event.ON_PAUSE -> mapView.onPause() + else -> {} + } + } + } +} + diff --git a/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt b/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt new file mode 100644 index 0000000..ae29041 --- /dev/null +++ b/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt @@ -0,0 +1,34 @@ +package f.cking.software.ui.map + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import f.cking.software.BuildConfig +import f.cking.software.data.helpers.IntentHelper +import f.cking.software.data.repo.SettingsRepository +import kotlinx.coroutines.launch + +class MapViewModel( + private val settingsRepository: SettingsRepository, + private val intentHelper: IntentHelper, +) : ViewModel() { + + var silentModeEnabled by mutableStateOf(settingsRepository.getSilentMode()) + + init { + viewModelScope.launch { + settingsRepository.observeSilentMode() + .collect { silentModeEnabled = it } + } + } + + fun openOSMLicense() { + intentHelper.openUrl(BuildConfig.MAP_LICENSE_URL) + } + + fun changeSilentModeState() { + settingsRepository.setSilentMode(!settingsRepository.getSilentMode()) + } +} \ No newline at end of file diff --git a/app/src/main/java/f/cking/software/ui/selectlocation/SelectLocationScreen.kt b/app/src/main/java/f/cking/software/ui/selectlocation/SelectLocationScreen.kt index b288ec6..f666c76 100644 --- a/app/src/main/java/f/cking/software/ui/selectlocation/SelectLocationScreen.kt +++ b/app/src/main/java/f/cking/software/ui/selectlocation/SelectLocationScreen.kt @@ -43,7 +43,7 @@ import f.cking.software.TheAppConfig import f.cking.software.data.helpers.LocationProvider import f.cking.software.domain.model.LocationModel import f.cking.software.ui.devicedetails.MapConfig -import f.cking.software.utils.graphic.MapView +import f.cking.software.ui.map.MapView import f.cking.software.utils.graphic.RoundedBox import f.cking.software.utils.graphic.SystemNavbarSpacer import kotlinx.coroutines.flow.filterNotNull @@ -121,33 +121,36 @@ object SelectLocationScreen { initialLocationModel = initialLocationModel, onMapReady = { map.value = it } ) - Box( - modifier = Modifier - .size(width = 20.dp, height = 10.dp) - .blur(2.dp), - contentAlignment = Alignment.Center, - ) { + + if (map.value != null) { Box( modifier = Modifier - .size(width = 10.dp, height = 5.dp) - .background(color = Color.DarkGray, shape = AbsoluteCutCornerShape(10.dp)) - ) - } - Column( - modifier = Modifier - .height(120.dp) - .width(60.dp) - ) { - val painter = painterResource(R.drawable.ic_location) - Image( + .size(width = 20.dp, height = 10.dp) + .blur(2.dp), + contentAlignment = Alignment.Center, + ) { + Box( + modifier = Modifier + .size(width = 10.dp, height = 5.dp) + .background(color = Color.DarkGray, shape = AbsoluteCutCornerShape(10.dp)) + ) + } + Column( modifier = Modifier - .fillMaxWidth() - .height(60.dp), - contentScale = ContentScale.FillWidth, - painter = painter, - contentDescription = null, - colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary) - ) + .height(120.dp) + .width(60.dp) + ) { + val painter = painterResource(R.drawable.ic_location) + Image( + modifier = Modifier + .fillMaxWidth() + .height(60.dp), + contentScale = ContentScale.FillWidth, + painter = painter, + contentDescription = null, + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary) + ) + } } } } diff --git a/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt b/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt index 14a6f4b..d86a913 100644 --- a/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt @@ -2,10 +2,8 @@ package f.cking.software.ui.settings import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -16,7 +14,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -37,6 +34,7 @@ import f.cking.software.dateTimeStringFormat import f.cking.software.utils.graphic.BottomNavigationSpacer import f.cking.software.utils.graphic.FABSpacer import f.cking.software.utils.graphic.RoundedBox +import f.cking.software.utils.graphic.Switcher import f.cking.software.utils.graphic.ThemedDialog import org.koin.androidx.compose.koinViewModel @@ -56,6 +54,8 @@ object SettingsScreen { Spacer(modifier = Modifier.height(8.dp)) ReportIssue(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) + SilentMode(viewModel = viewModel) + Spacer(modifier = Modifier.height(8.dp)) ClearDatabaseBlock(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) BackupDatabaseBlock(viewModel = viewModel) @@ -275,6 +275,18 @@ object SettingsScreen { } } + @Composable + private fun SilentMode(viewModel: SettingsViewModel) { + RoundedBox(internalPaddings = 0.dp) { + Switcher( + value = viewModel.silentModeEnabled, + title = stringResource(R.string.silent_mode_title), + subtitle = stringResource(id = R.string.silent_mode_subtitle), + onClick = { viewModel.changeSilentMode() } + ) + } + } + @Composable private fun ReportIssue(viewModel: SettingsViewModel) { RoundedBox { @@ -309,39 +321,4 @@ object SettingsScreen { } } } - - @Composable - private fun Switcher( - value: Boolean, - title: String, - subtitle: String?, - onClick: () -> Unit, - ) { - Box(modifier = Modifier - .fillMaxWidth() - .clickable { onClick.invoke() } - ) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Column( - modifier = Modifier.weight(1f), - ) { - Text(text = title) - subtitle?.let { - Spacer(modifier = Modifier.height(4.dp)) - Text(text = it, fontWeight = FontWeight.Light, fontSize = 12.sp) - } - } - Spacer(modifier = Modifier.width(4.dp)) - Switch( - checked = value, - onCheckedChange = { onClick.invoke() } - ) - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/f/cking/software/ui/settings/SettingsViewModel.kt b/app/src/main/java/f/cking/software/ui/settings/SettingsViewModel.kt index ff08b59..73c5ccf 100644 --- a/app/src/main/java/f/cking/software/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/f/cking/software/ui/settings/SettingsViewModel.kt @@ -49,9 +49,11 @@ class SettingsViewModel( var useGpsLocationOnly: Boolean by mutableStateOf(settingsRepository.getUseGpsLocationOnly()) var locationData: LocationProvider.LocationHandle? by mutableStateOf(null) var runOnStartup: Boolean by mutableStateOf(settingsRepository.getRunOnStartup()) + var silentModeEnabled: Boolean by mutableStateOf(settingsRepository.getSilentMode()) init { observeLocationData() + observeSilentMode() } fun onRemoveGarbageClick() { @@ -132,6 +134,10 @@ class SettingsViewModel( runOnStartup = newValue } + fun changeSilentMode() { + settingsRepository.setSilentMode(!settingsRepository.getSilentMode()) + } + fun opReportIssueClick() { intentHelper.openUrl(BuildConfig.REPORT_ISSUE_URL) } @@ -149,6 +155,13 @@ class SettingsViewModel( } } + private fun observeSilentMode() { + viewModelScope.launch { + settingsRepository.observeSilentMode() + .collect { silentModeEnabled = it } + } + } + private fun restoreFrom(uri: Uri) { viewModelScope.launch { backupDbInProgress = true diff --git a/app/src/main/java/f/cking/software/utils/graphic/ComposeFunctions.kt b/app/src/main/java/f/cking/software/utils/graphic/ComposeFunctions.kt index ff1ea8e..e8017f8 100644 --- a/app/src/main/java/f/cking/software/utils/graphic/ComposeFunctions.kt +++ b/app/src/main/java/f/cking/software/utils/graphic/ComposeFunctions.kt @@ -27,11 +27,11 @@ import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.ColorScheme import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -45,7 +45,6 @@ import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle @@ -54,10 +53,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.window.DialogProperties -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleEventObserver import com.google.accompanist.flowlayout.FlowRow import com.vanpra.composematerialdialogs.MaterialDialog import com.vanpra.composematerialdialogs.MaterialDialogButtons @@ -73,11 +69,9 @@ import com.vanpra.composematerialdialogs.rememberMaterialDialogState import f.cking.software.R import f.cking.software.domain.model.DeviceData import f.cking.software.dpToPx -import f.cking.software.openUrl import f.cking.software.pxToDp import f.cking.software.toHexString import f.cking.software.ui.GlobalUiState -import org.osmdroid.views.MapView import java.time.LocalDate import java.time.LocalTime import kotlin.math.abs @@ -342,74 +336,6 @@ fun DeviceListItem( } } -@Composable -fun rememberMapViewWithLifecycle(): MapView { - val context = LocalContext.current - val mapView = remember { - MapView(context).apply { - id = R.id.layout_map - clipToOutline = true - } - } - - // Makes MapView follow the lifecycle of this composable - val lifecycleObserver = rememberMapLifecycleObserver(mapView) - val lifecycle = LocalLifecycleOwner.current.lifecycle - DisposableEffect(lifecycle) { - lifecycle.addObserver(lifecycleObserver) - onDispose { - lifecycle.removeObserver(lifecycleObserver) - } - } - - return mapView -} - -@Composable -fun rememberMapLifecycleObserver(mapView: MapView): LifecycleEventObserver = - remember(mapView) { - LifecycleEventObserver { _, event -> - when (event) { - Lifecycle.Event.ON_RESUME -> mapView.onResume() - Lifecycle.Event.ON_PAUSE -> mapView.onPause() - else -> {} - } - } - } - -/** - * A composable Google Map. - * @author Arnau Mora - * @since 20211230 - * @param modifier Modifiers to apply to the map. - * @param onLoad This will get called once the map has been loaded. - */ -@Composable -fun MapView( - modifier: Modifier = Modifier, - onLoad: ((map: MapView) -> Unit)? = null, - onUpdate: ((map: MapView) -> Unit)? = null, -) { - val mapViewState = rememberMapViewWithLifecycle() - val context = LocalContext.current - Box(modifier = modifier) { - AndroidView( - { mapViewState.apply { onLoad?.invoke(this) } }, - ) { mapView -> onUpdate?.invoke(mapView) } - Text( - text = stringResource(R.string.osm_copyright), - modifier = Modifier - .padding(start = 4.dp) - .align(Alignment.BottomStart) - .alpha(0.9f) - .clickable { context.openUrl("https://www.openstreetmap.org/copyright") }, - color = Color.DarkGray, - fontWeight = FontWeight.Bold, - fontSize = 12.sp, - ) - } -} - @Composable fun Divider() { Box(modifier = Modifier.padding(horizontal = 16.dp)) { @@ -566,4 +492,40 @@ fun SystemNavbarSpacer() { fun ColorScheme.surfaceEvaluated(evaluation: Dp = 3.dp): Color { return this.surfaceColorAtElevation(evaluation) +} + +@Composable +fun Switcher( + modifier: Modifier = Modifier, + value: Boolean, + title: String, + subtitle: String?, + onClick: () -> Unit, +) { + Box(modifier = modifier + .fillMaxWidth() + .clickable { onClick.invoke() } + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier.weight(1f), + ) { + Text(text = title) + subtitle?.let { + Spacer(modifier = Modifier.height(4.dp)) + Text(text = it, fontWeight = FontWeight.Light, fontSize = 12.sp) + } + } + Spacer(modifier = Modifier.width(4.dp)) + Switch( + checked = value, + onCheckedChange = { onClick.invoke() } + ) + } + } } \ No newline at end of file diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 6eb631a..77ca31c 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -90,7 +90,7 @@ Szűrő kihagyása, ha a hely nem érhető el (egyéb esetben az alapérték hamis) Dátumból Időből - ℅s szemét eszköz törölve + %s szemét eszköz törölve Add meg a szükséges engedélyeket manuálisan Borítás figyelmen kívül hagyása Aktív diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b935cc2..b218846 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,6 +86,8 @@ %s is an open-source project. You can find the source on GitHub. Feel free to ask your questions, contribute, and star the repository! Go to GitHub A secret cat photo + Network silent mode + Turn off any network communications in the app. It might be helpful to save traffic. Search manufacturer @@ -216,6 +218,7 @@ Add tag Delete tag \"%s\"? © OpenStreetMap + Network silent mode is turned on. Map is disabled in purpose not to send any network packages. To see the map disable the silent mode first. %s dBm %s m Disclaimer From 6eff33b5e2c437bdab91a2ed93a80387bd83de58 Mon Sep 17 00:00:00 2001 From: Semper-Viventem Date: Wed, 21 Feb 2024 19:10:11 +0200 Subject: [PATCH 2/5] Rename offline mode --- app/src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b218846..568a0b2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,7 +86,7 @@ %s is an open-source project. You can find the source on GitHub. Feel free to ask your questions, contribute, and star the repository! Go to GitHub A secret cat photo - Network silent mode + Offline mode Turn off any network communications in the app. It might be helpful to save traffic. @@ -218,7 +218,7 @@ Add tag Delete tag \"%s\"? © OpenStreetMap - Network silent mode is turned on. Map is disabled in purpose not to send any network packages. To see the map disable the silent mode first. + The map is not available in the offline mode. To see the map disable the offline mode first. %s dBm %s m Disclaimer From d9fa16fb8c4c8d45c31e85adabb192b89817a118 Mon Sep 17 00:00:00 2001 From: Semper-Viventem Date: Wed, 21 Feb 2024 19:25:20 +0200 Subject: [PATCH 3/5] Reorganize settings screen --- .../software/ui/settings/SettingsScreen.kt | 71 +++++++------------ app/src/main/res/values/strings.xml | 2 + 2 files changed, 29 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt b/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt index d86a913..22e1f94 100644 --- a/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/f/cking/software/ui/settings/SettingsScreen.kt @@ -50,17 +50,11 @@ object SettingsScreen { .verticalScroll(rememberScrollState()) ) { Spacer(modifier = Modifier.height(16.dp)) - ProjectGithub(viewModel = viewModel) + ProjectInformationBlock(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) - ReportIssue(viewModel = viewModel) + AppSettings(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) - SilentMode(viewModel = viewModel) - Spacer(modifier = Modifier.height(8.dp)) - ClearDatabaseBlock(viewModel = viewModel) - Spacer(modifier = Modifier.height(8.dp)) - BackupDatabaseBlock(viewModel = viewModel) - Spacer(modifier = Modifier.height(8.dp)) - RunOnStartup(viewModel = viewModel) + DatabaseBlock(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) LocationBlock(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) @@ -89,15 +83,6 @@ object SettingsScreen { } } - @Composable - private fun ClearDatabaseBlock(viewModel: SettingsViewModel) { - RoundedBox { - ClearGarbageButton(viewModel) - Spacer(modifier = Modifier.height(8.dp)) - ClearLocationsButton(viewModel) - } - } - @Composable private fun LocationBlock(viewModel: SettingsViewModel) { RoundedBox(internalPaddings = 0.dp) { @@ -109,11 +94,18 @@ object SettingsScreen { } @Composable - private fun BackupDatabaseBlock(viewModel: SettingsViewModel) { + private fun DatabaseBlock(viewModel: SettingsViewModel) { RoundedBox { + Text(text = stringResource(id = R.string.database_block_title), fontWeight = FontWeight.SemiBold) + Spacer(modifier = Modifier.height(4.dp)) + BackupDB(viewModel = viewModel) Spacer(modifier = Modifier.height(8.dp)) RestoreDB(viewModel = viewModel) + Spacer(modifier = Modifier.height(8.dp)) + ClearGarbageButton(viewModel) + Spacer(modifier = Modifier.height(8.dp)) + ClearLocationsButton(viewModel) } } @@ -264,32 +256,34 @@ object SettingsScreen { } @Composable - private fun RunOnStartup(viewModel: SettingsViewModel) { - RoundedBox(internalPaddings = 0.dp) { - Switcher( - value = viewModel.runOnStartup, - title = stringResource(R.string.launch_on_system_startup_title), - subtitle = null, - onClick = { viewModel.setRunOnStartup() } - ) - } - } - - @Composable - private fun SilentMode(viewModel: SettingsViewModel) { + private fun AppSettings(viewModel: SettingsViewModel) { RoundedBox(internalPaddings = 0.dp) { + Text(modifier = Modifier.padding(16.dp), text = stringResource(id = R.string.app_settings_title), fontWeight = FontWeight.SemiBold) + Spacer(modifier = Modifier.height(4.dp)) Switcher( value = viewModel.silentModeEnabled, title = stringResource(R.string.silent_mode_title), subtitle = stringResource(id = R.string.silent_mode_subtitle), onClick = { viewModel.changeSilentMode() } ) + Switcher( + value = viewModel.runOnStartup, + title = stringResource(R.string.launch_on_system_startup_title), + subtitle = null, + onClick = { viewModel.setRunOnStartup() } + ) } } @Composable - private fun ReportIssue(viewModel: SettingsViewModel) { + private fun ProjectInformationBlock(viewModel: SettingsViewModel) { RoundedBox { + Text(text = stringResource(R.string.project_github_title, stringResource(id = R.string.app_name)), fontWeight = FontWeight.SemiBold) + Spacer(modifier = Modifier.height(4.dp)) + Button(modifier = Modifier.fillMaxWidth(), onClick = { viewModel.onGithubClick() }) { + Text(text = stringResource(R.string.open_github), color = MaterialTheme.colorScheme.onPrimary) + } + Spacer(modifier = Modifier.height(8.dp)) Text(text = stringResource(R.string.report_issue_title), fontWeight = FontWeight.SemiBold) Spacer(modifier = Modifier.height(4.dp)) Button(modifier = Modifier.fillMaxWidth(), onClick = { viewModel.opReportIssueClick() }) { @@ -310,15 +304,4 @@ object SettingsScreen { Text(text = stringResource(R.string.app_info_distribution, BuildConfig.DISTRIBUTION)) } } - - @Composable - private fun ProjectGithub(viewModel: SettingsViewModel) { - RoundedBox { - Text(text = stringResource(R.string.project_github_title, stringResource(id = R.string.app_name)), fontWeight = FontWeight.SemiBold) - Spacer(modifier = Modifier.height(4.dp)) - Button(modifier = Modifier.fillMaxWidth(), onClick = { viewModel.onGithubClick() }) { - Text(text = stringResource(R.string.open_github), color = MaterialTheme.colorScheme.onPrimary) - } - } - } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 568a0b2..126f032 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -88,6 +88,8 @@ A secret cat photo Offline mode Turn off any network communications in the app. It might be helpful to save traffic. + Database actions + App settings Search manufacturer From d8bc9773b1155f19fa6e694257aa2bc850d133bb Mon Sep 17 00:00:00 2001 From: Semper-Viventem Date: Wed, 21 Feb 2024 19:26:10 +0200 Subject: [PATCH 4/5] Update the app version --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8e53692..82fee7e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,8 +24,8 @@ android { minSdk = 29 targetSdk = 34 - versionCode = 1708449099 - versionName = "0.22.9-beta" + versionCode = 1708536347 + versionName = "0.23.0-beta" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" From 33f781b12f31faf5d2c766b45a25767f3ce7dd32 Mon Sep 17 00:00:00 2001 From: Semper-Viventem Date: Wed, 21 Feb 2024 19:59:17 +0200 Subject: [PATCH 5/5] * Improve offline mode map UI * Make fdroid offline mode true by default --- app/build.gradle.kts | 2 ++ .../software/data/repo/SettingsRepository.kt | 3 ++- .../main/java/f/cking/software/ui/UiModule.kt | 2 +- .../ui/devicedetails/DeviceDetailsScreen.kt | 6 ++++-- .../f/cking/software/ui/map/ComposableMap.kt | 18 ++++++++++++++---- .../f/cking/software/ui/map/MapViewModel.kt | 5 +++++ .../main/res/drawable/map_placeholder.webp | Bin 0 -> 102000 bytes app/src/main/res/values/strings.xml | 1 + 8 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable/map_placeholder.webp diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 82fee7e..51be9ed 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -33,6 +33,7 @@ android { buildConfigField("String", "GITHUB_URL", "\"https://github.com/Semper-Viventem/MetaRadar\"") buildConfigField("String", "STORE_PAGE_URL", "\"Not specified\"") buildConfigField("String", "MAP_LICENSE_URL", "\"https://www.openstreetmap.org/copyright\"") + buildConfigField("Boolean", "OFFLINE_MODE_DEFAULT_STATE", "false") buildConfigField("String", "DISTRIBUTION", "\"Not specified\"") } @@ -99,6 +100,7 @@ android { isDefault = false dimension = "distribution" + buildConfigField("Boolean", "OFFLINE_MODE_DEFAULT_STATE", "true") buildConfigField("Boolean", "STORE_RATING_IS_APPLICABLE", "false") buildConfigField("String", "DISTRIBUTION", "\"F-Droid\"") } diff --git a/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt b/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt index 1ff13f8..36f6984 100644 --- a/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt +++ b/app/src/main/java/f/cking/software/data/repo/SettingsRepository.kt @@ -1,6 +1,7 @@ package f.cking.software.data.repo import android.content.SharedPreferences +import f.cking.software.BuildConfig import f.cking.software.TheAppConfig import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow @@ -73,7 +74,7 @@ class SettingsRepository( } fun getSilentMode(): Boolean { - return sharedPreferences.getBoolean(KEY_SILENT_NETWORK_MODE, false) + return sharedPreferences.getBoolean(KEY_SILENT_NETWORK_MODE, BuildConfig.OFFLINE_MODE_DEFAULT_STATE) } fun observeSilentMode(): Flow { diff --git a/app/src/main/java/f/cking/software/ui/UiModule.kt b/app/src/main/java/f/cking/software/ui/UiModule.kt index 099e5ae..cb41ef1 100644 --- a/app/src/main/java/f/cking/software/ui/UiModule.kt +++ b/app/src/main/java/f/cking/software/ui/UiModule.kt @@ -28,6 +28,6 @@ object UiModule { viewModel { SelectDeviceViewModel(get(), get()) } viewModel { DeviceDetailsViewModel(address = it[0], get(), get(), get(), get(), get(), get(), get(), get()) } viewModel { JournalViewModel(get(), get(), get(), get(), get()) } - viewModel { MapViewModel(get(), get()) } + viewModel { MapViewModel(get(), get(), get()) } } } \ No newline at end of file diff --git a/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt b/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt index b3e04c2..74e0241 100644 --- a/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt +++ b/app/src/main/java/f/cking/software/ui/devicedetails/DeviceDetailsScreen.kt @@ -390,12 +390,12 @@ object DeviceDetailsScreen { @Composable private fun LocationHistory(modifier: Modifier = Modifier, deviceData: DeviceData, viewModel: DeviceDetailsViewModel) { RoundedBox(modifier = modifier, internalPaddings = 0.dp) { + val mapIsReady = remember { mutableStateOf(false) } Box( modifier = Modifier .fillMaxWidth() .weight(1f) ) { - val mapIsReady = remember { mutableStateOf(false) } Map( Modifier.fillMaxSize(), viewModel = viewModel, @@ -408,7 +408,9 @@ object DeviceDetailsScreen { MapOverlay(viewModel = viewModel) } } - HistoryPeriod(deviceData = deviceData, viewModel = viewModel) + if (mapIsReady.value) { + HistoryPeriod(deviceData = deviceData, viewModel = viewModel) + } } } diff --git a/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt b/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt index f2370a9..3c45348 100644 --- a/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt +++ b/app/src/main/java/f/cking/software/ui/map/ComposableMap.kt @@ -1,9 +1,10 @@ package f.cking.software.ui.map +import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text @@ -14,8 +15,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -24,6 +27,7 @@ import androidx.compose.ui.viewinterop.AndroidView import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import f.cking.software.R +import f.cking.software.utils.graphic.RoundedBox import f.cking.software.utils.graphic.Switcher import org.koin.androidx.compose.koinViewModel import org.osmdroid.views.MapView @@ -53,9 +57,15 @@ fun MapView( @Composable fun SilentModeDisclaimer(modifier: Modifier, viewModel: MapViewModel) { - Box(modifier.padding(16.dp), contentAlignment = Alignment.Center) { - Column { - Text(text = stringResource(id = R.string.silent_mode_is_enabled_disclaimer)) + Box(modifier, contentAlignment = Alignment.Center) { + Image( + modifier = Modifier.fillMaxSize().alpha(0.5f), + painter = painterResource(id = R.drawable.map_placeholder), + contentDescription = null, + contentScale = ContentScale.Crop, + ) + RoundedBox(internalPaddings = 0.dp) { + Text(modifier = Modifier.padding(16.dp), text = stringResource(id = R.string.silent_mode_is_enabled_disclaimer)) Spacer(modifier = Modifier.height(8.dp)) Switcher( value = viewModel.silentModeEnabled, diff --git a/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt b/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt index ae29041..bb1be30 100644 --- a/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt +++ b/app/src/main/java/f/cking/software/ui/map/MapViewModel.kt @@ -1,11 +1,14 @@ package f.cking.software.ui.map +import android.widget.Toast import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import f.cking.software.BuildConfig +import f.cking.software.R +import f.cking.software.data.helpers.ActivityProvider import f.cking.software.data.helpers.IntentHelper import f.cking.software.data.repo.SettingsRepository import kotlinx.coroutines.launch @@ -13,6 +16,7 @@ import kotlinx.coroutines.launch class MapViewModel( private val settingsRepository: SettingsRepository, private val intentHelper: IntentHelper, + private val activityProvider: ActivityProvider, ) : ViewModel() { var silentModeEnabled by mutableStateOf(settingsRepository.getSilentMode()) @@ -30,5 +34,6 @@ class MapViewModel( fun changeSilentModeState() { settingsRepository.setSilentMode(!settingsRepository.getSilentMode()) + Toast.makeText(activityProvider.requireActivity(), R.string.silent_mode_is_off_toast, Toast.LENGTH_LONG).show() } } \ No newline at end of file diff --git a/app/src/main/res/drawable/map_placeholder.webp b/app/src/main/res/drawable/map_placeholder.webp new file mode 100644 index 0000000000000000000000000000000000000000..da115bd8276de0df8c83afd40ea264ee35740b39 GIT binary patch literal 102000 zcmV(pK=8j(Nk&F!jsXByMM6+kP&go5jsXC$Qw5y?DlY^c13sllo=YYqBBG~s-4MVO ziD_>9Zw)!IyAc=(HtQg49cmI(8YX4pS5B%5rpL>1$ey96C`Cs{8=6z-Shv=Wg ze|7&O{@eTS?hnPU_ut~YNqSfGpY#9Ff425N`4`;3*?)omNB>{^PtBj-|KR_H{D1T} z^RMN<@qd{AH~**L7xJ&^f9`+9{_y{r`3w8c`+x5{mH7YnU-iG(djk9Y_dobQ;lIv) z(fn-u|NWoxf9XAv{onlu{U7t+>A!M*z<;OzU;ml@Q}Tc5Kl&fGzDb{-|D*d~@B{rj z{Ad3^^MC688^5ss>;B9BSMLY4?S|E>Rl@*n*h{1^T&^B&mW|Nrj)_4wuct^fc3 z2mbGtkKJGY|Mw7onXbxN%XfUM7R^uIm=Ar*zt1|1R`&}epnZFS>1#wKQZy{%tf;!4 zZv*a#r`0he1}6_aK1xl!3^+V*jn7DXmXv{1sOSfh*Mhbi{FDZqIRyL=MQ*3 zttuZqJwtqJ+wMCL7XmisVlS0Oy-T3Te_~OxbiIL@cuiVAG^P681bxXR-uSjgau*#E zK&@~;#J&g@-ob4%GXHW#tF@4gQs;L^3-cFSjsmX?7MG(LTf-&=-qMEQ7O5(d8Nl9X z-#O{<63|xAiT6@UG!?7}n^H1z59FmLvjc)n81H-ckM>V%2rBPBq+*}y%&D(C_w=$K z;F2oijYnA_BtC%(PCQ7JH$jWO_-C&cSNAZVgFUCi#TtjWa1=vYkDRn@J124MiEW*9A8fCuG*WM8Nj1) z^p2-@&02XeZ=M?$?9P|aQC5H&^u+f*4u1^5W6_9hK<^W^NvaEXjA9_T<3wC!&Z zCB50pR9Pd}_;-**naWXUE36>c=#qwfNT*D&2w0r1ZFVVg1v=MD`kw5aF}@Nn=gMvV zeX-HT=A&0xqXs96QV;BD!uL3+=yjweq(m#%dxeWCi*%3E0a2@KSrHB%#2IeIYqSJt z2t`G9Evo@o9=db)DZAPr%*)FlLewStYKse^mS6+CR!cJ&co zJ;+v2D3cL_+f_K&2pk{&MF%9-KSRML;xFkfbKbpcEU_sIQDN~#gNGwZ z${35)P|{}K%Up=v+7pCGMBt7SRj7y$riSh9=szS9Pi{FiEw&$YQ|*QZ@DytT;Kr`1 z&RUo*Fc?7%`EO~lvxg7#Tq8~#vUD%tqzTaDM1O@{3;2;?bSLP}G`i>e*>@|QzOUD* zG~IZ`-k$XVSMS3-A>)Ey{_6#6gfmZ`>3#PrW?^5h#8Z?OG zNWc6qSE2T*_RB+W?AhJgpSC*(K_?+K=3k|>|dj(iT zXt{do^Ie$H{C0q_vS0kcEx3?26GkV1oN&KR6tiYora1*68Zk1POoafrHAE3Izye7#?`kj;iFa8^tFtY#?{S9ioNe-jtP@2bspVWcvOS|^?-;}hG^67} zMKr7e@v=BL|ALe(Rh${iSw9&XH0XY}x5Qq{To~P0{xH#kH3&e)tMtsKf~9N;p_4}jpT@#_w*(46Y4n>KM{MJ3QG54I3$DUgTkVvIGn#C#<}oihla<=_}=N|x~lEj+@Cokea(nFqi-T_&M~TdbQ* z(;WjOxrT7Fub^1!nJM_nV#$3gmA|4P!y|GC(jd% z1+Ai5=8_^$OLL$vqMS%OAdOfh;z@s!jZ$c|xadTTz;*I|LZ+rCe-4~ijb;$NN|0}~ zWGL5Guf+Q99_vjx&T>j1(}riTsH2K{F%z>Om77@adv~|1RK?wDbCMJt0i*LTL&5cm zI#t&09X0~D!poc`P3N|%mW2rfxg}x{e-D~1>7D^1)=)$?j?amB2yCSLU#ot%^a_z$ zDNgG^26B1dKD$<^XdxQ)#m2067Kt=TTdO8H!9aQvpUYT#@~8>lP&1r2sXu-^)&MIH z1$?Su>FH9?I+T2|((Tq$`SS@L25#|?s42Y5d78xup{$W;LXVoE(Dm_>m2k0%Ai6oZ zM-IkUcy=2ndO^uNUlM+wIfFsba&&pBQ?$+KLVJ+PV-4qD(-jfWJ#fJY1Mh)+7PHRG zg$-XVziE+@>Lyo1Mmgk)GNkwCJmriQBr(M*76cv^7ixM#m6FSnA|+6^zsyOQS1L8| z7|s69gvUl2)0~8fvJQL?I`P~iZ!6hzJKYAYzG?k`y{=rRg0K%`F7<3D$!H=3AMp!0-9W5v6y-9nG|(GTabhU3cT&wqm^e zt6uSiI3Qez#ve3EBcWu4i+O!fyY*`ffPqB4sksu_=oRY=TGw3~u~PJ(^sN19>*nNA zTsFbZ_C#uE2=dI|ecz;VJ;?N2w`z6N2MkbXj=n4R#>rl>a2|nAF(Lv5-(=sxs4?jC zYl>a+I8d@gDt6^uGYb5&T6dhXYH5JXICsZs14O*X6}wzjZ`eoTA&K?h;F1SQ;x^m9 z-&0sl8lV~4i(U^vW4@PjA3&?*>xEUj5%vCUO$(^pN<22!u~cyG$PRXiCqO-Q7C%#4 zgp^AoOgTzzn)-SM z4XJuXAN5l6MV=#P&$E%*Bxd*af%DuP)&9JM!rKz~1vy*^qH#MyQ! zM8PcDx9Gqq^cZ;WhG=lGmMsAopbhSiX&zvGy}5nyqLJ}>yh+os9f?>w$868!h}`<; zH#2$;$8lC%(FeC>OF541^@-cGRurz=P<+%2ghAPZ(j8$G%@MR%V2kc*i%>e)zUcBe zZKw+5KHMF~6C$oTr@t35CpdRTjkgyHKxA2WPTB-0eOmO*mEmE!9&PqC>MuqRY(mPa z_R&Y$`gJcXppM-Mv~PL-LDW)wD})5%d!X-rp=j%(e-L=3B7a1T_325b=YtfCuqJua z#gNf|Pw9zGo1Zw5HekQ()JUBJ8>~}lCy5b-Szpb7bnkl{=$>(w;v}IG%cBQ>iGfsK zRn~3!@3qkoWLTlFhg(jp%&26oY#m=EwNV^5AvybvQBvouJt@+H=;q_8kut-yoZ8mT zFT7)CkfwYck+QtNdl$`SHP!i6)?6(@V2Y^RZ;AF%O_KguLF8KE8`I`cDh-CXt$4}vb%<*Hq0s(#fofjV( zP4^|~<@%yFRb#Z6<$)gDL5`ix1bk9Ds@rh=kK0VQ=;9q^}Xf;`&otHnJ#vSawt zph0SVABLhpt(oFLO{=bqN@lB`!wa=-3KXdgE)+OSO7#W6`(=2DkK%Y*Kv?Tv`cW2Tvy-@lXNOcO3rKUHHUGf^_B-VFhFu@^M1^T)ENdC zJ1FDrgd`hnWUafoHh!1|7KZ1C^bSjoMwv5GgRO)DYr`vO9MX&@XPL{{rN_32YJy~1 z4)nL@|J>WTxsE;$I3J%@S9F3Q;CuVvbx+LCa*!;&HR?U>?n?9MCP=Z_i^%0K%V!b$(t&e(9@=kEbAO${Yj#)N80 zgoVd7>EKgjqLj3Zc>46sMj@XT&n0wjlc0VAMDPTm>*@N z!pXQ|704H!{cX6RcE1^7aS2eGPFvj|YgsqJC)z-a3FbZAjRD)9+s(9#OIe!*Yt?hm zaQp>4t; zc`TVNs%>!vvFyk_W=><)M0vV}L%PsbyklRuyZ%s2$Ms(P3)4j za15!lDr88BJtdMza=F+sd`ZYjp~*%JD4wA>(Wk|)P}4ffkUFl{RobO{j87Bc>%y!w zRG=;D-x)8a(R3CbNTDOtOcOdqVgDOoQuhjCM0qxmLA9bg{tz61gh&-a7T9`h@}lP% z*16XakzPJ%l=(44FLZ8$YfnySrd{nE(9m^O*n?+-yn+2BX`N^#5DbUe2 zokzj*;w=}a>OWdA%3?~cwr>HFPtKXwV)UX5f`kvtHK^E_QZhI&tXM+KBI7d1G>#%0 z#U0cKErK7`teXtA5VOz}j02O+;w*KwA7M<7T1yBd?g0E^Mvhi5L7E}VsW_!Y&;B)P zQ@{k{TNU3bw@A0EF?#Rn!=lgv_5lzPCTlhK?4Kc(ByM@t&fFvBAPmV)f1y}*B$XN1 zgD;kTo8^Tv;{ZKjOml{fKhrktU?>HCL(5*HkQiNh!2^_Ys zx{{1s*puo>jd%|=m@@`wUqt^F_*#yW-_b2OE|zbV15!ko22L0CA8TH!@0>mS1M=>H z!XB{BAMXvhHKcawq+*iVvX}dqn&T=C{<0*L1&Y``$NjJI#ZTZb>kEoPuj4jAvaeH_xgmDpI0LSAomELIIu?^AjH z)<`5hb>nt(_#e+KmP;#*hkKKkX~}w9|N7&(@I+vd?K(8W*Ds@s5<-A0EL(SQ9ys1d zh3qKiG7XLX=Q~?E^!hN=VJ;{Buzv~bEnDlmjk@#-Fn{IM0~;P3nBZkGc$EvO0vF6G zezyaC!<4>hY!mu^0-9fU?579ar?PKQ(9=#0{rlABBxO=#?0L_S>e?3(g8CI#n^g@) zI7H&|*D*jpz-BimN-%`Np@6o>Y&%EmxCn&C?;aDFihAcUXS@SL5EaAPciE0nyix@v zNZ=2561KIZIhNXzkj`731F(Uyx14ll)k`v;yYk(0YM$|p7^&jBMB#3|glQ_tVCFG2 z782*)ngZ&G-=;WyKSw!~F&tRNgGSXh#t~rAe_UX2B!`PO>|RJ2W|(RK9sQ_fAb1g6 zDBSF+0Dyr%4)m+Er^dCNptpkW8&@M2~2;%9}n>SL63`Hslnf(o-$a7fvQiu?}rH4XNFr>rz{YLlZdJHC={!q z&m(g!Zze4MzgzQ6R;PtCBX8C+Wx@pf5aDiXhH>EBr+S?u10w^!F&Mz*!#(LDSuZNI z+Sx|xP!Ss0*|a5gkzI<@w0nE$9wfHAeRkXT#Wd}VBa%VJg>Z5Xkr_)-FmalIhQ6x- z`Ze4&lq}OP*#5X+E$6}eyfhk%x}5NU%m1uK>v1v={3#i<%-Jm5F)HYxUSTbv$)dtN z-@NfBF@_EVACAbEJ$aN~D@VLhKL?53MK#bMN6U;gn*r8BG^uIPTlO%eZBX8MHMe=Y|48Xuq176bNHuz#~WXkQyIE zE}O^&>i!2;b-CN6&;ZgKY_{#Lkq2QX=lXk^cH6|kRBr&@`T>Q=XykrC&y(WBaNB@*x!g(E&8|4UEzMT0)E zqc3htI_7C^%ZC9#J|{~huprtXfD(ynp)NMIl>hOErKVoBVxop|B~M}zApmE(GXqdU zosh=_Q2xxGrtPa^WCt}Ae*7nYa>W-~hNl<&%@R-9gca^zj};e?jukutsBg>KO+(8x z@u4CI?#4;^aq#zM)mg|I=#^O*pMTVwx4{MDy6w`Vg;>c%?4J==RfGDI51!<08T8$o z6tVwRvi(1&+p&B-%EW)(FvWmQ!?D9S>a94y`G6P`xM%L(c890;-HAXK##X*EYZGP} ztg>~DIL9qYS@r*8KfZ5)$Glu`ht@2q^&!C5yHTMC0b4~x-d|6Pn++S9E1V>~NAx}I zl98OFYIw~9%h)I~2&*UJ^bU#L>@{l(*~cAg4j9eV`D)rY7t4I)??A1estNCJJ?V*5 zwBn-Fb??OTFIjPq`|NaMb0zMG{S(5~-PmPs)D{2nbKMISDK#S}|Idyi)vhX8$Y|J= ztKezjpv0oYSw626ZXQ9g+tWyLepMdD2QLJf21^@b~BH4Wv{Ih&xht9;F+6v z`a*bY-R}@Z7cvoNrVb!z{?H&f){;%w&Tb*!vc~^V><>=*3l9s@BYc`Cmm~wa)L&r7 zNn9md+PYVeS5uL4pFF7+-pc4u(IyG^iINc0JDWIrB{h(Z^adoMa_O7*Nml+5gn>8>YMZ*ve0Q zzDY~3H<7I}W6V3`EALA@US_h4D}#tngjf<0Uk)Y9?|UHPPoP4B)|eJ~c^_*2wUtCs z`G2-6Qr%>Gc&q<&izC@3jwE(gY(u)Cd_Zx3WJq%eD#C{X>tbhO^Bw(9RB{&657Gh;4>~+i~K_tgd1s7N`XJ+1_0Am){PG+FX zyf)1_BoPsgd$qTEkSk{NJ{-+=m*wxlflu2w@(!zs^vS=ExC2oC%qpT_c3wsl1=%($ zEHSI9kWNKa#qt@B7=KCoDEC7X(@S8@yuu!?<%0i@kU6z_d|PvRoCH?h{h6&rUpU9Z zuWv25aT1m!%Pi%jzlQLC&kWcZhBvM-p9N^Bv77l#Ek`Nm4+~<6 zKkbhLMBa$^7?RvF*jjW+1KNTKA^J7zIXq1$a#YPq2G~+rknUKopl6#Qge$Q;*`J=?td_&HQ0~G6E0!y z?&!c_GEh+OPp$P)(d={Y<}!MG;Lw*p`VqK1cKosUUg_9&JuCs@`4&#Kt(UGVO0E<6 z2IdMhP`2)mVq~pjQdg0Ou*&7ucRH*GqSe)h<2E>CkVpihyYJ)x+>Sats5pm;DM^67 zQ_OKZR{>1cO}!N3)YfcUDwXk~(Wol!fy%`ST>fq*4Q1{K4cFTRZdC?Rn|B^}pUHk< z(C`pl^!3l7s@^*tFT4LgrZn6^5c{XD$T)z4D}+``weFZTo9P5f1g73sI`p<-DWz7u zk8x#hj`7avrXJ^ddP*qZpYN8S@5AN!G5^+%?;<^5l;IKnfm%ZcemahY+~J4-3(@X6 zezYkRqXOwJQgx(VnfbU|D%N>Rq|NFs1j?oQB~*~ zQB?A*JT$4RhIHIR2wKxRvn8Cz@3IA)fyh&dGv^wVP$#oY*7AChkup5?#J1!Ap7$iu z_Av4iKEzECBrw2urHgbJm+N%o9TA2op)r(c)wVdBD0M@#kKH-ouPCDg^MAAE`o<%_ z3KdBVn(#9|{Bxgs(vw9TSM<{_HHyK~_jmT7@Ry42DfJY%qHoGuo&i)ERSx@lB$)hk zd6k%x`lR8D^#X5l2`xbsFn)vxCEGg=D@S{EzCnIo&1V)IetPOsw|t&Ui{nqA=!Khj zm3_4VVE(ccxHqEp3e?cQrPZV@ns$bEdGRXkJSp?WP=g|`d;Abhy1zbs-cCzYeMz?1a=Pdo>r!u z6G(yRvFhEA{y0G4+~azWO2A0Lau~4zwC2qH3AzS^3A?v+Z3|ZJgdv=?)exUlG?^L7 z@Sjy#&^vweGqhXGN-3^Kd*w2lZ}t40QhREy3CH5BdT@E&i1oixL`%kz2X_Nufd2K{ z3YnkxLGW6Y-@eNxC(oN%`9^(uAqs=Y5eOl_b?Od-%;T$t^fCskGT;2#FwZJcy>04a z?hS41SopLtP>J_im8@f)a4NtBcamcj%If-gOE8@HjtBG(I&U2{2mP{wU3k=#z3>tw zUq;OZAeDQKmgkK^`sd>4eTPt=N3fl?m}{|%f2GQ->lqkih~w5Id1Tp_qst&e^;A59 zdr}y0UG(Zwc2D zoq6XIH`$rG*ej;)lYTZKl{gK`!S2bj^-4S2juEcy!7f8*)90-k(Oh#=FRVprv`4Sf z)Fxdto!iam#sA;327fVC%?_Ck!$UDBPxaQr4JopLr-ml%*+6?lY0>HA-$i--G51k| zoOTHWx2@jTHVkLL*FHzy=7P^^yy;nvB?=Hf{dKxpRl^1N=JK3__%t^%3hgfr$lvxa zeq}W4kh6Kdc0;UvQ?+(QltKbFx^ExNn`LfuwiTunXK$>w|M^3&nDX7v(m0@JvD0d^ z9z3-^*T>k1N}r1g!|FmsUpwC;pnKFJlGh2YlwU9XBfoYia&=iM%ZUA>l!6w+!W}^y zp(gmBMMpm<`34cKQ+;k)T%&xtJMKQGk2iIqVkHi!>kF>xs+gz#?HUi8}fj%i%< ztpqM8c@Zjf2(G*|Z!i6fcCYBk%tKz?L+&yGf*m7r>n1u_LsF1f`2GG7wkXpRqm%+~ zFSx0|RHy-q5hn2$n$|Tg;wGn0ICf^X@4DBc-)4nhj#iM%Ioig#^>od|c#AJkSRLZ4 z7OGaac>;ztlBg`QTmhIko`3%2kA#Kf_2Kkk^D83Rl335H@8-_|W%+!X2M;-5H64dv&-zLq&WdYxS3it6r* z@&Df&e%M}nyasgGJ%bL91d{@U2u$KFrm7eBt zm@MqD!mnxkZ6A)Nx}rlC^{IK=dYpW2;I;?fcE}bSv)OGi-;5rQ(yRx{Cv&4*24baI zt$hg!x{nhW4u^^(pcM@#&m#R*nAMbuPV778E&-{3*Or%`@AmfqYYBB)vhw*H(%oJ` z9QnJPNsF0oWY!~or2y}EGgpAH0|8<)LNZ7)TlA_answeo4f>Y3p6M=x+XE_7Evg>s zF#YjsQWE!$bM^iQBQ32M41N350gv1)i4_}JY!`n*+xFa|AzR-a(>ftoor(sVX>_=O z3*Nb`q2IusfJzq-_%#*pBkawMG0J^h(T{}y$Hu7JJvD_Yo&H$?FvNdoaRH(P6L998 zhW!xI+WwB^pFBaH-Vfk4w*C7){V-IzOzDq61j@9KV^bm}QV zyC{;`(+xNztxm~Q?Q#v)v$G;AKI5#MYX!$713^qmst=%V+Qhshl})R(PzIS}EMP0| z4(m%Pp7c;dq{41JEjniC6q7Hi&rGb4&%i?E0@<`2HeQ>bvVhT?nNU3Kiy*BDH>V_= z?^uSWI9tj6{nAyO^LwtMzm33YR@J+slkO;WwUv6eKg0R_AKv;s&Z-V>#1cD81pH8lua1?rx!Ed@W%@M+wkemT`N~3zb&#-2>+9IxmiTNSB{w zE=5A2fV^MwvC|R_#u3th$w^fUC1J_9@;v$?fF7-=Y1ME`F4NQ`Dtg~A-V<+{?qT8Rdt~UXN9nP7To{*9ajfsPXpkd&FLl!JW+s*Lmks!@} zYxwf-g~vC-`9QRO`-C_%ILBHez?PZ}yxIpSwC*h-BGh2nyM3^?P5EiXiZmwG#3~$2 z3n`W9nHW)V6jkJs+MpP-H$&=a0v6tiR%OA|kBt#)k6*P3aKCOxx`7gB!&!2u zi&;c}-t!YOA=Sd{%GRgPt)BB)F%{(DH3)8XbvasrEHT{v0_W~=|7=6aZ>_V>#a1|U zi23c~J_O{5w-$B+3Ix@5pR(fSH~-mK-BWB!t(~P?WmDu0v>AUeW=jJ-3B>725}H#5 zRw?MQNurGdc#bnVCChF|K^n$wHQGkGtbTiDNrFaE8`j`qGFd@3&19pnhLZ-cE-@Q? zKE3cDhAANDMKY$^maDrvcMZaxgXpYTfB^pC{Xtk(mgk3QKLb@fVmx;2eH%E-QP+%i zE-->u2p)W{{}zb;lnVogm}kta@;FLOW4eWYT@J2n2Y1xvoFxTv`t-xwEa*Y5D_~V( zY}>*eLzoJ5IlYW5;NQUH&14%RY;`K;fV&QK|Ao@-^VptMLyj*Di;Fi@`~Jfc;&w#ll!eCy5`mwo`Y!Dv5U%APNCT%3N~&upr`GhMlu^GTipl7T zUpEwK?XOtUGye;kX6V$6&)~ngZRWaZ6jio=Q-%w%T;Zd_R~HqYD2?j$N+j5Ubw)y% zk7uAQ!Ig{G{{fm}0gI9n#X=<@XLnHL6lX z%biZS5L_$;A!iU`-Rc+jZqaY`gz&Xsj$JGd5AYVh#~cr=eLq{tz4fBY4so2Hyb5;s zjo^B*PH%NA!RjMF#w%F6!ziI_v%jE>;P7oe3Xa6w_U=XzpJPCIjKK|%fcN5JH?U1K z5Ipz0c+)HKP-YDp-XrBSNss)%<36Si5D9BbB;v7@gYG^(M+u~2aj))$gn0qpKLNP_x6WFyXzn36twre_YN1nk1r9u80k%9 zZtpn>si-&EK?F0GXx3`OguKWlZvmDq5V?%IAvxbHSMKx~#aV*ypwjN1u#XoPq$3C2 z4EsNaxyUB%l;CIqi^;-hXIShp+-9;=b3=$FUJ-cu)E8&!UxO1R~t)8l)=psv?)PZGM$Udt+)0!k8xg;#X-TZu$frZ$wnqws(v7@=t2 zDBPd&K+{LlLI8i8p5_ldh*Bf!@L!=g05AYom{o_h5xkllA zG}ciBpzDUmM3l~&auewTQ%wP4QD`IV z3ET9{i!1XrO5Xy(SK`}rM(6EEwu|Omzhj}U8jQKOBxbwU1o9I?&vWXpma>7qv(JrZ zxDVgZ8fq2@ut~B#Kl}XUS|j6@s)v@h;2mau0XHpuY%#SslbU-n+$ug-uN^5353Ix2 zfy1UqBT3#-?%`epTP+HNkJ=_uhtlj%dq8tcUAW^I&MCa9aX%z6v;?KH5jl4_yxy1g z>G!1OvS0=+aAyc*+diJhXWR0!cXb+n&Jif(RB;U*|53wH zuLG?f0u5P~yEcv)CIR<|rC9i{=x2twMrVhM7I04gXS8N=%K^)C36AgQ+{e@V0c+*A z13}pKHFY(i+|Hn<3>N~2GG_!3v-c0Me2dW}V& zLr7$zF2A+ytrH7f^^q6l@!faa9NL(@r47yNsBtd|!)}7zQ1ZMz2tJcu@cyJ?-#m(i zHQQFZSJkRkd|Lb`;(bA~hVzcyJfHB!5Ml^P_U8p_N2}*1Ox)hWs2XuI1Bm9CF6Uv; z&e<=sbq}CgdFM7IGU()7)eJSeDnfRkTjF2Y=*XcJ-IUtck=D7z+ee{bJ)C{QDv zEQq;t+fDgZ|fky3gb9zPX+V zfY+f{{MJ>dFIjqeTUWwV`Txj`fhQXejy4}fdW?sefBP60XV6wuAR`L%;mH7z4E$57 z?zn*d#0Z~R3V?RCNAG}yAR5zNQqY( z6FC3mE6Of>k{fD)Mm|PRI=aH%;J7lEMw{R;gL3hGs6TN>5jahtS>>o^Rwz($mBi17 zUVNzGV4gMCC681=fbo_q$L{>BW2~^zpa2-M8r$jGffkcf0MjZXn8}~TjB(~3Epn3v zcx2uBkauQJjdlyH$S2dJEoSPWiaW1K=%+To{{g26fSeVSy#F!Z=_41*PdAKtZF*PLKI`RkR>&4D1% zlde%+$2=)8XB_43*G5e*Gey&oS|EJ*%mm*3OP;B9P7IIdN?n-6dI9~g){I&;keL@t zPF8t=*FRS4gI%Aq;qJ$fVT*x>*W41|tIS)B4{tH#KbD_h z&YBGZ5>WV}jIfJ0M+trFq|R~cFSao$r1;q=O8CF0?(%ki!#6wx)$ONvkJ7%iM}|)F z!~3bCjG~bl@Q_kPkEpv%-hiNiehDi{Ds9Se=E2VW612|=_W_~&m zGKx@1unPtqsEf0QHMVxLz7?AdmCAlUQ zMnIYdSrc!&bdQKty;ToZj_{M9Fym0*quWVk|J13Fzbe!xO)0be=)!E8I)IY#%0I9vM>ehf3 z%ES_k_-S&uzE?Se!r(Ds&5Rp(pHyQI^7-rNaLP^HZ&mqVrLbCp@8PhtK-6daDxm{< zq+^2^;OuKAS`tD(Z^iSDJ>?t+U>&_s)#4A?R?tL*woAWK#9X5Pgps7On+C=5;Dnqo zQCuNrPi2u}*_KzZ^1XkzFsj+Bm43jOo0`2Zs1dS}Z%gY9$e_Rz3j}K4ujxNb@YUy^ ztV4>MUk3ykcsv?;<#3BH4+~4i8$+l1u$?5~joHnnw7ej6-$qhM{Z-9sFK{>t%7f}D zSLky?(B1KUtByA3eZsa)eEE>E4v?HVC%zgh&-zJT|F2RvupvTnRErgS3s37Tf33Qq z9Wub`MVw&%)Eq@+T*)9i@aE{qfxdA!^JI6@)_6|)RRYkLAhv;>aD;JU&Cf)l5p%Us z`!}GPg^dvkKpo#8e_I{25-pSdepXzEHby3^fVJl0OHly|fHo}-@=lET%7Z?|9 z{dnSibdpY}?l@Jc?wXgqr^h}VR5a)n2xXz-PjeUBp7hxgjzxS?9dbf8p%~_%e z95q(jxO!Eck)6D>hbu9n6P?j$^SfNQjnML7UMRm?(IkAS7+`PLqH}I`2nXhA&F^N^ zQ_W09%17E4)RoPPOl@i>{CyMi;v?Ghq{+$k;tkVQ} z5~SBZ9c~&a#EYgCr_DBi4_%yF2GVW5GwzV1J zou+_uJ12YJ2`3$VMOyH~lYSrb6Jl^QquE~b@tlEPT3)K`8LO8c z#t0324zxn1>$esdS_U4^B1U~66ZipF)s^p2ec`FZk7u(FbI6~$Y z-|bv`?JQ7*u!Fe=gam12%_fNQvKdkt>6GYlpms@7sMvbR3gq{L^x@0;^STGWzBh03 z^F@Er6jn7n379Wx^@Gd4g2M~ykc@Z-N<7;=4jheIh+sm{7m&i#jM#WOF}I68VcB>o5@7kCG?DKFOU2p2Y5X^J zRzBR8r-F#ywrE{bWrq| zS-?7eD@-X?_@2Dym$G%8N*3wHC%EcV9dBBwyWXt|02mbWG2Q7PNnLQ~%@Jv_IHiKaacYAu9t9l!{Tkv#AYGT4M6~UmOY}~9cd)L8&fNmSCzF|oz>B8o zVm<9HYULaPTq2zXmVuLtHmm}DR)dz*AYF*-jf&h@PtIhHCLj<|lo5XA z`O%2O?9Plj&wpR2Z>HLXlc?^XSjRFH+`7klwlvJfWOC(bl*HwZiiG%0UCossn6bC+ z!z*RZ-r3Ew)iO>0*YMa_kgJGTk`wWF1`b*zXrQA}d!Wyo8YYMZZZL2MrJJKUe;9?Q z=rqh`Pxpjjzve@gzh9j(GkClxWeh2(C;&)S?%6nF|6V(>@uVS`POqre2qKgHR1HTx zeXgA^VfX%bU&Vu9lBi*%{-2Ai@S;V|#5i}l#>Knm1KCxe+6{aQCuAaIY(5UFcG>5i%S3P+y;`{=M= zV7T=Gmlj`V=^WR~hh8*M>_(eZl0z8-*2GO+E&e>)9qY1O*C|(DmA-~)sVjPKr1~%G zvGI-UFcb4FR~eG+@FXc_RFzS0uj8{>{RdTMv^p+azL)(_O_oWrw|>MGZ#g z16yR|6BtK0H?Iy<^wWt9%i$f^yG*zKEw$eLn+a%_i&_lB24ur)GPN;!Tq4h%-yiA0 zYRXgK1<42HBj|Ihjr+kyp}~P8Puxhfs8BgMiq7q{0dOv!L_zeooya2$y7wUU0};sP zLJ#`nJ~80hfhv0x!%ny)bmzVqZ#&4Ci~R6Rd8ghXShNGQ5lmE#3T3t-z+^3VUEOZ^mbYpO9xnVp1aa(O zfCRvUG(`qus0xnF-5)2*89+Inyu2<8x!bymxddFv z({McQJ0UEQ*Ffeao*^H)C_xu>psS3LTyZPdhe=h>=^7Zl3n#|?My@`{`EQuM&s`69 zO;ypHFs11nDgj5)TSGh$_fk0B$yJY|Jq4BtRk3aUCe(nlZ!P4{BA* zzw2gw^tAAVBs;m&AU_!4tP_Frtj7YExNogtwm3@!jxv}h-Elx=8DeL02FB`Ir5U?*tZ=w z`U+B$>EX3rI2+mbkzg0A#tDdR$~{9>-w>hg!R74_$pP5+mv-GN8)S}{tSU6@0Lisn zdL4rPEqe_uQ7~aGkQpeuMO2>{0ywnx#<@x6rmxN_$*Il44X4^`&-dQkx=4Mg`ae@{ zHsuDeM=fZXf~*etMY^OHroD9lQ<9w7BRUZ z^_4x$de1)VbS7zM@ujTHZob2{{arJ4|}BP>q(g)XNdHsftAa=4S!7F^*z zgPStu^l~iXCiCiWi7jAyy01#LZ1EI61}C^t8u9@$tn{b4PNP{Wx`)PBY4n0;B@j&b zuRSEX^xs+R?oh0I3^%gy8Fy2*LrIujw;c0FVj~PuAb!9ku<)&F`H0dTZGG<`MJdX6 zJcDkq)ySLI&2Gw7+(*W@W_*fk^zz0ymMWK|RmckU>-2Esa-;%NjhuA|0fa-W@Ez>K zu#GARG6at5yAL|@bu2KORQ-@{wjiqmH2_#dO!!1=EIEwO0W~Me@mo&b%HbaJ9{FVH zJu7ekv^BiYV#~$B(2SyJ6t#f%19!8NXxga85Yv{c{>Uc(I%x!^+#27bgNF(l-qRrzRAp`FR{n!20MKW~oaMsVfV%3G9A2B*!7qEi~alO@{2J_!69zKd>W!+g{}? z@_kZ&{mxxq!R9WCgvCzR_)hfRU;da+(vf2xxQBn;=?c=3`F5M*-2%%ImZomFzT;R0 zeu53Po`F}+5QAcJ$OfhlX;>ZbzGII}0PL1C1vg~YUd}7e-DY7nZCZ$X1Ui(0c8(1# z(d4BU9!2CfYD3JmB}2&o*_=|0$7G$aFsv7I)jYTz!~Jf0j<>S0qc9efC-LArk*82Y zsA@`CxXlcv<;1vy8C{#;W7=|A2E=A@F8H4DJZ9l@Q32fCxHC?`%DO%7C02at1k#uI;Mg z%gs#Qv_&q%fcv#Sk16Y3N7Kgp`{Iv?o#J^lydsRjoj;7KWPY4|D z?lRPwkEo!RHo|4a*Xs3hUls{yQ6gC2)+Qc+0b$95f))B6hbE!bf* zf3#&mMPZKM{1j&OoR1%Vvz{*C^FySqf5(KX=Mmw4P}@^%1d2+q-~_2EF#vrNSONZz zuF^TrR`81{#Gw53%NqPYZ(=PLa=BMfOo3Tb!h8Jm*LdG?$h+!b5BwK6(!?-~?$8Ui z08xN81s(*#-^~&8;MPxYGOf-)*celPxMcDp9vs|$8lL{pqbl2cACGyoxG>uN8paU~ zrlCZeTk-CQPm=n2ab$9PJ3RK0Huh3|z*-I+bOi`WRVyIF2(jJ&Il)T#y(l;-08W;&p0izz^t{?Ura*;Rf(QX0P zrbda-Dtw7BW62yUf|TNjLMTQ$=hW>%*V6 z5C6$;nnOeV&#_Ltg=?oizf0i#o#OzsIj57`wJhW6e`X7!H*oh9x#qqWd3K(e-5y{* z0o=3I<3(D7ktn3$Ph0E**sW%wrfI1kp6EmJVi zO@^lay(Am#Cg;MinE5n3@&`obh}S)J>oujKL>u*ptrt7mM@vkNmTZK*rAn_{xnSVD zx)|1hd<&fCC(w2XhaHq?p>mdoa>y!UaPri|c@a#W+4E+mPoxlF%H%h zQgxy@mij{CQI^HsJ;Vpd@<;=35~5lTG(G*YTp9hyoC4fy;l*C~j%V*07wI`(d^==S zq`DuQEa4xv)<>}521Hjrq0N8QY|PC=Ed=zvUuYcK__6|{FQ%<0&vuJEZK2&Z>~ut( zXY267MNakqIRId$w-1Y+dD-l?6`7vF+8I5K37n8^IZ%kA4YxPoWRZLi+Me&bC&*ZB zxLf*XDQNd?r#{Ipt{HthGE-{_{rUv6uEI1gL#On9-4Qlm{Z=7QbpZ9E9L_%GL1}mP0=)hm@4;0!sM~^+!%H#kC^-kF$^8*)w|3oP(2yuv4*8`^s|DdR1ME2 z^a=p$^<-2Z>}jz8ax>aZ9wZFy`R#uhr5{0TbOXk`XRTh9dxGb{F}(E z7wMQw-I@+I^2K)CQ08i$s%c^3L#f5uG^pG`KV3GtKqPDpRUB_2H?&^7$_-HfB+>jB(E2t(#x&IRqKeQV zrCaeK+aTD#0D=fZ-d=# zM2cD0Aj><16f;m66@|hf&e@HqzcyIpbvoi{)U~opd@~5~g)Bj|U<%|o+}m_!FvXK+ zWR^5y8q=kZrYkPa1_tSGZ6iv#;OhiFsYiew zC|s=Tda-touf8*;dZ(yT+}L#NnXEuineZV>oL6N)SDFx3`Q7KmF~9m@Q)8>GUG4G^ zmmQ8LR)bF(i2)!euRb|3K3*)3Ir{Wuc7v14jQZ7AF ztFPxBDSG@7uMh;(97u1s3(PoPJgEnN5&@RQFP_K)AWT^{qXz&3S>}8x8gXD#!gNb-3IADXq)*XyRO6iWaIk4}hi2<;b3UfHN01SDwyt&t!eBYYB$@d#VqatC8s`ST=-!7G)(DE83QIqZd9Kb)#$gK- z>c1S!_m3maHS&AY)<%ujxi>IO=(Uz>ZJA_g8+=ASqO0StjR0788m*dZVqu-YU!9AQ z3x2YxRfk5KR4)&D9ARIM^ZR>TFP%5f#FVuI;K`MEH;3`Cp^WD_fH=2T>}yHn6NVT| zSvQ2P-p(zdk_py$?3@C%ExLxGWI+*45cQobuXx7ad)FEWCkg3nj7WpY32kcD-rj?* zpeNH+a6xkLYQOosygg(W#$whchvR5F(N<`P1aC3G#<`o z-nBmAmECjHqv|}+;|o|f-0P3d^$fa^`X-O@N`%6@&C6=h9#X0o*H7QC!)TQQXM$dl zEQPZ~40ZOc7XSok7|}5IAJ9UIZKd$I<%l=Ih0snzB@vd#O*F*erd(94s zXv?aw{1N?!4sUJ1=)%-TkHmR=;ylsEnA2fWkL^$!c?Me*0K;v%Ivd319;FaKv&p{( zp^s(>QBQVK0K~%_7cGnDTCKxAv;vP|evGF=*z*V1$1v5yP@dmd=(*27q0jm_C)k6v z^JE~4@}bwUT`0?(Fni_RmYo{I&w{Cen+qTJKYQd&N@U}4H2!RKVt5vMNrMT6xX@;v zG2lL+Sidnk6y$3+?m08)>NXa!(J}Sf^R}gH zfM91Bv(sv2V=5}xUfeKE1C`+Ba9^deQI7lkAny)IiT(J(h>QRgOTjn*4Vs#it_1=n z-6_SevNT8RRZfECdS76_Ef@x!mAM@KtM^fo1(Y<^zb&wIs3a$~{S3XyPp*p#CWrkj z+GC@HB{m>bPMJEV12mLM;*67kCI6H< zKlL&;KE8HIyaD*jU;rMp1z*CAO0w~W>5kscZdDfO+H#j1!4{|wkCO@%ZEBr613 zbUim@Xy(5mp>=+Z6_(Q!0h2>IXS+n;Un6=aD|dOsd`9Xn@{Ap_8che>6Rf-&0C~a1 z@t(_)6LSl2aUYSp0TqC@dZWei{dsoRC~Q8BCbt z(hDdqx%z!37M*X7k0?rTa{P)kN!`nk}Z%`*^B6Y3n&T!$v-W;@QPe@)WQvvG|%c}Z~)h1ETwR}#rJ6gIf?63)2~w}zUf3o_p2F#!CQ47@N65mx;BAmk z_{!<*L*Jheu1vZaoh-Ju(rr61YY+ze2qw9=+YQe43&nWU03`of5qpMMQ%7_MvKt<7 z*%pn~5(_VA(&r0->!c8vR9SQ+t)3XbYpyJ%qPc2~X#aZR8+xJdIza=okHR-QrA!E&= z;a0(xx5r}9Q%7Bw9vq>A-9V zaD8HWMgU5}eCexdDF0ppp#-Hk8_~A-@d`N;%xY7D*iy%D8>7tsJFl%o86jY5BR9`U z;q+;AEdk}Ce^_iRhc~N0UjP5?YZQzL!zCN5w$be9zIe>QZM7Go8hm~^qr@}3Is1_s zr@k7m>Nw~hK%N<^#wl^%tY#OBew^oUliMV%wr5M0fye1tWG-lIfH z))aqod~J+z$dNy-g^nh*`NexDZqUNC9LxZVu7CxLk+>=w7yH zy0lhT6BW-iRHJHblFO_?2e7S$*AMy!>5m<0d)sTnDv{Mv@r7G^K#uU23h&UIErBKn z?+c|pii2J)v(uA-szZ<%jAU^+}Z1mGhbO857R43&=iu)yo3B z0gRIN0GrG5{79AA_9`$IxUkgKb>YQSEVKL;g?|mMp84(ko(m~(@VLHU`fE%bseJ*c z%5=nR*C&B%A?V^gq7Y39T$zIc;OJ-Q5Rs=9uJ{rX2TRQA;jWecf&y;3nd@W z1Y9X9MZmzb95eTGbBrR`wr83oP)|!bTP8t?PyI{A9LIywv%P}#!+WY2hS(5&q}jNu zp>*RQzvtyOW+hjTy24c)S_neFRJgB4xe*#-S#eBZZAt*zuK^EY^N_vj;GEqv#Dlqw zi5}@`tyAdX1Rmyr+AW5#J)D!(M`vsWaJ8G}N=PfACTjYk1PRnGiQ};(6YRhGbk59H zn1ZP_Ti-}JBCf9;H2(}%a9l|32=ld4hX}SR3g0%t6kCF;DMDaQbC!IGiL0P5uyK9s1aiM=dJ1aXdT|3GQ) zR@f~JA7pLrvvMDl+?-aI2E=|=B)|kf5vDWB4m6LhIWKUNle&=Q@?DOXoZXjrVtE7c zC&W#M?EJIW1!9e2hF+d43`hU*{~6#l=)r|GN-exQ7{iw3jDz&$phBW8s!oDqF?dG~i}+=|w~vHyq)_FuAmgACz$ znO^E-d34W=1FwpxTCT-t4w?C?TU`&`j@1~V(=Ei;UG#Mq?iu_zD zO*C@E^mc|CiZ*h%1zW2O1o(rU9U@U)d!cJ6-vsqpK*T7qsQAy|34V?4zNn_!terFF zV_fxK=o7~g4X{ZSu;>){jme{tfAVAuJu`%v^*x2E%5>p75Q6%fA3p*+3p+j4JHLm{4ExlwNC&#Vf z(u=4CdjR0aRZ9|m4`?v6_ib$=N}nWBRLrp!c(amhL_5T^!wsB3ZgB|&&X1JwOp)0! zUuLDJ0e0AcaJN;d)w{=-o>7=(0FAaYBD#yiX0`k|!ebI5P|ZsHhc^-$A)8(7!)SoS zV>{0MD*RuN!S{Z6Yq~@#K&{w+*)R#J9K!3L{-Afr0jI0gB-UKfAkWe?r1pEA`PW0% zCx`J6bOOSP>HOZ0tL|0dzY|^cXpUQ#Qvj%-KBIA3^19Yc(V}j&lI>OT4yPMj5k#*1 z(c1>dYGBjue5~V*=R_Xp^Deh%M5hD^$V}eQl119Z5*beuw|qiOn`%wm$(kd+=6p}M z1##o`FcM{^CF@?2DdD)Caq(D%dF!jj`VQ^$nZhS-o$SRS&Vfw|Ge@##@%p_M1F1 zXqPA`FN49|PJ(#krg2Z$!2ZNmy0!NsNzY-mfyWS*l2dtJ)%|J9YGO(uN{u5{41jeE zj!{^LiSS5o5h)|TR>=FrciGjC=ADVJ%cW3)ywqu5-*+JM8?E%uZ;C0}k+Z>hRsqA` zvsax1SYUcO!CWP&c|B@Si9Tx~L)eyh7x^aI%0*IX`bcy74V-q8D(aF0$iH6Yeg|_P z+XnV#gT(dCn`V%(CiA&cI^rcR-26Mb(R%wwar%+>INc)olRR=4y6Io*SJUx8lX9?m z<0pBgU^$?vk&}I4!W!@p_Z3A`<_ouyrh$P;q#bF)3d$Dr#s^rCVi{3j=3$Gjc#kjXXdmcvo0e-u?xXO^SNrh87$Tps1@u_La>`9-Z=8$uf0rOL~L z?+$qjW}Djx>Z_m36l5K~+^gU0aEh;ad^^;)HCW73i5}E^ zRW9U33L0VAj!Sh@Bw!ZC`8xunyhC|spsWpRUaOG|5JBm}B%sKG1-9XDNI>#CRUc%x zBo&uGTt34%HbMEF1zWIVePK>ohQm^Pjv9jz&%JB*(AF+ug!;^+O)(1Vym&l<< zdc##zfb|1_ZY=yOuIU6{{Gc(LuY`-VYAueIY~0Ngh@w88U5oDW60#(y03Y15bD{dm`a@ z=``o*4*}HY#pZg1o1<;mf8V*#sC1Ao%r?g`id6Ev+!U9y>el=iAusPXHhOy8#yra) z|Lys~LpyreS4clgOzBW(J8RHHQDcV z5!OQ<_T(-z#jJD9uxEfwm|t-QRSqt1&i9-@Qx(EBIC#rI3yKTvf)07No^*SFHa80w zUH)okhA9Mbt>)M~uKK(}f<|1eHCa@Lh-HO5%FKTOf;y$bdxnVwAb9`m{uY zOtOnepd$``MWaJ z(><{CagT%<CtgTj5Ox8QHH|yzIC$#vIYx{v9?ey6fvzY;!;nOXiIx z3`;C_PF4xq(D`(?BpBGQiO!tXT4l~zdQeUAqN9kG5g764nG38K253>aU;Jz@WIXW; z>07>WYtwkZ&CX;7v?@mf#6#9(jMZiy<1eQ)V3$0>*ZC$yz~7o_ZKTQymF=Fvym;2A z)&{Xli>(SY1Ow9^l!@wqE!XfoMwki` zBI)uluc-exJ${WZti--kYH6j2@TB<&53S5G5ZUHKgb>n^ha|DAJHc;cQ5N7cf-h76 z(6~_ifg4L_)HmNWnyETwzx;pe9veAe18Jz)^f?J6ZcXWCak$!ovoi%09SuT9Xp9m1 zvl3*Kj?8xEhW!~;lQzb32oA1w-mZ4rmH-fNL6^|X$zV!%Xc9IuRAA_kVdBWUuk_;A zA19q&H2+UThsUeDk>YJsT0U~v;z-I5|sv)P&1&s*ZV0OQ(3@mzdrPBt+cO3~E1 z!bnq7qNod-YXr$vk=Xd|P&n%We`|?pTuxH@e*O{65ZLy-ERLUpww_*b=zwb#J-FT_IjTB~ExQ2Nf4edE3;Vf=`FYv~14 zG3dOn=fo+s8GUL<#nJula_am@O6!J)(W*;++Axz0XfIMELHJ!zy=D^gzwVo$-Q?q~ zv>3B6DLN%$%oHxwFcy{>I{K;gxxSYsd4kwd8qg*_dY!mXLw0dVzT)UY9-5!8wihy3 zK4(t6N8!3Uat6{wfI1&hfWrs=fwz$d)?BKe>s`GfO%HkDd%`lT<>)!hYq=b63+h?YGGQNiwNYde6AqUx)RMpBFA z!js|IHA-E>04DkQCH=)*kyIi@#5sK69m487x#RwI#7k=kF{(~OtQ=~zWcdf-+HwGr zr#%d|tlsI7K)t@EH`T!DF9=V?(qp(;KXGS@Fbk?te}nf%8n8fKq#sP_Z;0a5SGM-= z)UK7!qBpv&$;=-RB$+#`wm0=Pn-r__6T;x3W?jq>B|-By-R_Q%zcX`9kyxBEf{gJ_ zygpg^rJ;Hj0=YiL9Oqjv6H9cNN<}2P`JqqNVKmuLN1!p905IA&ci+W7c#h&et|4nlr#M!CC z^n$yPvnrjgfXY>UTc1UK8Y8%@2^ZlcO8j()6*y=k^SMFjxG=84q#NH^BUd;&cLvRk z3MO&ga}07WJYJ$s9bI(_u(S~JPdwi~e!Vjh}qdEzc z@;gDBzbZjQIB0eEHz87(LRY6I5x7g>*S#J0M>e%sn=mK=Xe=3F;y5U>*k+bo0?bfr zL<$FxyWobBS*YO!!! z9z1%R_@rINv6=>Xa|c(lQj9$Ly9f1U&2WYNlO3Z;r;MmCT1dQlemKBOm*RR2gH|Bx zFbtdJgNkIr{G$7P+Szss;xjP@wPAQN&X}ES3vhrq`n# z@pWu`T1QUk+%HXdr;+es+2QbO9D9^IzGy(Rpg0T6ROyWSDPu!9X2m)Lc!Ix7JgA9{QURBkVQfFPhYD$I#UcUQbPk z5B_!=rY1=7`v5_>C&Zetz`ut<2NYxpG0K$=!yO3>6#@@&I;#8ulMVc^(Z{L~${p1Nx)K%;l)GQ2gVLj+<1IQKoeIo=58?H8;Fm(>B9~LjEh#;yLI6_BOZ;c*>_ud}?KU?*&FZ(a zN$`Z4AlN>lH;QsalH#bL3;V~VfUPx5-ocFKT~M0nkOx-al&;#ec$n#rjykv~BL58J zP{X9os3=MewE?8*3q-}eWS;$$8U8j4VU0yJ-Qsxf-?ZLTK{m%D%nd7U0XRtGPek$N z@EvatX3?HB84|U959`}0Yuu!A8lGDs15iaC2j<elA+N30Ts;zp+>kj#RDKIhSsd5fB{2Jlem6VSCQf{J2nr^eX!B7(d> z@m?nBp9SlbENp)ir!SW5x<_blv+v974Gp%`K$Fx|SyZ!hjMB^3(pA$fArK#=pbhz^ zoXhQ9y>y-0y-s=P5JU9RDmkQ*U5^4Zh77#?JFs_l`yy%qpF;+>;W%BaVtHR94D|}QGG530#R{8AY%c`>@qF;G=uRZ@# znQ%<4HmN#er*IP9zmT?gfOJcx_4#ad5KY7fA26e*qW>ko2>FjxU?VOA^!W;#4*baY zSo7&rAT@n`bu3|dQIdOXEF3TLIoKZfpS%`e+3yETf|O&uAI>lmbkK}Pq5ddUBZ94c<(tu7jzv5F`#n z731_k(>fpoD1#FL)zoAlBzT;ECtV0NXbcpB>8U6c6DWp43qbnaCrr6i0ni?rMAV0@fF#9-_}8>A~db#ni~g&^5@x47O{u>=dN_c zvC{sH##v9Ctu5wYmzw(PZ!@EZ0-?jC7=Eps?_7{R@3KzZoZ$BL!8uxDwUc5kZ>IE% zcWtj#z}3Hvn;~pN##AjpEEu1lh#(n0iSd`#iKlp7yPIHq1Ag;fiAW5Qh75J%S&acC zd4{o!x_=vZ!o&+Mxt?L*KI%4M$uASUo|#{Dl2c{$r~BPyWyFv4T({4O9BAccu#8l~ z;sM52D3ln_5`*;7MMzfB8diZ)tCNHuZYJGkV2P-D=*i-k4NspeQ04EdaKh8-pAh&k z#~BBiM0#&$u7b2{G!e+>=u`RvUMblg%4azA>t9YyLc9EI?f$Iw753aV5Rgb1iu}9n z2dK6OxXh%6j_Iru3{SXE|H@kgC4q38Gl~}3eV5mELUV$?jA=+9(IZV8t|7TY8H#;$ z*aortD#K`x^5SZ!I-%dc^%Lhg=Y1$*CR4yG)x9}5Mr!rW>Qx8@O%s416x_^Jm13r% zFAqY!Xcy;Q7R|PAA(x+^UuRTlPD3-SDObCa5=}v|k-cI@1BkH+%WZxIqt#nZTy4DJ zMNOnzo?o(z6rE3-krzw&6#cZ%v#C>4ueIV|ueA5g(q&Cw9`d zj^288=+&euMev+u$l!?9ov?-$ibDN+v zQ_l|e`#vUmvd+j_&HLXxXRX7zM(5rc69Fz9Q$F-5#h^=J%dFWqU1?}9_KLhlpc&q^ zpOY7R6kBdXCyQW-b>?^uY`p09)%pSIGlJm)mF<-fxFl~UUd9T`y)^DwD^${gdR{XF zle$Wuc?NzYdNp|7dO|KZGt)qpez#dOOOlaGf&;q*rv5n8pkuB-8ix35((!YE$u%b& z=V$uaHe{^z+eT2SqEM0v1MrjT{2bE$AT#d;`9mlnu!FPv|KnUj(w;mJc=)-nC7~=* z+vZ~JBOvRb$Grv1Bw3wd1oy05I^^y|es-?yR&l8vAy7%1NM?{g?LR4M&_YkL zBysy<`y&94mu~&wjtDvfdDF^paDUt>>6fwQmvP?;S@}YG= zV|jU0WtJ_l8D~$IgIZp$naKPnLzy44(ej&_BcF>gYLG3_d^)uzIroB7(%n41?$@$3 zZ1HI7)j%Y%7pDkL!W79SqjO!VYl_3A^L29OOoMNAu-IQl_?!e)h%n)#bDK zS^W9!1(t?h^cSBH2JU6wxW1ib8{;y{OqfR=`SnkRTMcD&cY{II7`wI1OiI?_U3CEF3YJ#u7=BN4UcLq4~ zF*s2U84J($-bP#3|4;wKfttKLbdZUg`~-LnJ+(+KQN+kEq|BjGWCduu=GR`-d~LK$5w*mL zzg`b+hcyF?z8`lFxcrdGxOnouHMV^cag<6}JbRt|nYM^zYeft!ME%UCwQOFvGo{>k zI56%LjuntpN4tDjY2WEHhZEJ5x0l&?9Rmd^FD@7#I4W7MNV*r_35)qv?3()6Ic;eH zX}LJdJt|XJpvhZ}(RiVw=E#h$eEjb@>lGi{wE;5paYl#5xc>av%DF0Pz176yD9n{4 zqGI2i-BtuW3V9(um>UK!ZUf=Uxhk%Sp@PnkqC9GOjRTbx+q>v8Ju=|`(4e&kOoRZR z*U2vMu$uQ8{bW0x#7)tk5GIaBby!*F3k!|gB&)i(&((>gY|@mA2MfyGIvLV*WgXrM zz?k!B&_!=MX;0}$N}793v8}vA5dw?%B^=l`RC z{eSEIpq%0Y&E$3BQkopyEENtDV;eB!mx*+O%T|Y2Q*>3anP?hw$S_JqQXsTNV90J< z*4;S%U2kMDrh(|a;FSOH>M;4>WqYu#E7PjYJe~>x873z~t{ilQ=WhR&{mkwj8!Kok z(WF!!HT)!uGWfZCqTRsn32y%!Kt>`Lj;&nDYFL8FovI8zz}nQ`*1VuvxN?j+BQ#`g zoyiD+ctI2_9Sj;D&!!CDcU+C18g0TL-Z&^Evy*UtTf-LAgp=-K`^Le(rk`B6bc+nf z>-%%lD@++GCNy?0UFF*Qu9@L7KSos&LM)1Zf9wY6TSd?6nkXYOoVfNj*UeF3;DvNE zG!?=L3=J;HiHXz)Tldx41v@~&AIcCY9hPg52|e>dm4Rzs4>Aev4(gXL__zUCR42C z-uCxxg78i_NfAUwZAtIT=F`#McUi8fElUrjnKFc>J_&>p)w^y!S##ak!R%0r#O|~p z<~Nq$&TE!Ap4NDV>|ODPHHU0c5c%5ijw@mMz4f-nVo|w6m^u?t)0#3Lgh?a#F3cVj z2(GhvK#KjBwt}(1D$TCdW4roaozO zA~O`Oy&1X2su|Kpl$Nea%;q!7i+l^hAaQ2MOgKT%78I`Ri?EU)lEvElS-uOrBL`lD z)Y<9l&-Q!#QzcFWU|~^Pnx9<`9!q)j(kY+NeuCG2zXdJ79ZhGQ=4e-{|4H-QWZ!y=?|J={vA-9*x6rEskApxrOW$ZP3_uPW3(cV*d-wbrfzKW{2bPP>%4c*o^>*76}nG zMx7|HaTMkMM{2Nsly1`H@Xgt}sr})e)x@o%#J?q+#%EJ*EwKE>W*A#?dr%ZN7-9LM zZc~17sDO5MKyX6HR&n3kw-bzTfu#0iAB}KajS=S{bLJ8Nm*tBM3`9uh+>r`bb5%;= z(q*{_MX7jG7DsrM_TVIlBR(XcD!%8HT4crYRDxDqr$Ycfu8Z_r`k!1}r!u%QRXM_Q zT%qkSU#rYlC>Nf%pPGD`mlXVKFr0I!dm>iAvNZS*($ukj@Y?5IOXm4dzYJ*Q7OSE6 zsXd$}AGxj70+@aiS9fR#S!JTtiFI$}SIc*F$Dg^lLKL25zBNkb{|`H2g*Ko5H6<=^ z@UvGA7$$EJ@VQe)t}r-3x_{^QuL$qid8X-q#aWl?AVxG!=^*#kL^_V7@Da1dmQ zmmmz>XS#Jxs_W8{|HvsV$f$2BM3sidfy4sS8CS%uy4wJ+CER1`IyA>VA2X|jm{1pixg6(uMO_}?{^^9z3qQznvr{1LI zbA2C4JUZr}@$x0~>zVcVl({!Fnn)gq*5d6bYa7V~7(v+8c{T}>K%+ScA8RFi9Nta` z4+;Ix%ig#7I{>FZes|0uT@Uk-vucpNk}4g93<1!b_>q~I8o`H*^K2?iFMW6PbrP#l z9#@j7^=41I4=6#edb1Eb2HNFq*|`4!RMQ3unQt|z%hS+cV_8L5k9Xz-EApMhWErmM z8ujGtX>AO^KF_6GLQ&F*){yAeuM0=4sd>%8+J31<3StNQY}VGqufPKxY3n4jYwh&jW{tVR{{!h}3i9l`jyQgGb75>2i|T za9jox#KbH}y0MeUW|NfbrE8bSx?x=G{! z{*1@f!JZ@LE{=(%UoT0T@_77HsR{De{_t8H$6|k!THX4bZ2-h^j0t-CVQM&o|P{JOhl{E1mvv{aOT3O*irHZPj@}u~I(k zNaJg_Qo%CK?r02tQb*j@#DVK<(eY%l&W*I&U+LPWeHmO90}x=#DbX9Z5%je4z0;&9 zVaJu;;P6E}Y%wXc22q|RI(!egSGQIPW;EyiQ*Uzh$667epBbdT9j)x1OYIxIAPVyb zoBql)YxiYJs}v)f-EA=AF$`35r_@rdTIF80842jOh7=c4fy(kzDJdl{UC82)ShV2l=~TnvN9Adkd=-&q!`+ChBzg$+wxtH%LWosZ3KdrCO+soL4FGhW zi^k_q9L#3D?n$iwA$AY}=!okcNxEmu?w2A|7y0L?p*O_#{Qg!D|7DGDt5Grgc@D=$ ze*kA&f=>vePTuPM2e)#wpB6H(^#p}CA!`|SVGzHxtL<;`69?WVTy~_E ztMcN2rw(|K)>2_lIldBQ-V}!e1*IE66p*&UchEe$?-d8uPN&HyM<})LPisE6p1G|A zGg`3@8|Sro^3ND0lP()?wY%^>m4ta2lHw+jg*#aX9VO2f{P`>@lf`??Eb-}7^N2GiD0{t@R{+7N}H z2d|!tBQfg78J8fSRi*|^V=3gx;`OULMy(;+uMFgd)$WkcOrs@^PIILB5z{kl-frF| z`og}Um&E*`v!we8&esvTJ40&nT1r}M z%p+p^`i+NPX8%xdrIUHwTneGn4c_C?PU;MJ6C6$|^4GuAn+RqdCDGdsfxqt}B0arS zJUC{pm*T_0&MVLZqLSrGHM+-aHsITd@Iu5GiO` zRlSs$OU4R0)mR?84sM0hDpX@^j{&|>&j3e2xW58%Pb(t&4o>Zskyd_7JLIh1@u9>E zLT-%k5H*R@w3v>hEb^4Vv_1eI`i!{_DLn=Su=s#H|0jh)gExgAH4WEZg<+@7jJ(Mo zpDh#NjlH9x2&OX_#Cy7f7Azu9Xujo#QhX}O-D_1|Wz)??-(@>cFC9RK%P=7l5rME3`(|GcqfIKa}l=9Mz}bLbngH>>;57ccue3;b%=vg2uhJle5&P zUyVL7WMMDoITo=RjfYn+Bf9WYe$Ux1IPEc1a>+xn60zirm6eDvuUVucap^q2nWAth zn9M16GO|QRnd0MtWu9QJ5LVq~_fZY9_Xj1pIn=$75&j2(&#qEMpoGxX-hr#E&%oYS zMhf_<5p*;#{Y|#V=Gsm;^r;#KC}I*eozu|xuPT>h`e1L(Wm%Fx>r(jR&o@RU2MPxb z!==ud?BC4>?dRk*E9<&m_&rC=#*AxOIhG&lR$2g|*|MubeTHF7ew7kGaxAX*r8^WW zL_`eXl%_7Axr$^_Slz&EAC)QHizOw=+*JK)GuWBPd7+CVg-#@b+g7#3F)R(v06J0q zlB={_!xM3}#$y_mbl+LZ6NcSX@NJ&s*iIBiGx68wTd*$k!SRl*ABfp=81yv!<8hdt ziNRA9aToo@e1f~yl@NTbf{Hdv{wfElJ6L=p|~5M3b|Xt*3Aa#BlH6cQvy^% z^$76Ys-9?q3K4gE5lTMxg-*+7F@1>@Fgk>4eSOT<&@Pk4$HRdkjXrKPM+L2MJo%>M zGN+h9kAi%##z|{6TM+ZxVnhQ!Y|c2pulj5ankHAw)``!Fq!)oS?P#T~n|hl$z!r#M zgY`QGqp$*Ij-!^apmYSA(kJ;YQQ(%JT{YiUjq0&tXr}0>7XG~8@)X8%nMTk?iX7Yh zos>iD z?t<%p5CEY>^+~fJ*iyv3#ba|nQ9PI9bXUtE$UewL`>=h~r^hb&7oTLM_4pqA2-moX zT(s!n^oy$UY)neLYBm9tc(pcB4au;TJ_R@QqTzk^7Sax=bdY~2f4G*|aVs?BzXoKf zHzJ*SZv`<-R5&+dgKZR)G<6p8;Q9}7P|7(Wh-b*O4U`rA%r?}u^dC+#4O1Lc> zn%$ZCM%*C?`39CKYVfGi=*i z>g}^KR>#AiA#JSiFnQ@oQT>;LYh)nPcBVO+=BH4#7K{VjG_dks>hHAAku^> zrGQWvV147O}8(6DcGWeTGPg}Lq^20p^BIQDkA6g#iC17 zMy39KQF{28!eY-HsidsxFC%J*1YTpMJIIiW8sExsDZ2+5Wk4=L5+V#4>VY@v9h`qP zu@$bZem?KguO3hkfpG9aru*^tZ^uV-DJ0XCAcw!jv2Vl@4afHxSuPLK~x7?$PH>A2swx`_f zQNs-{jMxB$>b&&5^N#vWWoqNaIlLebB>U?SenKUOv6;?0H&y?dB|KnN`Nshf4 zCFP3C`c<~h%7;d-2`9~sZZR#;i#Jj&?A=@M%h6oJ$p#y_2F}|C{c2_(UZd)g^6fgY zXbTYK)C3D>a|PlwORJLotINJ1IoJ6HD-g}r(uoavvbqn7K@!#9&S#L}R9 zYc9EsHR;@oU2kC}BB^EXpo{f0a{~f@Nd3*?1NlGgCe9uZQP2M?J0_Tt>4lw|PNX%G z;8d|-jgo}vz39-mhbnj)kWQ!l$ggERWvmi7-eIf(w>$2c?ob1hURbolpQPcEKt;aQ zwWgo=$p9DkgZ%By$EzjN8W`%WEyFrAq}x>4r*;$Wy~I&LxZ?}-3Lm((0SvZ6x1f6P zF|J2FpvdGG2~@w&@k9fX69P?rVq&?Rp*+n6#HL4dy|-h(t)I_PQ)Sw?fFjmj(srfn z%|OZLBv)DSCr6`IYrvYO5?Lhp#m*s`W`O2wNxydW$UKzuQoE%{W{Y5T6yXO$3{~s# za1{GEueFZDkSv8brqs1gH^We3$X;_>ki7>y;q91*+|=W77wKX~=J^;`F7;^CK7QcG zhLMEP;WlAn(9iL~i4!yv$j984yhd(Zz4F~$<18C_N}UT2n&t7-?$CKMr}N|zN2V1D zw-T*8j~U=L0V{FOTe$WVc(<~7iDi8|6B&v$-u7eKvO24>B{ArG+n!pk9hZtRhTl2l=Vd;p>099j4(_^$o_9K`TxP&KqoJ zC36d|D9v<^K{MFZyVBm-KWlewrl>I_G2%kQX!2X3kOuKobl8Wh33oA2SF_P`zZa(X zQiEdW(XSTRkGfSEk)621Nj$ZmOh;xk-o}JzOe?LIro|KuW88Tx?7}k*`#3=<%H@zB za>bh~k;t4YnHAQ)yW>Bl8|*&;%L&-&gj?#{)~_}XmCxA4+J_Y;r*9pAaZOIbmo*(E zrVW;+_xv!tocB`Ks2@0ZBX51;mM&HVY$s>Lp(h;y2w=2=rEwfl6~kSl3msC#q-=F< z(x{i+w$WP{HGOh7QwQdI-pw>!Fa8bsv&%7{Mmv{&<&&C&i5-Med~J{60+-rJ(x8C8 zxZcGR6y6hM%?{njBN}!lJfrJ;LErkDwWaY&>}y)9THQ$ZlM60%e5ZiYsY};qy>uYs zLa>@~JtHt+Dvij@rh81)c)7PvE1kZ3%ah8%u}#?<>NetIbFNP!ST619cD| z;=-AKcfW4pT@(=JX+*-{kXHyp6)>kv)nOb^{k8CgPyjd*X0xWdpA{L5NrNJfw$Z!Q z_g6kTr{^ZwYpmx4Jx+2Ht*wDH(0(2E@~SxVV%!vq^7KN$cWR&*CUq<WB5)f zhJQA55=PrefE}b#Qck z>+%|_Z)1v)x#o(WiWJLW7;P!T{ANK(U1c*%ujc`)WDDafM-ydONM=jq zaSK3EYjLjCv&uiG_lmhURkEk0zPlG&9Y_+x=++s{_i;J3GbdxXD{k7JOjr2O`a-qv zSN)lypQ=xpt5VglP{5ez8$W^g0?T$pDl%0W#CHFIo`JWP@81)hZ0&Xa3TRgFr)-nM zR1Ks=%fqe$kIs=^Yyhn=A7W+vgjz=VkR7{X3KO$M)2A|9^Uw7s3c&WEl{~+|t?s1Y zvU*@O2kO|65=oz5Y0!}aoyVK8Qnd0nZomfO%7JBm#Sl9Ue7&FRc&x z5KOp*YaH$y7?0%K<#semmm^V}F)zh*m6F_2F*E)BqcU(2$w;n#sutD(!eA;Nz6p4i z3L;;yOqtX`>u(-5IN|KP55Fh*>ak5`JC!`(QjY4%&zdO_dSgApGk*z@h&TBp-i%lM z72`2wE-eH9hB!DZZK2uz# zVmSUhohL88K*av(dG57d3wB8WgxcSK#T@2KpnT8BJW!K(s->}lR9@5-tmN9aJW;1K z%5`|lFgapm!NNPzg#A z`is_7;8DWLHk4l5D2a^Pw#qMBT{0B;060^2_Hekn{=T%EPIrsmU^L$}$a7u+!nCu{XT z3H5ug<(RGm+X}zlNT!H5@wJvRv9TVeNu21DlNEPk#bzz|(o^e>?&jE+uY}t>9dr3k zm)#!E>hor`mC(-a=_sfindmb%iY<>0r9caCSkyia)G~9Wn$f-kgn0*dRg!^M9I@*E zuo`x6ZGel5NM19`(kOemd*06>+gUQAv9!GEUrR-_49a%iU%HSKy6NWw;I>DKrs@d| zQ`KmwUXN2f>F1AV`iR0XIC9+IIqP)s)%37a`h6kGPLW#pWf^2RA*R8eOKwS>Ys|D_ zzF!XM@qaw0GXpE@Y8=n`Zc~OWgGknmpw<$uvM+tv!qqh^V##dFxj$N(t7idRueYQM z@zF)y0V*;I0u_wHQvc9hkIReArj*y)XQ-n_9{|CnQ_6iOk`xZ71*h|*7I(*8E5S|f z*&tH2*-`H?KX*FT4W~Qc&rMA&#H=%BoKKgcC~^iD#YC& zZ3bGx?>9m{LA?L$@I)v_Qeh^FI$ir;XC;T|xGqV6eG%O8-dD@vyF;TTClZ~$#E7qioZA>a42mRYjUQ0egEfT9mp3}}lxsDtrf5sAJxcu~Zx)=l^ zj@N@A4x!g5V$0xw9PIv(1P~YfZFk$f;D83`Ywmg`9bRNORb>}YrDX4+t7AXtgph#) zg1+RH<@(dJ;?}!oJO-r|{iYh&@{8rip;@z#_D}8

8CMrnj~nRXH%*IDsJ{zzgF5 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

E-HLR18RO=8iYbabwYAe7!srtjBG``xS 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

>Rh|jj2)VSLT1S9s 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 off any network communications in the app. It might be helpful to save traffic. Database actions App settings + Offline mode is turned off. You can change it in the settings. Search manufacturer