From d9c03814390e5b91c6935359fbfbcc68635bd75a Mon Sep 17 00:00:00 2001
From: tapframe <85391825+tapframe@users.noreply.github.com>
Date: Sun, 1 Feb 2026 19:56:04 +0530
Subject: [PATCH] Initial commit: NuvioTV as clean branch
---
.gitignore | 15 +
.idea/.gitignore | 3 +
.idea/.name | 1 +
.idea/AndroidProjectSystem.xml | 6 +
.idea/compiler.xml | 6 +
.idea/copilot.data.migration.agent.xml | 6 +
.idea/copilot.data.migration.ask.xml | 6 +
.idea/copilot.data.migration.ask2agent.xml | 6 +
.idea/copilot.data.migration.edit.xml | 6 +
.idea/deploymentTargetSelector.xml | 18 +
.idea/deviceManager.xml | 13 +
.idea/gradle.xml | 19 +
.idea/inspectionProfiles/Project_Default.xml | 50 +
.idea/migrations.xml | 10 +
.idea/misc.xml | 9 +
.idea/runConfigurations.xml | 17 +
.idea/vcs.xml | 10 +
.kotlin/errors/errors-1769668942713.log | 4 +
app/.gitignore | 1 +
app/build.gradle.kts | 115 ++
app/libs/media3-decoder-ffmpeg.aar | Bin 0 -> 3615383 bytes
app/proguard-rules.pro | 21 +
app/src/main/AndroidManifest.xml | 34 +
.../main/java/com/nuvio/tv/MainActivity.kt | 179 +++
.../java/com/nuvio/tv/NuvioApplication.kt | 7 +
.../com/nuvio/tv/core/di/NetworkModule.kt | 67 ++
.../com/nuvio/tv/core/di/RepositoryModule.kt | 42 +
.../nuvio/tv/core/network/NetworkResult.kt | 7 +
.../com/nuvio/tv/core/network/SafeApiCall.kt | 18 +
.../com/nuvio/tv/core/plugin/PluginManager.kt | 483 ++++++++
.../com/nuvio/tv/core/plugin/PluginRuntime.kt | 1029 +++++++++++++++++
.../nuvio/tv/core/tmdb/TmdbMetadataService.kt | 212 ++++
.../com/nuvio/tv/core/tmdb/TmdbService.kt | 215 ++++
.../nuvio/tv/data/local/AddonPreferences.kt | 45 +
.../nuvio/tv/data/local/LibraryPreferences.kt | 67 ++
.../nuvio/tv/data/local/PluginDataStore.kt | 186 +++
.../tv/data/local/TmdbSettingsDataStore.kt | 77 ++
.../tv/data/local/WatchProgressPreferences.kt | 195 ++++
.../com/nuvio/tv/data/mapper/AddonMapper.kt | 66 ++
.../com/nuvio/tv/data/mapper/CatalogMapper.kt | 21 +
.../com/nuvio/tv/data/mapper/MetaMapper.kt | 85 ++
.../com/nuvio/tv/data/mapper/StreamMapper.kt | 34 +
.../com/nuvio/tv/data/remote/api/AddonApi.kt | 24 +
.../com/nuvio/tv/data/remote/api/TmdbApi.kt | 190 +++
.../tv/data/remote/dto/AddonManifestDto.kt | 32 +
.../tv/data/remote/dto/CatalogResponseDto.kt | 25 +
.../tv/data/remote/dto/MetaResponseDto.kt | 70 ++
.../tv/data/remote/dto/StreamResponseDto.kt | 48 +
.../tv/data/repository/AddonRepositoryImpl.kt | 53 +
.../data/repository/CatalogRepositoryImpl.kt | 90 ++
.../tv/data/repository/MetaRepositoryImpl.kt | 106 ++
.../data/repository/StreamRepositoryImpl.kt | 281 +++++
.../repository/WatchProgressRepositoryImpl.kt | 48 +
.../main/java/com/nuvio/tv/di/PluginModule.kt | 30 +
.../java/com/nuvio/tv/domain/model/Addon.kt | 33 +
.../com/nuvio/tv/domain/model/CatalogRow.kt | 14 +
.../com/nuvio/tv/domain/model/ContentType.kt | 27 +
.../java/com/nuvio/tv/domain/model/Meta.kt | 55 +
.../com/nuvio/tv/domain/model/MetaPreview.kt | 14 +
.../java/com/nuvio/tv/domain/model/Plugin.kt | 132 +++
.../com/nuvio/tv/domain/model/PosterShape.kt | 21 +
.../nuvio/tv/domain/model/SavedLibraryItem.kt | 30 +
.../java/com/nuvio/tv/domain/model/Stream.kt | 69 ++
.../com/nuvio/tv/domain/model/TmdbSettings.kt | 19 +
.../nuvio/tv/domain/model/WatchProgress.kt | 62 +
.../tv/domain/repository/AddonRepository.kt | 12 +
.../tv/domain/repository/CatalogRepository.kt | 18 +
.../tv/domain/repository/MetaRepository.kt | 18 +
.../tv/domain/repository/StreamRepository.kt | 36 +
.../repository/WatchProgressRepository.kt | 55 +
.../tv/ui/components/CatalogRowSection.kt | 109 ++
.../com/nuvio/tv/ui/components/ContentCard.kt | 128 ++
.../ui/components/ContinueWatchingSection.kt | 251 ++++
.../com/nuvio/tv/ui/components/ErrorState.kt | 47 +
.../tv/ui/components/LoadingIndicator.kt | 25 +
.../com/nuvio/tv/ui/components/NuvioTopBar.kt | 67 ++
.../tv/ui/components/SidebarNavigation.kt | 155 +++
.../nuvio/tv/ui/navigation/NuvioNavHost.kt | 263 +++++
.../java/com/nuvio/tv/ui/navigation/Screen.kt | 88 ++
.../tv/ui/screens/addon/AddonManagerScreen.kt | 222 ++++
.../ui/screens/addon/AddonManagerUiState.kt | 11 +
.../ui/screens/addon/AddonManagerViewModel.kt | 107 ++
.../nuvio/tv/ui/screens/detail/CastSection.kt | 146 +++
.../ui/screens/detail/CompanyLogosSection.kt | 93 ++
.../nuvio/tv/ui/screens/detail/DateFormat.kt | 25 +
.../tv/ui/screens/detail/EpisodesSection.kt | 286 +++++
.../nuvio/tv/ui/screens/detail/HeroSection.kt | 337 ++++++
.../tv/ui/screens/detail/MetaDetailsScreen.kt | 303 +++++
.../ui/screens/detail/MetaDetailsUiState.kt | 27 +
.../ui/screens/detail/MetaDetailsViewModel.kt | 414 +++++++
.../nuvio/tv/ui/screens/home/HomeScreen.kt | 102 ++
.../nuvio/tv/ui/screens/home/HomeUiState.kt | 18 +
.../nuvio/tv/ui/screens/home/HomeViewModel.kt | 193 ++++
.../tv/ui/screens/library/LibraryScreen.kt | 148 +++
.../tv/ui/screens/library/LibraryViewModel.kt | 30 +
.../tv/ui/screens/player/PlayerScreen.kt | 868 ++++++++++++++
.../tv/ui/screens/player/PlayerUiState.kt | 49 +
.../tv/ui/screens/player/PlayerViewModel.kt | 577 +++++++++
.../tv/ui/screens/plugin/PluginScreen.kt | 768 ++++++++++++
.../tv/ui/screens/plugin/PluginUiState.kt | 30 +
.../tv/ui/screens/plugin/PluginViewModel.kt | 162 +++
.../nuvio/tv/ui/screens/search/SearchEvent.kt | 13 +
.../tv/ui/screens/search/SearchScreen.kt | 156 +++
.../tv/ui/screens/search/SearchUiState.kt | 12 +
.../tv/ui/screens/search/SearchViewModel.kt | 238 ++++
.../tv/ui/screens/settings/SettingsScreen.kt | 175 +++
.../ui/screens/settings/TmdbSettingsScreen.kt | 214 ++++
.../screens/settings/TmdbSettingsViewModel.kt | 81 ++
.../tv/ui/screens/stream/StreamScreen.kt | 695 +++++++++++
.../ui/screens/stream/StreamScreenUiState.kt | 36 +
.../screens/stream/StreamScreenViewModel.kt | 179 +++
.../main/java/com/nuvio/tv/ui/theme/Color.kt | 42 +
.../main/java/com/nuvio/tv/ui/theme/Theme.kt | 74 ++
.../main/java/com/nuvio/tv/ui/theme/Type.kt | 103 ++
app/src/main/res/drawable/nuvio_n.png | Bin 0 -> 39439 bytes
app/src/main/res/drawable/nuvio_text.png | Bin 0 -> 210427 bytes
app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes
app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes
.../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes
app/src/main/res/raw/imdb_logo_2016.svg | 3 +
app/src/main/res/values/strings.xml | 3 +
app/src/main/res/values/themes.xml | 4 +
build.gradle.kts | 8 +
gradle.properties | 23 +
gradle/libs.versions.toml | 93 ++
gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 45457 bytes
gradle/wrapper/gradle-wrapper.properties | 8 +
gradlew | 251 ++++
gradlew.bat | 94 ++
settings.gradle.kts | 24 +
132 files changed, 13601 insertions(+)
create mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/.name
create mode 100644 .idea/AndroidProjectSystem.xml
create mode 100644 .idea/compiler.xml
create mode 100644 .idea/copilot.data.migration.agent.xml
create mode 100644 .idea/copilot.data.migration.ask.xml
create mode 100644 .idea/copilot.data.migration.ask2agent.xml
create mode 100644 .idea/copilot.data.migration.edit.xml
create mode 100644 .idea/deploymentTargetSelector.xml
create mode 100644 .idea/deviceManager.xml
create mode 100644 .idea/gradle.xml
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 .idea/migrations.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/runConfigurations.xml
create mode 100644 .idea/vcs.xml
create mode 100644 .kotlin/errors/errors-1769668942713.log
create mode 100644 app/.gitignore
create mode 100644 app/build.gradle.kts
create mode 100644 app/libs/media3-decoder-ffmpeg.aar
create mode 100644 app/proguard-rules.pro
create mode 100644 app/src/main/AndroidManifest.xml
create mode 100644 app/src/main/java/com/nuvio/tv/MainActivity.kt
create mode 100644 app/src/main/java/com/nuvio/tv/NuvioApplication.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/di/NetworkModule.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/di/RepositoryModule.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/network/NetworkResult.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/network/SafeApiCall.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/plugin/PluginManager.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/plugin/PluginRuntime.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/tmdb/TmdbMetadataService.kt
create mode 100644 app/src/main/java/com/nuvio/tv/core/tmdb/TmdbService.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/local/AddonPreferences.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/local/LibraryPreferences.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/local/PluginDataStore.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/local/TmdbSettingsDataStore.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/local/WatchProgressPreferences.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/mapper/AddonMapper.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/mapper/CatalogMapper.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/mapper/MetaMapper.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/mapper/StreamMapper.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/api/AddonApi.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/api/TmdbApi.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/dto/AddonManifestDto.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/dto/CatalogResponseDto.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/dto/MetaResponseDto.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/remote/dto/StreamResponseDto.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/repository/AddonRepositoryImpl.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/repository/CatalogRepositoryImpl.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/repository/MetaRepositoryImpl.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/repository/StreamRepositoryImpl.kt
create mode 100644 app/src/main/java/com/nuvio/tv/data/repository/WatchProgressRepositoryImpl.kt
create mode 100644 app/src/main/java/com/nuvio/tv/di/PluginModule.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/Addon.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/CatalogRow.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/ContentType.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/Meta.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/MetaPreview.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/Plugin.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/PosterShape.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/SavedLibraryItem.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/Stream.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/TmdbSettings.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/model/WatchProgress.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/repository/AddonRepository.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/repository/CatalogRepository.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/repository/MetaRepository.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/repository/StreamRepository.kt
create mode 100644 app/src/main/java/com/nuvio/tv/domain/repository/WatchProgressRepository.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/CatalogRowSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/ContentCard.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/ContinueWatchingSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/ErrorState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/LoadingIndicator.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/NuvioTopBar.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/components/SidebarNavigation.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/navigation/Screen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/addon/AddonManagerScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/addon/AddonManagerUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/addon/AddonManagerViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/CastSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/CompanyLogosSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/DateFormat.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/EpisodesSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/HeroSection.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/home/HomeScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/home/HomeUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/home/HomeViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/library/LibraryScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/library/LibraryViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/plugin/PluginScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/plugin/PluginUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/plugin/PluginViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/search/SearchEvent.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/search/SearchScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/search/SearchUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/search/SearchViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/settings/SettingsScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/settings/TmdbSettingsScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/settings/TmdbSettingsViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/stream/StreamScreen.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/stream/StreamScreenUiState.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/screens/stream/StreamScreenViewModel.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/theme/Color.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/theme/Theme.kt
create mode 100644 app/src/main/java/com/nuvio/tv/ui/theme/Type.kt
create mode 100644 app/src/main/res/drawable/nuvio_n.png
create mode 100644 app/src/main/res/drawable/nuvio_text.png
create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp
create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp
create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
create mode 100644 app/src/main/res/raw/imdb_logo_2016.svg
create mode 100644 app/src/main/res/values/strings.xml
create mode 100644 app/src/main/res/values/themes.xml
create mode 100644 build.gradle.kts
create mode 100644 gradle.properties
create mode 100644 gradle/libs.versions.toml
create mode 100644 gradle/wrapper/gradle-wrapper.jar
create mode 100644 gradle/wrapper/gradle-wrapper.properties
create mode 100755 gradlew
create mode 100644 gradlew.bat
create mode 100644 settings.gradle.kts
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 00000000..b3405b3b
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+My Application
\ No newline at end of file
diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 00000000..4a53bee8
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
`!oq>SB|Eo&$&hE~jK!5)S2p-Z12KYaeEGQ5V>VF_1
zTVqE%3u8Het%a$HlQX@$jkQVAuH6PB(&+9xjjgXGSt8>HGgF>4)nb7vfVfGOK+YSQ
zKH_?P2ITjfo>a2>Bz5ex^Va7^;^eioBe2&zdoDClnQ;%#p5$8nfzN>@H@TLE@1?
zh%qpQ-Hc{3C@gcCPL^Vk>Iwm>9z{(C7&i!pd3){8e(UmW+UGn}$0Mne3IaH*bRPIF
zICjpWnLGBNOdQanJqSlOC~nT$^{d`d6>ix(cJj*{Cn@@QUOYNTjw366QJ~IhNumz2
z5Y6{~qQxAvS4yjp*ezcvkUUYS?XZOUp8DM+m%E**;!=yv7{gM2i;2o}551?f+9j(t
zq$s~AUnNX7Xp|q0Mft@yb{kPm)@?+~0i8K)SCgcjp4(P+N)9(aL@Dg9V^nv1{ET+H
z-B;;~E>-zg9KsTBjsGw ttVw;%I`r}7lWJ#vWS{i9`^a!2>|W5FPU
z+l77KBw|u;YGlSHzZ~%~aFm;p3_)qW;&Bi>r$|eI+N9J)rurC2Xf7&`h#AyrE^3T`
z4d_$6vQrHcE O}n1tmMtvxpuGs0mzKDrogo8HSTP3%oKK8C1+Pzj+w3YTSTu2C(;)ZIYP
zK9_>{=4u%Aq*SJywrM=LP+`i``}?NMmLX8@wT?v!(EY=-67R_eVCNO;GD9h9Sbo-8
z{sNW7l53sg!dbC9@97eIU~DgMEz;Bs8!j3#9YL$c4}LwtD|ybwq%6*|wulU4r}I9X
z+Edi(DhrSR)5sMP?y@x&Zpd;z6K0B*hNYGsbEFaKew~~&B<2SP7k0XDKad!*o!ANn
z((D`mCN4XY%A|ALTd&6f^W~6@u=eB26dT$RM>=(Bz+!M))PyH4Z+|cdjlFUVTbCrz
z^(sOAT@YMH)>S4g8eEZ0ab=Kq!z&r%C;o@N9vHpRzoGLNiR&w5hwl$f(%IAY2C?+K
zVerb6ZBP6DA8v$Qg5|d7o9cr uA7Xa;
z<$p@V>X32+Ur;4Ib=*D0b4FAqWX&fnB0}G$v6_ 0ILpz(D)*(YbL6gm7$#(=iN=!Sd>fjI!!4MPr4cJmE|sJmV2fKjnEo&YVN1~>KVeE
z-M
oy^pjM>S
zwx5B=Nv~8*Ny>|9bF-`9Nw0ep9YkGSRhbPI?B;7hmPL`D_H@uCEmL3fk;!N9wxS#_
zEx1fL20GUIoAw&m8Q}+#hoYA_E0%%bH=h)79}LMvr(9X1cSp(o_53|BI!qyfl0?J(
z8_t0^bbNwEQwML$A_CpNLw?_Qg6L7{E~%@PRs>n4eq7k4O0yM4$U>I!*iSsBtvC6w
zq!leEXqy6Q=HHIw+_YGq(2tJwvdvT@2BZmNM(XQfqqLArSs%W;ZBS*?Y~u
Mir0<@mRUOfI2p0XrO=S}|faL96+!|uB#bB37|hf<~8l-k~HYWX0&pE3Lc
z_bMgJsTF?p7B&6)vr!l`lV2#4qTs0>yQtA~`@MDlZsGO&&N1hLtLT}pM#}9xy0_T*
z!yfb%FD>bDcCVdMw^EJ1$Wh}iIp(Xg$i5jK5L_zIr}+VqCum^!UhIw!e^#w#0UsS&
zJWHBsvg0