Showing preview only (3,732K chars total). Download the full file or copy to clipboard to get everything.
Repository: jordyamc/UKIKU
Branch: master
Commit: f0f8acc010cd
Files: 1147
Total size: 82.1 MB
Directory structure:
gitextract_do_1h07p/
├── .github/
│ ├── FUNDING.yml
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── app/
│ ├── .gitattributes
│ ├── .gitignore
│ ├── amazon/
│ │ └── app-amazon.apk
│ ├── build.gradle
│ ├── fabric.properties
│ ├── proguard-android.txt
│ ├── proguard-rules.pro
│ ├── release/
│ │ └── app-release.apk
│ ├── src/
│ │ ├── amazon/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── ic_launcher_foregound.xml
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── menu/
│ │ │ │ └── activity_main_drawer_drawer.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── bool.xml
│ │ │ │ ├── google_maps_api.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ └── xml/
│ │ │ └── preferences.xml
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── knf/
│ │ │ └── kuma/
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── debug/
│ │ │ └── res/
│ │ │ └── xml/
│ │ │ └── preferences.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets/
│ │ │ │ └── changelog.xml
│ │ │ ├── java/
│ │ │ │ └── knf/
│ │ │ │ └── kuma/
│ │ │ │ ├── App.kt
│ │ │ │ ├── AppInfoActivity.kt
│ │ │ │ ├── AppInfoActivityMaterial.kt
│ │ │ │ ├── AppInfoFragment.kt
│ │ │ │ ├── BottomFragment.kt
│ │ │ │ ├── Diagnostic.kt
│ │ │ │ ├── DiagnosticMaterial.kt
│ │ │ │ ├── Main.kt
│ │ │ │ ├── MainMaterial.kt
│ │ │ │ ├── SplashActivity.kt
│ │ │ │ ├── achievements/
│ │ │ │ │ ├── AchievementActivity.kt
│ │ │ │ │ ├── AchievementActivityMaterial.kt
│ │ │ │ │ ├── AchievementAdapter.kt
│ │ │ │ │ ├── AchievementFragment.kt
│ │ │ │ │ ├── AchievementManager.kt
│ │ │ │ │ ├── AchievementsFragmentsPagerAdapter.kt
│ │ │ │ │ ├── AchievementsPagerAdapter.kt
│ │ │ │ │ └── LevelCalculator.kt
│ │ │ │ ├── ads/
│ │ │ │ │ ├── AdAnimeObject.kt
│ │ │ │ │ ├── AdCallback.kt
│ │ │ │ │ ├── AdCardItemHolder.kt
│ │ │ │ │ ├── AdFavoriteObject.kt
│ │ │ │ │ ├── AdRecentObject.kt
│ │ │ │ │ ├── AdsUtils.kt
│ │ │ │ │ ├── AdsUtilsBrains.kt
│ │ │ │ │ ├── AdsUtilsLovin.kt
│ │ │ │ │ ├── AdsUtilsMob.kt
│ │ │ │ │ ├── NativeManager.kt
│ │ │ │ │ └── SubscriptionReceiver.kt
│ │ │ │ ├── animeinfo/
│ │ │ │ │ ├── ActivityAnime.kt
│ │ │ │ │ ├── ActivityAnimeMaterial.kt
│ │ │ │ │ ├── AnimeBroadcast.kt
│ │ │ │ │ ├── AnimeChaptersAdapter.kt
│ │ │ │ │ ├── AnimeChaptersAdapterMaterial.kt
│ │ │ │ │ ├── AnimeInfo.kt
│ │ │ │ │ ├── AnimePagerAdapter.kt
│ │ │ │ │ ├── AnimePagerAdapterMaterial.kt
│ │ │ │ │ ├── AnimeRelatedAdapter.kt
│ │ │ │ │ ├── AnimeRelatedAdapterMaterial.kt
│ │ │ │ │ ├── AnimeTagsAdapter.kt
│ │ │ │ │ ├── AnimeTagsAdapterMaterial.kt
│ │ │ │ │ ├── AnimeViewModel.kt
│ │ │ │ │ ├── BottomActionsDialog.kt
│ │ │ │ │ ├── ChapterObjWrap.kt
│ │ │ │ │ ├── CommentariesDialog.kt
│ │ │ │ │ ├── DownloadedObserver.kt
│ │ │ │ │ ├── fragments/
│ │ │ │ │ │ ├── ChaptersFragment.kt
│ │ │ │ │ │ ├── ChaptersFragmentMaterial.kt
│ │ │ │ │ │ ├── DetailsFragment.kt
│ │ │ │ │ │ └── DetailsFragmentMaterial.kt
│ │ │ │ │ ├── img/
│ │ │ │ │ │ ├── ActivityImgFull.kt
│ │ │ │ │ │ ├── ImgFullFragment.kt
│ │ │ │ │ │ └── ImgPagerAdapter.kt
│ │ │ │ │ ├── ktx/
│ │ │ │ │ │ └── Extensions.kt
│ │ │ │ │ └── viewholders/
│ │ │ │ │ ├── AnimeActivityHolder.kt
│ │ │ │ │ ├── AnimeActivityMaterialHolder.kt
│ │ │ │ │ ├── AnimeChaptersHolder.kt
│ │ │ │ │ ├── AnimeChaptersMaterialHolder.kt
│ │ │ │ │ ├── AnimeDetailsHolder.kt
│ │ │ │ │ └── AnimeDetailsMaterialHolder.kt
│ │ │ │ ├── backup/
│ │ │ │ │ ├── BackUpActivity.kt
│ │ │ │ │ ├── Backups.kt
│ │ │ │ │ ├── MigrationActivity.kt
│ │ │ │ │ ├── firestore/
│ │ │ │ │ │ ├── FirestoreManager.kt
│ │ │ │ │ │ ├── QueueManager.kt
│ │ │ │ │ │ └── data/
│ │ │ │ │ │ ├── AchievementsData.kt
│ │ │ │ │ │ ├── EAData.kt
│ │ │ │ │ │ ├── FavsData.kt
│ │ │ │ │ │ ├── GenresData.kt
│ │ │ │ │ │ ├── HistoryData.kt
│ │ │ │ │ │ ├── QueueData.kt
│ │ │ │ │ │ ├── SeeingData.kt
│ │ │ │ │ │ ├── SeenData.kt
│ │ │ │ │ │ └── TopData.kt
│ │ │ │ │ ├── framework/
│ │ │ │ │ │ ├── BackupService.kt
│ │ │ │ │ │ ├── DropBoxService.kt
│ │ │ │ │ │ └── LocalService.kt
│ │ │ │ │ ├── objects/
│ │ │ │ │ │ ├── AnimeChapters.kt
│ │ │ │ │ │ ├── BackupObject.kt
│ │ │ │ │ │ ├── FavList.kt
│ │ │ │ │ │ └── SeenList.kt
│ │ │ │ │ └── screens/
│ │ │ │ │ ├── MigrateDirectoryFragment.kt
│ │ │ │ │ ├── MigrateSuccessFragment.kt
│ │ │ │ │ └── MigrateVersionFragment.kt
│ │ │ │ ├── cast/
│ │ │ │ │ ├── CastCustom.kt
│ │ │ │ │ ├── CastMedia.kt
│ │ │ │ │ ├── CastNotificationHelper.kt
│ │ │ │ │ └── ProxyCache.kt
│ │ │ │ ├── changelog/
│ │ │ │ │ ├── ChangeAdapter.kt
│ │ │ │ │ ├── ChangeAdapterMaterial.kt
│ │ │ │ │ ├── ChangelogActivity.kt
│ │ │ │ │ ├── ChangelogActivityMaterial.kt
│ │ │ │ │ ├── ReleaseAdapter.kt
│ │ │ │ │ ├── ReleaseAdapterMaterial.kt
│ │ │ │ │ └── objects/
│ │ │ │ │ ├── Change.kt
│ │ │ │ │ ├── Changelog.kt
│ │ │ │ │ └── Release.kt
│ │ │ │ ├── commons/
│ │ │ │ │ ├── AllSSLOkHttpClient.kt
│ │ │ │ │ ├── BypassUtil.kt
│ │ │ │ │ ├── CastUtil.kt
│ │ │ │ │ ├── ChannelTools.kt
│ │ │ │ │ ├── CipherExt.kt
│ │ │ │ │ ├── DesignUtils.kt
│ │ │ │ │ ├── EAHelper.kt
│ │ │ │ │ ├── EAMapActivity.kt
│ │ │ │ │ ├── Economy.kt
│ │ │ │ │ ├── Encryption.java
│ │ │ │ │ ├── ExtensionUtils.kt
│ │ │ │ │ ├── FileUtil.kt
│ │ │ │ │ ├── FileWrapper.kt
│ │ │ │ │ ├── Network.kt
│ │ │ │ │ ├── NoSSLOkHttpClient.kt
│ │ │ │ │ ├── PatternUtil.kt
│ │ │ │ │ ├── PicassoSingle.kt
│ │ │ │ │ ├── PrefsUtil.kt
│ │ │ │ │ ├── SSLSkipper.kt
│ │ │ │ │ ├── SelfServer.kt
│ │ │ │ │ ├── SharedPreferenceLiveData.kt
│ │ │ │ │ └── ThumbsDownloader.kt
│ │ │ │ ├── custom/
│ │ │ │ │ ├── AchievementUnlocked.java
│ │ │ │ │ ├── AppWebView.kt
│ │ │ │ │ ├── BackgroundExecutor.kt
│ │ │ │ │ ├── BannerContainerView.kt
│ │ │ │ │ ├── CenterLayoutManager.kt
│ │ │ │ │ ├── ConnectionState.kt
│ │ │ │ │ ├── ExpandableTV.kt
│ │ │ │ │ ├── ExpandableTextView.kt
│ │ │ │ │ ├── FSGridRecyclerView.kt
│ │ │ │ │ ├── FSRecyclerView.kt
│ │ │ │ │ ├── FixedGridLayoutManager.kt
│ │ │ │ │ ├── GenericActivity.kt
│ │ │ │ │ ├── GridRecyclerView.kt
│ │ │ │ │ ├── HiddenOverlay.kt
│ │ │ │ │ ├── HomeList.kt
│ │ │ │ │ ├── ListPreferenceDialogFragmentCompat.kt
│ │ │ │ │ ├── MainExecutor.kt
│ │ │ │ │ ├── PreferenceFragmentCompat.java
│ │ │ │ │ ├── SSLManager.kt
│ │ │ │ │ ├── SeenAnimeOverlay.kt
│ │ │ │ │ ├── SingleFragmentActivity.kt
│ │ │ │ │ ├── SingleFragmentMaterialActivity.kt
│ │ │ │ │ ├── StateView.kt
│ │ │ │ │ ├── StateViewMaterial.kt
│ │ │ │ │ ├── SyncItemView.kt
│ │ │ │ │ ├── SyncStaticItemView.kt
│ │ │ │ │ ├── ThemedControlsActivity.kt
│ │ │ │ │ ├── TlsOnlySocketFactory.java
│ │ │ │ │ ├── VariantGridLayoutManager.kt
│ │ │ │ │ ├── VariantLinearLayoutManager.kt
│ │ │ │ │ ├── WrapWebView.kt
│ │ │ │ │ ├── exceptions/
│ │ │ │ │ │ └── EJNFException.kt
│ │ │ │ │ └── snackbar/
│ │ │ │ │ ├── SnackProgressBar.kt
│ │ │ │ │ ├── SnackProgressBarCore.kt
│ │ │ │ │ ├── SnackProgressBarLayout.kt
│ │ │ │ │ └── SnackProgressBarManager.kt
│ │ │ │ ├── database/
│ │ │ │ │ ├── BaseConverter.kt
│ │ │ │ │ ├── CacheDB.kt
│ │ │ │ │ ├── CacheDBWrap.java
│ │ │ │ │ ├── EADB.kt
│ │ │ │ │ └── dao/
│ │ │ │ │ ├── AchievementsDAO.kt
│ │ │ │ │ ├── AnimeDAO.kt
│ │ │ │ │ ├── ChaptersDAO.kt
│ │ │ │ │ ├── DownloadsDAO.kt
│ │ │ │ │ ├── EaDAO.kt
│ │ │ │ │ ├── ExplorerDAO.kt
│ │ │ │ │ ├── FavsDAO.kt
│ │ │ │ │ ├── GenresDAO.kt
│ │ │ │ │ ├── NotificationDAO.kt
│ │ │ │ │ ├── PlayerStateDAO.kt
│ │ │ │ │ ├── QueueDAO.kt
│ │ │ │ │ ├── RecentModelsDAO.kt
│ │ │ │ │ ├── RecentsDAO.kt
│ │ │ │ │ ├── RecordsDAO.kt
│ │ │ │ │ ├── SeeingDAO.kt
│ │ │ │ │ └── SeenDAO.kt
│ │ │ │ ├── directory/
│ │ │ │ │ ├── DirManager.kt
│ │ │ │ │ ├── DirObject.kt
│ │ │ │ │ ├── DirObjectCompact.kt
│ │ │ │ │ ├── DirPagerAdapter.kt
│ │ │ │ │ ├── DirPagerAdapterMaterial.kt
│ │ │ │ │ ├── DirPagerAdapterOnline.kt
│ │ │ │ │ ├── DirectoryDataSource.kt
│ │ │ │ │ ├── DirectoryFragment.kt
│ │ │ │ │ ├── DirectoryFragmentMaterial.kt
│ │ │ │ │ ├── DirectoryPageAdapter.kt
│ │ │ │ │ ├── DirectoryPageAdapterMaterial.kt
│ │ │ │ │ ├── DirectoryPageAdapterOnline.kt
│ │ │ │ │ ├── DirectoryPageCompact.kt
│ │ │ │ │ ├── DirectoryPageFragment.kt
│ │ │ │ │ ├── DirectoryPageFragmentMaterial.kt
│ │ │ │ │ ├── DirectoryPageFragmentOnline.kt
│ │ │ │ │ ├── DirectoryService.kt
│ │ │ │ │ ├── DirectoryUpdateService.kt
│ │ │ │ │ ├── DirectoryViewModel.kt
│ │ │ │ │ └── viewholders/
│ │ │ │ │ ├── DirMainFragmentHolder.kt
│ │ │ │ │ └── DirMainFragmentMaterialHolder.kt
│ │ │ │ ├── download/
│ │ │ │ │ ├── DownloadDialogActivity.kt
│ │ │ │ │ ├── DownloadManager.kt
│ │ │ │ │ ├── DownloadManagerCentral.kt
│ │ │ │ │ ├── DownloadManagerJob.kt
│ │ │ │ │ ├── DownloadReceiver.kt
│ │ │ │ │ ├── DownloadService.kt
│ │ │ │ │ ├── FileAccessHelper.kt
│ │ │ │ │ ├── MultipleDownloadManager.kt
│ │ │ │ │ ├── UriValidation.kt
│ │ │ │ │ └── downloadKt.kt
│ │ │ │ ├── emision/
│ │ │ │ │ ├── AnimeSubObject.kt
│ │ │ │ │ ├── EmissionActivity.kt
│ │ │ │ │ ├── EmissionActivityMaterial.kt
│ │ │ │ │ ├── EmissionAdapter.kt
│ │ │ │ │ ├── EmissionAdapterMaterial.kt
│ │ │ │ │ ├── EmissionFragment.kt
│ │ │ │ │ ├── EmissionFragmentMaterial.kt
│ │ │ │ │ ├── EmissionPagerAdapter.kt
│ │ │ │ │ ├── EmissionPagerAdapterMaterial.kt
│ │ │ │ │ └── RemoveListener.kt
│ │ │ │ ├── explorer/
│ │ │ │ │ ├── DownloadingAdapter.kt
│ │ │ │ │ ├── DownloadingAdapterMaterial.kt
│ │ │ │ │ ├── ExplorerActivity.kt
│ │ │ │ │ ├── ExplorerActivityMaterial.kt
│ │ │ │ │ ├── ExplorerChapsAdapter.kt
│ │ │ │ │ ├── ExplorerChapsAdapterMaterial.kt
│ │ │ │ │ ├── ExplorerCreator.kt
│ │ │ │ │ ├── ExplorerFilesAdapter.kt
│ │ │ │ │ ├── ExplorerFilesAdapterMaterial.kt
│ │ │ │ │ ├── ExplorerFilesModel.kt
│ │ │ │ │ ├── ExplorerObjectDiff.kt
│ │ │ │ │ ├── ExplorerObjectWrap.kt
│ │ │ │ │ ├── ExplorerPagerAdapter.kt
│ │ │ │ │ ├── ExplorerPagerAdapterMaterial.kt
│ │ │ │ │ ├── FragmentBase.kt
│ │ │ │ │ ├── FragmentChapters.kt
│ │ │ │ │ ├── FragmentChaptersMaterial.kt
│ │ │ │ │ ├── FragmentDownloads.kt
│ │ │ │ │ ├── FragmentDownloadsMaterial.kt
│ │ │ │ │ ├── FragmentFiles.kt
│ │ │ │ │ ├── FragmentFilesMaterial.kt
│ │ │ │ │ ├── FragmentFilesRoot.kt
│ │ │ │ │ ├── FragmentFilesRootMaterial.kt
│ │ │ │ │ ├── FragmentPermission.kt
│ │ │ │ │ ├── OnFileStateChange.kt
│ │ │ │ │ ├── ThumbServer.kt
│ │ │ │ │ └── creator/
│ │ │ │ │ ├── Creator.kt
│ │ │ │ │ ├── DocumentFileCreator.kt
│ │ │ │ │ ├── SimpleFileCreator.kt
│ │ │ │ │ └── SubFile.kt
│ │ │ │ ├── faq/
│ │ │ │ │ ├── FaqActivity.kt
│ │ │ │ │ ├── FaqActivityMaterial.kt
│ │ │ │ │ ├── FaqAdapter.kt
│ │ │ │ │ └── FaqItem.kt
│ │ │ │ ├── favorite/
│ │ │ │ │ ├── FavSectionHelper.kt
│ │ │ │ │ ├── FavoriteFragment.kt
│ │ │ │ │ ├── FavoriteFragmentMaterial.kt
│ │ │ │ │ ├── FavoriteViewModel.kt
│ │ │ │ │ ├── FavsSectionAdapter.kt
│ │ │ │ │ ├── FavsSectionAdapterMaterial.kt
│ │ │ │ │ └── objects/
│ │ │ │ │ ├── FavSorter.kt
│ │ │ │ │ └── InfoContainer.kt
│ │ │ │ ├── home/
│ │ │ │ │ ├── DirAdapter.kt
│ │ │ │ │ ├── DirAdapterMaterial.kt
│ │ │ │ │ ├── HomeFragment.kt
│ │ │ │ │ ├── HomeFragmentMaterial.kt
│ │ │ │ │ ├── QueueAdapter.kt
│ │ │ │ │ ├── QueueAdapterMaterial.kt
│ │ │ │ │ ├── RecentsAdapter.kt
│ │ │ │ │ ├── RecentsAdapterMaterial.kt
│ │ │ │ │ ├── RecommendedAdapter.kt
│ │ │ │ │ ├── RecommendedAdapterMaterial.kt
│ │ │ │ │ ├── SearchAdapter.kt
│ │ │ │ │ ├── SearchAdapterMaterial.kt
│ │ │ │ │ ├── StaffRecommendations.kt
│ │ │ │ │ ├── UpdateableAdapter.kt
│ │ │ │ │ ├── WaitingAdapter.kt
│ │ │ │ │ └── WaitingAdapterMaterial.kt
│ │ │ │ ├── jobscheduler/
│ │ │ │ │ ├── BackUpWork.kt
│ │ │ │ │ ├── DirUpdateWork.kt
│ │ │ │ │ ├── RecentsWork.kt
│ │ │ │ │ ├── UpdateWork.kt
│ │ │ │ │ └── WorkExt.kt
│ │ │ │ ├── news/
│ │ │ │ │ ├── MaterialNewsActivity.kt
│ │ │ │ │ ├── MaterialNewsAdapter.kt
│ │ │ │ │ ├── NewsActivity.kt
│ │ │ │ │ ├── NewsAdapter.kt
│ │ │ │ │ ├── NewsCreator.kt
│ │ │ │ │ ├── NewsDialog.kt
│ │ │ │ │ ├── NewsObjects.kt
│ │ │ │ │ └── NewsViewModel.kt
│ │ │ │ ├── player/
│ │ │ │ │ ├── AudioFocusWrapper.kt
│ │ │ │ │ ├── BVListener.kt
│ │ │ │ │ ├── CustomExoPlayer.kt
│ │ │ │ │ ├── MediaCatalog.kt
│ │ │ │ │ ├── Player.kt
│ │ │ │ │ ├── VideoActivity.kt
│ │ │ │ │ └── WebPlayerActivity.kt
│ │ │ │ ├── pojos/
│ │ │ │ │ ├── Achievement.kt
│ │ │ │ │ ├── AchievementAd.kt
│ │ │ │ │ ├── Anime.java
│ │ │ │ │ ├── AnimeObject.java
│ │ │ │ │ ├── AutoBackupObject.kt
│ │ │ │ │ ├── DirectoryPage.kt
│ │ │ │ │ ├── DownloadObject.java
│ │ │ │ │ ├── EAObject.kt
│ │ │ │ │ ├── ExplorerObject.java
│ │ │ │ │ ├── FakeAutoBackup.java
│ │ │ │ │ ├── FavSection.java
│ │ │ │ │ ├── FavoriteObject.java
│ │ │ │ │ ├── GenreStatusObject.java
│ │ │ │ │ ├── NotificationObj.java
│ │ │ │ │ ├── QueueObject.java
│ │ │ │ │ ├── RecentObject.java
│ │ │ │ │ ├── RecentWrap.kt
│ │ │ │ │ ├── Recents.java
│ │ │ │ │ ├── RecordObject.java
│ │ │ │ │ ├── SeeingObject.java
│ │ │ │ │ └── SeenObject.kt
│ │ │ │ ├── preferences/
│ │ │ │ │ ├── AdsPreferenceActivity.kt
│ │ │ │ │ ├── BottomPreferencesFragment.kt
│ │ │ │ │ ├── BottomPreferencesMaterialFragment.kt
│ │ │ │ │ ├── ConfigurationFragment.kt
│ │ │ │ │ └── ConfigurationFragmentMaterial.kt
│ │ │ │ ├── profile/
│ │ │ │ │ ├── TopActivity.kt
│ │ │ │ │ ├── TopActivityMaterial.kt
│ │ │ │ │ ├── TopAdapter.kt
│ │ │ │ │ └── TopItem.kt
│ │ │ │ ├── queue/
│ │ │ │ │ ├── ItemTouchHelperAdapter.kt
│ │ │ │ │ ├── NoTouchHelperCallback.kt
│ │ │ │ │ ├── QueueActivity.kt
│ │ │ │ │ ├── QueueActivityMaterial.kt
│ │ │ │ │ ├── QueueAllAdapter.kt
│ │ │ │ │ ├── QueueAllAdapterMaterial.kt
│ │ │ │ │ ├── QueueAnimesAdapter.kt
│ │ │ │ │ ├── QueueAnimesAdapterMaterial.kt
│ │ │ │ │ ├── QueueListAdapter.kt
│ │ │ │ │ ├── QueueManager.kt
│ │ │ │ │ └── SimpleItemTouchHelperCallback.kt
│ │ │ │ ├── random/
│ │ │ │ │ ├── RandomActivity.kt
│ │ │ │ │ ├── RandomActivityMaterial.kt
│ │ │ │ │ ├── RandomAdapter.kt
│ │ │ │ │ ├── RandomAdapterMaterial.kt
│ │ │ │ │ └── RandomObject.kt
│ │ │ │ ├── recents/
│ │ │ │ │ ├── RecentFragment.kt
│ │ │ │ │ ├── RecentModel.kt
│ │ │ │ │ ├── RecentModelAd.kt
│ │ │ │ │ ├── RecentModelCh.kt
│ │ │ │ │ ├── RecentModelsAdapter.kt
│ │ │ │ │ ├── RecentModelsFragment.kt
│ │ │ │ │ ├── RecentModelsViewModel.kt
│ │ │ │ │ ├── RecentsActivity.kt
│ │ │ │ │ ├── RecentsAdapter.kt
│ │ │ │ │ ├── RecentsModelActivity.kt
│ │ │ │ │ ├── RecentsNotReceiver.kt
│ │ │ │ │ ├── RecentsViewModel.kt
│ │ │ │ │ └── viewholders/
│ │ │ │ │ └── RecyclerRefreshHolder.kt
│ │ │ │ ├── recommended/
│ │ │ │ │ ├── AnimeShortObject.kt
│ │ │ │ │ ├── BlacklistDialog.kt
│ │ │ │ │ ├── RHHolder.kt
│ │ │ │ │ ├── RIHolder.kt
│ │ │ │ │ ├── RankType.kt
│ │ │ │ │ ├── RankingActivity.kt
│ │ │ │ │ ├── RankingActivityMaterial.kt
│ │ │ │ │ ├── RankingAdapter.kt
│ │ │ │ │ ├── RankingAdapterMaterial.kt
│ │ │ │ │ ├── RecommendActivity.kt
│ │ │ │ │ ├── RecommendActivityMaterial.kt
│ │ │ │ │ ├── RecommendHelper.kt
│ │ │ │ │ └── sections/
│ │ │ │ │ ├── MultipleSection.kt
│ │ │ │ │ └── MultipleSectionMaterial.kt
│ │ │ │ ├── record/
│ │ │ │ │ ├── RecordActivity.kt
│ │ │ │ │ ├── RecordActivityMaterial.kt
│ │ │ │ │ ├── RecordsAdapter.kt
│ │ │ │ │ └── RecordsAdapterMaterial.kt
│ │ │ │ ├── retrofit/
│ │ │ │ │ └── Repository.kt
│ │ │ │ ├── search/
│ │ │ │ │ ├── FiltersSuggestion.kt
│ │ │ │ │ ├── GenreActivity.kt
│ │ │ │ │ ├── GenreActivityMaterial.kt
│ │ │ │ │ ├── GenreAdapter.kt
│ │ │ │ │ ├── GenreAdapterMaterial.kt
│ │ │ │ │ ├── GenresDialog.kt
│ │ │ │ │ ├── SearchActivity.kt
│ │ │ │ │ ├── SearchAdapter.kt
│ │ │ │ │ ├── SearchAdapterCompact.kt
│ │ │ │ │ ├── SearchAdapterCompactMaterial.kt
│ │ │ │ │ ├── SearchAdapterMaterial.kt
│ │ │ │ │ ├── SearchAdvObject.kt
│ │ │ │ │ ├── SearchCompactDataSource.kt
│ │ │ │ │ ├── SearchFragment.kt
│ │ │ │ │ ├── SearchFragmentMaterial.kt
│ │ │ │ │ ├── SearchObject.kt
│ │ │ │ │ ├── SearchObjectFav.kt
│ │ │ │ │ └── SearchViewModel.kt
│ │ │ │ ├── seeing/
│ │ │ │ │ ├── FavToSeeing.kt
│ │ │ │ │ ├── SeeingActivity.kt
│ │ │ │ │ ├── SeeingActivityMaterial.kt
│ │ │ │ │ ├── SeeingAdapter.kt
│ │ │ │ │ ├── SeeingAdapterMaterial.kt
│ │ │ │ │ ├── SeeingFragment.kt
│ │ │ │ │ ├── SeeingFragmentMaterial.kt
│ │ │ │ │ ├── SeeingPagerAdapter.kt
│ │ │ │ │ └── SeeingPagerAdapterMaterial.kt
│ │ │ │ ├── shortcuts/
│ │ │ │ │ ├── DummyActivity.kt
│ │ │ │ │ ├── DummyEmissionActivity.kt
│ │ │ │ │ ├── DummyExplorerActivity.kt
│ │ │ │ │ └── DummyMainActivity.kt
│ │ │ │ ├── slices/
│ │ │ │ │ └── AnimeSliceObject.kt
│ │ │ │ ├── tv/
│ │ │ │ │ ├── AnimeRow.kt
│ │ │ │ │ ├── BindableCardView.kt
│ │ │ │ │ ├── ChannelUtils.kt
│ │ │ │ │ ├── GlideBackgroundManager.kt
│ │ │ │ │ ├── TVBaseActivity.kt
│ │ │ │ │ ├── TVServersFactory.kt
│ │ │ │ │ ├── anime/
│ │ │ │ │ │ ├── AnimePresenter.kt
│ │ │ │ │ │ ├── ChapterPresenter.kt
│ │ │ │ │ │ ├── EmissionPresenter.kt
│ │ │ │ │ │ ├── FavPresenter.kt
│ │ │ │ │ │ ├── RecentsPresenter.kt
│ │ │ │ │ │ ├── RecordPresenter.kt
│ │ │ │ │ │ ├── RelatedPresenter.kt
│ │ │ │ │ │ ├── SectionPresenter.kt
│ │ │ │ │ │ └── SyncPresenter.kt
│ │ │ │ │ ├── cards/
│ │ │ │ │ │ ├── AnimeCardView.kt
│ │ │ │ │ │ ├── ChapterCardView.kt
│ │ │ │ │ │ ├── DirAdvCardView.kt
│ │ │ │ │ │ ├── DirCardView.kt
│ │ │ │ │ │ ├── EmissionCardView.kt
│ │ │ │ │ │ ├── FavCardView.kt
│ │ │ │ │ │ ├── RecentsCardView.kt
│ │ │ │ │ │ ├── RecordCardView.kt
│ │ │ │ │ │ ├── RelatedCardView.kt
│ │ │ │ │ │ ├── SectionCardView.kt
│ │ │ │ │ │ ├── SyncCardView.kt
│ │ │ │ │ │ └── TagCardView.kt
│ │ │ │ │ ├── details/
│ │ │ │ │ │ ├── ChaptersListPresenter.kt
│ │ │ │ │ │ ├── ChaptersListRow.kt
│ │ │ │ │ │ ├── CustomFullWidthDetailsOverviewRowPresenter.kt
│ │ │ │ │ │ ├── DetailsDescriptionPresenter.kt
│ │ │ │ │ │ ├── TVAnimesDetails.kt
│ │ │ │ │ │ └── TVAnimesDetailsFragment.kt
│ │ │ │ │ ├── directory/
│ │ │ │ │ │ ├── DirAdvPresenter.kt
│ │ │ │ │ │ ├── DirPresenter.kt
│ │ │ │ │ │ ├── TVDir.kt
│ │ │ │ │ │ └── TVDirFragment.kt
│ │ │ │ │ ├── emission/
│ │ │ │ │ │ ├── TVEmission.kt
│ │ │ │ │ │ └── TVEmissionFragment.kt
│ │ │ │ │ ├── exoplayer/
│ │ │ │ │ │ ├── LeanbackPlayerAdapter.kt
│ │ │ │ │ │ ├── PlaybackFragment.kt
│ │ │ │ │ │ ├── TVPlayer.kt
│ │ │ │ │ │ ├── Video.kt
│ │ │ │ │ │ └── VideoPlayerGlue.kt
│ │ │ │ │ ├── search/
│ │ │ │ │ │ ├── BasicAnimeObject.kt
│ │ │ │ │ │ ├── TVSearch.kt
│ │ │ │ │ │ ├── TVSearchFragment.kt
│ │ │ │ │ │ ├── TVTag.kt
│ │ │ │ │ │ ├── TVTagFragment.kt
│ │ │ │ │ │ └── TagPresenter.kt
│ │ │ │ │ ├── sections/
│ │ │ │ │ │ ├── DirSection.kt
│ │ │ │ │ │ ├── EmissionSection.kt
│ │ │ │ │ │ └── SectionObject.kt
│ │ │ │ │ ├── streaming/
│ │ │ │ │ │ ├── StreamTvActivity.kt
│ │ │ │ │ │ ├── TVMultiSelection.kt
│ │ │ │ │ │ ├── TVMultiSelectionFragment.kt
│ │ │ │ │ │ ├── TVServerSelection.kt
│ │ │ │ │ │ └── TVServerSelectionFragment.kt
│ │ │ │ │ ├── sync/
│ │ │ │ │ │ ├── BypassObject.kt
│ │ │ │ │ │ ├── LogOutObject.kt
│ │ │ │ │ │ └── SyncObject.kt
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── TVMain.kt
│ │ │ │ │ └── TVMainFragment.kt
│ │ │ │ ├── updater/
│ │ │ │ │ ├── UpdateActivity.kt
│ │ │ │ │ ├── UpdateChecker.kt
│ │ │ │ │ └── UpdaterViewModel.kt
│ │ │ │ ├── videoservers/
│ │ │ │ │ ├── FembedServer.kt
│ │ │ │ │ ├── FenixServer.kt
│ │ │ │ │ ├── FileActions.kt
│ │ │ │ │ ├── FireServer.kt
│ │ │ │ │ ├── GoCDNServer.kt
│ │ │ │ │ ├── Headers.kt
│ │ │ │ │ ├── HyperionServer.kt
│ │ │ │ │ ├── IzanagiServer.kt
│ │ │ │ │ ├── KDecoder.kt
│ │ │ │ │ ├── MP4UploadServer.kt
│ │ │ │ │ ├── MangoServer.kt
│ │ │ │ │ ├── MegaServer.kt
│ │ │ │ │ ├── NatsukiServer.kt
│ │ │ │ │ ├── OkruServer.kt
│ │ │ │ │ ├── Option.kt
│ │ │ │ │ ├── RVServer.kt
│ │ │ │ │ ├── SBServer.kt
│ │ │ │ │ ├── Server.kt
│ │ │ │ │ ├── ServersFactory.kt
│ │ │ │ │ ├── StapeServer.kt
│ │ │ │ │ ├── StreamWishServer.kt
│ │ │ │ │ ├── Unpacker.kt
│ │ │ │ │ ├── VeryStreamServer.kt
│ │ │ │ │ ├── VideoServer.kt
│ │ │ │ │ ├── WebJS.kt
│ │ │ │ │ ├── WebServer.kt
│ │ │ │ │ ├── YUServer.kt
│ │ │ │ │ └── ZippyServer.kt
│ │ │ │ └── widgets/
│ │ │ │ ├── AdTemplateView.java
│ │ │ │ ├── NativeTemplateStyle.java
│ │ │ │ ├── emision/
│ │ │ │ │ ├── WEListItem.kt
│ │ │ │ │ ├── WEListProvider.kt
│ │ │ │ │ ├── WEmisionProvider.kt
│ │ │ │ │ └── WEmissionService.kt
│ │ │ │ └── test.kt
│ │ │ └── res/
│ │ │ ├── anim/
│ │ │ │ ├── anim_fall_down.xml
│ │ │ │ ├── anim_fall_up.xml
│ │ │ │ ├── fade_in.xml
│ │ │ │ ├── fade_out.xml
│ │ │ │ ├── fadein.xml
│ │ │ │ ├── fadeout.xml
│ │ │ │ ├── grid_fall_down.xml
│ │ │ │ ├── layout_fall_down.xml
│ │ │ │ ├── scale_down.xml
│ │ │ │ └── scale_up.xml
│ │ │ ├── color/
│ │ │ │ ├── accent_button_state.xml
│ │ │ │ ├── firebase_selector.xml
│ │ │ │ ├── raised_button_text_state.xml
│ │ │ │ ├── sync_button_color.xml
│ │ │ │ └── text_secondary.xml
│ │ │ ├── drawable/
│ │ │ │ ├── action_chapter.xml
│ │ │ │ ├── action_expand.xml
│ │ │ │ ├── action_search.xml
│ │ │ │ ├── action_shrink.xml
│ │ │ │ ├── anim_check_sync.xml
│ │ │ │ ├── anim_sync_check.xml
│ │ │ │ ├── background_ripple.xml
│ │ │ │ ├── bottom_directory.xml
│ │ │ │ ├── bottom_recents.xml
│ │ │ │ ├── bottom_settings.xml
│ │ │ │ ├── bottom_state.xml
│ │ │ │ ├── chip_change.xml
│ │ │ │ ├── chip_error.xml
│ │ │ │ ├── chip_new.xml
│ │ │ │ ├── chip_ripple.xml
│ │ │ │ ├── chip_shape.xml
│ │ │ │ ├── circular_shade.xml
│ │ │ │ ├── drawable_splash.xml
│ │ │ │ ├── faq_indicator.xml
│ │ │ │ ├── grad_1.xml
│ │ │ │ ├── grad_2.xml
│ │ │ │ ├── grad_3.xml
│ │ │ │ ├── grad_4.xml
│ │ │ │ ├── heart_broken.xml
│ │ │ │ ├── heart_empty.xml
│ │ │ │ ├── heart_full.xml
│ │ │ │ ├── ic_account_edit.xml
│ │ │ │ ├── ic_achievement_airplane.xml
│ │ │ │ ├── ic_achievement_battery.xml
│ │ │ │ ├── ic_achievement_bored.xml
│ │ │ │ ├── ic_achievement_calendar.xml
│ │ │ │ ├── ic_achievement_cast.xml
│ │ │ │ ├── ic_achievement_clock.xml
│ │ │ │ ├── ic_achievement_cloud.xml
│ │ │ │ ├── ic_achievement_completed.xml
│ │ │ │ ├── ic_achievement_droped.xml
│ │ │ │ ├── ic_achievement_egg.xml
│ │ │ │ ├── ic_achievement_evangelion.xml
│ │ │ │ ├── ic_achievement_fav.xml
│ │ │ │ ├── ic_achievement_following.xml
│ │ │ │ ├── ic_achievement_memory.xml
│ │ │ │ ├── ic_achievement_midoriya.xml
│ │ │ │ ├── ic_achievement_news.xml
│ │ │ │ ├── ic_achievement_onepiece.xml
│ │ │ │ ├── ic_achievement_otaku.xml
│ │ │ │ ├── ic_achievement_pig.xml
│ │ │ │ ├── ic_achievement_question.xml
│ │ │ │ ├── ic_achievement_sad.xml
│ │ │ │ ├── ic_achievement_share.xml
│ │ │ │ ├── ic_achievement_start.xml
│ │ │ │ ├── ic_achievement_vampire.xml
│ │ │ │ ├── ic_achievements.xml
│ │ │ │ ├── ic_action_close.xml
│ │ │ │ ├── ic_add_category.xml
│ │ │ │ ├── ic_add_list.xml
│ │ │ │ ├── ic_animations.xml
│ │ │ │ ├── ic_arrow_left.xml
│ │ │ │ ├── ic_author.xml
│ │ │ │ ├── ic_backup.xml
│ │ │ │ ├── ic_beta.xml
│ │ │ │ ├── ic_blacklist.xml
│ │ │ │ ├── ic_buffer.xml
│ │ │ │ ├── ic_bug.xml
│ │ │ │ ├── ic_cash.xml
│ │ │ │ ├── ic_cash_multi.xml
│ │ │ │ ├── ic_casting.xml
│ │ │ │ ├── ic_casting_menu.xml
│ │ │ │ ├── ic_changelog_get.xml
│ │ │ │ ├── ic_chap_down.xml
│ │ │ │ ├── ic_check.xml
│ │ │ │ ├── ic_check_bold.xml
│ │ │ │ ├── ic_check_tv.xml
│ │ │ │ ├── ic_clear.xml
│ │ │ │ ├── ic_clear_all.xml
│ │ │ │ ├── ic_clear_white.xml
│ │ │ │ ├── ic_clock.xml
│ │ │ │ ├── ic_close.xml
│ │ │ │ ├── ic_cloud.xml
│ │ │ │ ├── ic_cloud_download.xml
│ │ │ │ ├── ic_cloud_firestore.xml
│ │ │ │ ├── ic_cloud_upload.xml
│ │ │ │ ├── ic_coin.xml
│ │ │ │ ├── ic_coin_ach.xml
│ │ │ │ ├── ic_collapse.xml
│ │ │ │ ├── ic_comments.xml
│ │ │ │ ├── ic_completed.xml
│ │ │ │ ├── ic_considering.xml
│ │ │ │ ├── ic_cuplogo.xml
│ │ │ │ ├── ic_danger.xml
│ │ │ │ ├── ic_delete.xml
│ │ │ │ ├── ic_delete_all.xml
│ │ │ │ ├── ic_design_ab.xml
│ │ │ │ ├── ic_diagnostic.xml
│ │ │ │ ├── ic_dir_update.xml
│ │ │ │ ├── ic_directory.xml
│ │ │ │ ├── ic_directory_not.xml
│ │ │ │ ├── ic_discord.xml
│ │ │ │ ├── ic_download.xml
│ │ │ │ ├── ic_download_multiple.xml
│ │ │ │ ├── ic_download_progress.xml
│ │ │ │ ├── ic_downloader.xml
│ │ │ │ ├── ic_drag.xml
│ │ │ │ ├── ic_drive.xml
│ │ │ │ ├── ic_dropbox.xml
│ │ │ │ ├── ic_droped.xml
│ │ │ │ ├── ic_edit.xml
│ │ │ │ ├── ic_egg.xml
│ │ │ │ ├── ic_emision.xml
│ │ │ │ ├── ic_emision_not.xml
│ │ │ │ ├── ic_error.xml
│ │ │ │ ├── ic_experimental.xml
│ │ │ │ ├── ic_facebook.xml
│ │ │ │ ├── ic_facebook_group.xml
│ │ │ │ ├── ic_faq.xml
│ │ │ │ ├── ic_ff.xml
│ │ │ │ ├── ic_ffwd.xml
│ │ │ │ ├── ic_files.xml
│ │ │ │ ├── ic_filter.xml
│ │ │ │ ├── ic_genres_0.xml
│ │ │ │ ├── ic_genres_1.xml
│ │ │ │ ├── ic_genres_2.xml
│ │ │ │ ├── ic_genres_3.xml
│ │ │ │ ├── ic_genres_4.xml
│ │ │ │ ├── ic_genres_5.xml
│ │ │ │ ├── ic_genres_6.xml
│ │ │ │ ├── ic_genres_7.xml
│ │ │ │ ├── ic_genres_8.xml
│ │ │ │ ├── ic_genres_9.xml
│ │ │ │ ├── ic_genres_more.xml
│ │ │ │ ├── ic_github.xml
│ │ │ │ ├── ic_group.xml
│ │ │ │ ├── ic_grouped.xml
│ │ │ │ ├── ic_hash.xml
│ │ │ │ ├── ic_heart.xml
│ │ │ │ ├── ic_heart_full_menu.xml
│ │ │ │ ├── ic_hide.xml
│ │ │ │ ├── ic_hide_pref.xml
│ │ │ │ ├── ic_home.xml
│ │ │ │ ├── ic_img.xml
│ │ │ │ ├── ic_import.xml
│ │ │ │ ├── ic_incognito.xml
│ │ │ │ ├── ic_info.xml
│ │ │ │ ├── ic_info_white.xml
│ │ │ │ ├── ic_key.xml
│ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ ├── ic_lay_type.xml
│ │ │ │ ├── ic_library_video.xml
│ │ │ │ ├── ic_list_placeholder.xml
│ │ │ │ ├── ic_locked.xml
│ │ │ │ ├── ic_locked_solid.xml
│ │ │ │ ├── ic_magic.xml
│ │ │ │ ├── ic_map.xml
│ │ │ │ ├── ic_menu.xml
│ │ │ │ ├── ic_menu_ham.xml
│ │ │ │ ├── ic_move.xml
│ │ │ │ ├── ic_new.xml
│ │ │ │ ├── ic_new_recent.xml
│ │ │ │ ├── ic_news.xml
│ │ │ │ ├── ic_next.xml
│ │ │ │ ├── ic_no_downloading.xml
│ │ │ │ ├── ic_no_downloads.xml
│ │ │ │ ├── ic_no_emision.xml
│ │ │ │ ├── ic_no_genres.xml
│ │ │ │ ├── ic_no_network.xml
│ │ │ │ ├── ic_no_recents.xml
│ │ │ │ ├── ic_no_records.xml
│ │ │ │ ├── ic_no_thumb.xml
│ │ │ │ ├── ic_not_found.xml
│ │ │ │ ├── ic_not_seeing.xml
│ │ │ │ ├── ic_not_update.xml
│ │ │ │ ├── ic_note.xml
│ │ │ │ ├── ic_number.xml
│ │ │ │ ├── ic_open.xml
│ │ │ │ ├── ic_option_not_seen.xml
│ │ │ │ ├── ic_option_seen.xml
│ │ │ │ ├── ic_palette.xml
│ │ │ │ ├── ic_patreon.xml
│ │ │ │ ├── ic_pause.xml
│ │ │ │ ├── ic_pause_normal.xml
│ │ │ │ ├── ic_pause_not.xml
│ │ │ │ ├── ic_paused.xml
│ │ │ │ ├── ic_paypal.xml
│ │ │ │ ├── ic_pip.xml
│ │ │ │ ├── ic_pip_exit.xml
│ │ │ │ ├── ic_play.xml
│ │ │ │ ├── ic_play_all.xml
│ │ │ │ ├── ic_play_not.xml
│ │ │ │ ├── ic_play_queue.xml
│ │ │ │ ├── ic_player.xml
│ │ │ │ ├── ic_podium.xml
│ │ │ │ ├── ic_previous.xml
│ │ │ │ ├── ic_queue_file.xml
│ │ │ │ ├── ic_queue_list.xml
│ │ │ │ ├── ic_queue_normal.xml
│ │ │ │ ├── ic_random.xml
│ │ │ │ ├── ic_rating.xml
│ │ │ │ ├── ic_recents.xml
│ │ │ │ ├── ic_recents_group.xml
│ │ │ │ ├── ic_record.xml
│ │ │ │ ├── ic_remember.xml
│ │ │ │ ├── ic_resize.xml
│ │ │ │ ├── ic_restore.xml
│ │ │ │ ├── ic_rewind.xml
│ │ │ │ ├── ic_samsung_tv.xml
│ │ │ │ ├── ic_save.xml
│ │ │ │ ├── ic_save_w.xml
│ │ │ │ ├── ic_scale.xml
│ │ │ │ ├── ic_search_black_24dp.xml
│ │ │ │ ├── ic_sectioned_favs.xml
│ │ │ │ ├── ic_seeing.xml
│ │ │ │ ├── ic_seeing_drawer.xml
│ │ │ │ ├── ic_seen.xml
│ │ │ │ ├── ic_server_running.xml
│ │ │ │ ├── ic_service.xml
│ │ │ │ ├── ic_setting_asc_list.xml
│ │ │ │ ├── ic_setting_gps.xml
│ │ │ │ ├── ic_settings_reload.xml
│ │ │ │ ├── ic_share.xml
│ │ │ │ ├── ic_show.xml
│ │ │ │ ├── ic_skip.xml
│ │ │ │ ├── ic_star_heart.xml
│ │ │ │ ├── ic_stop.xml
│ │ │ │ ├── ic_suggestions.xml
│ │ │ │ ├── ic_sync.xml
│ │ │ │ ├── ic_sync_menu.xml
│ │ │ │ ├── ic_sync_rotate.xml
│ │ │ │ ├── ic_tag.xml
│ │ │ │ ├── ic_terminal.xml
│ │ │ │ ├── ic_theme.xml
│ │ │ │ ├── ic_timeout.xml
│ │ │ │ ├── ic_treasure.xml
│ │ │ │ ├── ic_trophy.xml
│ │ │ │ ├── ic_trophy_bronze.xml
│ │ │ │ ├── ic_trophy_gold.xml
│ │ │ │ ├── ic_trophy_normal.xml
│ │ │ │ ├── ic_trophy_silver.xml
│ │ │ │ ├── ic_umaru.xml
│ │ │ │ ├── ic_umaru_simple.xml
│ │ │ │ ├── ic_unlock.xml
│ │ │ │ ├── ic_unlocked.xml
│ │ │ │ ├── ic_version.xml
│ │ │ │ ├── ic_warning.xml
│ │ │ │ ├── ic_watching.xml
│ │ │ │ ├── ic_web.xml
│ │ │ │ ├── material_tab_indicator.xml
│ │ │ │ ├── progressbar_circle.xml
│ │ │ │ ├── shadow_gradient.xml
│ │ │ │ ├── shape_circle.xml
│ │ │ │ ├── side_nav_bar.xml
│ │ │ │ ├── side_nav_bar_amber.xml
│ │ │ │ ├── side_nav_bar_blue.xml
│ │ │ │ ├── side_nav_bar_blue_gray.xml
│ │ │ │ ├── side_nav_bar_brown.xml
│ │ │ │ ├── side_nav_bar_cyan.xml
│ │ │ │ ├── side_nav_bar_deep_orange.xml
│ │ │ │ ├── side_nav_bar_deep_purple.xml
│ │ │ │ ├── side_nav_bar_gray.xml
│ │ │ │ ├── side_nav_bar_green.xml
│ │ │ │ ├── side_nav_bar_indigo.xml
│ │ │ │ ├── side_nav_bar_light_blue.xml
│ │ │ │ ├── side_nav_bar_light_green.xml
│ │ │ │ ├── side_nav_bar_lime.xml
│ │ │ │ ├── side_nav_bar_orange.xml
│ │ │ │ ├── side_nav_bar_pink.xml
│ │ │ │ ├── side_nav_bar_purple.xml
│ │ │ │ ├── side_nav_bar_teal.xml
│ │ │ │ ├── side_nav_bar_yellow.xml
│ │ │ │ └── updater_background.xml
│ │ │ ├── drawable-night/
│ │ │ │ ├── anim_check_sync.xml
│ │ │ │ ├── anim_sync_check.xml
│ │ │ │ └── shadow_gradient.xml
│ │ │ ├── layout/
│ │ │ │ ├── activity_achievement_profile.xml
│ │ │ │ ├── activity_achievement_profile_material.xml
│ │ │ │ ├── activity_ads_settings.xml
│ │ │ │ ├── activity_anime_info.xml
│ │ │ │ ├── activity_anime_info_material.xml
│ │ │ │ ├── activity_anime_info_nwv.xml
│ │ │ │ ├── activity_blank.xml
│ │ │ │ ├── activity_browser.xml
│ │ │ │ ├── activity_ea.xml
│ │ │ │ ├── activity_eamap.xml
│ │ │ │ ├── activity_emision.xml
│ │ │ │ ├── activity_emision_material.xml
│ │ │ │ ├── activity_explorer.xml
│ │ │ │ ├── activity_explorer_material.xml
│ │ │ │ ├── activity_fragment.xml
│ │ │ │ ├── activity_fragment_material.xml
│ │ │ │ ├── activity_login.xml
│ │ │ │ ├── activity_login_buttons.xml
│ │ │ │ ├── activity_login_firestore.xml
│ │ │ │ ├── activity_login_main.xml
│ │ │ │ ├── activity_main_drawer.xml
│ │ │ │ ├── activity_main_drawer_nwv.xml
│ │ │ │ ├── activity_main_material.xml
│ │ │ │ ├── activity_migrate.xml
│ │ │ │ ├── activity_news.xml
│ │ │ │ ├── activity_news_material.xml
│ │ │ │ ├── activity_queue.xml
│ │ │ │ ├── activity_queue_grid.xml
│ │ │ │ ├── activity_queue_grid_material.xml
│ │ │ │ ├── activity_queue_material.xml
│ │ │ │ ├── activity_search.xml
│ │ │ │ ├── activity_seening.xml
│ │ │ │ ├── activity_seening_material.xml
│ │ │ │ ├── activity_updater.xml
│ │ │ │ ├── activity_webview.xml
│ │ │ │ ├── activity_webview_nwv.xml
│ │ │ │ ├── admob_ad_alone.xml
│ │ │ │ ├── admob_ad_card.xml
│ │ │ │ ├── admob_ad_news.xml
│ │ │ │ ├── admob_ad_plain.xml
│ │ │ │ ├── app_bar_main.xml
│ │ │ │ ├── app_bar_main_nwv.xml
│ │ │ │ ├── dialog_ff_enable.xml
│ │ │ │ ├── dialog_random_picker.xml
│ │ │ │ ├── dialog_wallet.xml
│ │ │ │ ├── exo_playback_control_view.xml
│ │ │ │ ├── exo_playback_youtube_control_view.xml
│ │ │ │ ├── exo_player.xml
│ │ │ │ ├── fragment_achievements.xml
│ │ │ │ ├── fragment_anime_details.xml
│ │ │ │ ├── fragment_anime_details_material.xml
│ │ │ │ ├── fragment_directory.xml
│ │ │ │ ├── fragment_directory_material.xml
│ │ │ │ ├── fragment_explorer_files.xml
│ │ │ │ ├── fragment_explorer_permission_pending.xml
│ │ │ │ ├── fragment_home.xml
│ │ │ │ ├── fragment_home_material.xml
│ │ │ │ ├── fragment_preferences.xml
│ │ │ │ ├── fragment_preferences_material.xml
│ │ │ │ ├── fragment_recent_material.xml
│ │ │ │ ├── fragment_search.xml
│ │ │ │ ├── fragment_search_grid.xml
│ │ │ │ ├── fragment_seeing.xml
│ │ │ │ ├── item_achievements.xml
│ │ │ │ ├── item_ad.xml
│ │ │ │ ├── item_ad_achievements.xml
│ │ │ │ ├── item_ad_fav.xml
│ │ │ │ ├── item_ad_news.xml
│ │ │ │ ├── item_ad_recents_material.xml
│ │ │ │ ├── item_anim_queue.xml
│ │ │ │ ├── item_anim_queue_grid.xml
│ │ │ │ ├── item_anim_queue_grid_material.xml
│ │ │ │ ├── item_anim_queue_material.xml
│ │ │ │ ├── item_changelog.xml
│ │ │ │ ├── item_changelog_material.xml
│ │ │ │ ├── item_chap.xml
│ │ │ │ ├── item_chap_grid.xml
│ │ │ │ ├── item_chap_grid_material.xml
│ │ │ │ ├── item_chap_material.xml
│ │ │ │ ├── item_chapter_preview.xml
│ │ │ │ ├── item_chapter_preview_material.xml
│ │ │ │ ├── item_chip.xml
│ │ │ │ ├── item_dir.xml
│ │ │ │ ├── item_dir_grid.xml
│ │ │ │ ├── item_dir_grid_material.xml
│ │ │ │ ├── item_dir_material.xml
│ │ │ │ ├── item_downloading_extra.xml
│ │ │ │ ├── item_downloading_extra_material.xml
│ │ │ │ ├── item_ea_step.xml
│ │ │ │ ├── item_emision.xml
│ │ │ │ ├── item_emision_material.xml
│ │ │ │ ├── item_explorer.xml
│ │ │ │ ├── item_explorer_grid.xml
│ │ │ │ ├── item_explorer_grid_material.xml
│ │ │ │ ├── item_explorer_material.xml
│ │ │ │ ├── item_faq.xml
│ │ │ │ ├── item_fav.xml
│ │ │ │ ├── item_fav_grid.xml
│ │ │ │ ├── item_fav_grid_card.xml
│ │ │ │ ├── item_fav_grid_card_material.xml
│ │ │ │ ├── item_fav_grid_card_simple.xml
│ │ │ │ ├── item_fav_grid_card_simple_material.xml
│ │ │ │ ├── item_fav_grid_material.xml
│ │ │ │ ├── item_fav_header.xml
│ │ │ │ ├── item_fav_material.xml
│ │ │ │ ├── item_native_reduced.xml
│ │ │ │ ├── item_native_small.xml
│ │ │ │ ├── item_native_small_rounded.xml
│ │ │ │ ├── item_news.xml
│ │ │ │ ├── item_news_material.xml
│ │ │ │ ├── item_queue.xml
│ │ │ │ ├── item_queue_full.xml
│ │ │ │ ├── item_queue_full_material.xml
│ │ │ │ ├── item_ranking.xml
│ │ │ │ ├── item_ranking_material.xml
│ │ │ │ ├── item_recents.xml
│ │ │ │ ├── item_recents_material.xml
│ │ │ │ ├── item_recommend_header.xml
│ │ │ │ ├── item_record.xml
│ │ │ │ ├── item_record_grid.xml
│ │ │ │ ├── item_record_grid_material.xml
│ │ │ │ ├── item_record_material.xml
│ │ │ │ ├── item_related.xml
│ │ │ │ ├── item_release.xml
│ │ │ │ ├── item_release_material.xml
│ │ │ │ ├── item_simple_spinner.xml
│ │ │ │ ├── item_top.xml
│ │ │ │ ├── item_top_current.xml
│ │ │ │ ├── item_tv_card.xml
│ │ │ │ ├── item_tv_card_adv.xml
│ │ │ │ ├── item_tv_card_chapter.xml
│ │ │ │ ├── item_tv_card_chapter_preview.xml
│ │ │ │ ├── item_tv_card_rate.xml
│ │ │ │ ├── item_tv_card_section.xml
│ │ │ │ ├── item_tv_card_sync.xml
│ │ │ │ ├── item_tv_tag.xml
│ │ │ │ ├── item_widget_list.xml
│ │ │ │ ├── lay_banner_container.xml
│ │ │ │ ├── lay_bottom_actions.xml
│ │ │ │ ├── lay_comments.xml
│ │ │ │ ├── lay_migrate_directory.xml
│ │ │ │ ├── lay_migrate_success.xml
│ │ │ │ ├── lay_migrate_version.xml
│ │ │ │ ├── lay_news.xml
│ │ │ │ ├── lay_status_bar.xml
│ │ │ │ ├── layout_comments_dialog.xml
│ │ │ │ ├── layout_diagnostic.xml
│ │ │ │ ├── layout_diagnostic_material.xml
│ │ │ │ ├── layout_expandable_textview.xml
│ │ │ │ ├── layout_img_big.xml
│ │ │ │ ├── layout_img_big_base.xml
│ │ │ │ ├── layout_loading_text.xml
│ │ │ │ ├── layout_loading_text_material.xml
│ │ │ │ ├── nav_header_main.xml
│ │ │ │ ├── nav_header_main_material.xml
│ │ │ │ ├── overlay.xml
│ │ │ │ ├── player_view.xml
│ │ │ │ ├── preference_recyclerview.xml
│ │ │ │ ├── recycler_changelog.xml
│ │ │ │ ├── recycler_changelog_material.xml
│ │ │ │ ├── recycler_chapters.xml
│ │ │ │ ├── recycler_dir.xml
│ │ │ │ ├── recycler_dir_grid.xml
│ │ │ │ ├── recycler_downloading.xml
│ │ │ │ ├── recycler_emision.xml
│ │ │ │ ├── recycler_explorer.xml
│ │ │ │ ├── recycler_explorer_chaps.xml
│ │ │ │ ├── recycler_explorer_chaps_grid.xml
│ │ │ │ ├── recycler_explorer_grid.xml
│ │ │ │ ├── recycler_faq.xml
│ │ │ │ ├── recycler_faq_material.xml
│ │ │ │ ├── recycler_favs.xml
│ │ │ │ ├── recycler_favs_grid.xml
│ │ │ │ ├── recycler_favs_grid_material.xml
│ │ │ │ ├── recycler_favs_matertial.xml
│ │ │ │ ├── recycler_genre.xml
│ │ │ │ ├── recycler_genre_material.xml
│ │ │ │ ├── recycler_loader.xml
│ │ │ │ ├── recycler_loader_material.xml
│ │ │ │ ├── recycler_ranking.xml
│ │ │ │ ├── recycler_ranking_material.xml
│ │ │ │ ├── recycler_recommends.xml
│ │ │ │ ├── recycler_recommends_grid.xml
│ │ │ │ ├── recycler_recommends_grid_material.xml
│ │ │ │ ├── recycler_recommends_material.xml
│ │ │ │ ├── recycler_records.xml
│ │ │ │ ├── recycler_records_grid.xml
│ │ │ │ ├── recycler_records_grid_material.xml
│ │ │ │ ├── recycler_records_material.xml
│ │ │ │ ├── recycler_refresh.xml
│ │ │ │ ├── recycler_refresh_fragment.xml
│ │ │ │ ├── recycler_refresh_grid.xml
│ │ │ │ ├── recycler_refresh_grid_material.xml
│ │ │ │ ├── recycler_refresh_material.xml
│ │ │ │ ├── snackprogressbar.xml
│ │ │ │ ├── sync_item_layout.xml
│ │ │ │ ├── tv_activity_main.xml
│ │ │ │ ├── view_hidden_overlay.xml
│ │ │ │ ├── view_home_list.xml
│ │ │ │ ├── view_home_list_large.xml
│ │ │ │ ├── view_seen_overlay.xml
│ │ │ │ ├── view_sync_firestore.xml
│ │ │ │ └── widget_emision.xml
│ │ │ ├── menu/
│ │ │ │ ├── activity_main_drawer_drawer.xml
│ │ │ │ ├── bottom_menu.xml
│ │ │ │ ├── chapter_casting_menu.xml
│ │ │ │ ├── chapter_downloaded_menu.xml
│ │ │ │ ├── chapter_menu.xml
│ │ │ │ ├── chapter_menu_offline.xml
│ │ │ │ ├── dir_menu.xml
│ │ │ │ ├── dir_menu_material.xml
│ │ │ │ ├── fav_menu.xml
│ │ │ │ ├── fav_menu_material.xml
│ │ │ │ ├── main.xml
│ │ │ │ ├── main_material.xml
│ │ │ │ ├── menu_achievements.xml
│ │ │ │ ├── menu_anime_info.xml
│ │ │ │ ├── menu_bug.xml
│ │ │ │ ├── menu_download_info.xml
│ │ │ │ ├── menu_download_options.xml
│ │ │ │ ├── menu_ea.xml
│ │ │ │ ├── menu_emision.xml
│ │ │ │ ├── menu_explorer_connected.xml
│ │ │ │ ├── menu_img.xml
│ │ │ │ ├── menu_news_filters.xml
│ │ │ │ ├── menu_play_queue.xml
│ │ │ │ ├── menu_queue_group.xml
│ │ │ │ ├── menu_queue_list.xml
│ │ │ │ ├── menu_random.xml
│ │ │ │ ├── menu_rating.xml
│ │ │ │ ├── menu_records.xml
│ │ │ │ ├── menu_seeing.xml
│ │ │ │ ├── menu_seeing_auto.xml
│ │ │ │ ├── menu_suggestions.xml
│ │ │ │ └── menu_top.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── attr.xml
│ │ │ │ ├── bool.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── font_certs.xml
│ │ │ │ ├── google_maps_api.xml
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── ints.xml
│ │ │ │ ├── preloaded_fonts.xml
│ │ │ │ ├── shapes.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── values-land/
│ │ │ │ ├── bool.xml
│ │ │ │ └── ints.xml
│ │ │ ├── values-large/
│ │ │ │ └── bool.xml
│ │ │ ├── values-night/
│ │ │ │ ├── bool.xml
│ │ │ │ ├── colors.xml
│ │ │ │ └── styles.xml
│ │ │ ├── values-night-v27/
│ │ │ │ └── styles.xml
│ │ │ ├── values-night-v28/
│ │ │ │ └── styles.xml
│ │ │ ├── values-television/
│ │ │ │ └── bool.xml
│ │ │ ├── values-v27/
│ │ │ │ └── styles.xml
│ │ │ ├── values-v28/
│ │ │ │ └── styles.xml
│ │ │ ├── values-v29/
│ │ │ │ └── strings.xml
│ │ │ ├── values-xlarge/
│ │ │ │ └── bool.xml
│ │ │ └── xml/
│ │ │ ├── backup_descriptor.xml
│ │ │ ├── network_security.xml
│ │ │ ├── path_providers.xml
│ │ │ ├── preferences.xml
│ │ │ ├── shortcuts.xml
│ │ │ └── widget_emision.xml
│ │ ├── playstore/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── ic_launcher_foregound.xml
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── menu/
│ │ │ │ └── activity_main_drawer_drawer.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values/
│ │ │ │ ├── bool.xml
│ │ │ │ ├── google_maps_api.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ └── xml/
│ │ │ └── preferences.xml
│ │ ├── release/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── google_maps_api.xml
│ │ ├── test/
│ │ │ └── java/
│ │ │ └── knf/
│ │ │ └── kuma/
│ │ │ └── ExampleUnitTest.kt
│ │ └── tv/
│ │ ├── AndroidManifest.xml
│ │ └── res/
│ │ └── values/
│ │ ├── bool.xml
│ │ └── strings.xml
│ └── tv/
│ └── app-tv.apk
├── build.gradle
├── fastlane/
│ ├── .gitignore
│ ├── Appfile
│ └── Fastfile
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── persistentsearchview/
│ ├── .gitignore
│ ├── bintray.gradle
│ ├── build.gradle
│ ├── gradle.properties
│ ├── install.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── org/
│ │ └── cryse/
│ │ └── widget/
│ │ └── persistentsearch/
│ │ └── ApplicationTest.java
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ ├── androidx/
│ │ │ └── appcompat/
│ │ │ └── graphics/
│ │ │ └── drawable/
│ │ │ └── SupportDrawerArrowDrawable.java
│ │ ├── io/
│ │ │ └── codetail/
│ │ │ ├── animation/
│ │ │ │ ├── RevealAnimator.java
│ │ │ │ ├── SupportAnimator.java
│ │ │ │ ├── SupportAnimatorLollipop.java
│ │ │ │ ├── SupportAnimatorPreL.java
│ │ │ │ └── ViewAnimationUtils.java
│ │ │ └── widget/
│ │ │ ├── RevealFrameLayout.java
│ │ │ └── RevealLinearLayout.java
│ │ └── org/
│ │ └── cryse/
│ │ └── widget/
│ │ └── persistentsearch/
│ │ ├── DefaultVoiceRecognizerDelegate.java
│ │ ├── HomeButton.java
│ │ ├── LogoView.java
│ │ ├── PersistentSearchView.java
│ │ ├── RevealViewGroup.java
│ │ ├── SearchItem.java
│ │ ├── SearchItemAdapter.java
│ │ ├── SearchSuggestionsBuilder.java
│ │ ├── SimpleSearchListener.java
│ │ ├── TextDrawable.java
│ │ └── VoiceRecognitionDelegate.java
│ └── res/
│ ├── layout/
│ │ ├── layout_searchitem.xml
│ │ └── layout_searchview.xml
│ └── values/
│ ├── attrs.xml
│ ├── dimens.xml
│ └── strings.xml
├── settings.gradle
└── version.num
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [jordyamc]
patreon: animeflvapp
open_collective: # Replace with a single Open Collective username
ko_fi: unbarredstream
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: https://paypal.me/jordyamc
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Smartphone (please complete the following information):**
- Device: [e.g. Google Pixel]
- Android Version: [e.g. 5.0]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .gitignore
================================================
*.iml
.gradle
local.properties
.idea/workspace.xml
.idea/libraries
.DS_Store
build
captures
.externalNativeBuild
app/google-services.json
app/src/main/java/knf/kuma/commons/EAHelper.java
app/src/main/res/values/styles_colors.xml
/*.png
*.psd
*.zip
*.json
*.pepk
keys.keystore
.idea
/web/
/web/public/thumbs/
/resizer/
/app/playstore/
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at jordyamc@hotmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2018 Jordy Alexis Mendoza Caballero
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================

[](https://app.codacy.com/app/jordyamc/UKIKU?utm_source=github.com&utm_medium=referral&utm_content=jordyamc/UKIKU&utm_campaign=Badge_Grade_Dashboard)
[](https://github.com/jordyamc/UKIKU/commits/master)
[](https://github.com/jordyamc/UKIKU/blob/master/LICENSE)
[](https://github.com/jordyamc/UKIKU/network/members)
## ¿Qué es UKIKU?
Es una app derivada de mi antiguo proyecto [Animeflv App](https://github.com/jordyamc/Animeflv), tiene casi las mismas funciones, pero hecha desde cero para dispositivos con Android 5 o superior, esta pensada para tener mejor rendimiento y optimización, así como menor tamaño de [APK](https://github.com/jordyamc/UKIKU/raw/master/app/release/app-release.apk) (~6MB)
## ¿Por que un proyecto tan grande no tiene mucha publicidad y es código abierto?
Soy un programador por hobby, no tengo experiencia profesional en la programación, pero aun así decidí aprender por mi cuenta, mis proyectos están hechos con el propósito de aprender a programar en el camino, aun con todo ese tiempo invertido quise que mis apps sean hechas por un fan para fans de anime, me gusta que la comunidad se apoye entre si, así que decidí que los propios usuarios elijan como y cuando apoyar a la app, pero aun así las donaciones son muy bien recibidas ;)
## ¿Como puedo modificar este proyecto?
En la [wiki](https://github.com/jordyamc/UKIKU/wiki) de éste repositorio encontrarás los pasos para hacerlo!
================================================
FILE: app/.gitattributes
================================================
* -crlf
================================================
FILE: app/.gitignore
================================================
build
app/src/main/java/knf/kuma/commons/EAHelper.java
app/src/main/res/values/styles_colors.xml
release/baselineProfiles
tv/baselineProfiles
================================================
FILE: app/amazon/app-amazon.apk
================================================
[File too large to display: 12.4 MB]
================================================
FILE: app/build.gradle
================================================
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
def localProperties = new Properties()
localProperties.load(new FileInputStream(rootProject.file("local.properties")))
android {
compileSdk 36
defaultConfig {
applicationId "knf.kuma"
minSdkVersion 24
targetSdkVersion 36
versionCode 228
versionName "5.3.18"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
buildTypes {
debug {
manifestPlaceholders.admobID = localProperties['UKIKU_ADMOB_ID'] ?: ""
buildConfigField "String", "IAB_KEY", localProperties['APPCOINS_IAB_KEY'] ?: ""
buildConfigField "String", "IAB_UPDATE_ACTION", localProperties['APPCOINS_IAB_UPDATE_ACTION'] ?: ""
buildConfigField "String", "IAB_BIND_ACTION", localProperties['APPCOINS_DEV_IAB_BIND_ACTION'] ?: ""
buildConfigField "String", "IAB_BIND_PACKAGE", localProperties['APPCOINS_DEV_IAB_BIND_PACKAGE'] ?: ""
buildConfigField "String", "APPCOINS_ADDRESS", localProperties['APPCOINS_ADDRESS'] ?: ""
buildConfigField "String", "DROPBOX_TOKEN", localProperties['DROPBOX_TOKEN'] ?: ""
buildConfigField "String", "EASTER_SEARCH", localProperties['EASTER_SEARCH'] ?: ""
buildConfigField "String", "CIPHER_PWD_12", localProperties['UKIKU_PWD_12'] ?: ""
buildConfigField "String", "CIPHER_PWD_16", localProperties['UKIKU_PWD_16'] ?: ""
buildConfigField "String", "CIPHER_PWD_32", localProperties['UKIKU_PWD_32'] ?: ""
buildConfigField "String", "ADM_FILE", localProperties['UKIKU_ADM_FILE'] ?: ""
buildConfigField "String", "APPODEAL_KEY", localProperties['UKIKU_APPODEAL_KEY'] ?: ""
resValue "string", "twitter_consumer_key", localProperties['UKIKU_TWITTER_API_KEY'] ?: ""
resValue "string", "twitter_consumer_secret", localProperties['UKIKU_TWITTER_API_SECRET'] ?: ""
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-android.txt'
manifestPlaceholders.admobID = localProperties['UKIKU_ADMOB_ID'] ?: ""
buildConfigField "String", "IAB_KEY", localProperties['APPCOINS_IAB_KEY'] ?: ""
buildConfigField "String", "IAB_UPDATE_ACTION", localProperties['APPCOINS_IAB_UPDATE_ACTION'] ?: ""
buildConfigField "String", "IAB_BIND_ACTION", localProperties['APPCOINS_DEV_IAB_BIND_ACTION'] ?: ""
buildConfigField "String", "IAB_BIND_PACKAGE", localProperties['APPCOINS_DEV_IAB_BIND_PACKAGE'] ?: ""
buildConfigField "String", "APPCOINS_ADDRESS", localProperties['APPCOINS_ADDRESS'] ?: ""
buildConfigField "String", "DROPBOX_TOKEN", localProperties['DROPBOX_TOKEN'] ?: ""
buildConfigField "String", "EASTER_SEARCH", localProperties['EASTER_SEARCH'] ?: ""
buildConfigField "String", "CIPHER_PWD_12", localProperties['UKIKU_PWD_12'] ?: ""
buildConfigField "String", "CIPHER_PWD_16", localProperties['UKIKU_PWD_16'] ?: ""
buildConfigField "String", "CIPHER_PWD_32", localProperties['UKIKU_PWD_32'] ?: ""
buildConfigField "String", "ADM_FILE", localProperties['UKIKU_ADM_FILE'] ?: ""
buildConfigField "String", "APPODEAL_KEY", localProperties['UKIKU_APPODEAL_KEY'] ?: ""
resValue "string", "twitter_consumer_key", localProperties['UKIKU_TWITTER_API_KEY'] ?: ""
resValue "string", "twitter_consumer_secret", localProperties['UKIKU_TWITTER_API_SECRET'] ?: ""
}
tv {
initWith release
applicationIdSuffix ".tv"
}
playstore {
initWith release
}
amazon {
initWith release
}
}
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
buildFeatures {
viewBinding = true
}
compileOptions {
sourceCompatibility = '17'
targetCompatibility = '17'
}
kotlinOptions {
jvmTarget = '17'
}
packagingOptions {
resources {
excludes += ['AndroidManifest.xml']
excludes += ['META-INF/versions/9/OSGI-INF/MANIFEST.MF']
}
}
namespace 'knf.kuma'
}
configurations.all {
resolutionStrategy {
force 'org.jsoup:jsoup:1.10.3'
//force 'androidx.core:core-ktx:1.6.0'
}
}
allprojects {
repositories {
mavenLocal()
google()
mavenCentral()
//jcenter()
maven { url "https://jitpack.io" }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
maven { url "https://dl.bintray.com/blockchainds/bds" }
maven { url "https://dl.bintray.com/asf/asf" }
}
}
dependencies {
//implementation project(path:':multidisplaycast', configuration:'default')
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation 'com.github.jordyamc:Multi-Display-Cast:2.20'
implementation 'com.github.jordyamc:PersistentSearchView:1.0.10'
implementation 'com.github.jordyamc:UAGenerator:1.2.2'
implementation 'com.github.jordyamc:AndroidVideoCache:2.7.6'
implementation 'com.github.jordyamc:Cloudflare-Bypasser:1.0.26'
implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'androidx.preference:preference-ktx:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.browser:browser:1.5.0' //Keep
implementation 'androidx.lifecycle:lifecycle-common-java8:2.10.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.10.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0'
implementation 'androidx.activity:activity-ktx:1.7.2' //Keep
implementation 'androidx.fragment:fragment-ktx:1.8.9'
implementation 'androidx.startup:startup-runtime:1.2.0'
implementation 'com.google.android.material:material:1.13.0'
implementation 'androidx.vectordrawable:vectordrawable-animated:1.2.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.mediarouter:mediarouter:1.4.0' //Keep
implementation 'androidx.recyclerview:recyclerview:1.4.0'
implementation 'androidx.leanback:leanback:1.2.0'
implementation 'androidx.tvprovider:tvprovider:1.1.0'
implementation 'androidx.palette:palette-ktx:1.0.0'
implementation 'com.google.android.gms:play-services-cast:22.2.0'
implementation platform('com.google.firebase:firebase-bom:34.7.0')
implementation 'com.google.firebase:firebase-firestore'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.android.gms:play-services-auth:20.5.0' //Keep
//implementation 'com.google.ads.mediation:adcolony:4.4.1.0'
implementation 'com.firebaseui:firebase-ui-auth:9.1.1'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
implementation 'io.reactivex.rxjava3:rxjava:3.1.12'
implementation 'com.google.android.gms:play-services-maps:19.2.0'
api 'com.google.guava:guava:33.5.0-android'
implementation 'androidx.annotation:annotation:1.9.1'
implementation 'androidx.slice:slice-builders-ktx:1.0.0-alpha08'
implementation 'androidx.slice:slice-builders:1.0.0'
implementation 'androidx.work:work-runtime-ktx:2.11.0'
implementation 'androidx.room:room-runtime:2.8.4'
implementation 'androidx.room:room-ktx:2.8.4'
kapt 'androidx.room:room-compiler:2.8.4'
androidTestImplementation 'androidx.room:room-testing:2.8.4'
implementation 'com.google.dagger:dagger-android-support:2.57.2'
kapt 'com.google.dagger:dagger-android-processor:2.57.2'
implementation 'androidx.paging:paging-runtime-ktx:3.3.6'
implementation 'pl.droidsonroids:jspoon:1.3.3'
implementation 'pl.droidsonroids.retrofit2:converter-jspoon:1.3.2'
implementation 'org.jsoup:jsoup:1.13.1' //Keep
implementation 'com.squareup.retrofit2:adapter-rxjava2:3.0.0'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
implementation 'com.squareup.okhttp3:okhttp:5.3.2'
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:5.3.2'
implementation 'com.github.jordyamc:ChipsLayoutManager:0.5.3'
implementation 'com.google.code.gson:gson:2.13.2'
implementation 'me.zhanghai.android.materialratingbar:library:1.4.0'
implementation 'at.blogc:expandabletextview:1.0.5'
implementation 'com.google.android.exoplayer:exoplayer:2.19.1'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.19.1'
implementation 'com.google.android.exoplayer:extension-mediasession:2.19.1'
implementation 'com.google.android.exoplayer:extension-okhttp:2.19.1'
//MaterialDialogs
implementation 'com.afollestad.material-dialogs:core:3.3.0'
implementation 'com.afollestad.material-dialogs:lifecycle:3.3.0'
implementation 'com.afollestad.material-dialogs:input:3.3.0'
implementation 'com.afollestad.material-dialogs:bottomsheets:3.3.0'
//---------
implementation 'org.apache.commons:commons-text:1.15.0'
implementation 'com.shamanland:xdroid-toaster:0.3.0'
implementation 'com.github.MFlisar:DragSelectRecyclerView:0.3'
implementation 'com.github.StephenVinouze:MaterialNumberPicker:1.1.0'
implementation 'biz.kasual:materialnumberpicker:1.2.1'
implementation 'org.nanohttpd:nanohttpd:2.3.1'
implementation 'com.dropbox.core:dropbox-core-sdk:7.0.0'
implementation 'com.dropbox.core:dropbox-android-sdk:7.0.0'
implementation 'com.github.daniel-stoneuk:material-about-library:3.2.0-rc01'
implementation 'io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:1.2.0'
implementation 'nl.dionsegijn:konfetti:1.3.2'
implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
implementation "com.github.tonyofrancis.Fetch:fetch2:3.4.1"
implementation "com.github.tonyofrancis.Fetch:fetch2:3.4.1"
implementation "com.github.tonyofrancis.Fetch:fetch2rx:3.4.1"
implementation "com.github.tonyofrancis.Fetch:fetch2okhttp:3.4.1"
implementation 'q.rorbin:badgeview:1.1.3'
implementation 'com.jaredrummler:android-device-names:2.1.1'
implementation 'com.simplecityapps:recyclerview-fastscroll:2.0.1'
implementation 'com.mikhaellopez:circularprogressbar:2.0.0'
implementation 'moe.feng:MaterialStepperView:0.2.4.2'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.github.jordyamc:kprobability:1.0.5'
implementation 'org.nield:kotlin-statistics:1.2.1'
implementation 'com.github.Jamshid-M:ExactRatingBar:1.0.0'
implementation 'com.github.jordyamc:CloudflareBypassWebview:1.0.4'
implementation 'com.github.jordyamc:apk-signatures:1.0.3'
implementation 'com.github.sephiroth74:android-target-tooltip:2.0.4'
implementation 'com.github.jordyamc.oasis-jsbridge-android:oasis-jsbridge-duktape:1.0.2'
kapt 'com.github.bumptech.glide:compiler:4.16.0'
implementation 'com.tbuonomo.andrui:viewpagerdotsindicator:4.1.2'
implementation 'fr.bmartel:jspeedtest:1.32.1'
implementation 'com.mani:ThinDownloadManager:1.4.0'
implementation 'com.github.simbiose:Encryption:1.4.0'
implementation 'com.github.marlonlom:timeago:4.1.0'
implementation 'com.scottyab:secure-preferences-lib:0.1.7'
implementation 'com.github.florent37:expansionpanel:1.2.2'
implementation 'com.github.evgenyneu:js-evaluator-for-android:v5.0.0'
implementation 'com.github.vkay94:DoubleTapPlayerView:1.0.4'
implementation 'org.conscrypt:conscrypt-android:2.5.3'
testImplementation 'junit:junit:4.13.2'
//Kotlin
implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.1.21'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2'
implementation 'org.jetbrains.anko:anko:0.10.8'
implementation 'org.jetbrains.anko:anko-coroutines:0.10.8'
//------
//Moon
//implementation 'io.github.darkryh.moongetter:moongetter-core:2.0.0-alpha02'
//implementation 'io.github.darkryh.moongetter:moongetter-client-okhttp:2.0.0-alpha02'
//implementation 'io.github.darkryh.moongetter:moongetter-client-cookie-java-net:2.0.0-alpha02'
//implementation 'io.github.darkryh.moongetter:moongetter-client-trustmanager-java-net:2.0.0-alpha02'
//implementation 'io.github.darkryh.moongetter:moongetter-android-robot:2.0.0-alpha02'
//
//Applovin
implementation 'com.applovin:applovin-sdk:+'
implementation 'com.applovin.mediation:inmobi-adapter:+'
implementation 'com.google.android.ump:user-messaging-platform:3.1.0'
//-------
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.work:work-testing:2.8.1'
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
}
================================================
FILE: app/fabric.properties
================================================
#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
#Sun Jan 07 11:02:25 CST 2018
apiSecret=88ba4d6880340c6e16c2690f626c60dcedff2e3a38650f2a8fb206f22f3e62d8
================================================
FILE: app/proguard-android.txt
================================================
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
#
# This file is no longer maintained and is not used by new (2.2+) versions of the
# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
# default rules at build time and stores them in the build directory.
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize and preverify steps (and performs some
# of these optimizations on its own).
-dontoptimize
-dontpreverify
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.
-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
native <methods>;
}
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**
# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep
-keep @android.support.annotation.Keep class * {*;}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}
================================================
FILE: app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keep @interface kotlin.coroutines.jvm.internal.DebugMetadata { *; }
-keep class **$$TypeAdapter { *; }
-keep class knf.kuma.pojos.AnimeObject.WebInfo.AnimeChapter {*;}
-keep class knf.kuma.pojos.AnimeObject.WebInfo.AnimeRelated {*;}
-keep class androidx.startup.InitializationProvider {*;}
-keepclasseswithmembernames class * {
@com.tickaroo.tikxml.* <fields>;
}
-keepclasseswithmembernames class * {
@com.tickaroo.tikxml.* <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepclassmembers class * implements pl.droidsonroids.jspoon.ElementConverter
-keep class pl.droidsonroids.jspoon.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-dontwarn knf.kuma.**
-dontwarn kotlinx.coroutines.**
-keep public enum knf.kuma.**{*;}
-keep class es.munix.multidisplaycast.**{*;}
-keep class com.connectsdk.**{* ;}
-keepclassmembers public class * implements pl.droidsonroids.jspoon.ElementConverter {
public <init>(...);
}
-keepclassmembernames class kotlinx.** {
volatile <fields>;
}
-keep public class * extends java.lang.Exception
-keep class org.jsoup.**{*;}
-keep class com.google.gson.reflect.TypeToken
-keep class * extends com.google.gson.reflect.TypeToken
-keep public class * implements java.lang.reflect.Type
-keeppackagenames org.jsoup.nodes
-dontwarn com.amazon.client.metrics.**
-dontwarn com.beloo.widget.chipslayoutmanager.**
-dontwarn com.squareup.okhttp.**
-dontwarn dagger.android.**
-dontwarn dagger.android.support.**
-dontwarn okhttp3.**
-dontwarn okhttp3.internal.**
-dontwarn okio.**
-dontwarn retrofit2.**
-dontwarn com.dropbox.core.**
-dontwarn io.branch.**
-dontwarn com.bumptech.glide.**
-dontwarn com.smaato.soma.SomaUnityPlugin*
-dontwarn com.millennialmedia**
-dontwarn com.facebook.**
-dontwarn com.google.common.**
-dontwarn com.google.android.**
-dontwarn com.google.firebase.**
-dontwarn org.jetbrains.anko.db.**
-dontwarn com.afollestad.materialdialogs.**
-dontwarn com.amazon.**
-dontwarn xdroid.toaster.**
-dontwarn com.pavelsikun.seekbarpreference.**
-dontwarn com.jakewharton.picasso.**
-dontwarn io.grpc.**
-dontwarn kotlin.internal.**
-dontwarn at.blogc.android.**
-dontwarn com.afollestad.**
-dontwarn com.connectsdk.**
-dontwarn com.danielstone.materialaboutlibrary.**
-dontwarn com.github.rubensousa.previewseekbar.**
-dontwarn com.mikhaellopez.circularprogressbar.**
-dontwarn com.simplecityapps.**
-dontwarn com.tbuonomo.viewpagerdotsindicator.**
-dontwarn es.munix.multidisplaycast.**
-dontwarn fr.bmartel.speedtest.**
-dontwarn me.zhanghai.android.**
-dontwarn moe.feng.common.**
-dontwarn com.github.stephenvinouze.materialnumberpickercore.**
-dontwarn org.cryse.widget.persistentsearch.**
-dontwarn pl.droidsonroids.jspoon.**
-dontwarn org.jetbrains.anko.**
-dontwarn nl.dionsegijn.konfetti.**
-dontwarn kotlinx.android.**
-dontwarn kotlin.**
-dontwarn io.opencensus.**
-dontwarn dagger.**
-dontwarn com.tonyodev.**
-dontwarn ir.mahdiparastesh.chlm.Orientation
================================================
FILE: app/release/app-release.apk
================================================
[File too large to display: 33.1 MB]
================================================
FILE: app/src/amazon/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature
android:name="android.hardware.faketouch"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.nfc"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_descriptor"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme.DayNight"
android:usesCleartextTraffic="true"
tools:replace="android:fullBackupContent">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="knf.kuma.cast.CastOptionsProvider" />
<activity
android:name=".commons.EAMapActivity"
android:label="@string/title_activity_eamap" />
<activity
android:name=".SplashActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="ukiku.app"
android:pathPrefix="/*"
android:scheme="http" />
<data
android:host="ukiku.app"
android:pathPrefix="/*"
android:scheme="https" />
</intent-filter>
<intent-filter>
<data
android:host="open"
android:scheme="ukiku" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name=".Main"
android:label="@string/title_activity_main">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="ukiku.app"
android:pathPrefix="/search"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".animeinfo.ActivityAnime"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="animeflv.net"
android:pathPrefix="/anime/"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".player.CustomExoPlayer"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:immersive="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:supportsPictureInPicture="true">
<intent-filter android:label="UKIKU">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="video/mp4"
android:scheme="http" />
<data
android:mimeType="video/mp4"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".player.VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:immersive="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:supportsPictureInPicture="true">
<intent-filter android:label="UKIKU experimental">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="video/mp4"
android:scheme="http" />
<data
android:mimeType="video/mp4"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".animeinfo.img.ActivityImgFull"
android:theme="@style/AppTheme.FullScreen" />
<activity android:name=".record.RecordActivity" />
<activity android:name=".seeing.SeeingActivity" />
<activity android:name=".emision.EmissionActivity" />
<activity android:name=".explorer.ExplorerActivity" />
<activity
android:name=".updater.UpdateActivity"
android:excludeFromRecents="true"
android:exported="true" />
<activity android:name=".random.RandomActivity" />
<activity android:name=".changelog.ChangelogActivity" />
<activity
android:name=".backup.BackUpActivity"
android:theme="@style/AppTheme.Translucent" />
<activity
android:name="com.dropbox.core.android.AuthActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask">
<intent-filter>
<data android:scheme="db-qtjow4hsk06vt19" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".backup.MigrationActivity"
android:theme="@style/AppTheme.Translucent" />
<activity android:name=".recommended.RecommendActivity" />
<activity android:name=".recommended.RankingActivity" />
<activity android:name=".search.GenreActivity" />
<service android:name=".directory.DirectoryService" />
<service android:name=".directory.DirectoryUpdateService" />
<service android:name=".download.DownloadService" />
<service
android:name=".widgets.emision.WEmissionService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<service android:name=".download.DownloadManager" />
<service android:name=".commons.SelfServer" />
<receiver
android:name=".widgets.emision.WEmisionProvider"
android:label="Emisión">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_emision" />
</receiver>
<receiver android:name=".download.DownloadReceiver" />
<receiver android:name=".recents.RecentsNotReceiver" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/path_providers" />
</provider>
<meta-data
android:name="io.fabric.ApiKey"
android:value="8971b3733a2fd699ebd101e18ce228d80baeab92" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${admobID}" />
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true" />
<activity android:name=".queue.QueueActivity" />
<activity
android:name=".download.DownloadDialogActivity"
android:excludeFromRecents="true"
android:theme="@style/Theme.AppCompat.DayNight.Dialog">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="animeflv.net"
android:pathPrefix="/ver/"
android:scheme="https" />
<data
android:host="animeflv.net"
android:pathPrefix="/ver/"
android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".custom.ThemedControlsActivity" />
<activity android:name=".news.NewsActivity" />
<activity android:name=".achievements.AchievementActivity" />
<activity android:name=".commons.EAUnlockActivity" />
<activity
android:name="es.munix.multidisplaycast.CastControlsActivity"
android:screenOrientation="sensor"
tools:node="merge"
tools:replace="android:screenOrientation" />
<activity android:name=".Diagnostic" />
<activity android:name=".recents.RecentsActivity" />
<activity android:name=".Diagnostic$FullBypass" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
</manifest>
================================================
FILE: app/src/amazon/res/drawable/ic_launcher_foregound.xml
================================================
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="4045.2056"
android:viewportHeight="4045.2056">
<group
android:translateX="546.1027"
android:translateY="546.1027">
<path
android:name="UKIKU"
android:fillColor="#fff"
android:pathData="m395.4 1256.4v220.3c0 25.8 3.1 49.2 9.2 70.2c6.1 21 14.6 39.6 25.3 55.9c10.8 16.3 23.3 30.4 37.6 42.2c14.3 11.9 29.6 21.7 45.9 29.3c16.3 7.7 33.1 13.4 50.5 17.1c17.4 3.7 34.6 5.5 51.6 5.5h180c5.5 0 10.8 -1 15.7 -3.1c4.9 -2 9.2 -4.9 12.9 -8.4c3.7 -3.6 6.6 -7.8 8.6 -12.7c2 -4.9 3.1 -10.2 3.1 -16v-400.3h-79.9v360.7h-140.4c-2.5 0 -7.6 -0.4 -15.5 -1.1c-7.9 -0.7 -17 -2.5 -27.3 -5.4c-10.3 -2.9 -21.3 -7.3 -32.7 -13.2c-11.5 -5.9 -22 -14.1 -31.6 -24.6c-9.6 -10.4 -17.6 -23.4 -23.8 -39c-6.2 -15.6 -9.4 -34.6 -9.4 -57.1v-220.3zm533.9 0v440.5h79.9v-440.5zm347.8 0 -179.7 180h-56.2v80.5h56.2l179.7 180h113.4l-226.4 -220.3l226.4 -220.3zm164 0v440.5h79.9v-440.5zm173.9 0v440.5h79.9v-440.5zm347.8 0 -179.7 180h-56.2v80.5h56.2l179.7 180h113.4l-226.4 -220.3l226.4 -220.3zm154.5 0v220.3c0 25.8 3.1 49.2 9.2 70.2c6.1 21 14.6 39.6 25.3 55.9c10.8 16.3 23.3 30.4 37.6 42.2c14.3 11.9 29.6 21.7 45.9 29.3c16.3 7.7 33.1 13.4 50.5 17.1c17.4 3.7 34.6 5.5 51.6 5.5h180c5.5 0 10.8 -1 15.7 -3.1c4.9 -2 9.2 -4.9 12.9 -8.4c3.7 -3.6 6.6 -7.8 8.6 -12.7c2 -4.9 3.1 -10.2 3.1 -16v-400.3h-79.9v360.7h-140.4c-2.5 0 -7.6 -0.4 -15.5 -1.1c-7.9 -0.7 -17 -2.5 -27.3 -5.4c-10.3 -2.9 -21.3 -7.3 -32.7 -13.2c-11.5 -5.9 -22 -14.1 -31.6 -24.6c-9.6 -10.4 -17.6 -23.4 -23.8 -39c-6.3 -15.6 -9.4 -34.6 -9.4 -57.1v-220.3z" />
</group>
</vector>
================================================
FILE: app/src/amazon/res/drawable/ic_launcher_foreground.xml
================================================
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="4596.8247"
android:viewportHeight="4596.8247">
<group
android:translateX="275.80948"
android:translateY="275.80948">
<group
android:translateX="546.1027"
android:translateY="546.1027">
<path
android:name="UKIKU"
android:fillColor="#fff"
android:pathData="m395.4 1256.4v220.3c0 25.8 3.1 49.2 9.2 70.2c6.1 21 14.6 39.6 25.3 55.9c10.8 16.3 23.3 30.4 37.6 42.2c14.3 11.9 29.6 21.7 45.9 29.3c16.3 7.7 33.1 13.4 50.5 17.1c17.4 3.7 34.6 5.5 51.6 5.5h180c5.5 0 10.8 -1 15.7 -3.1c4.9 -2 9.2 -4.9 12.9 -8.4c3.7 -3.6 6.6 -7.8 8.6 -12.7c2 -4.9 3.1 -10.2 3.1 -16v-400.3h-79.9v360.7h-140.4c-2.5 0 -7.6 -0.4 -15.5 -1.1c-7.9 -0.7 -17 -2.5 -27.3 -5.4c-10.3 -2.9 -21.3 -7.3 -32.7 -13.2c-11.5 -5.9 -22 -14.1 -31.6 -24.6c-9.6 -10.4 -17.6 -23.4 -23.8 -39c-6.2 -15.6 -9.4 -34.6 -9.4 -57.1v-220.3zm533.9 0v440.5h79.9v-440.5zm347.8 0 -179.7 180h-56.2v80.5h56.2l179.7 180h113.4l-226.4 -220.3l226.4 -220.3zm164 0v440.5h79.9v-440.5zm173.9 0v440.5h79.9v-440.5zm347.8 0 -179.7 180h-56.2v80.5h56.2l179.7 180h113.4l-226.4 -220.3l226.4 -220.3zm154.5 0v220.3c0 25.8 3.1 49.2 9.2 70.2c6.1 21 14.6 39.6 25.3 55.9c10.8 16.3 23.3 30.4 37.6 42.2c14.3 11.9 29.6 21.7 45.9 29.3c16.3 7.7 33.1 13.4 50.5 17.1c17.4 3.7 34.6 5.5 51.6 5.5h180c5.5 0 10.8 -1 15.7 -3.1c4.9 -2 9.2 -4.9 12.9 -8.4c3.7 -3.6 6.6 -7.8 8.6 -12.7c2 -4.9 3.1 -10.2 3.1 -16v-400.3h-79.9v360.7h-140.4c-2.5 0 -7.6 -0.4 -15.5 -1.1c-7.9 -0.7 -17 -2.5 -27.3 -5.4c-10.3 -2.9 -21.3 -7.3 -32.7 -13.2c-11.5 -5.9 -22 -14.1 -31.6 -24.6c-9.6 -10.4 -17.6 -23.4 -23.8 -39c-6.3 -15.6 -9.4 -34.6 -9.4 -57.1v-220.3z" />
</group>
</group>
</vector>
================================================
FILE: app/src/amazon/res/menu/activity_main_drawer_drawer.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<item
android:id="@+id/drawer_explorer"
android:icon="@drawable/ic_files"
android:title="Explorador"
android:visible="false" />
<item
android:id="@+id/drawer_emision"
android:icon="@drawable/ic_emision"
android:title="Emisión"
app:actionViewClass="android.widget.TextView" />
<item
android:id="@+id/drawer_seeing"
android:icon="@drawable/ic_seeing_drawer"
android:title="Siguiendo"
app:actionViewClass="android.widget.TextView" />
<item
android:id="@+id/drawer_queue"
android:icon="@drawable/ic_clock"
android:title="Pendientes"
android:visible="false"
app:actionViewClass="android.widget.TextView" />
<item
android:id="@+id/drawer_suggestions"
android:icon="@drawable/ic_suggestions"
android:title="Sugerencias" />
<item
android:id="@+id/drawer_news"
android:icon="@drawable/ic_news"
android:title="Noticias" />
<item
android:id="@+id/drawer_records"
android:icon="@drawable/ic_record"
android:title="Historial"
android:visible="false" />
<item
android:id="@+id/drawer_random"
android:icon="@drawable/ic_random"
android:title="Random" />
<item
android:id="@+id/drawer_faq"
android:icon="@drawable/ic_faq"
android:title="FAQ" />
</menu>
================================================
FILE: app/src/amazon/res/mipmap-anydpi-v26/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
================================================
FILE: app/src/amazon/res/mipmap-anydpi-v26/ic_launcher_round.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
================================================
FILE: app/src/amazon/res/values/bool.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isLandscape">false</bool>
<bool name="isDark">false</bool>
<bool name="isNotDark">true</bool>
<bool name="isTv">false</bool>
<bool name="isTablet">false</bool>
<string name="layType">0</string>
<bool name="showUncensored">false</bool>
</resources>
================================================
FILE: app/src/amazon/res/values/google_maps_api.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyD2QS_E66qKxXmJhlXW8eRT7OYNdHphWUY</string>
</resources>
================================================
FILE: app/src/amazon/res/values/ic_launcher_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#000000</color>
</resources>
================================================
FILE: app/src/amazon/res/xml/preferences.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory android:title="Actualizaciones">
<ListPreference
android:defaultValue="1"
android:entries="@array/recents_options"
android:entryValues="@array/recents_values"
android:icon="@drawable/ic_recents"
android:key="recents_time"
android:summary="%s"
android:title="Revisar recientes" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_group"
android:key="group_notifications"
android:title="Agrupar notificaciones" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_heart"
android:key="notify_favs"
android:summaryOff="Se notificaran todos los capitulos"
android:summaryOn="Se notificaran capitulos solo si estan en favoritos"
android:title="Solo favoritos" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_img"
android:key="recent_image"
android:summary="Episodios recientes"
android:title="Portada en notificación" />
<ListPreference
android:defaultValue="7"
android:entries="@array/dir_options"
android:entryValues="@array/dir_values"
android:icon="@drawable/ic_directory"
android:key="dir_update_time"
android:summary="%s"
android:title="Recrear directorio" />
<Preference
android:icon="@drawable/ic_note"
android:key="custom_tone"
android:summary="Sistema"
android:title="Tono de notificación" />
<ListPreference
android:defaultValue="0"
android:enabled="false"
android:entries="@array/autobackup"
android:entryValues="@array/autobackup_values"
android:icon="@drawable/ic_cloud_upload"
android:key="auto_backup"
android:summary="%s"
android:title="Auto respaldo" />
</PreferenceCategory>
<PreferenceCategory
android:key="storage_group"
android:title="Almacenamiento"
app:isPreferenceVisible="false">
<ListPreference
android:defaultValue="0"
android:entries="@array/storage_type"
android:entryValues="@array/storage_values"
android:icon="@drawable/ic_download"
android:key="download_type"
android:summary="%s"
android:title="Descargas" />
<Preference
android:icon="@drawable/ic_download"
android:key="download_type_q"
android:title="Descargas" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_hide_pref"
android:key="hide_chaps"
android:title="Ocultar de galeria" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_import"
android:key="show_import"
android:title="Importar archivos" />
<ListPreference
android:defaultValue="0"
android:entries="@array/savetype"
android:entryValues="@array/savetype_values"
android:icon="@drawable/ic_save"
android:key="save_type"
android:summary="%s"
android:title="Formato de guardado" />
<ListPreference
android:defaultValue="1"
android:entries="@array/downloader_type"
android:entryValues="@array/downloader_type_values"
android:icon="@drawable/ic_downloader"
android:key="downloader_type"
android:summary="%s"
android:title="Administrador de descarga" />
<ListPreference
android:defaultValue="3"
android:entries="@array/parallel_count"
android:entryValues="@array/parallel_count"
android:icon="@drawable/ic_download_multiple"
android:key="max_parallel_downloads"
android:summary="Máximo %s"
android:title="Descargas paralelas" />
<ListPreference
android:defaultValue="32"
android:entries="@array/buffer_size"
android:entryValues="@array/buffer_size_values"
android:icon="@drawable/ic_buffer"
android:key="buffer_size"
android:summary="%s"
android:title="Tamaño de buffer" />
</PreferenceCategory>
<PreferenceCategory
android:title="Reproducción"
app:isPreferenceVisible="false">
<ListPreference
android:defaultValue="0"
android:entries="@array/player_options"
android:entryValues="@array/player_values"
android:icon="@drawable/ic_player"
android:key="player_type"
android:summary="%s"
android:title="Tipo de reproductor" />
<ListPreference
android:defaultValue="0"
android:entries="@array/player_resize_options"
android:entryValues="@array/player_resize_values"
android:icon="@drawable/ic_resize"
android:key="player_resize"
android:summary="%s"
android:title="Redimensión de video" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_experimental"
android:key="experimental_player"
android:title="Reproductor experimental" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_samsung_tv"
android:key="force_local_cast"
android:summary="Usar proxy para cast"
android:title="Cast local" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_remember"
android:key="remember_server"
android:title="Recordar último servidor" />
</PreferenceCategory>
<PreferenceCategory android:title="Diseño">
<ListPreference
android:defaultValue="0"
android:entries="@array/recents_type"
android:entryValues="@array/recents_type_values"
android:icon="@drawable/ic_home"
android:key="recents_design"
android:summary="%s"
android:title="Diseño de recientes" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_setting_asc_list"
android:key="asc_chapters"
android:summaryOff="Descendente"
android:summaryOn="Ascendente"
android:title="Orden de capitulos" />
<ListPreference
android:defaultValue="@string/layType"
android:entries="@array/layType_options"
android:entryValues="@array/layType_values"
android:icon="@drawable/ic_lay_type"
android:key="lay_type"
android:summary="%s"
android:title="Diseño de listas" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_download_progress"
android:key="show_progress"
android:title="Progreso de descarga" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_sectioned_favs"
android:key="fav_sections"
android:title="Favoritos por categoria" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_number"
android:key="show_fav_count"
android:title="Indicador de favoritos" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_collapse"
android:key="collapse_dir_nots"
android:summary="Crear y actualizar directorio"
android:title="Notificaciones pequeñas" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_scale"
android:key="scale_img"
android:summary="Portada en pantalla completa"
android:title="Mejor calidad de imagen" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_animations"
android:key="smooth_animations"
android:title="Mejorar animaciones" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_heart_full_menu"
android:key="show_favs"
android:summary="Marcar favoritos en emisión"
android:title="Indicador de favoritos" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_list_placeholder"
android:key="list_placeholder"
android:title="Usar placeholder en listas" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_cash"
android:key="ads_enabled_new"
android:summary="Mostrar anuncios para ayudar al programador"
android:title="Mostrar anuncios" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_design"
android:title="Personalización">
<ListPreference
android:defaultValue="0"
android:entries="@array/theme_options"
android:entryValues="@array/theme_values"
android:icon="@drawable/ic_theme"
android:key="theme_option"
android:summary="%s"
android:title="Estilo de tema" />
<ListPreference
android:defaultValue="0"
android:entries="@array/theme_colors"
android:entryValues="@array/theme_colors_values"
android:icon="@drawable/ic_palette"
android:key="theme_color"
android:summary="%s"
android:title="Color de tema" />
</PreferenceCategory>
<PreferenceCategory android:title="Extras">
<androidx.preference.ListPreference
android:defaultValue="10"
android:entries="@array/timeout_options"
android:entryValues="@array/timeout_values"
android:icon="@drawable/ic_timeout"
android:key="timeout_time"
android:summary="%s"
android:title="Espera de conexión" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_incognito"
android:key="default_useragent"
android:summaryOff="Se usará agente al azar en bypass"
android:summaryOn="Se usará agente por defecto en bypass"
android:title="Usar agente del dispositivo" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_setting_gps"
android:key="daynigth_permission"
android:title="Tema dia/noche preciso" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_trophy_normal"
android:key="achievements_permissions"
android:title="Habilitar logros" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_changelog_get"
android:key="changelog_load"
android:summaryOff="Web"
android:summaryOn="Archivo local"
android:title="Obtencion de changelog" />
<Preference
android:icon="@drawable/ic_settings_reload"
android:key="dir_update"
android:title="Actualizar directorio" />
<Preference
android:icon="@drawable/ic_danger"
android:key="dir_destroy"
android:title="Recrear directorio" />
</PreferenceCategory>
</PreferenceScreen>
================================================
FILE: app/src/androidTest/java/knf/kuma/ExampleInstrumentedTest.kt
================================================
package knf.kuma
import android.util.Log
import androidx.test.InstrumentationRegistry
import androidx.test.runner.AndroidJUnit4
import androidx.work.Configuration
import androidx.work.testing.SynchronousExecutor
import androidx.work.testing.WorkManagerTestInitHelper
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
/**
* Instrumented test, which will execute on an Android device.
*
* @see [Testing documentation](http://d.android.com/tools/testing)
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Before
fun setup() {
val context = InstrumentationRegistry.getTargetContext()
val config = Configuration.Builder()
.setMinimumLoggingLevel(Log.DEBUG)
.setExecutor(SynchronousExecutor())
.build()
WorkManagerTestInitHelper.initializeTestWorkManager(context, config)
}
@Test
@Throws(Exception::class)
fun testRecentWork() {
}
}
================================================
FILE: app/src/debug/res/xml/preferences.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Actualizaciones">
<ListPreference
android:defaultValue="1"
android:entries="@array/recents_options"
android:entryValues="@array/recents_values"
android:icon="@drawable/ic_recents"
android:key="recents_time"
android:summary="%s"
android:title="Revisar recientes"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_group"
android:key="group_notifications"
android:title="Agrupar notificaciones"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_heart"
android:key="notify_favs"
android:summaryOff="Se notificaran todos los capitulos"
android:summaryOn="Se notificaran capitulos solo si estan en favoritos"
android:title="Solo favoritos"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_img"
android:key="recent_image"
android:summary="Episodios recientes"
android:title="Portada en notificación"/>
<ListPreference
android:defaultValue="7"
android:entries="@array/dir_options"
android:entryValues="@array/dir_values"
android:icon="@drawable/ic_directory"
android:key="dir_update_time"
android:summary="%s"
android:title="Recrear directorio"/>
<Preference
android:icon="@drawable/ic_note"
android:key="custom_tone"
android:summary="Sistema"
android:title="Tono de notificación"/>
<ListPreference
android:defaultValue="0"
android:enabled="false"
android:entries="@array/autobackup"
android:entryValues="@array/autobackup_values"
android:icon="@drawable/ic_cloud_upload"
android:key="auto_backup"
android:summary="%s"
android:title="Auto respaldo"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Almacenamiento">
<ListPreference
android:defaultValue="0"
android:entries="@array/storage_type"
android:entryValues="@array/storage_values"
android:icon="@drawable/ic_download"
android:key="download_type"
android:summary="%s"
android:title="Descargas"/>
<Preference
android:icon="@drawable/ic_download"
android:key="download_type_q"
android:title="Descargas"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_hide_pref"
android:key="hide_chaps"
android:title="Ocultar de galeria"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_import"
android:key="show_import"
android:title="Importar archivos"/>
<ListPreference
android:defaultValue="0"
android:entries="@array/savetype"
android:entryValues="@array/savetype_values"
android:icon="@drawable/ic_save"
android:key="save_type"
android:summary="%s"
android:title="Formato de guardado"/>
<ListPreference
android:defaultValue="1"
android:entries="@array/downloader_type"
android:entryValues="@array/downloader_type_values"
android:icon="@drawable/ic_downloader"
android:key="downloader_type"
android:summary="%s"
android:title="Administrador de descarga"/>
<ListPreference
android:defaultValue="3"
android:entries="@array/parallel_count"
android:entryValues="@array/parallel_count"
android:icon="@drawable/ic_download_multiple"
android:key="max_parallel_downloads"
android:summary="Máximo %s"
android:title="Descargas paralelas"/>
<ListPreference
android:defaultValue="32"
android:entries="@array/buffer_size"
android:entryValues="@array/buffer_size_values"
android:icon="@drawable/ic_buffer"
android:key="buffer_size"
android:summary="%s"
android:title="Tamaño de buffer"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Reproducción">
<ListPreference
android:defaultValue="0"
android:entries="@array/player_options"
android:entryValues="@array/player_values"
android:icon="@drawable/ic_player"
android:key="player_type"
android:summary="%s"
android:title="Tipo de reproductor"/>
<ListPreference
android:defaultValue="0"
android:entries="@array/player_resize_options"
android:entryValues="@array/player_resize_values"
android:icon="@drawable/ic_resize"
android:key="player_resize"
android:summary="%s"
android:title="Redimensión de video"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_experimental"
android:key="experimental_player"
android:title="Reproductor avanzado"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_samsung_tv"
android:key="force_local_cast"
android:summary="Usar proxy para cast"
android:title="Cast local"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_remember"
android:key="remember_server"
android:title="Recordar último servidor"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Diseño">
<ListPreference
android:defaultValue="0"
android:entries="@array/recents_type"
android:entryValues="@array/recents_type_values"
android:icon="@drawable/ic_home"
android:key="recents_design"
android:summary="%s"
android:title="Diseño de recientes"/>
<ListPreference
android:defaultValue="0"
android:entries="@array/recents_action_options"
android:entryValues="@array/design_values"
android:icon="@drawable/ic_cloud_download"
android:key="recentActionType"
android:summary="%s"
android:title="Accion de click en recientes"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_setting_asc_list"
android:key="asc_chapters"
android:summaryOff="Descendente"
android:summaryOn="Ascendente"
android:title="Orden de capitulos"/>
<ListPreference
android:defaultValue="@string/layType"
android:entries="@array/layType_options"
android:entryValues="@array/layType_values"
android:icon="@drawable/ic_lay_type"
android:key="lay_type"
android:summary="%s"
android:title="Diseño de listas"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_download_progress"
android:key="show_progress"
android:title="Progreso de descarga"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_sectioned_favs"
android:key="fav_sections"
android:title="Favoritos por categoria"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_number"
android:key="show_fav_count"
android:title="Indicador de favoritos"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_collapse"
android:key="collapse_dir_nots"
android:summary="Crear y actualizar directorio"
android:title="Notificaciones pequeñas"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_scale"
android:key="scale_img"
android:summary="Portada en pantalla completa"
android:title="Mejor calidad de imagen"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_animations"
android:key="smooth_animations"
android:title="Mejorar animaciones"/>
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_heart_full_menu"
android:key="show_favs"
android:summary="Marcar favoritos en emisión"
android:title="Indicador de favoritos"/>
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_list_placeholder"
android:key="list_placeholder"
android:title="Usar placeholder en listas" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_cash"
android:key="ads_enabled_new"
android:summary="Mostrar anuncios para ayudar al programador"
android:title="Mostrar anuncios" />
<Preference
android:icon="@drawable/ic_cash"
android:key="ads_settings"
android:title="Configuracion de anuncios" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_design"
android:title="Personalización">
<ListPreference
android:defaultValue="0"
android:entries="@array/design_options"
android:entryValues="@array/design_values"
android:icon="@drawable/ic_design_ab"
android:key="designStyleType"
android:summary="%s"
android:title="Diseño de UI"/>
<ListPreference
android:defaultValue="@string/theme_default"
android:entries="@array/theme_options"
android:entryValues="@array/theme_values"
android:icon="@drawable/ic_theme"
android:key="theme_option"
android:summary="%s"
android:title="Estilo de tema"/>
<ListPreference
android:defaultValue="0"
android:entries="@array/theme_colors"
android:entryValues="@array/theme_colors_values"
android:icon="@drawable/ic_palette"
android:key="theme_color"
android:summary="%s"
android:title="Color de tema"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Extras">
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_ff"
android:key="family_friendly_enabled"
android:title="Modo family friendly" />
<androidx.preference.ListPreference
android:defaultValue="10"
android:entries="@array/timeout_options"
android:entryValues="@array/timeout_values"
android:icon="@drawable/ic_timeout"
android:key="timeout_time"
android:summary="%s"
android:title="Espera de conexión" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_incognito"
android:key="may_use_random_useragent_1"
android:summaryOn="Se usará agente al azar cuando sea posible"
android:summaryOff="Se usará la configuracion actual"
android:title="Usar agente al azar cuando sea posible" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_bug"
android:key="security_blocking_firestore"
android:summaryOff="Desactivada"
android:summaryOn="Activada"
android:title="Protección contra SP " />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_trophy_normal"
android:key="achievements_permissions"
android:title="Habilitar logros" />
<SwitchPreference
android:defaultValue="true"
android:icon="@drawable/ic_changelog_get"
android:key="changelog_load"
android:summaryOff="Web"
android:summaryOn="Archivo local"
android:title="Obtencion de changelog"/>
<Preference
android:icon="@drawable/ic_settings_reload"
android:key="dir_update"
android:title="Actualizar directorio"/>
<Preference
android:icon="@drawable/ic_danger"
android:key="dir_destroy"
android:title="Recrear directorio"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Debug">
<Preference
android:key="reset_recents"
android:title="Reiniciar recientes"/>
</PreferenceCategory>
</PreferenceScreen>
================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.RUN_USER_INITIATED_JOBS" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
android:name="android.permission.RECORD_AUDIO"
android:requiredFeature="android.software.leanback" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
tools:node="remove" />
<application
android:name=".App"
android:allowBackup="true"
android:banner="@drawable/tv_banner"
android:fullBackupContent="@xml/backup_descriptor"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme.DayNight"
android:networkSecurityConfig="@xml/network_security"
android:usesCleartextTraffic="true"
tools:replace="android:fullBackupContent">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="knf.kuma.cast.CastOptionsProvider" />
<activity
android:name=".commons.EAMapActivity"
android:label="@string/title_activity_eamap" />
<activity
android:name=".SplashActivity"
android:label="@string/title_activity_main"
android:exported="true"
android:theme="@style/AppTheme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="ukiku.app"
android:pathPrefix="/*"
android:scheme="http" />
<data
android:host="ukiku.app"
android:pathPrefix="/*"
android:scheme="https" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="ukiku.ga"
android:pathPrefix="/*"
android:scheme="http" />
<data
android:host="ukiku.ga"
android:pathPrefix="/*"
android:scheme="https" />
</intent-filter>
<intent-filter>
<data
android:host="open"
android:scheme="ukiku" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name=".Main"
android:enabled="false"
android:exported="true"
android:label="@string/title_activity_main">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="ukiku.app"
android:pathPrefix="/search"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".tv.ui.TVMain"
android:banner="@drawable/tv_banner"
android:exported="true"
android:theme="@style/AppTheme.TV.Browser">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="tv"
android:pathPrefix="/home"
android:scheme="ukiku" />
</intent-filter>
</activity>
<activity
android:name=".animeinfo.ActivityAnime"
android:enabled="false"
android:theme="@style/AppTheme.NoActionBar"
android:exported="true"
android:windowSoftInputMode="stateHidden">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="animeflv.net"
android:pathPrefix="/anime/"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".player.CustomExoPlayer"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:immersive="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:exported="true"
android:supportsPictureInPicture="true">
<intent-filter android:label="UKIKU">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="video/mp4"
android:scheme="http" />
<data
android:mimeType="video/mp4"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".player.VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:immersive="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:exported="true"
android:supportsPictureInPicture="true">
<intent-filter android:label="UKIKU experimental">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="video/mp4"
android:scheme="http" />
<data
android:mimeType="video/mp4"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".animeinfo.img.ActivityImgFull"
android:theme="@style/AppTheme.FullScreen" />
<activity android:name=".record.RecordActivity" />
<activity android:name=".seeing.SeeingActivity" />
<activity android:name=".emision.EmissionActivity" />
<activity android:name=".explorer.ExplorerActivity" />
<activity
android:name=".updater.UpdateActivity"
android:excludeFromRecents="true"
android:exported="true" />
<activity android:name=".random.RandomActivity" />
<activity android:name=".changelog.ChangelogActivity" />
<activity
android:name=".backup.BackUpActivity"
android:theme="@style/AppTheme.Translucent" />
<activity
android:name="com.dropbox.core.android.AuthActivity"
android:configChanges="orientation|keyboard"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
<data android:scheme="db-qtjow4hsk06vt19" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".backup.MigrationActivity"
android:theme="@style/AppTheme.Translucent" />
<activity android:name=".recommended.RecommendActivity" />
<activity android:name=".recommended.RankingActivity" />
<activity android:name=".search.GenreActivity" />
<service
android:name=".directory.DirectoryService"
android:foregroundServiceType="dataSync" />
<service
android:name=".directory.DirectoryUpdateService"
android:foregroundServiceType="dataSync" />
<service
android:name=".download.DownloadService"
android:foregroundServiceType="dataSync" />
<service
android:name=".widgets.emision.WEmissionService"
android:foregroundServiceType="dataSync"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<service
android:name=".download.DownloadManager"
android:foregroundServiceType="dataSync" />
<service
android:name=".download.DownloadManagerJob"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".commons.SelfServer"
android:foregroundServiceType="mediaPlayback" />
<receiver
android:name=".widgets.emision.WEmisionProvider"
android:exported="true"
android:label="Emisión">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_emision" />
</receiver>
<receiver android:name=".download.DownloadReceiver" />
<receiver android:name=".recents.RecentsNotReceiver" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/path_providers" />
</provider>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${admobID}" />
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true" />
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
<activity android:name=".queue.QueueActivity" />
<activity
android:name=".tv.streaming.TVServerSelection"
android:theme="@style/AppTheme.TV.Guided" />
<activity
android:name=".tv.exoplayer.TVPlayer"
android:theme="@style/AppTheme.TV.Base" />
<activity
android:name=".tv.details.TVAnimesDetails"
android:theme="@style/AppTheme.TV.Details" />
<activity
android:name=".tv.search.TVSearch"
android:theme="@style/AppTheme.TV.Base" />
<activity
android:name=".tv.search.TVTag"
android:theme="@style/AppTheme.TV.Grid" />
<activity
android:name=".tv.directory.TVDir"
android:theme="@style/AppTheme.TV.Grid" />
<activity
android:name=".tv.emission.TVEmission"
android:theme="@style/AppTheme.TV.Browser" />
<activity
android:name=".download.DownloadDialogActivity"
android:excludeFromRecents="true"
android:exported="true"
android:theme="@style/Theme.AppCompat.DayNight.Dialog">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" />
<data android:host="animeflv.net" />
<data android:pathPrefix="/ver/" />
<data android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".custom.ThemedControlsActivity" />
<activity android:name=".news.NewsActivity" />
<activity android:name=".achievements.AchievementActivity" />
<activity android:name=".commons.EAUnlockActivity" />
<activity
android:name="es.munix.multidisplaycast.CastControlsActivity"
android:screenOrientation="sensor"
tools:node="merge"
tools:replace="android:screenOrientation" />
<activity
android:name=".tv.streaming.TVMultiSelection"
android:theme="@style/AppTheme.TV.Guided" />
<activity android:name=".Diagnostic" />
<activity android:name=".recents.RecentsActivity" />
<activity android:name=".Diagnostic$FullBypass" />
<activity android:name=".profile.TopActivity" />
<activity android:name=".faq.FaqActivity" />
<activity android:name=".news.MaterialNewsActivity" />
<activity android:name=".preferences.AdsPreferenceActivity" />
<activity
android:name=".MainMaterial"
android:exported="true"
android:label="@string/title_activity_main">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="ukiku.app"
android:pathPrefix="/search"
android:scheme="https" />
</intent-filter>
</activity>
<activity android:name=".recents.RecentsModelActivity" />
<activity android:name=".search.SearchActivity" />
<activity android:name=".explorer.ExplorerActivityMaterial" />
<activity android:name=".emision.EmissionActivityMaterial" />
<activity android:name=".seeing.SeeingActivityMaterial" />
<activity android:name=".queue.QueueActivityMaterial" />
<activity android:name=".recommended.RecommendActivityMaterial" />
<activity android:name=".recommended.RankingActivityMaterial" />
<activity android:name=".record.RecordActivityMaterial" />
<activity android:name=".random.RandomActivityMaterial" />
<activity android:name=".faq.FaqActivityMaterial" />
<activity android:name=".achievements.AchievementActivityMaterial" />
<activity android:name=".AppInfoActivityMaterial" />
<activity android:name=".AppInfoActivity" />
<activity
android:name=".animeinfo.ActivityAnimeMaterial"
android:theme="@style/AppTheme.NoActionBar"
android:exported="true"
android:windowSoftInputMode="stateHidden">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="animeflv.net"
android:pathPrefix="/anime/"
android:scheme="https" />
</intent-filter>
</activity>
<activity android:name=".search.GenreActivityMaterial" />
<activity android:name=".DiagnosticMaterial" />
<activity android:name=".changelog.ChangelogActivityMaterial" />
<activity android:name=".DiagnosticMaterial$FullBypass" />
<activity android:name=".shortcuts.DummyMainActivity" />
<activity android:name=".shortcuts.DummyExplorerActivity" />
<activity android:name=".shortcuts.DummyEmissionActivity" />
<activity android:name=".profile.TopActivityMaterial" />
<activity
android:name=".tv.streaming.StreamTvActivity"
android:exported="true"
android:theme="@style/Theme.AppCompat.DayNight.Dialog">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="tv"
android:pathPrefix="/chapter"
android:scheme="ukiku" />
</intent-filter>
</activity>
<activity android:name="knf.kuma.player.WebPlayerActivity"
android:configChanges="orientation"
android:screenOrientation="sensorLandscape"/>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
</manifest>
================================================
FILE: app/src/main/assets/changelog.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release code="228" version="5.3.18">
<change type="fix">Mejoras StreamWish</change>
<change type="fix">Error al mostrar lista de recientes en modo "Home"</change>
</release>
<release code="227" version="5.3.17">
<change type="fix">Corrección servidor StreamWish</change>
</release>
<release code="226" version="5.3.16">
<change type="change">Prevenir error al descargar actualización</change>
</release>
<release code="225" version="5.3.15">
<change type="change">Enlaces de telegram actualizados</change>
</release>
<release code="224" version="5.3.14">
<change type="fix">Corrección StreamWish</change>
<change type="fix">Corrección imágenes en explorador</change>
<change type="fix">Error al reproducir videos en el reproductor interno en algunos casos</change>
</release>
<release code="223" version="5.3.13">
<change type="fix">Error al descargar en algunos dispositivos</change>
</release>
<release code="222" version="5.3.12">
<change type="fix">Corrección de imágenes</change>
<change type="fix">Error al obtener lista de recientes en algunos casos</change>
</release>
<release code="221" version="5.3.11">
<change type="fix">Corrección servidor StreamWish</change>
</release>
<release code="220" version="5.3.10">
<change type="fix">Corrección de imágenes en recientes</change>
<change type="change">Soporte Android 16</change>
</release>
<release code="219" version="5.3.9">
<change type="fix">Corrección en login de firebase</change>
<change type="fix">Correcciónes generales para Android 15</change>
</release>
<release code="218" version="5.3.8">
<change type="fix">Corrección en noticias</change>
</release>
<release code="217" version="5.3.7">
<change type="fix">Corrección StreamWish</change>
<change type="fix">Corrección comentarios</change>
</release>
<release code="216" version="5.3.6">
<change type="fix">Corrección StreamWish</change>
<change type="fix">Mejora de conexión para CAST</change>
</release>
<release code="215" version="5.3.5">
<change type="fix">Errores generales</change>
<change type="fix">Corrección StreamWish</change>
<change type="fix">Eliminar librerias sin usar</change>
</release>
<release code="214" version="5.3.4">
<change type="fix">Errores generales</change>
</release>
<release code="213" version="5.3.3">
<change type="fix">Error al reproducir en TV</change>
</release>
<release code="212" version="5.3.2">
<change type="fix">Error en streaming iniciado desde informacion de anime</change>
<change type="fix">Error al obtener información de animes con comillas en el nombre</change>
</release>
<release code="211" version="5.3.1">
<change type="fix">Error en descargas</change>
</release>
<release code="210" version="5.3.0">
<change type="change">Soporte Android 14</change>
<change type="fix">Corrección de bugs</change>
</release>
<release code="209" version="5.2.11">
<change type="fix">Corrección especifica para Xiaomi de SSL</change>
<change type="fix">Corrección de bugs</change>
</release>
<release code="208" version="5.2.10">
<change type="fix">Corrección de SSL para telefonos sin GPlay</change>
</release>
<release code="207" version="5.2.9">
<change type="fix">Corrección de Streamwish para algunos capitulos viejos</change>
</release>
<release code="206" version="5.2.8">
<change type="fix">Corrección de bugs</change>
</release>
<release code="205" version="5.2.7">
<change type="fix">Corrección StreamWish</change>
</release>
<release code="204" version="5.2.6">
<change type="fix">Error al mostrar dialogo de actualizacion</change>
<change type="fix">Error en bypass</change>
</release>
<release code="203" version="5.2.5">
<change type="fix">Error en bypass</change>
</release>
<release code="202" version="5.2.4">
<change type="fix">Error en bypass</change>
</release>
<release code="200" version="5.2.1">
<change type="new">Servidor Streamwish (Solo streaming)</change>
<change type="change">Mensaje de error para error desconocido en Peru</change>
<change type="change">Soporte mejorado para Okru y Yourupload</change>
</release>
<release code="199" version="5.2.1">
<change type="fix">Error al expandir texto en informacion de anime</change>
<change type="fix">Error al buscar imagenes de mejor calidad</change>
</release>
<release code="198" version="5.2.0">
<change type="fix">Error al verificar suscripciones</change>
</release>
<release code="197" version="5.1.28">
<change type="fix">Error en backup local</change>
</release>
<release code="196" version="5.1.27">
<change type="fix">Error al iniciar en TV</change>
</release>
<release code="195" version="5.1.26">
<change type="fix">Correccion para noticias</change>
</release>
<release code="194" version="5.1.25">
<change type="fix">Correccion para Android 12</change>
</release>
<release code="193" version="5.1.24">
<change type="fix">Imagenes de noticias</change>
</release>
<release code="192" version="5.1.23">
<change type="new">Servidor SBVideo</change>
</release>
<release code="191" version="5.1.22">
<change type="fix">Error al guardar progreso en reproductor interno</change>
</release>
<release code="190" version="5.1.21">
<change type="fix">Botón de pausa en reproductor interno</change>
</release>
<release code="189" version="5.1.20">
<change type="change">Diagnostico reflejara el bypass en estado general</change>
<change type="fix">Servidor stape</change>
</release>
<release code="188" version="5.1.19">
<change type="fix">Arreglo en version de TV</change>
</release>
<release code="187" version="5.1.18">
<change type="fix">Error al mostrar imagenes en noticias</change>
</release>
<release code="186" version="5.1.17">
<change type="fix">Errores en login de Firestore</change>
</release>
<release code="185" version="5.1.16">
<change type="fix">Errores generales</change>
<change type="fix">Error al mostrar noticias</change>
</release>
<release code="184" version="5.1.15">
<change type="fix">Errores generales</change>
</release>
<release code="183" version="5.1.14">
<change type="fix">Mejoras de bypass</change>
</release>
<release code="182" version="5.1.13">
<change type="fix">Errores generales</change>
<change type="fix">Mejoras de bypass para TV</change>
</release>
<release code="181" version="5.1.12">
<change type="fix">Errores generales</change>
<change type="fix">Servidor stape</change>
</release>
<release code="180" version="5.1.11">
<change type="fix">Errores generales</change>
</release>
<release code="179" version="5.1.10">
<change type="fix">Errores generales</change>
</release>
<release code="178" version="5.1.9">
<change type="fix">Errores generales</change>
</release>
<release code="177" version="5.1.8">
<change type="fix">Errores generales</change>
<change type="fix">Error al mostrar algunas secciones en telefonos sin Play Services
</change>
<change type="fix">Error al mostrar memoria disponible en versiones de Android recientes
</change>
</release>
<release code="176" version="5.1.7">
<change type="fix">Errores generales</change>
<change type="change">Cambio de pagina Ukiku.app</change>
</release>
<release code="174" version="5.1.5">
<change type="fix">Errores generales</change>
<change type="fix">Seleccion de carpeta para descargas en Android 11</change>
<change type="change">Mejora en creacion de bypass</change>
<change type="change">Mejora al cargar recientes</change>
<change type="change">Mejoras en explorador</change>
</release>
<release code="174" version="5.1.5">
<change type="fix">Errores generales</change>
<change type="change">Nuevo metodo de bypass</change>
</release>
<release code="173" version="5.1.4">
<change type="fix">Errores generales</change>
</release>
<release code="172" version="5.1.3">
<change type="fix">Errores en servidores</change>
<change type="fix">Errores generales</change>
</release>
<release code="171" version="5.1.2">
<change type="change">Descargar directorio para aligerar carga</change>
<change type="fix">Errores al abrir informacion de anime</change>
<change type="fix">Errores generales</change>
</release>
<release code="170" version="5.1.1">
<change type="fix">Errores generales</change>
</release>
<release code="169" version="5.1.0">
<change type="change">Optimización general</change>
<change type="change">Mejoras en reproductor</change>
<change type="change">Reproductor Experimental renombrado a Avanzado</change>
<change type="change">Intento para sobrepasar bloqueo 403</change>
<change type="fix">Errores generales</change>
</release>
<release code="168" version="5.0.3">
<change type="fix">Errores generales</change>
</release>
<release code="167" version="5.0.2">
<change type="fix">Errores generales</change>
</release>
<release code="166" version="5.0.1">
<change type="fix">Errores generales</change>
</release>
<release code="165" version="5.0.0">
<change type="new">Nuevo diseño de la app</change>
<change type="change">Agregada opcion para cambiar a diseño clasico</change>
<change type="fix">Errores generales</change>
</release>
<release code="164" version="4.4.0">
<change type="fix">Errores generales</change>
<change type="change">Anuncios activados por defecto</change>
<change type="change">Cambios en personalización de anuncios</change>
</release>
<release code="163" version="4.3.47">
<change type="fix">Error al crear directorio</change>
</release>
<release code="162" version="4.3.46">
<change type="fix">Errores generales</change>
<change type="fix">Optimizacion para anuncios generales</change>
</release>
<release code="161" version="4.3.45">
<change type="fix">Errores generales</change>
<change type="fix">Optimizacion para anuncios en listas</change>
</release>
<release code="160" version="4.3.44">
<change type="fix">Errores generales</change>
<change type="new">Servidor GoCDN</change>
<change type="new">Servidor Stape</change>
</release>
<release code="159" version="4.3.43">
<change type="fix">Errores generales</change>
</release>
<release code="158" version="4.3.42">
<change type="fix">Error al detectar numero de episodio en explorador</change>
</release>
<release code="157" version="4.3.41">
<change type="fix">Error al detectar episodios en explorador</change>
</release>
<release code="156" version="4.3.40">
<change type="fix">Errores generales</change>
</release>
<release code="155" version="4.3.39">
<change type="fix">Errores generales</change>
</release>
<release code="154" version="4.3.38">
<change type="fix">Error al detectar capitulos descargados en Android 10</change>
<change type="fix">Errores generales</change>
</release>
<release code="153" version="4.3.37">
<change type="change">Barra de estado con aviso para creacion de directorio</change>
<change type="change">Avisos mas claros cuando falta permiso de almacenamiento</change>
<change type="fix">Error al reproducir animes descargados en reproductor interno</change>
<change type="fix">Error al marcar como visto desde explorador</change>
<change type="fix">Error al desmarcar como visto en algunas secciones</change>
</release>
<release code="152" version="4.3.36">
<change type="fix">Errores generales</change>
</release>
<release code="151" version="4.3.35">
<change type="fix">Error al detectar capitulos descargados</change>
</release>
<release code="150" version="4.3.34">
<change type="fix">Mensajes de error al otorgar permiso de almacenamiento</change>
<change type="fix">Errores por cambio en Animeflv</change>
</release>
<release code="149" version="4.3.33">
<change type="change">Comentarios por Disqus</change>
<change type="fix">Fembed revivido</change>
</release>
<release code="148" version="4.3.32">
<change type="fix">Errores generales</change>
</release>
<release code="147" version="4.3.31">
<change type="change">Servidor Fembed revivido</change>
</release>
<release code="146" version="4.3.30">
<change type="new">Servidor ZippyShare</change>
</release>
<release code="145" version="4.3.29">
<change type="fix">Error al reproducir izanagi en ALGUNOS episodios</change>
</release>
<release code="144" version="4.3.28">
<change type="fix">Error al abrir animes con modo Home</change>
</release>
<release code="143" version="4.3.27">
<change type="fix">Errores generales</change>
</release>
<release code="142" version="4.3.26">
<change type="fix">Errores generales</change>
</release>
<release code="141" version="4.3.25">
<change type="fix">Errores generales</change>
</release>
<release code="140" version="4.3.24">
<change type="fix">Error en explorador - Android 10</change>
</release>
<release code="139" version="4.3.23">
<change type="fix">Errores generales</change>
</release>
<release code="138" version="4.3.22">
<change type="fix">Errores generales</change>
</release>
<release code="137" version="4.3.21">
<change type="fix">Errores generales</change>
</release>
<release code="136" version="4.3.20">
<change type="fix">Errores generales</change>
</release>
<release code="135" version="4.3.19">
<change type="fix">Errores generales</change>
</release>
<release code="134" version="4.3.18">
<change type="fix">Errores generales</change>
</release>
<release code="133" version="4.3.17">
<change type="fix">Errores generales</change>
</release>
<release code="132" version="4.3.16">
<change type="fix">Errores generales</change>
</release>
<release code="131" version="4.3.15">
<change type="fix">Errores generales</change>
</release>
<release code="130" version="4.3.14">
<change type="fix">Errores generales</change>
</release>
<release code="129" version="4.3.13">
<change type="fix">Errores generales</change>
</release>
<release code="128" version="4.3.12">
<change type="fix">Errores generales</change>
</release>
<release code="127" version="4.3.11">
<change type="fix">Errores generales</change>
</release>
<release code="126" version="4.3.10">
<change type="fix">Errores generales</change>
<change type="new">Seccion FAQ (Preguntas frecuentes)</change>
</release>
<release code="125" version="4.3.9">
<change type="fix">Errores generales</change>
<change type="new">Suscripcion para Firestore sin anuncios</change>
</release>
<release code="124" version="4.3.8">
<change type="fix">Error al reproducir en modo TV</change>
</release>
<release code="123" version="4.3.7">
<change type="fix">Errores generales</change>
<change type="new">Suscripcion para Firestore sin anuncios</change>
</release>
<release code="122" version="4.3.6">
<change type="fix">Errores generales</change>
<change type="change">Overlay para mejorar visibilidad de botones en informacion de anime
</change>
</release>
<release code="121" version="4.3.5">
<change type="fix">Errores generales</change>
</release>
<release code="120" version="4.3.4">
<change type="fix">Errores generales</change>
</release>
<release code="119" version="4.3.3">
<change type="fix">Errores generales</change>
<change type="fix">Error al notificar recientes</change>
</release>
<release code="118" version="4.3.2">
<change type="fix">Errores generales</change>
<change type="new">UI mas compacta en pantalla de backups</change>
<change type="new">Top de videos vistos</change>
</release>
<release code="117" version="4.3.1">
<change type="fix">Modo obscuro por defecto para Android 10</change>
<change type="fix">Error al obtener monedas en algunos telefonos</change>
</release>
<release code="116" version="4.3">
<change type="fix">Errores generales</change>
<change type="new">Anuncios opcionales</change>
<change type="new">Método de backup Firestore</change>
<change type="new">Modo family friendly</change>
<change type="new">Moneda de la app loli-coins</change>
<change type="change">Nuevo servidor VeryStream</change>
</release>
<release code="114" version="4.2.10">
<change type="fix">Errores generales</change>
<change type="change">Mejoras en interfaz de TV</change>
</release>
<release code="113" version="4.2.9">
<change type="fix">Errores generales</change>
</release>
<release code="112" version="4.2.8">
<change type="fix">Errores generales</change>
<change type="change">Opción para ocultar animes nuevos en "Home"</change>
</release>
<release code="111" version="4.2.7">
<change type="fix">Errores generales</change>
</release>
<release code="110" version="4.2.6">
<change type="fix">Errores generales</change>
</release>
<release code="109" version="4.2.5">
<change type="fix">Errores generales</change>
</release>
<release code="108" version="4.2.4">
<change type="fix">Errores generales</change>
<change type="change">Estructura interna de respaldos mejorado</change>
<change type="change">Método de respaldo local (memoria interna)</change>
</release>
<release code="107" version="4.2.3">
<change type="fix">Errores generales</change>
</release>
<release code="106" version="4.2.2">
<change type="fix">Errores generales</change>
</release>
<release code="105" version="4.2.1">
<change type="fix">Errores generales</change>
<change type="new">Barra de estado para Animeflv</change>
</release>
<release code="104" version="4.2">
<change type="fix">Errores generales</change>
<change type="new">Estilo home para recientes</change>
<change type="new">Botón para saltar 1:30m en CAST (OP y ED)</change>
</release>
<release code="103" version="4.1">
<change type="fix">Errores generales</change>
<change type="new">Prueba rapida de velocidad en diagnostico</change>
<change type="new">Soporte previo para Android Q</change>
<change type="change">Filtros de busqueda mejorados</change>
<change type="change">Comentarios mejorados</change>
<change type="change">Lista de descargas mejorada</change>
</release>
<release code="102" version="4.0.4">
<change type="fix">Errores generales</change>
<change type="new">Servidor Fembed</change>
<change type="change">Restaurar compras al entrar a la pantalla del easter egg</change>
</release>
<release code="101" version="4.0.3">
<change type="fix">Errores generales en TV</change>
</release>
<release code="100" version="4.0.2">
<change type="fix">Errores generales</change>
</release>
<release code="99" version="4.0.1">
<change type="fix">Errores generales</change>
</release>
<release code="98" version="4.0">
<change type="fix">Errores generales</change>
<change type="fix">Errores en TV</change>
<change type="fix">Errores en respaldos</change>
<change type="fix">Errores en autobackup</change>
<change type="change">Cambios al diseño para MD2</change>
<change type="change">Nuevo dato en informacion: "Seguidores"</change>
<change type="change">Optimizacion general (sobre todo en sugeridos)</change>
<change type="change">Google Drive deshabilitado</change>
<change type="new">Categoría pausado en seguidos</change>
<change type="new">Recordar último servidor</change>
<change type="new">Descarga por lotes</change>
<change type="new">Añadir a cola por lotes</change>
<change type="new">Preview al avanzar en reproductor experimental</change>
<change type="new">Opcion para usar proxy en CAST</change>
</release>
<release code="97" version="3.1.6">
<change type="fix">Errores generales</change>
<change type="change">Material Design 2</change>
<change type="change">Mejora de carga en historial</change>
<change type="new">Pantalla de diagnóstico en informacion de la app</change>
</release>
<release code="96" version="3.1.6">
<change type="fix">Errores generales</change>
<change type="new">Opción para subir tiempo de espera de conexión (timeout)</change>
</release>
<release code="95" version="3.1.5">
<change type="fix">Errores generales</change>
</release>
<release code="94" version="3.1.4">
<change type="fix">Errores generales</change>
<change type="change">Opción para comprar pasos de Easter egg</change>
<change type="new">Mostrar todas las imágenes disponibles de MAL</change>
</release>
<release code="93" version="3.1.3">
<change type="fix">Errores de bypass en TV</change>
<change type="new">Mensajes de servicio</change>
</release>
<release code="92" version="3.1.2">
<change type="fix">Errores de bypass en TV</change>
</release>
<release code="91" version="3.1.1">
<change type="fix">Errores generales</change>
</release>
<release code="90" version="3.1">
<change type="fix">Errores generales</change>
<change type="new">Indicador de favoritos en emisión</change>
</release>
<release code="89" version="3.0.15">
<change type="fix">Errores generales</change>
</release>
<release code="88" version="3.0.14">
<change type="fix">Errores generales</change>
</release>
<release code="87" version="3.0.13">
<change type="fix">Errores generales</change>
</release>
<release code="86" version="3.0.12">
<change type="fix">Errores generales</change>
</release>
<release code="85" version="3.0.11">
<change type="fix">Errores generales</change>
</release>
<release code="84" version="3.0.10">
<change type="fix">Errores generales</change>
<change type="new">Soporte para multiples idiomas en algunos animes</change>
</release>
<release code="83" version="3.0.9">
<change type="fix">Errores generales</change>
</release>
<release code="82" version="3.0.8">
<change type="fix">Errores generales</change>
</release>
<release code="81" version="3.0.7">
<change type="fix">Errores generales</change>
</release>
<release code="80" version="3.0.6">
<change type="fix">Errores generales</change>
</release>
<release code="79" version="3.0.5">
<change type="fix">Errores generales</change>
<change type="change">Mejora en imagen de Splash</change>
</release>
<release code="78" version="3.0.4">
<change type="fix">Errores generales</change>
</release>
<release code="77" version="3.0.3">
<change type="fix">Errores generales</change>
</release>
<release code="76" version="3.0.2">
<change type="fix">Errores generales</change>
</release>
<release code="71" version="3.0.1">
<change type="fix">Errores generales</change>
<change type="fix">Errores con algunos logros</change>
<change type="change">Mejoras esteticas para modo claro en Android 8+</change>
<change type="changes">Mejora de modo cuadrícula para teléfonos anchos y tablets</change>
</release>
<release code="70" version="3.0">
<change type="fix">Errores generales</change>
<change type="new">Logros</change>
<change type="changes">Mejoras generales</change>
<change type="change">Tema claro mejorado</change>
<change type="change">Cambios con Material Design 2</change>
</release>
<release code="69" version="2.2">
<change type="fix">Errores generales</change>
<change type="new">Sección simple de noticias</change>
</release>
<release code="68" version="2.1.1">
<change type="fix">Errores generales</change>
<change type="fix">Arreglos menores con CAST</change>
<change type="change">Mejora en imagenes de error en siguiendo</change>
</release>
<release code="67" version="2.1">
<change type="fix">Errores generales</change>
<change type="change">Mejoras graficas en algunas partes</change>
<change type="change">Mejoras al modificar categorias en favoritos</change>
<change type="new">Opcion para cambiar tono de notificación en recientes</change>
<change type="new">Seccion de Siguiendo recreada</change>
</release>
<release code="66" version="2.0.2">
<change type="fix">Error en pantalla de actualización</change>
</release>
<release code="65" version="2.0.1">
<change type="fix">Errores generales</change>
<change type="fix">Errores en Android TV</change>
</release>
<release code="64" version="2.0">
<change type="fix">Errores generales</change>
<change type="new">Migración de Java a Kotlin</change>
<change type="new">Mejoras de estabilidad</change>
<change type="new">Launch screen al iniciar la app</change>
<change type="change">Algunos dialogos cambiados a snackbar</change>
</release>
<release code="63" version="1.9.6">
<change type="fix">Errores generales</change>
</release>
<release code="62" version="1.9.5">
<change type="fix">Errores generales</change>
<change type="new">Botón en reproductor para saltar 1:25min(Oppening)</change>
<change type="new">Carátula del anime en notificacion de reciente</change>
<change type="change">Mejora al ocultar barras en reproductor interno</change>
</release>
<release code="61" version="1.9.4">
<change type="fix">Errores generales</change>
</release>
<release code="60" version="1.9.3">
<change type="fix">Errores generales</change>
</release>
<release code="59" version="1.9.2">
<change type="fix">Errores generales</change>
<change type="new">Opción para auto respaldar periodicamente</change>
</release>
<release code="58" version="1.9.1">
<change type="fix">Errores generales</change>
<change type="change">Botón cast en información de anime</change>
<change type="change">Filtrado por ID en directorio</change>
</release>
<release code="57" version="1.9">
<change type="fix">Errores generales</change>
<change type="new">Importacion multiple</change>
<change type="change">Cambio en easteregg, se necesita completar de nuevo</change>
</release>
<release code="56" version="1.8.1">
<change type="fix">Errores generales</change>
</release>
<release code="55" version="1.8">
<change type="fix">Errores generales</change>
<change type="new">Indicadores numericos en algunas partes de la app</change>
<change type="change">Migración a librerias androidx</change>
</release>
<release code="54" version="1.7.5">
<change type="fix">Errores generales</change>
<change type="change">Cambiar administrador de descargas</change>
<change type="change">Mejora en notificaciones de descarga</change>
<change type="change">Mejora en iconos de atajos</change>
</release>
<release code="53" version="1.7.4">
<change type="fix">Errores generales</change>
</release>
<release code="52" version="1.7.3">
<change type="fix">Errores generales</change>
<change type="new">Servidor Fenix</change>
<change type="new">Servidor Natsuki</change>
<change type="change">Las descargas ahora mostraran tiempo restante y velocidad de
descarga
</change>
</release>
<release code="51" version="1.7.2">
<change type="fix">Errores generales</change>
</release>
<release code="50" version="1.7.1">
<change type="fix">Errores generales</change>
</release>
<release code="49" version="1.7">
<change type="fix">Errores generales</change>
<change type="new">Administrador de descargas rehecho</change>
<change type="change">Descargas paralelas</change>
<change type="change">Pausar descargas</change>
<change type="change">Tiempo estimado de descarga</change>
</release>
<release code="48" version="1.6.1">
<change type="fix">Errores generales</change>
<change type="new">Configurar buffer de descarga</change>
<change type="change">Mejoras al importar</change>
</release>
<release code="47" version="1.6">
<change type="fix">Errores generales</change>
<change type="new">Importar videos a la app</change>
<change type="new">Descarga/Streaming desde notificacion de reciente</change>
<change type="change">Mejoras generales</change>
</release>
<release code="46" version="1.5">
<change type="fix">Errores generales</change>
<change type="new">Compartir links de episodios</change>
<change type="new">Descarga/Streaming abriendo links de episodios</change>
</release>
<release code="45" version="1.4.7">
<change type="change">Se podra añadir animes a seguidos y favoritos</change>
</release>
<release code="44" version="1.4.6">
<change type="fix">Errores generales</change>
</release>
<release code="43" version="1.4.5">
<change type="fix">Errores generales</change>
<change type="new">Servidor Mango</change>
</release>
<release code="42" version="1.4.4">
<change type="fix">Error en preview de episodio</change>
</release>
<release code="41" version="1.4.3">
<change type="fix">Errores en explorador</change>
<change type="fix">Error al mostrar algunas imagenes</change>
</release>
<release code="40" version="1.4.2">
<change type="new">Servidor Mp4Upload (Gracias raulhaag)</change>
<change type="change">Tiempo reducido al obtener lista de animes en explorador</change>
</release>
<release code="39" version="1.4.1">
<change type="fix">Errores generales</change>
<change type="fix">Errores en RV</change>
<change type="change">Servidor Izanagi restaurado</change>
</release>
<release code="38" version="1.4">
<change type="fix">Errores generales</change>
<change type="fix">Errores en OKRU y RV</change>
<change type="new">Categorias en favoritos</change>
</release>
<release code="37" version="1.3.8">
<change type="fix">Errores generales</change>
</release>
<release code="36" version="1.3.7">
<change type="fix">Seccion emision</change>
<change type="fix">Errores generales</change>
<change type="change">Migracion de datos mejorada</change>
</release>
<release code="35" version="1.3.6">
<change type="fix">Obtencion de imagenes de episodios</change>
<change type="change">Opción para deshabilitar progreso en pantalla</change>
</release>
<release code="34" version="1.3.5">
<change type="fix">Obtencion de lista de episodios</change>
<change type="new">Progreso de descarga en recientes y lista de episodios</change>
</release>
<release code="33" version="1.3.4">
<change type="fix">Notificacion persistente al crear/recrear directorio</change>
</release>
<release code="32" version="1.3.3">
<change type="fix">Error en listar episodios de animes largos</change>
</release>
<release code="31" version="1.3.2">
<change type="fix">Errores en Cast</change>
</release>
<release code="30" version="1.3.1">
<change type="fix">Errores generales en Android TV</change>
</release>
<release code="29" version="1.3">
<change type="fix">Errores generales</change>
<change type="new">Diseño especial para Android TV</change>
</release>
<release code="28" version="1.2.5">
<change type="fix">Errores generales</change>
<change type="fix">Servidor RV</change>
<change type="change">Mejora en pendientes</change>
</release>
<release code="27" version="1.2.4">
<change type="change">Mejora en explorador</change>
</release>
<release code="26" version="1.2.3">
<change type="fix">Error en nombre de animes</change>
<change type="new">Soporte para Android TV</change>
</release>
<release code="25" version="1.2.2">
<change type="fix">Errores generales</change>
<change type="fix">Error al hacer cast de archivos locales</change>
</release>
<release code="24" version="1.2.1">
<change type="fix">Servidor Mega duplicado</change>
<change type="fix">Servidor Fire corregido</change>
<change type="change">Marcar episodios pendientes como vistos y el ultimo es añadido a
historial
</change>
</release>
<release code="23" version="1.2">
<change type="fix">Errores generales</change>
<change type="new">Cola de reproducción</change>
</release>
<release code="22" version="1.1.1">
<change type="fix">Error de colores</change>
<change type="fix">Error al abrir informacion de animes sin conexion</change>
</release>
<release code="21" version="1.1">
<change type="new">Click largo en emisión para ocultar</change>
<change type="new">Widget de emisión agregado</change>
<change type="new">Abrir pantalla de genero desde informacion de anime</change>
<change type="new">Easter egg agregado, pista: "easteregg"</change>
<change type="change">Modo PIP en reproductor mejorado</change>
<change type="change">Explorador optimizado</change>
<change type="fix">Errores generales</change>
</release>
<release code="20" version="1.0">
<change type="change">Version final</change>
<change type="new">Accesos directos en launcher</change>
<change type="fix">Errores generales</change>
</release>
<release code="19" version="0.4.2 beta">
<change type="change">Agregada mas informacion en acerca de</change>
<change type="fix">Errores generales</change>
</release>
<release code="18" version="0.4.1 beta">
<change type="fix">Error al notificar animes nuevos</change>
</release>
<release code="17" version="0.4 beta">
<change type="new">Seccion de sugerencias</change>
<change type="fix">Errores generales</change>
</release>
<release code="16" version="0.3.12 beta">
<change type="fix">Icono arreglado para algunos telefonos</change>
</release>
<release code="15" version="0.3.11 beta">
<change type="fix">Bypass de cloudflare agregado</change>
<change type="change">Boton cast en explorador ahora abre controles</change>
</release>
<release code="14" version="0.3.10 beta">
<change type="new">Pantalla de informacion</change>
<change type="fix">Errores generales</change>
</release>
<release code="12" version="0.3.9 beta">
<change type="fix">Error al actualizar app en Android 5 y 6</change>
</release>
<release code="11" version="0.3.8 beta">
<change type="new">Pantalla para descargas activas (Explorador>Descargas)</change>
</release>
<release code="10" version="0.3.7 beta">
<change type="fix">Error al migrar datos</change>
</release>
<release code="9" version="0.3.6 beta">
<change type="new">Sincronizacion en la nube (Dropbox y Google Drive)</change>
<change type="new">Migración de favoritos desde AnimeflvApp</change>
<change type="fix">Errores en explorador al girar la pantalla</change>
</release>
<release code="8" version="0.3.5 beta">
<change type="new">Cast de episodios descargados</change>
<change type="fix">Error al abrir la app sin conexión</change>
<change type="fix">Errores generales</change>
</release>
<release code="7" version="0.3.4 beta">
<change type="new">Changelog</change>
<change type="new">Sección de animes random</change>
<change type="fix">Errores generales</change>
</release>
</changelog>
================================================
FILE: app/src/main/java/knf/kuma/App.kt
================================================
package knf.kuma
/*import com.asf.appcoins.sdk.ads.AppCoinsAds
import com.asf.appcoins.sdk.ads.AppCoinsAdsBuilder*/
import android.annotation.SuppressLint
import android.annotation.TargetApi
import android.app.Application
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.media.AudioAttributes
import android.os.Build
import androidx.appcompat.app.AppCompatDelegate
import androidx.work.Configuration
import es.munix.multidisplaycast.CastManager
import knf.kuma.achievements.AchievementManager
import knf.kuma.commons.AllSSLOkHttpClient
import knf.kuma.commons.PrefsUtil
import knf.kuma.directory.DirectoryService
import knf.kuma.download.DownloadManager
import knf.kuma.download.DownloadService
import knf.kuma.jobscheduler.BackUpWork
import knf.kuma.jobscheduler.RecentsWork
import knf.kuma.jobscheduler.UpdateWork
import knf.kuma.widgets.emision.WEmissionService
class App : Application(), Configuration.Provider {
//private lateinit var appCoinsAds: AppCoinsAds
@TargetApi(Build.VERSION_CODES.O)
private fun createChannels() {
val manager = getSystemService(NOTIFICATION_SERVICE) as? NotificationManager
val dirChannel = NotificationChannel(
DirectoryService.CHANNEL,
getString(R.string.directory_channel_title),
NotificationManager.IMPORTANCE_MIN
)
dirChannel.setSound(
null,
AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
.setUsage(AudioAttributes.USAGE_NOTIFICATION).build()
)
dirChannel.setShowBadge(false)
manager?.createNotificationChannel(dirChannel)
manager?.createNotificationChannel(
NotificationChannel(
RecentsWork.CHANNEL_RECENTS,
"Capitulos recientes",
NotificationManager.IMPORTANCE_HIGH
)
)
manager?.createNotificationChannel(
NotificationChannel(
DownloadService.CHANNEL,
"Descargas",
NotificationManager.IMPORTANCE_HIGH
)
)
manager?.createNotificationChannel(
NotificationChannel(
DownloadService.CHANNEL_ONGOING,
"Descargas en progreso",
NotificationManager.IMPORTANCE_LOW
).apply { setShowBadge(false) })
manager?.createNotificationChannel(
NotificationChannel(
DownloadManager.CHANNEL_FOREGROUND,
"Administrador de descargas",
NotificationManager.IMPORTANCE_MIN
).apply { setShowBadge(false) })
manager?.createNotificationChannel(
NotificationChannel(
UpdateWork.CHANNEL,
"Actualización de la app",
NotificationManager.IMPORTANCE_DEFAULT
)
)
manager?.createNotificationChannel(
NotificationChannel(
WEmissionService.CHANNEL,
"Actualizador de widget",
NotificationManager.IMPORTANCE_MIN
).apply { setShowBadge(false) })
}
override val workManagerConfiguration: Configuration
get() = Configuration.Builder().build()
override fun onCreate() {
super.onCreate()
context = this
if (!PrefsUtil.isFetchDBReset) {
PrefsUtil.isFetchDBReset = true
deleteDatabase("LibGlobalFetchLib.db")
}
AppCompatDelegate.setDefaultNightMode(PrefsUtil.themeOption.toInt())
AllSSLOkHttpClient.enableTLS()
BackUpWork.checkInit()
CastManager.register(this)
AchievementManager.init(this)
initAppCoins()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
createChannels()
}
private fun initAppCoins() {
/*appCoinsAds= AppCoinsAdsBuilder()
.withDebug(BuildConfig.DEBUG)
.createAdvertisementSdk(this)
.also { it.init(this) }*/
}
companion object {
@SuppressLint("StaticFieldLeak")
lateinit var context: Context
private set
}
}
================================================
FILE: app/src/main/java/knf/kuma/AppInfoActivity.kt
================================================
package knf.kuma
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import knf.kuma.custom.SingleFragmentActivity
class AppInfoActivity: SingleFragmentActivity() {
override fun createFragment(): Fragment = AppInfoFragment().apply {
arguments = Bundle().apply {
putBoolean("isFlat",false)
}
}
override fun getActivityTitle(): String = "Acerca de"
companion object{
fun open(context: Context){
context.startActivity(Intent(context,AppInfoActivity::class.java))
}
}
}
================================================
FILE: app/src/main/java/knf/kuma/AppInfoActivityMaterial.kt
================================================
package knf.kuma
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import knf.kuma.custom.SingleFragmentMaterialActivity
class AppInfoActivityMaterial: SingleFragmentMaterialActivity() {
override fun createFragment(): Fragment = AppInfoFragment().apply {
arguments = Bundle().apply {
putBoolean("isFlat",true)
}
}
override fun getActivityTitle(): String = "Acerca de"
companion object{
fun open(context: Context){
context.startActivity(Intent(context,AppInfoActivityMaterial::class.java))
}
}
}
================================================
FILE: app/src/main/java/knf/kuma/AppInfoFragment.kt
================================================
package knf.kuma
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.core.net.toUri
import com.afollestad.materialdialogs.MaterialDialog
import com.danielstone.materialaboutlibrary.ConvenienceBuilder
import com.danielstone.materialaboutlibrary.MaterialAboutFragment
import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard
import com.danielstone.materialaboutlibrary.model.MaterialAboutList
import knf.kuma.ads.AdsUtils
import knf.kuma.ads.FullscreenAdLoader
import knf.kuma.ads.getFAdLoaderInterstitial
import knf.kuma.ads.getFAdLoaderRewarded
import knf.kuma.backup.Backups
import knf.kuma.changelog.ChangelogActivity
import knf.kuma.changelog.ChangelogActivityMaterial
import knf.kuma.commons.DesignUtils
import knf.kuma.commons.EAUnlockActivity
import knf.kuma.commons.Economy
import knf.kuma.commons.PrefsUtil
import knf.kuma.commons.isFullMode
import knf.kuma.commons.safeShow
import knf.kuma.profile.TopActivity
import knf.kuma.profile.TopActivityMaterial
import knf.tools.kprobability.item
import knf.tools.kprobability.probabilityOf
import org.jetbrains.anko.support.v4.toast
class AppInfoFragment: MaterialAboutFragment() {
private val paypalUri: Uri
get() {
val uriBuilder = Uri.Builder()
uriBuilder.scheme("https").authority("www.paypal.com").path("cgi-bin/webscr")
uriBuilder.appendQueryParameter("cmd", "_donations")
uriBuilder.appendQueryParameter("business", "jordyamc@hotmail.com")
uriBuilder.appendQueryParameter("lc", "US")
uriBuilder.appendQueryParameter("item_name", "Donación UKIKU")
uriBuilder.appendQueryParameter("no_note", "1")
uriBuilder.appendQueryParameter("no_shipping", "1")
uriBuilder.appendQueryParameter("currency_code", "USD")
return uriBuilder.build()
}
private val isFlat: Boolean by lazy { requireArguments().getBoolean("isFlat",true) }
private val rewardedAd: FullscreenAdLoader by lazy { getFAdLoaderRewarded(requireActivity()) }
private lateinit var interstitial: FullscreenAdLoader
private lateinit var videoItem: MaterialAboutActionItem
private fun showAd() {
probabilityOf<() -> Unit> {
item({ rewardedAd.show() }, AdsUtils.remoteConfigs.getDouble("rewarded_percent"))
item({ interstitial.show() }, AdsUtils.remoteConfigs.getDouble("interstitial_percent"))
}.random()()
}
private fun setupUpdateCount() {
Economy.rewardedVideoLiveData.observe(viewLifecycleOwner) {
if (::videoItem.isInitialized) {
videoItem.subText = "Vistos: $it"
setMaterialAboutList(getMaterialAboutList(requireContext()))
}
}
}
override fun getMaterialAboutList(context: Context): MaterialAboutList {
val infoCard = MaterialAboutCard.Builder()
infoCard.outline(isFlat)
infoCard.addItem(ConvenienceBuilder.createAppTitleItem(requireContext()))
infoCard.addItem(ConvenienceBuilder.createVersionActionItem(requireContext(), getDrawable(requireContext(),R.drawable.ic_version), "Versión", true))
infoCard.addItem(MaterialAboutActionItem.Builder().text("Changelog").icon(R.drawable.ic_changelog_get).setOnClickAction { openChangelog() }.build())
infoCard.addItem(MaterialAboutActionItem.Builder().text("Diagnóstico").icon(R.drawable.ic_diagnostic).setOnClickAction { openDiagnostic() }.build())
infoCard.addItem(MaterialAboutActionItem.Builder().text("Suscripción").icon(R.drawable.ic_key).setOnClickAction {
if (Backups.isKeyInstalled) {
val intent = requireContext().packageManager.getLaunchIntentForPackage("knf.kuma.key")
intent?.let { startActivity(intent) } ?: toast("Error al abrir UKIKU Key")
} else {
MaterialDialog(requireContext()).safeShow {
message(text = "Con la suscripción podrás usar el backup por Firestore sin activar los anuncios!")
positiveButton(text = "Suscribirse") {
startActivity(Intent(Intent.ACTION_VIEW, "https://play.google.com/store/apps/details?id=knf.kuma.key".toUri()))
}
negativeButton(text = "cancelar")
}
}
}.build())
val authorCard = MaterialAboutCard.Builder()
authorCard.outline(isFlat)
authorCard.title("Autor")
authorCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_author),
"Jordy Mendoza",
true,
"https://t.me/unbarred_stream".toUri()
)
)
val donateCard = MaterialAboutCard.Builder()
if (isFullMode) {
donateCard.outline(isFlat)
donateCard.title("Donar")
donateCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_paypal),
"Paypal",
false,
"https://www.paypal.com/donate/?hosted_button_id=9WXSCG3AP639J".toUri()
)
)
donateCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_patreon),
"Patreon",
false,
"https://www.patreon.com/animeflvapp".toUri()
)
)
donateCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_cuplogo),
"Ko-fi",
false,
"https://ko-fi.com/unbarredstream".toUri()
)
)
donateCard.addItem(
MaterialAboutActionItem.Builder().text("Ver anuncio")
.subText("Vistos: ${PrefsUtil.userRewardedVideoCount}").icon(R.drawable.ic_cash)
.setOnClickAction {
showAd()
}.build().also { videoItem = it })
}
val extraCard = MaterialAboutCard.Builder()
extraCard.outline(isFlat)
extraCard.title("Extras")
extraCard.addItem(
MaterialAboutActionItem.Builder().text("Cartera de loli-coins").icon(R.drawable.ic_coin)
.setOnClickAction { Economy.showWallet(requireActivity(), true) { showAd() } }
.build()
)
extraCard.addItem(
MaterialAboutActionItem.Builder().text("Top videos vistos").icon(R.drawable.ic_podium)
.setOnClickAction { openTop() }.build()
)
extraCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_web),
"Politica de privacidad",
true,
"https://ukiku.app/policy.html".toUri()
)
)
extraCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_github),
"Proyecto en github",
true,
"https://github.com/jordyamc/UKIKU".toUri()
)
)
extraCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_discord),
"Discord",
false,
"https://discord.gg/6hzpua6".toUri()
)
)
extraCard.addItem(
ConvenienceBuilder.createWebsiteActionItem(
requireContext(),
getDrawable(requireContext(), R.drawable.ic_beta),
"Grupo Beta",
false,
"https://t.me/ukiku_group".toUri()
)
)
extraCard.addItem(
MaterialAboutActionItem.Builder().text("Easter egg").icon(R.drawable.ic_egg)
.setOnClickAction { EAUnlockActivity.start(requireContext()) }.build()
)
return MaterialAboutList.Builder().apply {
addCard(infoCard.build())
addCard(authorCard.build())
donateCard.build().let {
if (it.items.isNotEmpty()) addCard(it)
}
addCard(extraCard.build())
}.build()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
interstitial = getFAdLoaderInterstitial(requireActivity())
rewardedAd.load()
interstitial.load()
setupUpdateCount()
}
fun openChangelog(){
if (DesignUtils.isFlat)
ChangelogActivityMaterial.open(requireContext())
else
ChangelogActivity.open(requireContext())
}
fun openDiagnostic(){
if (DesignUtils.isFlat)
DiagnosticMaterial.open(requireContext())
else
Diagnostic.open(requireContext())
}
fun openTop() {
if (DesignUtils.isFlat)
TopActivityMaterial.open(requireContext())
else
TopActivity.open(requireContext())
}
}
================================================
FILE: app/src/main/java/knf/kuma/BottomFragment.kt
================================================
package knf.kuma
import android.app.Activity
import android.content.Intent
import androidx.fragment.app.Fragment
import knf.kuma.download.FileAccessHelper
import xdroid.toaster.Toaster
abstract class BottomFragment : Fragment() {
abstract fun onReselect()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FileAccessHelper.SD_REQUEST && resultCode == Activity.RESULT_OK) {
val validation = FileAccessHelper.isUriValid(data?.data)
if (!validation.isValid) {
Toaster.toast("Directorio invalido: $validation")
FileAccessHelper.openTreeChooser(this)
}
}
}
}
================================================
FILE: app/src/main/java/knf/kuma/Diagnostic.kt
================================================
package knf.kuma
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.format.Formatter
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.floatingactionbutton.FloatingActionButton
import fr.bmartel.speedtest.SpeedTestReport
import fr.bmartel.speedtest.SpeedTestSocket
import fr.bmartel.speedtest.inter.ISpeedTestListener
import fr.bmartel.speedtest.model.SpeedTestError
import knf.kuma.ads.SubscriptionReceiver
import knf.kuma.backup.Backups
import knf.kuma.backup.firestore.FirestoreManager
import knf.kuma.commons.BypassUtil
import knf.kuma.commons.EAHelper
import knf.kuma.commons.PrefsUtil
import knf.kuma.commons.doOnUI
import knf.kuma.commons.jsoupCookies
import knf.kuma.commons.noCrash
import knf.kuma.commons.safeShow
import knf.kuma.custom.GenericActivity
import knf.kuma.custom.StateView
import knf.kuma.database.CacheDB
import knf.kuma.databinding.LayoutDiagnosticBinding
import knf.kuma.directory.DirectoryService
import knf.kuma.directory.DirectoryUpdateService
import knf.kuma.uagen.randomUA
import knf.tools.bypass.startBypass
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.find
import org.jetbrains.anko.sdk27.coroutines.onClick
import org.json.JSONObject
import org.jsoup.HttpStatusException
import org.jsoup.Jsoup
import java.math.BigDecimal
import java.math.RoundingMode
import java.net.ConnectException
import java.net.URL
import java.net.UnknownHostException
class Diagnostic : GenericActivity() {
private val binding by lazy { LayoutDiagnosticBinding.inflate(layoutInflater) }
private val networkStatus by lazy { NetworkStatus() }
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(EAHelper.getTheme())
super.onCreate(savedInstanceState)
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
supportActionBar?.title = "Diagnóstico"
supportActionBar?.setDisplayShowHomeEnabled(false)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
binding.toolbar.setNavigationOnClickListener { finish() }
startTests()
}
private fun startTests() {
runNetworkTests()
//runInternetTest()
runDirectoryTest()
runMemoryTest()
runBackupTest()
}
private suspend fun runMainTest() {
val startTime = System.currentTimeMillis()
val responseCode = try {
val response = Jsoup.connect(BypassUtil.testLink).timeout(0).execute()
response.body()
response.statusCode()
} catch (e: HttpStatusException) {
e.statusCode
} catch (_: UnknownHostException) {
3000
} catch (_: ConnectException) {
4000
} catch (_: Exception) {
5000
}
networkStatus.mainResult = responseCode
val loadingTime = System.currentTimeMillis() - startTime
withContext(Dispatchers.Main) {
binding.codeState.load(
responseCode.toString(), when (responseCode) {
200 -> StateView.STATE_OK
503 -> StateView.STATE_WARNING
else -> StateView.STATE_ERROR
}
)
binding.timeoutState.load(
"$loadingTime ms", when {
responseCode < 1000 && loadingTime < 1000 -> StateView.STATE_OK
responseCode < 1000 && loadingTime < 2000 -> StateView.STATE_WARNING
else -> StateView.STATE_ERROR
}
)
binding.generalState.load(when {
responseCode == 200 && loadingTime < 1000 -> "Correcto"
responseCode == 502 -> "Animeflv caido"
responseCode == 503 -> "Cloudflare activado"
responseCode == 403 -> "Bloqueado por animeflv"
responseCode in listOf(3000, 4000) -> "Error de conexión a Animeflv"
responseCode == 5000 -> "Error al intentar conectar"
loadingTime > 1000 -> "Página lenta"
else -> "Desconocido"
}, when {
responseCode == 200 && loadingTime < 1000 -> StateView.STATE_OK.also {
binding.info.visibility = View.GONE
}
responseCode in listOf(503, 403) || loadingTime > 1000 -> StateView.STATE_WARNING.also {
binding.info.visibility = View.VISIBLE
}
responseCode == 502 -> StateView.STATE_ERROR.also {
binding.info.visibility = View.VISIBLE
}
else -> StateView.STATE_ERROR.also { binding.info.visibility = View.GONE }
})
binding.info.setOnClickListener {
when {
networkStatus.mainResult == 502 -> show502Info()
networkStatus.mainResult == 503 -> show503Info()
networkStatus.mainResult == 403 -> show403Info()
loadingTime > 1000 -> showTimeoutInfo()
}
}
}
networkStatus.isMainTestExecuted = true
}
private suspend fun runBypassTest() {
try {
Jsoup.connect(BypassUtil.testLink).followRedirects(true).timeout(0).execute()
binding.bypassState.load("No se necesita")
withContext(Dispatchers.Main) { binding.bypassRecreate.visibility = View.GONE }
} catch (e: HttpStatusException) {
withContext(Dispatchers.Main) {
binding.bypassRecreate.apply {
visibility = View.VISIBLE
onClick {
startBypass(
5546,
BypassUtil.createRequest()
)
}
}
}
try {
jsoupCookies(BypassUtil.testLink).timeout(0).get()
binding.bypassState.load("Valido", StateView.STATE_OK)
if (networkStatus.isMainTestExecuted && networkStatus.mainResult in listOf(
403,
503
)
) {
withContext(Dispatchers.Main) {
binding.codeState.load("200", StateView.STATE_OK)
binding.generalState.load("Bypass activo", StateView.STATE_OK)
binding.info.isVisible = false
}
}
} catch (e: HttpStatusException) {
when (e.statusCode) {
502 -> binding.bypassState.load("Animeflv caido", StateView.STATE_ERROR)
503 -> binding.bypassState.load("Caducado", StateView.STATE_WARNING)
else -> binding.bypassState.load(
"Error en página: HTTP ${e.statusCode}",
StateView.STATE_ERROR
)
}
}
loadBypassInfo()
} catch (e: Exception) {
e.printStackTrace()
binding.bypassState.load("Error en página: ${e.message}", StateView.STATE_ERROR)
}
networkStatus.isBypassTestExecuted = true
}
private fun runNetworkTests() {
lifecycleScope.launch(Dispatchers.IO) {
runMainTest()
runBypassTest()
}
}
private fun loadBypassInfo() {
doAsync {
val json = JSONObject(URL("https://ipinfo.io/json").readText())
val region = json.getString("region")
val country = json.getString("country")
if (country == "PE") {
binding.countryState.load("$region - VPN necesario", StateView.STATE_ERROR)
} else {
binding.countryState.load(region, StateView.STATE_OK)
}
}
binding.clearanceState.apply {
val data = BypassUtil.getClearance(this@Diagnostic)
if (data.isNotEmpty())
load(data)
}
binding.cfduidState.apply {
val data = BypassUtil.getCFDuid(this@Diagnostic)
if (data.isNotEmpty())
load(data)
}
binding.userAgentState.apply {
load(BypassUtil.userAgent)
}
}
private fun runInternetTest() {
doAsync {
SpeedTestSocket().apply {
addSpeedTestListener(object : ISpeedTestListener {
override fun onCompletion(report: SpeedTestReport?) {
report?.let { binding.downState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onProgress(percent: Float, report: SpeedTestReport?) {
report?.let { binding.downState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onError(speedTestError: SpeedTestError?, errorMessage: String?) {
binding.downState.load("Error: ${errorMessage ?: ""}", StateView.STATE_ERROR)
}
})
startDownload("http://1.testdebit.info/10M.iso")
}
}
doAsync {
SpeedTestSocket().apply {
addSpeedTestListener(object : ISpeedTestListener {
override fun onCompletion(report: SpeedTestReport?) {
report?.let { binding.upState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onProgress(percent: Float, report: SpeedTestReport?) {
report?.let { binding.upState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onError(speedTestError: SpeedTestError?, errorMessage: String?) {
binding.upState.load("Error: ${errorMessage ?: ""}", StateView.STATE_ERROR)
}
})
startUpload("http://ipv4.ikoula.testdebit.info/", 5000000)
}
}
}
private fun formatBigDecimal(bigDecimal: BigDecimal): String {
var decimal = bigDecimal.movePointLeft(3)
val unit = when {
decimal >= BigDecimal.valueOf(1000000) -> {
decimal = decimal.movePointLeft(6)
"Gb/s"
}
decimal >= BigDecimal.valueOf(1000) -> {
decimal = decimal.movePointLeft(3)
"Mb/s"
}
else -> "Kb/s"
}
return "${decimal.setScale(1, RoundingMode.HALF_UP)}$unit~"
}
private fun runDirectoryTest() {
binding.dirState.load(
when {
PrefsUtil.isDirectoryFinished && !DirectoryUpdateService.isRunning -> "Completo"
PrefsUtil.isDirectoryFinished && DirectoryUpdateService.isRunning -> "Actualizando"
!PrefsUtil.isDirectoryFinished && DirectoryService.isRunning -> "Creando"
else -> "Incompleto"
}
)
CacheDB.INSTANCE.animeDAO().countLive.observe(this) {
binding.dirTotalState.load(it.toString())
}
}
private fun runMemoryTest() {
val dirs = getExternalFilesDirs(null)
noCrash {
binding.internalState.load(getAvailable(dirs[0].freeSpace))
}
noCrash {
if (dirs.size > 1)
binding.externalState.load(getAvailable(dirs[1].freeSpace))
}
}
private fun getAvailable(size: Long): String {
return Formatter.formatFileSize(this, size)
}
private fun runBackupTest() {
binding.uuid.text = FirestoreManager.uid ?: "Solo firestore"
GlobalScope.launch(Dispatchers.IO) {
if (PrefsUtil.isSubscriptionEnabled) {
val status = SubscriptionReceiver.checkStatus(
PrefsUtil.subscriptionToken
?: ""
)
if (status.isActive) {
if (status.isActive)
binding.subscriptionState.load("Activa")
else
binding.subscriptionState.load("Activa pero no renovada")
} else
binding.subscriptionState.load("Cancelada o inexistente")
} else
binding.subscriptionState.load("No suscrito")
}
binding.backupState.load(
when (Backups.type) {
Backups.Type.DROPBOX -> "Dropbox"
Backups.Type.FIRESTORE -> "Firestore"
Backups.Type.LOCAL -> "Local"
else -> "Sin respaldos"
}
)
if (Backups.type != Backups.Type.NONE)
binding.lastBackupState.load(PrefsUtil.lastBackup)
}
private fun show502Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 502")
message(text = "Animeflv esta caido por el momento, revisa de nuevo en unas horas")
}
}
private fun show503Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 503")
message(text = "Animeflv tiene el cloudflare activado, la app crea un bypass para funcionar normalmente")
}
}
private fun show403Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 403")
message(text = "Tu proveedor de internet bloquea la conexión con Animeflv, reinicia tu modem!")
}
}
private fun showTimeoutInfo() {
MaterialDialog(this).safeShow {
title(text = "Timeout")
message(text = "La página de Animeflv carga muy lento, modifica la espera de conexión desde configuración")
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 5546) {
data?.let {
PrefsUtil.useDefaultUserAgent = false
PrefsUtil.userAgent = it.getStringExtra("user_agent") ?: randomUA()
BypassUtil.saveCookies(this, it.getStringExtra("cookies") ?: "null")
}
runNetworkTests()
}
}
companion object {
fun open(context: Context) {
context.startActivity(Intent(context, Diagnostic::class.java))
}
}
private data class NetworkStatus(
var isMainTestExecuted: Boolean = false,
var isBypassTestExecuted: Boolean = false,
var mainResult: Int = -1,
)
class FullBypass : GenericActivity() {
private val overlay: View by lazy { find(R.id.overlay) as View }
private val logText: TextView by lazy { find(R.id.logText) as TextView }
private val fab: FloatingActionButton by lazy { find(R.id.fab) as FloatingActionButton }
private var isOpened = false
private var isFinishPending = false
private val builder = StringBuilder("Initializing log...\n")
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(EAHelper.getTheme())
super.onCreate(savedInstanceState)
try {
setContentView(R.layout.activity_webview)
} catch (e: Exception) {
setContentView(R.layout.activity_webview_nwv)
}
logText.movementMethod = ScrollingMovementMethod()
fab.setOnClickListener {
if (isOpened && isFinishPending)
finish()
else if (isOpened) {
isOpened = false
overlay.visibility = View.GONE
logText.visibility = View.GONE
fab.setImageResource(R.drawable.ic_terminal)
} else {
isOpened = true
overlay.visibility = View.VISIBLE
logText.visibility = View.VISIBLE
fab.setImageResource(R.drawable.ic_close)
}
}
logText("On Create check")
checkBypass()
}
override fun forceCreation(): Boolean = true
//override fun getSnackbarAnchor(): View? = find(R.id.coordinator)
override fun onBypassUpdated() {
if (isOpened)
isFinishPending = true
else
finish()
}
override fun logText(text: String) {
super.logText(text)
builder.apply {
append(text)
append("\n")
}
doOnUI { logText.text = builder.toString() }
}
}
}
================================================
FILE: app/src/main/java/knf/kuma/DiagnosticMaterial.kt
================================================
package knf.kuma
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.format.Formatter
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.floatingactionbutton.FloatingActionButton
import fr.bmartel.speedtest.SpeedTestReport
import fr.bmartel.speedtest.SpeedTestSocket
import fr.bmartel.speedtest.inter.ISpeedTestListener
import fr.bmartel.speedtest.model.SpeedTestError
import knf.kuma.ads.SubscriptionReceiver
import knf.kuma.backup.Backups
import knf.kuma.backup.firestore.FirestoreManager
import knf.kuma.commons.BypassUtil
import knf.kuma.commons.EAHelper
import knf.kuma.commons.PrefsUtil
import knf.kuma.commons.jsoupCookies
import knf.kuma.commons.noCrash
import knf.kuma.commons.safeShow
import knf.kuma.commons.setSurfaceBars
import knf.kuma.custom.GenericActivity
import knf.kuma.custom.StateView
import knf.kuma.custom.StateViewMaterial
import knf.kuma.database.CacheDB
import knf.kuma.databinding.LayoutDiagnosticMaterialBinding
import knf.kuma.directory.DirectoryService
import knf.kuma.directory.DirectoryUpdateService
import knf.kuma.uagen.randomUA
import knf.tools.bypass.startBypass
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.find
import org.jetbrains.anko.sdk27.coroutines.onClick
import org.json.JSONObject
import org.jsoup.HttpStatusException
import org.jsoup.Jsoup
import java.math.BigDecimal
import java.math.RoundingMode
import java.net.ConnectException
import java.net.URL
import java.net.UnknownHostException
class DiagnosticMaterial : GenericActivity() {
private val binding by lazy { LayoutDiagnosticMaterialBinding.inflate(layoutInflater) }
private val networkStatus by lazy { NetworkStatus() }
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(EAHelper.getTheme())
super.onCreate(savedInstanceState)
setSurfaceBars()
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
supportActionBar?.title = "Diagnóstico"
supportActionBar?.setDisplayShowHomeEnabled(false)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
binding.toolbar.setNavigationOnClickListener { finish() }
startTests()
}
private fun startTests() {
runNetworkTests()
//runInternetTest()
runDirectoryTest()
runMemoryTest()
runBackupTest()
}
private suspend fun runMainTest() {
val startTime = System.currentTimeMillis()
val responseCode = try {
val response = Jsoup.connect(BypassUtil.testLink).timeout(0).execute()
response.body()
response.statusCode()
} catch (e: HttpStatusException) {
e.statusCode
} catch (_: UnknownHostException) {
404
} catch (_: ConnectException) {
4000
} catch (_: Throwable) {
5000
}
networkStatus.mainResult = responseCode
val loadingTime = System.currentTimeMillis() - startTime
withContext(Dispatchers.Main) {
binding.codeState.load(
responseCode.toString(), when (responseCode) {
200 -> StateView.STATE_OK
503 -> StateView.STATE_WARNING
else -> StateView.STATE_ERROR
}
)
binding.timeoutState.load(
"$loadingTime ms", when {
responseCode < 1000 && loadingTime < 1000 -> StateView.STATE_OK
responseCode < 1000 && loadingTime < 2000 -> StateView.STATE_WARNING
else -> StateView.STATE_ERROR
}
)
binding.generalState.load(when {
responseCode == 200 && loadingTime < 1000 -> "Correcto"
responseCode == 502 -> "Animeflv caido"
responseCode == 503 -> "Cloudflare activado"
responseCode == 403 -> "Bloqueado por animeflv"
responseCode in listOf(3000, 4000) -> "Error de conexión a Animeflv"
responseCode == 5000 -> "Error al intentar conectar"
loadingTime > 1000 -> "Página lenta"
else -> "Desconocido"
}, when {
responseCode == 200 && loadingTime < 1000 -> StateView.STATE_OK.also {
binding.info.visibility = View.GONE
}
responseCode in listOf(503, 403) || loadingTime > 1000 -> StateView.STATE_WARNING.also {
binding.info.visibility = View.VISIBLE
}
responseCode == 502 -> StateView.STATE_ERROR.also {
binding.info.visibility = View.VISIBLE
}
else -> StateView.STATE_ERROR.also { binding.info.visibility = View.GONE }
})
binding.info.setOnClickListener {
when {
networkStatus.mainResult == 502 -> show502Info()
networkStatus.mainResult == 503 -> show503Info()
networkStatus.mainResult == 403 -> show403Info()
loadingTime > 1000 -> showTimeoutInfo()
}
}
}
networkStatus.isMainTestExecuted = true
}
private suspend fun runBypassTest() {
try {
Jsoup.connect(BypassUtil.testLink).followRedirects(true).timeout(0).execute()
binding.bypassState.load("No se necesita")
withContext(Dispatchers.Main) { binding.bypassRecreate.visibility = View.GONE }
} catch (e: HttpStatusException) {
withContext(Dispatchers.Main) {
binding.bypassRecreate.apply {
visibility = View.VISIBLE
onClick {
startBypass(
5546,
BypassUtil.createRequest()
)
}
}
}
try {
jsoupCookies(BypassUtil.testLink).timeout(0).get()
binding.bypassState.load("Valido", StateView.STATE_OK)
if (networkStatus.isMainTestExecuted && networkStatus.mainResult in listOf(
403,
503
)
) {
withContext(Dispatchers.Main) {
binding.codeState.load("200", StateView.STATE_OK)
binding.generalState.load("Bypass activo", StateView.STATE_OK)
binding.info.isVisible = false
}
}
} catch (e: HttpStatusException) {
when (e.statusCode) {
502 -> binding.bypassState.load("Animeflv caido", StateView.STATE_ERROR)
503 -> binding.bypassState.load("Caducado", StateView.STATE_WARNING)
else -> binding.bypassState.load(
"Error en página: HTTP ${e.statusCode}",
StateView.STATE_ERROR
)
}
}
loadBypassInfo()
} catch (e: Throwable) {
e.printStackTrace()
binding.bypassState.load("Error en página: ${e.message}", StateView.STATE_ERROR)
}
networkStatus.isBypassTestExecuted = true
}
private fun runNetworkTests() {
lifecycleScope.launch(Dispatchers.IO) {
runMainTest()
runBypassTest()
}
}
private fun loadBypassInfo() {
doAsync {
val json = JSONObject(URL("https://ipinfo.io/json").readText())
val region = json.getString("region")
val country = json.getString("country")
if (country == "PE") {
binding.countryState.load("$region - VPN necesario", StateView.STATE_ERROR)
} else {
binding.countryState.load(region, StateView.STATE_OK)
}
}
binding.clearanceState.apply {
val data = BypassUtil.getClearance(this@DiagnosticMaterial)
if (data.isNotEmpty())
load(data)
}
binding.cfduidState.apply {
val data = BypassUtil.getCFDuid(this@DiagnosticMaterial)
if (data.isNotEmpty())
load(data)
}
binding.userAgentState.apply {
load(BypassUtil.userAgent)
}
}
private fun runInternetTest() {
doAsync {
SpeedTestSocket().apply {
addSpeedTestListener(object : ISpeedTestListener {
override fun onCompletion(report: SpeedTestReport?) {
report?.let { binding.downState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onProgress(percent: Float, report: SpeedTestReport?) {
report?.let { binding.downState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onError(speedTestError: SpeedTestError?, errorMessage: String?) {
binding.downState.load("Error: ${errorMessage ?: ""}", StateViewMaterial.STATE_ERROR)
}
})
startDownload("https://speed.hetzner.de/100MB.bin")
}
}
doAsync {
SpeedTestSocket().apply {
addSpeedTestListener(object : ISpeedTestListener {
override fun onCompletion(report: SpeedTestReport?) {
report?.let { binding.upState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onProgress(percent: Float, report: SpeedTestReport?) {
report?.let { binding.upState.load(formatBigDecimal(it.transferRateOctet)) }
}
override fun onError(speedTestError: SpeedTestError?, errorMessage: String?) {
binding.upState.load("Error: ${errorMessage ?: ""}", StateViewMaterial.STATE_ERROR)
}
})
startUpload("http://bouygues.testdebit.info/ul/", 5000000)
}
}
}
private fun formatBigDecimal(bigDecimal: BigDecimal): String {
var decimal = bigDecimal.movePointLeft(3)
val unit = when {
decimal >= BigDecimal.valueOf(1000000) -> {
decimal = decimal.movePointLeft(6)
"Gb/s"
}
decimal >= BigDecimal.valueOf(1000) -> {
decimal = decimal.movePointLeft(3)
"Mb/s"
}
else -> "Kb/s"
}
return "${decimal.setScale(1, RoundingMode.HALF_UP)}$unit~"
}
private fun runDirectoryTest() {
binding.dirState.load(when {
PrefsUtil.isDirectoryFinished && !DirectoryUpdateService.isRunning -> "Completo"
PrefsUtil.isDirectoryFinished && DirectoryUpdateService.isRunning -> "Actualizando"
!PrefsUtil.isDirectoryFinished && DirectoryService.isRunning -> "Creando"
else -> "Incompleto"
})
CacheDB.INSTANCE.animeDAO().countLive.observe(this, Observer {
binding.dirTotalState.load(it.toString())
})
}
private fun runMemoryTest() {
val dirs = getExternalFilesDirs(null).toList().filterNotNull()
noCrash {
binding.internalState.load(getAvailable(dirs[0].freeSpace))
}
noCrash {
if (dirs.size > 1)
binding.externalState.load(getAvailable(dirs[1].freeSpace))
}
}
private fun getAvailable(size: Long): String {
return Formatter.formatFileSize(this, size)
}
private fun runBackupTest() {
binding.uuid.text = FirestoreManager.uid ?: "Solo firestore"
GlobalScope.launch(Dispatchers.IO) {
if (PrefsUtil.isSubscriptionEnabled) {
val status = SubscriptionReceiver.checkStatus(PrefsUtil.subscriptionToken
?: "")
if (status.isActive) {
if (status.isActive)
binding.subscriptionState.load("Activa")
else
binding.subscriptionState.load("Activa pero no renovada")
} else
binding.subscriptionState.load("Cancelada o inexistente")
} else
binding.subscriptionState.load("No suscrito")
}
binding.backupState.load(when (Backups.type) {
Backups.Type.DROPBOX -> "Dropbox"
Backups.Type.FIRESTORE -> "Firestore"
Backups.Type.LOCAL -> "Local"
else -> "Sin respaldos"
})
if (Backups.type != Backups.Type.NONE)
binding.lastBackupState.load(PrefsUtil.lastBackup)
}
private fun show502Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 502")
message(text = "Animeflv esta caido por el momento, revisa de nuevo en unas horas")
}
}
private fun show503Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 503")
message(text = "Animeflv tiene el cloudflare activado, la app crea un bypass para funcionar normalmente")
}
}
private fun show403Info() {
MaterialDialog(this).safeShow {
title(text = "HTTP 403")
message(text = "Tu proveedor de internet bloquea la conexión con Animeflv, reinicia tu modem!")
}
}
private fun showTimeoutInfo() {
MaterialDialog(this).safeShow {
title(text = "Timeout")
message(text = "La página de Animeflv carga muy lento, modifica la espera de conexión desde configuración")
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 5546) {
data?.let {
PrefsUtil.useDefaultUserAgent = false
PrefsUtil.userAgent = it.getStringExtra("user_agent") ?: randomUA()
BypassUtil.saveCookies(this, it.getStringExtra("cookies") ?: "null")
}
runNetworkTests()
}
}
companion object {
fun open(context: Context) {
context.startActivity(Intent(context, DiagnosticMaterial::class.java))
}
}
private data class NetworkStatus(
var isMainTestExecuted: Boolean = false,
var isBypassTestExecuted: Boolean = false,
var mainResult: Int = -1,
)
class FullBypass : GenericActivity() {
private val overlay: View by lazy { find(R.id.overlay) as View }
private val logText: TextView by lazy { find(R.id.logText) as TextView }
private val fab: FloatingActionButton by lazy { find(R.id.fab) as FloatingActionButton }
private var isOpened = false
private var isFinishPending = false
private val builder = StringBuilder("Initializing log...\n")
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(EAHelper.getTheme())
super.onCreate(savedInstanceState)
try {
setContentView(R.layout.activity_webview)
} catch (e: Exception) {
setContentView(R.layout.activity_webview_nwv)
}
logText.movementMethod = ScrollingMovementMethod()
fab.setOnClickListener {
if (isOpened && isFinishPending)
finish()
else if (isOpened) {
isOpened = false
overlay.visibility = View.GONE
logText.visibility = View.GONE
fab.setImageResource(R.drawable.ic_terminal)
} else {
isOpened = true
overlay.visibility = View.VISIBLE
logText.visibility = View.VISIBLE
fab.setImageResource(R.drawable.ic_close)
}
}
logText("On Create check")
checkBypass()
}
override fun forceCreation(): Boolean = true
//override fun getSnackbarAnchor(): View? = find(R.id.coordinator)
override fun onBypassUpdated() {
if (isOpened)
isFinishPending = true
else
finish()
}
override fun logText(text: String) {
super.logText(text)
builder.apply {
append(text)
append("\n")
}
lifecycleScope.launch(Dispatchers.Main) { logText.text = builder.toString() }
}
}
}
================================================
FILE: app/src/main/java/knf/kuma/Main.kt
================================================
package knf.kuma
import androidx.activity.addCallback
import android.Manifest
import android.annotation.SuppressLint
import android.annotation.TargetApi
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
import android.graphics.Typeface
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.provider.Settings
import android.text.InputType
import android.util.Log
import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import com.afollestad.materialdialogs.MaterialDialog
import com.google.android.material.bottomnavigation.BottomNavigationMenuView
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.navigation.NavigationView
import knf.kuma.achievements.AchievementActivity
import knf.kuma.achievements.AchievementManager
import knf.kuma.ads.AdsUtils
import knf.kuma.backup.BackUpActivity
import knf.kuma.backup.Backups
import knf.kuma.backup.MigrationActivity
import knf.kuma.backup.firestore.FirestoreManager
import knf.kuma.backup.firestore.syncData
import knf.kuma.commons.BypassUtil
import knf.kuma.commons.CastUtil
import knf.kuma.commons.DesignUtils
import knf.kuma.commons.EAHelper
import knf.kuma.commons.EAMapActivity
import knf.kuma.commons.Network
import knf.kuma.commons.PrefsUtil
import knf.kuma.commons.bind
import knf.kuma.commons.changeToolbarFont
import knf.kuma.commons.isFullMode
import knf.kuma.commons.jsoupCookiesDir
import knf.kuma.commons.noCrash
import knf.kuma.commons.noCrashLet
import knf.kuma.commons.safeShow
import knf.kuma.commons.stringLiveData
import knf.kuma.commons.toast
import knf.kuma.commons.verifiyFF
import knf.kuma.custom.ConnectionState
import knf.kuma.custom.GenericActivity
import knf.kuma.database.CacheDB
import knf.kuma.directory.DirManager
import knf.kuma.directory.DirectoryFragment
import knf.kuma.directory.DirectoryService
import knf.kuma.download.FileAccessHelper
import knf.kuma.emision.EmissionActivity
import knf.kuma.explorer.ExplorerActivity
import knf.kuma.faq.FaqActivity
import knf.kuma.favorite.FavoriteFragment
import knf.kuma.jobscheduler.DirUpdateWork
import knf.kuma.jobscheduler.RecentsWork
import knf.kuma.jobscheduler.UpdateWork
import knf.kuma.news.NewsActivity
import knf.kuma.pojos.migrateSeen
import knf.kuma.preferences.BottomPreferencesFragment
import knf.kuma.preferences.ConfigurationFragment
import knf.kuma.queue.QueueActivity
import knf.kuma.random.RandomActivity
import knf.kuma.recents.RecentFragment
import knf.kuma.recents.RecentsNotReceiver
import knf.kuma.recommended.RecommendActivity
import knf.kuma.record.RecordActivity
import knf.kuma.search.FiltersSuggestion
import knf.kuma.search.SearchFragment
import knf.kuma.seeing.SeeingActivity
import knf.kuma.uagen.randomUA
import knf.kuma.updater.UpdateActivity
import knf.kuma.updater.UpdateChecker
import knh.kuma.commons.cloudflarebypass.CfCallback
import knh.kuma.commons.cloudflarebypass.Cloudflare
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.cryse.widget.persistentsearch.PersistentSearchView
import org.cryse.widget.persistentsearch.SearchItem
import org.jetbrains.anko.hintTextColor
import org.jetbrains.anko.sdk27.coroutines.onClick
import org.jetbrains.anko.textColor
import q.rorbin.badgeview.Badge
import q.rorbin.badgeview.QBadgeView
import xdroid.toaster.Toaster
import java.net.HttpCookie
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
import androidx.core.net.toUri
class Main : GenericActivity(),
NavigationView.OnNavigationItemSelectedListener,
NavigationBarView.OnItemSelectedListener,
NavigationBarView.OnItemReselectedListener,
UpdateChecker.CheckListener, BypassUtil.BypassListener,
ConfigurationFragment.UAChangeListener {
private val toolbar by bind<Toolbar>(R.id.toolbar)
private val searchView by bind<PersistentSearchView>(R.id.searchview)
private val drawer by bind<DrawerLayout>(R.id.drawer_layout)
private val navigationView by bind<NavigationView>(R.id.nav_view)
private val coordinator by bind<CoordinatorLayout>(R.id.coordinator)
private val connectionState by bind<ConnectionState>(R.id.connectionState)
private val bottomNavigationView by bind<BottomNavigationView>(R.id.bottomNavigation)
internal var selectedFragment: BottomFragment? = null
private var searchFragment: SearchFragment? = null
private lateinit var badgeEmission: TextView
private lateinit var badgeSeeing: TextView
private lateinit var badgeQueue: TextView
private var badgeView: Badge? = null
private var readyToFinish = false
private var isFirst = true
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(EAHelper.getThemeNA())
super.onCreate(savedInstanceState)
if (getString(R.string.app_name) != "UKIKU") {
Toaster.toast("Te dije que no lo cambiaras")
finish()
return
}
try {
setContentView(R.layout.activity_main_drawer)
} catch (e: Exception) {
setContentView(R.layout.activity_main_drawer_nwv)
}
//setDefaults()
setSupportActionBar(toolbar)
val toggle = ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
drawer.addDrawerListener(toggle)
toggle.syncState()
toolbar.changeToolbarFont(R.font.audiowide)
setNavigationButtons()
navigationView.setNavigationItemSelectedListener(this)
bottomNavigationView.setOnItemSelectedListener(this)
bottomNavigationView.setOnItemReselectedListener(this)
setSearch()
if (savedInstanceState == null) {
checkServices()
startChange()
} else
returnSelectFragment()
//checkBypass()
migrateSeen()
FirestoreManager.start()
onBackPressedDispatcher.addCallback(this) {
when {
drawer.isDrawerOpen(GravityCompat.START) -> drawer.closeDrawer(GravityCompat.START)
searchView.isSearching -> closeSearch()
readyToFinish -> finish()
else -> {
readyToFinish = true
Toaster.toast("Presione de nuevo para salir")
Handler().postDelayed({ readyToFinish = false }, 2000)
}
}
}
DesignUtils.listenDesignChange(this)
}
private fun checkServices() {
lifecycleScope.launch(Dispatchers.IO) {
BypassUtil.clearCookiesIfNeeded()
checkPermissions()
checkDirectoryState()
UpdateWork.schedule()
RecentsWork.schedule(this@Main)
DirUpdateWork.schedule(this@Main)
RecentsNotReceiver.removeAll(this@Main)
EAHelper.clear1()
verifiyFF()
}
}
private suspend fun checkDirectoryState() {
DirManager.checkPreDir()
if (PrefsUtil.useDefaultUserAgent && Network.isConnected) {
val isBrowserOk = noCrashLet(false) {
jsoupCookiesDir("https://www3.animeflv.net/browse?order=added&page=5", BypassUtil.isCloudflareActive()).execute()
true
}
if (!isBrowserOk) {
val randomUA = randomUA()
PrefsUtil.userAgentDir = randomUA
suspendCoroutine<Boolean> {
lifecycleScope.launch(Dispatchers.Main) {
noCrash {
Cloudflare(this@Main, "https://www3.animeflv.net/browse?order=added&page=5", PrefsUtil.userAgentDir).apply {
setCfCallback(object : CfCallback {
override fun onSuccess(cookieList: MutableList<HttpCookie>?, hasNewUrl: Boolean, newUrl: String?) {
PrefsUtil.dirCookies = cookieList ?: emptyList()
noCrash { it.resume(true) }
}
override fun onFail(code: Int, msg: String?) {
Log.e("Dir cookies", "On error, code $code, msg: $msg")
noCrash { it.resume(false) }
}
})
}.getCookies()
}
}
}
}
}
DirectoryService.run(this)
}
@SuppressLint("SetTextI18n")
private fun setNavigationButtons() {
lifecycleScope.launch(Dispatchers.Main) {
badgeEmission = navigationView.menu.findItem(R.id.drawer_emision).actionView as TextView
badgeSeeing = navigationView.menu.findItem(R.id.drawer_seeing).actionView as TextView
badgeQueue = navigationView.menu.findItem(R.id.drawer_queue).actionView as TextView
navigationView.getHeaderView(0).findViewById<View>(R.id.img).setBackgrou
gitextract_do_1h07p/ ├── .github/ │ ├── FUNDING.yml │ └── ISSUE_TEMPLATE/ │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitattributes │ ├── .gitignore │ ├── amazon/ │ │ └── app-amazon.apk │ ├── build.gradle │ ├── fabric.properties │ ├── proguard-android.txt │ ├── proguard-rules.pro │ ├── release/ │ │ └── app-release.apk │ ├── src/ │ │ ├── amazon/ │ │ │ ├── AndroidManifest.xml │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── ic_launcher_foregound.xml │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── menu/ │ │ │ │ └── activity_main_drawer_drawer.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── bool.xml │ │ │ │ ├── google_maps_api.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ └── xml/ │ │ │ └── preferences.xml │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── knf/ │ │ │ └── kuma/ │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── debug/ │ │ │ └── res/ │ │ │ └── xml/ │ │ │ └── preferences.xml │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets/ │ │ │ │ └── changelog.xml │ │ │ ├── java/ │ │ │ │ └── knf/ │ │ │ │ └── kuma/ │ │ │ │ ├── App.kt │ │ │ │ ├── AppInfoActivity.kt │ │ │ │ ├── AppInfoActivityMaterial.kt │ │ │ │ ├── AppInfoFragment.kt │ │ │ │ ├── BottomFragment.kt │ │ │ │ ├── Diagnostic.kt │ │ │ │ ├── DiagnosticMaterial.kt │ │ │ │ ├── Main.kt │ │ │ │ ├── MainMaterial.kt │ │ │ │ ├── SplashActivity.kt │ │ │ │ ├── achievements/ │ │ │ │ │ ├── AchievementActivity.kt │ │ │ │ │ ├── AchievementActivityMaterial.kt │ │ │ │ │ ├── AchievementAdapter.kt │ │ │ │ │ ├── AchievementFragment.kt │ │ │ │ │ ├── AchievementManager.kt │ │ │ │ │ ├── AchievementsFragmentsPagerAdapter.kt │ │ │ │ │ ├── AchievementsPagerAdapter.kt │ │ │ │ │ └── LevelCalculator.kt │ │ │ │ ├── ads/ │ │ │ │ │ ├── AdAnimeObject.kt │ │ │ │ │ ├── AdCallback.kt │ │ │ │ │ ├── AdCardItemHolder.kt │ │ │ │ │ ├── AdFavoriteObject.kt │ │ │ │ │ ├── AdRecentObject.kt │ │ │ │ │ ├── AdsUtils.kt │ │ │ │ │ ├── AdsUtilsBrains.kt │ │ │ │ │ ├── AdsUtilsLovin.kt │ │ │ │ │ ├── AdsUtilsMob.kt │ │ │ │ │ ├── NativeManager.kt │ │ │ │ │ └── SubscriptionReceiver.kt │ │ │ │ ├── animeinfo/ │ │ │ │ │ ├── ActivityAnime.kt │ │ │ │ │ ├── ActivityAnimeMaterial.kt │ │ │ │ │ ├── AnimeBroadcast.kt │ │ │ │ │ ├── AnimeChaptersAdapter.kt │ │ │ │ │ ├── AnimeChaptersAdapterMaterial.kt │ │ │ │ │ ├── AnimeInfo.kt │ │ │ │ │ ├── AnimePagerAdapter.kt │ │ │ │ │ ├── AnimePagerAdapterMaterial.kt │ │ │ │ │ ├── AnimeRelatedAdapter.kt │ │ │ │ │ ├── AnimeRelatedAdapterMaterial.kt │ │ │ │ │ ├── AnimeTagsAdapter.kt │ │ │ │ │ ├── AnimeTagsAdapterMaterial.kt │ │ │ │ │ ├── AnimeViewModel.kt │ │ │ │ │ ├── BottomActionsDialog.kt │ │ │ │ │ ├── ChapterObjWrap.kt │ │ │ │ │ ├── CommentariesDialog.kt │ │ │ │ │ ├── DownloadedObserver.kt │ │ │ │ │ ├── fragments/ │ │ │ │ │ │ ├── ChaptersFragment.kt │ │ │ │ │ │ ├── ChaptersFragmentMaterial.kt │ │ │ │ │ │ ├── DetailsFragment.kt │ │ │ │ │ │ └── DetailsFragmentMaterial.kt │ │ │ │ │ ├── img/ │ │ │ │ │ │ ├── ActivityImgFull.kt │ │ │ │ │ │ ├── ImgFullFragment.kt │ │ │ │ │ │ └── ImgPagerAdapter.kt │ │ │ │ │ ├── ktx/ │ │ │ │ │ │ └── Extensions.kt │ │ │ │ │ └── viewholders/ │ │ │ │ │ ├── AnimeActivityHolder.kt │ │ │ │ │ ├── AnimeActivityMaterialHolder.kt │ │ │ │ │ ├── AnimeChaptersHolder.kt │ │ │ │ │ ├── AnimeChaptersMaterialHolder.kt │ │ │ │ │ ├── AnimeDetailsHolder.kt │ │ │ │ │ └── AnimeDetailsMaterialHolder.kt │ │ │ │ ├── backup/ │ │ │ │ │ ├── BackUpActivity.kt │ │ │ │ │ ├── Backups.kt │ │ │ │ │ ├── MigrationActivity.kt │ │ │ │ │ ├── firestore/ │ │ │ │ │ │ ├── FirestoreManager.kt │ │ │ │ │ │ ├── QueueManager.kt │ │ │ │ │ │ └── data/ │ │ │ │ │ │ ├── AchievementsData.kt │ │ │ │ │ │ ├── EAData.kt │ │ │ │ │ │ ├── FavsData.kt │ │ │ │ │ │ ├── GenresData.kt │ │ │ │ │ │ ├── HistoryData.kt │ │ │ │ │ │ ├── QueueData.kt │ │ │ │ │ │ ├── SeeingData.kt │ │ │ │ │ │ ├── SeenData.kt │ │ │ │ │ │ └── TopData.kt │ │ │ │ │ ├── framework/ │ │ │ │ │ │ ├── BackupService.kt │ │ │ │ │ │ ├── DropBoxService.kt │ │ │ │ │ │ └── LocalService.kt │ │ │ │ │ ├── objects/ │ │ │ │ │ │ ├── AnimeChapters.kt │ │ │ │ │ │ ├── BackupObject.kt │ │ │ │ │ │ ├── FavList.kt │ │ │ │ │ │ └── SeenList.kt │ │ │ │ │ └── screens/ │ │ │ │ │ ├── MigrateDirectoryFragment.kt │ │ │ │ │ ├── MigrateSuccessFragment.kt │ │ │ │ │ └── MigrateVersionFragment.kt │ │ │ │ ├── cast/ │ │ │ │ │ ├── CastCustom.kt │ │ │ │ │ ├── CastMedia.kt │ │ │ │ │ ├── CastNotificationHelper.kt │ │ │ │ │ └── ProxyCache.kt │ │ │ │ ├── changelog/ │ │ │ │ │ ├── ChangeAdapter.kt │ │ │ │ │ ├── ChangeAdapterMaterial.kt │ │ │ │ │ ├── ChangelogActivity.kt │ │ │ │ │ ├── ChangelogActivityMaterial.kt │ │ │ │ │ ├── ReleaseAdapter.kt │ │ │ │ │ ├── ReleaseAdapterMaterial.kt │ │ │ │ │ └── objects/ │ │ │ │ │ ├── Change.kt │ │ │ │ │ ├── Changelog.kt │ │ │ │ │ └── Release.kt │ │ │ │ ├── commons/ │ │ │ │ │ ├── AllSSLOkHttpClient.kt │ │ │ │ │ ├── BypassUtil.kt │ │ │ │ │ ├── CastUtil.kt │ │ │ │ │ ├── ChannelTools.kt │ │ │ │ │ ├── CipherExt.kt │ │ │ │ │ ├── DesignUtils.kt │ │ │ │ │ ├── EAHelper.kt │ │ │ │ │ ├── EAMapActivity.kt │ │ │ │ │ ├── Economy.kt │ │ │ │ │ ├── Encryption.java │ │ │ │ │ ├── ExtensionUtils.kt │ │ │ │ │ ├── FileUtil.kt │ │ │ │ │ ├── FileWrapper.kt │ │ │ │ │ ├── Network.kt │ │ │ │ │ ├── NoSSLOkHttpClient.kt │ │ │ │ │ ├── PatternUtil.kt │ │ │ │ │ ├── PicassoSingle.kt │ │ │ │ │ ├── PrefsUtil.kt │ │ │ │ │ ├── SSLSkipper.kt │ │ │ │ │ ├── SelfServer.kt │ │ │ │ │ ├── SharedPreferenceLiveData.kt │ │ │ │ │ └── ThumbsDownloader.kt │ │ │ │ ├── custom/ │ │ │ │ │ ├── AchievementUnlocked.java │ │ │ │ │ ├── AppWebView.kt │ │ │ │ │ ├── BackgroundExecutor.kt │ │ │ │ │ ├── BannerContainerView.kt │ │ │ │ │ ├── CenterLayoutManager.kt │ │ │ │ │ ├── ConnectionState.kt │ │ │ │ │ ├── ExpandableTV.kt │ │ │ │ │ ├── ExpandableTextView.kt │ │ │ │ │ ├── FSGridRecyclerView.kt │ │ │ │ │ ├── FSRecyclerView.kt │ │ │ │ │ ├── FixedGridLayoutManager.kt │ │ │ │ │ ├── GenericActivity.kt │ │ │ │ │ ├── GridRecyclerView.kt │ │ │ │ │ ├── HiddenOverlay.kt │ │ │ │ │ ├── HomeList.kt │ │ │ │ │ ├── ListPreferenceDialogFragmentCompat.kt │ │ │ │ │ ├── MainExecutor.kt │ │ │ │ │ ├── PreferenceFragmentCompat.java │ │ │ │ │ ├── SSLManager.kt │ │ │ │ │ ├── SeenAnimeOverlay.kt │ │ │ │ │ ├── SingleFragmentActivity.kt │ │ │ │ │ ├── SingleFragmentMaterialActivity.kt │ │ │ │ │ ├── StateView.kt │ │ │ │ │ ├── StateViewMaterial.kt │ │ │ │ │ ├── SyncItemView.kt │ │ │ │ │ ├── SyncStaticItemView.kt │ │ │ │ │ ├── ThemedControlsActivity.kt │ │ │ │ │ ├── TlsOnlySocketFactory.java │ │ │ │ │ ├── VariantGridLayoutManager.kt │ │ │ │ │ ├── VariantLinearLayoutManager.kt │ │ │ │ │ ├── WrapWebView.kt │ │ │ │ │ ├── exceptions/ │ │ │ │ │ │ └── EJNFException.kt │ │ │ │ │ └── snackbar/ │ │ │ │ │ ├── SnackProgressBar.kt │ │ │ │ │ ├── SnackProgressBarCore.kt │ │ │ │ │ ├── SnackProgressBarLayout.kt │ │ │ │ │ └── SnackProgressBarManager.kt │ │ │ │ ├── database/ │ │ │ │ │ ├── BaseConverter.kt │ │ │ │ │ ├── CacheDB.kt │ │ │ │ │ ├── CacheDBWrap.java │ │ │ │ │ ├── EADB.kt │ │ │ │ │ └── dao/ │ │ │ │ │ ├── AchievementsDAO.kt │ │ │ │ │ ├── AnimeDAO.kt │ │ │ │ │ ├── ChaptersDAO.kt │ │ │ │ │ ├── DownloadsDAO.kt │ │ │ │ │ ├── EaDAO.kt │ │ │ │ │ ├── ExplorerDAO.kt │ │ │ │ │ ├── FavsDAO.kt │ │ │ │ │ ├── GenresDAO.kt │ │ │ │ │ ├── NotificationDAO.kt │ │ │ │ │ ├── PlayerStateDAO.kt │ │ │ │ │ ├── QueueDAO.kt │ │ │ │ │ ├── RecentModelsDAO.kt │ │ │ │ │ ├── RecentsDAO.kt │ │ │ │ │ ├── RecordsDAO.kt │ │ │ │ │ ├── SeeingDAO.kt │ │ │ │ │ └── SeenDAO.kt │ │ │ │ ├── directory/ │ │ │ │ │ ├── DirManager.kt │ │ │ │ │ ├── DirObject.kt │ │ │ │ │ ├── DirObjectCompact.kt │ │ │ │ │ ├── DirPagerAdapter.kt │ │ │ │ │ ├── DirPagerAdapterMaterial.kt │ │ │ │ │ ├── DirPagerAdapterOnline.kt │ │ │ │ │ ├── DirectoryDataSource.kt │ │ │ │ │ ├── DirectoryFragment.kt │ │ │ │ │ ├── DirectoryFragmentMaterial.kt │ │ │ │ │ ├── DirectoryPageAdapter.kt │ │ │ │ │ ├── DirectoryPageAdapterMaterial.kt │ │ │ │ │ ├── DirectoryPageAdapterOnline.kt │ │ │ │ │ ├── DirectoryPageCompact.kt │ │ │ │ │ ├── DirectoryPageFragment.kt │ │ │ │ │ ├── DirectoryPageFragmentMaterial.kt │ │ │ │ │ ├── DirectoryPageFragmentOnline.kt │ │ │ │ │ ├── DirectoryService.kt │ │ │ │ │ ├── DirectoryUpdateService.kt │ │ │ │ │ ├── DirectoryViewModel.kt │ │ │ │ │ └── viewholders/ │ │ │ │ │ ├── DirMainFragmentHolder.kt │ │ │ │ │ └── DirMainFragmentMaterialHolder.kt │ │ │ │ ├── download/ │ │ │ │ │ ├── DownloadDialogActivity.kt │ │ │ │ │ ├── DownloadManager.kt │ │ │ │ │ ├── DownloadManagerCentral.kt │ │ │ │ │ ├── DownloadManagerJob.kt │ │ │ │ │ ├── DownloadReceiver.kt │ │ │ │ │ ├── DownloadService.kt │ │ │ │ │ ├── FileAccessHelper.kt │ │ │ │ │ ├── MultipleDownloadManager.kt │ │ │ │ │ ├── UriValidation.kt │ │ │ │ │ └── downloadKt.kt │ │ │ │ ├── emision/ │ │ │ │ │ ├── AnimeSubObject.kt │ │ │ │ │ ├── EmissionActivity.kt │ │ │ │ │ ├── EmissionActivityMaterial.kt │ │ │ │ │ ├── EmissionAdapter.kt │ │ │ │ │ ├── EmissionAdapterMaterial.kt │ │ │ │ │ ├── EmissionFragment.kt │ │ │ │ │ ├── EmissionFragmentMaterial.kt │ │ │ │ │ ├── EmissionPagerAdapter.kt │ │ │ │ │ ├── EmissionPagerAdapterMaterial.kt │ │ │ │ │ └── RemoveListener.kt │ │ │ │ ├── explorer/ │ │ │ │ │ ├── DownloadingAdapter.kt │ │ │ │ │ ├── DownloadingAdapterMaterial.kt │ │ │ │ │ ├── ExplorerActivity.kt │ │ │ │ │ ├── ExplorerActivityMaterial.kt │ │ │ │ │ ├── ExplorerChapsAdapter.kt │ │ │ │ │ ├── ExplorerChapsAdapterMaterial.kt │ │ │ │ │ ├── ExplorerCreator.kt │ │ │ │ │ ├── ExplorerFilesAdapter.kt │ │ │ │ │ ├── ExplorerFilesAdapterMaterial.kt │ │ │ │ │ ├── ExplorerFilesModel.kt │ │ │ │ │ ├── ExplorerObjectDiff.kt │ │ │ │ │ ├── ExplorerObjectWrap.kt │ │ │ │ │ ├── ExplorerPagerAdapter.kt │ │ │ │ │ ├── ExplorerPagerAdapterMaterial.kt │ │ │ │ │ ├── FragmentBase.kt │ │ │ │ │ ├── FragmentChapters.kt │ │ │ │ │ ├── FragmentChaptersMaterial.kt │ │ │ │ │ ├── FragmentDownloads.kt │ │ │ │ │ ├── FragmentDownloadsMaterial.kt │ │ │ │ │ ├── FragmentFiles.kt │ │ │ │ │ ├── FragmentFilesMaterial.kt │ │ │ │ │ ├── FragmentFilesRoot.kt │ │ │ │ │ ├── FragmentFilesRootMaterial.kt │ │ │ │ │ ├── FragmentPermission.kt │ │ │ │ │ ├── OnFileStateChange.kt │ │ │ │ │ ├── ThumbServer.kt │ │ │ │ │ └── creator/ │ │ │ │ │ ├── Creator.kt │ │ │ │ │ ├── DocumentFileCreator.kt │ │ │ │ │ ├── SimpleFileCreator.kt │ │ │ │ │ └── SubFile.kt │ │ │ │ ├── faq/ │ │ │ │ │ ├── FaqActivity.kt │ │ │ │ │ ├── FaqActivityMaterial.kt │ │ │ │ │ ├── FaqAdapter.kt │ │ │ │ │ └── FaqItem.kt │ │ │ │ ├── favorite/ │ │ │ │ │ ├── FavSectionHelper.kt │ │ │ │ │ ├── FavoriteFragment.kt │ │ │ │ │ ├── FavoriteFragmentMaterial.kt │ │ │ │ │ ├── FavoriteViewModel.kt │ │ │ │ │ ├── FavsSectionAdapter.kt │ │ │ │ │ ├── FavsSectionAdapterMaterial.kt │ │ │ │ │ └── objects/ │ │ │ │ │ ├── FavSorter.kt │ │ │ │ │ └── InfoContainer.kt │ │ │ │ ├── home/ │ │ │ │ │ ├── DirAdapter.kt │ │ │ │ │ ├── DirAdapterMaterial.kt │ │ │ │ │ ├── HomeFragment.kt │ │ │ │ │ ├── HomeFragmentMaterial.kt │ │ │ │ │ ├── QueueAdapter.kt │ │ │ │ │ ├── QueueAdapterMaterial.kt │ │ │ │ │ ├── RecentsAdapter.kt │ │ │ │ │ ├── RecentsAdapterMaterial.kt │ │ │ │ │ ├── RecommendedAdapter.kt │ │ │ │ │ ├── RecommendedAdapterMaterial.kt │ │ │ │ │ ├── SearchAdapter.kt │ │ │ │ │ ├── SearchAdapterMaterial.kt │ │ │ │ │ ├── StaffRecommendations.kt │ │ │ │ │ ├── UpdateableAdapter.kt │ │ │ │ │ ├── WaitingAdapter.kt │ │ │ │ │ └── WaitingAdapterMaterial.kt │ │ │ │ ├── jobscheduler/ │ │ │ │ │ ├── BackUpWork.kt │ │ │ │ │ ├── DirUpdateWork.kt │ │ │ │ │ ├── RecentsWork.kt │ │ │ │ │ ├── UpdateWork.kt │ │ │ │ │ └── WorkExt.kt │ │ │ │ ├── news/ │ │ │ │ │ ├── MaterialNewsActivity.kt │ │ │ │ │ ├── MaterialNewsAdapter.kt │ │ │ │ │ ├── NewsActivity.kt │ │ │ │ │ ├── NewsAdapter.kt │ │ │ │ │ ├── NewsCreator.kt │ │ │ │ │ ├── NewsDialog.kt │ │ │ │ │ ├── NewsObjects.kt │ │ │ │ │ └── NewsViewModel.kt │ │ │ │ ├── player/ │ │ │ │ │ ├── AudioFocusWrapper.kt │ │ │ │ │ ├── BVListener.kt │ │ │ │ │ ├── CustomExoPlayer.kt │ │ │ │ │ ├── MediaCatalog.kt │ │ │ │ │ ├── Player.kt │ │ │ │ │ ├── VideoActivity.kt │ │ │ │ │ └── WebPlayerActivity.kt │ │ │ │ ├── pojos/ │ │ │ │ │ ├── Achievement.kt │ │ │ │ │ ├── AchievementAd.kt │ │ │ │ │ ├── Anime.java │ │ │ │ │ ├── AnimeObject.java │ │ │ │ │ ├── AutoBackupObject.kt │ │ │ │ │ ├── DirectoryPage.kt │ │ │ │ │ ├── DownloadObject.java │ │ │ │ │ ├── EAObject.kt │ │ │ │ │ ├── ExplorerObject.java │ │ │ │ │ ├── FakeAutoBackup.java │ │ │ │ │ ├── FavSection.java │ │ │ │ │ ├── FavoriteObject.java │ │ │ │ │ ├── GenreStatusObject.java │ │ │ │ │ ├── NotificationObj.java │ │ │ │ │ ├── QueueObject.java │ │ │ │ │ ├── RecentObject.java │ │ │ │ │ ├── RecentWrap.kt │ │ │ │ │ ├── Recents.java │ │ │ │ │ ├── RecordObject.java │ │ │ │ │ ├── SeeingObject.java │ │ │ │ │ └── SeenObject.kt │ │ │ │ ├── preferences/ │ │ │ │ │ ├── AdsPreferenceActivity.kt │ │ │ │ │ ├── BottomPreferencesFragment.kt │ │ │ │ │ ├── BottomPreferencesMaterialFragment.kt │ │ │ │ │ ├── ConfigurationFragment.kt │ │ │ │ │ └── ConfigurationFragmentMaterial.kt │ │ │ │ ├── profile/ │ │ │ │ │ ├── TopActivity.kt │ │ │ │ │ ├── TopActivityMaterial.kt │ │ │ │ │ ├── TopAdapter.kt │ │ │ │ │ └── TopItem.kt │ │ │ │ ├── queue/ │ │ │ │ │ ├── ItemTouchHelperAdapter.kt │ │ │ │ │ ├── NoTouchHelperCallback.kt │ │ │ │ │ ├── QueueActivity.kt │ │ │ │ │ ├── QueueActivityMaterial.kt │ │ │ │ │ ├── QueueAllAdapter.kt │ │ │ │ │ ├── QueueAllAdapterMaterial.kt │ │ │ │ │ ├── QueueAnimesAdapter.kt │ │ │ │ │ ├── QueueAnimesAdapterMaterial.kt │ │ │ │ │ ├── QueueListAdapter.kt │ │ │ │ │ ├── QueueManager.kt │ │ │ │ │ └── SimpleItemTouchHelperCallback.kt │ │ │ │ ├── random/ │ │ │ │ │ ├── RandomActivity.kt │ │ │ │ │ ├── RandomActivityMaterial.kt │ │ │ │ │ ├── RandomAdapter.kt │ │ │ │ │ ├── RandomAdapterMaterial.kt │ │ │ │ │ └── RandomObject.kt │ │ │ │ ├── recents/ │ │ │ │ │ ├── RecentFragment.kt │ │ │ │ │ ├── RecentModel.kt │ │ │ │ │ ├── RecentModelAd.kt │ │ │ │ │ ├── RecentModelCh.kt │ │ │ │ │ ├── RecentModelsAdapter.kt │ │ │ │ │ ├── RecentModelsFragment.kt │ │ │ │ │ ├── RecentModelsViewModel.kt │ │ │ │ │ ├── RecentsActivity.kt │ │ │ │ │ ├── RecentsAdapter.kt │ │ │ │ │ ├── RecentsModelActivity.kt │ │ │ │ │ ├── RecentsNotReceiver.kt │ │ │ │ │ ├── RecentsViewModel.kt │ │ │ │ │ └── viewholders/ │ │ │ │ │ └── RecyclerRefreshHolder.kt │ │ │ │ ├── recommended/ │ │ │ │ │ ├── AnimeShortObject.kt │ │ │ │ │ ├── BlacklistDialog.kt │ │ │ │ │ ├── RHHolder.kt │ │ │ │ │ ├── RIHolder.kt │ │ │ │ │ ├── RankType.kt │ │ │ │ │ ├── RankingActivity.kt │ │ │ │ │ ├── RankingActivityMaterial.kt │ │ │ │ │ ├── RankingAdapter.kt │ │ │ │ │ ├── RankingAdapterMaterial.kt │ │ │ │ │ ├── RecommendActivity.kt │ │ │ │ │ ├── RecommendActivityMaterial.kt │ │ │ │ │ ├── RecommendHelper.kt │ │ │ │ │ └── sections/ │ │ │ │ │ ├── MultipleSection.kt │ │ │ │ │ └── MultipleSectionMaterial.kt │ │ │ │ ├── record/ │ │ │ │ │ ├── RecordActivity.kt │ │ │ │ │ ├── RecordActivityMaterial.kt │ │ │ │ │ ├── RecordsAdapter.kt │ │ │ │ │ └── RecordsAdapterMaterial.kt │ │ │ │ ├── retrofit/ │ │ │ │ │ └── Repository.kt │ │ │ │ ├── search/ │ │ │ │ │ ├── FiltersSuggestion.kt │ │ │ │ │ ├── GenreActivity.kt │ │ │ │ │ ├── GenreActivityMaterial.kt │ │ │ │ │ ├── GenreAdapter.kt │ │ │ │ │ ├── GenreAdapterMaterial.kt │ │ │ │ │ ├── GenresDialog.kt │ │ │ │ │ ├── SearchActivity.kt │ │ │ │ │ ├── SearchAdapter.kt │ │ │ │ │ ├── SearchAdapterCompact.kt │ │ │ │ │ ├── SearchAdapterCompactMaterial.kt │ │ │ │ │ ├── SearchAdapterMaterial.kt │ │ │ │ │ ├── SearchAdvObject.kt │ │ │ │ │ ├── SearchCompactDataSource.kt │ │ │ │ │ ├── SearchFragment.kt │ │ │ │ │ ├── SearchFragmentMaterial.kt │ │ │ │ │ ├── SearchObject.kt │ │ │ │ │ ├── SearchObjectFav.kt │ │ │ │ │ └── SearchViewModel.kt │ │ │ │ ├── seeing/ │ │ │ │ │ ├── FavToSeeing.kt │ │ │ │ │ ├── SeeingActivity.kt │ │ │ │ │ ├── SeeingActivityMaterial.kt │ │ │ │ │ ├── SeeingAdapter.kt │ │ │ │ │ ├── SeeingAdapterMaterial.kt │ │ │ │ │ ├── SeeingFragment.kt │ │ │ │ │ ├── SeeingFragmentMaterial.kt │ │ │ │ │ ├── SeeingPagerAdapter.kt │ │ │ │ │ └── SeeingPagerAdapterMaterial.kt │ │ │ │ ├── shortcuts/ │ │ │ │ │ ├── DummyActivity.kt │ │ │ │ │ ├── DummyEmissionActivity.kt │ │ │ │ │ ├── DummyExplorerActivity.kt │ │ │ │ │ └── DummyMainActivity.kt │ │ │ │ ├── slices/ │ │ │ │ │ └── AnimeSliceObject.kt │ │ │ │ ├── tv/ │ │ │ │ │ ├── AnimeRow.kt │ │ │ │ │ ├── BindableCardView.kt │ │ │ │ │ ├── ChannelUtils.kt │ │ │ │ │ ├── GlideBackgroundManager.kt │ │ │ │ │ ├── TVBaseActivity.kt │ │ │ │ │ ├── TVServersFactory.kt │ │ │ │ │ ├── anime/ │ │ │ │ │ │ ├── AnimePresenter.kt │ │ │ │ │ │ ├── ChapterPresenter.kt │ │ │ │ │ │ ├── EmissionPresenter.kt │ │ │ │ │ │ ├── FavPresenter.kt │ │ │ │ │ │ ├── RecentsPresenter.kt │ │ │ │ │ │ ├── RecordPresenter.kt │ │ │ │ │ │ ├── RelatedPresenter.kt │ │ │ │ │ │ ├── SectionPresenter.kt │ │ │ │ │ │ └── SyncPresenter.kt │ │ │ │ │ ├── cards/ │ │ │ │ │ │ ├── AnimeCardView.kt │ │ │ │ │ │ ├── ChapterCardView.kt │ │ │ │ │ │ ├── DirAdvCardView.kt │ │ │ │ │ │ ├── DirCardView.kt │ │ │ │ │ │ ├── EmissionCardView.kt │ │ │ │ │ │ ├── FavCardView.kt │ │ │ │ │ │ ├── RecentsCardView.kt │ │ │ │ │ │ ├── RecordCardView.kt │ │ │ │ │ │ ├── RelatedCardView.kt │ │ │ │ │ │ ├── SectionCardView.kt │ │ │ │ │ │ ├── SyncCardView.kt │ │ │ │ │ │ └── TagCardView.kt │ │ │ │ │ ├── details/ │ │ │ │ │ │ ├── ChaptersListPresenter.kt │ │ │ │ │ │ ├── ChaptersListRow.kt │ │ │ │ │ │ ├── CustomFullWidthDetailsOverviewRowPresenter.kt │ │ │ │ │ │ ├── DetailsDescriptionPresenter.kt │ │ │ │ │ │ ├── TVAnimesDetails.kt │ │ │ │ │ │ └── TVAnimesDetailsFragment.kt │ │ │ │ │ ├── directory/ │ │ │ │ │ │ ├── DirAdvPresenter.kt │ │ │ │ │ │ ├── DirPresenter.kt │ │ │ │ │ │ ├── TVDir.kt │ │ │ │ │ │ └── TVDirFragment.kt │ │ │ │ │ ├── emission/ │ │ │ │ │ │ ├── TVEmission.kt │ │ │ │ │ │ └── TVEmissionFragment.kt │ │ │ │ │ ├── exoplayer/ │ │ │ │ │ │ ├── LeanbackPlayerAdapter.kt │ │ │ │ │ │ ├── PlaybackFragment.kt │ │ │ │ │ │ ├── TVPlayer.kt │ │ │ │ │ │ ├── Video.kt │ │ │ │ │ │ └── VideoPlayerGlue.kt │ │ │ │ │ ├── search/ │ │ │ │ │ │ ├── BasicAnimeObject.kt │ │ │ │ │ │ ├── TVSearch.kt │ │ │ │ │ │ ├── TVSearchFragment.kt │ │ │ │ │ │ ├── TVTag.kt │ │ │ │ │ │ ├── TVTagFragment.kt │ │ │ │ │ │ └── TagPresenter.kt │ │ │ │ │ ├── sections/ │ │ │ │ │ │ ├── DirSection.kt │ │ │ │ │ │ ├── EmissionSection.kt │ │ │ │ │ │ └── SectionObject.kt │ │ │ │ │ ├── streaming/ │ │ │ │ │ │ ├── StreamTvActivity.kt │ │ │ │ │ │ ├── TVMultiSelection.kt │ │ │ │ │ │ ├── TVMultiSelectionFragment.kt │ │ │ │ │ │ ├── TVServerSelection.kt │ │ │ │ │ │ └── TVServerSelectionFragment.kt │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── BypassObject.kt │ │ │ │ │ │ ├── LogOutObject.kt │ │ │ │ │ │ └── SyncObject.kt │ │ │ │ │ └── ui/ │ │ │ │ │ ├── TVMain.kt │ │ │ │ │ └── TVMainFragment.kt │ │ │ │ ├── updater/ │ │ │ │ │ ├── UpdateActivity.kt │ │ │ │ │ ├── UpdateChecker.kt │ │ │ │ │ └── UpdaterViewModel.kt │ │ │ │ ├── videoservers/ │ │ │ │ │ ├── FembedServer.kt │ │ │ │ │ ├── FenixServer.kt │ │ │ │ │ ├── FileActions.kt │ │ │ │ │ ├── FireServer.kt │ │ │ │ │ ├── GoCDNServer.kt │ │ │ │ │ ├── Headers.kt │ │ │ │ │ ├── HyperionServer.kt │ │ │ │ │ ├── IzanagiServer.kt │ │ │ │ │ ├── KDecoder.kt │ │ │ │ │ ├── MP4UploadServer.kt │ │ │ │ │ ├── MangoServer.kt │ │ │ │ │ ├── MegaServer.kt │ │ │ │ │ ├── NatsukiServer.kt │ │ │ │ │ ├── OkruServer.kt │ │ │ │ │ ├── Option.kt │ │ │ │ │ ├── RVServer.kt │ │ │ │ │ ├── SBServer.kt │ │ │ │ │ ├── Server.kt │ │ │ │ │ ├── ServersFactory.kt │ │ │ │ │ ├── StapeServer.kt │ │ │ │ │ ├── StreamWishServer.kt │ │ │ │ │ ├── Unpacker.kt │ │ │ │ │ ├── VeryStreamServer.kt │ │ │ │ │ ├── VideoServer.kt │ │ │ │ │ ├── WebJS.kt │ │ │ │ │ ├── WebServer.kt │ │ │ │ │ ├── YUServer.kt │ │ │ │ │ └── ZippyServer.kt │ │ │ │ └── widgets/ │ │ │ │ ├── AdTemplateView.java │ │ │ │ ├── NativeTemplateStyle.java │ │ │ │ ├── emision/ │ │ │ │ │ ├── WEListItem.kt │ │ │ │ │ ├── WEListProvider.kt │ │ │ │ │ ├── WEmisionProvider.kt │ │ │ │ │ └── WEmissionService.kt │ │ │ │ └── test.kt │ │ │ └── res/ │ │ │ ├── anim/ │ │ │ │ ├── anim_fall_down.xml │ │ │ │ ├── anim_fall_up.xml │ │ │ │ ├── fade_in.xml │ │ │ │ ├── fade_out.xml │ │ │ │ ├── fadein.xml │ │ │ │ ├── fadeout.xml │ │ │ │ ├── grid_fall_down.xml │ │ │ │ ├── layout_fall_down.xml │ │ │ │ ├── scale_down.xml │ │ │ │ └── scale_up.xml │ │ │ ├── color/ │ │ │ │ ├── accent_button_state.xml │ │ │ │ ├── firebase_selector.xml │ │ │ │ ├── raised_button_text_state.xml │ │ │ │ ├── sync_button_color.xml │ │ │ │ └── text_secondary.xml │ │ │ ├── drawable/ │ │ │ │ ├── action_chapter.xml │ │ │ │ ├── action_expand.xml │ │ │ │ ├── action_search.xml │ │ │ │ ├── action_shrink.xml │ │ │ │ ├── anim_check_sync.xml │ │ │ │ ├── anim_sync_check.xml │ │ │ │ ├── background_ripple.xml │ │ │ │ ├── bottom_directory.xml │ │ │ │ ├── bottom_recents.xml │ │ │ │ ├── bottom_settings.xml │ │ │ │ ├── bottom_state.xml │ │ │ │ ├── chip_change.xml │ │ │ │ ├── chip_error.xml │ │ │ │ ├── chip_new.xml │ │ │ │ ├── chip_ripple.xml │ │ │ │ ├── chip_shape.xml │ │ │ │ ├── circular_shade.xml │ │ │ │ ├── drawable_splash.xml │ │ │ │ ├── faq_indicator.xml │ │ │ │ ├── grad_1.xml │ │ │ │ ├── grad_2.xml │ │ │ │ ├── grad_3.xml │ │ │ │ ├── grad_4.xml │ │ │ │ ├── heart_broken.xml │ │ │ │ ├── heart_empty.xml │ │ │ │ ├── heart_full.xml │ │ │ │ ├── ic_account_edit.xml │ │ │ │ ├── ic_achievement_airplane.xml │ │ │ │ ├── ic_achievement_battery.xml │ │ │ │ ├── ic_achievement_bored.xml │ │ │ │ ├── ic_achievement_calendar.xml │ │ │ │ ├── ic_achievement_cast.xml │ │ │ │ ├── ic_achievement_clock.xml │ │ │ │ ├── ic_achievement_cloud.xml │ │ │ │ ├── ic_achievement_completed.xml │ │ │ │ ├── ic_achievement_droped.xml │ │ │ │ ├── ic_achievement_egg.xml │ │ │ │ ├── ic_achievement_evangelion.xml │ │ │ │ ├── ic_achievement_fav.xml │ │ │ │ ├── ic_achievement_following.xml │ │ │ │ ├── ic_achievement_memory.xml │ │ │ │ ├── ic_achievement_midoriya.xml │ │ │ │ ├── ic_achievement_news.xml │ │ │ │ ├── ic_achievement_onepiece.xml │ │ │ │ ├── ic_achievement_otaku.xml │ │ │ │ ├── ic_achievement_pig.xml │ │ │ │ ├── ic_achievement_question.xml │ │ │ │ ├── ic_achievement_sad.xml │ │ │ │ ├── ic_achievement_share.xml │ │ │ │ ├── ic_achievement_start.xml │ │ │ │ ├── ic_achievement_vampire.xml │ │ │ │ ├── ic_achievements.xml │ │ │ │ ├── ic_action_close.xml │ │ │ │ ├── ic_add_category.xml │ │ │ │ ├── ic_add_list.xml │ │ │ │ ├── ic_animations.xml │ │ │ │ ├── ic_arrow_left.xml │ │ │ │ ├── ic_author.xml │ │ │ │ ├── ic_backup.xml │ │ │ │ ├── ic_beta.xml │ │ │ │ ├── ic_blacklist.xml │ │ │ │ ├── ic_buffer.xml │ │ │ │ ├── ic_bug.xml │ │ │ │ ├── ic_cash.xml │ │ │ │ ├── ic_cash_multi.xml │ │ │ │ ├── ic_casting.xml │ │ │ │ ├── ic_casting_menu.xml │ │ │ │ ├── ic_changelog_get.xml │ │ │ │ ├── ic_chap_down.xml │ │ │ │ ├── ic_check.xml │ │ │ │ ├── ic_check_bold.xml │ │ │ │ ├── ic_check_tv.xml │ │ │ │ ├── ic_clear.xml │ │ │ │ ├── ic_clear_all.xml │ │ │ │ ├── ic_clear_white.xml │ │ │ │ ├── ic_clock.xml │ │ │ │ ├── ic_close.xml │ │ │ │ ├── ic_cloud.xml │ │ │ │ ├── ic_cloud_download.xml │ │ │ │ ├── ic_cloud_firestore.xml │ │ │ │ ├── ic_cloud_upload.xml │ │ │ │ ├── ic_coin.xml │ │ │ │ ├── ic_coin_ach.xml │ │ │ │ ├── ic_collapse.xml │ │ │ │ ├── ic_comments.xml │ │ │ │ ├── ic_completed.xml │ │ │ │ ├── ic_considering.xml │ │ │ │ ├── ic_cuplogo.xml │ │ │ │ ├── ic_danger.xml │ │ │ │ ├── ic_delete.xml │ │ │ │ ├── ic_delete_all.xml │ │ │ │ ├── ic_design_ab.xml │ │ │ │ ├── ic_diagnostic.xml │ │ │ │ ├── ic_dir_update.xml │ │ │ │ ├── ic_directory.xml │ │ │ │ ├── ic_directory_not.xml │ │ │ │ ├── ic_discord.xml │ │ │ │ ├── ic_download.xml │ │ │ │ ├── ic_download_multiple.xml │ │ │ │ ├── ic_download_progress.xml │ │ │ │ ├── ic_downloader.xml │ │ │ │ ├── ic_drag.xml │ │ │ │ ├── ic_drive.xml │ │ │ │ ├── ic_dropbox.xml │ │ │ │ ├── ic_droped.xml │ │ │ │ ├── ic_edit.xml │ │ │ │ ├── ic_egg.xml │ │ │ │ ├── ic_emision.xml │ │ │ │ ├── ic_emision_not.xml │ │ │ │ ├── ic_error.xml │ │ │ │ ├── ic_experimental.xml │ │ │ │ ├── ic_facebook.xml │ │ │ │ ├── ic_facebook_group.xml │ │ │ │ ├── ic_faq.xml │ │ │ │ ├── ic_ff.xml │ │ │ │ ├── ic_ffwd.xml │ │ │ │ ├── ic_files.xml │ │ │ │ ├── ic_filter.xml │ │ │ │ ├── ic_genres_0.xml │ │ │ │ ├── ic_genres_1.xml │ │ │ │ ├── ic_genres_2.xml │ │ │ │ ├── ic_genres_3.xml │ │ │ │ ├── ic_genres_4.xml │ │ │ │ ├── ic_genres_5.xml │ │ │ │ ├── ic_genres_6.xml │ │ │ │ ├── ic_genres_7.xml │ │ │ │ ├── ic_genres_8.xml │ │ │ │ ├── ic_genres_9.xml │ │ │ │ ├── ic_genres_more.xml │ │ │ │ ├── ic_github.xml │ │ │ │ ├── ic_group.xml │ │ │ │ ├── ic_grouped.xml │ │ │ │ ├── ic_hash.xml │ │ │ │ ├── ic_heart.xml │ │ │ │ ├── ic_heart_full_menu.xml │ │ │ │ ├── ic_hide.xml │ │ │ │ ├── ic_hide_pref.xml │ │ │ │ ├── ic_home.xml │ │ │ │ ├── ic_img.xml │ │ │ │ ├── ic_import.xml │ │ │ │ ├── ic_incognito.xml │ │ │ │ ├── ic_info.xml │ │ │ │ ├── ic_info_white.xml │ │ │ │ ├── ic_key.xml │ │ │ │ ├── ic_launcher_foreground.xml │ │ │ │ ├── ic_lay_type.xml │ │ │ │ ├── ic_library_video.xml │ │ │ │ ├── ic_list_placeholder.xml │ │ │ │ ├── ic_locked.xml │ │ │ │ ├── ic_locked_solid.xml │ │ │ │ ├── ic_magic.xml │ │ │ │ ├── ic_map.xml │ │ │ │ ├── ic_menu.xml │ │ │ │ ├── ic_menu_ham.xml │ │ │ │ ├── ic_move.xml │ │ │ │ ├── ic_new.xml │ │ │ │ ├── ic_new_recent.xml │ │ │ │ ├── ic_news.xml │ │ │ │ ├── ic_next.xml │ │ │ │ ├── ic_no_downloading.xml │ │ │ │ ├── ic_no_downloads.xml │ │ │ │ ├── ic_no_emision.xml │ │ │ │ ├── ic_no_genres.xml │ │ │ │ ├── ic_no_network.xml │ │ │ │ ├── ic_no_recents.xml │ │ │ │ ├── ic_no_records.xml │ │ │ │ ├── ic_no_thumb.xml │ │ │ │ ├── ic_not_found.xml │ │ │ │ ├── ic_not_seeing.xml │ │ │ │ ├── ic_not_update.xml │ │ │ │ ├── ic_note.xml │ │ │ │ ├── ic_number.xml │ │ │ │ ├── ic_open.xml │ │ │ │ ├── ic_option_not_seen.xml │ │ │ │ ├── ic_option_seen.xml │ │ │ │ ├── ic_palette.xml │ │ │ │ ├── ic_patreon.xml │ │ │ │ ├── ic_pause.xml │ │ │ │ ├── ic_pause_normal.xml │ │ │ │ ├── ic_pause_not.xml │ │ │ │ ├── ic_paused.xml │ │ │ │ ├── ic_paypal.xml │ │ │ │ ├── ic_pip.xml │ │ │ │ ├── ic_pip_exit.xml │ │ │ │ ├── ic_play.xml │ │ │ │ ├── ic_play_all.xml │ │ │ │ ├── ic_play_not.xml │ │ │ │ ├── ic_play_queue.xml │ │ │ │ ├── ic_player.xml │ │ │ │ ├── ic_podium.xml │ │ │ │ ├── ic_previous.xml │ │ │ │ ├── ic_queue_file.xml │ │ │ │ ├── ic_queue_list.xml │ │ │ │ ├── ic_queue_normal.xml │ │ │ │ ├── ic_random.xml │ │ │ │ ├── ic_rating.xml │ │ │ │ ├── ic_recents.xml │ │ │ │ ├── ic_recents_group.xml │ │ │ │ ├── ic_record.xml │ │ │ │ ├── ic_remember.xml │ │ │ │ ├── ic_resize.xml │ │ │ │ ├── ic_restore.xml │ │ │ │ ├── ic_rewind.xml │ │ │ │ ├── ic_samsung_tv.xml │ │ │ │ ├── ic_save.xml │ │ │ │ ├── ic_save_w.xml │ │ │ │ ├── ic_scale.xml │ │ │ │ ├── ic_search_black_24dp.xml │ │ │ │ ├── ic_sectioned_favs.xml │ │ │ │ ├── ic_seeing.xml │ │ │ │ ├── ic_seeing_drawer.xml │ │ │ │ ├── ic_seen.xml │ │ │ │ ├── ic_server_running.xml │ │ │ │ ├── ic_service.xml │ │ │ │ ├── ic_setting_asc_list.xml │ │ │ │ ├── ic_setting_gps.xml │ │ │ │ ├── ic_settings_reload.xml │ │ │ │ ├── ic_share.xml │ │ │ │ ├── ic_show.xml │ │ │ │ ├── ic_skip.xml │ │ │ │ ├── ic_star_heart.xml │ │ │ │ ├── ic_stop.xml │ │ │ │ ├── ic_suggestions.xml │ │ │ │ ├── ic_sync.xml │ │ │ │ ├── ic_sync_menu.xml │ │ │ │ ├── ic_sync_rotate.xml │ │ │ │ ├── ic_tag.xml │ │ │ │ ├── ic_terminal.xml │ │ │ │ ├── ic_theme.xml │ │ │ │ ├── ic_timeout.xml │ │ │ │ ├── ic_treasure.xml │ │ │ │ ├── ic_trophy.xml │ │ │ │ ├── ic_trophy_bronze.xml │ │ │ │ ├── ic_trophy_gold.xml │ │ │ │ ├── ic_trophy_normal.xml │ │ │ │ ├── ic_trophy_silver.xml │ │ │ │ ├── ic_umaru.xml │ │ │ │ ├── ic_umaru_simple.xml │ │ │ │ ├── ic_unlock.xml │ │ │ │ ├── ic_unlocked.xml │ │ │ │ ├── ic_version.xml │ │ │ │ ├── ic_warning.xml │ │ │ │ ├── ic_watching.xml │ │ │ │ ├── ic_web.xml │ │ │ │ ├── material_tab_indicator.xml │ │ │ │ ├── progressbar_circle.xml │ │ │ │ ├── shadow_gradient.xml │ │ │ │ ├── shape_circle.xml │ │ │ │ ├── side_nav_bar.xml │ │ │ │ ├── side_nav_bar_amber.xml │ │ │ │ ├── side_nav_bar_blue.xml │ │ │ │ ├── side_nav_bar_blue_gray.xml │ │ │ │ ├── side_nav_bar_brown.xml │ │ │ │ ├── side_nav_bar_cyan.xml │ │ │ │ ├── side_nav_bar_deep_orange.xml │ │ │ │ ├── side_nav_bar_deep_purple.xml │ │ │ │ ├── side_nav_bar_gray.xml │ │ │ │ ├── side_nav_bar_green.xml │ │ │ │ ├── side_nav_bar_indigo.xml │ │ │ │ ├── side_nav_bar_light_blue.xml │ │ │ │ ├── side_nav_bar_light_green.xml │ │ │ │ ├── side_nav_bar_lime.xml │ │ │ │ ├── side_nav_bar_orange.xml │ │ │ │ ├── side_nav_bar_pink.xml │ │ │ │ ├── side_nav_bar_purple.xml │ │ │ │ ├── side_nav_bar_teal.xml │ │ │ │ ├── side_nav_bar_yellow.xml │ │ │ │ └── updater_background.xml │ │ │ ├── drawable-night/ │ │ │ │ ├── anim_check_sync.xml │ │ │ │ ├── anim_sync_check.xml │ │ │ │ └── shadow_gradient.xml │ │ │ ├── layout/ │ │ │ │ ├── activity_achievement_profile.xml │ │ │ │ ├── activity_achievement_profile_material.xml │ │ │ │ ├── activity_ads_settings.xml │ │ │ │ ├── activity_anime_info.xml │ │ │ │ ├── activity_anime_info_material.xml │ │ │ │ ├── activity_anime_info_nwv.xml │ │ │ │ ├── activity_blank.xml │ │ │ │ ├── activity_browser.xml │ │ │ │ ├── activity_ea.xml │ │ │ │ ├── activity_eamap.xml │ │ │ │ ├── activity_emision.xml │ │ │ │ ├── activity_emision_material.xml │ │ │ │ ├── activity_explorer.xml │ │ │ │ ├── activity_explorer_material.xml │ │ │ │ ├── activity_fragment.xml │ │ │ │ ├── activity_fragment_material.xml │ │ │ │ ├── activity_login.xml │ │ │ │ ├── activity_login_buttons.xml │ │ │ │ ├── activity_login_firestore.xml │ │ │ │ ├── activity_login_main.xml │ │ │ │ ├── activity_main_drawer.xml │ │ │ │ ├── activity_main_drawer_nwv.xml │ │ │ │ ├── activity_main_material.xml │ │ │ │ ├── activity_migrate.xml │ │ │ │ ├── activity_news.xml │ │ │ │ ├── activity_news_material.xml │ │ │ │ ├── activity_queue.xml │ │ │ │ ├── activity_queue_grid.xml │ │ │ │ ├── activity_queue_grid_material.xml │ │ │ │ ├── activity_queue_material.xml │ │ │ │ ├── activity_search.xml │ │ │ │ ├── activity_seening.xml │ │ │ │ ├── activity_seening_material.xml │ │ │ │ ├── activity_updater.xml │ │ │ │ ├── activity_webview.xml │ │ │ │ ├── activity_webview_nwv.xml │ │ │ │ ├── admob_ad_alone.xml │ │ │ │ ├── admob_ad_card.xml │ │ │ │ ├── admob_ad_news.xml │ │ │ │ ├── admob_ad_plain.xml │ │ │ │ ├── app_bar_main.xml │ │ │ │ ├── app_bar_main_nwv.xml │ │ │ │ ├── dialog_ff_enable.xml │ │ │ │ ├── dialog_random_picker.xml │ │ │ │ ├── dialog_wallet.xml │ │ │ │ ├── exo_playback_control_view.xml │ │ │ │ ├── exo_playback_youtube_control_view.xml │ │ │ │ ├── exo_player.xml │ │ │ │ ├── fragment_achievements.xml │ │ │ │ ├── fragment_anime_details.xml │ │ │ │ ├── fragment_anime_details_material.xml │ │ │ │ ├── fragment_directory.xml │ │ │ │ ├── fragment_directory_material.xml │ │ │ │ ├── fragment_explorer_files.xml │ │ │ │ ├── fragment_explorer_permission_pending.xml │ │ │ │ ├── fragment_home.xml │ │ │ │ ├── fragment_home_material.xml │ │ │ │ ├── fragment_preferences.xml │ │ │ │ ├── fragment_preferences_material.xml │ │ │ │ ├── fragment_recent_material.xml │ │ │ │ ├── fragment_search.xml │ │ │ │ ├── fragment_search_grid.xml │ │ │ │ ├── fragment_seeing.xml │ │ │ │ ├── item_achievements.xml │ │ │ │ ├── item_ad.xml │ │ │ │ ├── item_ad_achievements.xml │ │ │ │ ├── item_ad_fav.xml │ │ │ │ ├── item_ad_news.xml │ │ │ │ ├── item_ad_recents_material.xml │ │ │ │ ├── item_anim_queue.xml │ │ │ │ ├── item_anim_queue_grid.xml │ │ │ │ ├── item_anim_queue_grid_material.xml │ │ │ │ ├── item_anim_queue_material.xml │ │ │ │ ├── item_changelog.xml │ │ │ │ ├── item_changelog_material.xml │ │ │ │ ├── item_chap.xml │ │ │ │ ├── item_chap_grid.xml │ │ │ │ ├── item_chap_grid_material.xml │ │ │ │ ├── item_chap_material.xml │ │ │ │ ├── item_chapter_preview.xml │ │ │ │ ├── item_chapter_preview_material.xml │ │ │ │ ├── item_chip.xml │ │ │ │ ├── item_dir.xml │ │ │ │ ├── item_dir_grid.xml │ │ │ │ ├── item_dir_grid_material.xml │ │ │ │ ├── item_dir_material.xml │ │ │ │ ├── item_downloading_extra.xml │ │ │ │ ├── item_downloading_extra_material.xml │ │ │ │ ├── item_ea_step.xml │ │ │ │ ├── item_emision.xml │ │ │ │ ├── item_emision_material.xml │ │ │ │ ├── item_explorer.xml │ │ │ │ ├── item_explorer_grid.xml │ │ │ │ ├── item_explorer_grid_material.xml │ │ │ │ ├── item_explorer_material.xml │ │ │ │ ├── item_faq.xml │ │ │ │ ├── item_fav.xml │ │ │ │ ├── item_fav_grid.xml │ │ │ │ ├── item_fav_grid_card.xml │ │ │ │ ├── item_fav_grid_card_material.xml │ │ │ │ ├── item_fav_grid_card_simple.xml │ │ │ │ ├── item_fav_grid_card_simple_material.xml │ │ │ │ ├── item_fav_grid_material.xml │ │ │ │ ├── item_fav_header.xml │ │ │ │ ├── item_fav_material.xml │ │ │ │ ├── item_native_reduced.xml │ │ │ │ ├── item_native_small.xml │ │ │ │ ├── item_native_small_rounded.xml │ │ │ │ ├── item_news.xml │ │ │ │ ├── item_news_material.xml │ │ │ │ ├── item_queue.xml │ │ │ │ ├── item_queue_full.xml │ │ │ │ ├── item_queue_full_material.xml │ │ │ │ ├── item_ranking.xml │ │ │ │ ├── item_ranking_material.xml │ │ │ │ ├── item_recents.xml │ │ │ │ ├── item_recents_material.xml │ │ │ │ ├── item_recommend_header.xml │ │ │ │ ├── item_record.xml │ │ │ │ ├── item_record_grid.xml │ │ │ │ ├── item_record_grid_material.xml │ │ │ │ ├── item_record_material.xml │ │ │ │ ├── item_related.xml │ │ │ │ ├── item_release.xml │ │ │ │ ├── item_release_material.xml │ │ │ │ ├── item_simple_spinner.xml │ │ │ │ ├── item_top.xml │ │ │ │ ├── item_top_current.xml │ │ │ │ ├── item_tv_card.xml │ │ │ │ ├── item_tv_card_adv.xml │ │ │ │ ├── item_tv_card_chapter.xml │ │ │ │ ├── item_tv_card_chapter_preview.xml │ │ │ │ ├── item_tv_card_rate.xml │ │ │ │ ├── item_tv_card_section.xml │ │ │ │ ├── item_tv_card_sync.xml │ │ │ │ ├── item_tv_tag.xml │ │ │ │ ├── item_widget_list.xml │ │ │ │ ├── lay_banner_container.xml │ │ │ │ ├── lay_bottom_actions.xml │ │ │ │ ├── lay_comments.xml │ │ │ │ ├── lay_migrate_directory.xml │ │ │ │ ├── lay_migrate_success.xml │ │ │ │ ├── lay_migrate_version.xml │ │ │ │ ├── lay_news.xml │ │ │ │ ├── lay_status_bar.xml │ │ │ │ ├── layout_comments_dialog.xml │ │ │ │ ├── layout_diagnostic.xml │ │ │ │ ├── layout_diagnostic_material.xml │ │ │ │ ├── layout_expandable_textview.xml │ │ │ │ ├── layout_img_big.xml │ │ │ │ ├── layout_img_big_base.xml │ │ │ │ ├── layout_loading_text.xml │ │ │ │ ├── layout_loading_text_material.xml │ │ │ │ ├── nav_header_main.xml │ │ │ │ ├── nav_header_main_material.xml │ │ │ │ ├── overlay.xml │ │ │ │ ├── player_view.xml │ │ │ │ ├── preference_recyclerview.xml │ │ │ │ ├── recycler_changelog.xml │ │ │ │ ├── recycler_changelog_material.xml │ │ │ │ ├── recycler_chapters.xml │ │ │ │ ├── recycler_dir.xml │ │ │ │ ├── recycler_dir_grid.xml │ │ │ │ ├── recycler_downloading.xml │ │ │ │ ├── recycler_emision.xml │ │ │ │ ├── recycler_explorer.xml │ │ │ │ ├── recycler_explorer_chaps.xml │ │ │ │ ├── recycler_explorer_chaps_grid.xml │ │ │ │ ├── recycler_explorer_grid.xml │ │ │ │ ├── recycler_faq.xml │ │ │ │ ├── recycler_faq_material.xml │ │ │ │ ├── recycler_favs.xml │ │ │ │ ├── recycler_favs_grid.xml │ │ │ │ ├── recycler_favs_grid_material.xml │ │ │ │ ├── recycler_favs_matertial.xml │ │ │ │ ├── recycler_genre.xml │ │ │ │ ├── recycler_genre_material.xml │ │ │ │ ├── recycler_loader.xml │ │ │ │ ├── recycler_loader_material.xml │ │ │ │ ├── recycler_ranking.xml │ │ │ │ ├── recycler_ranking_material.xml │ │ │ │ ├── recycler_recommends.xml │ │ │ │ ├── recycler_recommends_grid.xml │ │ │ │ ├── recycler_recommends_grid_material.xml │ │ │ │ ├── recycler_recommends_material.xml │ │ │ │ ├── recycler_records.xml │ │ │ │ ├── recycler_records_grid.xml │ │ │ │ ├── recycler_records_grid_material.xml │ │ │ │ ├── recycler_records_material.xml │ │ │ │ ├── recycler_refresh.xml │ │ │ │ ├── recycler_refresh_fragment.xml │ │ │ │ ├── recycler_refresh_grid.xml │ │ │ │ ├── recycler_refresh_grid_material.xml │ │ │ │ ├── recycler_refresh_material.xml │ │ │ │ ├── snackprogressbar.xml │ │ │ │ ├── sync_item_layout.xml │ │ │ │ ├── tv_activity_main.xml │ │ │ │ ├── view_hidden_overlay.xml │ │ │ │ ├── view_home_list.xml │ │ │ │ ├── view_home_list_large.xml │ │ │ │ ├── view_seen_overlay.xml │ │ │ │ ├── view_sync_firestore.xml │ │ │ │ └── widget_emision.xml │ │ │ ├── menu/ │ │ │ │ ├── activity_main_drawer_drawer.xml │ │ │ │ ├── bottom_menu.xml │ │ │ │ ├── chapter_casting_menu.xml │ │ │ │ ├── chapter_downloaded_menu.xml │ │ │ │ ├── chapter_menu.xml │ │ │ │ ├── chapter_menu_offline.xml │ │ │ │ ├── dir_menu.xml │ │ │ │ ├── dir_menu_material.xml │ │ │ │ ├── fav_menu.xml │ │ │ │ ├── fav_menu_material.xml │ │ │ │ ├── main.xml │ │ │ │ ├── main_material.xml │ │ │ │ ├── menu_achievements.xml │ │ │ │ ├── menu_anime_info.xml │ │ │ │ ├── menu_bug.xml │ │ │ │ ├── menu_download_info.xml │ │ │ │ ├── menu_download_options.xml │ │ │ │ ├── menu_ea.xml │ │ │ │ ├── menu_emision.xml │ │ │ │ ├── menu_explorer_connected.xml │ │ │ │ ├── menu_img.xml │ │ │ │ ├── menu_news_filters.xml │ │ │ │ ├── menu_play_queue.xml │ │ │ │ ├── menu_queue_group.xml │ │ │ │ ├── menu_queue_list.xml │ │ │ │ ├── menu_random.xml │ │ │ │ ├── menu_rating.xml │ │ │ │ ├── menu_records.xml │ │ │ │ ├── menu_seeing.xml │ │ │ │ ├── menu_seeing_auto.xml │ │ │ │ ├── menu_suggestions.xml │ │ │ │ └── menu_top.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── attr.xml │ │ │ │ ├── bool.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── font_certs.xml │ │ │ │ ├── google_maps_api.xml │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── ints.xml │ │ │ │ ├── preloaded_fonts.xml │ │ │ │ ├── shapes.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── values-land/ │ │ │ │ ├── bool.xml │ │ │ │ └── ints.xml │ │ │ ├── values-large/ │ │ │ │ └── bool.xml │ │ │ ├── values-night/ │ │ │ │ ├── bool.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── values-night-v27/ │ │ │ │ └── styles.xml │ │ │ ├── values-night-v28/ │ │ │ │ └── styles.xml │ │ │ ├── values-television/ │ │ │ │ └── bool.xml │ │ │ ├── values-v27/ │ │ │ │ └── styles.xml │ │ │ ├── values-v28/ │ │ │ │ └── styles.xml │ │ │ ├── values-v29/ │ │ │ │ └── strings.xml │ │ │ ├── values-xlarge/ │ │ │ │ └── bool.xml │ │ │ └── xml/ │ │ │ ├── backup_descriptor.xml │ │ │ ├── network_security.xml │ │ │ ├── path_providers.xml │ │ │ ├── preferences.xml │ │ │ ├── shortcuts.xml │ │ │ └── widget_emision.xml │ │ ├── playstore/ │ │ │ ├── AndroidManifest.xml │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── ic_launcher_foregound.xml │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── menu/ │ │ │ │ └── activity_main_drawer_drawer.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── bool.xml │ │ │ │ ├── google_maps_api.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ └── xml/ │ │ │ └── preferences.xml │ │ ├── release/ │ │ │ └── res/ │ │ │ └── values/ │ │ │ └── google_maps_api.xml │ │ ├── test/ │ │ │ └── java/ │ │ │ └── knf/ │ │ │ └── kuma/ │ │ │ └── ExampleUnitTest.kt │ │ └── tv/ │ │ ├── AndroidManifest.xml │ │ └── res/ │ │ └── values/ │ │ ├── bool.xml │ │ └── strings.xml │ └── tv/ │ └── app-tv.apk ├── build.gradle ├── fastlane/ │ ├── .gitignore │ ├── Appfile │ └── Fastfile ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── persistentsearchview/ │ ├── .gitignore │ ├── bintray.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── install.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── org/ │ │ └── cryse/ │ │ └── widget/ │ │ └── persistentsearch/ │ │ └── ApplicationTest.java │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── androidx/ │ │ │ └── appcompat/ │ │ │ └── graphics/ │ │ │ └── drawable/ │ │ │ └── SupportDrawerArrowDrawable.java │ │ ├── io/ │ │ │ └── codetail/ │ │ │ ├── animation/ │ │ │ │ ├── RevealAnimator.java │ │ │ │ ├── SupportAnimator.java │ │ │ │ ├── SupportAnimatorLollipop.java │ │ │ │ ├── SupportAnimatorPreL.java │ │ │ │ └── ViewAnimationUtils.java │ │ │ └── widget/ │ │ │ ├── RevealFrameLayout.java │ │ │ └── RevealLinearLayout.java │ │ └── org/ │ │ └── cryse/ │ │ └── widget/ │ │ └── persistentsearch/ │ │ ├── DefaultVoiceRecognizerDelegate.java │ │ ├── HomeButton.java │ │ ├── LogoView.java │ │ ├── PersistentSearchView.java │ │ ├── RevealViewGroup.java │ │ ├── SearchItem.java │ │ ├── SearchItemAdapter.java │ │ ├── SearchSuggestionsBuilder.java │ │ ├── SimpleSearchListener.java │ │ ├── TextDrawable.java │ │ └── VoiceRecognitionDelegate.java │ └── res/ │ ├── layout/ │ │ ├── layout_searchitem.xml │ │ └── layout_searchview.xml │ └── values/ │ ├── attrs.xml │ ├── dimens.xml │ └── strings.xml ├── settings.gradle └── version.num
SYMBOL INDEX (819 symbols across 41 files)
FILE: app/src/main/java/knf/kuma/commons/Encryption.java
class Encryption (line 27) | public class Encryption {
method Encryption (line 39) | private Encryption(Builder builder) {
method getDefault (line 47) | public static Encryption getDefault(String key, String salt, byte[] iv) {
method encrypt (line 86) | public String encrypt(String data) throws UnsupportedEncodingException...
method encryptOrNull (line 102) | public String encryptOrNull(String data) {
method encryptAsync (line 120) | public void encryptAsync(final String data, final Callback callback) {
method decrypt (line 168) | public String decrypt(String data) throws UnsupportedEncodingException...
method decryptOrNull (line 185) | public String decryptOrNull(String data) {
method decryptAsync (line 203) | public void decryptAsync(final String data, final Callback callback) {
method getSecretKey (line 233) | private SecretKey getSecretKey(char[] key) throws NoSuchAlgorithmExcep...
method hashTheKey (line 251) | private char[] hashTheKey(String key) throws UnsupportedEncodingExcept...
type Callback (line 260) | public interface Callback {
method onSuccess (line 267) | void onSuccess(String result);
method onError (line 274) | void onError(Exception exception);
class Builder (line 282) | public static class Builder {
method getDefaultBuilder (line 311) | public static Builder getDefaultBuilder(String key, String salt, byt...
method build (line 335) | public Encryption build() throws NoSuchAlgorithmException {
method getCharsetName (line 344) | private String getCharsetName() {
method setCharsetName (line 352) | public Builder setCharsetName(String charsetName) {
method getAlgorithm (line 360) | private String getAlgorithm() {
method setAlgorithm (line 368) | public Builder setAlgorithm(String algorithm) {
method getKeyAlgorithm (line 376) | private String getKeyAlgorithm() {
method setKeyAlgorithm (line 384) | public Builder setKeyAlgorithm(String keyAlgorithm) {
method getBase64Mode (line 392) | private int getBase64Mode() {
method setBase64Mode (line 400) | public Builder setBase64Mode(int base64Mode) {
method getSecretKeyType (line 409) | private String getSecretKeyType() {
method setSecretKeyType (line 418) | public Builder setSecretKeyType(String secretKeyType) {
method getSalt (line 426) | private String getSalt() {
method setSalt (line 434) | public Builder setSalt(String salt) {
method getKey (line 442) | private String getKey() {
method setKey (line 450) | public Builder setKey(String key) {
method getKeyLength (line 458) | private int getKeyLength() {
method setKeyLength (line 466) | public Builder setKeyLength(int keyLength) {
method getIterationCount (line 474) | private int getIterationCount() {
method setIterationCount (line 482) | public Builder setIterationCount(int iterationCount) {
method getSecureRandomAlgorithm (line 490) | private String getSecureRandomAlgorithm() {
method setSecureRandomAlgorithm (line 498) | public Builder setSecureRandomAlgorithm(String secureRandomAlgorithm) {
method getIv (line 506) | private byte[] getIv() {
method setIv (line 514) | public Builder setIv(byte[] iv) {
method getSecureRandom (line 522) | private SecureRandom getSecureRandom() {
method setSecureRandom (line 530) | public Builder setSecureRandom(SecureRandom secureRandom) {
method getIvParameterSpec (line 538) | private IvParameterSpec getIvParameterSpec() {
method setIvParameterSpec (line 546) | public Builder setIvParameterSpec(IvParameterSpec ivParameterSpec) {
method getDigestAlgorithm (line 554) | private String getDigestAlgorithm() {
method setDigestAlgorithm (line 562) | public Builder setDigestAlgorithm(String digestAlgorithm) {
FILE: app/src/main/java/knf/kuma/custom/AchievementUnlocked.java
class AchievementUnlocked (line 77) | @SuppressWarnings({"unused", "SetTextI18n"})
method AchievementUnlocked (line 118) | public AchievementUnlocked(Context context) {
method getScaledDuration (line 126) | static long getScaledDuration(int duration) {
method countMatches (line 130) | private static int countMatches(final String str, final String sub) {
method setScrollingPxPerSeconds (line 152) | public void setScrollingPxPerSeconds(float PxPerSeconds) {
method setNotchMode (line 165) | public void setNotchMode(@Nullable Integer statusBarHeight) {
method setTopAligned (line 177) | public AchievementUnlocked setTopAligned(boolean alignTop) {
method setReadingDelay (line 191) | public AchievementUnlocked setReadingDelay(int readingDelay) {
method setRounded (line 204) | public AchievementUnlocked setRounded(boolean rounded) {
method setAchievementListener (line 215) | public void setAchievementListener(@Nullable AchievementListenerAdapte...
method setLarge (line 227) | public AchievementUnlocked setLarge(boolean large) {
method getAchievementView (line 237) | public View getAchievementView() {
method getTitleTextView (line 244) | public TextView getTitleTextView() {
method getSubtitleTextView (line 251) | public TextView getSubtitleTextView() {
method getIconView (line 258) | public View getIconView() {
method getAchievementParent (line 267) | public ViewGroup getAchievementParent() {
method convertDpToPixel (line 271) | private int convertDpToPixel(float dp) {
method initGlobalFields (line 277) | @SuppressLint({"ObsoleteSdkInt", "SetTextI18n"})
method setDismissible (line 433) | public void setDismissible(boolean dismissible) {
method getTargetWidth (line 444) | private int getTargetWidth(AchievementData data) {
method buildAchievement (line 452) | private void buildAchievement() {
method setTextColor (line 586) | private void setTextColor(int textColor) {
method createViews (line 594) | @Deprecated
method show (line 600) | public void show(Collection<AchievementData> data) {
method show (line 609) | public void show(AchievementData... data) {
method dismissWithoutAnimation (line 649) | public void dismissWithoutAnimation() {
method removeListeners (line 655) | private void removeListeners(Animator animatorSet) {
method concat (line 671) | private AchievementData[] concat(AchievementData[] a, AchievementData[...
method setBackground (line 680) | @SuppressLint("ObsoleteSdkInt")
method removeView (line 685) | private void removeView() {
method clamp (line 726) | private int clamp(int val, int min, int max) {
method getStartValue (line 730) | private int getStartValue(int start) {
method getEndValue (line 734) | private int getEndValue(int end) {
method getContainerStretchAnimation (line 738) | private ValueAnimator getContainerStretchAnimation(int start, int end) {
method getContainerBg (line 754) | private GradientDrawableWithColors getContainerBg() {
method setContainerBg (line 764) | private void setContainerBg(int color) {
method getIconBgColor (line 775) | private int getIconBgColor(int defaultColor) {
method getContainerBgColor (line 782) | private int getContainerBgColor(int defaultColor) {
method getIconBg (line 789) | private GradientDrawableWithColors getIconBg() {
method setIconBg (line 799) | private void setIconBg(int color) {
method getExitAnimation (line 810) | private AnimatorSet getExitAnimation() {
method getContainerBackgroundColor (line 844) | private int getContainerBackgroundColor() {
method getSubtitleLines (line 851) | private int getSubtitleLines(String subtitleRaw) {
method isBlank (line 857) | private boolean isBlank(final String cs) {
method allClear (line 870) | private boolean allClear(AnimatorSet[] sets) {
method morphData (line 877) | private AnimatorSet morphData() {
method animateData (line 899) | private AnimatorSet animateData(final AchievementData data) {
method prepareMorphism (line 1071) | private void prepareMorphism() {
method dataHasSubtitle (line 1081) | private boolean dataHasSubtitle(AchievementData data) {
method getEntranceAnimation (line 1085) | private AnimatorSet getEntranceAnimation(final AchievementData data) {
method setIcon (line 1124) | private void setIcon(AchievementData data) {
method setSwipeEffect (line 1140) | private void setSwipeEffect(float amount) {
method getStatusBarHeight (line 1144) | private int getStatusBarHeight() {
type AchievementListener (line 1154) | @SuppressWarnings("unused")
method onViewCreated (line 1156) | void onViewCreated(AchievementUnlocked achievement, AchievementData[...
method onAchievementMorphed (line 1158) | void onAchievementMorphed(AchievementUnlocked achievement, Achieveme...
method onAchievementDismissed (line 1160) | void onAchievementDismissed(AchievementUnlocked achievement);
class AchievementData (line 1168) | public static class AchievementData {
method copyFrom (line 1175) | public static AchievementData copyFrom(AchievementData data) {
method getPopUpOnClickListener (line 1188) | public View.OnClickListener getPopUpOnClickListener() {
method setPopUpOnClickListener (line 1197) | public AchievementData setPopUpOnClickListener(View.OnClickListener ...
method getTextColor (line 1202) | public int getTextColor() {
method setTextColor (line 1206) | public AchievementData setTextColor(int textColor) {
method getTitle (line 1211) | public String getTitle() {
method setTitle (line 1215) | public AchievementData setTitle(String title) {
method getSubtitle (line 1220) | public String getSubtitle() {
method setSubtitle (line 1224) | public AchievementData setSubtitle(String subtitle) {
method getState (line 1229) | public AchievementIconView.AchievementIconViewStates getState() {
method setState (line 1242) | public void setState(AchievementIconView.AchievementIconViewStates s...
method getIcon (line 1246) | public Drawable getIcon() {
method setIcon (line 1256) | public AchievementData setIcon(Drawable icon) {
method getBackgroundColor (line 1261) | int getBackgroundColor() {
method setBackgroundColor (line 1271) | public AchievementData setBackgroundColor(int backgroundColor) {
method getIconBackgroundColor (line 1276) | int getIconBackgroundColor() {
method setIconBackgroundColor (line 1286) | public AchievementData setIconBackgroundColor(int iconBackgroundColo...
class ScrollTextView (line 1295) | @SuppressLint("AppCompatCustomView")
method ScrollTextView (line 1302) | public ScrollTextView(Context context) {
method ScrollTextView (line 1307) | public ScrollTextView(Context context, AttributeSet attrs) {
method ScrollTextView (line 1312) | public ScrollTextView(Context context, AttributeSet attrs, int defSt...
method init (line 1317) | private void init() {
method setVisibility (line 1322) | @Override
method setAlpha (line 1328) | @Override
method stopScrolling (line 1336) | public void stopScrolling() {
method startScrolling (line 1341) | public void startScrolling() {
method onDetachedFromWindow (line 1347) | @Override
method setDurations (line 1361) | public void setDurations(long scrollingDuration, long startOffset) {
method updateScroller (line 1371) | void updateScroller(int scrollAmount) {
class GradientDrawableWithColors (line 1392) | final static class GradientDrawableWithColors extends GradientDrawable {
method getGradientColor (line 1395) | int getGradientColor() {
method setColor (line 1399) | @Override
method setColors (line 1405) | @Override
class AchievementIconView (line 1416) | @SuppressLint("AppCompatCustomView")
method AchievementIconView (line 1418) | public AchievementIconView(Context context) {
method setDrawable (line 1422) | public void setDrawable(final Drawable drawable) {
method fadeDrawable (line 1456) | public void fadeDrawable(final Drawable drawable) {
type AchievementIconViewStates (line 1486) | public enum AchievementIconViewStates {
class DeceleratingInterpolator (line 1495) | final static class DeceleratingInterpolator implements TimeInterpolator {
method DeceleratingInterpolator (line 1500) | DeceleratingInterpolator(int base) {
method computeLog (line 1505) | private static float computeLog(float t, int base) {
method getInterpolation (line 1509) | @Override
class WindowOverlayCompat (line 1515) | final static class WindowOverlayCompat {
class SwipeDismissTouchListener (line 1521) | private class SwipeDismissTouchListener implements View.OnTouchListener {
method SwipeDismissTouchListener (line 1531) | SwipeDismissTouchListener() {
method onTouch (line 1561) | @SuppressLint("ClickableViewAccessibility")
class AchievementListenerAdapter (line 1644) | abstract class AchievementListenerAdapter implements AchievementListen...
method onAchievementDismissed (line 1645) | @Override
method onViewCreated (line 1649) | @Override
method onAchievementMorphed (line 1653) | @Override
FILE: app/src/main/java/knf/kuma/custom/PreferenceFragmentCompat.java
class PreferenceFragmentCompat (line 106) | @SuppressLint("RestrictedApi")
method run (line 126) | @Override
method handleMessage (line 137) | @Override
method onCreate (line 148) | @Override
method onCreatePreferences (line 181) | public abstract void onCreatePreferences(Bundle savedInstanceState, St...
method onCreateView (line 183) | @Override
method setDivider (line 236) | public void setDivider(Drawable divider) {
method setDividerHeight (line 247) | public void setDividerHeight(int height) {
method onViewCreated (line 251) | @Override
method onStart (line 273) | @Override
method onStop (line 280) | @Override
method onDestroyView (line 287) | @Override
method onSaveInstanceState (line 298) | @Override
method getPreferenceManager (line 314) | public PreferenceManager getPreferenceManager() {
method getPreferenceScreen (line 324) | public PreferenceScreen getPreferenceScreen() {
method setPreferenceScreen (line 333) | public void setPreferenceScreen(PreferenceScreen preferenceScreen) {
method addPreferencesFromResource (line 349) | public void addPreferencesFromResource(@XmlRes int preferencesResId) {
method setPreferencesFromResource (line 364) | public void setPreferencesFromResource(@XmlRes int preferencesResId, @...
method onPreferenceTreeClick (line 384) | @Override
method onNavigateToScreen (line 401) | @Override
method findPreference (line 414) | @Override
method requirePreferenceManager (line 422) | private void requirePreferenceManager() {
method postBindPreferences (line 428) | private void postBindPreferences() {
method bindPreferences (line 433) | @SuppressWarnings("WeakerAccess") /* synthetic access */
method unbindPreferences (line 447) | private void unbindPreferences() {
method onBindPreferences (line 458) | @RestrictTo(LIBRARY_GROUP)
method onUnbindPreferences (line 465) | @RestrictTo(LIBRARY_GROUP)
method getListView (line 469) | public final RecyclerView getListView() {
method onCreateRecyclerView (line 487) | @SuppressLint("RestrictedApi")
method onCreateLayoutManager (line 514) | public RecyclerView.LayoutManager onCreateLayoutManager() {
method onCreateAdapter (line 524) | protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen prefer...
method onDisplayPreferenceDialog (line 535) | @Override
method getCallbackFragment (line 572) | @RestrictTo(LIBRARY_GROUP)
method scrollToPreference (line 577) | public void scrollToPreference(final String key) {
method scrollToPreference (line 581) | public void scrollToPreference(final Preference preference) {
method scrollToPreferenceInternal (line 585) | private void scrollToPreferenceInternal(final Preference preference, f...
type OnPreferenceStartFragmentCallback (line 629) | public interface OnPreferenceStartFragmentCallback {
method onPreferenceStartFragment (line 640) | boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, P...
type OnPreferenceStartScreenCallback (line 648) | public interface OnPreferenceStartScreenCallback {
method onPreferenceStartScreen (line 657) | boolean onPreferenceStartScreen(PreferenceFragmentCompat caller, Pre...
type OnPreferenceDisplayDialogCallback (line 660) | public interface OnPreferenceDisplayDialogCallback {
method onPreferenceDisplayDialog (line 666) | boolean onPreferenceDisplayDialog(@NonNull PreferenceFragmentCompat ...
class ScrollToPreferenceObserver (line 670) | private static class ScrollToPreferenceObserver extends RecyclerView.A...
method ScrollToPreferenceObserver (line 676) | public ScrollToPreferenceObserver(RecyclerView.Adapter adapter, Recy...
method scrollToPreference (line 684) | private void scrollToPreference() {
method onChanged (line 699) | @Override
method onItemRangeChanged (line 704) | @Override
method onItemRangeChanged (line 709) | @Override
method onItemRangeInserted (line 714) | @Override
method onItemRangeRemoved (line 719) | @Override
method onItemRangeMoved (line 724) | @Override
class DividerDecoration (line 730) | private class DividerDecoration extends RecyclerView.ItemDecoration {
method DividerDecoration (line 735) | DividerDecoration() {
method onDrawOver (line 738) | @Override
method getItemOffsets (line 755) | @Override
method shouldDrawDividerBelow (line 763) | private boolean shouldDrawDividerBelow(View view, RecyclerView paren...
method setDivider (line 781) | public void setDivider(Drawable divider) {
method setDividerHeight (line 791) | public void setDividerHeight(int dividerHeight) {
method setAllowDividerAfterLastItem (line 796) | public void setAllowDividerAfterLastItem(boolean allowDividerAfterLa...
FILE: app/src/main/java/knf/kuma/custom/TlsOnlySocketFactory.java
class TlsOnlySocketFactory (line 57) | public class TlsOnlySocketFactory extends SSLSocketFactory {
method TlsOnlySocketFactory (line 70) | public TlsOnlySocketFactory() {
method TlsOnlySocketFactory (line 75) | public TlsOnlySocketFactory(SSLSocketFactory delegate) {
method TlsOnlySocketFactory (line 86) | public TlsOnlySocketFactory(SSLSocketFactory delegate, boolean compati...
method getDefaultCipherSuites (line 91) | @Override
method getSupportedCipherSuites (line 96) | @Override
method makeSocketSafe (line 104) | private Socket makeSocketSafe(Socket socket, String host) {
method createSocket (line 122) | @Override
method createSocket (line 128) | @Override
method createSocket (line 133) | @Override
method createSocket (line 139) | @Override
method createSocket (line 144) | @Override
class TlsOnlySSLSocket (line 151) | private class TlsOnlySSLSocket extends DelegateSSLSocket {
method TlsOnlySSLSocket (line 155) | private TlsOnlySSLSocket(SSLSocket delegate, boolean compatible) {
method setEnabledProtocols (line 211) | @Override
class DelegateSSLSocket (line 234) | public class DelegateSSLSocket extends SSLSocket {
method DelegateSSLSocket (line 238) | DelegateSSLSocket(SSLSocket delegate) {
method getSupportedCipherSuites (line 242) | @Override
method getEnabledCipherSuites (line 247) | @Override
method setEnabledCipherSuites (line 252) | @Override
method getSupportedProtocols (line 257) | @Override
method getEnabledProtocols (line 262) | @Override
method setEnabledProtocols (line 267) | @Override
method getSession (line 272) | @Override
method addHandshakeCompletedListener (line 277) | @Override
method removeHandshakeCompletedListener (line 282) | @Override
method startHandshake (line 287) | @Override
method getUseClientMode (line 292) | @Override
method setUseClientMode (line 297) | @Override
method getNeedClientAuth (line 302) | @Override
method setNeedClientAuth (line 307) | @Override
method getWantClientAuth (line 312) | @Override
method setWantClientAuth (line 317) | @Override
method getEnableSessionCreation (line 322) | @Override
method setEnableSessionCreation (line 327) | @Override
method bind (line 332) | @Override
method close (line 337) | @Override
method connect (line 342) | @Override
method connect (line 347) | @Override
method getChannel (line 352) | @Override
method getInetAddress (line 357) | @Override
method getInputStream (line 362) | @Override
method getKeepAlive (line 367) | @Override
method setKeepAlive (line 372) | @Override
method getLocalAddress (line 377) | @Override
method getLocalPort (line 382) | @Override
method getLocalSocketAddress (line 387) | @Override
method getOOBInline (line 392) | @Override
method setOOBInline (line 397) | @Override
method getOutputStream (line 402) | @Override
method getPort (line 407) | @Override
method getReceiveBufferSize (line 412) | @Override
method setReceiveBufferSize (line 417) | @Override
method getRemoteSocketAddress (line 422) | @Override
method getReuseAddress (line 427) | @Override
method setReuseAddress (line 432) | @Override
method getSendBufferSize (line 437) | @Override
method setSendBufferSize (line 442) | @Override
method getSoLinger (line 447) | @Override
method getSoTimeout (line 452) | @Override
method setSoTimeout (line 457) | @Override
method getTcpNoDelay (line 462) | @Override
method setTcpNoDelay (line 467) | @Override
method getTrafficClass (line 472) | @Override
method setTrafficClass (line 477) | @Override
method isBound (line 482) | @Override
method isClosed (line 487) | @Override
method isConnected (line 492) | @Override
method isInputShutdown (line 497) | @Override
method isOutputShutdown (line 502) | @Override
method sendUrgentData (line 507) | @Override
method setPerformancePreferences (line 512) | @Override
method setSoLinger (line 518) | @Override
method shutdownInput (line 523) | @Override
method shutdownOutput (line 528) | @Override
method setHostname (line 535) | public DelegateSSLSocket setHostname(String host) {
method toString (line 548) | @Override
method equals (line 553) | @Override
FILE: app/src/main/java/knf/kuma/database/CacheDBWrap.java
class CacheDBWrap (line 3) | public class CacheDBWrap {
FILE: app/src/main/java/knf/kuma/pojos/Anime.java
class Anime (line 5) | public class Anime {
FILE: app/src/main/java/knf/kuma/pojos/AnimeObject.java
class AnimeObject (line 49) | @Entity(indices = @Index(value = {"name", "link", "aid", "type", "state"...
method AnimeObject (line 94) | @Ignore
method AnimeObject (line 99) | public AnimeObject(int key, String link, String sid, String name, Stri...
method AnimeObject (line 112) | @Ignore
method AnimeObject (line 125) | @Ignore
method populate (line 134) | private void populate(WebInfo webInfo) {
method completeInfo (line 152) | private void completeInfo(List<Element> scripts) {
method findDataScript (line 166) | private Element findDataScript(List<Element> scripts) {
method extract (line 177) | private String extract(String link) {
method getType (line 181) | private String getType(String className) {
method getState (line 195) | private String getState(String className) {
method getFileName (line 206) | public String getFileName() {
method getGenresString (line 213) | public String getGenresString() {
method checkIntegrity (line 225) | public Boolean checkIntegrity() {
method hashCode (line 233) | @Override
method equals (line 238) | @Override
method compareTo (line 243) | @Override
type Day (line 248) | public enum Day {
method Day (line 259) | Day(int value) {
method fromValue (line 263) | public static Day fromValue(int value) {
class WebInfo (line 273) | public static class WebInfo {
class AnimeRelated (line 319) | @Keep
class AidGetter (line 334) | public static class AidGetter implements ElementConverter<String> {
method AidGetter (line 335) | @Keep
method convert (line 340) | @Override
class AnimeChapter (line 351) | @Entity
method AnimeChapter (line 377) | public AnimeChapter() {
method AnimeChapter (line 380) | public AnimeChapter(int key, String number, String eid, String lin...
method AnimeChapter (line 390) | @Ignore
method AnimeChapter (line 411) | @Ignore
method fileWrapper (line 424) | @NonNull
method fromData (line 431) | @Ignore
method fromRecent (line 436) | @Ignore
method fromDownloaded (line 441) | @Ignore
method create (line 446) | public static List<AnimeChapter> create(String name, String aid, L...
method create (line 458) | public static List<AnimeChapter> create(AnimeInfo info) {
method commentariesLink (line 475) | public String commentariesLink(String version) {
method compareTo (line 488) | @Override
method equals (line 495) | @Override
method hashCode (line 500) | @Override
method extract (line 505) | private String extract(String st, String regex) {
type ChapterType (line 511) | public enum ChapterType {
method ChapterType (line 518) | ChapterType(int value) {
class Converter (line 525) | public static class Converter {
method stringToList (line 527) | @TypeConverter
method listToString (line 532) | @TypeConverter
method stringToRelated (line 537) | @TypeConverter
method relatedToString (line 549) | @TypeConverter
method stringToChapters (line 557) | @TypeConverter
method chaptersToString (line 565) | @TypeConverter
method intToDay (line 577) | @TypeConverter
method dayToInt (line 582) | @TypeConverter
class DayConverter (line 591) | public static class DayConverter implements ElementConverter<Day> {
method DayConverter (line 592) | @Keep
method convert (line 596) | @Override
FILE: app/src/main/java/knf/kuma/pojos/DownloadObject.java
class DownloadObject (line 19) | @Entity
method DownloadObject (line 53) | public DownloadObject(int key, String eid, String file, String link, S...
method DownloadObject (line 73) | @Ignore
method fromRecent (line 92) | @NonNull
method fromRecentModel (line 97) | @NonNull
method fromChapter (line 102) | @NonNull
method isDownloading (line 107) | public boolean isDownloading() {
method isDownloadingOrPaused (line 111) | public boolean isDownloadingOrPaused() {
method getDid (line 115) | public int getDid() {
method setDid (line 120) | public void setDid(int did) {
method getEta (line 124) | public long getEta() {
method setEta (line 129) | public void setEta(long eta) {
method getSpeed (line 133) | private String getSpeed() {
method setSpeed (line 144) | public void setSpeed(long speed) {
method getTime (line 148) | public String getTime() {
method getSubtext (line 177) | public String getSubtext() {
method getSize (line 190) | public String getSize() {
method getDownloadServer (line 200) | public String getDownloadServer() {
method formatSize (line 207) | private String formatSize(long v) {
method hashCode (line 213) | @Override
method equals (line 218) | @Override
FILE: app/src/main/java/knf/kuma/pojos/ExplorerObject.java
class ExplorerObject (line 40) | @Entity
method ExplorerObject (line 62) | public ExplorerObject(int key, String img, String link, String fileNam...
method ExplorerObject (line 75) | @Ignore
method ExplorerObject (line 89) | @Ignore
method process (line 107) | private void process(Context context) {
method getLiveData (line 138) | @NonNull
method clearLiveData (line 146) | public void clearLiveData(LifecycleOwner owner) {
class FileDownObj (line 150) | public static class FileDownObj implements Comparable<FileDownObj> {
method FileDownObj (line 161) | FileDownObj(Context context, String title, String aid, String chapte...
method getTitles (line 174) | public static String[] getTitles(List<FileDownObj> list) {
method getUris (line 182) | public static Uri[] getUris(List<FileDownObj> list) {
method getChapTitle (line 190) | public String getChapTitle() {
method getChapPreviewLink (line 194) | public String getChapPreviewLink() {
method getTime (line 201) | private String getTime(Context context, SubFile file) {
method compareTo (line 230) | @Override
class Converter (line 238) | public static class Converter {
method StringToList (line 239) | @TypeConverter
method ListToString (line 245) | @TypeConverter
method UriToString (line 251) | @TypeConverter
method StringToUri (line 256) | @TypeConverter
FILE: app/src/main/java/knf/kuma/pojos/FakeAutoBackup.java
class FakeAutoBackup (line 3) | public class FakeAutoBackup extends AutoBackupObject {
FILE: app/src/main/java/knf/kuma/pojos/FavSection.java
class FavSection (line 5) | public class FavSection extends FavoriteObject {
method FavSection (line 6) | private FavSection(int key, String aid, String name, String img, Strin...
method FavSection (line 10) | private FavSection(AnimeObject object) {
method FavSection (line 14) | public FavSection(String name) {
FILE: app/src/main/java/knf/kuma/pojos/FavoriteObject.java
class FavoriteObject (line 16) | @Keep
method FavoriteObject (line 41) | @Ignore
method FavoriteObject (line 46) | public FavoriteObject(int key, String aid, String name, String img, St...
method FavoriteObject (line 56) | @Ignore
method FavoriteObject (line 69) | @Ignore
method getNames (line 82) | public static List<String> getNames(List<FavoriteObject> list) {
method getCategories (line 90) | public static List<String> getCategories(List<FavoriteObject> list) {
method getIndex (line 101) | public static Integer[] getIndex(List<FavoriteObject> list, String cat...
method setCategory (line 112) | public void setCategory(String category) {
method hashCode (line 119) | @Override
method equals (line 124) | @Override
method compareTo (line 129) | @Override
FILE: app/src/main/java/knf/kuma/pojos/GenreStatusObject.java
class GenreStatusObject (line 17) | @Keep
method GenreStatusObject (line 26) | public GenreStatusObject() {
method GenreStatusObject (line 32) | public GenreStatusObject(int key, String name, int count) {
method GenreStatusObject (line 38) | @Ignore
method names (line 45) | public static List<String> names(List<GenreStatusObject> list) {
method isBlocked (line 52) | public boolean isBlocked() {
method add (line 56) | public void add(int number) {
method sub (line 60) | public void sub(int number) {
method block (line 65) | public void block() {
method reset (line 69) | public void reset() {
method compareTo (line 73) | @Override
FILE: app/src/main/java/knf/kuma/pojos/NotificationObj.java
class NotificationObj (line 13) | @Entity
method NotificationObj (line 21) | public NotificationObj(int key, int type) {
method fromIntent (line 26) | @NonNull
method getBroadcast (line 31) | public Intent getBroadcast(Context context) {
method equals (line 35) | @Override
FILE: app/src/main/java/knf/kuma/pojos/QueueObject.java
class QueueObject (line 20) | @Keep
method QueueObject (line 35) | public QueueObject() {
method QueueObject (line 43) | public QueueObject(int id, boolean isFile, String uri, long time, Anim...
method QueueObject (line 51) | @Ignore
method uris (line 60) | public static Uri[] uris(List<QueueObject> list) {
method takeOne (line 67) | public static List<QueueObject> takeOne(List<QueueObject> list) {
method getTitles (line 80) | public static String[] getTitles(List<QueueObject> list) {
method createUri (line 87) | public Uri createUri() {
method title (line 91) | public String title() {
method hashCode (line 99) | @Override
method equals (line 104) | @Override
method equalsAnime (line 109) | public boolean equalsAnime(Object obj) {
FILE: app/src/main/java/knf/kuma/pojos/RecentObject.java
class RecentObject (line 22) | @Entity
method RecentObject (line 64) | @Ignore
method RecentObject (line 69) | public RecentObject(int key, WebInfo webInfo) {
method RecentObject (line 74) | private RecentObject(AnimeDAO dao, WebInfo webInfo) {
method create (line 79) | public static List<RecentObject> create(List<WebInfo> infos) {
method getFileName (line 92) | public String getFileName() {
method getFilePath (line 99) | public String getFilePath() {
method getEpTitle (line 106) | public String getEpTitle() {
method fileWrapper (line 110) | public FileWrapper fileWrapper() {
method equals (line 116) | @Override
method hashCode (line 123) | @Override
method populate (line 128) | private void populate(WebInfo webInfo) {
method populate (line 151) | private void populate(AnimeDAO dao, WebInfo webInfo) {
method isNotNumeric (line 160) | private boolean isNotNumeric(String number) {
class WebInfo (line 170) | public static class WebInfo {
FILE: app/src/main/java/knf/kuma/pojos/Recents.java
class Recents (line 7) | public class Recents {
FILE: app/src/main/java/knf/kuma/pojos/RecordObject.java
class RecordObject (line 14) | @Keep
method RecordObject (line 34) | public RecordObject(int key, String name, String chapter, String aid, ...
method RecordObject (line 44) | @Ignore
method fromRecent (line 48) | @Ignore
method fromRecentModel (line 60) | @Ignore
method fromDownloaded (line 72) | @Ignore
method fromChapter (line 84) | @Ignore
FILE: app/src/main/java/knf/kuma/pojos/SeeingObject.java
class SeeingObject (line 15) | @Keep
method areItemsTheSame (line 54) | @Override
method areContentsTheSame (line 59) | @Override
method SeeingObject (line 65) | public SeeingObject(int key, String img, String link, String aid, Stri...
method SeeingObject (line 76) | @Ignore
method fromAnime (line 80) | @Ignore
method fromAnime (line 92) | @Ignore
FILE: app/src/main/java/knf/kuma/widgets/AdTemplateView.java
class AdTemplateView (line 21) | public class AdTemplateView extends FrameLayout {
method AdTemplateView (line 32) | public AdTemplateView(Context context) {
method AdTemplateView (line 36) | public AdTemplateView(Context context, @Nullable AttributeSet attrs) {
method AdTemplateView (line 41) | public AdTemplateView(Context context, @Nullable AttributeSet attrs, i...
method AdTemplateView (line 46) | public AdTemplateView(Context context, AttributeSet attrs, int defStyl...
method setStyles (line 51) | public void setStyles(NativeTemplateStyle styles) {
method applyStyles (line 60) | private void applyStyles() {
method getTemplateTypeName (line 152) | public String getTemplateTypeName() {
method initView (line 156) | private void initView(Context context, AttributeSet attrs) {
method onFinishInflate (line 165) | @Override
FILE: app/src/main/java/knf/kuma/widgets/NativeTemplateStyle.java
class NativeTemplateStyle (line 9) | public class NativeTemplateStyle {
method getCallToActionTextTypeface (line 71) | public Typeface getCallToActionTextTypeface() {
method getCallToActionTextSize (line 75) | public float getCallToActionTextSize() {
method getCallToActionTypefaceColor (line 79) | public int getCallToActionTypefaceColor() {
method getCallToActionBackgroundColor (line 83) | public ColorDrawable getCallToActionBackgroundColor() {
method getPrimaryTextTypeface (line 87) | public Typeface getPrimaryTextTypeface() {
method getPrimaryTextSize (line 91) | public float getPrimaryTextSize() {
method getPrimaryTextTypefaceColor (line 95) | public int getPrimaryTextTypefaceColor() {
method getPrimaryTextBackgroundColor (line 99) | public ColorDrawable getPrimaryTextBackgroundColor() {
method getSecondaryTextTypeface (line 103) | public Typeface getSecondaryTextTypeface() {
method getSecondaryTextSize (line 107) | public float getSecondaryTextSize() {
method getSecondaryTextTypefaceColor (line 111) | public int getSecondaryTextTypefaceColor() {
method getSecondaryTextBackgroundColor (line 115) | public ColorDrawable getSecondaryTextBackgroundColor() {
method getTertiaryTextTypeface (line 119) | public Typeface getTertiaryTextTypeface() {
method getTertiaryTextSize (line 123) | public float getTertiaryTextSize() {
method getTertiaryTextTypefaceColor (line 127) | public int getTertiaryTextTypefaceColor() {
method getTertiaryTextBackgroundColor (line 131) | public ColorDrawable getTertiaryTextBackgroundColor() {
method getMainBackgroundColor (line 135) | public ColorDrawable getMainBackgroundColor() {
class Builder (line 142) | public static class Builder {
method Builder (line 146) | public Builder() {
method withCallToActionTextTypeface (line 150) | public Builder withCallToActionTextTypeface(Typeface callToActionTex...
method withCallToActionTextSize (line 155) | public Builder withCallToActionTextSize(float callToActionTextSize) {
method withCallToActionTypefaceColor (line 160) | public Builder withCallToActionTypefaceColor(int callToActionTypefac...
method withCallToActionBackgroundColor (line 165) | public Builder withCallToActionBackgroundColor(ColorDrawable callToA...
method withPrimaryTextTypeface (line 170) | public Builder withPrimaryTextTypeface(Typeface primaryTextTypeface) {
method withPrimaryTextSize (line 175) | public Builder withPrimaryTextSize(float primaryTextSize) {
method withPrimaryTextTypefaceColor (line 180) | public Builder withPrimaryTextTypefaceColor(int primaryTextTypefaceC...
method withPrimaryTextBackgroundColor (line 185) | public Builder withPrimaryTextBackgroundColor(ColorDrawable primaryT...
method withSecondaryTextTypeface (line 190) | public Builder withSecondaryTextTypeface(Typeface secondaryTextTypef...
method withSecondaryTextSize (line 195) | public Builder withSecondaryTextSize(float secondaryTextSize) {
method withSecondaryTextTypefaceColor (line 200) | public Builder withSecondaryTextTypefaceColor(int secondaryTextTypef...
method withSecondaryTextBackgroundColor (line 205) | public Builder withSecondaryTextBackgroundColor(ColorDrawable second...
method withTertiaryTextTypeface (line 210) | public Builder withTertiaryTextTypeface(Typeface tertiaryTextTypefac...
method withTertiaryTextSize (line 215) | public Builder withTertiaryTextSize(float tertiaryTextSize) {
method withTertiaryTextTypefaceColor (line 220) | public Builder withTertiaryTextTypefaceColor(int tertiaryTextTypefac...
method withTertiaryTextBackgroundColor (line 225) | public Builder withTertiaryTextBackgroundColor(ColorDrawable tertiar...
method withMainBackgroundColor (line 230) | public Builder withMainBackgroundColor(ColorDrawable mainBackgroundC...
method build (line 235) | public NativeTemplateStyle build() {
FILE: persistentsearchview/src/androidTest/java/org/cryse/widget/persistentsearch/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: persistentsearchview/src/main/java/androidx/appcompat/graphics/drawable/SupportDrawerArrowDrawable.java
class SupportDrawerArrowDrawable (line 5) | public class SupportDrawerArrowDrawable extends DrawerArrowDrawable {
method SupportDrawerArrowDrawable (line 7) | public SupportDrawerArrowDrawable(Context themedContext) {
method setPosition (line 11) | public void setPosition(float position) {
method getPosition (line 20) | public float getPosition() {
FILE: persistentsearchview/src/main/java/io/codetail/animation/RevealAnimator.java
type RevealAnimator (line 17) | public interface RevealAnimator{
method onRevealAnimationStart (line 25) | void onRevealAnimationStart();
method onRevealAnimationEnd (line 26) | void onRevealAnimationEnd();
method onRevealAnimationCancel (line 27) | void onRevealAnimationCancel();
method setRevealRadius (line 34) | void setRevealRadius(float value);
method getRevealRadius (line 41) | float getRevealRadius();
method invalidate (line 49) | void invalidate(Rect bounds);
method attachRevealInfo (line 60) | void attachRevealInfo(RevealInfo info);
method startReverseAnimation (line 74) | SupportAnimator startReverseAnimation();
class RevealInfo (line 76) | class RevealInfo{
method RevealInfo (line 83) | public RevealInfo(int centerX, int centerY, float startRadius, float...
method getTarget (line 92) | public View getTarget(){
method hasTarget (line 96) | public boolean hasTarget(){
class RevealFinishedGingerbread (line 101) | class RevealFinishedGingerbread extends SimpleAnimationListener {
method RevealFinishedGingerbread (line 104) | RevealFinishedGingerbread(RevealAnimator target) {
method onAnimationStart (line 108) | @Override
method onAnimationCancel (line 114) | @Override
method onAnimationEnd (line 120) | @Override
class RevealFinishedIceCreamSandwich (line 127) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
method RevealFinishedIceCreamSandwich (line 132) | RevealFinishedIceCreamSandwich(RevealAnimator target) {
method onAnimationCancel (line 139) | @Override
method onAnimationStart (line 145) | @Override
method onAnimationEnd (line 151) | @Override
class RevealFinishedJellyBeanMr2 (line 158) | class RevealFinishedJellyBeanMr2 extends RevealFinishedIceCreamSandwich {
method RevealFinishedJellyBeanMr2 (line 160) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
class RevealRadius (line 168) | class RevealRadius extends Property<RevealAnimator, Float> {
method RevealRadius (line 170) | public RevealRadius() {
method set (line 174) | @Override
method get (line 179) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/animation/SupportAnimator.java
class SupportAnimator (line 7) | public abstract class SupportAnimator {
method SupportAnimator (line 11) | public SupportAnimator(RevealAnimator target) {
method isNativeAnimator (line 19) | public abstract boolean isNativeAnimator();
method get (line 26) | public abstract Object get();
method start (line 42) | public abstract void start();
method setDuration (line 49) | public abstract void setDuration(int duration);
method setInterpolator (line 59) | public abstract void setInterpolator(Interpolator value);
method addListener (line 68) | public abstract void addListener(AnimatorListener listener);
method isRunning (line 77) | public abstract boolean isRunning();
method cancel (line 89) | public abstract void cancel();
method end (line 99) | public void end() {
method setupStartValues (line 111) | public void setupStartValues() {
method setupEndValues (line 123) | public void setupEndValues() {
method reverse (line 129) | public SupportAnimator reverse() {
type AnimatorListener (line 147) | public interface AnimatorListener {
method onAnimationStart (line 151) | void onAnimationStart();
method onAnimationEnd (line 157) | void onAnimationEnd();
method onAnimationCancel (line 163) | void onAnimationCancel();
method onAnimationRepeat (line 168) | void onAnimationRepeat();
class SimpleAnimatorListener (line 174) | public static abstract class SimpleAnimatorListener implements Animato...
method onAnimationStart (line 176) | @Override
method onAnimationEnd (line 181) | @Override
method onAnimationCancel (line 186) | @Override
method onAnimationRepeat (line 191) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/animation/SupportAnimatorLollipop.java
class SupportAnimatorLollipop (line 10) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
method SupportAnimatorLollipop (line 15) | SupportAnimatorLollipop(Animator animator, RevealAnimator target) {
method isNativeAnimator (line 20) | @Override
method get (line 25) | @Override
method start (line 31) | @Override
method setDuration (line 39) | @Override
method setInterpolator (line 47) | @Override
method addListener (line 55) | @Override
method isRunning (line 90) | @Override
method cancel (line 96) | @Override
method end (line 104) | @Override
method setupStartValues (line 112) | @Override
method setupEndValues (line 120) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/animation/SupportAnimatorPreL.java
class SupportAnimatorPreL (line 8) | final class SupportAnimatorPreL extends SupportAnimator {
method SupportAnimatorPreL (line 12) | SupportAnimatorPreL(Animator animator, RevealAnimator target) {
method isNativeAnimator (line 17) | @Override
method get (line 22) | @Override
method start (line 27) | @Override
method setDuration (line 35) | @Override
method setInterpolator (line 43) | @Override
method addListener (line 51) | @Override
method isRunning (line 86) | @Override
method cancel (line 92) | @Override
method end (line 100) | @Override
method setupStartValues (line 108) | @Override
method setupEndValues (line 116) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/animation/ViewAnimationUtils.java
class ViewAnimationUtils (line 18) | public class ViewAnimationUtils {
method createCircularReveal (line 42) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method getRevealFinishListener (line 67) | private static Animator.AnimatorListener getRevealFinishListener(Revea...
method liftingFromBottom (line 86) | @Deprecated
method liftingFromBottom (line 110) | @Deprecated
method liftingFromBottom (line 133) | @Deprecated
class SimpleAnimationListener (line 148) | static class SimpleAnimationListener implements Animator.AnimatorListe...
method onAnimationStart (line 150) | @Override
method onAnimationEnd (line 155) | @Override
method onAnimationCancel (line 160) | @Override
method onAnimationRepeat (line 165) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/widget/RevealFrameLayout.java
class RevealFrameLayout (line 15) | public class RevealFrameLayout extends FrameLayout implements RevealAnim...
method RevealFrameLayout (line 23) | public RevealFrameLayout(Context context) {
method RevealFrameLayout (line 27) | public RevealFrameLayout(Context context, AttributeSet attrs) {
method RevealFrameLayout (line 31) | public RevealFrameLayout(Context context, AttributeSet attrs, int defS...
method onRevealAnimationStart (line 36) | @Override
method onRevealAnimationEnd (line 41) | @Override
method onRevealAnimationCancel (line 47) | @Override
method setRevealRadius (line 57) | @Override
method getRevealRadius (line 69) | @Override
method attachRevealInfo (line 77) | @Override
method startReverseAnimation (line 85) | @Override
method drawChild (line 95) | @Override
FILE: persistentsearchview/src/main/java/io/codetail/widget/RevealLinearLayout.java
class RevealLinearLayout (line 15) | public class RevealLinearLayout extends LinearLayout implements RevealAn...
method RevealLinearLayout (line 23) | public RevealLinearLayout(Context context) {
method RevealLinearLayout (line 27) | public RevealLinearLayout(Context context, AttributeSet attrs) {
method RevealLinearLayout (line 31) | public RevealLinearLayout(Context context, AttributeSet attrs, int def...
method onRevealAnimationStart (line 36) | @Override
method onRevealAnimationEnd (line 41) | @Override
method onRevealAnimationCancel (line 47) | @Override
method setRevealRadius (line 57) | @Override
method getRevealRadius (line 69) | @Override
method attachRevealInfo (line 77) | @Override
method startReverseAnimation (line 85) | @Override
method drawChild (line 95) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/DefaultVoiceRecognizerDelegate.java
class DefaultVoiceRecognizerDelegate (line 13) | public class DefaultVoiceRecognizerDelegate extends VoiceRecognitionDele...
method DefaultVoiceRecognizerDelegate (line 15) | public DefaultVoiceRecognizerDelegate(Activity activity) {
method DefaultVoiceRecognizerDelegate (line 19) | public DefaultVoiceRecognizerDelegate(Activity activity, int activityR...
method DefaultVoiceRecognizerDelegate (line 23) | public DefaultVoiceRecognizerDelegate(Fragment supportFragment) {
method DefaultVoiceRecognizerDelegate (line 27) | public DefaultVoiceRecognizerDelegate(Fragment supportFragment, int ac...
method buildVoiceRecognitionIntent (line 31) | @Override
method isVoiceRecognitionAvailable (line 41) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/HomeButton.java
class HomeButton (line 16) | public class HomeButton extends ImageView {
type IconState (line 17) | public enum IconState {
method toDrawablePosition (line 19) | public int toDrawablePosition() {
method HomeButton (line 35) | public HomeButton(Context context) {
method HomeButton (line 40) | public HomeButton(Context context, AttributeSet attrs) {
method HomeButton (line 45) | public HomeButton(Context context, AttributeSet attrs, int defStyleAtt...
method HomeButton (line 50) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method setArrowDrawableColor (line 56) | public void setArrowDrawableColor(int color) {
method init (line 61) | private void init() {
method setState (line 68) | public void setState(IconState state) {
method animateState (line 73) | public void animateState(IconState state) {
method setAnimationDuration (line 85) | public void setAnimationDuration(long animationDuration) {
class ArrowDrawablePositionProperty (line 89) | static class ArrowDrawablePositionProperty extends Property<SupportDra...
method ArrowDrawablePositionProperty (line 91) | public ArrowDrawablePositionProperty() {
method set (line 95) | @Override
method get (line 100) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/LogoView.java
class LogoView (line 13) | public class LogoView extends AppCompatTextView {
method LogoView (line 16) | public LogoView(Context context) {
method LogoView (line 20) | public LogoView(Context context, AttributeSet attrs) {
method LogoView (line 24) | public LogoView(Context context, AttributeSet attrs, int defStyleAttr) {
method setLogo (line 28) | public void setLogo(String logoText) {
method setLogo (line 32) | public void setLogo(@DrawableRes int drawableRes) {
method setLogo (line 36) | public void setLogo(Drawable drawable) {
method onDraw (line 42) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/PersistentSearchView.java
class PersistentSearchView (line 46) | @SuppressWarnings("unused")
method PersistentSearchView (line 94) | public PersistentSearchView(Context context) {
method PersistentSearchView (line 98) | public PersistentSearchView(Context context, AttributeSet attrs) {
method PersistentSearchView (line 103) | public PersistentSearchView(Context context, AttributeSet attrs, int d...
method setCustomKeyboardView (line 108) | public void setCustomKeyboardView(KeyboardView customKeyboardView)
method enableCustomKeyboardView (line 113) | public void enableCustomKeyboardView(boolean enable)
method calculateVerticalPadding (line 118) | static float calculateVerticalPadding(CardView cardView) {
method calculateHorizontalPadding (line 130) | static float calculateHorizontalPadding(CardView cardView) {
method calculateToolbarSize (line 142) | static int calculateToolbarSize(Context context) {
method init (line 162) | private void init(AttributeSet attrs) {
method getSearchSuggestions (line 225) | public ArrayList<SearchItem> getSearchSuggestions() {
method bindViews (line 229) | private void bindViews() {
method setValuesToViews (line 238) | private void setValuesToViews() {
method setUpListeners (line 257) | private void setUpListeners() {
method getSearchEditText (line 342) | public EditText getSearchEditText() {
method setUpLayoutTransition (line 346) | private void setUpLayoutTransition() {
method onMeasure (line 357) | @Override
method onLayout (line 391) | @Override
method revealFromMenuItem (line 419) | private void revealFromMenuItem() {
method hideCircularlyToMenuItem (line 424) | private void hideCircularlyToMenuItem() {
method hideCircularly (line 435) | private void hideCircularly(int x, int y) {
method hideCircularly (line 475) | private void hideCircularly() {
method getSearchOpen (line 479) | public boolean getSearchOpen() {
method hideSuggestions (line 486) | public void hideSuggestions() {
method isMicEnabled (line 491) | private boolean isMicEnabled() {
method micStateChanged (line 495) | private void micStateChanged() {
method micStateChanged (line 499) | private void micStateChanged(boolean isMic) {
method showMicButton (line 504) | private void showMicButton() {
method showClearButton (line 510) | private void showClearButton() {
method micClick (line 519) | public void micClick() {
method populateEditText (line 533) | public void populateEditText(ArrayList<String> matches) {
method populateEditText (line 543) | public void populateEditText(String query) {
method setHomeButtonVisibility (line 555) | public void setHomeButtonVisibility(int visibility) {
method setHomeButtonListener (line 564) | public void setHomeButtonListener(HomeButtonListener homeButtonListene...
method setSearchListener (line 573) | public void setSearchListener(SearchListener listener) {
method setLogoTextColor (line 582) | public void setLogoTextColor(int color) {
method getSearchText (line 591) | public String getSearchText() {
method clearSuggestions (line 595) | public void clearSuggestions() {
method setSearchString (line 605) | public void setSearchString(String text, boolean avoidTriggerTextWatch...
method buildEmptySearchSuggestions (line 613) | private void buildEmptySearchSuggestions() {
method buildSearchSuggestions (line 624) | private void buildSearchSuggestions(String query) {
method revealFrom (line 635) | private void revealFrom(float x, float y, int desireRevealWidth) {
method search (line 684) | private void search() {
method openSearchInternal (line 693) | private void openSearchInternal(Boolean openKeyboard) {
method closeSearchInternal (line 776) | private void closeSearchInternal() {
method hideKeyboard (line 793) | private void hideKeyboard() {
method isEditing (line 803) | public boolean isEditing() {
method isSearching (line 807) | public boolean isSearching() {
method setLogoTextInt (line 811) | private void setLogoTextInt(String text) {
method setHomeButtonOpenIconState (line 815) | public void setHomeButtonOpenIconState(HomeButton.IconState homeButton...
method setHomeButtonCloseIconState (line 819) | public void setHomeButtonCloseIconState(HomeButton.IconState homeButto...
method setSuggestionBuilder (line 823) | public void setSuggestionBuilder(SearchSuggestionsBuilder suggestionBu...
method fromNormalToEditing (line 827) | private void fromNormalToEditing() {
method fromNormalToSearch (line 849) | private void fromNormalToSearch() {
method fromSearchToNormal (line 860) | private void fromSearchToNormal() {
method fromSearchToEditing (line 875) | private void fromSearchToEditing() {
method fromEditingToNormal (line 881) | private void fromEditingToNormal() {
method fromEditingToSearch (line 896) | private void fromEditingToSearch() {
method fromEditingToSearch (line 900) | private void fromEditingToSearch(boolean avoidSearch) {
method fromEditingToSearch (line 904) | private void fromEditingToSearch(boolean forceSearch, boolean avoidSea...
method dispatchStateChange (line 917) | private void dispatchStateChange(SearchViewState targetState) {
method setCurrentState (line 939) | private void setCurrentState(SearchViewState state) {
method openSearch (line 944) | public void openSearch() {
method setStartPositionFromMenuItem (line 948) | public void setStartPositionFromMenuItem(View menuItemView) {
method setStartPositionFromMenuItem (line 954) | public void setStartPositionFromMenuItem(View menuItemView, int desire...
method openSearch (line 965) | public void openSearch(String query) {
method closeSearch (line 970) | public void closeSearch() {
method cancelEditing (line 974) | public void cancelEditing() {
method setVoiceRecognitionDelegate (line 982) | public void setVoiceRecognitionDelegate(VoiceRecognitionDelegate deleg...
type DisplayMode (line 987) | public enum DisplayMode {
method DisplayMode (line 991) | DisplayMode(int mode) {
method fromInt (line 995) | public static DisplayMode fromInt(int mode) {
method toInt (line 1002) | public int toInt() {
type SearchViewState (line 1007) | public enum SearchViewState {
method SearchViewState (line 1010) | SearchViewState(int state) {
method fromInt (line 1013) | public static SearchViewState fromInt(int state) {
method toInt (line 1020) | public int toInt() {
type SearchListener (line 1025) | public interface SearchListener {
method onSuggestion (line 1030) | boolean onSuggestion(SearchItem searchItem);
method onSearchCleared (line 1035) | void onSearchCleared();
method onSearchTermChanged (line 1040) | void onSearchTermChanged(String term);
method onSearch (line 1047) | void onSearch(String query);
method onSearchEditOpened (line 1052) | void onSearchEditOpened();
method onSearchEditClosed (line 1057) | void onSearchEditClosed();
method onSearchEditBackPressed (line 1062) | boolean onSearchEditBackPressed();
method onSearchExit (line 1067) | void onSearchExit();
type HomeButtonListener (line 1070) | public interface HomeButtonListener {
method onHomeButtonClick (line 1074) | void onHomeButtonClick();
method onSaveInstanceState (line 1077) | @Override
method onRestoreInstanceState (line 1088) | @Override
method dispatchSaveInstanceState (line 1104) | @Override
method dispatchRestoreInstanceState (line 1109) | @Override
class SavedState (line 1114) | static class SavedState extends BaseSavedState {
method SavedState (line 1118) | SavedState(Parcelable superState, SearchViewState currentSearchViewS...
method SavedState (line 1123) | private SavedState(Parcel in, ClassLoader classLoader) {
method writeToParcel (line 1129) | @Override
method getCurrentSearchViewState (line 1136) | public SearchViewState getCurrentSearchViewState() {
method createFromParcel (line 1142) | @Override
method createFromParcel (line 1147) | @Override
method newArray (line 1152) | public SavedState[] newArray(int size) {
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/RevealViewGroup.java
class RevealViewGroup (line 15) | public abstract class RevealViewGroup extends ViewGroup implements Revea...
method RevealViewGroup (line 23) | public RevealViewGroup(Context context) {
method RevealViewGroup (line 27) | public RevealViewGroup(Context context, AttributeSet attrs) {
method RevealViewGroup (line 31) | public RevealViewGroup(Context context, AttributeSet attrs, int defSty...
method onRevealAnimationStart (line 36) | @Override
method onRevealAnimationEnd (line 41) | @Override
method onRevealAnimationCancel (line 47) | @Override
method setRevealRadius (line 57) | @Override
method getRevealRadius (line 69) | @Override
method attachRevealInfo (line 77) | @Override
method startReverseAnimation (line 85) | @Override
method drawChild (line 95) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/SearchItem.java
class SearchItem (line 5) | public class SearchItem {
method SearchItem (line 17) | public SearchItem(String title, String value) {
method SearchItem (line 26) | public SearchItem(String title, String value, int type) {
method SearchItem (line 30) | public SearchItem(String title, String value, int type, Drawable icon) {
method toString (line 40) | @Override
method getTitle (line 45) | public String getTitle() {
method setTitle (line 49) | public void setTitle(String title) {
method getValue (line 53) | public String getValue() {
method setValue (line 57) | public void setValue(String value) {
method getIcon (line 61) | public Drawable getIcon() {
method setIcon (line 65) | public void setIcon(Drawable icon) {
method getType (line 69) | public int getType() {
method setType (line 73) | public void setType(int type) {
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/SearchItemAdapter.java
class SearchItemAdapter (line 13) | public class SearchItemAdapter extends ArrayAdapter<SearchItem> {
method SearchItemAdapter (line 15) | public SearchItemAdapter(Context context, ArrayList<SearchItem> option...
method getView (line 19) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/SearchSuggestionsBuilder.java
type SearchSuggestionsBuilder (line 5) | public interface SearchSuggestionsBuilder {
method buildEmptySearchSuggestion (line 6) | Collection<SearchItem> buildEmptySearchSuggestion(int maxCount);
method buildSearchSuggestion (line 7) | Collection<SearchItem> buildSearchSuggestion(int maxCount, String query);
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/SimpleSearchListener.java
class SimpleSearchListener (line 3) | public class SimpleSearchListener implements PersistentSearchView.Search...
method onSuggestion (line 5) | @Override
method onSearchCleared (line 10) | @Override
method onSearchTermChanged (line 15) | @Override
method onSearch (line 20) | @Override
method onSearchEditOpened (line 25) | @Override
method onSearchEditClosed (line 30) | @Override
method onSearchEditBackPressed (line 35) | @Override
method onSearchExit (line 40) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/TextDrawable.java
class TextDrawable (line 13) | public class TextDrawable extends Drawable {
method TextDrawable (line 21) | public TextDrawable(Resources resources, String text) {
method draw (line 43) | @Override
method getIntrinsicWidth (line 54) | @Override
method getIntrinsicHeight (line 58) | @Override
method setAlpha (line 63) | @Override
method setColorFilter (line 68) | @Override
method getOpacity (line 73) | @Override
FILE: persistentsearchview/src/main/java/org/cryse/widget/persistentsearch/VoiceRecognitionDelegate.java
class VoiceRecognitionDelegate (line 9) | public abstract class VoiceRecognitionDelegate {
method VoiceRecognitionDelegate (line 15) | public VoiceRecognitionDelegate(Activity activity) {
method VoiceRecognitionDelegate (line 19) | public VoiceRecognitionDelegate(Activity activity, int activityRequest...
method VoiceRecognitionDelegate (line 24) | public VoiceRecognitionDelegate(Fragment supportFragment) {
method VoiceRecognitionDelegate (line 28) | public VoiceRecognitionDelegate(Fragment supportFragment, int activity...
method onStartVoiceRecognition (line 33) | public void onStartVoiceRecognition() {
method getContext (line 43) | protected Context getContext() {
method buildVoiceRecognitionIntent (line 53) | public abstract Intent buildVoiceRecognitionIntent();
method isVoiceRecognitionAvailable (line 55) | public abstract boolean isVoiceRecognitionAvailable();
Condensed preview — 1147 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,720K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 296,
"preview": "# These are supported funding model platforms\n\ngithub: [jordyamc]\npatreon: animeflvapp\nopen_collective: # Replace with a"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 658,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".gitignore",
"chars": 334,
"preview": "*.iml\n.gradle\nlocal.properties\n.idea/workspace.xml\n.idea/libraries\n.DS_Store\nbuild\ncaptures\n.externalNativeBuild\napp/goo"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3338,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "LICENSE",
"chars": 1087,
"preview": "MIT License\n\nCopyright (c) 2018 Jordy Alexis Mendoza Caballero\n\nPermission is hereby granted, free of charge, to any per"
},
{
"path": "README.md",
"chars": 1811,
"preview": "\n\n[ : AnimeO"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdCallback.kt",
"chars": 74,
"preview": "package knf.kuma.ads\r\n\r\ninterface AdCallback {\r\n fun getID(): String\r\n}"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdCardItemHolder.kt",
"chars": 1306,
"preview": "package knf.kuma.ads\r\n\r\nimport android.view.LayoutInflater\r\nimport android.view.ViewGroup\r\nimport androidx.annotation.La"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdFavoriteObject.kt",
"chars": 217,
"preview": "package knf.kuma.ads\r\n\r\nimport knf.kuma.pojos.FavoriteObject\r\n\r\ndata class AdFavoriteObject(private val adID: String) : "
},
{
"path": "app/src/main/java/knf/kuma/ads/AdRecentObject.kt",
"chars": 211,
"preview": "package knf.kuma.ads\r\n\r\nimport knf.kuma.pojos.RecentObject\r\n\r\ndata class AdRecentObject(private val adID: String) : Rece"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdsUtils.kt",
"chars": 12895,
"preview": "package knf.kuma.ads\r\n\r\nimport android.app.Activity\r\nimport android.util.Log\r\nimport android.view.ViewGroup\r\nimport andr"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdsUtilsBrains.kt",
"chars": 8569,
"preview": "package knf.kuma.ads\r\n\r\n//import com.appbrain.*\r\nimport android.content.Context\r\nimport android.view.ViewGroup\r\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdsUtilsLovin.kt",
"chars": 12290,
"preview": "package knf.kuma.ads\r\n\r\nimport android.app.Activity\r\nimport android.view.ViewGroup\r\nimport android.widget.FrameLayout\r\ni"
},
{
"path": "app/src/main/java/knf/kuma/ads/AdsUtilsMob.kt",
"chars": 20226,
"preview": "package knf.kuma.ads\r\n\r\n/*import com.google.android.gms.ads.AdListener\r\nimport com.google.android.gms.ads.AdRequest\r\nimp"
},
{
"path": "app/src/main/java/knf/kuma/ads/NativeManager.kt",
"chars": 3923,
"preview": "package knf.kuma.ads\r\n\r\n/*import com.google.android.gms.ads.AdListener\r\nimport com.google.android.gms.ads.AdLoader\r\nimpo"
},
{
"path": "app/src/main/java/knf/kuma/ads/SubscriptionReceiver.kt",
"chars": 1796,
"preview": "package knf.kuma.ads\r\n\r\nimport android.content.Intent\r\nimport knf.kuma.App\r\nimport knf.kuma.backup.firestore.FirestoreMa"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/ActivityAnime.kt",
"chars": 21130,
"preview": "package knf.kuma.animeinfo\n\nimport androidx.activity.addCallback\nimport android.app.Activity\nimport android.content.Acti"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/ActivityAnimeMaterial.kt",
"chars": 25641,
"preview": "package knf.kuma.animeinfo\n\nimport androidx.activity.addCallback\nimport android.app.Activity\nimport android.content.Acti"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeBroadcast.kt",
"chars": 474,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.conte"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeChaptersAdapter.kt",
"chars": 29977,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.ActivityNotFoundException\nimport android.content.Context\nimport andro"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeChaptersAdapterMaterial.kt",
"chars": 29244,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.Context\nimport android.content.Intent\nimport android.content.pm.Activ"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeInfo.kt",
"chars": 1874,
"preview": "package knf.kuma.animeinfo\n\nimport knf.kuma.commons.PatternUtil\nimport knf.kuma.pojos.AnimeObject\nimport java.text.Simpl"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimePagerAdapter.kt",
"chars": 972,
"preview": "package knf.kuma.animeinfo\n\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.FragmentManager\nimport an"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimePagerAdapterMaterial.kt",
"chars": 1069,
"preview": "package knf.kuma.animeinfo\n\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.FragmentManager\nimport an"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeRelatedAdapter.kt",
"chars": 1940,
"preview": "package knf.kuma.animeinfo\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nim"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeRelatedAdapterMaterial.kt",
"chars": 1972,
"preview": "package knf.kuma.animeinfo\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nim"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeTagsAdapter.kt",
"chars": 1105,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.Context\nimport android.view.LayoutInflater\nimport android.view.View\ni"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeTagsAdapterMaterial.kt",
"chars": 1137,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.Context\nimport android.view.LayoutInflater\nimport android.view.View\ni"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/AnimeViewModel.kt",
"chars": 1600,
"preview": "package knf.kuma.animeinfo\n\nimport android.content.Context\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lif"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/BottomActionsDialog.kt",
"chars": 4287,
"preview": "package knf.kuma.animeinfo\n\nimport android.app.Dialog\nimport android.content.DialogInterface\nimport android.os.Bundle\nim"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/ChapterObjWrap.kt",
"chars": 260,
"preview": "package knf.kuma.animeinfo\r\n\r\nimport knf.kuma.database.CacheDB\r\nimport knf.kuma.pojos.AnimeObject\r\n\r\nclass ChapterObjWra"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/CommentariesDialog.kt",
"chars": 3204,
"preview": "package knf.kuma.animeinfo\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android.view.LayoutIn"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/DownloadedObserver.kt",
"chars": 1071,
"preview": "package knf.kuma.animeinfo\r\n\r\nimport knf.kuma.achievements.AchievementManager\r\nimport knf.kuma.commons.FileWrapper\r\nimpo"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/fragments/ChaptersFragment.kt",
"chars": 11574,
"preview": "package knf.kuma.animeinfo.fragments\n\nimport android.app.Activity\nimport android.content.Intent\nimport android.net.Uri\ni"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/fragments/ChaptersFragmentMaterial.kt",
"chars": 11442,
"preview": "package knf.kuma.animeinfo.fragments\n\nimport android.app.Activity\nimport android.content.Intent\nimport android.net.Uri\ni"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/fragments/DetailsFragment.kt",
"chars": 1361,
"preview": "package knf.kuma.animeinfo.fragments\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.Vi"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/fragments/DetailsFragmentMaterial.kt",
"chars": 1426,
"preview": "package knf.kuma.animeinfo.fragments\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.Vi"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/img/ActivityImgFull.kt",
"chars": 4463,
"preview": "package knf.kuma.animeinfo.img\n\nimport androidx.activity.addCallback\nimport android.os.Bundle\nimport android.view.ViewGr"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/img/ImgFullFragment.kt",
"chars": 5425,
"preview": "package knf.kuma.animeinfo.img\r\n\r\nimport android.content.Intent\r\nimport android.graphics.Bitmap\r\nimport android.net.Uri\r"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/img/ImgPagerAdapter.kt",
"chars": 452,
"preview": "package knf.kuma.animeinfo.img\r\n\r\nimport androidx.fragment.app.Fragment\r\nimport androidx.fragment.app.FragmentManager\r\ni"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/ktx/Extensions.kt",
"chars": 734,
"preview": "package knf.kuma.animeinfo.ktx\r\n\r\nimport knf.kuma.commons.PatternUtil\r\nimport knf.kuma.commons.PrefsUtil\r\nimport knf.kum"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeActivityHolder.kt",
"chars": 4578,
"preview": "package knf.kuma.animeinfo.viewholders\n\nimport android.content.Intent\nimport android.graphics.drawable.Drawable\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeActivityMaterialHolder.kt",
"chars": 4610,
"preview": "package knf.kuma.animeinfo.viewholders\n\nimport android.content.Intent\nimport android.graphics.drawable.Drawable\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeChaptersHolder.kt",
"chars": 15832,
"preview": "package knf.kuma.animeinfo.viewholders\n\nimport android.net.Uri\nimport android.view.View\nimport androidx.fragment.app.Fra"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeChaptersMaterialHolder.kt",
"chars": 15856,
"preview": "package knf.kuma.animeinfo.viewholders\n\nimport android.net.Uri\nimport android.view.View\nimport androidx.fragment.app.Fra"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeDetailsHolder.kt",
"chars": 9225,
"preview": "package knf.kuma.animeinfo.viewholders\n\nimport android.annotation.SuppressLint\nimport android.content.ClipData\nimport an"
},
{
"path": "app/src/main/java/knf/kuma/animeinfo/viewholders/AnimeDetailsMaterialHolder.kt",
"chars": 9059,
"preview": "package knf.kuma.animeinfo.viewholders\n\n//import knf.kuma.ads.NativeManager\nimport android.annotation.SuppressLint\nimpor"
},
{
"path": "app/src/main/java/knf/kuma/backup/BackUpActivity.kt",
"chars": 11865,
"preview": "package knf.kuma.backup\n\nimport android.animation.Animator\nimport android.content.Context\nimport android.content.Intent\n"
},
{
"path": "app/src/main/java/knf/kuma/backup/Backups.kt",
"chars": 9203,
"preview": "package knf.kuma.backup\r\n\r\nimport android.content.Context\r\nimport android.view.View\r\nimport androidx.preference.Preferen"
},
{
"path": "app/src/main/java/knf/kuma/backup/MigrationActivity.kt",
"chars": 1511,
"preview": "package knf.kuma.backup\n\nimport android.content.Context\nimport android.content.Intent\nimport android.os.Bundle\nimport an"
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/FirestoreManager.kt",
"chars": 29652,
"preview": "package knf.kuma.backup.firestore\r\n\r\nimport android.app.Activity\r\nimport android.content.Context\r\nimport android.content"
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/QueueManager.kt",
"chars": 1087,
"preview": "package knf.kuma.backup.firestore\r\n\r\nimport knf.kuma.commons.noCrash\r\nimport kotlinx.coroutines.Dispatchers\r\nimport kotl"
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/AchievementsData.kt",
"chars": 358,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/EAData.kt",
"chars": 306,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.EADB\r\nimport knf.kum"
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/FavsData.kt",
"chars": 335,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/GenresData.kt",
"chars": 346,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/HistoryData.kt",
"chars": 343,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/QueueData.kt",
"chars": 333,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/SeeingData.kt",
"chars": 339,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/SeenData.kt",
"chars": 324,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.database.CacheDB\r\nimport knf."
},
{
"path": "app/src/main/java/knf/kuma/backup/firestore/data/TopData.kt",
"chars": 585,
"preview": "package knf.kuma.backup.firestore.data\r\n\r\nimport androidx.annotation.Keep\r\nimport knf.kuma.backup.firestore.FirestoreMan"
},
{
"path": "app/src/main/java/knf/kuma/backup/framework/BackupService.kt",
"chars": 884,
"preview": "package knf.kuma.backup.framework\r\n\r\nimport knf.kuma.backup.Backups\r\nimport knf.kuma.backup.objects.BackupObject\r\nimport"
},
{
"path": "app/src/main/java/knf/kuma/backup/framework/DropBoxService.kt",
"chars": 3301,
"preview": "package knf.kuma.backup.framework\r\n\r\nimport androidx.preference.PreferenceManager\r\nimport com.dropbox.core.DbxRequestCon"
},
{
"path": "app/src/main/java/knf/kuma/backup/framework/LocalService.kt",
"chars": 1913,
"preview": "package knf.kuma.backup.framework\r\n\r\nimport android.os.Build\r\nimport android.os.Environment\r\nimport android.widget.Toast"
},
{
"path": "app/src/main/java/knf/kuma/backup/objects/AnimeChapters.kt",
"chars": 487,
"preview": "package knf.kuma.backup.objects\r\n\r\nimport com.google.gson.Gson\r\nimport com.google.gson.reflect.TypeToken\r\nimport knf.kum"
},
{
"path": "app/src/main/java/knf/kuma/backup/objects/BackupObject.kt",
"chars": 512,
"preview": "package knf.kuma.backup.objects\n\nimport com.google.gson.annotations.SerializedName\nimport java.text.SimpleDateFormat\nimp"
},
{
"path": "app/src/main/java/knf/kuma/backup/objects/FavList.kt",
"chars": 2124,
"preview": "package knf.kuma.backup.objects\n\nimport com.google.gson.Gson\nimport com.google.gson.annotations.SerializedName\nimport co"
},
{
"path": "app/src/main/java/knf/kuma/backup/objects/SeenList.kt",
"chars": 3114,
"preview": "package knf.kuma.backup.objects\n\nimport android.util.Log\nimport com.google.gson.Gson\nimport com.google.gson.annotations."
},
{
"path": "app/src/main/java/knf/kuma/backup/screens/MigrateDirectoryFragment.kt",
"chars": 2454,
"preview": "package knf.kuma.backup.screens\n\nimport android.os.Bundle\nimport android.util.Log\nimport android.view.LayoutInflater\nimp"
},
{
"path": "app/src/main/java/knf/kuma/backup/screens/MigrateSuccessFragment.kt",
"chars": 3383,
"preview": "package knf.kuma.backup.screens\n\nimport android.content.ActivityNotFoundException\nimport android.content.Intent\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/backup/screens/MigrateVersionFragment.kt",
"chars": 1084,
"preview": "package knf.kuma.backup.screens\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nim"
},
{
"path": "app/src/main/java/knf/kuma/cast/CastCustom.kt",
"chars": 3290,
"preview": "package knf.kuma.cast\r\n\r\nimport android.app.Dialog\r\nimport android.content.Context\r\nimport android.content.Intent\r\nimpor"
},
{
"path": "app/src/main/java/knf/kuma/cast/CastMedia.kt",
"chars": 4920,
"preview": "package knf.kuma.cast\r\n\r\nimport android.net.Uri\r\nimport com.google.android.gms.cast.MediaInfo\r\nimport com.google.android"
},
{
"path": "app/src/main/java/knf/kuma/cast/CastNotificationHelper.kt",
"chars": 141,
"preview": "package knf.kuma.cast\r\n\r\nimport es.munix.multidisplaycast.helpers.NotificationsHelper\r\n\r\nclass CastNotificationHelper : "
},
{
"path": "app/src/main/java/knf/kuma/cast/ProxyCache.kt",
"chars": 481,
"preview": "package knf.kuma.cast\r\n\r\nimport knf.kuma.App\r\nimport knf.kuma.commons.SelfServer\r\nimport knf.libs.videocache.HttpProxyCa"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ChangeAdapter.kt",
"chars": 1930,
"preview": "package knf.kuma.changelog\n\nimport android.annotation.SuppressLint\nimport android.view.LayoutInflater\nimport android.vie"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ChangeAdapterMaterial.kt",
"chars": 1801,
"preview": "package knf.kuma.changelog\n\nimport android.annotation.SuppressLint\nimport android.view.LayoutInflater\nimport android.vie"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ChangelogActivity.kt",
"chars": 4845,
"preview": "package knf.kuma.changelog\n\nimport android.content.Context\nimport android.content.Intent\nimport android.os.Bundle\nimport"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ChangelogActivityMaterial.kt",
"chars": 5110,
"preview": "package knf.kuma.changelog\n\nimport android.content.Context\nimport android.content.Intent\nimport android.os.Bundle\nimport"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ReleaseAdapter.kt",
"chars": 1258,
"preview": "package knf.kuma.changelog\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nim"
},
{
"path": "app/src/main/java/knf/kuma/changelog/ReleaseAdapterMaterial.kt",
"chars": 1291,
"preview": "package knf.kuma.changelog\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nim"
},
{
"path": "app/src/main/java/knf/kuma/changelog/objects/Change.kt",
"chars": 185,
"preview": "package knf.kuma.changelog.objects\n\nimport org.jsoup.nodes.Element\n\nclass Change(element: Element) {\n var type: Strin"
},
{
"path": "app/src/main/java/knf/kuma/changelog/objects/Changelog.kt",
"chars": 338,
"preview": "package knf.kuma.changelog.objects\n\nimport org.jsoup.nodes.Document\n\nclass Changelog(document: Document) {\n var relea"
},
{
"path": "app/src/main/java/knf/kuma/changelog/objects/Release.kt",
"chars": 408,
"preview": "package knf.kuma.changelog.objects\n\nimport org.jsoup.nodes.Element\n\nclass Release(element: Element) {\n var version: S"
},
{
"path": "app/src/main/java/knf/kuma/commons/AllSSLOkHttpClient.kt",
"chars": 912,
"preview": "package knf.kuma.commons\r\n\r\nimport okhttp3.ConnectionSpec\r\nimport okhttp3.OkHttpClient\r\nimport org.conscrypt.Conscrypt\r\n"
},
{
"path": "app/src/main/java/knf/kuma/commons/BypassUtil.kt",
"chars": 8216,
"preview": "package knf.kuma.commons\n\nimport android.content.Context\nimport android.webkit.CookieManager\nimport android.webkit.WebSe"
},
{
"path": "app/src/main/java/knf/kuma/commons/CastUtil.kt",
"chars": 4511,
"preview": "package knf.kuma.commons\n\nimport android.app.Activity\nimport android.content.Context\nimport android.content.Intent\nimpor"
},
{
"path": "app/src/main/java/knf/kuma/commons/ChannelTools.kt",
"chars": 918,
"preview": "package knf.kuma.commons\n\nimport java.io.IOException\nimport java.nio.ByteBuffer\nimport java.nio.channels.ReadableByteCha"
},
{
"path": "app/src/main/java/knf/kuma/commons/CipherExt.kt",
"chars": 4212,
"preview": "package knf.kuma.commons\r\n\r\nimport android.util.Base64\r\nimport knf.kuma.BuildConfig\r\nimport javax.crypto.Cipher\r\nimport "
},
{
"path": "app/src/main/java/knf/kuma/commons/DesignUtils.kt",
"chars": 3209,
"preview": "package knf.kuma.commons\r\n\r\nimport android.content.ComponentName\r\nimport android.content.Intent\r\nimport android.content."
},
{
"path": "app/src/main/java/knf/kuma/commons/EAHelper.kt",
"chars": 18460,
"preview": "package knf.kuma.commons\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.content.I"
},
{
"path": "app/src/main/java/knf/kuma/commons/EAMapActivity.kt",
"chars": 3971,
"preview": "package knf.kuma.commons\r\n\r\nimport android.app.Activity\r\nimport android.content.Context\r\nimport android.content.Intent\r\n"
},
{
"path": "app/src/main/java/knf/kuma/commons/Economy.kt",
"chars": 3041,
"preview": "package knf.kuma.commons\r\n\r\nimport androidx.appcompat.app.AlertDialog\r\nimport androidx.core.content.ContextCompat\r\nimpor"
},
{
"path": "app/src/main/java/knf/kuma/commons/Encryption.java",
"chars": 23841,
"preview": "package knf.kuma.commons;\r\n\r\nimport android.util.Base64;\r\n\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.se"
},
{
"path": "app/src/main/java/knf/kuma/commons/ExtensionUtils.kt",
"chars": 26851,
"preview": "package knf.kuma.commons\r\n\r\nimport android.annotation.SuppressLint\r\nimport android.app.Activity\r\nimport android.content."
},
{
"path": "app/src/main/java/knf/kuma/commons/FileUtil.kt",
"chars": 10927,
"preview": "package knf.kuma.commons\n\nimport android.annotation.TargetApi\nimport android.content.ContentResolver\nimport android.cont"
},
{
"path": "app/src/main/java/knf/kuma/commons/FileWrapper.kt",
"chars": 4711,
"preview": "package knf.kuma.commons\r\n\r\nimport android.os.Build\r\nimport android.os.Environment\r\nimport androidx.documentfile.provide"
},
{
"path": "app/src/main/java/knf/kuma/commons/Network.kt",
"chars": 1412,
"preview": "package knf.kuma.commons\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.content.C"
},
{
"path": "app/src/main/java/knf/kuma/commons/NoSSLOkHttpClient.kt",
"chars": 2326,
"preview": "package knf.kuma.commons\n\nimport knf.kuma.custom.TlsOnlySocketFactory\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\ni"
},
{
"path": "app/src/main/java/knf/kuma/commons/PatternUtil.kt",
"chars": 6092,
"preview": "package knf.kuma.commons\n\nimport android.os.Build\nimport android.text.Html\nimport android.util.Log\nimport com.bumptech.g"
},
{
"path": "app/src/main/java/knf/kuma/commons/PicassoSingle.kt",
"chars": 1308,
"preview": "package knf.kuma.commons\n\nimport android.annotation.SuppressLint\nimport com.squareup.picasso.OkHttp3Downloader\nimport co"
},
{
"path": "app/src/main/java/knf/kuma/commons/PrefsUtil.kt",
"chars": 22058,
"preview": "package knf.kuma.commons\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.content.I"
},
{
"path": "app/src/main/java/knf/kuma/commons/SSLSkipper.kt",
"chars": 2842,
"preview": "package knf.kuma.commons\n\nimport java.security.GeneralSecurityException\nimport java.security.SecureRandom\nimport java.se"
},
{
"path": "app/src/main/java/knf/kuma/commons/SelfServer.kt",
"chars": 13556,
"preview": "package knf.kuma.commons\n\nimport android.app.Notification\nimport android.app.PendingIntent\nimport android.app.Service\nim"
},
{
"path": "app/src/main/java/knf/kuma/commons/SharedPreferenceLiveData.kt",
"chars": 3802,
"preview": "package knf.kuma.commons\n\nimport android.content.SharedPreferences\nimport androidx.lifecycle.LiveData\n\nabstract class Sh"
},
{
"path": "app/src/main/java/knf/kuma/commons/ThumbsDownloader.kt",
"chars": 1242,
"preview": "package knf.kuma.commons\r\n\r\nimport android.content.Context\r\nimport android.graphics.Bitmap\r\nimport android.util.Log\r\nimp"
},
{
"path": "app/src/main/java/knf/kuma/custom/AchievementUnlocked.java",
"chars": 67876,
"preview": "package knf.kuma.custom;\r\n\r\nimport static android.text.TextUtils.isEmpty;\r\nimport static android.view.Gravity.CENTER_HOR"
},
{
"path": "app/src/main/java/knf/kuma/custom/AppWebView.kt",
"chars": 452,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.webkit.WebView\n\n"
},
{
"path": "app/src/main/java/knf/kuma/custom/BackgroundExecutor.kt",
"chars": 227,
"preview": "package knf.kuma.custom\r\n\r\nimport android.os.AsyncTask\r\nimport java.util.concurrent.Executor\r\n\r\nclass BackgroundExecutor"
},
{
"path": "app/src/main/java/knf/kuma/custom/BannerContainerView.kt",
"chars": 1437,
"preview": "package knf.kuma.custom\r\n\r\nimport android.content.Context\r\nimport android.util.AttributeSet\r\nimport android.view.View\r\ni"
},
{
"path": "app/src/main/java/knf/kuma/custom/CenterLayoutManager.kt",
"chars": 1242,
"preview": "package knf.kuma.custom\r\n\r\nimport android.content.Context\r\nimport android.util.AttributeSet\r\nimport androidx.recyclervie"
},
{
"path": "app/src/main/java/knf/kuma/custom/ConnectionState.kt",
"chars": 20223,
"preview": "package knf.kuma.custom\n\nimport android.animation.Animator\nimport android.animation.ValueAnimator\nimport android.annotat"
},
{
"path": "app/src/main/java/knf/kuma/custom/ExpandableTV.kt",
"chars": 11441,
"preview": "package knf.kuma.custom\n\nimport android.animation.Animator\nimport android.animation.AnimatorListenerAdapter\nimport andro"
},
{
"path": "app/src/main/java/knf/kuma/custom/ExpandableTextView.kt",
"chars": 7954,
"preview": "package knf.kuma.custom\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.graphics.d"
},
{
"path": "app/src/main/java/knf/kuma/custom/FSGridRecyclerView.kt",
"chars": 2346,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.View\nimport"
},
{
"path": "app/src/main/java/knf/kuma/custom/FSRecyclerView.kt",
"chars": 685,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport com.simplecityapps.recyc"
},
{
"path": "app/src/main/java/knf/kuma/custom/FixedGridLayoutManager.kt",
"chars": 928,
"preview": "package knf.kuma.custom\r\n\r\nimport android.content.Context\r\nimport android.util.AttributeSet\r\nimport androidx.recyclervie"
},
{
"path": "app/src/main/java/knf/kuma/custom/GenericActivity.kt",
"chars": 6423,
"preview": "package knf.kuma.custom\r\n\r\nimport android.app.ActivityManager\r\nimport android.content.Intent\r\nimport android.graphics.Bi"
},
{
"path": "app/src/main/java/knf/kuma/custom/GridRecyclerView.kt",
"chars": 2391,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.View\nimport"
},
{
"path": "app/src/main/java/knf/kuma/custom/HiddenOverlay.kt",
"chars": 1724,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.LayoutInfla"
},
{
"path": "app/src/main/java/knf/kuma/custom/HomeList.kt",
"chars": 4105,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.content.Intent\nimport android.util.AttributeSet\ni"
},
{
"path": "app/src/main/java/knf/kuma/custom/ListPreferenceDialogFragmentCompat.kt",
"chars": 4975,
"preview": "package knf.kuma.custom\r\n\r\nimport android.app.Dialog\r\nimport android.content.DialogInterface\r\nimport android.os.Bundle\r\n"
},
{
"path": "app/src/main/java/knf/kuma/custom/MainExecutor.kt",
"chars": 291,
"preview": "package knf.kuma.custom\r\n\r\nimport android.os.Handler\r\nimport android.os.Looper\r\nimport java.util.concurrent.Executor\r\n\r\n"
},
{
"path": "app/src/main/java/knf/kuma/custom/PreferenceFragmentCompat.java",
"chars": 33093,
"preview": "package knf.kuma.custom;\r\n\r\nimport static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;\r\n\r\nimport android.annotati"
},
{
"path": "app/src/main/java/knf/kuma/custom/SSLManager.kt",
"chars": 1760,
"preview": "package knf.kuma.custom\r\n\r\nimport knf.kuma.commons.isMIUI\r\nimport knf.kuma.commons.noCrash\r\nimport java.security.SecureR"
},
{
"path": "app/src/main/java/knf/kuma/custom/SeenAnimeOverlay.kt",
"chars": 1725,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.LayoutInfla"
},
{
"path": "app/src/main/java/knf/kuma/custom/SingleFragmentActivity.kt",
"chars": 1444,
"preview": "package knf.kuma.custom\r\n\r\nimport android.os.Bundle\r\nimport androidx.annotation.LayoutRes\r\nimport androidx.appcompat.app"
},
{
"path": "app/src/main/java/knf/kuma/custom/SingleFragmentMaterialActivity.kt",
"chars": 1527,
"preview": "package knf.kuma.custom\r\n\r\nimport android.os.Bundle\r\nimport androidx.annotation.LayoutRes\r\nimport androidx.appcompat.app"
},
{
"path": "app/src/main/java/knf/kuma/custom/StateView.kt",
"chars": 2862,
"preview": "package knf.kuma.custom\r\n\r\nimport android.animation.Animator\r\nimport android.animation.AnimatorListenerAdapter\r\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/custom/StateViewMaterial.kt",
"chars": 2919,
"preview": "package knf.kuma.custom\r\n\r\nimport android.animation.Animator\r\nimport android.animation.AnimatorListenerAdapter\r\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/custom/SyncItemView.kt",
"chars": 4115,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.LayoutInfla"
},
{
"path": "app/src/main/java/knf/kuma/custom/SyncStaticItemView.kt",
"chars": 6001,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.graphics.drawable.AnimatedVectorDrawable\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/custom/ThemedControlsActivity.kt",
"chars": 1038,
"preview": "package knf.kuma.custom\r\n\r\nimport android.os.Bundle\r\nimport android.widget.RelativeLayout\r\nimport com.bumptech.glide.loa"
},
{
"path": "app/src/main/java/knf/kuma/custom/TlsOnlySocketFactory.java",
"chars": 18119,
"preview": "/*\n * Copyright 2015 Bhavit Singh Sengar\n * Copyright 2015-2016 Hans-Christoph Steiner\n * Copyright 2015-2016 Nathan Fre"
},
{
"path": "app/src/main/java/knf/kuma/custom/VariantGridLayoutManager.kt",
"chars": 715,
"preview": "package knf.kuma.custom\r\n\r\nimport android.content.Context\r\nimport android.util.AttributeSet\r\nimport androidx.annotation."
},
{
"path": "app/src/main/java/knf/kuma/custom/VariantLinearLayoutManager.kt",
"chars": 667,
"preview": "package knf.kuma.custom\r\n\r\nimport android.content.Context\r\nimport android.util.AttributeSet\r\nimport androidx.annotation."
},
{
"path": "app/src/main/java/knf/kuma/custom/WrapWebView.kt",
"chars": 664,
"preview": "package knf.kuma.custom\n\nimport android.content.Context\nimport android.content.res.Configuration\nimport android.os.Build"
},
{
"path": "app/src/main/java/knf/kuma/custom/exceptions/EJNFException.kt",
"chars": 115,
"preview": "package knf.kuma.custom.exceptions\r\n\r\nclass EJNFException(message: String? = null) : IllegalStateException(message)"
},
{
"path": "app/src/main/java/knf/kuma/custom/snackbar/SnackProgressBar.kt",
"chars": 8713,
"preview": "package knf.kuma.custom.snackbar\r\n\r\nimport android.graphics.Bitmap\r\nimport android.os.Bundle\r\nimport androidx.annotation"
},
{
"path": "app/src/main/java/knf/kuma/custom/snackbar/SnackProgressBarCore.kt",
"chars": 14708,
"preview": "package knf.kuma.custom.snackbar\r\n\r\nimport android.os.Handler\r\nimport android.view.LayoutInflater\r\nimport android.view.V"
},
{
"path": "app/src/main/java/knf/kuma/custom/snackbar/SnackProgressBarLayout.kt",
"chars": 19555,
"preview": "package knf.kuma.custom.snackbar\r\n\r\nimport android.annotation.SuppressLint\r\nimport android.content.Context\r\nimport andro"
},
{
"path": "app/src/main/java/knf/kuma/custom/snackbar/SnackProgressBarManager.kt",
"chars": 24067,
"preview": "package knf.kuma.custom.snackbar\r\n\r\nimport android.util.SparseArray\r\nimport android.util.TypedValue\r\nimport android.view"
},
{
"path": "app/src/main/java/knf/kuma/database/BaseConverter.kt",
"chars": 923,
"preview": "package knf.kuma.database\n\nimport android.net.Uri\nimport androidx.room.TypeConverter\nimport com.google.gson.Gson\nimport "
},
{
"path": "app/src/main/java/knf/kuma/database/CacheDB.kt",
"chars": 12350,
"preview": "package knf.kuma.database\n\nimport android.content.Context\nimport androidx.room.Database\nimport androidx.room.Room\nimport"
},
{
"path": "app/src/main/java/knf/kuma/database/CacheDBWrap.java",
"chars": 132,
"preview": "package knf.kuma.database;\r\n\r\npublic class CacheDBWrap {\r\n public static CacheDB INSTANCE = CacheDB.Companion.getINST"
},
{
"path": "app/src/main/java/knf/kuma/database/EADB.kt",
"chars": 658,
"preview": "package knf.kuma.database\n\nimport android.content.Context\n\nimport androidx.room.Database\nimport androidx.room.Room\nimpor"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/AchievementsDAO.kt",
"chars": 2232,
"preview": "package knf.kuma.database.dao\r\n\r\nimport androidx.lifecycle.LiveData\r\nimport androidx.room.Dao\r\nimport androidx.room.Inse"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/AnimeDAO.kt",
"chars": 12264,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.paging.DataSource\nimport androidx.room"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/ChaptersDAO.kt",
"chars": 1749,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Delete\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/DownloadsDAO.kt",
"chars": 2153,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.paging.DataSource\nimport androidx.room"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/EaDAO.kt",
"chars": 674,
"preview": "package knf.kuma.database.dao\n\nimport androidx.room.Dao\nimport androidx.room.Insert\nimport androidx.room.OnConflictStrat"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/ExplorerDAO.kt",
"chars": 828,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Delete\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/FavsDAO.kt",
"chars": 2541,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Delete\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/GenresDAO.kt",
"chars": 1291,
"preview": "package knf.kuma.database.dao\n\nimport androidx.room.Dao\nimport androidx.room.Insert\nimport androidx.room.OnConflictStrat"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/NotificationDAO.kt",
"chars": 774,
"preview": "package knf.kuma.database.dao\n\nimport androidx.room.Dao\nimport androidx.room.Delete\nimport androidx.room.Insert\nimport a"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/PlayerStateDAO.kt",
"chars": 424,
"preview": "package knf.kuma.database.dao\r\n\r\nimport androidx.room.Dao\r\nimport androidx.room.Insert\r\nimport androidx.room.OnConflictS"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/QueueDAO.kt",
"chars": 2337,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Delete\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/RecentModelsDAO.kt",
"chars": 744,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Insert\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/RecentsDAO.kt",
"chars": 950,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.room.Dao\nimport androidx.room.Insert\ni"
},
{
"path": "app/src/main/java/knf/kuma/database/dao/RecordsDAO.kt",
"chars": 955,
"preview": "package knf.kuma.database.dao\n\nimport androidx.lifecycle.LiveData\nimport androidx.paging.DataSource\nimport androidx.room"
}
]
// ... and 947 more files (download for full content)
About this extraction
This page contains the full source code of the jordyamc/UKIKU GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1147 files (82.1 MB), approximately 934.2k tokens, and a symbol index with 819 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.