content: [versions]
  # Plugins
  aboutlibraries = "12.2.4"
  androidGradle = "8.11.2"
  barcodeScanning = "17.3.0"
  biometric = "1.1.0"
  cameraCore = "1.5.0"
  cameraCamera2 = "1.5.0"
  coilCompose = "3.3.0"
  coreSplashscreen = "1.0.1"
  kotlin = "2.2.20"
  materialIconsCore = "1.7.8"
  serializationPlugin = "2.2.0"
  ksp = "2.2.20-2.0.3"
  drawerlayout = "1.2.0"
  # Dependencies
  about = "2.5.2"
  coreKtx = "1.17.0"
  appcompat = "1.7.1"
  material = "1.13.0"
  coroutinesAndroid = "1.10.2"
  activity = "1.11.0"
  fragment = "1.8.9"
  constraintLayout = "2.2.1"
  recyclerView = "1.4.0"
  expandableTextView = "v1.6.1-x"
  baseRecyclerViewAdapterHelper4 = "4.2.2"
  refreshLayoutKernel = "2.1.1"
  refreshHeaderMaterial = "2.1.1"
  refreshFooterClassics = "2.1.1"
  multiType = "4.3.0"
  lifecycleViewModelKtx = "2.9.3"
  lifecycleRuntimeKtx = "2.9.3"
  lifecycleLiveDataKtx = "2.9.3"
  roomRuntime = "2.8.0"
  roomKtx = "2.8.0"
  roomCompiler = "2.8.0"
  navigation = "2.8.9"
  preferenceKtx = "1.2.1"
  swiperefreshlayout = "1.2.0-beta01"
  windowJava = "1.4.0"
  window = "1.4.0"
  workRuntime = "2.10.4"
  workRuntimeKtx = "2.10.4"
  startupRuntime = "1.2.0"
  palette = "1.0.0"
  stateLayout = "1.4.2"
  spannableX = "1.0.4"
  datetime = "0.7.1"
  serialization = "1.8.1"
  gson = "2.13.1"
  jsoup = "1.21.2"
  retrofit = "3.0.0"
  converterSerialization = "1.0.0"
  coil = "2.7.0"
  xPopup = "2.10.0"
  xPopupExt = "1.0.1"
  jiaoziVideoPlayer = "7.7.2.3300"
  junit = "4.13.2"
  testJunit = "1.3.0"
  testEspressoCore = "3.7.0"
  guava = "33.4.8-android"
  exoplayer = "1.8.0"
  circularRevealSwitch = "0.4.6"
  desugarJdkLibs = "2.1.5"
  firebaseBom = "34.2.0"
  composeBom = "2025.09.00"
  compose-material3 = "1.5.0-alpha04"
  mpv = "v0.1.7"
  
  [libraries]
  # Android
  aboutlibraries = { module = "com.mikepenz:aboutlibraries", version.ref = "aboutlibraries" }
  aboutlibraries-core = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutlibraries" }
  androidx-biometric = { module = "androidx.biometric:biometric", version.ref = "biometric" }
  androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "cameraCamera2" }
  androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "cameraCore" }
  androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "cameraCore" }
  androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "cameraCore" }
  androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" }
  androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core", version.ref = "materialIconsCore" }
  androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigation" }
  androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
  androidx-window = { module = "androidx.window:window", version.ref = "window" }
  androidx-window-java = { module = "androidx.window:window-java", version.ref = "windowJava" }
  barcode-scanning = { module = "com.google.mlkit:barcode-scanning", version.ref = "barcodeScanning" }
  coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" }
  coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coilCompose" }
  core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
  appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
  firebase-database = { module = "com.google.firebase:firebase-database" }
  material = { group = "com.google.android.material", name = "material", version.ref = "material" }
  coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutinesAndroid" }
  constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintLayout" }
  recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerView" }
  drawerlayout = { module = "androidx.drawerlayout:drawerlayout", version.ref = "drawerlayout" }
  # Jetpack
  lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycleViewModelKtx" }
  lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
  lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycleLiveDataKtx" }
  activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
  activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "activity" }
  fragment = { group = "androidx.fragment", name = "fragment", version.ref = "fragment" }
  fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragment" }
  room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "roomRuntime" }
  room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtx" }
  room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "roomCompiler" }
  navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigation" }
  navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigation" }
  preference-ktx = { group = "androidx.preference", name = "preference-ktx", version.ref = "preferenceKtx" }
  work-runtime = { group = "androidx.work", name = "work-runtime", version.ref = "workRuntime" }
  work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "workRuntimeKtx" }
  guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
  startup-runtime = { group = "androidx.startup", name = "startup-runtime", version.ref = "startupRuntime" }
  palette = { group = "androidx.palette", name = "palette", version.ref = "palette" }
  # Compose
  compose-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
  compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
  androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activity" }
  compose-material3 = { group = "androidx.compose.material3", name = "material3",version.ref = "compose-material3" }
  compose-ui-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
  compose-ui-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
  
  # Parse
  serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" }
  gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
  jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoup" }
  
  # Network
  retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" }
  converter-serialization = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "converterSerialization" }
  
  # Pic
  coil = { group = "io.coil-kt", name = "coil", version.ref = "coil" }
  # Test
  junit = { group = "junit", name = "junit", version.ref = "junit" } # testImplementation
  test-junit = { group = "androidx.test.ext", name = "junit", version.ref = "testJunit" } # androidTestImplementation
  test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "testEspressoCore" } # androidTestImplementation
  
  # video
  jiaozi-video-player = { group = "cn.jzvd", name = "jiaozivideoplayer", version.ref = "jiaoziVideoPlayer" }
  media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "exoplayer" }
  media3-exoplayer-hls = { group = "androidx.media3", name = "media3-exoplayer-hls", version.ref = "exoplayer" }
  mpv-lib = { group = "com.github.abdallahmehiz", name = "mpv-android", version.ref = "mpv" }
  
  # Other
  about = { group = "com.drakeet.about", name = "about", version.ref = "about" }
  expandable-textview = { group = "com.github.MZCretin", name = "ExpandableTextView", version.ref = "expandableTextView" }
  base-recyclerview-adapter-helper4 = { group = "io.github.cymchad", name = "BaseRecyclerViewAdapterHelper4", version.ref = "baseRecyclerViewAdapterHelper4" }
  refresh-layout-kernel = { group = "io.github.scwang90", name = "refresh-layout-kernel", version.ref = "refreshLayoutKernel" }
  refresh-header-material = { group = "io.github.scwang90", name = "refresh-header-material", version.ref = "refreshHeaderMaterial" }
  refresh-footer-classics = { group = "io.github.scwang90", name = "refresh-footer-classics", version.ref = "refreshFooterClassics" }
  multitype = { group = "com.drakeet.multitype", name = "multitype", version.ref = "multiType" }
  statelayout = { group = "com.github.liangjingkanji", name = "StateLayout", version.ref = "stateLayout" }
  spannable-x = { group = "com.itxca.spannablex", name = "spannablex", version.ref = "spannableX" }
  datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "datetime" }
  xpopup = { group = "com.github.li-xiaojun", name = "XPopup", version.ref = "xPopup" }
  xpopup-ext = { group = "com.github.li-xiaojun", name = "XPopupExt", version.ref = "xPopupExt" }
  circular-reveal-switch = { group = "com.github.YenalyLiew", name = "CircularRevealSwitch", version.ref = "circularRevealSwitch" }
  desugar-jdk-libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugarJdkLibs" }
  
  # firebase
  firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics" }
  firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" }
  firebase-perf = { group = "com.google.firebase", name = "firebase-perf" }
  firebase-config = { group = "com.google.firebase", name = "firebase-config" }
  firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
  androidx-ui = { group = "androidx.compose.ui", name = "ui" }
  androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
  androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
  
  [bundles]
  
  android-base = [
      "core-ktx",
      "appcompat",
      "material",
      "coroutines-android",
      "constraintlayout",
      "recyclerview"
  ]
  
  android-jetpack = [
      "lifecycle-viewmodel-ktx", "lifecycle-runtime-ktx", "lifecycle-livedata-ktx",
      "activity", "activity-ktx", "fragment", "fragment-ktx",
      "room-runtime", "room-ktx",
      "navigation-fragment-ktx", "navigation-ui-ktx",
      "preference-ktx",
      "work-runtime", "work-runtime-ktx", "guava"
  ]
  
  [plugins]
  com-android-application = { id = "com.android.application", version.ref = "androidGradle" }
  com-android-library = { id = "com.android.library", version.ref = "androidGradle" }
  org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
  com-google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
  org-jetbrains-kotlin-plugin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "serializationPlugin" }
  org-jetbrains-kotlin-plugin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
  com-google-gms-google-services = { id = "com.google.gms.google-services", version = "4.4.3" }
  com-google-firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.6" }
  com-google-firebase-firebase-pref = { id = "com.google.firebase.firebase-perf", version = "2.0.1" }
  compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }