gitextract_5ey_lysb/ ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── auto_assign.yml │ ├── ci-gradle.properties │ └── workflows/ │ └── build.yaml ├── .gitignore ├── CHECK.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── dependencies/ │ │ └── releaseRuntimeClasspath.txt │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── ExampleInstrumentedTest.kt │ ├── debug/ │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_foreground_dark.xml │ │ │ └── ic_launcher_monochrome.xml │ │ └── mipmap-anydpi-v26/ │ │ └── ic_launcher.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ ├── MovieApplication.kt │ │ │ ├── di/ │ │ │ │ ├── AppModule.kt │ │ │ │ ├── ApplicationModule.kt │ │ │ │ └── MainNavigatorImpl.kt │ │ │ ├── startup/ │ │ │ │ └── LoggerInitializer.kt │ │ │ └── ui/ │ │ │ └── main/ │ │ │ ├── MainActivity.kt │ │ │ ├── MainViewModel.kt │ │ │ ├── NavigationState.kt │ │ │ └── NavigatorImpl.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_foreground_dark.xml │ │ │ ├── ic_launcher_monochrome.xml │ │ │ ├── ic_splash.xml │ │ │ ├── icon_v0.xml │ │ │ ├── icon_v1.xml │ │ │ ├── icon_v1_1.xml │ │ │ ├── icon_v1_2.xml │ │ │ ├── icon_v1_3.xml │ │ │ └── icon_v1_4.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ └── ic_launcher.xml │ │ ├── mipmap-night-anydpi-v26/ │ │ │ └── ic_launcher.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ ├── strings_no_translate.xml │ │ │ ├── sys_ui.xml │ │ │ └── themes.xml │ │ ├── values-ko/ │ │ │ └── strings.xml │ │ ├── values-night/ │ │ │ └── sys_ui.xml │ │ ├── values-notnight-v27/ │ │ │ └── sys_ui.xml │ │ ├── values-v27/ │ │ │ └── themes.xml │ │ └── values-v29/ │ │ └── themes.xml │ ├── release/ │ │ └── generated/ │ │ └── baselineProfiles/ │ │ ├── baseline-prof.txt │ │ └── startup-prof.txt │ └── test/ │ └── java/ │ └── soup/ │ └── movie/ │ └── ExampleUnitTest.kt ├── build-logic/ │ ├── convention/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ ├── AndroidApplicationConventionPlugin.kt │ │ ├── AndroidBuildConfigConventionPlugin.kt │ │ ├── AndroidComposeConventionPlugin.kt │ │ ├── AndroidHiltConventionPlugin.kt │ │ ├── AndroidLibraryConventionPlugin.kt │ │ ├── AndroidTestConventionPlugin.kt │ │ └── soup/ │ │ └── movie/ │ │ └── buildlogic/ │ │ ├── Android.kt │ │ ├── Compose.kt │ │ ├── Dependencies.kt │ │ ├── Kotlin.kt │ │ └── Versions.kt │ ├── gradle.properties │ └── settings.gradle.kts ├── build.gradle ├── check.sh ├── core/ │ ├── buildconfig/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── AndroidManifest.xml │ ├── buildconfig-stub/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── AndroidManifest.xml │ ├── datetime/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── datetime/ │ │ │ └── DateHelper.kt │ │ └── test/ │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── datetime/ │ │ └── DataHelperTest.kt │ ├── designsystem/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── core/ │ │ │ └── designsystem/ │ │ │ ├── icon/ │ │ │ │ └── MovieIcons.kt │ │ │ ├── theme/ │ │ │ │ ├── Colors.kt │ │ │ │ └── Themes.kt │ │ │ └── util/ │ │ │ └── Debounce.kt │ │ └── res/ │ │ └── drawable/ │ │ ├── avd_favorite_selected.xml │ │ ├── avd_home_now_selected.xml │ │ ├── filter_chip_cgv_cancel.xml │ │ ├── filter_chip_lotte_cancel.xml │ │ ├── filter_chip_megabox_cancel.xml │ │ ├── ic_imdb.xml │ │ ├── ic_loading_logo.xml │ │ ├── ic_logo_youtube.xml │ │ ├── ic_metacritic.xml │ │ ├── ic_rt.xml │ │ └── ic_splash_launcher.xml │ ├── external/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── core/ │ │ │ └── external/ │ │ │ ├── Context.kt │ │ │ └── YouTube.kt │ │ └── res/ │ │ └── anim/ │ │ ├── fade_in.xml │ │ └── fade_out.xml │ ├── imageloading/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── core/ │ │ │ └── imageloading/ │ │ │ └── AsyncImage.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── core/ │ │ └── imageloading/ │ │ └── impl/ │ │ └── CoilInitializer.kt │ ├── kotlin/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── common/ │ │ ├── Dispatchers.kt │ │ └── di/ │ │ ├── CoroutineScopesModule.kt │ │ └── DispatchersModule.kt │ ├── logger/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── log/ │ │ ├── DebugTree.kt │ │ └── Logger.kt │ └── resources/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── kotlin/ │ │ └── soup/ │ │ └── movie/ │ │ └── resources/ │ │ └── Resources.kt │ └── res/ │ ├── drawable/ │ │ └── ic_notify_default.xml │ ├── values/ │ │ └── strings.xml │ └── values-ko/ │ └── strings.xml ├── data/ │ ├── database/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── data/ │ │ │ └── database/ │ │ │ └── LocalDataSource.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── data/ │ │ └── database/ │ │ └── impl/ │ │ ├── LocalDataSourceFactory.kt │ │ ├── LocalDataSourceImpl.kt │ │ ├── MovieCacheDatabase.kt │ │ ├── MovieDatabase.kt │ │ ├── converter/ │ │ │ ├── CacheDatabaseTypeConverter.kt │ │ │ └── FavoriteMovieTypeConverters.kt │ │ ├── dao/ │ │ │ ├── FavoriteMovieDao.kt │ │ │ ├── MovieCacheDao.kt │ │ │ └── OpenDateAlarmDao.kt │ │ ├── di/ │ │ │ └── DatabaseModule.kt │ │ ├── entity/ │ │ │ ├── FavoriteMovieEntity.kt │ │ │ ├── MovieEntity.kt │ │ │ ├── MovieListEntity.kt │ │ │ └── OpenDateAlarmEntity.kt │ │ └── mapper/ │ │ ├── EntityToModelMapper.kt │ │ └── ModelToEntityMapper.kt │ ├── model/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── model/ │ │ ├── ActorModel.kt │ │ ├── BoxOfficeModel.kt │ │ ├── CgvInfoModel.kt │ │ ├── CompanyModel.kt │ │ ├── ImdbInfoModel.kt │ │ ├── LotteInfoModel.kt │ │ ├── MegaboxInfoModel.kt │ │ ├── MetascoreInfoModel.kt │ │ ├── MovieDetailModel.kt │ │ ├── MovieListModel.kt │ │ ├── MovieModel.kt │ │ ├── OpenDateAlarmModel.kt │ │ ├── RottenTomatoInfoModel.kt │ │ ├── TheaterRatingsModel.kt │ │ ├── TrailerModel.kt │ │ └── settings/ │ │ ├── AgeFilter.kt │ │ └── TheaterFilter.kt │ ├── network/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── data/ │ │ │ └── network/ │ │ │ ├── RemoteDataSource.kt │ │ │ └── response/ │ │ │ ├── ActorResponse.kt │ │ │ ├── BoxOfficeResponse.kt │ │ │ ├── CgvInfoResponse.kt │ │ │ ├── CompanyResponse.kt │ │ │ ├── ImdbInfoResponse.kt │ │ │ ├── LotteInfoResponse.kt │ │ │ ├── MegaboxInfoResponse.kt │ │ │ ├── MetascoreInfoResponse.kt │ │ │ ├── MovieDetailResponse.kt │ │ │ ├── MovieListResponse.kt │ │ │ ├── MovieResponse.kt │ │ │ ├── RottenTomatoInfoResponse.kt │ │ │ ├── TheaterRatingsResponse.kt │ │ │ └── TrailerResponse.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── data/ │ │ └── network/ │ │ └── impl/ │ │ ├── MovieApiService.kt │ │ ├── OkHttpInterceptors.kt │ │ ├── RemoteDataSourceImpl.kt │ │ └── di/ │ │ └── NetworkModule.kt │ ├── repository/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── data/ │ │ │ └── repository/ │ │ │ └── MovieRepository.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── data/ │ │ └── repository/ │ │ └── impl/ │ │ ├── MovieRepositoryImpl.kt │ │ ├── di/ │ │ │ └── RepositoryModule.kt │ │ └── util/ │ │ └── SearchHelper.kt │ └── settings/ │ ├── api/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── data/ │ │ └── settings/ │ │ └── AppSettings.kt │ └── impl/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── soup/ │ └── movie/ │ └── data/ │ └── settings/ │ └── impl/ │ ├── AppSettingsImpl.kt │ └── di/ │ ├── DataSettingsModule.kt │ └── DataStoreModule.kt ├── feature/ │ ├── detail/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── feature/ │ │ │ └── detail/ │ │ │ └── DetailScreenKey.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── detail/ │ │ └── impl/ │ │ ├── BoxOffice.kt │ │ ├── DetailContent.kt │ │ ├── DetailError.kt │ │ ├── DetailHeader.kt │ │ ├── DetailList.kt │ │ ├── DetailPoster.kt │ │ ├── DetailScreen.kt │ │ ├── DetailUiModel.kt │ │ ├── DetailViewModel.kt │ │ └── di/ │ │ └── FeatureDetailModule.kt │ ├── home/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── feature/ │ │ │ └── home/ │ │ │ ├── HomeComposableFactory.kt │ │ │ └── HomeScreenKey.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── home/ │ │ └── impl/ │ │ ├── HomeComposableFactoryImpl.kt │ │ ├── HomeScreen.kt │ │ ├── HomeTabUiModel.kt │ │ ├── HomeViewModel.kt │ │ ├── TextUnit.kt │ │ ├── di/ │ │ │ └── FeatureHomeModule.kt │ │ ├── domain/ │ │ │ ├── AppSettingsExt.kt │ │ │ └── MovieFilter.kt │ │ ├── favorite/ │ │ │ ├── HomeFavoriteScreen.kt │ │ │ ├── HomeFavoriteViewModel.kt │ │ │ ├── MovieAgeBadge.kt │ │ │ ├── MovieAgeTag.kt │ │ │ ├── MovieDDayTag.kt │ │ │ └── MovieTextTag.kt │ │ ├── filter/ │ │ │ ├── HomeFilterAge.kt │ │ │ ├── HomeFilterCategory.kt │ │ │ ├── HomeFilterScreen.kt │ │ │ ├── HomeFilterTheater.kt │ │ │ ├── HomeFilterUiModel.kt │ │ │ ├── HomeFilterViewModel.kt │ │ │ └── TheaterFilterChip.kt │ │ ├── now/ │ │ │ ├── HomeNowList.kt │ │ │ └── HomeNowViewModel.kt │ │ ├── plan/ │ │ │ ├── HomePlanList.kt │ │ │ └── HomePlanViewModel.kt │ │ └── tab/ │ │ ├── CommonError.kt │ │ ├── ContentLoadingProgressBar.kt │ │ ├── HomeContentsScreen.kt │ │ ├── MovieList.kt │ │ └── NoMovieItems.kt │ ├── navigator/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── feature/ │ │ │ └── navigator/ │ │ │ ├── AppNavigator.kt │ │ │ ├── Destination.kt │ │ │ ├── EntryProviderInstaller.kt │ │ │ ├── MainNavigator.kt │ │ │ └── ScreenKey.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── navigator/ │ │ └── impl/ │ │ ├── AppNavigatorImpl.kt │ │ └── di/ │ │ └── NavigatorModule.kt │ ├── notification/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── soup/ │ │ │ │ └── movie/ │ │ │ │ └── feature/ │ │ │ │ └── notification/ │ │ │ │ └── NotificationBuilder.kt │ │ │ └── res/ │ │ │ ├── values/ │ │ │ │ └── strings_notification.xml │ │ │ └── values-ko/ │ │ │ └── strings_notification.xml │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── notification/ │ │ └── impl/ │ │ ├── NotificationBuilderImpl.kt │ │ ├── NotificationChannels.kt │ │ ├── NotificationSpecs.kt │ │ └── di/ │ │ └── NotificationModule.kt │ ├── search/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── feature/ │ │ │ └── search/ │ │ │ └── SearchScreenKey.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── search/ │ │ └── impl/ │ │ ├── SearchScreen.kt │ │ ├── SearchUiModel.kt │ │ ├── SearchViewModel.kt │ │ └── di/ │ │ └── FeatureSearchModule.kt │ ├── settings/ │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── soup/ │ │ │ └── movie/ │ │ │ └── feature/ │ │ │ ├── settings/ │ │ │ │ └── SettingsScreenKey.kt │ │ │ └── theme/ │ │ │ ├── ThemeOption.kt │ │ │ └── ThemeOptionManager.kt │ │ └── impl/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── settings/ │ │ └── impl/ │ │ ├── di/ │ │ │ ├── FeatureSettingsModule.kt │ │ │ └── FeatureThemeModule.kt │ │ ├── home/ │ │ │ ├── SettingsScreen.kt │ │ │ ├── SettingsUiModel.kt │ │ │ └── SettingsViewModel.kt │ │ └── theme/ │ │ ├── ThemeOptionManagerImpl.kt │ │ ├── ThemeOptionScreen.kt │ │ ├── ThemeOptionStore.kt │ │ ├── ThemeOptionViewModel.kt │ │ ├── ThemeSettingExtensions.kt │ │ └── ThemeSettingItemUiModel.kt │ └── tasks/ │ ├── api/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── soup/ │ │ └── movie/ │ │ └── feature/ │ │ └── tasks/ │ │ ├── AnnounceOpenDateTasks.kt │ │ └── SyncOpenDateTasks.kt │ └── impl/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── soup/ │ └── movie/ │ └── feature/ │ └── tasks/ │ └── impl/ │ ├── AnnounceOpenDateTasksImpl.kt │ ├── AnnounceOpenDateUseCase.kt │ ├── AnnounceOpenDateWorker.kt │ ├── SyncOpenDateTasksImpl.kt │ ├── SyncOpenDateUseCase.kt │ ├── SyncOpenDateWorker.kt │ ├── WorkManagerInitializer.kt │ └── di/ │ ├── InitializerComponent.kt │ ├── InitializerDependencies.kt │ ├── TasksModule.kt │ └── WorkModule.kt ├── gradle/ │ ├── init.gradle.kts │ ├── libs.versions.toml │ ├── version.gradle │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── macrobenchmark/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── soup/ │ └── movie/ │ └── macrobenchmark/ │ ├── BaselineProfileGenerator.kt │ └── StartupBenchmarks.kt ├── settings.gradle.kts ├── signing/ │ └── app-debug.jks ├── spotless/ │ └── copyright.kt ├── testing/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── soup/ │ └── movie/ │ └── testing/ │ ├── MovieTestRunner.kt │ ├── di/ │ │ ├── TestDispatcherModule.kt │ │ └── TestDispatchersModule.kt │ └── util/ │ └── TestDispatcherRule.kt └── version.properties