From 232ebfdc8414151149406dff3bead8c33071c39e Mon Sep 17 00:00:00 2001 From: Pauljd Date: Sun, 1 Nov 2026 21:59:35 +0000 Subject: [PATCH] Add library health check, channel logos and remote controls (0.22.0) A read-only check of duplicates, decades, genres and filter speed, with no database change. Gives 101, 102 and 103 their logos and an on-screen mark, and makes up, down and left change channel while watching. Co-Authored-By: Claude Opus 5.5 (1M context) --- VERIFICATION-0.22.0.md | 15 ++++++ android/app/build.gradle.kts | 4 +- .../java/tv/orbit/classic/CatalogueScreen.kt | 3 +- .../java/tv/orbit/classic/CatalogueStats.kt | 48 ++++++++++++++++++ .../java/tv/orbit/classic/CatalogueStore.kt | 27 ++++++++++ .../java/tv/orbit/classic/ChannelBranding.kt | 15 +++++- .../tv/orbit/classic/ClassicProgrammeStrip.kt | 4 +- .../main/java/tv/orbit/classic/EmbyClient.kt | 2 +- .../tv/orbit/classic/EmbyConnectionScreen.kt | 39 ++++++++++++-- .../tv/orbit/classic/EmbyPlaybackDialog.kt | 14 ++++- .../tv/orbit/classic/LibraryHealthScreen.kt | 48 ++++++++++++++++++ .../tv/orbit/classic/SampleChannelScreens.kt | 8 +-- .../tv/orbit/classic/SecureMediaDataSource.kt | 2 +- .../tv/orbit/classic/SeriesReviewScreen.kt | 2 +- .../drawable-nodpi/orbit_after_dark_bug.webp | Bin 0 -> 3676 bytes .../drawable-nodpi/orbit_one_background.webp | Bin 0 -> 42550 bytes .../res/drawable-nodpi/orbit_one_bug.webp | Bin 0 -> 1508 bytes .../res/drawable-nodpi/orbit_one_epg.webp | Bin 0 -> 2900 bytes .../res/drawable-nodpi/vortex_background.webp | Bin 0 -> 67956 bytes .../main/res/drawable-nodpi/vortex_bug.webp | Bin 0 -> 3890 bytes .../main/res/drawable-nodpi/vortex_epg.webp | Bin 0 -> 6176 bytes .../tv/orbit/classic/CatalogueStatsTest.kt | 42 +++++++++++++++ 22 files changed, 252 insertions(+), 21 deletions(-) create mode 100644 VERIFICATION-0.22.0.md create mode 100644 android/app/src/main/java/tv/orbit/classic/CatalogueStats.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/LibraryHealthScreen.kt create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_after_dark_bug.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_one_background.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_one_bug.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_one_epg.webp create mode 100644 android/app/src/main/res/drawable-nodpi/vortex_background.webp create mode 100644 android/app/src/main/res/drawable-nodpi/vortex_bug.webp create mode 100644 android/app/src/main/res/drawable-nodpi/vortex_epg.webp create mode 100644 android/app/src/test/java/tv/orbit/classic/CatalogueStatsTest.kt diff --git a/VERIFICATION-0.22.0.md b/VERIFICATION-0.22.0.md new file mode 100644 index 0000000..0daed13 --- /dev/null +++ b/VERIFICATION-0.22.0.md @@ -0,0 +1,15 @@ +# Orbit TV 0.22.0 — library health check and test channel + +Approved scope: a read-only baseline of the imported catalogue, with no migration, plus channel logos and Paul's remote controls on the existing channels. + +Library health check: Menu → Connect Emby → Library import test → Health check → Run check. One pass over saved rows counts titles, likely copies by external ID (Imdb, then Tmdb, then Tvdb, per type), distinct titles by normalised title and year, decades, top genres and tags, then times five filters. It uses readableDatabase, writes nothing, stays at database version 2 and makes no network request. Counts are "likely": title matching can over-group or under-group, and the check merges nothing. The pass holds short keys in memory; its memory use on the box wasn't measured. + +Channels: 101 shows as Orbit 1 and 103 as Vortex, display only, as approved in the roadmap. Saved names and numbers are unchanged, so timelines are too. All three now have a guide logo, background and tuning screen, and a bottom-left mark at 80% opacity, hidden while the programme bar is up. There's no setting for the mark yet, so it's always on for this test. + +Remote while watching a channel: up and channel-up go to the next channel, down and channel-down to the previous one, wrapping round. Left returns to the last channel. The programme bar's legend now matches, and its subtitle label is gone because that control isn't built. On-demand sample playback keeps its seek behaviour. + +Not in this build: idents in the app, subtitles on right, the hold-OK number box, the new home screen, or any use of the catalogue by channels. + +Validation: offline assembleDebug, testDebugUnitTest and lintDebug passed; 119 unit tests (113 existing, 6 new), zero failures or errors, no lint errors. New tests cover copy grouping, remakes, spelling, broken IDs, film and series sharing a number, counts, and channel wrap-round. SQLite queries, the screen, the mark on real video and the remote need the Xiaomi test. No private account, catalogue, media or device data was read by tools. + +Rollback: reinstall outputs/revision-0.21.0, as the database and saved format are unchanged, or revert this commit. diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index fa84ff4..fec58c0 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -9,8 +9,8 @@ android { applicationId = "tv.orbit.classic" minSdk = 26 targetSdk = 36 - versionCode = 21 - versionName = "0.21.0-import-position" + versionCode = 22 + versionName = "0.22.0-library-health" } buildFeatures { compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_17; targetCompatibility = JavaVersion.VERSION_17 } diff --git a/android/app/src/main/java/tv/orbit/classic/CatalogueScreen.kt b/android/app/src/main/java/tv/orbit/classic/CatalogueScreen.kt index 4672002..2bb4894 100644 --- a/android/app/src/main/java/tv/orbit/classic/CatalogueScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/CatalogueScreen.kt @@ -21,7 +21,7 @@ private fun whole(value: Long) = String.format(Locale.UK, "%,d", value) @Composable internal fun CatalogueScreen(summary: CatalogueSummary?, busy: Boolean, canRun: Boolean, message: String?, lastRun: String?, - modifier: Modifier, onRun: (Boolean) -> Unit, onBack: () -> Unit) { + modifier: Modifier, onRun: (Boolean) -> Unit, onBack: () -> Unit, onHealth: () -> Unit = {}) { BackHandler(onBack = onBack) val backFocus = remember { FocusRequester() } LaunchedEffect(Unit) { backFocus.requestFocus() } @@ -37,6 +37,7 @@ internal fun CatalogueScreen(summary: CatalogueSummary?, busy: Boolean, canRun: Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { OrbitButton(if (busy) "Importing…" else if (summary?.finished == true) "Import finished" else "Import everything", enabled = canRun && summary?.finished != true, onClick = { onRun(true) }) OrbitButton("Import next 1,000", enabled = canRun && summary?.finished != true, onClick = { onRun(false) }) + OrbitButton("Health check", enabled = !busy, onClick = onHealth) OrbitButton("Back", Modifier.focusRequester(backFocus), onClick = onBack) } message?.let { Text(it, color = Yellow, fontSize = 15.sp, maxLines = 3) } diff --git a/android/app/src/main/java/tv/orbit/classic/CatalogueStats.kt b/android/app/src/main/java/tv/orbit/classic/CatalogueStats.kt new file mode 100644 index 0000000..511f450 --- /dev/null +++ b/android/app/src/main/java/tv/orbit/classic/CatalogueStats.kt @@ -0,0 +1,48 @@ +package tv.orbit.classic + +import org.json.JSONObject +import java.util.Locale + +internal data class CatalogueTiming(val label: String, val count: Long, val ms: Long) +internal data class CatalogueHealth(val titles: Long, val distinctById: Long, val distinctByTitle: Long, val repeatedById: Long, val withoutId: Long, + val decades: List>, val genres: List>, val tags: List>, + val scanMs: Long, val timings: List, val bytes: Long) + +private val IdOrder = listOf("Imdb", "Tmdb", "Tvdb") + +/** The strongest external ID, per type, because a film and a series can share a number on some sites. */ +internal fun catalogueIdKey(type: String, providerIds: String): String? { + val ids = try { JSONObject(providerIds) } catch (_: Exception) { return null } + val match = IdOrder.firstNotNullOfOrNull { name -> ids.optString(name).takeIf { it.isNotBlank() }?.let { "$name:${it.lowercase(Locale.ROOT)}" } } ?: return null + return "$type|$match" +} + +/** Case, punctuation and a leading article don't make a different title. The year keeps remakes apart. */ +internal fun catalogueTitleKey(type: String, title: String, year: Int?): String { + val letters = title.lowercase(Locale.ROOT).map { if (it.isLetterOrDigit()) it else ' ' }.joinToString("").trim().replace(Regex(" +"), " ") + return "$type|${letters.removePrefix("the ")}|${year ?: "?"}" +} + +/** Holds counts and short keys only, so a pass over the whole catalogue stays small. */ +internal class CatalogueTally { + private var titles = 0L + private var withoutId = 0L + private val byId = HashMap() + private val byTitle = HashSet() + private val decades = HashMap() + private val genres = HashMap() + private val tags = HashMap() + fun add(type: String, title: String, year: Int?, genreList: String, tagList: String, providerIds: String) { + titles++ + val key = catalogueIdKey(type, providerIds) + if (key == null) withoutId++ else byId.merge(key, 1, Int::plus) + byTitle += catalogueTitleKey(type, title, year) + year?.let { decades.merge(it / 10 * 10, 1L, Long::plus) } + genreList.split('|').filter { it.isNotBlank() }.forEach { genres.merge(it, 1L, Long::plus) } + tagList.split('|').filter { it.isNotBlank() }.forEach { tags.merge(it.lowercase(Locale.ROOT), 1L, Long::plus) } + } + private fun top(map: Map, limit: Int) = map.entries.sortedByDescending { it.value }.take(limit).map { it.key to it.value } + fun result(scanMs: Long, timings: List, bytes: Long) = CatalogueHealth(titles, byId.size + withoutId, byTitle.size.toLong(), + byId.values.sumOf { (it - 1).toLong() }, withoutId, decades.entries.sortedBy { it.key }.map { "${it.key}s" to it.value }, + top(genres, 8), top(tags, 8), scanMs, timings, bytes) +} diff --git a/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt b/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt index 08e0ead..e3e32a8 100644 --- a/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt +++ b/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt @@ -64,6 +64,33 @@ internal class CatalogueStore private constructor(context: Context) : CatalogueS total, meta(db, "finished") == "true" && total != null, count("genres != ''"), count("provider_ids != '{}'"), count("year IS NOT NULL"), count("rating != ''"), count("premiere != ''"), count("tags != ''"), file.length()) } + /** Read-only: one pass over the saved rows and a few timed filters. It writes nothing and changes no table. */ + @Synchronized fun health(checkActive: () -> Unit = {}): CatalogueHealth { + val began = System.currentTimeMillis() + val db = readableDatabase + val tally = CatalogueTally() + db.rawQuery("SELECT type, title, year, genres, tags, provider_ids FROM items", null).use { row -> + var seen = 0 + while (row.moveToNext()) { + if (++seen % 2000 == 0) checkActive() + tally.add(row.getString(0), row.getString(1), if (row.isNull(2)) null else row.getInt(2), row.getString(3), row.getString(4), row.getString(5)) + } + } + val scanMs = System.currentTimeMillis() - began + fun timed(label: String, sql: String, vararg args: String): CatalogueTiming { + checkActive() + val start = System.currentTimeMillis() + val count = db.rawQuery(sql, args).use { it.moveToFirst(); it.getLong(0) } + return CatalogueTiming(label, count, System.currentTimeMillis() - start) + } + val timings = listOf( + timed("Horror films, 1980s", "SELECT COUNT(*) FROM items WHERE type = 'Movie' AND year BETWEEN 1980 AND 1989 AND ('|' || genres || '|') LIKE '%|Horror|%'"), + timed("Animated series", "SELECT COUNT(*) FROM items WHERE type = 'Series' AND ('|' || genres || '|') LIKE '%|Animation|%'"), + timed("Documentaries", "SELECT COUNT(*) FROM items WHERE ('|' || genres || '|') LIKE '%|Documentary|%'"), + timed("Title search", "SELECT COUNT(*) FROM items WHERE title LIKE ?", "%Star%"), + timed("Lookup by title", "SELECT COUNT(*) FROM items WHERE type = 'Series' AND title = ?", "Fixture")) + return tally.result(scanMs, timings, file.length()) + } @Synchronized fun clear() { close() if (file.exists() && !SQLiteDatabase.deleteDatabase(file)) throw IllegalStateException("The catalogue could not be removed.") diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt b/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt index d2c84df..bfb5ce4 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt @@ -1,11 +1,22 @@ package tv.orbit.classic -internal data class ChannelBranding(val presetId: String, val logo: Int, val background: Int) +internal data class ChannelBranding(val presetId: String, val displayName: String, val logo: Int, val background: Int, val bug: Int) internal object ChannelBrands { - private val brands = mapOf(102 to ChannelBranding("orbit-after-dark", R.drawable.orbit_after_dark_epg, R.drawable.orbit_after_dark_background)) + private val brands = mapOf( + 101 to ChannelBranding("orbit-1", "Orbit 1", R.drawable.orbit_one_epg, R.drawable.orbit_one_background, R.drawable.orbit_one_bug), + 102 to ChannelBranding("orbit-after-dark", "Orbit After Dark", R.drawable.orbit_after_dark_epg, R.drawable.orbit_after_dark_background, R.drawable.orbit_after_dark_bug), + 103 to ChannelBranding("vortex", "Vortex", R.drawable.vortex_epg, R.drawable.vortex_background, R.drawable.vortex_bug)) fun forNumber(number: Int): ChannelBranding? = brands[number] + /** Saved channels keep their original names; what the viewer sees comes from the brand. */ + fun displayName(channel: SampleChannel) = brands[channel.number]?.displayName ?: channel.name } internal fun availableSampleChannels(vararg channels: SampleChannel?): List = channels.filterNotNull().distinctBy { it.number }.sortedBy { it.number } + +/** Up and down wrap round the lineup, like a TV. A channel missing from the lineup stays put. */ +internal fun channelAfter(numbers: List, current: Int, step: Int): Int { + val index = numbers.indexOf(current) + return if (index < 0 || numbers.isEmpty()) current else numbers[Math.floorMod(index + step, numbers.size)] +} diff --git a/android/app/src/main/java/tv/orbit/classic/ClassicProgrammeStrip.kt b/android/app/src/main/java/tv/orbit/classic/ClassicProgrammeStrip.kt index 44c8f0d..34309ef 100644 --- a/android/app/src/main/java/tv/orbit/classic/ClassicProgrammeStrip.kt +++ b/android/app/src/main/java/tv/orbit/classic/ClassicProgrammeStrip.kt @@ -25,7 +25,7 @@ internal fun ClassicProgrammeStrip(item: SampleItem, playing: Boolean, modifier: val paper = Color(0xFFE8EDF5) Column(modifier.border(1.dp, paper)) { Row(Modifier.fillMaxWidth().background(paper).padding(horizontal = 12.dp, vertical = 3.dp), verticalAlignment = Alignment.CenterVertically) { - Text(scheduled?.let { "${it.channel.number} ${it.channel.name}${if (it.clockOffsetMs != 0L) " / Transition check" else ""}" } ?: "Orbit Preview", color = Navy, fontWeight = FontWeight.Bold, fontSize = 14.sp) + Text(scheduled?.let { "${it.channel.number} ${ChannelBrands.displayName(it.channel)}${if (it.clockOffsetMs != 0L) " / Transition check" else ""}" } ?: "Orbit Preview", color = Navy, fontWeight = FontWeight.Bold, fontSize = 14.sp) Spacer(Modifier.weight(1f)) Text(SimpleDateFormat("HH:mm EEE d MMM", Locale.UK).format(Date(now)), color = Navy, fontSize = 13.sp) } @@ -44,7 +44,7 @@ internal fun ClassicProgrammeStrip(item: SampleItem, playing: Boolean, modifier: horizontalArrangement = Arrangement.spacedBy(30.dp), verticalAlignment = Alignment.CenterVertically) { Legend("▲ ▼", "Channel") Legend("↶", "TV guide") - Legend("CC", "Subtitles") + if (scheduled != null) Legend("◄", "Last channel") } } } diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt index c097b64..e596d77 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt @@ -41,7 +41,7 @@ internal class HttpsEmbyTransport(internal val deviceId: String = UUID.randomUUI connection.connectTimeout = 10_000 connection.readTimeout = request.readTimeoutMs ?: if (request.path == "/Sessions/Logout") 5_000 else 15_000 connection.setRequestProperty("Accept", "application/json") - connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.21.0\"") + connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.22.0\"") request.token?.let { connection.setRequestProperty("X-Emby-Token", it) } if (request.method == "POST") { val bytes = request.body.orEmpty().toByteArray(Charsets.UTF_8) diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt index 9deffd6..46d181b 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt @@ -80,6 +80,9 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea var catalogueSummary by remember { mutableStateOf(null) } var catalogueRun by remember { mutableStateOf(null) } var reviewingCatalogue by remember { mutableStateOf(false) } + var reviewingHealth by remember { mutableStateOf(false) } + var libraryHealth by remember { mutableStateOf(null) } + var lastNumber by remember { mutableStateOf(null) } var afterDarkChannel by remember { mutableStateOf(null) } var toonamiChannel by remember { mutableStateOf(null) } var selectedNumber by remember { mutableIntStateOf(101) } @@ -121,7 +124,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea } seriesMatches = null; episodeSamples = null; reviewingSeries = false; approvedSeries = emptySet() darkMovies = emptyList(); approvedDark = emptySet(); reviewingDark = false; afterDarkChannel = null - metadataCoverage = null; reviewingCoverage = false; reviewingCatalogue = false; catalogueSummary = null; catalogueRun = null + metadataCoverage = null; reviewingCoverage = false; reviewingCatalogue = false; catalogueSummary = null; catalogueRun = null; reviewingHealth = false; libraryHealth = null; lastNumber = null playback = null; session = null; sample = null; channel = null; toonamiChannel = null; selectedNumber = 101; watchingChannel = false onChannelAvailable(false) sessionSlot.clear()?.let { active -> EmbyCleanup.run { active.close() } } @@ -218,14 +221,40 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea val liveChannel = availableChannels.firstOrNull { it.number == selectedNumber } if (mainGuide && liveSession != null && liveChannel != null) { if (watchingChannel) ScheduledChannelPlayer(liveSession, liveChannel, channelClockOffset, - onClose = { watchingChannel = false; channelClockOffset = 0 }) + onClose = { watchingChannel = false; channelClockOffset = 0 }, + onStep = { step -> + val next = channelAfter(availableChannels.map { it.number }, selectedNumber, step) + if (next != selectedNumber) { lastNumber = selectedNumber; selectedNumber = next; channelClockOffset = 0 } + }, + onLast = { + val previous = lastNumber + if (previous != null && availableChannels.any { it.number == previous }) { lastNumber = selectedNumber; selectedNumber = previous; channelClockOffset = 0 } + }) SampleChannelGuide(liveChannel, modifier, onTune = { offset -> channelClockOffset = offset; watchingChannel = true }, onBack = onBack, otherChannels = availableChannels.filter { it.number != selectedNumber }, - onSwitch = { selectedNumber = it; watchingChannel = false; channelClockOffset = 0 }) + onSwitch = { lastNumber = selectedNumber; selectedNumber = it; watchingChannel = false; channelClockOffset = 0 }) return } if (!visible) return + if (reviewingHealth) { + LibraryHealthScreen(libraryHealth, busy, message, modifier, onRun = { + if (!busy) { + busy = true; message = null + job = scope.launch { + try { + libraryHealth = withContext(Dispatchers.IO) { + val context = coroutineContext + catalogue.health { context.ensureActive() } + } + } catch (cancelled: CancellationException) { throw cancelled } + catch (_: Exception) { message = "The check could not finish. Your library data hasn't changed." } + finally { busy = false } + } + } + }, onBack = { job?.cancel(); busy = false; reviewingHealth = false }) + return + } if (reviewingCatalogue) { LaunchedEffect(Unit) { try { catalogueSummary = withContext(Dispatchers.IO) { catalogue.summary() } } @@ -262,7 +291,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea } } } - }, onBack = { job?.cancel(); busy = false; reviewingCatalogue = false }) + }, onBack = { job?.cancel(); busy = false; reviewingCatalogue = false }, onHealth = { message = null; reviewingHealth = true }) return } if (reviewingCoverage) { @@ -502,7 +531,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea }) OrbitButton("102 Orbit After Dark — choose films", Modifier.fillMaxWidth(), enabled = !busy && session != null, onClick = { message = null; reviewingDark = true }) - OrbitButton(if (seriesMatches == null) "103 Toonami — check shortlist" else "103 Toonami — review matches", + OrbitButton(if (seriesMatches == null) "103 Vortex — check shortlist" else "103 Vortex — review matches", Modifier.fillMaxWidth(), enabled = !busy && session != null, onClick = { if (seriesMatches != null) reviewingSeries = true else checkMoreSeries() }) diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackDialog.kt b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackDialog.kt index a3aaae6..176e13f 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackDialog.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackDialog.kt @@ -25,6 +25,8 @@ import androidx.media3.datasource.DataSource import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.source.DefaultMediaSourceFactory import androidx.media3.ui.PlayerView +import androidx.compose.foundation.Image +import androidx.compose.ui.res.painterResource import androidx.tv.material3.Text import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -32,7 +34,8 @@ import kotlinx.coroutines.withContext @androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class) @Composable -internal fun EmbyPlaybackDialog(session: EmbySampleSession, plan: EmbyPlaybackPlan, onClose: () -> Unit, scheduled: ScheduledPlayback? = null) { +internal fun EmbyPlaybackDialog(session: EmbySampleSession, plan: EmbyPlaybackPlan, onClose: () -> Unit, scheduled: ScheduledPlayback? = null, + onStep: (Int) -> Unit = {}, onLast: () -> Unit = {}) { val context = LocalContext.current var failure by remember { mutableStateOf(null) } var tuningNumberVisible by remember { mutableStateOf(true) } @@ -130,7 +133,10 @@ internal fun EmbyPlaybackDialog(session: EmbySampleSession, plan: EmbyPlaybackPl KeyEvent.KEYCODE_DPAD_CENTER, KeyEvent.KEYCODE_ENTER -> { if (scheduled == null && infoVisible) { if (player.isPlaying) player.pause() else player.play() } } - KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_MEDIA_REWIND -> if (scheduled == null) player.seekBack() + KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_CHANNEL_UP -> if (scheduled != null) onStep(1) + KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_CHANNEL_DOWN -> if (scheduled != null) onStep(-1) + KeyEvent.KEYCODE_DPAD_LEFT -> if (scheduled != null) onLast() else player.seekBack() + KeyEvent.KEYCODE_MEDIA_REWIND -> if (scheduled == null) player.seekBack() KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_MEDIA_FAST_FORWARD -> if (scheduled == null) player.seekForward() KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> if (scheduled == null) { if (player.isPlaying) player.pause() else player.play() } KeyEvent.KEYCODE_MEDIA_PLAY -> player.play() @@ -152,6 +158,10 @@ internal fun EmbyPlaybackDialog(session: EmbySampleSession, plan: EmbyPlaybackPl if (scheduled != null && ready && tuningNumberVisible && failure == null) ClassicTuningNumber(scheduled.channel.number, Modifier.align(Alignment.TopEnd).padding(top = 32.dp, end = 44.dp)) + // The channel's mark, off while the programme bar is up. It's drawn over the picture, never into it. + val bug = scheduled?.let { ChannelBrands.forNumber(it.channel.number)?.bug } + if (bug != null && ready && !infoVisible && failure == null) + Image(painterResource(bug), null, Modifier.align(Alignment.BottomStart).padding(start = 40.dp, bottom = 28.dp).width(108.dp).height(36.dp), alpha = .8f) if (infoVisible && failure == null && ready) ClassicProgrammeStrip(plan.item, playing, Modifier.align(Alignment.BottomCenter).fillMaxWidth(.86f).padding(bottom = 26.dp), scheduled = scheduled) if (failure != null) Column(Modifier.align(Alignment.Center).widthIn(max = 620.dp).background(Navy).padding(24.dp)) { diff --git a/android/app/src/main/java/tv/orbit/classic/LibraryHealthScreen.kt b/android/app/src/main/java/tv/orbit/classic/LibraryHealthScreen.kt new file mode 100644 index 0000000..6e482fc --- /dev/null +++ b/android/app/src/main/java/tv/orbit/classic/LibraryHealthScreen.kt @@ -0,0 +1,48 @@ +package tv.orbit.classic + +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.tv.material3.Text +import java.util.Locale + +private fun whole(value: Long) = String.format(Locale.UK, "%,d", value) +private fun pairs(items: List>) = items.joinToString(" • ") { "${it.first} ${whole(it.second)}" } + +@Composable +internal fun LibraryHealthScreen(health: CatalogueHealth?, busy: Boolean, message: String?, modifier: Modifier, onRun: () -> Unit, onBack: () -> Unit) { + BackHandler(onBack = onBack) + val backFocus = remember { FocusRequester() } + LaunchedEffect(Unit) { backFocus.requestFocus() } + Column(modifier.fillMaxWidth().background(Navy).padding(18.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) { + Text("Library health check", color = Yellow, fontSize = 26.sp) + Text("Read-only, using the details saved on this box. Nothing is changed and nothing goes over the network.", color = Color.White, fontSize = 15.sp) + Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { + OrbitButton(if (busy) "Checking…" else if (health == null) "Run check" else "Run again", enabled = !busy, onClick = onRun) + OrbitButton("Back", Modifier.focusRequester(backFocus), onClick = onBack) + } + message?.let { Text(it, color = Yellow, fontSize = 15.sp, maxLines = 2) } + health?.let { h -> + Column(Modifier.fillMaxWidth().background(Panel).padding(10.dp), verticalArrangement = Arrangement.spacedBy(3.dp)) { + Text("${whole(h.titles)} titles: ${whole(h.distinctById)} different by external ID, ${whole(h.distinctByTitle)} by title and year", color = Color.White, fontSize = 17.sp) + Text("Likely extra copies by ID: ${whole(h.repeatedById)} • no ID: ${whole(h.withoutId)}", color = Color.White, fontSize = 15.sp) + Text(pairs(h.decades), color = Muted, fontSize = 13.sp, maxLines = 2) + Text("Genres: ${pairs(h.genres)}", color = Muted, fontSize = 13.sp, maxLines = 2) + Text("Tags: ${pairs(h.tags)}", color = Muted, fontSize = 13.sp, maxLines = 2) + } + Column(Modifier.fillMaxWidth().background(Panel).padding(10.dp), verticalArrangement = Arrangement.spacedBy(2.dp)) { + Text("Full pass ${whole(h.scanMs)} ms • database ${whole(h.bytes / 1024)} KB", color = Color.White, fontSize = 15.sp) + h.timings.forEach { Text("${it.label}: ${whole(it.count)} found, ${whole(it.ms)} ms", color = Muted, fontSize = 14.sp) } + } + } + } +} diff --git a/android/app/src/main/java/tv/orbit/classic/SampleChannelScreens.kt b/android/app/src/main/java/tv/orbit/classic/SampleChannelScreens.kt index 7308780..13f7d68 100644 --- a/android/app/src/main/java/tv/orbit/classic/SampleChannelScreens.kt +++ b/android/app/src/main/java/tv/orbit/classic/SampleChannelScreens.kt @@ -47,13 +47,13 @@ internal fun SampleChannelGuide(channel: SampleChannel, modifier: Modifier = Mod Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { Text("TV Guide", color = Yellow, fontSize = 26.sp, fontWeight = FontWeight.Bold) Spacer(Modifier.weight(1f)) - otherChannels.forEach { other -> OrbitButton("${other.number} ${other.name}", onClick = { onSwitch(other.number) }) } + otherChannels.forEach { other -> OrbitButton("${other.number} ${ChannelBrands.displayName(other)}", onClick = { onSwitch(other.number) }) } Text(clock(now), color = Color.White, fontSize = 20.sp) } Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(16.dp)) { Column(Modifier.width(125.dp)) { Text(channel.number.toString(), color = Yellow, fontSize = 36.sp, fontWeight = FontWeight.Bold) - if (branding != null) Image(painterResource(branding.logo), channel.name, Modifier.width(125.dp).height(40.dp)) + if (branding != null) Image(painterResource(branding.logo), branding.displayName, Modifier.width(125.dp).height(40.dp)) else Text(channel.name, color = Color.White, fontSize = 19.sp) } Column(Modifier.weight(1f)) { @@ -87,7 +87,7 @@ internal fun SampleChannelGuide(channel: SampleChannel, modifier: Modifier = Mod @Composable internal fun ScheduledChannelPlayer(session: EmbySampleSession, channel: SampleChannel, clockOffsetMs: Long, - onClose: () -> Unit) { + onClose: () -> Unit, onStep: (Int) -> Unit = {}, onLast: () -> Unit = {}) { var now by remember { mutableLongStateOf(System.currentTimeMillis() + clockOffsetMs) } LaunchedEffect(channel, clockOffsetMs) { while (true) { now = System.currentTimeMillis() + clockOffsetMs; delay(250) } } val shows = channel.guide(now, 2) @@ -118,7 +118,7 @@ internal fun ScheduledChannelPlayer(session: EmbySampleSession, channel: SampleC if (plan != null) { key(current.startMs) { EmbyPlaybackDialog(session, plan, onClose, - scheduled = ScheduledPlayback(channel, current, shows[1], clockOffsetMs)) + scheduled = ScheduledPlayback(channel, current, shows[1], clockOffsetMs), onStep = onStep, onLast = onLast) } } else Dialog(onDismissRequest = onClose, properties = DialogProperties(usePlatformDefaultWidth = false, decorFitsSystemWindows = false, securePolicy = SecureFlagPolicy.SecureOn)) { diff --git a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt index d71e104..c1e77c6 100644 --- a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt +++ b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt @@ -33,7 +33,7 @@ internal class SecureMediaDataSource(private val session: EmbySampleSession) : B next.instanceFollowRedirects = false next.connectTimeout = 10_000 next.readTimeout = 20_000 - next.setRequestProperty("User-Agent", "OrbitTV/0.21.0") + next.setRequestProperty("User-Agent", "OrbitTV/0.22.0") next.setRequestProperty("Accept-Encoding", "identity") session.mediaHeaders(address).forEach { (key, value) -> next.setRequestProperty(key, value) } if (dataSpec.position != 0L || dataSpec.length != C.LENGTH_UNSET.toLong()) { diff --git a/android/app/src/main/java/tv/orbit/classic/SeriesReviewScreen.kt b/android/app/src/main/java/tv/orbit/classic/SeriesReviewScreen.kt index 2bb688a..7ec22ac 100644 --- a/android/app/src/main/java/tv/orbit/classic/SeriesReviewScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/SeriesReviewScreen.kt @@ -21,7 +21,7 @@ internal fun SeriesReviewScreen(matches: List, approved: SetNk&Fg4gdgGMM6+kP&iCT4gdfzkH8BMRavh8Pmv@iA~PzhtCyLXnVFfH znVFfHnVFfHnVFfHcX+0;rn>6@SvjwA1h=0FS`*~N9Cc1#`n(2-jM0+|CA#OEvz%B9 zw0E{b;6d7M9FlfKD<&ubwPO8|JkEly2KLZ9Vgx_t~}BNy)bDlu}Ad$+m6Vc7EN% zJ!kEGHrHCy+qG?`ZQHi>yuqxvx>bMkVS6XOjAT-n! z8tUm5>V~VYYiJV%WrmZBNFB=wof`=Cb^n!I=v;@PFDy(&1ITwg7+@gWhGIiaCuWI} znPXz+5Scx$Oe}?7B_9F=}ZzP{3L}m(!u|r{ixqcN|4;jrh0vMp| zL<58d$bag9{J3=mFw7%YOrALKFAg|v9I)?p;q*P7KZQ&MqQL}1UwO(HbsVtV)KNe` z;DQ6HVO-e=*LpOpO#&Rd__zQJ4jAaLK7{VO4rm593Ze=`9H878V}=Z8R}h{FhQ7j- zVWk?-)d0C_f+~P&5V_p{&2WaUD43ZtME*cIqG}vEjzfR!&#p_A1SGdB6Op_> z4{PHGWdk)nh8;+(50t$Dm>&aOjst(_Ibip~Kn^I2^3bi%HbTg>bPjdNwFe=0DkGY2 ztC2Mo2Xu~FIb*goGifMHC5b6RW{QxRE+)1s6K%;fwFmg_uNPbvjFuN7n|YmpgNfQz zpsPd_1$(~>s4k#ju>;Pz*{m@lUm=PS1Q+#=9%H?ygA|mhF7$vZB6<78Fw|z~$};qo z7~1ljt}erNXuJ@4&bg*;be{>`-@N}d`jCixriB0l697KXfUTt%iMC)CJwvv4LLdl! z2#~Pa17}>YS#ro%+7pzLAbQFLgGsi8_9^hwcvuyEOZuwekVs_6OXpo?+*}Mm&bzE= zKKDc+!#ZI+P*^4Tbt-jcmpJ=Rmy*o{48TN(EGp^JX|2PhU8-TaWrlL@)FHxPYQRb3 zAyf1b@;6Qv0LSBm3&N)TdJ6U3HL9UX0C(SN5Sq5b&#W4Z5Av>XeyfU%Qs-6)xlNZk zjRrcwdIimOc>hwqKWGA?`IbQMveDcHB-cy<&Sks>oXi&rC_wYHbhBcSZwHsFra0w$ z$Z&;bE_TEXlo+>4oI7!VOPtSwszC?zpt&hMz7)Dr_laU6l26=d3UZHZ2BGOFd}|yq zjNKMp7GxA4xZNfFOy@U-Y9BOY($BDkvnJHqgNOZ^o82rE`(}JX@ z$QXRyz8mfQ=i8Nn_&_2JA41dSy{o|uF4czK=W@nq+qAW_ zMdnICj4B1qhkVFe#9-Pl6j$8F;0_afC9?#eu)XsZ)Y6pGN~J@4I`0e}Fp)L~q$!1v zao3(geR{QO0{4J2p?O%L+gN?pkZ@xIkn_hC2HO>mMGU50!W|~bFdw&?JW`>WR;sLa zs(41#oqh-b4G<>u1HC!GxmRT$bm41d=H{YJU}*};Qdeq;TfkBRR1shK=9Z!--u zSNnPAkX&h*(LD4E^)`O^xzZLy90zjSGND^sfvj!SV02Pch3cOzRnbhf9d~emi%tju z3Mu(W5(8ayZKgT?|NohZ-u`66#BY8yd4gBpA3Mo=pD&;7w?EJHf9drJ;A>2p$U<{p zZ-!;T&AHRW2t!v*m=Jx3^5Hg9P#n+~YD*-STS#t4I$&UV=M}3v(M+||vTNFD^J5aS zDAc3^v~64hz@XROR(SgFe>pwXEAPz&=b=m#z%b9;AUh;AbHQ+u9ic;JgnBx2VjFPj z3Fizx)xWx_MC9#C01Eqc)gxLYPuA{#o7!FDcW0VX zC@S0O<64hPH)}($vb_=}eW3X|f3xh7F#vbc7}0I2f~;NXfWnq(9QWiZam%#+eSDSK zCXd6R0V)k>BMF5WzxnaZ5Vzi2AMd782=ykYZz*5zRRy_6wt=Ej4*?9e&0KLsc9W|m z2SXTxf_-fo-Prp#PF%HF|2?>V0gI)v5d=x4!AB;t81s=A$4>vj7ki+P+5@L4I&O%R zgOQW}U65QaHzWC|Gb z@s~$U`^ncAwf((`dJ_&f=bj721=;A%wk&AwTL53`N6NSRO+j>vYI>i`yO2p=D4Y5t zwo9(V<6DIrSIK^2tFl}%1hvk3ItUCf!5No-SyqCO^TZVf z*A9+N0i!ApcxsC8?~sLN)66opZwUcX$?EHXqQkuRgwMV)dyc>VyEVie_g4a5gxNfV zwkd#)HrGobBKL-5l@vw`TQpSa1O!NU@OwOncy*YEL7XpiypJ zCUlESkoCaXmmDuC6me8(b>oD6!RNZp`S*XH*NI~Xc{v{SKcRV;V9grWfMA#EVk(_Z*i zeDx!4V{p4m`k78|G6!rRiK0WseZ+en>pJo4AFiL_x4-sG|IN>P$N%}a_47XQ`kv$N ze3Zk^x%p>~B$52Gtz!f&9gngwM&|Y+tj>b7toW$xP9#$X^a`~iXT-T^ z&HEh4r&WOFap7ipLcSebtC}8Tc`TeOsEh#{NbohT{_88w!|<`~&^C$#&zGglftRdO z&_S|?rQSNfcLblN6MM(j#q!x5v!$u2scDDe*rkp82x7Pc*?Rh!&br6sYoGvo&x5niIf@ipN?8VG4>xZXr_O?W0(|IJ zcOBdY`(^p^F?Fyx<1Y9f82XA+$JL1g|E0-FKwqVr1>;JOaeo~tV_9Tj^A3uNZ8-9D zX5;MGC_6UKmKD-Wzf=7vOnN{iDIi?K=&3?st8CdIdA7`s@ANM9nJ{I56AGa|lpRqj z8z)EYd$qN-weM|`9cw4gf^lJ7DfBX*UTD6IGhBwC0K0F1(RD!2aT(4Tr)$1W;an$& zdYV?;Ohx!es$i%Nj^ueHXPou|L!2D0aawUTmEkK06Yf1NOFzxm>6~%$3rRWSRNdk@ u2H$~mC>d7e3wW@9h2#n;6_P7JAzd$zj-hhAM3_{Lmk0pLGwXN__%J%>bQm=N literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/orbit_one_background.webp b/android/app/src/main/res/drawable-nodpi/orbit_one_background.webp new file mode 100644 index 0000000000000000000000000000000000000000..4d4133e9cbc0074fe7600fe62f8fba7313d36e8c GIT binary patch literal 42550 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 z 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 ys+p| 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 V``JY00E#wZQC(P zy5INv#fwr$(UY}>YNt!>-h$eHb`f9hQnMqe$1h?oHW6)&nP*@HMoR_OpOTfJqq zEI}0QcKDT_?A~S~*?_|E*UjvcQDlcou?uD~yRR&&*??014U7M3yA;orRh6KK7JJKL zk*!6PD=Ch^igJg=BHM!#uA~BG%a)XYIL25!vd2V)D=Fx}C%^gXiw0;YMDl->h%SFs z5hb;H@16WfrTNSD=T5j#cqUjB*;G6k3y_1wW|oL2+J!@TED^JJbE>3~tHHPhOGoBG zz%w@S-ZK_i`(P;LzPGqd#gkI0^XyIA)}Ma1rYJ(;7P%W)JRpu<7TI^@kW`=mouA!} zCuy6YcxKzL_7Fn)K8JtsgFQGva!RYfY_OkgrT7dG&$Gjl;0VtzHi}Hdv+f>L!nEFE z))AMUgS9W^7a>fOEp9E+6Ho5*kLN=OQVwZnk#$c;JhXjvKPW*GDDtVLA~|H}~bolV(sHz27QIM@zhfh&q8HGhe@@4mbkkxiE~}?qU0- zmI}~x{~IS8fEU7bbPZ7XlgnGl(|pBKFRiT!PRTGRB9&jiIKEBYi}uC27oXeF!GlvW z4hlknnHTT9|I)qoRuurRT*0s)Bwv&0MlKbusH0W<=Xfv>=T)3z{Kt(^u2dT{>llob zj%u??i(DC@_^M5-OCn*xK|Zoe6|TH^?|Bp?F>pbcgF->Uu~RDtrp`adunz#rW=Kz^rhfPYE;XXyd#0q6nxyXf!w z_3$_QCHrge5&Ey1E&OBf&-DU-U+~jPF-HDD!t?!)+6Tjj^1PJN-}m_h66I zpJ4yf0*k8=zhk}P*#kkpdqV`8U(&yv&)|{g-zcY=Fe9tx$UXtEhMRh`z7)HoX`o1y z8$O4aPmh1UBH=Tyxsia_+HZje6aWDJ#BRw~K8(>wx0fhKdfBg<0!i}n+WFVq>1mlr-Tq)NSocL`C z{3;(kUn{?^d-LZwof;o1RdrXl>-(qqtH0q7f9E6hJ+kd-dZ(+qh-6BT5DKhd=@FEo zt))a9L(8dv`WspFgzOmz_3fkQD}P~8PGv7=5kF^$>K*P>c-VK=?}H3_O=J6-kd*}5 zPqFO2R-3lIH_%QV-b!s#6m6fi=x%&-3ctXe%5@yPO%m_4aRV)_J1c1*#;qaReQt6EO#XEDWL1rOJq$=XJ$lowT zozIX7_Dn`5Ie|ehjjvK;N}I3!IiaI_#BpC-vk(rg4mA&}*qtr;xxHgkVl}jr|G0h4 zpYs#_T7Q&9yFYtWPXF-B$&EZ#(&WudP0FAu zUbprCo|{6?!=ARdOaK5HgQIj}i^hl~g`nNJ7GT{yj0quOj~=7k>}x^D!>Qm9C@g`2 zJ`{(MZh)3oRMeFb+4=Wg5{=1{f5Ab5*y6aJ2hXWgu>5s$IDpHPnfoehiPVQ}6Dy=@@C@KB_<@?uG+_h4htWMj= z-XQ$F68-bb(b|8}IDed;25a7sgfF8aBg;TT{@6KJCz~a}ZJkK0EPKrL)?5{Bz=+A; KmH#pT0001;`~SrN literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/orbit_one_epg.webp b/android/app/src/main/res/drawable-nodpi/orbit_one_epg.webp new file mode 100644 index 0000000000000000000000000000000000000000..521ef189cf55bed35be447954ccc07622ff0947e GIT binary patch literal 2900 zcmV-a3#;@}Nk&FY3jhFDMM6+kP&il$0000G00030002(_06|PpNYDfT00E#xYuh17 zdcObrqwH#XY}>YN+qP}nwr$(C+cq;J;#)*kRb(#mUrt0!0RIbFq?Cx15D_UM8Oc_2 z;?#TZT{#?xWB|!zT_ylUl}haFPqwzTy_IZZTSo+-O#<~Dt*sr6RhlT^hpxBJ-p8M| zZhpcQV~0Q8DiNnm{%7)Ckq~`8cK9D#5wYROCOCfNnDHa8K&voOXxRFOZ|0a;di4;= zOW9`DQholph&rx&t#yg%yCKn^do*4+!a25@*NilG-1b^W3sty-0cZbXB_Ele{39;< z7_NAkTCRCXJIC#gM8E9Oe&GvF*97I($5QKNq*etdWoJ!A}r=-&!I3*k%i_EjsEV1=ba*a9{ z?TkRWBMN;s*<_Oq>yZHPoN7h0*xtm^V`04;znyDlGoM%s*A1BO{LyBXERG8R;rUEr z+n_yDE}QezC5Ik#$i;uzKDbgM!>*lXmZnw+0-^_ zg}G*-;8-rP)CzVTO1{qf8h^ov8|H0*c5$wm71K~qwzt$Qu^sTahyac!?cM3Cci}m3 z_`OH0Hq`>bbFjsh+RT1PE+vHlYuq=r4k-b?9%`nALd02Cu*AM~z-7qB!2Lf_<+Dq8{)&y_wg^zwz*I4)eLx{yrCeX z7p3;sa}PXx&xdBIrQcq)c|D*ilsgo%{SUwYvyr1mef-d5EA9c{yikDw;Q+)5EI-12 zYL6nJG6MqfN>*9&3%eH|URe=84a@14z?e?KUy)93WZsVg$3g1fBG^am11VL zWMF_oo1;SY$aBs)vjYhX#1Z^bIX;Ra36cN94OUP%AXWwd0PrIKodGHU0Z;%wF&K$M zq9LIX+O0ew0|c?Ra9{u(5&kcb%YoqL^R7AnJNIM20s1BV-}4)^$CwY|Kh(e7|D)^y z`r-aN+ynV%^$$f~VgK77U=P>7N{`tefe+cg{9o<<06&m_ME`&J^V|Wz0rXep5B0yt zKiWRqk5q1ER@OJ-14<{peMSGYdKu>f>Q7*AEVM+)BW9_M*+s@bEu}6Lu zYGj`aR)+ z%fw!c|C5Jkm!RYdZSE}Zg(x5s&;b7M6f)2M|N24ZI5+?Q=?8!jzxK=7U_gF9vjmX2 zSRs#{NhMP7(0=lx3a7b z^rN17Tmj&A778hBcOnm=LIu<)Vyng?+brHzs$wM zM4!vZRde%I6a4?zDyuF|upfLj_td`+V)vrWx@n_V53wXj(#I1?reZzYEw~eLjF@lh zKc@4vBAdT&g^5bU2K9-8JWG#H0NmZ1HC_2W6zK(Dx?Sv2w@=pUcpziW>ooGmBw{W9 zzbQPjw!^v^Gu{6e-wx~)kR#2oJ~dwghD`vxOSV%-X8F-Z4OcaAOni#?s<~(hs5#-_ zr;2>st<=ntKC?Y88+>)dR{`*qZC!Y|HV$bZ23&zOOfOwcz0=qU5}}Ue`uYjw09mEv z#_irg7yui0K2cbCJ1X+E-tCUvw{IAo|M2%h5==g@_NPDpV%QreDf&MjL*}LMG8;Ox z#X$QF`Tm!8>7VddHi=8x|8k;-p!f8UzxclRcVMJ%>vPe&oJ26c^^}if{_YSe|FV}a z^lUkogGVC^OtMPs?r*LH-G4sky9g?jXm}x<>u7dOBP}o7+0^Tdc-g2NGx@s%Y1F=E zobEL9?ZyEh{TX#isVKjF)PDEpNu`YTYz?VFNO%J>2S_C`)&$GG%2$1f38TL=y=e4H z`k_|?N7D5Sw8T_u?2D`dLp3v`;dxeRobgoX1*i7v%+t_FPow|q2; z6X9qHBA%y>1mr-gG1p&l`)DA8TGyC?kv+^_L8)pInPNobDFB4)=?}o7WeU|D0i#X} z7yN;{WS2T61eHg@QNp+J*$h?7%3H{qfuSz9?lB$z#9L700haVXt+@xpCtI~HJd3M9@8yLOGBc~VrLa^gwc;Z47I4&o zzgcIG_Mv>={fJ9dLP?mi$)#zhinJ#mfusNO%1aLq^i2h^?N4i?*bxquZ+m+6ME<7@ z9S`d&OVS{>#1G=o6FZKB8x@Cp(B~+jyx^6J4YSC^=~Kkla@5!2LN@x-dJqzQ%4o(~ ytWHgL-SmXm5VQz_`*2oT(Y1PKIpcXxM};O;QrkiE}2``rKD zf99E*)zw|y)m2O1wUnjA#jWAM02*S#it377n(zPsfEe`ig8^_t0;EJl6r;dFhXC-X zw-%BK0I;!jc2t%SCf3x_CWbi#fPub$K8D6l_J2|TS9?46*R|91|JN1&KmG6~rcTD7 z^Ut8)M`L?OX8-_<4@B3vIorR{=OFsMv4x=tXs(bTn$8h4K@bg^G2p%VU$p2OZS)td z`9?dcDvN-wu?Eq^=Kr9L{z2PVySzR3?eq4gh^Dq`DxiN-&<`Kr1W*P@0E9tHCIt`! zhyXYM%m8js%K@MVumBi9M}Yrhe9E8k@&G%~SYuFY5AXmu0xSXM01JRKfCtno0{Sw6 z?!yea4-@Fv9^e8n0$78tF$Nu(fX3JW3_(Y>e~wH+J#S|WL8C1}=WIcvh(U8R1yQD; zJHPe6T|*4IhX<&&2R+9Q)Mp18^LEw@MAL(48_+v3yzMP$exT2P_RPtQmE}(t7@{x$ z0JR1LUQqx5FbM#_OB@jR^c@I%$pru)Rsetw+y9KW%K-qmZb1EU|LHSI1_0_q0RZg9 z|MZb(0{|#N06<-jy`iJwpXWe;T5vNn0N}C^06@|L0MI7@0QgTJE+uY+1_LM#LS=%{ z`onNRLI8-7H?qz51y+CwexHFi$!po`t6crg0?d9v?Oiv`ulwVR#D464gD1aVIiD4N zEE@SvKH3bR#M*7N?*PMrNI>8+(eL)_7i7P#*J%$ofhOh3yDp$ci`be9bNfd6;ftVO zupi8e`##M5dJfe&(Hvo%erGF~K!9(>qo>*O`8u%eyI&v>0yz0nc=zcs+h0Eic^@ZkJ950tr6St(UeWlizLj^ZKq&`Rh1PA$NTR*mesBM1N{N z$$rj;9GAZZe@%b2n84aB)h&_iHliS75m_v!;oURP# z&s`95^?VG`x|OaP#$c+jRzp>=8LjP0=68f8&{2=e>xa~muRI>@pT9vOF&9Wd*{V+4 zmuN#(!q4!N%L`(sbFA1;nTT}-#>>WS33pbC!Zs+Ii#?Juyic9<{nwN>);#>oFAw5UHNP%C|Xr?(PNYz0c|1_R)mC>2+T<0~D{1mUnw~L||EF zy!fJf&S;0c(i5Djvr%DK>DBlOo6@_m7BjYhPCcX#(6{Y%HmyDqMsX z-!ry7VpFwazoY}ix&nZGO{_$h=*$^`>_KAKsMC8zJs(0x5&Aubb44e@m*2_JrUY23 zb_p5@?gSyugf(zNdBTFm{(CASjTidcw+@Ofsprfbl+KhjDS8c`4i3|Cdj}thjKCC8 zUOB$c-MjzBNiUI%wiKdGT7E>2wpOy>C9^D%o*lJ5%<|_eTs#r=NjUVEUz6-gIfA&F zEzX+5_IZ1~ElMt|e(W@TBKRd`b73LfW^2NK?El*?u%}B)?4j{iA8+LxJGCQMmSI*m z>}_FBE9CTLT&XOAHYlz&y-tLs8Eqgkn4GwF&Q-hxK542zAyN;#ON;XL%4w&5w6~=t zri|uu*A{gRLCl234b9nF%70$*KdXJvE-L!$3rQBDGyzAlT9fl@rH9O@xVw-t(b&@h zTY~Xz5)laamD3syn1NLw{-7+ARy~fiq6u3jePu!4OzbxE6`vq(BG~({O$6OmtSg=# z)C7t8j?p3y)O7_;*hUFGPDTeNA`Kn{QXU~J3*g$32@Jy4ys^Mw)x*K=i%ey-!r6~; zey8QjJz&jn=dB?I*C21uSZXabNgf81;V?&=jWpI37EeRgCE9-A#WuIzFud$ zBl{Jt0dLW-!(ty}zG(_DdE4b7!w;7!x(@$taV zDJhUnQ?I_$VxGTgBgbO^LRW~?3DrKwFv5z6a1E=oX5v#d)@tw%8}F!-0!n8pv>S|) z_)x91)E@#A)V!pNgC=W`Zwp`lVVSj1TX2DDYZvlX)|fteM34y9XK690&|Mr*t7IPBuum1IyFPSjT~!B zu8m_SQ_kqS7%;2WMLEl5p>SQvg3-Py(^Ft#BG=zxosNa~Ym9P*0FqjUT2cVZztPI6 z4?`#aJpTiR8De>GfUHKHxqOY$4z{E<73xoWXSv>uf2}WQvYmhF!ao{`O71;{q^ii3 zQNW3$w^rsj^{G&gwu0>MFU0#)pGw|?N&{cG)Et-!zJMFB~7u_B8bU>F4OJs#bBw+r8 z51*1}!zI`z>#XR>JL(0KY3lwj{mfZjA}3YMhW2OsL5hnJ-iEa~id+Eq2I3&>dkgF( zaSlI!E*c6QE2r%((thWX6`pHMG%27~bGBEM>hU-&HGIgIED`vbLq%Bm0 z)86NSrHnF$o^gIL=hPBV?$l@~0mS)u@8KwZV!UtqBwQad8{dx~L14SH_@R8z&$Gys z;NfBz-IAv3>$s`TZe2|&*Y{D$q{0G}Ov!TO11ZiuvnAb7<+brvg^ZtNhhTecDJf$- zlVxivUp9o-*_zZe6{kZ|zdTz($#CVxb0&){N%QZneiA`Yq2{r0Sv|2N;Jo0PP(g6a z{FgxetsqKW0~kSa|F^kZGx)&rftw(kbMEx8={n7TDbadPHT*@sM38|!<`WiCgFB+p zxIcJ+F39Yt07GGbRh6%$sz5ithmz-vtam`{Yx=7#Srt*sLk~=3g@sZJc9hxr^LUVP z2!Fo}&+Ot2y9x;&ZfB9?Epg$4aZ?1XWF`+-p*AQZuL$L3&AZqWG#|GdBFb{)Z~pcW z&6(^Jr}fVNwrQS+2;yc>;XT)UEvi_~@gLXY`|#oV8L*)2KRyV^EM*%(sSCbqj_Fo< z?m;XG7uJdt4FWTgH-8@g{j?(AaZ3nzBv}g|@Dhm8$_8FKpS|>I0w2`n>Si*PKD2$+ z>Qb2knVqlp<}lu-n%|K|A48i2t!&g=N5bs&u>i?N?*|gYqxdCQL@Wr39#(C^`Poi3 zb6R14(4Z|!ZnNWxF@2@*yS%h|b2#8pj1GH7V^Q9e@+^+YRJa z8J`i@jIo``QsWX7{@nB3r(KPZmAwxEskc@CT9{KKY%SguznY*vIQdL@m@pZ_|*Kh z#BUOiVfpR|=w{aXF%6?@%wX)stmpHpmXKpLcjZIP!z`nlr{8@gFDFtbzS)H>^aa*7 zQAGha(5}5e=8FExHmoi|ZkPsDtjP-zk`WDZwY4AOK^8$2mX$0g!FISK%^%_*K-`R} z@`t<}cs-WC+nqj&cZ#6i;W|>f9Qy~|Z{1>UiY+BYi!#5a{PweK%=)uhAmsTwDgoqG1?Ybm!V!&6& zuoG@^?dyLq%*PP9ijnqe+Yqa56GWj69sbm&%*%Lu;wJ~a9lxb@L(~qheTSH8;Mqvq zSX!}jh#T_eXS?_9&uo1_I-=KLm(yKff2yGt(Bx_}x+@>(sv0h3|}&nDv#?v<^Xvpb`eYN zt%%4{hkoJcLJ2M(6s;;s`p?mV-_i&gqbo5>M2U%m6bbbF0g5tH{?Ps92I;{dSvo#F zF*TB$g;4#+cLS8)WQEvDB(r}gmFU*O zG4gxJEGKj>#E8x4Kp6TH$QPi7YZRDO=YJXWd(Nz0-$fn>mj8UngDO-1A##RP5OK}_ zcODpj5nOBLN$RYW_}*gOILoctT&HiXrhst9(1y^NSR%w1NBG|X-K-4Rd0l4YaABd5 zsO0Z)pjC?s`Iojl@bxMC4;L4#^2HS-papH;^MW4A`r;YnO3*8ZplT-}n8&HAQS{TV#-&}A}!Vg+u^CLETO%?w3jbbtyo-@FH8o^dzVP@NNdh%A5mX^_VDacH&8JVO?UCe) zvDPCrYyRy})VNJ#g{ULvhr89$Pg0#gF^u_!g)zxbT$m`%!J>3?_jq@~UhLy>?VuRW zgb?){x3eHQfJ z3ueXd8jm4846btrQ?h}s?_$c5MEY#p z_$O!qg=4w7FXFQ{`RH>WkndACT6v1vJ1-T9a$=Yc=F5~U9JVs}hxNBFpu)vw!?gmS zmnSpAA^m{Fl|LS7Ue6fNJjHNiRY4Y^fNhDHKYN$bQ7C3xjr=?$x6;k@Ewtm zydTR4W6LBHxiL65*?eZH?Xdo<$F-LmT$2Q9C}|9sxvWufeQ*Gn4RIPh|06t@V9+m5 z+T!``nZGSrF6rVuQ7yu1cNKkpBXlW;3e|njd+ym|On5`u$79~#uF*YiPD)WKZ3ey> zPNQQm%M8Mvd7mGUm6E?sQ1x3qy>vfMYh#T!pF^M^5M*jp=e-Zdj5w=Nd8)`PwB-LB zd!!c_oH7uWYnyA3hQ*fxw_LwhZM*)?VyS`{lMUU1woL z$mcu!r!%Zy#Urhf-%^jB8KYr~a;)95kKPrgL?myqTlO=)Z!iN#9;1b|+2x z*{pf&T=)daL!@f;c8F?}gYbo{LB3H^%fm+r8yccdtL4A_R_kX}x6E89^JfyFZXYl8 zfWVu>-FoV$U!r1xPfuZL!31KQg1i&y-KAo!?vXocIqo=Ur(@X}Fu{$#eb{Bp6g0T` zzRJcNuIY!Yz8i#hdI+|e*5R=|0o%8=CLp$j4};te6k-0daJq zG{fWo_mf91j}eSE@<0P;mi}U|Ak6P%OE2M^V;A(bp&S>CZc6TiVWk0^rR~B+?PH#m zYZ*0(*Nd8d$)`Y~ZVoud33GH?a`f zYNy7|SQG$-ctat9^2sVyd(7ozpV6qB%zE+jZc2Ik%i!%7ioNFsgK#%o0`CVb8!E3a zs`R}Vm3R~oy@R_ak7pk_RN4z9tAQ1W(+=Wo4=#cOegqj}=)&l6-#q)OQ#B^)N}8j~ z-1HiX{y5Me=c2ACu5no!sz?#zNVK*v`=e?lC@VPM4d;d5J< zNE&ZK0~o5@obxuwK6-~`mI*8TpdG`O%+E%rDMs@y1=5m7xj1fah$8d@F^}+Q)8PFE zOwgr&5aSAzNm5p_f5C{{LlF)L4(CTn8!5e{x})TD;~-qkFi+638E7LQ*+UmMKNcOj{UJP!t{ZHoy}YpLGKH2-OjxL=&fAb-i}6=_2y}wMH`e*so2{ z4lV29(*dNBpwI&Zr^It+hk>&pNz7qI^bcaC$^va8RYt{Du(f={s_4FHW^(rG1f0`o zzQ!eg*!*l`!S1EYL7-vv&b47D{61XH>tsCty|!Ez{k^oN^vb#V!c$VPWLvP(wMgNN zcGjE}nE7@wPdhGYPe;LX6N_8@9``ri@t3bUoaGT}`LVoJRqa>z4$ms{q8`hIp#^9M z`zuPFnfLw2TSciL#-9_?stRbM{6xE}^YfeIFSVgY4dUk4IwljjMYY7Z>gyz{WC+qq zgop#dz{N}cyV-@%Og`VtIlr&3S3Di!aP$!>UcW-eS`SV;S+hsw0E|p13kJEjQ}_C; z7T-;i3D51?b3)L8yPW30eude*!<84Yw9UoaDP@=+zCkNE{lz!qkn=OT>3wIYHI&l~ap?QgWt_8O)GX;}Hz&=$0SBj9QLLsru|A#|#>)!gcP1bdVXNeBj&D-dInm_B zAiy{zCq&-Ms~X=rsFwsfdY6dmNBR9M7}$tY+hGvVLG&f66CHcCyLuKXfH6_*AVrS} zs4_7{C-Gb~-#Y2O-7}2DGRnfb=LjoHv z$zespuB=jHy!epaT)W*$9Sw3A1(PHL!dj1G2%N@ueX$MWt7B|5?a4D}@`|ovT?t(C zvzY}(?>M#pAOj5VV+SV;zURD1>4H^@G0>r@ACh2 zbV5#9hTJ$=^Hhha&&1lkaM+&K54cQ6!WxUbY9-%+#ZgpG#6Wg3lqGUB$8bH53}Fd# z!@d(it-;%aW^5j_Lu~!faZ=pVH`iffCapf=)i=pbqZg6Mr}qc8B)#rITT&*&Dte0w zRNm0V?^b8K6ot_e1IFM7tp?1k{3(LdnFWLA9^@XfcsKjiQZ=OsIX%8Ag^xg>0>-f6O}r&vM_>}Vuzr_tY_7$2cc8eZ(}F=26`9IrK>^@pOM=V(MB`|(ihUTDQ$AW+TJ653r+CoP z*(WJ>TSEwYgp%7p#tk)20sI-6KrUnNA2s#|P)y+35Ix!9OPZGu-OzBffhnPb>*UXC zTZy5HwD7$VL&(&RgrlAXW`L4Rltb_7T=?%hXk4^OPD5NhVFO4A*fCew8gUyW{MnZd zSKisBxhz`@%Ba_G>828c$NeZkq+63zq%A-J3fvZ4CO+!HxIG&AcTxCAMaPe}33naV9r zQRr%nrIi*b{P?Xp4UJdMj87|}ftx7$sLDig6O)ajWon7G=-;?m^pI!yYsFKA5w3aS z`-w3HcPfMZLX&w3W#74C%muMNf%l}|WArWSoO*NS1We^wM(Et21b_N$Il?hAV3 z$CICSD`wk@DKgDq(O{;K{ICbAsC0EtU$;j*(BcHJFTZTOQg?BfLCp+e;y{k28K za6;t>0nZ<#6*q^dl-zmfi^)QXD#$tSz@+!Gl|RC46^;sQ-_VPH?&vW9yV z;=}@js__YU#L0)E3+;53gwr1j_|PCH3dFMS_xFcqnBK6jH(Y=@ozSw1a5H8IN0xiD zCdrG3ajZ*5ec+}Hmgm}xlc+yK%2A?N>IJbtmqb~u`DLV!{TP?HFc^Ev2cKK${%8bo z1UoP@ri@CG-p-)}rX>wss>X;yVr(es^i>z-f4kvlDC|jubOl)Uq*1W<|B2913 zd3!cla_b;TRWxyQ75_VK`(Z6_5vBh98Kxw?_!%e3{PJhn>8#B9ZY~7l_&*>4; zWV2TMf6n>Eojrv035FtgkBcvwal zy33p66x~U8HVZs2eYkY@3XkH_URJ}E{4MTlkN|W|q3=fIjYyy<&Qn;RS#3-h4#Y|a z;nd3~jlhGoAnW#*VXfe1Zqfp3m`ce9!n5Pmm#VR$iQ9}XA_Q?H2C5#!!PJp~(i&u} zl{*9mqcoVl7OX?cQ}Sd&6-TzkC!?H!MP z?whc00f0Ct?`07D9weq&`#nP}gxAx*PT9Td^ozF7g^c~Sd>KP=RfQ?}_;$ITjKo+& zlj6N_a+S7;SX2b1glMrT%O=JLswLD^;dP8(blH{?74ri$>VDRkx9H)FH-4-@rqHJq zo9fU|p98Ax=9nd>_M|&cJae#|dn*nS7q6h(b>-mXv`KUCpL-Ld zUT(P$^A&&4&3`iL2(<|zms*683l1ZIVUWy##reb2ne5+eO>(>=h6^hnq%0}~gnS2H zd>Vb|+`YkLnw-R$3l+hW<xtL3tifcr1o-=g4Fl6+`GN!j4-0bK+KGeouO-a|00_ z+TdQIgST@Gz(KQiR%Uyauw71GAoN-H`gNey761J89Z|d~aFGV{kEBeTuzuIX^?9Xk z2S#__tCT~fg|MP>9h=YP5@84JI|dQUjkADl=rhS~QzLmqaZusaj2=*vJL(~iAQgXc zQeJTCm3}&5*QUQCSqLuvlXA34b!G`t44;;MV|~ywl3oLX$#DnI)^bkBIF(_VG4B_V z7(TuqAuPbkoWuET5dy(gc>V)Fr7(X}Yo>J%e89Js3>{BSVlqL_XDoal&jWq>rqU>Z z2VGxX2B??Ac+dI5(LTtvmN;a}W0=^o5I);;QDeTrhZDS{+NO*$aO@k`23i80^DbQ# z6QHMYt6mHf$9CvSq7e;}u$#&PZ3OKTC7#+~*jvV!;Ck_YV$h%@Rj7b4u~m3Qn^-i^ zgq^hTCEK}BRmNq<_ebSjd`R+ZOCEaDyD06Jtk~orl8Q{iK)nNc%tu&?pI?!P-D6ue zUyLlG3(nd}YZyPPdhZnuZrXn=POyz0Aqa2)qGl#H^ss2^U4Es}-s)Asrw`m~C;}GJ z03-Rw7_F`72L05n0Ml#{UoPe=V{R3(?0`W=z%on~;E)zX_qt*=wp04Go|Av3GeYKr z>oUD*>VkJlSf{GLjx>?Sd%{R>YPjs2(w_-m>9qRbUGBofBDrR60`+#mac|#%lz*U& zApCd!)#>&NcW+6LLJdsr3UA={ierKU9Pdx#uq$;>4H`?y12ZJ-Ri7p5lWv%9(UY`C ze;IhcuuZ9JW%l^Em%_C09oAa8?oE!OfWnrC&$A$4&~tPBC-C*sa}o$VI7jK)D5EyNzRD@^ThoI+*YxAgZnJevjUEZD0l zl~L15I^S$SN}&6l+#-3!s?8`$wfN)d!Xk=Vhr-+ zr|RqLXO%*OCXzU#CJ5<=UD<|FVElaYAAwm%|_LCA785(mT zfUGVW!aNhHD`STYnCwho*jndp9XYR3qs0VX>;Ql&b7R3l|f-u7aYuvT7?4H-6vDhC$) zR>!EU*nBNZlx>kQQnG4B=f#pV88H~eiw%g_k2h*xCJlpR?omB(Q|z1b0pu4b=A(ux zZT%wtaP55&&gBK`Q7KVV*uGT@=)i^m7$AcAGeQ3si8bzLH(lXMQ+&79xuf~*lSr9d z1s5wPpBju4AGj590hIMnmnqpSu{){CLD#A&8N6=t$HndteM`L%aI z=(DRvfUsxZP^OIWt&a#hkG|)o0T*Qq8(Om%&wb(!Ho5oDu5HUw%%c4=Sn7vJJXE>B z$+JlnBxN}I)JBo-M9%+}$N!@hE1VMm>dSOG_6NW?D%*L*JfgeVPoksx9^Fd^;p!hB zZ^R}##m+E|oO!=~e#xauST*6RqK9$VQ8U@B&Pb-+6#$_MAxBTU0zl_5pJX>$fBi?T zo@iND2dPTvDONOJ2R%_;ChTA*5-QWXv)$$=u6!f1(F{Ib0?0Sj{@?TIjG6a9?OAjF z`U&I?OVa-`V^^x-GRs(Gh$zkHqU~_Ae{b>d(JN8Uk06_clBauw%&&Mx%!a(r{jW$$ z#sYA%G>izU)#!mi41o9ZB`kmx}6f;fF&{2uvytNZiu1Y;Dp%ZxvbyV4gN} zSm`NW9T=*9<@tEG&AZm)N_hSal=eKA}SRY$gxN#&Ro_X&(kJwA+ql{*3x~dEq?oT2LMwGfwI8+Y~Vx8OE&Pz#&GJ}KtJ|2 zzR@7mtW|bXGZ@vHsOK|=% zV+OK#Ayo~4t|w*zngUieTcOkhKJ5R_ex16y^8gv;-cura={oXac%8|^mnD?yQ#!K7lXkhP#x-^yMKxALXyapI9gK` zTN{phE{#n$r7_K|n~Rdb4nncfB%JA0JYMVEoz`xoqJ7K;22@hMw49&hS1(Tbx_mCM zLKwCWqq=e)a3#yTeGzo>c(+H8igM;8weeD(g3s~!YR0pe>Qm5Ly1dSeq!ItO({m4? z>fP7dEEN66buh^?inj#Jzv6umhc-6gjCUFO3?(Ss%LwOTL^jC^b(PlmeN}XpkP4sT zD&erSv(JMp<|DGIP|?u?m10C`T7PlGh%*v+qD{|A-!&cWkMmR{DR=yWexJ%1Bs=7pt=GUkX2)3gNT8&XO0LE)CC4{}2^)e2O}RRrVLq%I z!xK0Hs@OqvWD{JvO}6G%UL25p9z%L~tNKDuOwVoyYD0`&cEbCFHOJ%7^KT{yEuueM zal3Gq_7l~|Li&J%vF1K*pm5XsFQcP)0^YFx|EUnf$nf>AaaC0msI6;c!xaNgkkr>D zj?c)jO@Jj9uODbW`AxXpI(9D6M3qt-H>hKh1c1!xE0+?vsG9m~uz|7Vyg;h4n_LY5jPkmG-$+@sg2L;5_UJkU0~A$NkcqBuw!c6|f1NESkd9FL+|uLm1w4Q)KI*8v~Hijz-f z1@#$s*@UK?BZ7aOd5V1vZjls%xTJGvugxv;#GRy#fKHto^#0twn0qH@SFzgFUDWvX z+x*~w)ozV*>?s?JcVK41{j*l- zuhNQG%j|VHaEJu8M;p{Am+VG9*tq1fwT75~Z0Or=lN-l<6NZzk!ku)(G6F*n$agIt zs98Z6k$cHw5zp(l9{a0)3;V5@@gJJ>uX2FDELR?$d;WIyFT^xyS(ho7;Dkq-sTwo| zO}1bC?OXpW1+!*Pja(ipJaOqV%)&oGT#k|i;;*}_{OD&WTL&fvRDbCer~Ib?{;%8p zR% z@Q%5KY_wPQR1d64;G8^3V97ztcM`qpPszpq6uP%K=D%Fg?{!gZU{~opw}Cu4WxP_a z{qLmqAHGt4kn7)NuFy4*egj(H1_&wHh&WX+g>+K*b-Ee6AU{emUu(w#fiMcLV}GX> z{x=SJK5W~wE_dUGcHkaue$)2L=4J(&40&^(4K)S=m88kvaw~r)L?6jO8KOT$oBtmUWCFZCI|uwKb9r?obX>3()Z$&j zyeZB;oKQYh5U^_X4a(iq{)B}%N#O#K=!NF2Jf2$CU`PVo zL$USqY_Xb}joG}x+b@DcktD|-21ABBN~4#lCa&&5?tXZm=cM4n%`X+QNZ9CTiF3_W zmU%CrvpfMF^i5;p1p?YManM(dT>jdgxy$D*C_}@!-BhADXWvps7y6b8_JZ-x!NPOJ{{e58g`1 zh5LzzvFkmmRNg8<^u5?DS$oLv8Q(^l5MJjm@6H5&o=g1bxNPiXD)R_Q1&>?fBjl_# z1H*nF*Oj4EXFFFL$#c6@;g*{*I~c}h9p>&dB9%sUlxvNNkIqn3!O^BUf%?NSmo|Ip z<*Zyz>!gM{eP;D9u~8#CwAHkOtZqt)9~F8pv{)Nbj0Ui->VM7gxw^+|l~-0N3YT3R zimbu-+eKX@Q^3G@x>{;E+XpZVpju-u27!}bp%74ZtWfW566~P%;Tvep7mqV%VwbS> zMJlZC8VKS24a)8jSnG}k>YaUb|GS{4D@y~$ z%FkzLC*Q9yBg{R$tNPPHS*FENQICACsG4z`~s>pWZe zJ)8V1t?#Teuf8DJG(^ukK~7i5mi!hG`Jh2Uee!gE;ftb&^?<(ZXb1J3jFw-SssQ-~ zJ_D|)~@d={PweqJlpQ&q4Yr6^P-ai{F6hmIx^>IZpdbm)6zor8NWCvXn)#61D_ovfVd zv*?I@c@oJ>O~dHq2U)>$^nri@Xj$Dv9A9OYAP`r2thoNrObS)H0bAJ3kz8itK~ zc07N}epix{d6tecpUu2{-Nnh~5A&ftmG3tl3INH|2G4uK60#5TEiZR<{f7Z1=8fMM zeL_frQWiuZw^}@ZP{i16b@K+}nyfCQ6%ynKst`Hw*Tm z5=avt28UBjzDnU4u|wSXX;@(6E)_69mld#El+tLZXii-AV9Bx}os0<9GAs8(;<9J^ z*VRq(EUYwxgL3cCd_dy0enIw>{zlcPMXjVf&!SU}AADdidV_uhT65rR%%CKex)@Bh zF|aL!E&8K1v?7Jri~9$yT_{Gi%H#_PObia90DC#%>6^gDbDgFmHf$_@FDG{S_>LtQ z$RPscn%`)>wg+b4Oe@~)(BW>QYSdI`1^Yow+?d9xF<*|)EN(PTRl=gYN)8l_m3Q1I zSh9Bzj=-t*viWIHzt0$ew|K#}>OnH#q$Y>1dqMvUvlSmHymJKCXSwGq2aev?k=d<) zp(TZEOkMHhNp8uE?xNdCzTwUAXr&`2G z#)NgJdyKBIAKCnd8`m!yxq)H6>kZaU^j6g0{XceR(%QDUuHpIelPW>i_mNc~QjZl! z5jaaeEQ-W;T!=92cx8T32+9f?^=h1L#+UG^oU}geA@t!^PGJ_;A(0?*KwbG>Chq=3 zMIGqKFM-qc#pkE#mkP=$3pwI)S;aN9(#UJ}mG;LQ)WT}52S|}PkvN}@7ZlN&84ns9Qm@KLdMpxoDq&s!kkCZ=!$w=(JS0#srwU6iQqTIefn_I+9$c}r!s2`>1VlwWYK>4u!j*w=k~MFK*N zs}ptyxxtg=>Q#{fNp$pXu>+#W2^+?e*H5v>f^51n$keWYuYnXF3DiX>2kvtm=Fit3 z13lz2NmkPVpSHFMWt0kzBS(VP#|tF!3y2^b7R8WLxqf~v$~309^tj)O9y!q(9P}OR z%R_(CqugVF5o+b@6y!$xM0FgZEg|JOgI_MNqPnMlvW9QqIf*NYk;~~9uSa9obm^y- zf|r_5JJh^jl_Y~_*7t5}C~k0x{fBM`8zVGDa)77O4?McWusuq#_hoc(O4*Tpn$y#2 zQtxR?n%LA`e+z6ZIXceQ_ER(CZ*@G#Cv(f%H*?(_C#8P0(oTf9nt=Q>S!#i65BKDRrgqHv3hxG^tEe}0i55ecn#8ZnC91w!aIvfq<3 zolaRA&p?QxD(hKpmaeVJ7&q?;Nq8#dS(~rmU9^zm_|Ee;oI&O2`w_iqdik}&H7c#J zuFNO+Pzvxu89C91<61@6u`~{y(4X`aIduA=T~St#5(#QIjGyu7Nn~W1sM#WbpN;Jr zQY}>79n0L+E4hOVSrfg+zh%Aqio7J&5Uc%6aaO1k`|yINnMa#&U4{FT0Sq-%Os^sm zOPv$iM7T2KT$;NgSbHvD)w7bPxHxY>i7{R5yV=23DfvrOa__s^sc$WJT8qVExQzv7 zLy*{C_(&cgQRMT+{ELZBz&0!pmDK!cB2{!My`8R9hvCFE5HfIyF!OLW1)k5NA326Lrdy3 zxC91}&)ZB!*RxqUJqeoP38pX`O2%GmvLFTYb&Cpq{!~LXV`C;zqhZDuq zP1~W{xj|kkfv!85V9S*elOj2kTBTp<*(5e{?WPLSNq*&+&rh=X0M6psc`7}#wA}Q@ z`FCge8IsgNB;M^+TIn!l%a58q3L-9hBiR1<<1^giU)AE}jj)8QBvN(UuWc`bH4+Th zB%NW$1UKJFSSBju7@}>7Y8&DF8Y%`(?v!1ZG;v5%<6!+xHkWi0UI(CDZvXP}X6E)a z*B+fp(JWmgP9Vc0zpE3+002=M@a@F-TIFre^wB*dKc^Hzz*iz=YDvf^L!|5ybhwj6 z^uiyL!n_!kus)|Rd`iLj;E||NK_8AbI2MVUk#Ci&3)7grC@zO^x!-I^?EZyooERV1 zzSDV>%^(G)d&{^XJ9@v^sE$qQDOn_MGB!?lU!F0u|Ehsbxym!TYI7e#mYcUWFWCAA z>6Lw;%5_mb`-3Y)N+6eE=|dmIyPcO4qBG=r+w^CpjDmqTvM7b&-zLa_+e@1xI{19zdPh&Jq&dmfI^}{b-6X zg6;8rjeq!=KOl*YLS9=r#RE6_>9WJRJsLsn<8NcgWM-e^&zufwOkqaIn9P{dFD#H?3UQBKc6SM0`lok}x$mXQ+aTcgRB?T6~Ji|Q9zZA}kaDa>2QLjs+-9D>SK@Bmp@VHCc3v|uGU*0;%}9Z0)ye$* z9UC6Dcs{=k#tX#``gM?Xd5gZ1zkOm1d4MF}ayOW^Y2JK*jF`m5XZfqDM4UQ<&+PcS zGnMYIuKj%r4a$09vJJF>n>8361V${dP-y`v%N_%o!4)<#0lPe-f!@r_oqNp_+M0yf zuHpD5iV|QVh~ZKSXz#CO~r+sH*n3W#U>7~mQc*v>`TE_g8S)$xRlljS#_^lLOE@`{gkAh zL{gNd;?Exz`O9yD3eU1KjFiBIP>dMVwoSFfJNXs7ifY@lU?Y^kQOWk?<%ox1kX?$z z3&L=UYNvyWK$ zP$o43!(A<+#^q#8r9)&uyN1Xe^BNdBTOo(IEgShm;#KV(K5`FRqR{46jMxu87}*O! zAM`4V*^ab8bqd%g4~J)pQZ;9(OInicQnhdQsHIP`RV)ZEahoVX>BW zoQ~YQ(zm}@otFoRqjo}0gB+Wv$YCD%^I?tD!Hec7I^Iss$9J*BzvRg)4Zvuiw{=bk z)sI=)ik!h=MshJasi0WIs}2&Tf3RL8V2o0yjjz=t!4VrKp%#AL>0i@8KppyJ8K&kW z{mLNTKe5peGruNdS(h5OG)d|nq2j|K!QFg`7@bj<5Q|;3x)zaG)dd~_0}FRe?ZBdh z-viM|+YC;dNp|Y~OE(8|pPK3>!4q;e;NiCr;RG0mm<1Y~gxNp?>9^1efl^OM6vmfO z^Nd$STvI8H^G|$ATsRmHFWK?+3Pj|dc<1f{=|}L~@HPCWUAA&@^ebUCb|I{#BR~}C zVdXCB$SI@%Y6$w^K!BQbr1gM~Nw2eYu?$`d?eYHa6*C{r^9Gg+u}?c|zCGcFrb3Ru zTnLGBQxVHK-#)vv@<-muYN8p-UX=vD7R!n6<+yjGRh_+7%9QzTRHhVckn~fKNie{Q z*++;|Se<0L{pl(B#bE5@_#aSB(=O6Z0kT#uTqM7h-0joG{zQf6_?ay;zTVomi3XeN{vBEe2P_$0?$^B+8MTJ}z_3Vm zxOb(R-9Zvj`jk{HQGUd{2KBx>@)d_SqH)1Q*?svWazPNCRQ9OZPe*5>>iydr0%wy~ zGa{#3lfn~-#^mnJxn^`3IeBVgBR#By34?a|NqS?*jk(93^s?Z@tDc$0Fg)4!a8AZKjrKpC2 zVNC!%#cCWWcDJD~k+WHTqwp+)NXbXXr1mA3EZ?@+807W?CiqB!ST-_n#1QkNR z!nci5PxJZwa#$aMm~JNaaX%ji#a;$(l#)heRmgB$?4!6lQut^PWSyIeg;)rOR&(s^ zDn+xt!ohMGLi3E|oGYe^M4?rRVk+d+mk^}(*h$A%9k^qCsXVXAb4sdt-yc+=qc3b- ze`Pw)tGM7BGix2PiLayF?GJ9HhL18YAfYQHDpeNonM_qvyVKI%1lxp|CVT~&>q2Wj z`Da`H0J#!#p&N2Jo=O20Tmlp_zG94;)n@+4joZ#Iu!#JDmE_{1(<2qCKv}%rP<5!jM4&YCJ&}L^jnwCiP z*bN>})GrzYgjz~Fu^FADiXnn&>6^G{OsF~ifNG!Jw$IMcnZskHRr0*^;9HJzbDV-bEy|hxvtT(XmljqTf5|{3#SAZ=3%`S41;It{SU~KG7Ri`~LwsK*qmQ z)GGxTBx9p!-6pTi#_?WbL+E^NB<%P~hOC)|47O=Cp!m+eQ#DKAe8xsOdcHDE$q}C(Gymp`M2h}U=ejAbug+j>nykz%#Zegu3}$Flv0!+J zv8#_s{#W{m<-A41uOqm1Xgkv@Ny4Ovf@<8ZCziuF#)!G426``2GMj{-UVNV8RIc&` z9|QX)T_oqi|CZA4S6o}cK>l0*Fi4Y%f3Uf>C%BZFU26S3OGL)@MwOaeRTo~Evi2Y|-jEgYrVTC3eO%}LW~BpBQ+s3g#1UqDXQ?F$wh*k2LqJB?Hi zQ`KZrPlK(HJL;uF^P#N!-YyTDO58Z5hj|{q(`2Ra`oZvKToXw{6IBG&qT3 z;wjW=%bYW&=?fKDBiS9&F#|n0q_7JtiP>C+(Y(hX#B|rNq#-DU30b2uQ3k;USr$<=`W)zA6E;nE|C z9Rz1qo_XY12?L4D%XO&R;Jt);#PL>bkMztz%I_v)6M!EGdnEH4|H-_^v(58J%FmFK zR5cUGS*0%na#b{I5+hwzsoxHQHWK?xE0zctIp#u?ab;&SA+Q4c;L9V2=O&myv{|<% zOH81sXWQH*3e?pu;CNsYukS2XVZa9PikE_~ z*iF92`hPjkYC!Sc;IL69Q9av}DN2r^3PEeeL~YTJq%-4!aQHx|_a%>jRUBTs9KWNOg$r78LAPJmG&s?j^f3>Zn6TnBv-W(o& zurDwD{z!3LP0Uj$=JBQ00gBpuHoyu$H$3fHtS!{I`?f|6y2DbedvS>_3=IrXyC189 zy6AlRF|zfHw!2v`-5^-VhvUjvl(;}8^s_n{#c82u29G(?WA3N%p&{)A+TCB?-jsDg z?>Uw3St7!f)}P1i6B4XI7+)GM{(A$Nwci_r<>o@`kHPxdz}CG6-s9LSth_kMeCuE+ zQ-mw-VAg4B?{9U{_JqhaHbYhd^MGY(=RnOyW67dSGMxT;(09x?1WfDw&x6@>G zvgRIf36EU>#xYh;0Rb{B_<9w0$U$PK79s)-t;@-p(~t`BGcUm7r#wOkvK}Bym5}6| z0Vg1riD3-{^l&29`!Vfmy$27soS!~aAc01Y%#kuq8~XJBM8r&*wL7!L%P}THto8)F z_~KhLKw`nt#b)fWcZ%6hZ{DAOZfTEonjOB&D7JDvC1Y37Gp=~8r4`+6zzK?0Z}TrQ z>|&R51|N)0d#xEO2WO_1byM>n`!O!h?Np7h8A8YrkswN7SMa3wYIn_2D=;qZzZG_h z>;+YjaJp6+s;%L1vlHpf=BB7ivVe~6lE0K|zD5gb$yBD*az+I{=&4|;hVMG1i(KK# zSe2b`HqKo}`UW#?RJo(HPD|-qK6~u6z%jAB{ zXp8P7jGzG>$x^TJrkT?mN($}JV9@T;X=vd)r-Vs_waS(Tp4{uklFDiCFC!bMx4myx zH*W7naY@Z+Q=|WF2~AcaJMWK)1Sd{*BG1E9F0oLFV*_H~QW%tXpCCaOuJ zS$z?jY|Km6EAS#U6Jd1NvRPR&CE6}Le>~0CCiCklo*+3gQQ;3Dl}H1*krqd z5nz<0)j!)*0(qDn^V#_^vbr{*=JKiqh#~H_h!_Hs_~|am!Q|i_98&N;t;kdOwl(Du<}$d|VrY|&0l4K@k_0^!B5}~{7;JWm4pyEH zMl-wVBr|rKIL1*W8`C`M4bOtD+XfLz7YpN?Q(+@2LKucwrvdN;0bt=T|0e;CX_yP1 zKoZC0M<_dwfT!9la^oY9yyW@-Cl%u%>d#%*?|f+} zryW*e-K_P)#&FsKZWlk(t%{b1GtwIo@63@6YRBq zivpCCq;R29lYg@HQUQ!N==v~wKWUOx3|J|}V`c3UWT&`;jvq0Zbu_8RXEErY9%5(iHF1$3oNJUGoz ztv0pjp{Z35l&kdyB^a%^iiC71+H$yut=F1uyeYW-8dT;Lew*xb{yg&+-nh^B&^_0; zRqjcs$%=`S1N)!6v%{lVtxL#0jrEfE3kQxudTD#P7+*f(;Ol~I*J&5D(-X*cNDWYG z7AEqt1V^$Q6bE!@V4_=U#(RJh|6clkKsBjpe$g$b;TrbvdT?{P z5)Y_+`|5K$U#o)AnrCN7XNq%eNp}Gq)wnoK?mp^N$yPc{zvDRCAY|lcJ8+Gb4M2wr z^U@ak&p_Z^W8@hFZ@EHhs4PAZ{tY{qtU6atEO$BTGj!2%Ag)GqwYLzv5RUN$KYtY* zqP?s*r&m7H`2HGFrQ%euC>ZhoX=~~F=fB)u2-#sDJpW3}!mJRbqhJ1oB}+w|6@~}C z?t3P*T|@j~MCTH{24S6(ap;?>=oIC?FvXp39*f>GV56EW|qtAkdN<~xsw4vs@&7cBf{_kcel2pHam$!{MJX&eBZy^qd_jp2* zVI_OQg#cT7)*n)O`$2rIw4KzFCy{+-7p1mr)k_~K-Nd_0ceQq`&}ogVJZIdY3w{zE zB!@+u^q%&?n}$_J9)a1G-jl{aWLrogQr-`;472pt*7oB;Bjh@e&`;Gy19VK)BKDD) zwQ_tO`3@zjU`B!7zkfFJ1qnL`<!*Iq=o3R$X}Rv@X#vKnKW&OTVae^6E)G(Sm3zHpH>S&=)xen!4Rr&we2y7e!xGJN;OK46w3^7$brc|#cA$UfH7Q9IsB^cQe zh1zKcQwyNzp!_tVA+52=(@?CP{gjt){5Q__TB2}bgne;WKTX%l<~bG6`QS29+C-J{ zNGRIp8$7z8PyPaQ7Pq4N1!-mDD{4 zmw-ht46QPi8#gyRu5~%gF6S|KBPxl#Lf=MtlsW@m(Q38wItvx9f!lW9-|8EhbAsd& z`p3UsTrYr|qM<>$AMk(y=6L_L5SMak$2CXW#Dzu=gMD8M>+!tm*OWT1c=vC9alMuO z%}?K-_oEhuj$c&gcl8W=G~~yMr9Gq0NmzA z7g{FewVx-FGLW_eS8A21kV`4MBZx{g1q&@XPY|1a6@~fM^cN?0(oN4CLD7bd8(rEY zJrr!cm%a>lTR{K2^w|YSFc<9XdYWRqy zxVZ}+$m(5s6%UDf~=4xtu+8$V}pc|KMwa3)3EJXI$RVr1JOBq0K^gOGN zLf51NK`;CX@bz>psfYy7a}G`b>H`k1Z`&_+?-%DSIvN+_>TP~H^S}#juBB-3Cgu&3 zu0R$<){ua`=>NQl`TG}?TY?YI7}I7Vdjp=emtKvv&svLy@PiPJK4|$9$tiG5g_zmI z9(W54>lEBIw54Ox8&^<+Fu_N18)&w`(%z;y^i`pAab?H}9Dn#^AQupp;@a_wO?b!u zq&kTKF;gG%SL-qxs8R6v@}Tt}mFD=CEVj>S^x5$r$FfDwKOhPqDSiFQ(`;HKATLtJ z(I{l1K$-kIO2+}1;>Z7vVb6w+`;gMRBqpHfRhngsLrF0aa<}?c^^KV^|2F>3DS7=7 zblO*n!ghtw-CE+>6S1S_VG1zf870!K0N+I_#aMYJd;YmSmSad`5>2RFc0w;W-rF;;+e*39ch4D{ zEtIpaG9Da-+i1k7;oZPsalZpO97&f_aTE2vev$AC-PG@Gp6+zT$M)RV9^2cRyO%O9 z3U7$JsK&T3LfZa04nq6f{SD3PAWA$yLi_9UBfJLP>N>|~sw)880Z=Rej@QAqtHaMh zlJ>ID$(c7k>vl{Hk+O{GW!H|fEsQf?GW=&QqWfrp%!VDV4YD^iJvD>jkV=Lw%*)#y z7R*3n29J80>o()_SqF+$?SLQa91eo@%#lS=;X{73h$G{K0G+ZU0id!*bHAk{g zhv#41;W=VcGPhcYzv9qVBIXOcOX;y_f57@m#J^4W!IfS=28L72r3Ujc+a?tZg$0+4Il3Pu#6zr!ay>BM8 z)?u|Y_v-gZWdFnA*(=@6c+%P%9TW%&%feuEks?|yVFr*wo0%Lj?#9ylZ#&kf+!q+$ zFnFz$E9I8NB5X5u2S|;Cpm*9QX0$~_FJF5(jI%*_O(>TPZ|nvwBxyt-c7UKfRdFYK zQ1F`i8xKyTgoq7Ecd5}AIDMU)0C-8)PI}kkA`MCp;;$lRr#oZc4E-L;{wvZ{--@*+ zn_rny_|d)XEFA#qi$pEvP}FF6W=b6!3MohZjPc4dS!$OWU8MLqP>S~F#ttc!%R@==8atG z5hRIR^l8p*YfH^Uu)F~4=`$zLfA^|)3wS?v!OhSx3yA5s>auuBo|@Vn6OPUDcyq7^ zwR$=Am_Q^TSYc)y zIwN!DD)xf6NI{#t8&-&61-~K@-18G1JT0rnjXMXnM${TN`&O4UME}=@Z9f059FBSL+aaEgGJj6#0evp(GJEcIZ;vZun#cQ7O+y-+6 z2De^D#My1t{un0P$V}T@wdHx6J_+(5bV|Ano+U$zCz>FU@b#U-;#m-6!`Y?d$waMYd~br1XQ(8}Cm7+;bU0(RT=Kne0#K1uSQotcs&=c2|NI@sHo1+t0Z+z-}6SCL4 z_vZGzVZBg`j4NUS6V-v7WkrW;L$9fBRV>$xcu*x&FZJhZaQDSW=p`%E_*? z&Mrpy@hj2%#_V-JpHPWLSP2;-slL#6qH#;W`nGY$Y*8J6_u~F@!LQhve-3$fXwC~I zI4Es@+LWG*D(j&%(W_(yR9>2Css7q#3!9cM!F+WlOAq`IAOD4&Te%lPI}hjX!o;ZKWB1zSO`Ua~Fj3GLuDPBqR^Hg*=6a8+Ub7b?q( zHiz`Mou%EJ!@E-}`rw<2@1C|~d` zMZB71!d`b$y*t3C5YCcs-|b|-DAqF6zg zX9evzhEV8H%EHAHEQ+{&6`qdu_G3z);Z#zP4^ouvP%NWUPDoVlc`P>m{WK>h3L;!R zxEbA^!9!EAWQ~0;Rv<7=oJSLXW;Kn;`>jVJeBat6UvgMJ!V3H2`RddvPG7|aC}|2H#asKOyr;Nzpt}sNfg<$ zeoRW2#5jv1S+BTEq%H&yreAGioXa9ehQyUecOzkY4PAjGq6so!D;&p+Ygv*ltGxGWjR>MbEXv&C_8P&*9W8`zU=wSooMqHoNO4?HJBqrD5| z1kC=OAr&rx>JZ>?oU6NicS39b+W9*-CeLj=kU^*#zT^ahx&=*dT!f(+Bb^x>toGn9Y(ISxwa+YLwT z`p9|mCrq;?)oymFrpgfB{S>dqz^ceTeLYJpAaEG@VhO+)D9NK#z)i?pyymC}J?ePr zq+N-!^6F!C8m4vp5^OlF{PS9H8Qs|isdMH`XI|H{galbXw~HE$(lDkCaAw*;Txh&N zO}1-o%@rTugO-%YK&`dV@blOEzlX&g4SLX7DdN<6s2vo~qzL}AmlCsF(ST%?2=^UL zZt3BF`6|ggV=9VET^`U&^JW5wOl_pT^?VN!nVi5vG$2wtRlHIq^0^L2SP@j5|7^f} z=Pf+QqrNt6(VjyS7LV}9J60D^NY5CPV;&H^CeQM#(eol=&Y7u1wX7NPw^o3O(G6!C4Xvv||dluwiENgSQU zG0)fwk756fnf`#VKOZ`>r8^;{)T^!5<0hxWA9#5o7E_FNVd;8tqw(|e6(fUX^5WF7UI~siW z9Huu2d>og|8{2fTI+Sg5T8g|~#%)M$*2Gzr`Ff}->l&aSomaF-yBDn{>VaqNm2$|& zX?{EwVNuo;2eUi5`tm zK&DXL2t?Rg`hZLG<+!pJaETstn=pMb`0)}2qKL_n90(6oLhP1NnoY7p{Is8oip7*@ z-IPF)29W>d1&91DUjsRwslY9Y0HF>aY}y{7lc1i(-9;54dR8*|bohld*F-r!cRdHw zbY{@=s@NjY10yb5+wP$o+o*#47vvr~zWN$e`m!2OlcwA09AL&sVS<$uAUCI8?{KM=S-9$h~MD_=o2 z_ql?lOd#TxXole{Dr^#&IfvF?+u5ccab+~0P8LnQy6p_PD#vnfXr)T9eKlsC1|jk$ zs^;E#YYv4@;D}F=1|gY-TJOZQ_MU7wX7%<0>y!7GKCd#!jt-w84rI8H@e@*#G6ETD zg84XeOC$v?f4A*6uGwBaa{MDwZ2I5)j_yGQX-E9yNzr~7p(W=(cDl)2GXy$pX|rHv zq9wOST0Fr(_&vcmR%v|(hu)RVsPCR9X;L^1oj^sq2cVk%-{F7zo=Q&AbW^@xnGgGR zt9{-ovBy03LZ^2><{em;Ch0Bou2;I}F6Kc753*D>Q==!Th)ANx{$ZrG)ESPmujwJ& z$)Hcj^gS19SkfIXgg@ig-l%fD%^1tsfqad|F%feAR;Dy)-c_`oE0XQzAF*<$0`aqmlU?UUmN{=t$wz)?#g#P# zdA>WOVvWXki?2{r?kNGj0w2lUJ<>h1mBV^!lweugCECt;N9Ns6qiIq-N0oTOexj6)|t|1!wG0dBqx&E6 zbof9qNz`L5cJhZxx5D@uKCg|L71w`pu;@{nv*$`9H53Cr5p3!X-0rK@ay$nZ76J9T z{wKJ~4a9qTQlJ^Lr_v!Akv~7Kv|$7w`6`9y(If5^0`8tKO9rwXkYx5=2>W>)f^VQB z5|`s&l2GEUeLpxsVbIfpiBnG*8T!t!D3i$fL~R9}t~!~Sp5cX6cadgDg%@G~S`hb& z1H5I2*~RGPVK+Yv<#n{$CL0eW!7ICj636C)(YiJt{_ex~Uj&a$k}VwM>5Y@2AbLv= zq-ES>3yHi~@PCTi>CTiu5qpQscZjNXHKv)moqJsPk^TJ2OLLKvY#7NFVHpP1@am<#lu=h8lZW}EC5u!;SAE}{d7IgE*U=dNwHkvFnX zxe(9F^OXfcN?(wLV$6YOie5>T1CecB+S4)$95%3Sgb;x(4#-Cm8a_;1uf>5YW*_CI z4^t=M*&SlC?+2loVR`R+q~;<-24cq&mmI;Qw6En!HX=TNj3{{Gq>LVY(iCknO;8Z_ zE}G0%YY_l5Zt&|r;ok-)HgT8+(!a1u&Jf+?2y$wy zGODk(y)Pg0INwyXL97uukk+D+u-wKz{Qxr^#Gh|cjF&^crWT>;XN;4zRxKz08FDjJ zsXS!WFb$bulQ+YNB^~;QKOLKos|yJ73zipY_x!esF!yV|huTer35qt3`(10=QG2d! ze4-}Lvg$6Ii+<)7ku>yP@aw}xtviO;Jf^%az$H&YvV4nqGRV@{FY&p9&N$F4CBsCd za?>-oX+Px519_{YQJE!=8rwL!6LOQaF4{|@I*A8RWNNZ(nwuxOcUE{JX+aYKm5*It z!*sxEZQK!l`ibput%_<=@X6&(>15ayJ-p;)GrVl!G}}Rll|3mUVtac?#x~L{Mt|YU z5WW2Qv;$H!xB|_SL5b%V0D~Kn&<>?0>0@HGbE3En#VK0IYGF$8K^j}st~$pcj*ScmEo0nf?7Kj5LC_x4ER>Iu!*VdJ*czH+7v!3dK| z+#Dx~@3sL zG<*#QW`OFcbM-$!1*FwcApP%CT1MQ&>Kc2y3ah_KicU>E6Um3PZKYKyaKAyAZC<_@ zjH>it;y2kme8^S{Hipnr%MY)q%tatXrvLy)pBkoS1@^$PdXO3Hg(OfgB^%F+Ra1$*RPkx*7jY(8zay6DO;{$E5Fg z8kPRCZ+iT`@2!CnPy_~+;k8T6b{H#ems8Wdd^9wkJWTI*?Cs3b6up*Osmu*C9$*<{ zK=mzHMVO};8{NPoo1UO%u`IhL(){gkwtqax1)f*2_=5GB6H??XW3sH)vEOZcYV1Vf zVou8SbxMAga1)+?LJ%NgK1;vms0#F7TW5}ULE{LeTNy7t(rCI-6RA~|zJ1T8BqSoT z5xV}YHbx@WJ0Kd+BQlamL=dC0KIdxC4m2`T7gDtE^8}X$5yRIrM%STChc@Yzn{}F< zxAY;^-+G&(vwn#*|0hwk$?5)P$(nFNwT9m=t4FB@)l{-G|F{+z z3!r;Do83)#!YzyhE*#v?$w8<084fI9(juD@ZcV+pp(rg$$u`wYD|x>L#l9kYkk8~# zICj0!L2JN#ipElebmcJUcuQVP8UX0>1>(0f=BYmXy)L?@>_!Ys^{zawm0H%KFI(kUD_jJx zl3ZAIIFp)}+lo;w_x5MeD~%Kd41vC6Q-ssAU-uf`cM?Q#g*Bh4r0vduPPOwsB7w>O z?js7T&CUq_t;&6uDX6t*UKBqb8$b+`sOvF&MM@KAEuWEn$=kcKS@JsH)`^eKy}@0j zW?bQ-7UP5EP#CKIPE;8BSv<qUaqN5_M;v;LM}EAXpx8M`ILMMc^YFK zJFPI-^$$o|HdgI_Tu76I^(^cDiO}@E54c!EVKcJp)B2D4;j}At8^LG~tav^Fe;_w! z13cp20*&ymL3|gG;OI$x)o+l~Vn;`{ZbOxl={C5&4)=sIy|wyrls=&JB!w|EaEU__ ztXxL<+FhW?)x97~^CAon>u<-8#sv1?-+gDUh*7daS8w^Ib0KE4;$6N>t+#gFChrVlFI|lKvfjSNLL3CI5XO;Nl_4ub2L};I>4+B8F5x5_TQeI zT(bt|*ZEp(<>-?`kZmQ>Fm)~qciXqOVsBFG@K37iP^T&7?Jo^Y*qrcHIZ9diYcgi6SP+fL6gN(c zdpkU6`S8tq-2?ArBM({e)=X#TS~^waUuR@TQCVUE+vaM2`3N&11b=nQGUd`*Mp0_0 zw*#3#9F~hx51QbaQ0QVvBf_p^z3ecQA9D?Z9TF1Fy8^4m?$y?2n#CFeX%c7Kq>Oz% zK2J!Buw9mMJTF%kAwo)L{ z2Sm|CIpS!!k11F1_y>MkI$l1@q2_f+}RK#}Pxx z@VcqLg$zZmZV_ohV^ioN{6Lo=?M@gOHYJXc*)MSyv{>(D5|!1PyL*)?h$G_97TR}X zq1(gO0tMelE`O?v%%0Y@n7qb7LPCjBJ51eLxmI z9JRs1w~sizxod6tD)BiUm?6rufsWE~3Qz^!un0E|kJuVC9NkATIGvPok?BRpXDR-< z4y-z#<0?C6Sf@%f7!ARnQmlpGI*F5Ys6BR%van*5J2IM-3)&uLPaM;v>rry#NF~$&-^k2LKQ5JOZ3(oBuX-% z6yL?(H^P3vjMUPs&sq&I*7avV`nThY-$>0gx&xpXKtE4%Hmb1T@_9eEe{|CbYqnW= zMLRg_`p66Y#JHP^GGdRL$Lvgv^*7?yY>+mn^*GIuWs`4~R9nRfm3B79P>;kObEbqM zRu6u_{eE|hfgPf$#dr3aUewdXcl+zEqgWLK?Sb)a8^bHuXMfOgwp?K-jo485)kV{P z!KcasAMlZ}>ze(%#M;gwl^|<#^apnJj?Y65fJx9ZKX7B1BLm7#(@S|GzW-OjEx|%` zLEZ>&Xp(-w8r+>iM;3Z!KBheSGm(SUjByzk)4O|+3|B+5qfl<=d70Eky>so}8s`93Y}LyOOSL2@3-HvMsR@HJXNl<-Tc1M2?xj7G0Pv$XZW)`rPI|bF6_? zTID!B@5l(m6MsWAAbQpjcqn6o!E?70DBxim58(u#6tn0hJcx2hano>Y*^2Mhoy6&ZP}Ma`h_`+ILZAmDu?96>@$Xnk>i|jLkO8S-&VaO<;)WwGYpLd$UNVL!hBia)V$KHSUz`7-W8Zw zm?lN;_duigr7@AJ8H`a$^|eb4aTLLJO3KwEWyh#3x2#qwRD)zSNeJJ_dB9DL6A6u8 zcbAB~@F+&tk%s8Tef(=f7Z0s*mu*&z&u@hzYbf3P)WnqDw{Fw~pf#E87^) z&7fVgxuSf`c``WRCh$qG1+&gzk(gZ^5QYe zwiZ`4Z2&AS(rq}9+tq&HQivs9d1Rx@PbW- zlAr~=SssJ8$xCEu&%3|f?WQN!NqQPcp`qD?%Z?Y5YE*-s7_R;_^E5y#T{flJ3Q>5b zMm(5U&^DB0bg3Zr2XUc_Q)xT&Zsm_CXwACnM7Z~0{Y(^)J#ar|wgd>t!|zU}(-pqw zUs@xHgP`Vw4h!-K@|PdLLaMH{4Osv-7eg)NM7^F&58GTjtQK@|9 z$q~>FzbW_@SG&R~87sy!a%(nM!G zUzr+s9*G%LjIZ_k_F82@{@?nFpCxPv_b7+omtgNYH;qwWf)`z@D`Xt~PaO9d{)yMU+XcV|)xK9epxvM`*V+%muL#G#qzm}$ zisf`BWcFN0$W008Zo?zJ{lbk#r_ zQG~tGK?{6Mcz1K#%I#K+lNz`+qhCk={484@F5Q#|hHeApdMe@d6Q)zhL;u7~6TiGs z6l&Wp{v+k(9XiQ6d!J(@MThXc^EzcVj(&*TWw^5Cj6JgiwyTWl^+?J|?HHv$bJf(o z2j+>+SW<#U5xf=njynQI9?L$Grg*R|{@hcP!r6`3oyBs4K(TIR!(IU_oFIzCLWvut zC#y7OsVhq&N^#Yg(01<9P|)#5N-n|wfTFK9C`R=6Xv2ZgY1?{Kz|){My)I!#K-!(V z#oF2+SIA1sz%-*<=_MPg2HSzmHgrGI#LwhmFg?rD#$6_bu1E=EL+|=K3MXwo;S|8& z4v|zdt=#bSBS$_m%heCN0QJe!di1S^p!Y45;bYL7p0YgvSf=usKBb_7q_H<+S{LQz zFv>Bi_HMLIwM5;p9M?5xBk*3;mIcPDIRF810{gNXPep5Z1>j<@%z4@w2gKit?3aBO z?l|npY7ii|D=LZf1vdUgfq2Gs_(L2&#`yBaM+pljPLZsKxuU}Nd}JMON!2(OahUgb zx7Y9y7;Ic1&ga*71_1rUQm_nU9e!5OLVpnEjoxhAgn!1bjX7{($^YW1Ks2Mov5@2m zab&{?WD%JRsf_O0Vw+}_=#v^E@2np5n(}Pq`zl^=feuIKzhUAB{OXS9y{POv&-;of z0DE(ZtHu6(X{ySQZ+w2JIO3kd7N{bS1)8fb^AkjF1YMy|P>D_Aeaud}K-gB0w)a4m zqD`NJl(;Sd+t~tdaHGn&68<#?!;)dcfGw@SPlJiA8nF~M=EIDCTVXJS^}KA$|Dgqn z%#IXNdd9bmYBGE$olhTBbeR+(;kKLi{JqgXB?CiwOW4+Do8Cv!FA|9KC6y#U!&v@D z3OyhAYahtlLa*3ONl5zJRUnpILYEcr8$U1-x%0bB>pSVrE3h?g0bqQqj!6BY(XKe9 z4fE6pKqziVy-0vA_)W+81lr(=NgrXWr*phP&LG2H)ps=bmysjv`~BxoAO3w7^n%DutHjI&hs&&wu5$HeBv z;0Zt5K##D1vS&z|d--Y{xAN;r?gL{P<#8>hUQGL3OCo@UI+7+g7^U;ioJ{^=-35F( z9)sYelJzt-rOuLEd4RsdvIji>nH%EEA$E5=FbO>0XfSs%=K)3%k`h)(A{AcN* zGF6BFU&W?AJ5gRri`Nh{4dKkR=vPs1%jWMm>w%9Sgq9bNtc}}M=ol{BI{ETfEZ(xy zCS=T>u42fS!1gSJ39@0u zuiKw^uTHI23(StGPJ%_!sk9G8NlAiu*$ORy8y_yq9zGk~UkV~o>PuTL@Ca;m9eHodDJPB;CR~-u?kvajhmPB(E(6(F>r~2Vsd~ti5>I>Fue4XU?6uu z85Fr`)gzR<=Iyx zoOvNBZixkV^7%&{xk!bUM5c9zy$~EWBM^yR+Easr3(AhIHk7{1I6_f&*DV< zvKCf+SsSq810hLCuuuvUm6L?g^lnmjKmZQs8J=6BZY_Y@ZP@XXl7GU({?4Gkz>gHm zu|&gTAW?sBfl_>fur~#f4F~pm(W@l|z7l0OxlGEsda+=P;srPX`(NlY|vUxt!uT)1tLz=$ZK<3_n)ob6|H4oa)Ef^`l}j< zuiv;+y*8|ztls`c6ylZ%v zUjXiQaS@{i;WW188Kt43KTtM@_=j0&TjVv=6eu9LEe786L{5$wsQ$Y3@o~{Zl@|T> z{iPaUPnXa0U4AzA`DIQ56o&=ZDpJ~m<8MY|7gFy!vXoqKm_O;Mglw-v*T9ai|G?KR z34t|xvQvj(r6`rW=ITK$5982d=X28R#(Sv@3?1>x$T^ zuexE8hUm#$^NB?Z0-_#O~eyN z9gUU!9y9fkizB254v(!-&zxRU?M1zUQoG7@rf?Yzj~w;%k_H0Zrn|WP4e&zAw$vY~ zx5m?f?rKu5pl=6{CWK%cd>r+bs{l-=3|w0fwBr#i02O^~R#s}2inzC8>ZbGKBfsKL zt^d?MzC&k}Q9hm_X$6Bm#~RMPn)Oo_gy*>U-u^5;{8X*8U&ap~rIXFk(LPcH+0F%a z1q-$~J$hL!B6&blj#rLTbi=1x$IlhFf%(*JB(7|R+pT#U-4PXBFyHA8KYiSZDZ!F1 zxf-mL9`+E;$<5wm#FeV^{3L98=E6;HX?d6*y~i60u-N4ulhNzVJ5j&r`|-YyaEd*U ztS(?b{#LqJ62_C?)8Cm^)2^skauqw6uNJr^Ca<=svGYox-oNE#2Do9UsBsAcL4zsm z%34}MNm;q%R!Qz=GvrAShJ(qA!VnLpf^1?qNIQ!$7n@s2+Y>KY=3QO8#j8ng@|1aA z>D+|iL^6==@qea#gliy67sV94Kh#{oLz7sz6@jH;=pb7_8sCE5x3MGHE?XR_%ARZl zlJOG*Nk);|s%Ud*_YB`>uuYb|PwNsoSwF*kVq1@j^WQvFWrz=O^c<{6F3ithrN9{8 zE=7_j?7%2=i`m^`&Sw^;7>zBsey^_WCHp*hzb)_YWN!qc#R zR1v;SSrJZt3f?3NCofv9-j2@rX*t=W)E~uS-%NkQe2e;32o*TDagZdr_Ho-OG23aU zviSH1bs{$Rw5&&uUv4fBFQ2}q{oepuw_07tr)144=DhnV&mWAE9Hy&8(&b>IPt{en z#u)ApcxHYu0hR=TR>?JM@&B9$P%7MtCLRj3cNA&hU+s9rJ^bc1Dgl=nl3k5;Ivtv# zHTWN2OEOJpC|=wEH*}o^EOZD3ZQO00!-(F>^>s?iO_umi2Iy0EDT?+oLhdk1@PTte z@9`9>Yz4W#tioOMCT*?Nn#t))X-{H)*8}{-yafZ2&EgP`2Z$l&0EzF(j0WN<$_YvV z(Mu(%?rkMNGaWqjm1QoVFzFI-^8-9>sUu+Ty`a(%q!kntrz`bc;dC)gnQ_-f80X{+ zx8j}iHCVo*R*oDWQk9ryZYg2Rd3JRh+n^M1N*|5(Z!5K1GrsXJp+b8V4fEHblSM5? zr#$oQ=x^uI9X-@i1BAsnkC;&GoJqwnwA>7KxS(#0K~m>U3RphODfdb5!2+IWvYZ`6 zO2>ZGdGw})oqD{MvE?cz2&00M4F;i@C(M<~F$EXCoz*^3(n}csa?HsX|5{wj>36*w zEY1F>52{CTDBVy;`n6Sxy-&utHq=ZFKYpE1O7gUXBT0W-v0~ICmz>%BSht$#thhAvlGt}!BWKYO}O$E#t$Lu?_7z913&cgFZ-3k;Y@0+QyY ztWTq()w>$%VsnTJ$p=%-*?I;Taa@x`3|7>v6D)&MGIFspzL5f20az5U&me2KEPUi` z8D1l_4@E+IWx2j)iQyvrFQ7jd_^!Kl~bq*qjY+v$#Z>hjJ)Hv|>OM`+MU>#NtTZaG!O~_@)}`nKZ8O zd3TdpY8cln9|{Jz9mIrOtb)YVbR41 z-@6pvNu>rTUZ;z$04Gw4(a)IJ0h1ti{SB`}w=dHk4R$;_&_IrfuH$31b6v61${F%3 zOn~{v4$bupkAadKHKI}Lyj|lqoNsmRXRW0?f9H9NUjOK@3SLb;`OeP7Un)<6ub9s} zEu7qdPBz>cmh|^E< z5;(^5knnH3U5P3-1CZ3m-kCb}n`fx`*nJ`s5y#<`o?O_c{yQv&JY!ATXp##9B%0w_ zJqNeK3DCysCfa&`dtvWVdWodz?c`gw#I32yk3aCE*amD8_`a{`LWo$G*w(qeK><6R zG1isTh@QIzZRVygT)W!jRh|eMe|bYlDd+y-+JuW%(L;nuDzTtr&*vA~bVCTFm}UL% zVG{DrAYdiKFw3A8dTGixXcRR^tVB{cRfJHHMKa98B0molZ~zY_^v#{Xn-xfTn&tyj{8D{chlm(NVd_^0=0U(BTNi*yuvC7En4uyjSO){0k|LJbCQb4)JbCsRwVbH za4@Y+5Eu-`8jE}(Qwj#(h0*$O^VwSi7W)~$F>0Y&m3iB><^lI+);9`P{+b5V$M-S7 z;x`)=ygqyOsR21)IxD>(Mr>@{zZ{kQLcH4gcR4?}Ql&SMx>b>T(rr!WyZq|QF5OxHPFK6a&Ky@v^>K$GPD9qm%{!F?;Iu#! zGA`5ju+o|C)+5sTx0#Ha40KX=HQBZv@EkfQC`60$HA#RXS!b^x zjzs23*oG+dJWwBTA=S^-0O`XL=fh_!zzqbPK=OUU+>|38t;e;#Qp%PlZTj?sB{}&{ zCIUA1MQJxm5Zt(#z`y)>y8sUE*SdYi)-}9dH&7CA*aR<*0rhjL1={Ana$X-#+k351; z^#f_KuB8`1v~BNey4rXbV2TeYr5nS0fn_yHX(PE-s_07w2gxu|+J5q%;yjYj#3^FQ zf$MviWvI1V{>OQ@OA>+Cee-1z8r5ms`L=oVD z35~K7!yv$;pJN{Ht|m&uGQ9>X_NeE`0v!_zX_X;b;I5jtW=z7Zyx>#6S>Ypyf7sKx zxzz}cazVXjes4ZBqF(J5fQ}^fS>KGtGg)90LK(}#hLr&B>N(A0c*Ifj>N4WJ6qR$O z`KbX9r5+Bc9PI$YoD?>{?MhHB*Zej=Tk$l}t7Ty{@TZ(^-(qwdui(^+(FF{B7mu>`v==Lhf)}s0Pcp@ozBpEyV#NBf25T-3eYgl z(8joDqo>17PlsKQfX^Jc#d#9Q)|V~j>l$G@QAn%t<{->D#!+_><@BLN(zotUHjm!f7LOt%44#5{RArM6Dp?9|{_ zxKX-Ms_#?oeqq+z$&)A=Efkr5qpL9Te-mWue)V`rRF+{o6YQ+E$0$lEpaf!$4i*-+ zOFDP!TT(%x8IQHgI~rN)4LX>Kg0ntXVXTxB&=`@PgA(VB3&YT(4NR^*liTR9fTd-z@#Wg*?39w3;V**eP}n z)nl{sFKv@@ht944sigH2E_Mm1A6ZeKm04u8I0A`vgMd%{3&0=t*!>EUrR;$l%J?v} z?PNLJh?8y^3HkKPa+eYOW1ofOKBH2_^?y&TSy;p_!r2V+j(hqdRu_yW3S6mQ_M!8KaolbFD~{*vc`G$5=3ZU*G5;ybe081k1R*^1!9m*a|uR zup8&mhc+>N$Ee7)ppZ|?B{e;=aE7wB2jBbkA$r;CY9YiptipAHoH;W*@T<-rqwI;k z?LAs-F{!Nm;Da;y_&kuP=fgbGA(bmCmBBYfbUkNX86qkCq+<%vi4UymGN28+Qh4jj z6(bgZ&sXJodkQ_c#$A_$h$eG|UpeqjXQ zT-HYrCJ%4y@FSHGOpz?99x}Unese1v8qP;!>lm{vxN(OaIF-b*@zk%${xX>NTfi`~ z1AX7R6^u-9aD}v@bVq(r>Bzh%ti)tI;BN1)U-{fD?T_q6*t5*42@XaJwxCEA$Gp5y z_0Lr#4mct^jL4))K#%+BXmx?(NBDP+s1WJbIc1l$PVeG+!llG<35YJEmb#*;bq^6i zX7#D!KMPf}WczC@u7c(z&_*tL6#o6^=985;r}hfmY|~N$R96GxabsimTNb}pWv+W` zNGUNhJ@kBT@6{3n{zK$}KAU>KNZa)Tn}J4}&ysi}&@(CC$lg=f(0T8)>S@IYN69ec zox9f{p(!?}2H-rFD>Rg}gv*DL%sIWj8Xpvt8({gTx2lCgI3|zckNTAWtkW;_>uE#* zu{%@g8+9J7;xtm%u<6O%Q+=ho_&XUH!#8+Pzt@k%;H4K=FJ8#|@U(qz{n!m7-~h0Y zY&Pz<07ag!5LwNABVD)4P75KcI`o~VuW@4D;#@#tm}F}Oq0T)dB!6}&GZ)|cu)C2- zKUY#WF`aU!jjkyFW)-{rdBKTEJI!WXT_epy?53z<%3cD;Au;fqN(xao|_5*^geQ0XC1Dm z&11I+$6ZG$*K0MVT!rv28L38mc2$YoST%%Lq^4i5vFYI6SK)IA?Eux|SwC|G#rW2h zT&E=wmPy`O-pYnzCSC$2f6!Gha#i{}GkItHX@6c_O)yL;?`<*5gw;-v709_w`XK0J zU$V*w-+!spp91t^a_vGP@j*-Q!|Q#vv8VDrJL{))p^|3h2MZ|u?xROQcxjJQBQW@4 z7YJ!~OTeRM5C1lgDO6AW#d8cG2?EqEb?3@q4k#A$($j-LS7(64bj(+K)Bj6T?CJ}) zm*lUqP|`p2wDa$tf2Uikm%Zdk3K%zfK{4`_P6zDi!lbM(J(Y^Gj}9TibX}USAqw;)Z8D3yW@q=i@o!!riBVNk_qQDVbaPly7w2#kr{jlL$~_Y|lj%Cx z?p_O^-GC!bk`E0MGZ2#jac@A$yhUp?Aq^7qrN$ks^7|&{SLO6i;uFaBrEbD3>jk;u zD1W>Qr{gOX7w&9KliMKm3tPD|{FZ?TbTPQPqRX-$7=}o|I}{h23tZuYU|Vn;J9A@D z2srtGV)VN-UFR@H>mh!MY^l4#@ApC>f@*;g!*MM~U0&Rx1c@fV9BU@sB>OssFV`|e z?zONOy-rSrx@yD+1%p(|iNC&aK%W=kGv?t1us6YqP#aZsgWHNlm_d+ZFW=OrD=yqFR|S0EExmpaR-pDMJZ9 z-6G-$yCpjYRDYgwb(@9y!?|H2P&FD4?KQeygCd6*(rk`=k%IQWh9+PnStXik6$BtM zlPYFs?*+5Tt+vQ75-;{7h1=s}&0ZVYDU_Lq>HDU&*_rNh5BRx3<&4%^%Eh0`-i^*` zX(#0{oz<^L+4V-_STF=P%6_Mvd$;dQ>n)5*+1K?%|2$NA#2BG7u+GcaEs>zx zI~pr|`DG<-=FG7m{lL`JsltkoMWVp&rzse_obT7W^L@!+65LFQ?s-dw>}-~Tl8&T- zNqB-V^Prj*AE+O*2jSn!>5+Zt<~ii@{S3Iu!K+gKa{LYJOo0?19o3R{^DgBBcKh^1 z`psIf!v6z{vXqU`Dc{R#?~#I<@GO2xr@+MmW>Dq(5d-DNL=}F(y_Fv}O9eC=l<5#s zPiz!{HTiK#)56aE<}C-G?IDYP#Va=-Xnjr@SS*cPLU#9wKp@4@X2)GL`Ojn&NPC=A zQgi?l+e5Euv8(~Wc=$;mY%tmye}7Np(Lzxq23eq}_g`;1KUYx4 zwFN0aq%2*CC;Xut;v}8eJF@&kFX;LQk-Lbr5$l0J0m4%oYlR?G*Fn=OqP!9=x~><( z#L^K&l$RJTieyuBQf>opn78VmdRwk>23I@qywnkeyDnZT!_GYvK~%jm04rPfAbZB; zCG_oc17Y-~?Yzgbn+?6!!XeGTS+?I>JfmsxCccuO=D>{g*XG)2c#!RAFQH~z|I$Aq zLHB-e2Vm1gQ}&U+#&pUzA5|L#TYdS+K1F&)aEH{cZg!vy*xb)VUXM%gM2@q}4;7JG zExw(Mp7T4y`d0mTr1WXY#gQ`Olv&;SPnuR|+r$h;Sn|xYe5t9Y8@E(L733WVx}yIK z6hzunzUid!bg7^_WTb1>`b_gGV^}QPOPecvx*+(QqUhccJ zIs)Pfx_A$_iJ-v3;i1w%`#}ChB;oK2WKr=+_-0wl{Pacr$-*poEqBg5s+aUd4K-QB zShC(JTiq|kwJY}~1e;V*>KzwiR2kJ?9F*n~$utGiLHX!Deo~{~zQ7D4QB-!6d zJf=>9;Qn=j#Ibz7^s9!5Eq`=iE&9%u#7OxIa%QT*RKP)v#3^4eu>XOK@>^`(RvkI+ zc3Gzld&_+!l!WM04L|Ryziqyg1!*j!W*xITO%SZ9|@~@4XD5jQOxmAgygXbA`^kn7YJmmCQ_g2dwoQ?C&yla(Av|N?Jd|>B z2obco9G+yBi`5Y{AyGGsSH_Hzst$p~g*y)Ui2T?Bm8_r*>CqN|PiB;ES)2eZOz~}) z|1;*-kpAX46_}X(IJbG9lf&pAn-=Tmf+UfCowNyGfF+AXpdTXK5Z?xI( zz>YLp5%-@v>5ZI@4OJwZr!(l7-biwf;nSO6Ak34EmhYMNzcd&KVU6y&62=a#v*ld5}ep}E>=!WhhEjN>M#aKrc;XVZLfeDY%#Gl zi&UtrCt;uS_yAQFdeLMBEz1EnsDZ=33(7Bl5lk;Z_+ky*a0njN&a`nZe7yer97$6$ z4Qv$V{oQAgAb0gk%{zkNt1(X-z8(!(+VnR&DX)h!*%F1CU0RQ0d}50o&jj;12d7>= zu7aH98|gt#ubaM=k4xIaveudbWzM5Vz$L@lh4TNah5!x7nQ_XdG8c-&J?$UUD-(?osp&y>UZ#`_LlKa*(&w>_^0v{Nb^IXuAT#S zKv^){FJLn-m?p@#Z&8hs^EphPZ3)x_$%91>L60v)Rg>k6#DMdSMo+Zj)-2k z;S7R6H2tztVOEfq%ou1z&;Vl|cdGnQv!EGa%fc1EzQCVV(E86+OCrl){pE9$up2fZ z(nn;28aj2$WV!-L09~-il6SYyes_>)LbBXF?6Dwo7{9g*v1M)?15OO`@(C!9y zIg%g^{CCuiGqW?gvyuie8LXVjPQ(VtKrg?7)ZWn@PTjrtMhI)*7g+Y6N4*a587o+o z)uPUA(Wg5>y==jM7JX40I;{`-(#_&JeX)4QeXNisYi?w~6^9BAI6S|$CfwguWPqj0 z@M|LJ);5lLfpa=sJ{M|WrqE|aiSf=6HHR=Kst=^ym%;yogk5>k^om{Wsk7+BCk4>` z>S}}vo|zMQ(&8`?A^~{RxY%F_hb#0~kotYKI@ z-*1c`u6tel4Ndi${t_fgc}O#0YnwF3;p_Yk{CtUDzuDG8n%68PAsWFoc})qcbnz7z z#^HTc|^*IUwD1JnQuJGGf$xMS2A0+7967RW7WsMCwnuK@3yjK96Nv zHP;vQNF)4njl45`n^clA-j#yYxS1qFr6OAfLg~@7yS3Y^TtSVWgGuG|Q;s>7s1bP^UN0WiaBMGM^8Ip}vkL0}P_#b~TyIssC0gwa%uJIM#Cyy$z0)!vAGs|&3y@v!5 zb%Ou(fkn&5LtN539DtI?t9>5VL+`XFg6dk5^hxZ4EcJ&Ha$Cs|$$-HefuaF?WX-G)Lq;?|9-i_@SiEN9_@O13xpbXY5n3Sn2o}{0f_WoO-|L^Q-h4_ z-I!?E|N0Ng*1IHJ!eJS@CJ}ssr1j47sCK#Q&wA+ zLPMnaIm5W`ZZ{>ir(DCcf_`bhLtoW28ZhHD$1MXpgUZ$Wzl@B@jANaX9LBad(6Z_) z)!$9R<`^0`&(y7i!ontD&ZAJ~*-^VqH_>9C{XXJIk?$WF$ASgm1cFXH|3R_vBW9>nJyEtoS-~7# zvZxnuP)mNt_PT`)@Xv@;X`PC+!{I!V)+3&xtH;MCcF{FPF%+$v;rgiQyJ9zfTSAAC z8D0UShnf;6n=*8~c{rJNcdz@kop<5ejeYtO;BPk3z%2@E(OO^N0;O*z^Oif9p8#s+ zC%MyvJW@pbCk4gMt0dizTK`8BqZSPrUK<<5xjW0R%x}w31wjBmQS=L93@%;(YP(5} zO-^iUd&P0a4_nlzEqWh-~brd>6I#fw>#?5I8_5{KQI3leTzfL0BPd(yt! zx3H~TbvTa;`%dy$a|maj{qHQ&q2&rdsg~wuYs<>92V4V+30$n(kZm}HO6lsZe&;Vl zk;q_x6yzpIlWB>e5I?i^y)RF-@3bP_nBe-6vKdFr<^V1eeaduUJqw&z-_FcK&Jy3T z^t%{xOp>vAK*nabQ8a#V$KxfgfU7hGuOrLpv}{-y+Z_GaXk-vqKug1WgijvsSW7@a zR86DUK!;V7l7QeHoMP#599gWIrM*YM`TFVXbF`MWBe4xcJqbdC2zoIn;`H#GF6Jp)#c=rvn*-VG=w!=>W}kQlSKwjb>@BMNiMwgKUw!G1&b$2dfdRD9tIHCHJ)fd!W#Av(CpZR~St zRiSwC(7w!S)&g1-Zje+4N&K|TsvIV;s5spQ3=r?R>PVlZK`}&%?FE1?gHzEa?xiMk zd*wSmRG#eE-Rbd|>L{h9pAS@@&qK|$8##>U{#?uGEk`Oin5Kc=Vz#xjct z_~B5kvBv(LN(0_I++~?Cc7iV#%M(n^7)3V&852%^P~#B^c$g{2nD-Am_Lp`6%B!!g z7guhrF24fUzr-vhx%o?yi%!}TFse&o^JlL;(t+CH{yqvhulQ9f&bCUlrdp!f^aB(2@A^~oUU{f`+>%QVE zfPQkNiV*iJl*tB-4EEh@2_?Q`!98k@Q2M9j0`WnL5xhZGOqytzpWwT`O@oX6;Q)JN z7qJ@r4;WAAA+9uAlP#|d5*DoAi%}LKK$!+w<#*On^%HT4&l~_c&($1C1`@MqI)bj# zz(eRCvch66oFjoY+A%NW$+MUYV%Bl`z@p`g4|pox$q;+s1;Bhv@QV;C7lDF00c7_# zg1qUj%UX~*jYq{WT@{_WP*%Ui)dwD(9dS17)>4xY2ShqkJvqe||8CYWU#u`Qbx~L+ zXw-XENoi&|cR-0a-OL#}-X2&!eC`ypxe{7LF!cB26D_c!R)=s}v*Pb7v!8_A&C_?b z39moN^j`E&-pY2&q=z%j}kNd+vZ+Lx0SXex$ABA~+6I^sHztXWp|Q|*4(LP5SAU;#I?))UAV zsX#n?qA#pyYAg!$G8!gdcaoGG@Nu1cvn(Jyk+SzZc^rv`u1xw*%WbXa`R*LO33R|kyr2)xfnZ!H zrSs%cNVG+$J#R9yNY||Hqd9J+%Zb`u*~~k&GOM4b892`5@-690u`l0Fq$h#KFbi!> z;sfTt^}}dZ%uDd9!wfQXh#}XLt5b8#sFU_qErCYd*`Zk9WzW;}frJWNAX8CqFz2?L zE%mjv>$hk5*r9fg!>}Dw-^xbpqb>t~=|B6gpbcGvCstMJIb`(BH6R|ZlVQiYO>7mB z8b;b!|Gg%^im;hJ$}y?wIl!5LV~*FId>4RYKM>fy#?87Z^}m^pqpcd|ei2JCTehCr zLeu3$-q!dQyoC#M6hBzA6;&o5IhpzKE%t1#^H3$o%HGcbqv33*1JlgV6H${vbLpts zF@V4h_WnY(JS8L-kVS_=+B~!`wt{j*pnE|R%9^x<5(K;l!^Hm9J-Khl>O5?S_YjQ5 z>A}T*bT|K4^)j`MUyvaRfKNsDjR*4o7j$-aCNc1%=wA^^gzT-fts=e5Ps>G^+2V8U z>-bm2=e%ld@)pN*OybzNsR>D>fv8cI?giaDc%E+`2_y|=A86JCcDIz`$fQPAiZ31h z60KWIk6)`281HUb@wU%bKbq5)(!SiuY`-*iS}=W!`;aarodCbCDmUY92x*ffhbJ;7 z$Z9$=8Mq7^vnXhudzE8wSC=VKRPS(!6+QVna=ERInyC;-D5{{6rJO|~KmmOwSz4&7f7%iIrg zRM=6e4S8AlQA@Q=0mpSU4Ekr6hj7#P*`U#*2-w05@FzQt11n>crF7H&Z^Nyc6ffsa z^nQBiIA+$X0_NYML~UQEpvh8B-XfD<|T9JKLSR+xaf~F#+~g^vOu8Ag-0wQ;wBf4H{q<= zVv;?VyFFwZY$&yto-VqF$jFsFxXCIPLUd2}lo!|S9Vb0^ms{b5fz2WjcG zHociHlCjkv^dvd zKa&d%;*gB|opt7VpVKz#M2RyYcROKkjzE8$x*uf0hy}50_-LzX+L3&H9U)U~o%xpp zuYT5+)oHD%a<(~c%Vp8cxy5n5tY*8=&; z{>-4=)SE%B+l>D&xn*7;V~_f;BE)@s(F_IynjT(_>I+m?)m^q>eMH50OS4|YdQc2r zuobUK5~3)5{(yo+B`F?HT zFnl?*OQ0|7$qQPY0|+et-OT@0y|(Yp^JO+>-RyfWe3&M(!i9p!u*{O5JX;&} zl|7KOC_{*R3cA1TSY)T0OpriaCe$a>vlN7UCYFZ7?Px$zC8W7oFg#kX%%x1_Fjonl28-1Pww|k@%W&ZKE z>#bSeWN0|JJ%F)+tUK8PVvPCTAIljBaJ>Q6)a*RTQ2|UY0aG4;lHNe9zq6r#RlD@RR?yeI^B>FAZG_u^VuvDR`P%@1x zzCmK-mBVT?lj+rqU&t`WIA5zk>81AlUD{fF8ytMNs))(*CFW)85G`pUbwNP7S(UQFA5KtT9EDiN--z_Y69WCWJi_^hl*VSm#HtOE;39`A?OA(b^DTV|#I8@I zh0FuKg(U`Nevok(d#RX^GK=*73mn0-Ki7N@c$JgvxfNDya!4q+vk0g$-AJ}uk+*I33}ie6(~_fThguP7{W)5Pk7ybnd2E2H=RbBIBNkz-_SMd3U3m$f zUrX}+`qfX2w#y&_#r6^yzA)7dGcU<5_gB+SIq=lB=Iyyi&SkU@!%-N(#3vKl7%t(Z z^jG{Ci6Qk`C3@cYkNuDR1I02xE-71yN@kr)UCit{moQ8$>v2u1KeQ>~?pe-oouZ8{E4wo5T2$rNWuX+TPA?w#6>jNWKK$TF@71xkTb3Jaq!u) z>CEdtk(AaTYVRKs2ml8Pnm0+w?7l$b5=?FQIng^~i^GwHLC@+~keht+#?4drb1&bLA>1$}nt4DM0 zvQ}Ba$z<&cI2Y~NOdcE>6r&Q#h_;YTZTtOCrL5fLfgG()1xb-%+R$_{?$Nx~();xx zGxM#9*9gOZrp(AD2pItt*i$VdP&o*{bmO zI6o?0ooG}jg1~$nSQ+bjhcv;Cihg)S7_ZBV0nBMm2~anYCQcievqMSl+*DI_#v|Z8 z>*`6j7_`FR4dh^|+qJ>GKde(tpL(JEQ)7s1vQp<@`y9!y!4(L|3t+HOW5 zy3ZwNV;uUePlQv{_1l5+%Rrwn1y{&o8uytq6DvSp*;s+L9^>t;iBfj;uz5q$?R>MM ze8_z`FCpRetRRfH+uC=yZsMU~z@Z&Q(c3DW>RuJ-4!&+)W^%PAIVLzko zDeN%DK8>YFL3KjK*FJ4vm|y*Ty{Eh`!EE=;8^zOV`_f-xr~<`hXL*WaX2u71^|liV zq*oTqI2{n*#UG5$orzRBNPJ_s)~NkvRq{EZ9NOTRp4f>fc^1v)pS1%TllCY9xQsea z(y5wlQ7i=I56=!gFYCb1=n0T~QgBLoI@5*L@frFAI0&4F!T@LD zvE+8~;Uh6#vZhPFic19>(mMSX3}Z+Ss1_oBIx;Uw;5v6G2C+69vhY90&omla8Wa3xkLk*kcX7)sQ$J1BCJ@>d5 z26QtIXWYD9%LMY@;fk<=2v87yO8W#S0jBSQF=E;cD%ZDxGk24w)jMawmwXU*XOh=q ze-T)gOUCiqK$;qQr8fCniTU|5xTk2>xq?bsLiXcwW9<|0E$MTgLH(Qxmb-@#%L`z8B%YKmF`Tkzk*-wh%+ z&a97^_~nI|O{?1beJ=`rE`HB;U_~< zGc$ZFNL!r=C?(p=6(>qT9j~nC4lx6@rZq#d-^Y5s(8mW%4!QV zg1n5mjyf3@12$h79G{s{>-?e9!a{N4a-YGQR9i!FQ@J7y^)Fwi9cLZlSJYtzl;a(W z0O$K&An^(94M8F5w5q$oNyL&(9In-_7Egzvw>au;^DmwWOKDwIn{*GmKQ*zZ%9Dn$ zrnN4Y^BYV1`)ty3K1~`~lr5l1-}Fwy8%`ii=2HYV^j~NbhaF@Y;sXlV&Q5<7- z_z|6!%((84&{I%B#-VYF>m35Ja5U@MkDoS{nC}rK4ZT549C73&&Bs?dQFVGe&Qwel zEhL9;9N8S2uX;f?v^Jy?d{M_xdzbyacD+biV$4uS_=irD_AVy2-oQm)ijG6 zB$_N`XfGI*{!gt;zTL^UIrbMj3*Q4dtMV1ZfHfGrfrf|`V4f=4$aKT#j%Y!{5_Ujq0Z;&KOv{Y=YZkpm%HqaqB*hPvz!K=|C?pg$$Ps& zr;>HEra})A*&y;=WYVj(P`%AkaB?GI*`*hTX-|!l3kCW9GLeUh{sOf?8Wws#Yv%gJ z`&t*WL88_naaefnf6Pc*DSzn`2^iiD_}V`zw2beTFo$JWEs4dK3$ zKmF9|{z#@+6wt}*> z>a76hK5NDE)n`fTFBKx6e~t))X3089D^&@u6-V*PqyD%^f}`aIj*9q5#wG@HpFFxv zDUSxk2-Z(dXXQGBx?_KMn#}1Z`qOgQCdt8lf_hQjeRMY6!xWrZKTDPP&QBjh&gvhy zCrE3m-J~gWu9ink>Z80%CU*j>D20ZP2^<(~)Ln`$uy+dY5@Z`0+n}-!+eUDRhpUOJ zi@}30MHE;CYTH6C^4qVs1i4dMSl;;=S>}*!Y;D|*Js6Kdts2EQ>4n2621;x2zuNfz z^)jIGS<05x`PJ=M{@tYcm?VZ`8|eeGED{E*SK$Ui9`Vi*GNlTr-Xfh*XS7q|2rwu& z@tjnW7`y0|@&6mX!69bG!2@}u4Vrrpu_4{}D|cj)Q?@=vN+7BF&}oLZsu~G+k9?$L zN&Xbvw48HQI@EuJz*z!l83};j<`O5lQ0kHu){L$UNm$q!ju4J%aJ?17abcCBh0VEV zWGFeQVRRfK4#f=JXP3=Q(eqgn4of|J)c#x};SS?YV%A;_cztbcta1@WN?8GAr0JX^ zhrn}y+5IyzaMBQlR?n`N!Wds(n35uY;NVHZ7Zt)XEZmMy5a;kdig}r1lN!lqum_P} zC~p7lU%JV(42V_fGYdBye_|Qn-|k=L{R{feE z0E?mvc##^Yqw+1GF1t}Zb8|~9>fx@C)hcJbp#I%wu4v+!|L*f$m|CL{GJv`wQ~mO| zKRJ&PW)yhh*z9O2Xxp2;lHUh6Zs8c2aU|u{#VYD?{rn!LV?&v5N1^pVl+}%g{rU139 z{52=K$@!sAIYC-HeplbxQ(v)s@BStkEAcV@F7N&)DPd=Rd^ z;=G&wue>4(blq2rY{2eaU#t_YyV^ovS(R~PHBqaae412!DLu2Xx19JYjTjcg4r zzrgCpsfl%+mFOOjs!d4V2vs(ilRs{Kj8g=Sp{0pic#(q9G-j#<6%g<~e~dg}*>O&G5+nd<5+T|m?}#FKD*3Elt**V)Lo~$HDE8py10`Uq zFnz_nS%yOz)z8*JsH=YsL|?^NU$qapz0q2I(cYS}mjGmPeIyv~c>S9>0Tu1|PkIUMYQoP5Bcy@)J{0VilKD$A<;tv-o2dVeHFjpBp{7AEuPlMB5v3>SYu!mC1I zM-|r&l+}hsJsF&QGQ4iWLc(xTzfnRRyg)BCf3u+sxTR6#1qJhF+y|q56+vEjFKxgY zh|#5Rt^E2>{{z!7zaTPh_4UQF^Gq`&tZU>9nN@aQelbv(ci*P~oaAIDKS>cJ-O|arc&)W{!!8(rN69 zZ9yYOO_94^+?foByUWs}^lutBv6J)gS2c=c2H24cR~fmum9KKe+=}HLyC(2luq~7u zTh8Y?Gc(OGN16~o{bSA%v{S~}cDZ17vbRt&{Jyqm$Fw7?<(sS@#~efweXE`b!xk_I zvs#9k_@AHQc)C9-rO*Hg^2@hmlZMHs6l>&iu+E(V9aTlbQEs9)pM8;eZEkGd&CE{8 z>ue#y-Zat=FUZY!p;Ca(@3IFjCLfUxH8;Qb(p_1)786}wUBWwrU!N2CzPwBCwG3*Y z-d8D84h?nF)6RVQB_)qH%xkzWig!nQdv#MnyExnnW{~W2{nQ#<9mTJHVCP`{M>&sY>aKYD`TS=AH{7_{QB#(Rb zBg48czWjR|;JOc|B`X24Ewfrf?>(iRcN~*`sxeQXkE}c+oZ6JK#TVesJ_~Io>9Xe( z`w7R68ZFn`S3-Mb3>?BO$2DO2w}&Tp@r_A0+NAFmz{x){y-wnPC;1>5hQPp#>U3Av zM*}Eg`JSTP`Cl@}f1~}0AWdT8#bB-RoRAJUbsV9q4x};EM}J`dG^G*R3cifcmBUJz zXb8(DJAwF#hUFk3RD0`%TFD_DU!;JKRF_1NYAvm-U*vs%C=_y353-L)IX$e={!D%c zEi;)!Mr?od2fAxX7!=%IOUw4wgJ54)Jd1A4KC$p|>rbAx3CrrGC;(I#KVlk1unSIJ z?O*WPSTzWtNQ_@{JsAhQC6_M(kJy6Ok1Q>{Q|O06YNA@(|Hv$`%(_WazD-aZYlyh{ z#BHQU!5FE0Ccz7O(+)F27~PSjG_05klVoF}z1}Ktgc-t%w8rXWjQ&ysT6NX7&E5k& zOTqB|)tMw7h}XRVu0o)uVj|bOPx13#HM1-rJ&5jLe+f(Wb=Q|%>TQ{c_^zp}T*V}) zF$s7!HEFkX#I^jQOgo+3{F~uHQ(ek4@E&qQw-*+88)=GcRUnFfGN%`nmisFFDN(J$ z&6)|pr;g^$IDv;Z>|2*3ug1%m>)Yvew3F=%kyuaKk%lqf(0`RM64g@1?VY!^l&gF%$#VyrIu8DV z)d!>H4(*%$YdyyYWn4VxOOKW2IVs*l=Biih|}2-bQPN+(Wu zUHtx?b)aqi*KSxW%D9?(=eE(Ss%&($?~(5Eq*Vd;)ndo;Lr`#ZywwZJSW}L4D##Tm z#w8<0`)2{5Q1v5lpMK#0h>dvoYgJY~w$b)z-GDnr&Y4 zbEBRaR=rc<`zYN#%fR~2WK#PC=1r(sig*8NvTl90OfbG-Wb1m+7iiPwz{Sdg?LRr!A!rwKkGPcpqY#M!s+ zk31#ZP)3YMqaVw3P%Pvr^0q#9SQB{-Z|Ul$o_&#CR!#A&6^2R#f%BMa@sRp73aY*= zL1|nL0$N&3BjS$XW6-`WX?yUybjci=7YiDEl08z0bt#Q+xqNV#Oc*n}Q_GA6Vq)SD z@v&x1&W5%V%X{ihj(^_)jz>T^MseBvI@x&d9;AdRg#0O&#m_<`HV*;Sc*%0nA++0l znXG3x7mdOTft{c)RU4oXrxuJ{7)mCm&NWZ(_ZZ<9#;vIVazA=RKPu6NHPocuRkR`p zeJjJRzNMOd)#H`J&GJsi5HsxqcvlMlU5&l!t-hFN6$B>ToPURw>={W6rz)Tdktg57 z^OnZF1cASy{}|=nJNu($H&AcujYH!C{8+F`PM~9^4|f^Mwk)UQ^k_ED)_#9N;LX@x z)m9>IpQbHyad$Lh04=bF+?40N`IT{4Jiw7FmaG2!SUbg73Vfw%PYtznW$Nb2!Eth1S8-WYza1_|C}W)YFkGNlL!dE6qJRR{Wot!U|?Lq2!2Yq zw9vw!21dkgi)-M3K`&C5%W(|I$RkKL=pzfbP$tH)G_J>&)f-$ZZEPfcv}%FW{gDKo z&LE14D67Y-2LpiB>S^71l-+jJ>iT-#1Qs){h2G9-=VSY$i3>@ zjm0|mY;nDx^?BgEUk-mYb6Q^&h_Pj5JG-X;Aq>S+%_2H|FP?t`&g9Zj(On}sl)w4G zRMOd&j3Ch`hf~;OE85q^h2qi@Ejw?7R0W-`F?j&5@>^q_ z4}N7VGKTmx9V)a588HBCrJc>kj}>eHPO*fr`*S+4+@~ zO=eo0_Wm-M=edWP;Ji=Rz5qLqmmR-OnP~WTy$i^|XDL2!qT28&=MTRyj9m6UkDb{HT4Vw{K$m;hQiXtUypLYB>*YmgQdpNLyrLb za*X_~mQ8>~>A++=;QP8Xt9IgV@ zpn=*9t#KTyHEtd8uthzn8~U8}W`726s=5Hq2ZAYLrRe~Ggk3_V7);D6jP`p%9?|y_ zrmNgm>1Q@OdeJT4q3|M$PN`ayrlDhoQ1l-y5yq&7yjrVj#eBoJ!2IU&2|D0_B3GkV z2Or;CrJ$X2nOsA9%;pYS3yi<};a7y&`C(R;swf-XyNU%q(QONs$!?pt6TekppHz6^ zC~bVk#}ocoh@*$4sVcvOWr(5F>w$VhnCE8A^X@VYb7SCUrl?rHw9tW}$CJxyk1X?} z6%z)2^>>yD*(Ej(?PH~_${+7@qa%XBAyN(-cE7+lB#`lkC;7$TSn6c3(Oa-<8a95^ zbUnb2#htRRQr9W}(Nke*BLOO)3{qPU(fuF^Ih0?;oms>dg3= zfjr?X^;fZK9jB*!ibo{WG1T?ZE!cD= zU}r$+Z16ID9=y!k?pDDBFHmmA$d(sCKfvBj6>&&^?@j3gyaDa=zol_qs^s*ED=s@o z1eJwSTG(#K^+H)%i50B$$iQEgZV|wZWzjCvBWllMF+WY2f^j=ACnws31{BXy6YvNh zb(hqNni9$$l&(3y2At!$om6ukB`mT9_!w1{e7@Fn(8cvf$~JwN1}x9Pc$M!o;rBGYW|Wtnbn2T?48H>!TY&y&v!^P`3QZSTdfsF4{LoHhvj%elgAURXFdIk zV})y}mKz*l*OKf;F~zeScb>3~<&^?dFqyo4;F`%X*DpzBQ9=WypqJWWUq%b6lduKK z5-5!UB(o5#GT604Di>m_4c7%%T*F>&O(>K++SE(!w5hx_m;Utm1bOX=DMF8|sp!fO zCkfNqeN4b)unF`z)uK4`;+tt!4{c0*&W2h)=sZs3nvOta!W zd37*iwzBAyL!MdD+g2mdS3}E`w}tlZ;X8fVvdveH{r+wvBuCyJ%-FrtXwE_IRiz~Dm+as_Y!r4iMQ{oUjeh|QaDp|oflT?+MB zA$n{uvdevR7y=sSIKx*9K{f&n1ksG@9mHiUP2}ywdt3tn zTIte-VWqKa?Sy%sj7YwCS_ZU9>{=Sxck~zlIyBm4=2U2l53^Uh=a4fo$WO7GLFs zpIco0%1aPmRnW87yd)H{x?O0pzJH6IjHUDBSqjDd=(t>1j@c%l{l(2%0xwTFqO!=$ zQ(<$@{<*No-~4&8S+xN=veyH;9&y{~%U|iP=z%xYFY&^=R48#W6}R%EhdVYwGysS1 z#R+CO3tNi6fq_l?+W6(+|1#VYs>D=vGcL{Qfo6w5I=bg1hJ)LLR$=Wy?tj)Iy~wN? znO`N)ny6#~A4Z#LHNNtvnzn#~^%<%`Dcf%{x!(Yem@kuE660@Fp zuyuy<*Xd77bUY-6y(kU z$FDL5dy=$&4~V9+kpuF2E@{2{uA#hPFy~d*IQzQJv|v_Aq-19gSAbP?vAh~Y0{eXq z!HQ|sE|P~_0$wl1VNO`!q8Xb6;*8v*se(_=tO5N~qHT*xA#L@pF(Q9kPtg`OlM_?j z#E(7;PT7Fp8m%_3*vYXG&heA)q;tcZf&gLvmIf^iUpVM2^2kv21E^~YT#LXGOJy;D zZH`{_d!jjwvX?T_j#{em9(VRFj)&*%O7z19gS?fMzdoudQL=M&y4p)xuF|#S_vEqT zPC_O3PCqE(OGLzELd;WZSq7vGm%@seI7 zhG?1(J^DohUlbDok`x&6*{JBQ3vTtJUAaB>f?OHR}t+#QgCTfu>ZWZfN1?nHS+&h90(n1|NAy)Q*@jp>qCuGh+ zh9;YjRq`j0O+m`}5)DrRVzQ*ZMHT%>&4{^i5`xeQ7J?lk797H=rNGDhO7gSW+WiPh z)oz$zJmY>q6))tY0A=j^^Y^~deZr?s8zZ_zB^2*vu^2!oXQ>i(Zp}z!4{JxDTRK7K zDu_2#1oGUuaa|&rC+)M*?ev4b2fv#BkB6A>;MRdVJmsbp)}Z7#lur`bxR{^*~XeJj3{V9oS7p!DhLt7+gOi=cZuo8E*}YH)Rv zWKQRD|2>9HrOvNd(mvhvG~ZsOSnH}uv8{~xS2hG40+0s+(qO=S*a!>o!_%uKE?9I)2~_Gp{kdQIr~GV8}|oU#is@55InP(Ac07xLA|bty>nLEpyJ8mgORGumRCm@PD2_N#2T2$uFZ zJ4&YyV{vQ-R%en6C4=OxFV~PocrTW`FN%l3ZJNMPy+@ydlsXDIz`|Le(XmA0x@U{; zHz4+s%=~sjwP3R>CLGhI64$d3F5>d!>svrc_@qZ1aqy!1LF4tLKSI6aZK$N@qk68| z30>JWUEk^b{Z4Zhyg9;SwoPnz_L(+Y3R0(W)X~9^p#m2~637^|LUGCX?PfwVAzgnn z*){^O;={3m(jr|MVS9F9-#W0`w<95-iX0L|$3?%Be~9Z_0)i$T3fb`Gn z*_WEUlfI|%AhR@Y_*V4K<*>cl3k2<*oR8vEF^{cvWJ%l)@ioan5m7P>t}qfQkJiQ5 z-?iq*4Yob=T}P52kJ$2G?9cre-M1JF?X@xPj?4Q0$a{->@TnX$-|NfdrGX;Gp1sE2 zw0i-FTKgn}TIv*#kpb zXI!W_IZ0GBg`td`K~)i3Dw5Lk3BS(xDq%1s@b z$-dfc^}(6%q;U`xfaTeh1hPw}ER)}?)M|tj#njq@?u=tJ zJd$_-G%c=-z!v6O@a@tvxw+&bgLr_7H5DpoRQjOvBOSb}kL2YJbsvK-2?(!g88k$f z$9d60?Pq9Hd?vwj&oQg!S6yKPKGj@hIO`G`_@xY6i{3Ci8!)I_I}z?@__qj>1z)l| zMCSX)T3FlzD+g9tSEXxAqHG=~&CH@haenKE;18QD3USTb8G8C{2z&)=(GdaZrjE;b z+t`i=c2KSCHU3LOml8d$8?UVY3>M%-^;4+9cn2BdiG!Yq1g(JNXXY;$NpPcNIKj$U zQvLx^<22fdvgwi_Tn^IDk8kamkg2<*;nEOAtz>Z=3FU{ebfeSX&)>bPVKtN&&~p#^ z@7vPNy{SA;MI6K}Q9rid-DmD}AN8+FN{1BI zsI>^8bDNC}0y$gNR%70bUaUNQ*(zrni;ctdfHF;IGCx{O=skMq2Hgq2esv5cvFO-N z6L~#d5A(JmEC}E2=nhm)^iTlg&;_UQ;Xt7=PNXJKh&bV%9oGAT>r&iF;`mgPOPJIK zbO!x{cejpIN_@8^U;Y6;uO)jMd8zhX+GnJ3ng2wLpLy%X2`Ve{&_SlpBG?SumQOUoSM7h8eQo=sJlw)tcWkdr=(bP8Rxe#U zimcqV`-MvY0Ph9&Y5O5Nz#Q3xl)(KGgH|!-SwAPfG3K6OWFKBp_(nOjq!x-g-1D>l z=l{`D`Nz&OA$p@QI$xf&} z_!Vg`^wZzJJ%TqEVzmo+RYvrH(*`2-g-Mv|wto(psMk(fHLG{<;IgE6#Y>M&B1*Y* z$s2$i?8*wBArT|A9aBF_4ld+fAF}&m2ykf5O_*@r^f-{8tG;RUTLb z!C+$i0mclm%koFL8F#Pv_eR~WuyXiBE$_?zvz1?mBg`_4ONcNgtd}H|H`kV^bU*lZ zoi+eTm2Ey@^ch8CV4Pi*noTt{dRSx6cngY=Z_!JRoPRn)qnPA>jp1R&Y*$XYn3A z14ar~3Vh*wC+Da-EZQ5>Pl77CK!|A}bZ{@bE4q8Wk`l0?S`4v;f-|TJ7PzGtNB;#J zxi@CLsVMdGc6rYMYn$n=!OaYFLV^eE>-A2ID%b(>1DnGGRFJTY3!ntX3jL640zwHT zcuo?&J)|HqYHX&FV)xKMA6vlZw+K#z>s?NXsW!8i@Df=WlyG21=^#wcOPdCRRrFB@ zPXpD=BNKIiFB`yaq70Yr+d=z_!q}Zp6nu3mbc2%AQFt_Fas<%YGz&4glj()D#gVS? z)!1db@4utBng+AHR^knD^HY^;Al`3af5&!?cjei&FXm~EM#c{m%NxH3epFK#dg7!1 zB9|JHsUZTRsboh7Qe}@e@Gm8R6^8#j>fvl4$6+-_7Uw#WrO1Icy7oif;NJ*dUA-zo z8%QM-1m8g?1emQh7RsD?+PPDEC;gj|H%Su}KTBKAxQNBd(s!n)r*)T7v5TnZKz1|_ z_7hHpQ?ugK6e93-rS9q_$F6k|CI7IA%u2h~d!N#V>d6EO9aKqyypD65q+pv;vpfl; zBq8QP&{Q+|KWHy3)@Bzbs|VL%pfjS7EM=Uye_QN)jpkl#1O?XSs|W075nSTImnN+O z>s(vAQMqj@yDS#m-uX*FPXZ<;2I$(tBY!@2h^_&?x9a=DNJM(RwQq zhY6oSVP#t59EhmsD)81pW^)WXPewc>_EV3Lm4Mz`b5r8k{Ir^ENav5x9LSU}|AIH6 zZGrP>XwIV)f?dd98%}>oPtsuzfTCvFqB7BJll?xKRE+*{MtvS-i3@2-MR`0?_KC3f zp!O(WX%Dxm}5VGM6cqR_q)xz{C~2vWx!JCQC!o@e05CM+Fw7 zB)7JhLHk#vLyPy$M3S2?iBm`YfbTlHExVbK>E zg)f~%?ankzzcLZoEKjd{U_;4QKK?mlS9v{B;ccP@5qYw|y#HQEq*@Yyv?O=v8{;v~ zej4vo^#Ch;gtZ>p6!jTV;YD#5=M`S?TffMZjICeq{vkq(aAD<%O8)J#L7&asC+>t{ zbh6wsNp*xx@ip_x<4{Er=68URp15QOdk;_yEKx(^&PwXRwKoR<%YiEqOJ2>-bXsSp>Y z6)iBfHL>rWHz;rfCOkq%{I$XCZ?A;gXg<2>47=S1M+eI7C*o95Nu?3O2zE=TpD~ZB z00)=9L6;%P`SbG3$Er%|5CJf?wbJ?SQWKY4_$-~fazn(ZO&Iw56RT+p(Dp+>w~rHio)jCDZ|k)wmZa|y zLRJ2$|1(m)O9l&Duz~OOpC(dq2n-F$K3>Nrf?-pSVi8cs$w%?p`WZxYd-gMzv{Y}g z!UHA7`GOHIY3;qZMKA^|aPgUW$?P##mClW|iCgSQLr3N6n4h`H+fPHT zRgoVG7yBsVkyQ(8`W19fjlWFmtXiXH#C+U!tO+Yic8NG1GWf*H9umu@=BxT;nNz(U z7{L|hl%82F_|^tudO|>p*VzCle$-Shs?Dv1C3^~M!2`y8>o%8T{k}?C~ z^f*9J^g@5}D5mA&MMwuvffN)S=m6IV*)liXTmTR<0cb%W(|q9SjC8$rb#55y%mo6> z-!CI50>V%lU!nlit$uOB3zP}&cmpc0Xl<8*t5E7`Jmar@WCoJrN1cYG*zAMFAD#Fg z@=>0pBe?lV4x=KE0m!V9v9M74xM^Q`9#tiNjem4ix3GmHx6^{re|X#26gmW9UQl%} zzPa#zOJLz6elRlkZfSk1wHE02cP$-_+}j@A6aIu$HxRq zJu;ViRtHGWp*5JLPiL!BH4iL>C~_Q5VWq!vSI+{biXw*79<+?ePJm8}RymP!hhr#n!z724X$CxTF$R-$P-$JTNM<=Ff{ztN^pi&)%bdK9 zfJQQ}_p$h5_PUeMcg_Y>yo^0CkhSVLfWKYuDdla*JLZ>QwsU&oh<6)pGJqs^GFDAH z2tt8Q#lU5#GAgmn9_@L6wrBrr9tbu)s_JaMAF;@Ch%RX9dMXp#DX3DRbF4(lx1jvh zEas9We|l)W|D>eieC7NW{diMV!isVSs>QI;i2=kov;l|=d$3`Xt=>*eC{8{w=knkN?7(}WQ~ z%}H?ANgMQi@vAqTx!2gZex~$l_%JVA70ow=MQ_H*>P?0%pS z)~R4oRR(~59Q}!VCUdLfZJE+60LZ$IER9xe8l{Y%u3iggleG7DqO!6@J4 zVfM|t;pmHNDVhgaEqzXvE~B!7aBulr)xII!tHxXHk-wr5->bQTA0pvUZhGliP` zbke?1Q4`3EjThM-(weR-1o=4!U}W2^4}2QZL-#L>9%hxo-ApEAS>k?9i1R#Y@gmoz z_uSuR9=bE&-4g*N@&Fd8T+Nchg(vx)18oDGnKBM`e^}7IVPEOCJnm)@L_u=YOn^zt z(?o--f=+`nZS;^LYeWZa&{sH1_)^8rYCw+cRh2U7y^o3emI@o4;W(2%i%j$iNTm>A1ODu)5Z1#} zYw|=-2mD|{cZxa|G11+zsBDDmScb3<&p)Wx?JS{dhq-wb?)o++GK__4tPb@uMdE&5 z>P3D^5`0fm@!zzt!-WQg{lBmVa2Ole=UT{8z4yknhdOdpteHzG!v`e{AQ37dS=^2gkL7_Vno?Xv6Vn{UDH}+WsuWlS{q{WT(qQVMCTUR{pNy1~T!HQh5DH1X(1=J}}FiHZ^?`35ZE@o#y% zvBw=_=4>p!tBhBFI1X*o*-^J5 zg4k^;y-dV>nKHwg`5*s}2P#JhT>s?<*vG4yqQLGv0+>4cWYRL3^FpvY(z9hjsX~oA z!eM9+{ZXLn@8^5-Bo(0_V%h5>u(QNCL}o6>2Wb>Ar>=GDS8Jp%z#2y9qtFXnYxcA`YQqHW2dV3OSmQFYZi>HH1T@5L;%Q5rGeG zVal8(XDOm-P`kM!1lxir(26$h{J=gM1aC*ekGRy9M=o{QcgfP+&D#NtX;X206@P?I z2Ti9S0NB&LchhF6$i>h3P+Mtfoj4AK6A!92+D4d5L;Tu)!x_Zlu3T;?hu@x2VWHa= z@l~-?@aUR4*=4#(XMK`FS(6*Kr-8|mAzi_~3w;^f0PS)l`czGH>_#JE#t^!A?Mj9M4=txlO1JZH$qYxpV*ASo<3>9a3t~3EibP|s-tb-&kZO;e& zaSgBh$zna}&}{W4SQJ2nh|Dp&RK3m7zOnz(zAwMI2kBM^v0%RnSmk*2nda{Kj6-87 zW}G7pc~~%p#$$Yd%#C@x(0E0)kUJ8yyA^Sd=Z6V^DH!?+d%=2v%lr%GeP;HveGUw-J)Ctephes~>yF2(oTh=M0Ae21v`^Nrs~XnQ88gN7sZbs%^CqkYM9+SXHM{m(VdOQW2`LHU z!L10DP!Ywk@ua3nlFrzzp5eulPCL%i0_^sV3j-$&d&z^biNc8KTWj}+0qGoz3sDx> z`QN+k>hP6lixb~(-`9@SqnqmIvcfY!Z(%q~#heu2(Vi|k)sW;f3F>)~AL^`^Zm};Y zc)JpzK^X@mtEZ+7S2(91h!`I?T4CHQ7CN*6GogIFw7>5;OS&trYWV#y4^(PIH*DkD zn?cr+4KO<=>2~T|6YIn7in5wWAy;Y0`uT_M970DniX!^y09c{Ro7!v@t)^zy|1Sr| zW7HR6#3{S@X#G)>gi)JHt=1a9r9*qxnDVS43 zl_64DQkug)^!Sn5WVk;|rbzqEQ5!L_c438mRpbfnF`@%Q}9dIe* zB+ON%=yW(tzit$?UC)u4bzGpnqx#_V_1jwRD$Z7#YL63Fr$E;%82Ew5a+0p3DJ+!R zDP~ca#OB_HfS5G)-O%~Tolbw|6IxytM&4tfNWq-9fJ3ME=lKp_dO#jOySu*pY@&PZ zP4O~FE@>R4xOvrENuiB;_H8Wb5iJ^|AJa+}pq}}Uovz@a#~9y9=QrWOjCj{!f#?EF zf1iXY{Nw1R4MA868J10(j?KqXpO{dnedf0F{QtQ^1( zsZ{mDrOA>$m!BSd9>LL2t8!q!K*jB1h)fw*o?cEOUF?D4@HbVftyM@8&hX3eBq$+j9FPG5QaG~AVI;wRlf+mo6g)--)#<03AE2eZ}?hq zUeY8`>)^ZYkj*zH4Y9C0&wCg)51bz3O^5^kk{70@z@oG2m^}i;$62Id!>a6G*Fy29 zhS1~N0VVavvt1F>mSC4UQut-fwFc@ZNOKZRrE3TqZ!*ZE6-smGZp{{j5D(_lw z1L$NJIq=2$KB*n&?@*YfEeZH;pYfmrp53S7q`sejgW$wL)N3>@n`I>?{?hso2fOE8!_Qgl-4HbH0qVr^X zv|KA;;F=LO`S?Ye+4&B0v;=1v$N6yD%=!X$tqKr~v%Vumq&5s_567X`#1iR{Ue#wY z93|&r`%c+Qps<^i20VIcefs7w2s2W&t38Lf1N~G9L7H7RylwZ1;NZ%pj=v{R`}?tN z8-47K@?ckt5l(J=(PB9d1_A_YNSVv{Z-8!f63Le{#TRgii!)$<6H z(jI4wqiwcvZ1>>yQTLMmHS-hnH1=KQv?6RDR!9?JPLtOs6yt58R>Wo#a)Wv~Anrb> zGMvn}0q%U!Y!N4b#nO-Sd)#6yWj`M|MZMXo)DN?+1l_L1rX5H}4| zajAohOJ*1pu3Q`TT#+>00O@VAjf)iA7{0KVc#s*c25-snGHv>FChR`8XAT9OXi?uoz>MAr}` zrmvuh3IAOH8-=~JQ6-3>sV89)FGR9S!O*<0wf|-?KSA*!X;49h{sG|Qk%eCelme(f z0h1_9F*Z!FB}w@geai!0wSMFe`9MX!6Vy9ltO0ogVDCI#>NYuE1^B3l&D z{)N#JN3=_#3*R}^YG11M@T1+rgGjH3)zs;-{c?;8NM#6*>m+}dtY_#sf_UQ@YQHfj zrbyfkS|A0$W)`fBr+CiAS0r<;Vm*E94AqryNt*U=b3k+ISyr=DS2iB3 z@!vj6X66iz8(38p_*ZN)LkuEMX{!($$Y|t0-k&^onpE0MPS79|));!%8d*QP)4a{Q zt8)27@zHjAi0;VlPVVmZev#liamf^=-;=Y{>QM?jP#0Bg{%9Eo41)=((s?yl> zrk-p?u(Tmn6l5fgHS~znLnDe`Of&1Moa0G7EdNTJp`;HcUxj7p#1H{8govo7!!JIuJo+&W%K3+PZq?oGC_TP_^(|2}oboB@G?7whW+3CUx|SuZ zsy^rc#+oXiQ*(45sfN zii=@}N5PTGu%)FIhX+2qy;p~*TWwOrn+F>s1*^+HL4&%|T)c+=3Sd65ZRK$m<$FE5 zUD|)Tylybvq@?R>el*zH3qG^B<9tW2anB0>?(~7C6z4d_qbeBE)fff?R|)hVccJB> z&BU6}^HPOeB63*bEBJfdrXTvw7L`00TE`!_H}g^%XmM1oWgh4DHF1R@`v|^-WwP%; zq(G3>wWv|GohKHk_%FSNP6l8V98`t_f!`OZbMi*H6mgrPvQ{X1>qsaYgyACtOs-ZT zvcjhouK8-HfdihJEGJ=1pJi{CSM(dC@oEi6rvHBn;yd`2`X@!{6PLM|JrJs7kf|%f z{p!TJknv0zaValwf`skezr)ylEx~?7-LPeZmECsfD2%xy``>r7iJF}u8cA1RJYeP( z^Nk-&LF~G-JLr$yS5Z1M1^naFfnM2umx@+dAC^5x88a|&N2(93?PW4|6Z^QyHY@=V z2BGh!Ql4_2N{;XZ5Eqzr8Z*rlNN*q;{>O)Q$mRY{$f9*FZ1_HGBT1PV&oIx)f%AY) z8alp=D0wjtz?oEZAcF3z;haF2$Z~rjb!be~e|q#fG2BfgxvrPJ<$B5h4QVJZEhPm{ z1iHJRmQw_ZC8HsEc*NsGuX4L;itwFf(Q~_E{rUsVjTk~41`1XR=)^?AGO87j==&M6 zaR5l5k<9`?W=B*1)$Oy1h+7`sSlBJ$#OWt-D%GeRvVI_qnO8(T zOwvo5EW<6|V;RM&jv(92qb|_yyPA!u=;O(HtdYX#rGd7*y0f=DqqJ^NYp=T8soRE} zZu;Aurmr|Ju)D~!=(%b!aXKdaaP~{lSuc|SU^xWB>!sCZZ5@$-U}mSm4RAs+RuUXE z@xVTS$3o=uIn0p}o&$|P9`F>PWZ)OH)LZI*#ff3g2zxZ?z9Hfs4S4J5U$1QB+% z#Ir32c)Z-k6%W0fo=9vlD$I_zgXXYNhfGpTDc={u+L@y7_Fzop#cTmTC4hVF%eLZu zb#!o0xpGV)MXXp-fQo4eFd@70+nx5(IHgsy8_OTmX{TNweY9YoNRm|2oEUb)aRb&; zSk!MeG&QUOC$-fa`P$RoCbY`(qEBD|6`}ji6D(-|9n{#A!M%OE!T>Y~dk3YFCAEabD)H5f4pp0~X7Gud+3L^ky_k*%}x3?@+6(^9~N_w*t6eqT=-1chaTF-Wu4xL}X z+c^Uw==3`7K@nc*|ue`5LS0CFw7 z2aB6lT^bXf!`&~<0`n@AwjjmTXF9L~T;pk+_{L>+uIq|-M{v66sqUwv&@0_bOk34W zla!`Fh`j<$I@E3OZE=1qU<2A9!;}5G$gIf02s958toS3G9=cIQTd*M6@{eR#u6MIe zX`!SFNfM_bWL^1cG31ekQ91p)gO+$Yk!iuy%t=)XNb{M?m(H1YwF2fasT6rgehq}( zetdBy%!X{~)Zqe89O0;3ltTWDt7ookNhlrbxqwfJ9Y*ZS^09p1^SlzdQ!@ydO}waa zU9HkL6#!F0r2|+0em(a(OpeDu&LMLATP+v@GIe-$(Sg#Mo_~mB` z%zC%SV>U5^K&}~Yko^&bYAQ7M=tUFrHW5|z;=60it4@F1h)fbivk>MhIR8rs7zUvw zxI!(@|2H~Af%2vxCv;fzOu=y;5VgAR>d6fZtcxp89i|Cs9_GDw?$ALV@LY|t5r&i zf!FuXxU{e57V&`fwO&7c^cglM>2zzsx%cl@Aa)dkINRy*UeW*)^~Rr8sFL`>4k@}@ zw=!8SNJp6Lp9$}$kyG-kGmwJ_wR`M`h|8S_pr0 z73UQK8!r0&wJ4Wco#ExF73MU0eRdJ;dRjsztS*HuzGl6h5&o+S{!G|&w-61MWA|jV z!9*R?H%pAj*#*^19rQ;&R!r~JQ%uAsE8}q|i-iK@MASj4ohQ0dsB;#a*3P9gRZuaJ%*<=_PudWQ~ggZ5c^I z3vkBC*Lh--v6pG{vE`W97i+O7Z2`8~Y10ux5Cpj!B~96$yGgENS;i%AFFB^s#+7n; zykM`A3g4(N6 z@Ye~04nt{kxBXJiU&t&C*|0SPRFIEjss8}${C0VV=$H?%7>(?bSZ_1qkB7z%*i? z1YeVX3ei{W`~d$gu*Vr8lbw)IID$MwxzR2=E6c|$p$MRfD}WWmG2venmku=26(c+69)_z z;YPR!CzUzG8K>Fef=hxuG7^Wf$tLcqAxbgHfp(jR^GEhb(-x5Ah-{mJtEsoF1znZm{B7^Sc?(wl4@BKDt zRC1>&mgel$T z_)TGC_XE06) z;g@)atmv~$cP>~JO}@Zlp|Nn^yHc}A1Pi$H56Hgn-P{|tyCK>}j#i;5vg960xUHDE z*kA&yD830%&#F$N^^-KsPK=j@sdMKSk?SMX%&{yPSHf6%Y$mLBCxJr|7T5QhKpWN- z1VfxT0g1f=7OAuz7>Q36Xr=MMxWbAhf20Lci&bJ`l*f#Wm1Ujfp{~boe1lh-jR#2- z6(N;HxT2{P>{w2IIWYo7P?*+OV`nD3Y-QH(L|Qm>$31^+^4UabNd=YIy$rN9%2h8c z?PNnb(m}1RR<}j!6yk;8;t1)v*@A%uXct{<)G9)m;UhIF)K9o82R&+No~iA7IL>X6 zL`4H^snL3$DGr;?=u5?W+Yw7*)YSri3_-cy)HNozZM z9t)sP-JMMHLB)tNYFTVr!nj2nPDNbeo9IBjyxlsZkzQMdEBg;4d;8hbSokSg?Y6ia zj0){*K-{ojMg<6JU_^tKnFnR}s?YApmw%D%xWE}?Ho8!w*6hqF#z6S{34~{{4k+W} zBN7Q)bG}x=#qB|M{VCNph-4a9EMtOYDLOETG~wiC6~#rIHfR7@l0QNqNwKobsy51*djAV8yc@NXc}q(VmT41-4X|ccxdk)4J-<4Y zdb1zpg^Avv4e~i7aKsY#Com}yo+d&@uoro+ICyh&sN0MnncEswY9iRB2#fPW?$rY$ zJ88*X2bl zuQkeAjLcZj=J`Z4Oy6p%VS9V@KT^G;--rO?<~X-lq~Li_6vA{}aLT;(IwwfLEs`=D z0tuFIU_3LrF+e9lfnY^3`5D*&;omUj0WwjIY5xdU5RIbqN@NQe2gK+1ax14jO?ju6=b~-tm`ZUD@^|fcMF{Ksh$2JAC`M%FHZG9=tqA|?R; z6)#FD`R75j#y^!Bfa>>`A&vheh=SVXj_E7;^422%3@G5xR+4j$z(0oywU3e^U+D*> z3Q}5YEfB4>RsfVXMyr_4sQ}TrmD0JP<4{^_E$LDi&_>(ENeTw5TNDyC@>cjeE2_4G zq2rAZg@Oh3!H7&yi|QcA1ZxARJNUeF_Ui{h*@z$$1VJXK2L=b3Af5>}stYnf5CoZE zoATj7CfEvtf=nhD1WAu5Jjc*+3bdebgNsP=IP6H0w@TT>PLf=FC1g$J?7Ty+VD1l_ zm~&D8xg=NV@g#X1bb2(7qIG;nl%N|m_I6>`U5-OsSJs`4M@i?LBX7i-E1Y$4^4ybL z*2P2j+SM-WoO9OADt_K&ogMUm%UZihibN`Z@h)042nxBCF-A*FVN=rbW}HDAai>ig zdPWf==NtNm^rZ82?u)B!){|stU%iHwjBIFUVKi;TUEiSPyfq-HF*uIS@k|&LEC2)p zSJCo0G|_slIo4YyTAo?sVu_2NW$sTB;vtTtbG-B`T7HfcE4<@FepRd_kCIJ~x#Y^j z%OJ6;UugLm?x1B??W=SVFB?r~{q4OhBQCq}8%Ex@w2YifPd+gExNB%Vzr6R}dne15 z^bud5P0PEWQ=`zola^<~Ag98HA3rg!`GJqu6a@%AXUOmI97Fz6HI>e@*S2()5BCij zaV|#DI_?Whqx0MdxSFA5Gvd7#G2)7lmgm8wMq>{;F6$4;1t3JHWWx`1^|r*=}3BJ2ScT(g{ye2m;xXMA0HAk zIER+p?y2X0$XZ1rt zQMf962iTB4VRE`or{%W!i9zWj?^ZwnKw)r}5x-hV&mm~<29nNQU0D1h;6O$RuS2D$ zNHTQXH6Jm+h#9v43UNXCY)16-?5aasArTjhUB!sMm7oy2bjkA9ffibl5&x)yq(y+5 zx#S5jNuq(;TRQfI2y)0&I+C8VE6`flZzbQ*ap@qaye#h?)KK3?@G>1eNxuhTk)-1>FzL|PvttcxPd^nR zN()ePZtGJU0vdT5Ora%d`8;&e_OS;O{^-?B6N^fVN@RWOJ(p%_IW8>*j~;?j{U)>P zD*>?8Ep7L03K&6t7t5%)Zs&hqA-w)-4kKH%_!kF02>jdw^|51z zZ}b=!JpB156SgyeRwz_sTSf_o0+YQZS9Fnfdc>L%U*4XnB#Ljq_%#x!iWyUweINvvzSE)HIt7?GWHfyV53~vCwAiH#o~? zSJ`neDS>FCL~9)T>lRSxUcnEHcUD75&5KODw@lU~$zR0{aad^M_po&GH9RzX%r-j;P1W?biX!n9Rsvc%4h&$j4>M8 z7-IlvV~i0%ncUhKV-&;~WAxv^{~rfdP&gn02><{PEdZSXDv$s$06sAkh(jVFArvZ4 zFdzd2pbYhdCenSG@HREQQ2vMVXZ#1!-|c>&JVigSeX92W^AY;T{)7C_yN93;Ko8cR zS1(i#+FxJ~*AGkY*?)pR+8_HL>;3_MkN;QyfBFBS0sI5-@4k=d-;I8A_!sUkt6$H* z=4c@M2lpSzFUY=h{VsffeSvzH`(Nc3<9K0`&XjzurG3{JFIP^t07pvj3BR z$v>)oSbD&CA9)}64{#6RzsY~9e`WoL|3&}*=3o1d@E&u2EdJ;Izx%K5ztBJNkLEw$ z|FM4Te|-P{^&RU+_Dk4r^xe)a{x;81?2E-4Dt?0ycW)~{`mZC>O%(4=P6b13^nnx^ zboozDoO1a^Xk&S%SfhBmh^2AgZ{qn<%0u{75?e(0az)p6ai&=ir;v90Z(SPQ%~*eb zij)JT%bG+S$=kMc2^9L)7jj>^KXbm`NGVkK4^7|QTpI8I0RH`7dXM?I2;cZ_6=0j) zRNpT^qiQ9syFvRKkiN){goY}r2HcJQNXyLZOZ^VUkpzG8?0HoQ>Wgtx>c35GVS~v5 zd=VY|3{4T0jo(`Om#>$$1ie1spVkT^z67a19IA_&!h`fm;?pxb37u>cgV*qe$H0Fd zhWLOEo1^HbU!9zK>_ z;fP&nc;x4CH9D#%U??@FN3ZA!qeKR0`I?9YU+M~1^UmnU{R0(*9daYd>}QLCkTJS* zLc1TyPmY#glCVMlEJ;e4a*Oj)GEuzf&q8bnFY!U9hRrAMLGx_g z#*6{ygctXyJej{w`(jETN@y=jq!~$9j}i;IY#1)%w8dsz<~fYp?Mb$ANpLRGv;B1e zH#Y~3Oa82~W;K1#L0HZMv~wwFe@imE1so%^Q*FMdY3uj#EXK&W63&$K6_}=o)_6Xy*gQOI*zwI$~ zH7{2f0w>!bkcP8gB1-;o#qZRX7Q1Zq5q5P3DL#xX{OW5+8+tc-=&JwkO5e0@+y4Kv zzGx&32*zY)Y`}fiuRlH9K>dZ~A3~*>v4RL9bI}%;rQxex1 z%%d>McST_nug7)L8_zlRy)j`9p>wgvjAQ5$N-}*g;imT%uk8> zCi>y|W|CI!<&!kIQgFIIqw2RMDzdxK3;;)5IvDMJTCC}=I-Yp$N!Uw=BVhhNY_aVu;?gC2rK7#$%YzyAkBS6y3*tKYy_WrGxa zrBh(neMbk!)PA(92G3VUCOlc`Bs;H~2qgUNbH(-g0ByS@Jw$Vw_08Y)bv-pzSyqYf`-A)Bq}#R~%lK&B24<`YqT=DQ{1G33*0QA1 zFdkv#zoRLkXmYi((yZ!d5qmJvY9$}Z$y zx6|Rof_4f2GaE-Z1eTA_ibTA=GHfgskX|=$mRhq*gD|hi3LRpPYDI?3rZz+Y3fYfl zBge5$vLB-u_s5g}_OOt5YWyTvXOdR`|LVi`L%xK9^CNt!fbb~QIAKm__qds7c&EJj7A zG-ILO;EXlZxhSv6wjWnTn4y7w|d9|;08k6olPzMOJB;lLP#aJ|V8^eKlgNW}{_KI`{qY^O$)RIFF z{h8Mo$?plsMk?mKEg}oJ8{Fmn5C3;q5zr3ZoU`Gwx{`q_pm|A4dCRZhk+5E6AN;Z(R|L|w$;vIf`uGo{ckNj=^kWKLJW zSgLu&mcgm`d*ma2&1Y4f7fFp)M`iOjeJ*zipUHmrl<-<99@=FFPK4c$_6X*-e{_D+ zA_@^4HTUM)hHwTBcTLVKj8r_{Sm(RWn9jvQEG#S;aUPuFWcE`7U3<*`81(zI65+z; zaE-Yh%Vh1$%?6)DKSpmOUqFZ(&8Xvev9gzz9;(lLhs33R3eV8f8(35#fv)iUyp($b zn<+;nKRDvc%v8$*i_6d}48NA;A1=dkWIyTJC_%X}YXK2?{pvtGWYDP<|0!5-3;XB8 zjGQ^Z;h4C;AC24itIzY>o;%>u#o0sYr}mExwO)eU5B)nzZ=t%W>RY#*ZpJYzrvt`o zea{f30Uc#Ysmx4#C1Wz4C-hE~1s;n6$DIGpEfjOrTEBDZ@$!!Wb8J9pOAr7600Byd Af&c&j literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/vortex_epg.webp b/android/app/src/main/res/drawable-nodpi/vortex_epg.webp new file mode 100644 index 0000000000000000000000000000000000000000..56df449bb3930947cbb45fd392cfd89d4223e9d0 GIT binary patch literal 6176 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: CatalogueHealth { + val tally = CatalogueTally() + rows.forEach { tally.add(it[0] as String, it[1] as String, it[2] as Int?, it[3] as String, it[4] as String, it[5] as String) } + return tally.result(0, emptyList(), 0) + } + private fun film(title: String, year: Int?, ids: String = "{}", genres: String = "", tags: String = "") = arrayOf("Movie", title, year, genres, tags, ids) + + @Test fun copiesWithTheSameExternalIdCountAsOneTitle() { + val h = health(film("Alien", 1979, """{"Imdb":"tt0078748"}"""), film("Alien Remux", 1979, """{"Imdb":"TT0078748","Tmdb":"348"}"""), film("Aliens", 1986, """{"Imdb":"tt0090605"}""")) + assertEquals(3L, h.titles); assertEquals(2L, h.distinctById); assertEquals(1L, h.repeatedById); assertEquals(0L, h.withoutId) + } + @Test fun titlesAndYearsKeepRemakesApartAndIgnoreSpelling() { + assertEquals(catalogueTitleKey("Movie", "The Thing", 1982), catalogueTitleKey("Movie", "thing:", 1982)) + assertNotEquals(catalogueTitleKey("Movie", "The Thing", 1982), catalogueTitleKey("Movie", "The Thing", 2011)) + assertNotEquals(catalogueTitleKey("Movie", "Fargo", 1996), catalogueTitleKey("Series", "Fargo", 1996)) + assertNotEquals(catalogueTitleKey("Movie", "Fargo", null), catalogueTitleKey("Movie", "Fargo", 1996)) + } + @Test fun missingOrBrokenIdsAreCountedNotMerged() { + val h = health(film("One", 2000), film("Two", 2000, "not json"), film("Three", 2000, """{"Other":"1"}""")) + assertEquals(3L, h.withoutId); assertEquals(3L, h.distinctById); assertEquals(0L, h.repeatedById) + assertNull(catalogueIdKey("Movie", "not json")) + } + @Test fun aFilmAndASeriesCanShareANumber() { + assertNotEquals(catalogueIdKey("Movie", """{"Tmdb":"5"}"""), catalogueIdKey("Series", """{"Tmdb":"5"}""")) + } + @Test fun countsDecadesGenresAndTagsAndSortsThem() { + val h = health(film("A", 1985, genres = "Horror|Comedy", tags = "Slasher"), film("B", 1989, genres = "Horror", tags = "slasher|Cult"), film("C", 1991), film("D", null)) + assertEquals(listOf("1980s" to 2L, "1990s" to 1L), h.decades) + assertEquals("Horror" to 2L, h.genres.first()); assertEquals("slasher" to 2L, h.tags.first()) + } + @Test fun upAndDownWrapRoundAndAnUnknownChannelStaysPut() { + val lineup = listOf(101, 102, 103) + assertEquals(102, channelAfter(lineup, 101, 1)); assertEquals(101, channelAfter(lineup, 103, 1)); assertEquals(103, channelAfter(lineup, 101, -1)) + assertEquals(999, channelAfter(lineup, 999, 1)); assertEquals(101, channelAfter(listOf(101), 101, 1)) + } +}