Migrate to version catalogues, refreshVersions, and update dependencies (#2285)

It has been a very long time since I've updated dependencies around the project. This revamps the dependency infra to use refreshVersions and updates a handful of libraries.
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index e0d83db..0862a24 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -21,7 +21,7 @@
         uses: actions/setup-java@v2
         with:
           distribution: 'zulu'
-          java-version: 11
+          java-version: 17
           cache: 'gradle'
       - name: Run Lint
         run: ./gradlew lintDebug --no-daemon
@@ -43,7 +43,7 @@
         uses: actions/setup-java@v2
         with:
           distribution: 'zulu'
-          java-version: 11
+          java-version: 17
           cache: 'gradle'
       - name: Run Unit Tests
         run: ./gradlew testDebugUnitTest --no-daemon
@@ -72,7 +72,7 @@
         uses: actions/setup-java@v2
         with:
           distribution: 'zulu'
-          java-version: 11
+          java-version: 17
           cache: 'gradle'
       - name: Build app
         run: ./gradlew snapshot-tests:assembleDebug snapshot-tests:assembleDebugAndroidTest --no-daemon
@@ -109,7 +109,7 @@
         uses: actions/setup-java@v2
         with:
           distribution: 'zulu'
-          java-version: 11
+          java-version: 17
           cache: 'gradle'
       - name: "Deploy Snapshot"
         env:
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 4515aa3..217e5c5 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="KotlinJpsPluginSettings">
-    <option name="version" value="1.6.10" />
+    <option name="version" value="1.8.21" />
   </component>
 </project>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7fa614c..992b3a1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,42 +1,22 @@
 import org.ajoberstar.grgit.Grgit
 
 buildscript {
-  ext {
-    coroutinesVersion = '1.6.2'
-    coreVersion = '1.6.0'
-    appcompatVersion = '1.3.1'
-    activityVersion = '1.3.1'
-    lifecycleVersion = '2.3.1'
-    composeVersion = '1.1.1'
-    kotlinVersion = '1.6.10'
-    daggerVersion = '2.38.1'
-    awsVersion = '2.8.3'
-    mockitoVersion = '3.12.4'
-    robolectricVersion = '4.6.1'
-    retrofitVersion = '2.9.0'
-    materialVersion = '1.4.0'
-    epoxyVersion = '4.6.4'
-    junitVersion = '4.13.2'
-    extJunitVersion = '1.1.3'
-    espressoVersion = '3.3.0'
-    startupVersion = '1.2.0-alpha01'
-  }
-
   repositories {
     google()
     mavenCentral()
   }
   dependencies {
-    classpath 'org.ajoberstar.grgit:grgit-gradle:4.1.1'
-    classpath 'com.android.tools.build:gradle:7.1.3'
-    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
-    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.24.0'
-    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.5.30'
+    classpath libs.grgit.plugin
+    classpath libs.android.gradle.plugin
+    classpath libs.kotlin.gradle.plugin
+    classpath libs.gradle.maven.publish.plugin
+    classpath libs.dokka.gradle.plugin
   }
 }
 
 plugins {
-  id 'net.ltgt.errorprone' version '3.0.1' apply false
+  id 'net.ltgt.errorprone' apply false
+  id "com.google.devtools.ksp" apply false
 }
 
 allprojects {
@@ -53,6 +33,6 @@
   gitBranch = git.branch.current().name
 }
 
-task clean(type: Delete) {
+tasks.register('clean', Delete) {
   delete rootProject.buildDir
 }
diff --git a/gradle.properties b/gradle.properties
index 5dd1105..09a5e6f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -15,7 +15,7 @@
 POM_INCEPTION_YEAR=2017
 
 android.useAndroidX=true
-android.enableJetifier=true
+android.enableJetifier=false
 org.gradle.caching=true
 org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -Dfile.encoding=UTF-8
 org.gradle.daemon=true
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 0000000..d52d958
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,74 @@
+[libraries]
+android-gradle-plugin = "com.android.tools.build:gradle:_"
+androidx-activity-compose = "androidx.activity:activity-compose:_"
+androidx-appcompat = "androidx.appcompat:appcompat:_"
+androidx-browser = "androidx.browser:browser:_"
+androidx-cardview = "androidx.cardview:cardview:_"
+androidx-collection-ktx = "androidx.collection:collection:_"
+androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:_"
+androidx-core-ktx = "androidx.core:core-ktx:_"
+androidx-fragment-testing = "androidx.fragment:fragment-testing:_"
+androidx-multidex = "androidx.multidex:multidex:_"
+androidx-navigation-compose = "androidx.navigation:navigation-compose:_"
+androidx-navigation-ui = "androidx.navigation:navigation-ui-ktx:_"
+androidx-paging-runtime-ktx = "androidx.paging:paging-runtime-ktx:_"
+androidx-recyclerview = "androidx.recyclerview:recyclerview:_"
+androidx-test-core = "androidx.test:core:_"
+androidx-test-espresso = "androidx.test.espresso:espresso-core:_"
+androidx-test-espresso-idling = "androidx.test.espresso:espresso-idling-resource:_"
+androidx-test-junit = "androidx.test.ext:junit:_"
+androidx-test-rules = "androidx.test:rules:_"
+androidx-viewmodel-ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:_"
+aws-android-sdk-auth-userpools = "com.amazonaws:aws-android-sdk-auth-userpools:_"
+aws-android-sdk-mobile-client = "com.amazonaws:aws-android-sdk-mobile-client:_"
+aws-android-sdk-s3 = "com.amazonaws:aws-android-sdk-s3:_"
+coil-compose = "io.coil-kt:coil-compose:_"
+compose-bom = "androidx.compose:compose-bom:_"
+# Compose deps need the group/name structure without version because version is pulled from the bom.
+compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }
+compose-material = { group = "androidx.compose.material", name = "material" }
+compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" }
+compose-ui = { group = "androidx.compose.ui", name = "ui" }
+compose-ui-test-junit = "androidx.compose.ui:ui-test-junit4:_"
+compose-ui-test-manifest = "androidx.compose.ui:ui-test-manifest:_"
+compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
+dagger = "com.google.dagger:dagger:_"
+dagger-compiler = "com.google.dagger:dagger-compiler:_"
+dokka-gradle-plugin = "org.jetbrains.dokka:dokka-gradle-plugin:_"
+epoxy = "com.airbnb.android:epoxy:_"
+epoxy-processor = "com.airbnb.android:epoxy-processor:_"
+errorprone-core = "com.google.errorprone:error_prone_core:_"
+errorprone-javac = "com.google.errorprone:javac:_"
+glide = "com.github.bumptech.glide:glide:_"
+google-material = "com.google.android.material:material:_"
+gradle-maven-publish-plugin = "com.vanniktech:gradle-maven-publish-plugin:_"
+grgit-plugin = "org.ajoberstar.grgit:grgit-gradle:_"
+gson = "com.google.code.gson:gson:_"
+javac = "com.google.errorprone:javac:_"
+jjwt = "io.jsonwebtoken:jjwt:_"
+junit4 = "junit:junit:_"
+kotlin-annotation-processing-gradle = "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:_"
+kotlin-gradle-plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:_"
+kotlin-parcelize-compiler = "org.jetbrains.kotlin:kotlin-parcelize-compiler:_"
+kotlin-parcelize-runtime = "org.jetbrains.kotlin:kotlin-parcelize-runtime:_"
+kotlinx-coroutines-android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:_"
+kotlinx-coroutines-test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:_"
+mavericks = "com.airbnb.android:mavericks:_"
+mavericks-compose = "com.airbnb.android:mavericks-compose:_"
+mockito-android = "com.nhaarman.mockitokotlin2:mockito-kotlin:_"
+mockito-core = "org.mockito:mockito-core:_"
+mockito-kotlin = "org.mockito:mockito-android:_"
+mpandroidchart = "com.github.PhilJay:MPAndroidChart:_"
+mvrx = "com.airbnb.android:mvrx:_"
+nullaway = "com.uber.nullaway:nullaway:_"
+okhttp = "com.squareup.okhttp3:okhttp:_"
+okio = "com.squareup.okio:okio:_"
+org-jacoco-ant = "org.jacoco:org.jacoco.ant:_"
+profileinstaller = "androidx.profileinstaller:profileinstaller:_"
+qrcodereaderview = "com.dlazaro66.qrcodereaderview:qrcodereaderview:_"
+retrofit = "com.squareup.retrofit2:retrofit:_"
+retrofit-gson = "com.squareup.retrofit2:converter-gson:_"
+retrofit-moshi = "com.squareup.retrofit2:converter-moshi:_"
+retrofit-rxjava = "com.squareup.retrofit2:adapter-rxjava2:_"
+robolectric = "org.robolectric:robolectric:_"
+viewbinding = "androidx.databinding:viewbinding:_"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e750102..fae0804 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/issue-repro-compose/build.gradle b/issue-repro-compose/build.gradle
index d3e20bc..129022b 100755
--- a/issue-repro-compose/build.gradle
+++ b/issue-repro-compose/build.gradle
@@ -1,38 +1,42 @@
+import static de.fayard.refreshVersions.core.Versions.versionFor
+
 plugins {
     id 'com.android.application'
     id "kotlin-android"
 }
 
 android {
-    compileSdk 31
+    namespace 'com.airbnb.lottie.issues.compose'
+    compileSdk 33
     defaultConfig {
         applicationId "com.airbnb.lottie.issues.compose"
         minSdk 21
-        targetSdk 30
+        targetSdk 33
         versionCode 1
         versionName "1.0"
     }
     compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_8
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
     }
     kotlinOptions {
-        jvmTarget = JavaVersion.VERSION_1_8.toString()
+        jvmTarget = JavaVersion.VERSION_17.toString()
     }
     buildFeatures {
         compose true
     }
     composeOptions {
-        kotlinCompilerExtensionVersion composeVersion
+        kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler)
     }
 }
 
 dependencies {
     implementation project(':lottie-compose')
-    implementation "androidx.appcompat:appcompat:$appcompatVersion"
-    implementation "androidx.activity:activity-compose:$activityVersion"
-    implementation "androidx.compose.ui:ui:$composeVersion"
-    implementation "androidx.compose.material:material:$composeVersion"
-    implementation "androidx.compose.material:material-icons-extended:$composeVersion"
-    implementation "androidx.compose.ui:ui-tooling:$composeVersion"
+    implementation libs.androidx.appcompat
+    implementation libs.androidx.activity.compose
+    implementation platform(libs.compose.bom)
+    implementation libs.compose.ui
+    implementation libs.compose.material
+    implementation libs.compose.material.icons.extended
+    implementation libs.compose.ui.tooling
 }
diff --git a/issue-repro-compose/src/main/AndroidManifest.xml b/issue-repro-compose/src/main/AndroidManifest.xml
index 3a75e49..9ca497e 100755
--- a/issue-repro-compose/src/main/AndroidManifest.xml
+++ b/issue-repro-compose/src/main/AndroidManifest.xml
@@ -6,7 +6,9 @@
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar">
-        <activity android:name=".ComposeIssueReproActivity">
+        <activity
+            android:name=".ComposeIssueReproActivity"
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/issue-repro/build.gradle b/issue-repro/build.gradle
index 474f651..c5eaa35 100755
--- a/issue-repro/build.gradle
+++ b/issue-repro/build.gradle
@@ -4,17 +4,18 @@
 }
 
 android {
-    compileSdk 31
+    namespace 'com.airbnb.lottie.issues'
+    compileSdk 33
     defaultConfig {
         applicationId "com.airbnb.lottie.issues"
         minSdk 16
-        targetSdk 30
+        targetSdk 33
         versionCode 1
         versionName "1.0"
     }
     compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_8
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
     }
     buildFeatures {
         viewBinding true
@@ -23,5 +24,5 @@
 
 dependencies {
     implementation project(':lottie')
-    implementation "androidx.appcompat:appcompat:$appcompatVersion"
+    implementation libs.androidx.appcompat
 }
diff --git a/issue-repro/src/main/AndroidManifest.xml b/issue-repro/src/main/AndroidManifest.xml
index 6826412..10a59c4 100755
--- a/issue-repro/src/main/AndroidManifest.xml
+++ b/issue-repro/src/main/AndroidManifest.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.airbnb.lottie.issues">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <application
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar">
-        <activity android:name=".IssueReproActivity">
+        <activity
+            android:name=".IssueReproActivity"
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/lint.xml b/lint.xml
new file mode 100644
index 0000000..fa26a5a
--- /dev/null
+++ b/lint.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lint>
+    <!-- Generated by `./gradlew refreshVersions` to avoid errors when using _ as a version. -->
+    <issue id="GradlePluginVersion" severity="ignore" />
+    <issue id="GradleDependency" severity="ignore" />
+    <!-- There are no plans to 18n this app right now -->
+    <issue id="RtlSymmetry" severity="ignore" />
+    <issue id="RtlHardcoded" severity="ignore" />
+    <issue id="HardcodedText" severity="ignore" />
+    <issue id="LabelFor" severity="ignore" />
+    <issue id="ContentDescription" severity="ignore" />
+    <issue id="Autofill" severity="ignore" />
+    <issue id="NotificationPermission">
+        <!-- https://github.com/bumptech/glide/issues/4940 -->
+        <ignore regexp="com.bumptech.glide.request.target.NotificationTarget" />
+    </issue>
+    <issue id="MonochromeLauncherIcon" severity="ignore" />
+    <issue id="VectorPath" severity="ignore" />
+    <issue id="Overdraw" severity="ignore" />
+</lint>
\ No newline at end of file
diff --git a/lottie-compose/build.gradle b/lottie-compose/build.gradle
index e4cb067..14d6450 100644
--- a/lottie-compose/build.gradle
+++ b/lottie-compose/build.gradle
@@ -1,4 +1,5 @@
 import com.vanniktech.maven.publish.SonatypeHost
+import static de.fayard.refreshVersions.core.Versions.versionFor
 
 plugins {
   id 'com.android.library'
@@ -7,10 +8,11 @@
 }
 
 android {
-  compileSdk 31
+  namespace 'com.airbnb.lottie.compose'
+  compileSdk 33
   defaultConfig {
     minSdk 21
-    targetSdk 30
+    targetSdk 33
     testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   }
   buildTypes {
@@ -19,22 +21,20 @@
     }
   }
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
+    sourceCompatibility JavaVersion.VERSION_17
+    targetCompatibility JavaVersion.VERSION_17
   }
   kotlinOptions {
-    jvmTarget = JavaVersion.VERSION_1_8.toString()
+    jvmTarget = JavaVersion.VERSION_17.toString()
     freeCompilerArgs += [
-        "-Xallow-jvm-ir-dependencies",
-        "-Xskip-prerelease-check",
-        "-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
+        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
     ]
   }
   buildFeatures {
     compose true
   }
   composeOptions {
-    kotlinCompilerExtensionVersion composeVersion
+    kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler)
   }
 }
 
@@ -45,13 +45,14 @@
 
 dependencies {
   api project(':lottie')
-  implementation "androidx.compose.foundation:foundation:$composeVersion"
-  implementation "androidx.compose.ui:ui:$composeVersion"
+  implementation platform(libs.compose.bom)
+  implementation libs.compose.foundation
+  implementation libs.compose.ui
 
-  testImplementation "org.robolectric:robolectric:$robolectricVersion"
-  testImplementation 'androidx.collection:collection-ktx:1.1.0'
-  testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion"
-  testImplementation "junit:junit:$junitVersion"
-  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
+  testImplementation libs.robolectric
+  testImplementation libs.androidx.collection.ktx
+  testImplementation libs.kotlinx.coroutines.test
+  testImplementation libs.junit4
+  androidTestImplementation libs.androidx.test.junit
+  androidTestImplementation libs.androidx.test.espresso
 }
\ No newline at end of file
diff --git a/lottie-compose/src/main/AndroidManifest.xml b/lottie-compose/src/main/AndroidManifest.xml
deleted file mode 100644
index aca4467..0000000
--- a/lottie-compose/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.airbnb.lottie.compose" />
\ No newline at end of file
diff --git a/lottie/build.gradle b/lottie/build.gradle
index 2cc26ba..c02c429 100644
--- a/lottie/build.gradle
+++ b/lottie/build.gradle
@@ -8,11 +8,12 @@
 }
 
 android {
+  namespace 'com.airbnb.lottie'
   resourcePrefix 'lottie_'
-  compileSdk 31
+  compileSdk 33
   defaultConfig {
     minSdk 16
-    targetSdk 30
+    targetSdk 33
     testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   }
   lintOptions {
@@ -21,8 +22,8 @@
     textOutput 'stdout'
   }
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
+    sourceCompatibility JavaVersion.VERSION_17
+    targetCompatibility JavaVersion.VERSION_17
   }
   testOptions {
     unitTests {
@@ -37,21 +38,20 @@
 }
 
 dependencies {
-  implementation "androidx.appcompat:appcompat:$appcompatVersion"
+  implementation libs.androidx.appcompat
   // Do not upgrade to 2.0 because it will bring in Kotlin as a transitive dependency.
   //noinspection GradleDependency
-  implementation("com.squareup.okio:okio:1.17.4")
+  implementation libs.okio
 
-  annotationProcessor "com.uber.nullaway:nullaway:0.9.2"
-  errorprone "com.google.errorprone:error_prone_core:2.9.0"
-  //noinspection GradleDynamicVersion
-  errorproneJavac "com.google.errorprone:javac:9+181-r4173-1"
+  annotationProcessor libs.nullaway
+  errorprone libs.errorprone.core
+  errorproneJavac libs.errorprone.javac
 
-  testImplementation "org.mockito:mockito-core:$mockitoVersion"
-  testImplementation "org.robolectric:robolectric:$robolectricVersion"
-  testImplementation "junit:junit:$junitVersion"
-  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
+  testImplementation libs.mockito.core
+  testImplementation libs.robolectric
+  testImplementation libs.junit4
+  androidTestImplementation libs.androidx.test.junit
+  androidTestImplementation libs.androidx.test.espresso
 }
 
 task sourcesJar(type: Jar) {
diff --git a/lottie/src/main/AndroidManifest.xml b/lottie/src/main/AndroidManifest.xml
index f2b05f4..4865205 100644
--- a/lottie/src/main/AndroidManifest.xml
+++ b/lottie/src/main/AndroidManifest.xml
@@ -1,5 +1,3 @@
-<manifest package="com.airbnb.lottie" >
-
+<manifest>
     <application />
-
 </manifest>
diff --git a/sample-compose-benchmark/build.gradle b/sample-compose-benchmark/build.gradle
index 742600e..99a24ca 100644
--- a/sample-compose-benchmark/build.gradle
+++ b/sample-compose-benchmark/build.gradle
@@ -4,21 +4,22 @@
 }
 
 android {
-  compileSdk 31
+  namespace 'com.airbnb.lottie.sample.compose.benchmark'
+  compileSdk 33
 
   compileOptions {
-    sourceCompatibility = JavaVersion.VERSION_1_8
-    targetCompatibility = JavaVersion.VERSION_1_8
+    sourceCompatibility = JavaVersion.VERSION_17
+    targetCompatibility = JavaVersion.VERSION_17
   }
 
   kotlinOptions {
-    jvmTarget = "1.8"
+    jvmTarget = JavaVersion.VERSION_17.toString()
     freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
   }
 
   defaultConfig {
     minSdk 30
-    targetSdk 31
+    targetSdk 33
 
     testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   }
@@ -35,10 +36,10 @@
 }
 
 dependencies {
-  implementation 'androidx.test.ext:junit:1.1.3'
-  implementation 'androidx.test.espresso:espresso-core:3.4.0'
-  implementation 'androidx.test.uiautomator:uiautomator:2.2.0'
-  implementation 'androidx.benchmark:benchmark-macro-junit4:1.1.0-beta01'
+  implementation AndroidX.test.ext.junit
+  implementation AndroidX.test.espresso.core
+  implementation AndroidX.test.uiAutomator
+  implementation AndroidX.benchmark.macroJunit4
 }
 
 androidComponents {
diff --git a/sample-compose-benchmark/src/main/AndroidManifest.xml b/sample-compose-benchmark/src/main/AndroidManifest.xml
index 4029f81..16687da 100644
--- a/sample-compose-benchmark/src/main/AndroidManifest.xml
+++ b/sample-compose-benchmark/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    package="com.airbnb.lottie.sample.compose.benchmark">
+    xmlns:tools="http://schemas.android.com/tools">
 
     <queries>
         <package android:name="com.airbnb.lottie.sample.compose" />
diff --git a/sample-compose/build.gradle b/sample-compose/build.gradle
index c2f6061..f3c3698 100644
--- a/sample-compose/build.gradle
+++ b/sample-compose/build.gradle
@@ -1,3 +1,5 @@
+import static de.fayard.refreshVersions.core.Versions.versionFor
+
 plugins {
   id 'com.android.application'
   id "kotlin-android"
@@ -5,11 +7,12 @@
 }
 
 android {
-  compileSdk 31
+  namespace 'com.airbnb.lottie.sample.compose'
+  compileSdk 33
   defaultConfig {
     applicationId "com.airbnb.lottie.sample.compose"
     minSdk 21
-    targetSdk 30
+    targetSdk 33
     versionCode 1
     versionName VERSION_NAME
     testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -22,26 +25,27 @@
     }
   }
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
+    sourceCompatibility JavaVersion.VERSION_17
+    targetCompatibility JavaVersion.VERSION_17
   }
   kotlinOptions {
-    jvmTarget = JavaVersion.VERSION_1_8.toString()
+    jvmTarget = '17'
     freeCompilerArgs += [
         "-Xallow-jvm-ir-dependencies",
         "-Xskip-prerelease-check",
         "-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
         "-Xuse-experimental=androidx.compose.animation.ExperimentalAnimationApi",
+        "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi",
         "-Xopt-in=androidx.compose.material.ExperimentalMaterialApi",
-        "-Xopt-in=com.google.accompanist.pager.ExperimentalPagerApi",
         "-Xopt-in=kotlin.RequiresOptIn",
     ]
   }
   buildFeatures {
     compose true
+    buildConfig true
   }
   composeOptions {
-    kotlinCompilerExtensionVersion composeVersion
+    kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler)
   }
   packagingOptions {
     exclude 'META-INF/AL2.0'
@@ -55,34 +59,35 @@
 
 dependencies {
   implementation project(':lottie-compose')
-  implementation "androidx.core:core-ktx:$coreVersion"
-  implementation "androidx.activity:activity-compose:$activityVersion"
-  implementation 'androidx.appcompat:appcompat:1.4.0-beta01'
-  implementation "com.google.android.material:material:$materialVersion"
-  implementation "androidx.compose.ui:ui:$composeVersion"
-  implementation "androidx.compose.material:material:$composeVersion"
-  implementation "androidx.compose.material:material-icons-extended:$composeVersion"
-  implementation "androidx.compose.ui:ui-tooling:$composeVersion"
-  implementation "androidx.navigation:navigation-compose:2.4.0-alpha10"
-  implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
+  implementation libs.androidx.appcompat
+  implementation libs.androidx.core.ktx
+  implementation libs.androidx.activity.compose
+  implementation libs.google.material
+  implementation platform(libs.compose.bom)
+  implementation libs.compose.ui
+  implementation libs.compose.foundation
+  implementation libs.compose.material
+  implementation libs.compose.material.icons.extended
+  implementation libs.compose.ui.tooling
+  implementation libs.androidx.navigation.ui
+  implementation libs.androidx.navigation.compose
+  implementation libs.androidx.viewmodel.ktx
   // Need this to side load a Baseline Profile when Benchmarking
-  implementation "androidx.profileinstaller:profileinstaller:$startupVersion"
+  implementation libs.profileinstaller
 
-  implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
 
-  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+  implementation libs.kotlinx.coroutines.android
 
-  implementation "com.google.dagger:dagger:$daggerVersion"
-  kapt "com.google.dagger:dagger-compiler:$daggerVersion"
+  implementation libs.dagger
+  kapt libs.dagger.compiler
 
-  implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
-  implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
-  implementation "com.google.accompanist:accompanist-coil:0.15.0"
-  implementation "com.google.accompanist:accompanist-pager-indicators:0.18.0"
-  implementation 'com.airbnb.android:mavericks:2.3.0'
-  implementation 'com.airbnb.android:mavericks-compose:2.1.0-alpha02'
+  implementation libs.retrofit
+  implementation libs.retrofit.moshi
+  implementation libs.coil.compose
+  implementation libs.mavericks
+  implementation libs.mavericks.compose
 
-  debugImplementation "androidx.compose.ui:ui-test-manifest:$composeVersion"
+  debugImplementation libs.compose.ui.test.manifest
 
-  androidTestImplementation "androidx.compose.ui:ui-test-junit4:$composeVersion"
+  androidTestImplementation libs.compose.ui.test.junit
 }
diff --git a/sample-compose/src/main/AndroidManifest.xml b/sample-compose/src/main/AndroidManifest.xml
index 139b4a3..e0557ac 100644
--- a/sample-compose/src/main/AndroidManifest.xml
+++ b/sample-compose/src/main/AndroidManifest.xml
@@ -1,22 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.airbnb.lottie.sample.compose">
-
-    <uses-permission android:name="android.permission.INTERNET" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <application
-        android:allowBackup="true"
         android:name=".LottieComposeApplication"
+        android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.LottieCompose">
 
-        <profileable android:shell="true"/>
-
         <activity
             android:name=".ComposeActivity"
+            android:exported="true"
             android:label="@string/app_name"
             android:theme="@style/Theme.LottieCompose.NoActionBar">
             <intent-filter>
@@ -25,6 +21,10 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+
+        <profileable android:shell="true" />
     </application>
 
+    <uses-permission android:name="android.permission.INTERNET" />
+
 </manifest>
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/DynamicPropertiesExamplesPage.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/DynamicPropertiesExamplesPage.kt
index 4772318..5d6934c 100644
--- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/DynamicPropertiesExamplesPage.kt
+++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/DynamicPropertiesExamplesPage.kt
@@ -60,7 +60,7 @@
         )
     }
     var colorIndex by remember { mutableStateOf(0) }
-    val color by derivedStateOf { colors[colorIndex] }
+    val color by remember { derivedStateOf { colors[colorIndex] } }
     val blurRadius = with(LocalDensity.current) { 12.dp.toPx() }
 
     val dynamicProperties = rememberLottieDynamicProperties(
@@ -100,7 +100,7 @@
     val composition by rememberLottieComposition(LottieCompositionSpec.Asset("AndroidWave.json"))
     val extraJumpHeights = remember { listOf(0.dp, 24.dp, 48.dp, 128.dp) }
     var extraJumpIndex by remember { mutableStateOf(0) }
-    val extraJumpHeight by derivedStateOf { extraJumpHeights[extraJumpIndex] }
+    val extraJumpHeight by remember { derivedStateOf { extraJumpHeights[extraJumpIndex] } }
     val extraJumpHeightPx = with(LocalDensity.current) { extraJumpHeight.toPx() }
 
     val point = remember { PointF() }
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ImagesExamplesPage.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ImagesExamplesPage.kt
index 0bedae9..b9d5129 100644
--- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ImagesExamplesPage.kt
+++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ImagesExamplesPage.kt
@@ -106,7 +106,7 @@
         LottieCompositionSpec.RawRes(R.raw.we_accept),
         cacheKey = null,
     )
-    val imageAsset by derivedStateOf { composition?.images?.get("image_0") }
+    val imageAsset by remember { derivedStateOf { composition?.images?.get("image_0") } }
     val bitmap = rememberBitmapFromAssets("Images/android.png")
     LaunchedEffect(imageAsset, bitmap) {
         if (imageAsset != null && bitmap != null) {
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
index 79945be..c05b47a 100644
--- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
+++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
@@ -1,41 +1,33 @@
 package com.airbnb.lottie.sample.compose.examples
 
-import androidx.compose.animation.core.exponentialDecay
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.pager.HorizontalPager
+import androidx.compose.foundation.pager.PagerState
+import androidx.compose.foundation.pager.rememberPagerState
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
-import androidx.compose.ui.Alignment
+import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.unit.dp
 import com.airbnb.lottie.compose.LottieAnimation
 import com.airbnb.lottie.compose.LottieCompositionSpec
 import com.airbnb.lottie.compose.rememberLottieComposition
 import com.airbnb.lottie.sample.compose.R
-import com.google.accompanist.pager.HorizontalPager
-import com.google.accompanist.pager.HorizontalPagerIndicator
-import com.google.accompanist.pager.PagerDefaults
-import com.google.accompanist.pager.PagerState
-import com.google.accompanist.pager.rememberPagerState
 
 @Composable
 fun ViewPagerExamplePage() {
     val colors = listOf(Color.Red, Color.Green, Color.Blue, Color.Magenta)
-    val pagerState = rememberPagerState(pageCount = colors.size)
+    val pagerState = rememberPagerState()
     Box(
         modifier = Modifier
             .fillMaxSize()
     ) {
         HorizontalPager(
-            pagerState,
-            flingBehavior = PagerDefaults.rememberPagerFlingConfig(
-                pagerState,
-                decayAnimationSpec = exponentialDecay(frictionMultiplier = 0.05f)
-            )
+            colors.size,
+            state = pagerState
         ) { page ->
             Box(
                 modifier = Modifier
@@ -43,21 +35,14 @@
                     .background(colors[page])
             )
         }
-        WalkthroughAnimation(pagerState)
-        HorizontalPagerIndicator(
-            pagerState,
-            modifier = Modifier
-                .align(Alignment.BottomCenter)
-                .padding(bottom = 32.dp)
-        )
-
+        WalkthroughAnimation(pagerState, colors.size)
     }
 }
 
 @Composable
-private fun WalkthroughAnimation(pagerState: PagerState) {
+private fun WalkthroughAnimation(pagerState: PagerState, size: Int) {
     val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.walkthrough))
-    val progress by derivedStateOf { (pagerState.currentPage + pagerState.currentPageOffset) / (pagerState.pageCount - 1f) }
+    val progress by remember { derivedStateOf { (pagerState.currentPage + pagerState.currentPageOffsetFraction) / (size - 1f) } }
     LottieAnimation(
         composition,
         { progress },
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt
index 3a640f2..f53464a 100644
--- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt
+++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/player/PlayerPage.kt
@@ -134,13 +134,18 @@
     Scaffold(
         scaffoldState = scaffoldState,
         topBar = { PlayerPageTopAppBar(state, compositionResult.value) },
-    ) {
-        PlayerPageContent(
-            state,
-            compositionResult.value,
-            compositionResult.isLoading,
-            animationBackgroundColor,
-        )
+    ) { padding ->
+        Box(
+            modifier = Modifier
+                .padding(padding)
+        ) {
+            PlayerPageContent(
+                state,
+                compositionResult.value,
+                compositionResult.isLoading,
+                animationBackgroundColor,
+            )
+        }
     }
 
     if (state.showWarningsDialog) {
@@ -306,7 +311,7 @@
     state: PlayerPageState,
     composition: LottieComposition?,
 ) {
-    val totalTime = ((composition?.duration ?: 0L / state.animatable.speed) / 1000.0)
+    val totalTime = (((composition?.duration ?: (0L / state.animatable.speed)) / 1000.0))
     val totalTimeFormatted = ("%.1f").format(totalTime)
 
     val progressFormatted = ("%.1f").format(state.animatable.progress * totalTime)
diff --git a/sample/build.gradle b/sample/build.gradle
index bf60f18..869b0ab 100644
--- a/sample/build.gradle
+++ b/sample/build.gradle
@@ -1,16 +1,17 @@
 plugins {
   id 'com.android.application'
   id "kotlin-android"
-  id 'kotlin-kapt'
   id 'kotlin-parcelize'
+  id 'com.google.devtools.ksp'
 }
 
 android {
-  compileSdk 31
+  namespace 'com.airbnb.lottie.samples'
+  compileSdk 33
   defaultConfig {
     applicationId "com.airbnb.lottie"
     minSdk 16
-    targetSdk 30
+    targetSdk 33
     versionCode 70
     versionName VERSION_NAME
     multiDexEnabled true
@@ -21,6 +22,7 @@
   }
   buildFeatures {
     viewBinding true
+    buildConfig true
   }
   buildTypes {
     debug {
@@ -39,12 +41,12 @@
     baseline file("lint-baseline.xml")
   }
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
+    sourceCompatibility JavaVersion.VERSION_17
+    targetCompatibility JavaVersion.VERSION_17
   }
   kotlinOptions {
-    jvmTarget = JavaVersion.VERSION_1_8.toString()
-    freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi"]
+    jvmTarget = JavaVersion.VERSION_17.toString()
+    freeCompilerArgs += ["-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi"]
   }
   sourceSets {
     main.java.srcDirs += 'src/main/kotlin'
@@ -59,39 +61,39 @@
 
 dependencies {
   implementation project(':lottie')
-  implementation 'androidx.multidex:multidex:2.0.1'
+  implementation libs.androidx.multidex
 
-  implementation "androidx.appcompat:appcompat:$appcompatVersion"
-  implementation "androidx.recyclerview:recyclerview:1.2.1"
-  implementation "androidx.paging:paging-runtime-ktx:3.0.1"
-  implementation "androidx.cardview:cardview:1.0.0"
-  implementation "androidx.core:core-ktx:$coreVersion"
-  implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
-  implementation "androidx.browser:browser:1.3.0"
-  implementation "com.google.android.material:material:$materialVersion"
+  implementation libs.androidx.appcompat
+  implementation libs.androidx.recyclerview
+  implementation libs.androidx.paging.runtime.ktx
+  implementation libs.androidx.cardview
+  implementation libs.androidx.core.ktx
+  implementation libs.androidx.constraintlayout
+  implementation libs.androidx.browser
+  implementation libs.google.material
 
-  implementation "com.airbnb.android:epoxy:$epoxyVersion"
-  kapt "com.airbnb.android:epoxy-processor:$epoxyVersion"
-  implementation 'com.airbnb.android:mvrx:1.5.1'
+  implementation libs.epoxy
+  ksp libs.epoxy.processor
+  implementation libs.mvrx
 
-  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
-  implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
-  implementation 'com.github.PhilJay:MPAndroidChart:3.1.0'
-  implementation 'com.google.code.gson:gson:2.8.8'
-  implementation 'com.squareup.okhttp3:okhttp:4.9.1'
-  implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
-  implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
-  implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
-  implementation 'com.github.bumptech.glide:glide:4.12.0'
+  implementation libs.kotlinx.coroutines.android
+  implementation libs.qrcodereaderview
+  implementation libs.mpandroidchart
+  implementation libs.gson
+  implementation libs.okhttp
+  implementation libs.retrofit
+  implementation libs.retrofit.rxjava
+  implementation libs.retrofit.gson
+  implementation libs.glide
 
-  debugImplementation 'androidx.fragment:fragment-testing:1.3.6'
+  debugImplementation libs.androidx.fragment.testing
 
-  testImplementation "junit:junit:$junitVersion"
-  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
-  androidTestImplementation 'androidx.test:core:1.3.0'
-  androidTestImplementation 'androidx.test:rules:1.4.0'
-  androidTestImplementation "org.mockito:mockito-android:$mockitoVersion"
-  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
+  testImplementation libs.junit4
+  androidTestImplementation libs.androidx.test.junit
+  androidTestImplementation libs.androidx.test.espresso
+  androidTestImplementation libs.androidx.test.espresso.idling
+  androidTestImplementation libs.androidx.test.core
+  androidTestImplementation libs.androidx.test.rules
+  androidTestImplementation libs.mockito.android
+  androidTestImplementation libs.mockito.kotlin
 }
diff --git a/sample/lint-baseline.xml b/sample/lint-baseline.xml
index a7149f3..da9ad55 100644
--- a/sample/lint-baseline.xml
+++ b/sample/lint-baseline.xml
@@ -1639,5 +1639,4 @@
             line="39"
             column="33"/>
     </issue>
-
 </issues>
diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml
index f57a13d..7727cfa 100644
--- a/sample/src/main/AndroidManifest.xml
+++ b/sample/src/main/AndroidManifest.xml
@@ -1,22 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.airbnb.lottie.samples">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-feature
+        android:name="android.hardware.camera"
+        android:required="false" />
+
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.VIBRATE" />
 
+    <uses-permission android:name="android.permission.INTERNET" />
+
     <application
         android:name=".LottieApplication"
-        android:allowBackup="false"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
         <activity
             android:name=".MainActivity"
+            android:exported="true"
             android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -30,17 +34,21 @@
         </activity>
         <activity
             android:name=".TypographyDemoActivity"
+            android:exported="false"
             android:screenOrientation="portrait"
             android:windowSoftInputMode="stateVisible" />
         <activity
             android:name=".BullseyeActivity"
+            android:exported="false"
             android:screenOrientation="portrait" />
         <activity
             android:name=".QRScanActivity"
+            android:exported="false"
             android:screenOrientation="portrait" />
         <activity android:name=".DynamicActivity" />
         <activity
             android:name=".PlayerActivity"
+            android:exported="true"
             android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
@@ -55,14 +63,19 @@
                     android:scheme="content" />
             </intent-filter>
         </activity>
-        <activity android:name=".DynamicTextActivity" />
-        <activity android:name=".WishListActivity" />
+        <activity
+            android:name=".DynamicTextActivity"
+            android:exported="false" />
+        <activity
+            android:name=".WishListActivity"
+            android:exported="false" />
 
         <activity
             android:name=".SimpleAnimationActivity"
             android:exported="true" />
 
-        <activity android:name=".EmptyActivity" />
+        <activity
+            android:name=".EmptyActivity"
+            android:exported="false" />
     </application>
-
 </manifest>
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
index 3059b4c..b91c954 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
@@ -5,6 +5,7 @@
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
 import com.airbnb.lottie.samples.model.CompositionArgs
+import com.airbnb.lottie.samples.utils.getParcelableExtraCompat
 
 class PlayerActivity : AppCompatActivity(R.layout.player_activity) {
 
@@ -12,7 +13,9 @@
         super.onCreate(savedInstanceState)
 
         if (savedInstanceState == null) {
-            val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?: CompositionArgs(fileUri = intent.data)
+            val args =
+                intent.getParcelableExtraCompat(PlayerFragment.EXTRA_ANIMATION_ARGS, CompositionArgs::class.java)
+                    ?: CompositionArgs(fileUri = intent.data)
             supportFragmentManager.beginTransaction()
                 .add(R.id.content, PlayerFragment.forAsset(args))
                 .commit()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index b2f10cf..ed279ae 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -14,6 +14,8 @@
 import android.widget.EditText
 import androidx.appcompat.app.AppCompatActivity
 import androidx.core.content.ContextCompat
+import androidx.core.view.MenuHost
+import androidx.core.view.MenuProvider
 import androidx.core.view.children
 import androidx.core.view.isVisible
 import androidx.fragment.app.Fragment
@@ -30,6 +32,7 @@
 import com.airbnb.lottie.model.KeyPath
 import com.airbnb.lottie.samples.databinding.PlayerFragmentBinding
 import com.airbnb.lottie.samples.model.CompositionArgs
+import com.airbnb.lottie.samples.utils.getParcelableCompat
 import com.airbnb.lottie.samples.utils.viewBinding
 import com.airbnb.lottie.samples.views.BottomSheetItemView
 import com.airbnb.lottie.samples.views.BottomSheetItemViewModel_
@@ -100,7 +103,25 @@
         super.onViewCreated(view, savedInstanceState)
         (requireActivity() as AppCompatActivity).setSupportActionBar(binding.toolbar)
         (requireActivity() as AppCompatActivity).supportActionBar?.setDisplayShowTitleEnabled(false)
-        setHasOptionsMenu(true)
+        (requireActivity() as MenuHost).addMenuProvider(object : MenuProvider {
+
+            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
+                menuInflater.inflate(R.menu.fragment_player, menu)
+            }
+
+            override fun onMenuItemSelected(item: MenuItem): Boolean {
+                if (item.isCheckable) item.isChecked = !item.isChecked
+                when (item.itemId) {
+                    android.R.id.home -> requireActivity().finish()
+                    R.id.visibility -> {
+                        viewModel.setDistractionFree(item.isChecked)
+                        val menuIcon = if (item.isChecked) R.drawable.ic_eye_teal else R.drawable.ic_eye_selector
+                        item.icon = ContextCompat.getDrawable(requireContext(), menuIcon)
+                    }
+                }
+                return true
+            }
+        }, viewLifecycleOwner, Lifecycle.State.RESUMED)
 
         binding.controlBarPlayerControls.lottieVersionView.text = getString(R.string.lottie_version, BuildConfig.VERSION_NAME)
 
@@ -110,7 +131,7 @@
             }
         })
 
-        val args = arguments?.getParcelable<CompositionArgs>(EXTRA_ANIMATION_ARGS)
+        val args = arguments?.getParcelableCompat(EXTRA_ANIMATION_ARGS, CompositionArgs::class.java)
             ?: throw IllegalArgumentException("No composition args specified")
         args.animationData?.bgColorInt?.let {
             binding.controlBarBackgroundColor.backgroundButton1.setBackgroundColor(it)
@@ -394,25 +415,6 @@
         super.onDestroyView()
     }
 
-    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
-        inflater.inflate(R.menu.fragment_player, menu)
-        super.onCreateOptionsMenu(menu, inflater)
-    }
-
-    override fun onOptionsItemSelected(item: MenuItem): Boolean {
-        if (item.isCheckable) item.isChecked = !item.isChecked
-        when (item.itemId) {
-            android.R.id.home -> requireActivity().finish()
-            R.id.info -> Unit
-            R.id.visibility -> {
-                viewModel.setDistractionFree(item.isChecked)
-                val menuIcon = if (item.isChecked) R.drawable.ic_eye_teal else R.drawable.ic_eye_selector
-                item.icon = ContextCompat.getDrawable(requireContext(), menuIcon)
-            }
-        }
-        return true
-    }
-
     private fun onCompositionLoaded(composition: LottieComposition?) {
         composition ?: return
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
index 4c7a660..66d70b0 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
@@ -7,6 +7,8 @@
 import android.graphics.Color
 import android.net.Uri
 import android.os.Build
+import android.os.Bundle
+import android.os.Parcelable
 import android.os.VibrationEffect
 import android.os.Vibrator
 import android.util.Log
@@ -94,12 +96,14 @@
                 bgColor[2], bgColor[2],
                 bgColor[3], bgColor[3]
             )
+
             5 -> "#%c%c%c%c%c%c%c%c".format(
                 bgColor[1], bgColor[1],
                 bgColor[2], bgColor[2],
                 bgColor[3], bgColor[3],
                 bgColor[4], bgColor[4]
             )
+
             else -> bgColor
         }.toColorInt()
     } catch (e: IllegalArgumentException) {
@@ -111,4 +115,22 @@
 fun Context.hideKeyboard() {
     val inputMethodManager = getSystemService<InputMethodManager>()!!
     inputMethodManager.hideSoftInputFromWindow((this as Activity).currentFocus?.windowToken, 0)
+}
+
+fun <T : Parcelable> Intent.getParcelableExtraCompat(key: String, klass: Class<T>): T? {
+    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+        getParcelableExtra(key, klass)
+    } else {
+        @Suppress("DEPRECATION")
+        getParcelableExtra(key)
+    }
+}
+
+fun <T : Parcelable> Bundle.getParcelableCompat(key: String, klass: Class<T>): T? {
+    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+        getParcelable(key, klass)
+    } else {
+        @Suppress("DEPRECATION")
+        getParcelable(key)
+    }
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
index d078e4e..2dd5caa 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
@@ -1,5 +1,6 @@
 package com.airbnb.lottie.samples.views
 
+import android.annotation.SuppressLint
 import android.content.Context
 import android.util.AttributeSet
 import android.view.MotionEvent
@@ -19,6 +20,7 @@
         return super.onInterceptTouchEvent(ev)
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun onTouchEvent(event: MotionEvent): Boolean {
         viewDragHelper?.processTouchEvent(event)
         return true
diff --git a/sample/src/main/res/layout/choose_asset_fragment.xml b/sample/src/main/res/layout/choose_asset_fragment.xml
deleted file mode 100644
index 2b6b6e4..0000000
--- a/sample/src/main/res/layout/choose_asset_fragment.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:layoutManager="LinearLayoutManager" />
-</FrameLayout>
\ No newline at end of file
diff --git a/sample/src/main/res/layout/control_bar_player_controls.xml b/sample/src/main/res/layout/control_bar_player_controls.xml
index 37977ec..96b8e86 100644
--- a/sample/src/main/res/layout/control_bar_player_controls.xml
+++ b/sample/src/main/res/layout/control_bar_player_controls.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout 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"
     android:id="@+id/controlsContainer"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
@@ -20,25 +20,32 @@
             android:layout_marginLeft="16dp"
             android:gravity="center_horizontal"
             android:text="@string/ms"
-            android:textSize="12sp"/>
+            android:textSize="12sp" />
 
         <com.github.mikephil.charting.charts.LineChart
             android:id="@+id/renderTimesGraph"
             android:layout_width="match_parent"
             android:layout_height="96dp"
             android:layout_marginLeft="64dp"
-            android:layout_marginRight="64dp"/>
+            android:layout_marginRight="64dp" />
     </FrameLayout>
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
         android:layout_gravity="bottom"
         android:orientation="horizontal"
         android:paddingBottom="12dp"
         android:paddingTop="12dp">
 
+        <ImageButton
+            android:id="@+id/loopButton"
+            android:layout_width="64dp"
+            android:layout_height="32dp"
+            android:layout_gravity="center_vertical"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            app:srcCompat="@drawable/ic_loop" />
+
         <RelativeLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -50,7 +57,7 @@
                 android:layout_height="32dp"
                 android:layout_centerVertical="true"
                 android:background="?attr/selectableItemBackgroundBorderless"
-                app:srcCompat="@drawable/ic_play_pause"/>
+                app:srcCompat="@drawable/ic_play_pause" />
 
             <TextView
                 android:id="@+id/currentFrameView"
@@ -61,7 +68,8 @@
                 android:layout_marginTop="16dp"
                 android:text="0"
                 android:textColor="#464646"
-                android:textSize="10sp"/>
+                android:textSize="10sp"
+                tools:ignore="SmallSp" />
         </RelativeLayout>
 
         <androidx.appcompat.widget.AppCompatSeekBar
@@ -69,15 +77,7 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
-            android:layout_weight="1"/>
-
-        <ImageButton
-            android:id="@+id/loopButton"
-            android:layout_width="64dp"
-            android:layout_height="32dp"
-            android:layout_gravity="center_vertical"
-            android:background="?attr/selectableItemBackgroundBorderless"
-            app:srcCompat="@drawable/ic_loop"/>
+            android:layout_weight="1" />
     </LinearLayout>
 
     <TextView
@@ -91,7 +91,8 @@
         android:text="@string/render_times_per_layer_button"
         android:textColor="@color/item_selected_teal"
         android:textSize="10sp"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        tools:ignore="SmallSp" />
 
     <TextView
         android:id="@+id/lottieVersionView"
@@ -100,11 +101,12 @@
         android:layout_gravity="bottom|center_horizontal"
         android:layout_marginBottom="14dp"
         android:textColor="@color/text_color"
-        android:textSize="10sp"/>
+        android:textSize="10sp"
+        tools:ignore="SmallSp" />
 
     <View
         android:layout_width="match_parent"
         android:layout_height="@dimen/divider_height"
         android:layout_gravity="bottom"
-        android:background="@color/divider"/>
+        android:background="@color/divider" />
 </FrameLayout>
diff --git a/sample/src/main/res/layout/empty_fragment.xml b/sample/src/main/res/layout/empty_fragment.xml
deleted file mode 100644
index e54d188..0000000
--- a/sample/src/main/res/layout/empty_fragment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"/>
\ No newline at end of file
diff --git a/sample/src/main/res/layout/font_fragment.xml b/sample/src/main/res/layout/font_fragment.xml
deleted file mode 100644
index 71ed6fa..0000000
--- a/sample/src/main/res/layout/font_fragment.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:orientation="horizontal">
-
-        <com.airbnb.lottie.LottieAnimationView
-            android:id="@+id/original"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginRight="16dp"
-            app:lottie_rawRes="@raw/name"
-            app:lottie_autoPlay="true"
-            app:lottie_loop="true"/>
-
-        <com.airbnb.lottie.LottieAnimationView
-            android:id="@+id/dynamic_text"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:lottie_rawRes="@raw/name"
-            app:lottie_autoPlay="true"
-            app:lottie_loop="true"/>
-    </LinearLayout>
-
-    <EditText
-        android:id="@+id/name_edit_text"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="16dp"
-        android:layout_marginTop="32dp"
-        android:layout_marginRight="16dp"
-        android:inputType="text"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/sample/src/main/res/layout/view_holder_grid_item.xml b/sample/src/main/res/layout/view_holder_grid_item.xml
deleted file mode 100644
index d7a7736..0000000
--- a/sample/src/main/res/layout/view_holder_grid_item.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:singleLine="true"
-        android:maxLines="1"/>
-
-    <com.airbnb.lottie.LottieAnimationView
-        android:id="@+id/animation_view"
-        android:layout_width="match_parent"
-        android:layout_height="200dp"
-        android:background="@drawable/outline"
-        android:orientation="vertical"
-        app:lottie_autoPlay="true"
-        app:lottie_loop="true" />
-</LinearLayout>
\ No newline at end of file
diff --git a/sample/src/main/res/layout/view_holder_letter.xml b/sample/src/main/res/layout/view_holder_letter.xml
deleted file mode 100644
index 6dcd1c5..0000000
--- a/sample/src/main/res/layout/view_holder_letter.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<com.airbnb.lottie.LottieAnimationView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content" />
\ No newline at end of file
diff --git a/sample/src/main/res/layout/view_holder_warning.xml b/sample/src/main/res/layout/view_holder_warning.xml
deleted file mode 100644
index 37c983f..0000000
--- a/sample/src/main/res/layout/view_holder_warning.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp"
-    android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/warning"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="4dp"
-        android:paddingBottom="4dp"/>
-
-    <View
-        android:id="@+id/divider"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/divider_height"
-        android:background="@color/divider"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/sample/src/main/res/layout/warnings_fragment.xml b/sample/src/main/res/layout/warnings_fragment.xml
deleted file mode 100644
index b90f48a..0000000
--- a/sample/src/main/res/layout/warnings_fragment.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:minWidth="256dp"
-    android:minHeight="256dp">
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textColor="@android:color/black"
-        android:textSize="20sp"
-        android:padding="16sp"
-        android:text="Warnings"/>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/divider_height"
-        android:background="@color/divider"/>
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        app:layoutManager="LinearLayoutManager"/>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/divider_height"
-        android:background="@color/divider"/>
-
-    <Button
-        android:id="@+id/okButton"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="right"
-        android:background="?selectableItemBackground"
-        android:textColor="@color/material_teal"
-        android:textSize="16sp"
-        android:text="OK"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/sample/src/main/res/menu/bottom_bar.xml b/sample/src/main/res/menu/bottom_bar.xml
index 13b211d..f49b068 100644
--- a/sample/src/main/res/menu/bottom_bar.xml
+++ b/sample/src/main/res/menu/bottom_bar.xml
@@ -5,23 +5,23 @@
         android:id="@+id/showcase"
         android:icon="@drawable/ic_showcase"
         android:title="@string/bottom_bar_showcase"
-        app:showAsAction="always|withText"/>
+        app:showAsAction="ifRoom|withText"/>
 
     <item
         android:id="@+id/preview"
         android:icon="@drawable/ic_device"
         android:title="@string/bottom_bar_preview"
-        app:showAsAction="always|withText"/>
+        app:showAsAction="ifRoom|withText"/>
 
     <item
         android:id="@+id/lottiefiles"
         android:icon="@drawable/ic_lottiefiles"
         android:title="@string/bottom_bar_lottiefiles"
-        app:showAsAction="always|withText"/>
+        app:showAsAction="ifRoom|withText"/>
 
     <item
         android:id="@+id/learn"
         android:icon="@drawable/ic_learn"
         android:title="@string/bottom_bar_learn"
-        app:showAsAction="always|withText"/>
+        app:showAsAction="ifRoom|withText"/>
 </menu>
\ No newline at end of file
diff --git a/sample/src/main/res/menu/fragment_animation.xml b/sample/src/main/res/menu/fragment_animation.xml
deleted file mode 100644
index 3af7264..0000000
--- a/sample/src/main/res/menu/fragment_animation.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">
-    <item
-        android:id="@+id/render_times_graph"
-        android:title="@string/render_times_graph"
-        android:checkable="true"
-        android:checked="false"
-        app:showAsAction="never" />
-
-    <item
-        android:id="@+id/hardware_acceleration"
-        android:title="@string/hardware_acceleration"
-        android:checkable="true"
-        android:checked="false"
-        app:showAsAction="never" />
-
-    <item
-        android:id="@+id/merge_paths"
-        android:title="@string/enable_merge_paths"
-        android:checkable="true"
-        android:checked="false"
-        app:showAsAction="never" />
-</menu>
\ No newline at end of file
diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml
index 5ddb8a1..8cac8da 100644
--- a/sample/src/main/res/values/strings.xml
+++ b/sample/src/main/res/values/strings.xml
@@ -3,9 +3,6 @@
     <string name="invalid_assets">Unable to load assets</string>
     <string name="permission_required">Camera permissions are required to use the QR Scanner</string>
     <string name="scan_prompt">Scan QR Code from lottiefiles.com</string>
-    <string name="render_times_graph">Show real time render time graph</string>
-    <string name="hardware_acceleration">Use hardware acceleration</string>
-    <string name="enable_merge_paths">Enable merge paths (KK+ only)</string>
     <string name="menu_item_visibility">Hide Controls</string>
 
     <!-- Shortcuts -->
@@ -22,8 +19,6 @@
     <string name="qr_code_overlay">QR code overlay</string>
     <string name="qr_permission_denied">QR scanning requires the camera permission.</string>
 
-    <string name="scale">Scale</string>
-    <string name="background">Background</string>
     <string name="ms">ms</string>
 
     <string name="bottom_bar_showcase">Showcase</string>
@@ -76,8 +71,6 @@
     <string name="recent">Recent</string>
     <string name="search">Search</string>
 
-    <string name="anonymous">Anonymous</string>
-
     <string name="showcase_item_bullseye">\nBullseye</string>
     <string name="showcase_item_dynamic_properties">Dynamic\nProperties</string>
     <string name="showcase_item_animated_text">Animated\nText</string>
diff --git a/settings.gradle b/settings.gradle
index 4152c5c..5ab302e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,7 @@
+plugins {
+  id 'de.fayard.refreshVersions' version '0.51.0'
+}
+
 include ':lottie'
 include ':lottie-compose'
 include ':sample'
diff --git a/snapshot-tests/build.gradle b/snapshot-tests/build.gradle
index d3beaef..c50f799 100644
--- a/snapshot-tests/build.gradle
+++ b/snapshot-tests/build.gradle
@@ -1,3 +1,5 @@
+import static de.fayard.refreshVersions.core.Versions.versionFor
+
 plugins {
   id 'com.android.application'
   id "kotlin-android"
@@ -5,11 +7,12 @@
 }
 
 android {
-  compileSdk 31
+  namespace 'com.airbnb.lottie.snapshots'
+  compileSdk 33
   defaultConfig {
     applicationId "com.airbnb.lottie.snapshots"
     minSdk 21
-    targetSdk 30
+    targetSdk 33
     versionCode 1
     versionName VERSION_NAME
     testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -30,12 +33,12 @@
   }
 
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
+    sourceCompatibility JavaVersion.VERSION_17
+    targetCompatibility JavaVersion.VERSION_17
   }
 
   kotlinOptions {
-    jvmTarget = JavaVersion.VERSION_1_8.toString()
+    jvmTarget = JavaVersion.VERSION_17.toString()
     freeCompilerArgs += [
         "-Xallow-jvm-ir-dependencies",
         "-Xskip-prerelease-check",
@@ -46,10 +49,11 @@
   buildFeatures {
     compose true
     viewBinding true
+    buildConfig true
   }
 
   composeOptions {
-    kotlinCompilerExtensionVersion composeVersion
+    kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler)
   }
 }
 
@@ -59,25 +63,26 @@
 
 dependencies {
   implementation project(':lottie-compose')
-  implementation "androidx.core:core-ktx:$coreVersion"
-  implementation "androidx.activity:activity-compose:$activityVersion"
-  implementation 'androidx.appcompat:appcompat:1.4.0-beta01'
-  implementation "androidx.compose.ui:ui:$composeVersion"
-  implementation "androidx.compose.ui:ui-tooling:$composeVersion"
-  implementation "androidx.compose.material:material:$composeVersion"
+  implementation libs.androidx.appcompat
+  implementation libs.androidx.core.ktx
+  implementation libs.androidx.activity.compose
+  implementation platform(libs.compose.bom)
+  implementation libs.compose.ui
+  implementation libs.compose.ui.tooling
+  implementation libs.compose.material
 
-  implementation 'com.squareup.okhttp3:okhttp:4.9.1'
+  implementation libs.okhttp
 
-  androidTestImplementation "com.amazonaws:aws-android-sdk-s3:$awsVersion"
-  androidTestImplementation("com.amazonaws:aws-android-sdk-mobile-client:$awsVersion") { transitive = true }
-  androidTestImplementation("com.amazonaws:aws-android-sdk-auth-userpools:$awsVersion") { transitive = true }
+  androidTestImplementation libs.aws.android.sdk.s3
+  androidTestImplementation(libs.aws.android.sdk.mobile.client) { transitive = true }
+  androidTestImplementation(libs.aws.android.sdk.auth.userpools) { transitive = true }
 
-  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
-  androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
-  androidTestImplementation 'androidx.test:core:1.3.0'
-  androidTestImplementation 'androidx.test:rules:1.4.0'
-  androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.1'
-  androidTestImplementation "org.mockito:mockito-android:$mockitoVersion"
-  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
+  androidTestImplementation libs.androidx.test.junit
+  androidTestImplementation libs.androidx.test.espresso
+  androidTestImplementation libs.androidx.test.espresso.idling
+  androidTestImplementation libs.androidx.test.core
+  androidTestImplementation libs.androidx.test.rules
+  androidTestImplementation libs.jjwt
+  androidTestImplementation libs.mockito.android
+  androidTestImplementation libs.mockito.kotlin
 }
diff --git a/snapshot-tests/src/main/AndroidManifest.xml b/snapshot-tests/src/main/AndroidManifest.xml
index 0004b3b..a933cd2 100644
--- a/snapshot-tests/src/main/AndroidManifest.xml
+++ b/snapshot-tests/src/main/AndroidManifest.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.airbnb.lottie.snapshots">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
diff --git a/versions.properties b/versions.properties
new file mode 100644
index 0000000..a00a2ae
--- /dev/null
+++ b/versions.properties
@@ -0,0 +1,1072 @@
+#### Dependencies and Plugin versions with their available updates.
+#### Generated by `./gradlew refreshVersions` version 0.51.0
+####
+#### Don't manually edit or split the comments that start with four hashtags (####),
+#### they will be overwritten by refreshVersions.
+####
+#### suppress inspection "SpellCheckingInspection" for whole file
+#### suppress inspection "UnusedProperty" for whole file
+
+plugin.android=8.0.1
+## # available=8.1.0-alpha01
+## # available=8.1.0-alpha02
+## # available=8.1.0-alpha03
+## # available=8.1.0-alpha04
+## # available=8.1.0-alpha05
+## # available=8.1.0-alpha06
+## # available=8.1.0-alpha07
+## # available=8.1.0-alpha08
+## # available=8.1.0-alpha09
+## # available=8.1.0-alpha10
+## # available=8.1.0-alpha11
+## # available=8.1.0-beta01
+## # available=8.2.0-alpha01
+## # available=8.2.0-alpha02
+
+## unused
+   plugin.ksp=1.8.21-1.0.11
+
+version.androidx.compose=2023.05.00
+
+## unused
+version.androidx.compose..compose-bom=2023.05.00
+
+version.coil-kt=2.3.0
+
+version.robolectric=4.10.2
+
+version.retrofit2=2.9.0
+
+version.org.jetbrains.dokka..dokka-gradle-plugin=1.5.30
+##                                   # available=1.5.31
+##                                   # available=1.6.0
+##                                   # available=1.6.10
+##                                   # available=1.6.20
+##                                   # available=1.6.21
+##                                   # available=1.7.0
+##                                   # available=1.7.10
+##                                   # available=1.7.20
+##                                   # available=1.8.10
+
+## unused
+version.org.jacoco..org.jacoco.ant=0.8.3
+
+version.org.ajoberstar.grgit..grgit-gradle=4.1.1
+##                             # available=5.0.0-beta.1
+##                             # available=5.0.0-rc.1
+##                             # available=5.0.0-rc.2
+##                             # available=5.0.0-rc.3
+##                             # available=5.0.0-rc.7
+##                             # available=5.0.0
+##                             # available=5.1.0-rc.1
+##                             # available=5.1.0
+##                             # available=5.2.0
+
+# Do not update to 2.0. It will pull in Kotlin as a transitive dependency into the lottie library.
+ version.okio=1.17.5
+### available=2.0.0-RC1
+### available=2.0.0
+### available=2.1.0
+### available=2.2.0
+### available=2.2.1
+### available=2.2.2
+### available=2.3.0
+### available=2.4.0
+### available=2.4.1
+### available=2.4.2
+### available=2.4.3
+### available=2.5.0
+### available=2.6.0
+### available=2.7.0-alpha.lockfree.1
+### available=2.7.0-alpha.lockfree.2
+### available=2.7.0
+### available=2.8.0
+### available=2.9.0
+### available=2.10.0
+### available=3.0.0-alpha.1
+### available=3.0.0-alpha.2
+### available=3.0.0-alpha.3
+### available=3.0.0-alpha.4
+### available=3.0.0-alpha.5
+### available=3.0.0-alpha.6
+### available=3.0.0-alpha.7
+### available=3.0.0-alpha.8
+### available=3.0.0-alpha.9
+### available=3.0.0-alpha.10
+### available=3.0.0-alpha.11
+### available=3.0.0
+### available=3.1.0
+### available=3.2.0
+### available=3.3.0
+
+version.okhttp3=4.11.0
+##  # available=5.0.0-alpha.1
+##  # available=5.0.0-alpha.2
+##  # available=5.0.0-alpha.3
+##  # available=5.0.0-alpha.4
+##  # available=5.0.0-alpha.5
+##  # available=5.0.0-alpha.6
+##  # available=5.0.0-alpha.7
+##  # available=5.0.0-alpha.8
+##  # available=5.0.0-alpha.9
+##  # available=5.0.0-alpha.10
+##  # available=5.0.0-alpha.11
+
+version.mockito=3.12.4
+##  # available=4.0.0
+##  # available=4.1.0
+##  # available=4.2.0
+##  # available=4.3.0
+##  # available=4.3.1
+##  # available=4.4.0
+##  # available=4.5.0
+##  # available=4.5.1
+##  # available=4.6.0
+##  # available=4.6.1
+##  # available=4.7.0
+##  # available=4.8.0
+##  # available=4.8.1
+##  # available=4.9.0
+##  # available=4.10.0
+##  # available=4.11.0
+##  # available=5.0.0
+##  # available=5.1.0
+##  # available=5.1.1
+##  # available=5.2.0
+##  # available=5.3.0
+##  # available=5.3.1
+
+version.kotlinx.coroutines=1.7.0
+
+version.kotlin=1.8.21
+
+version.junit.junit=4.13.2
+
+version.io.jsonwebtoken..jjwt=0.9.1
+
+version.google.dagger=2.46
+
+version.google.android.material=1.4.0
+##                  # available=1.5.0-alpha01
+##                  # available=1.5.0-alpha02
+##                  # available=1.5.0-alpha03
+##                  # available=1.5.0-alpha04
+##                  # available=1.5.0-alpha05
+##                  # available=1.5.0-beta01
+##                  # available=1.5.0-rc01
+##                  # available=1.5.0
+##                  # available=1.6.0-alpha01
+##                  # available=1.6.0-alpha02
+##                  # available=1.6.0-alpha03
+##                  # available=1.6.0-beta01
+##                  # available=1.6.0-rc01
+##                  # available=1.6.0
+##                  # available=1.6.1
+##                  # available=1.7.0-alpha01
+##                  # available=1.7.0-alpha02
+##                  # available=1.7.0-alpha03
+##                  # available=1.7.0-beta01
+##                  # available=1.7.0-rc01
+##                  # available=1.7.0
+##                  # available=1.8.0-alpha01
+##                  # available=1.8.0-alpha02
+##                  # available=1.8.0-alpha03
+##                  # available=1.8.0-beta01
+##                  # available=1.8.0-rc01
+##                  # available=1.8.0
+##                  # available=1.9.0-alpha01
+##                  # available=1.9.0-alpha02
+##                  # available=1.9.0-beta01
+##                  # available=1.9.0-rc01
+##                  # available=1.9.0
+##                  # available=1.10.0-alpha01
+##                  # available=1.10.0-alpha02
+
+version.com.vanniktech..gradle-maven-publish-plugin=0.24.0
+##                                      # available=0.25.0-rc1
+##                                      # available=0.25.0
+##                                      # available=0.25.1
+##                                      # available=0.25.2-rc1
+##                                      # available=0.25.2
+
+version.com.uber.nullaway..nullaway=0.9.2
+##                      # available=0.9.3
+##                      # available=0.9.4
+##                      # available=0.9.5
+##                      # available=0.9.6
+##                      # available=0.9.7
+##                      # available=0.9.8
+##                      # available=0.9.9
+##                      # available=0.9.10
+##                      # available=0.10.0
+##                      # available=0.10.1
+##                      # available=0.10.2
+##                      # available=0.10.3
+##                      # available=0.10.4
+##                      # available=0.10.5
+##                      # available=0.10.6
+##                      # available=0.10.7
+##                      # available=0.10.8
+##                      # available=0.10.9
+##                      # available=0.10.10
+
+version.com.nhaarman.mockitokotlin2..mockito-kotlin=2.2.0
+
+version.com.google.errorprone..javac=9+181-r4173-1
+##                       # available=1.8.0-u20
+##                       # available=1.8.0-beta-132
+##                       # available=1.9.0-dev-r2644-1
+##                       # available=1.9.0-dev-r2644-2
+##                       # available=1.9.0-dev-r2973-1
+##                       # available=1.9.0-dev-r2973-2
+##                       # available=9-dev-r3297-1
+##                       # available=9-dev-r3297-1-shaded
+##                       # available=9-dev-r3297-2
+##                       # available=9-dev-r3297-3
+##                       # available=9-dev-r3297-4
+##                       # available=9-dev-r4023-1
+##                       # available=9-dev-r4023-2
+##                       # available=9-dev-r4023-3
+
+version.com.google.errorprone..error_prone_core=2.9.0
+##                                  # available=2.10.0
+##                                  # available=2.11.0
+##                                  # available=2.12.0
+##                                  # available=2.12.1
+##                                  # available=2.13.0
+##                                  # available=2.13.1
+##                                  # available=2.14.0
+##                                  # available=2.15.0
+##                                  # available=2.16
+##                                  # available=2.17.0
+##                                  # available=2.18.0
+
+version.com.google.code.gson..gson=2.8.8
+##                     # available=2.8.9
+##                     # available=2.9.0
+##                     # available=2.9.1
+##                     # available=2.10
+##                     # available=2.10.1
+
+version.com.github.bumptech.glide..glide=4.12.0
+##                           # available=4.13.0
+##                           # available=4.13.1
+##                           # available=4.13.2
+##                           # available=4.14.0
+##                           # available=4.14.1
+##                           # available=4.14.2
+##                           # available=4.15.0
+##                           # available=4.15.1
+
+version.com.github.PhilJay..MPAndroidChart=3.1.0
+
+version.com.dlazaro66.qrcodereaderview..qrcodereaderview=2.0.2
+
+version.com.amazonaws..aws-android-sdk-s3=2.8.3
+##                            # available=2.8.4
+##                            # available=2.8.5
+##                            # available=2.9.0
+##                            # available=2.9.1
+##                            # available=2.9.2
+##                            # available=2.10.0
+##                            # available=2.10.1
+##                            # available=2.11.0
+##                            # available=2.11.1
+##                            # available=2.12.0
+##                            # available=2.12.1
+##                            # available=2.12.2
+##                            # available=2.12.3
+##                            # available=2.12.4
+##                            # available=2.12.5
+##                            # available=2.12.6
+##                            # available=2.12.7
+##                            # available=2.13.0
+##                            # available=2.13.1
+##                            # available=2.13.2
+##                            # available=2.13.3
+##                            # available=2.13.4
+##                            # available=2.13.5
+##                            # available=2.13.6
+##                            # available=2.13.7
+##                            # available=2.14.0
+##                            # available=2.14.1
+##                            # available=2.14.2
+##                            # available=2.15.0
+##                            # available=2.15.1
+##                            # available=2.15.2
+##                            # available=2.16.0
+##                            # available=2.16.1
+##                            # available=2.16.2
+##                            # available=2.16.3
+##                            # available=2.16.4
+##                            # available=2.16.5
+##                            # available=2.16.6
+##                            # available=2.16.7
+##                            # available=2.16.8
+##                            # available=2.16.9
+##                            # available=2.16.10
+##                            # available=2.16.11
+##                            # available=2.16.12
+##                            # available=2.16.13
+##                            # available=2.17.0
+##                            # available=2.17.1
+##                            # available=2.18.0
+##                            # available=2.19.0
+##                            # available=2.19.1
+##                            # available=2.19.2
+##                            # available=2.19.3
+##                            # available=2.19.4
+##                            # available=2.20.0
+##                            # available=2.20.1
+##                            # available=2.21.0
+##                            # available=2.22.0
+##                            # available=2.22.1
+##                            # available=2.22.2
+##                            # available=2.22.3
+##                            # available=2.22.4
+##                            # available=2.22.5
+##                            # available=2.22.6
+##                            # available=2.22.7
+##                            # available=2.23.0
+##                            # available=2.24.0
+##                            # available=2.25.0
+##                            # available=2.26.0
+##                            # available=2.27.0
+##                            # available=2.28.0
+##                            # available=2.29.0
+##                            # available=2.30.0
+##                            # available=2.31.0
+##                            # available=2.32.0
+##                            # available=2.33.0
+##                            # available=2.34.0
+##                            # available=2.35.0
+##                            # available=2.36.0
+##                            # available=2.37.0
+##                            # available=2.37.1
+##                            # available=2.38.0
+##                            # available=2.39.0
+##                            # available=2.40.0
+##                            # available=2.41.0
+##                            # available=2.41.1
+##                            # available=2.42.0
+##                            # available=2.43.0
+##                            # available=2.44.0
+##                            # available=2.45.0
+##                            # available=2.46.0
+##                            # available=2.47.0
+##                            # available=2.48.0
+##                            # available=2.48.1
+##                            # available=2.49.0
+##                            # available=2.50.0
+##                            # available=2.50.1
+##                            # available=2.51.0
+##                            # available=2.52.0
+##                            # available=2.52.1
+##                            # available=2.53.0
+##                            # available=2.54.0
+##                            # available=2.55.0
+##                            # available=2.56.0
+##                            # available=2.57.0
+##                            # available=2.58.0
+##                            # available=2.59.0
+##                            # available=2.59.1
+##                            # available=2.60.0
+##                            # available=2.61.0
+##                            # available=2.62.0
+##                            # available=2.62.1
+##                            # available=2.62.2
+##                            # available=2.63.0
+##                            # available=2.64.0
+##                            # available=2.65.0
+##                            # available=2.66.0
+##                            # available=2.67.0
+##                            # available=2.68.0
+
+version.com.amazonaws..aws-android-sdk-mobile-client=2.8.3
+##                                       # available=2.8.4
+##                                       # available=2.8.5
+##                                       # available=2.9.0
+##                                       # available=2.9.1
+##                                       # available=2.9.2
+##                                       # available=2.10.0
+##                                       # available=2.10.1
+##                                       # available=2.11.0
+##                                       # available=2.11.1
+##                                       # available=2.12.0
+##                                       # available=2.12.1
+##                                       # available=2.12.2
+##                                       # available=2.12.3
+##                                       # available=2.12.4
+##                                       # available=2.12.5
+##                                       # available=2.12.6
+##                                       # available=2.12.7
+##                                       # available=2.13.0
+##                                       # available=2.13.1
+##                                       # available=2.13.2
+##                                       # available=2.13.3
+##                                       # available=2.13.4
+##                                       # available=2.13.5
+##                                       # available=2.13.6
+##                                       # available=2.13.7
+##                                       # available=2.14.0
+##                                       # available=2.14.1
+##                                       # available=2.14.2
+##                                       # available=2.15.0
+##                                       # available=2.15.1
+##                                       # available=2.15.2
+##                                       # available=2.16.0
+##                                       # available=2.16.1
+##                                       # available=2.16.2
+##                                       # available=2.16.3
+##                                       # available=2.16.4
+##                                       # available=2.16.5
+##                                       # available=2.16.6
+##                                       # available=2.16.7
+##                                       # available=2.16.8
+##                                       # available=2.16.9
+##                                       # available=2.16.10
+##                                       # available=2.16.11
+##                                       # available=2.16.12
+##                                       # available=2.16.13
+##                                       # available=2.17.0
+##                                       # available=2.17.1
+##                                       # available=2.18.0
+##                                       # available=2.19.0
+##                                       # available=2.19.1
+##                                       # available=2.19.2
+##                                       # available=2.19.3
+##                                       # available=2.19.4
+##                                       # available=2.20.0
+##                                       # available=2.20.1
+##                                       # available=2.21.0
+##                                       # available=2.22.0
+##                                       # available=2.22.1
+##                                       # available=2.22.2
+##                                       # available=2.22.3
+##                                       # available=2.22.4
+##                                       # available=2.22.5
+##                                       # available=2.22.6
+##                                       # available=2.22.7
+##                                       # available=2.23.0
+##                                       # available=2.24.0
+##                                       # available=2.25.0
+##                                       # available=2.26.0
+##                                       # available=2.27.0
+##                                       # available=2.28.0
+##                                       # available=2.29.0
+##                                       # available=2.30.0
+##                                       # available=2.31.0
+##                                       # available=2.32.0
+##                                       # available=2.33.0
+##                                       # available=2.34.0
+##                                       # available=2.35.0
+##                                       # available=2.36.0
+##                                       # available=2.37.0
+##                                       # available=2.37.1
+##                                       # available=2.38.0
+##                                       # available=2.39.0
+##                                       # available=2.40.0
+##                                       # available=2.41.0
+##                                       # available=2.41.1
+##                                       # available=2.42.0
+##                                       # available=2.43.0
+##                                       # available=2.44.0
+##                                       # available=2.45.0
+##                                       # available=2.46.0
+##                                       # available=2.47.0
+##                                       # available=2.48.0
+##                                       # available=2.48.1
+##                                       # available=2.49.0
+##                                       # available=2.50.0
+##                                       # available=2.50.1
+##                                       # available=2.51.0
+##                                       # available=2.52.0
+##                                       # available=2.52.1
+##                                       # available=2.53.0
+##                                       # available=2.54.0
+##                                       # available=2.55.0
+##                                       # available=2.56.0
+##                                       # available=2.57.0
+##                                       # available=2.58.0
+##                                       # available=2.59.0
+##                                       # available=2.59.1
+##                                       # available=2.60.0
+##                                       # available=2.61.0
+##                                       # available=2.62.0
+##                                       # available=2.62.1
+##                                       # available=2.62.2
+##                                       # available=2.63.0
+##                                       # available=2.64.0
+##                                       # available=2.65.0
+##                                       # available=2.66.0
+##                                       # available=2.67.0
+##                                       # available=2.68.0
+
+version.com.amazonaws..aws-android-sdk-auth-userpools=2.8.3
+##                                        # available=2.8.4
+##                                        # available=2.8.5
+##                                        # available=2.9.0
+##                                        # available=2.9.1
+##                                        # available=2.9.2
+##                                        # available=2.10.0
+##                                        # available=2.10.1
+##                                        # available=2.11.0
+##                                        # available=2.11.1
+##                                        # available=2.12.0
+##                                        # available=2.12.1
+##                                        # available=2.12.2
+##                                        # available=2.12.3
+##                                        # available=2.12.4
+##                                        # available=2.12.5
+##                                        # available=2.12.6
+##                                        # available=2.12.7
+##                                        # available=2.13.0
+##                                        # available=2.13.1
+##                                        # available=2.13.2
+##                                        # available=2.13.3
+##                                        # available=2.13.4
+##                                        # available=2.13.5
+##                                        # available=2.13.6
+##                                        # available=2.13.7
+##                                        # available=2.14.0
+##                                        # available=2.14.1
+##                                        # available=2.14.2
+##                                        # available=2.15.0
+##                                        # available=2.15.1
+##                                        # available=2.15.2
+##                                        # available=2.16.0
+##                                        # available=2.16.1
+##                                        # available=2.16.2
+##                                        # available=2.16.3
+##                                        # available=2.16.4
+##                                        # available=2.16.5
+##                                        # available=2.16.6
+##                                        # available=2.16.7
+##                                        # available=2.16.8
+##                                        # available=2.16.9
+##                                        # available=2.16.10
+##                                        # available=2.16.11
+##                                        # available=2.16.12
+##                                        # available=2.16.13
+##                                        # available=2.17.0
+##                                        # available=2.17.1
+##                                        # available=2.18.0
+##                                        # available=2.19.0
+##                                        # available=2.19.1
+##                                        # available=2.19.2
+##                                        # available=2.19.3
+##                                        # available=2.19.4
+##                                        # available=2.20.0
+##                                        # available=2.20.1
+##                                        # available=2.21.0
+##                                        # available=2.22.0
+##                                        # available=2.22.1
+##                                        # available=2.22.2
+##                                        # available=2.22.3
+##                                        # available=2.22.4
+##                                        # available=2.22.5
+##                                        # available=2.22.6
+##                                        # available=2.22.7
+##                                        # available=2.23.0
+##                                        # available=2.24.0
+##                                        # available=2.25.0
+##                                        # available=2.26.0
+##                                        # available=2.27.0
+##                                        # available=2.28.0
+##                                        # available=2.29.0
+##                                        # available=2.30.0
+##                                        # available=2.31.0
+##                                        # available=2.32.0
+##                                        # available=2.33.0
+##                                        # available=2.34.0
+##                                        # available=2.35.0
+##                                        # available=2.36.0
+##                                        # available=2.37.0
+##                                        # available=2.37.1
+##                                        # available=2.38.0
+##                                        # available=2.39.0
+##                                        # available=2.40.0
+##                                        # available=2.41.0
+##                                        # available=2.41.1
+##                                        # available=2.42.0
+##                                        # available=2.43.0
+##                                        # available=2.44.0
+##                                        # available=2.45.0
+##                                        # available=2.46.0
+##                                        # available=2.47.0
+##                                        # available=2.48.0
+##                                        # available=2.48.1
+##                                        # available=2.49.0
+##                                        # available=2.50.0
+##                                        # available=2.50.1
+##                                        # available=2.51.0
+##                                        # available=2.52.0
+##                                        # available=2.52.1
+##                                        # available=2.53.0
+##                                        # available=2.54.0
+##                                        # available=2.55.0
+##                                        # available=2.56.0
+##                                        # available=2.57.0
+##                                        # available=2.58.0
+##                                        # available=2.59.0
+##                                        # available=2.59.1
+##                                        # available=2.60.0
+##                                        # available=2.61.0
+##                                        # available=2.62.0
+##                                        # available=2.62.1
+##                                        # available=2.62.2
+##                                        # available=2.63.0
+##                                        # available=2.64.0
+##                                        # available=2.65.0
+##                                        # available=2.66.0
+##                                        # available=2.67.0
+##                                        # available=2.68.0
+
+version.com.airbnb.android..mvrx=1.5.1
+##                   # available=2.0.0-alpha1
+##                   # available=2.0.0-alpha2
+##                   # available=2.0.0-alpha3
+##                   # available=2.0.0-alpha4
+##                   # available=2.0.0-alpha5
+##                   # available=2.0.0-alpha6
+##                   # available=2.0.0-alpha7
+##                   # available=2.0.0-alpha8
+##                   # available=2.0.0-beta1
+##                   # available=2.0.0-beta2
+##                   # available=2.0.0-beta3
+
+version.com.airbnb.android..mavericks-compose=2.1.0-alpha02
+##                                # available=2.5.1
+##                                # available=2.6.0
+##                                # available=2.6.1
+##                                # available=2.7.0
+##                                # available=3.0.0
+##                                # available=3.0.1
+##                                # available=3.0.2
+
+version.com.airbnb.android..mavericks=2.3.0
+##                        # available=2.4.0
+##                        # available=2.5.0
+##                        # available=2.5.1
+##                        # available=2.6.0
+##                        # available=2.6.1
+##                        # available=2.7.0
+##                        # available=3.0.0
+##                        # available=3.0.1
+##                        # available=3.0.2
+
+version.com.airbnb.android..epoxy-processor=5.1.2
+
+version.com.airbnb.android..epoxy=5.1.2
+
+version.androidx.test.uiautomator=2.2.0
+##                    # available=2.3.0-alpha01
+##                    # available=2.3.0-alpha02
+##                    # available=2.3.0-alpha03
+
+version.androidx.test.rules=1.5.0
+##              # available=1.6.0-alpha01
+
+version.androidx.test.ext.junit=1.1.5
+##                  # available=1.2.0-alpha01
+
+version.androidx.test.espresso=3.5.1
+##                 # available=3.6.0-alpha01
+
+version.androidx.test.core=1.4.0
+##             # available=1.6.0-alpha01
+
+version.androidx.recyclerview=1.2.1
+##                # available=1.3.0-alpha01
+##                # available=1.3.0-alpha02
+##                # available=1.3.0-beta01
+##                # available=1.3.0-beta02
+##                # available=1.3.0-rc01
+##                # available=1.3.0
+
+version.androidx.profileinstaller=1.3.1
+
+version.androidx.paging=3.0.1
+##          # available=3.1.0-alpha01
+##          # available=3.1.0-alpha02
+##          # available=3.1.0-alpha03
+##          # available=3.1.0-alpha04
+##          # available=3.1.0-beta01
+##          # available=3.1.0-rc01
+##          # available=3.1.0
+##          # available=3.1.1
+##          # available=3.2.0-alpha01
+##          # available=3.2.0-alpha02
+##          # available=3.2.0-alpha03
+##          # available=3.2.0-alpha04
+##          # available=3.2.0-alpha05
+
+version.androidx.navigation=2.4.0-alpha10
+##              # available=2.4.0-beta01
+##              # available=2.4.0-beta02
+##              # available=2.4.0-rc01
+##              # available=2.4.0
+##              # available=2.4.1
+##              # available=2.4.2
+##              # available=2.5.0-alpha01
+##              # available=2.5.0-alpha02
+##              # available=2.5.0-alpha03
+##              # available=2.5.0-alpha04
+##              # available=2.5.0-beta01
+##              # available=2.5.0-rc01
+##              # available=2.5.0-rc02
+##              # available=2.5.0
+##              # available=2.5.1
+##              # available=2.5.2
+##              # available=2.5.3
+##              # available=2.6.0-alpha01
+##              # available=2.6.0-alpha02
+##              # available=2.6.0-alpha03
+##              # available=2.6.0-alpha04
+##              # available=2.6.0-alpha05
+##              # available=2.6.0-alpha06
+##              # available=2.6.0-alpha07
+##              # available=2.6.0-alpha08
+##              # available=2.6.0-alpha09
+##              # available=2.6.0-beta01
+
+version.androidx.multidex=2.0.1
+
+version.androidx.lifecycle=2.3.1
+##             # available=2.4.0-alpha01
+##             # available=2.4.0-alpha02
+##             # available=2.4.0-alpha03
+##             # available=2.4.0-beta01
+##             # available=2.4.0-rc01
+##             # available=2.4.0
+##             # available=2.4.1
+##             # available=2.5.0-alpha01
+##             # available=2.5.0-alpha02
+##             # available=2.5.0-alpha03
+##             # available=2.5.0-alpha04
+##             # available=2.5.0-alpha05
+##             # available=2.5.0-alpha06
+##             # available=2.5.0-beta01
+##             # available=2.5.0-rc01
+##             # available=2.5.0-rc02
+##             # available=2.5.0
+##             # available=2.5.1
+##             # available=2.6.0-alpha01
+##             # available=2.6.0-alpha02
+##             # available=2.6.0-alpha03
+##             # available=2.6.0-alpha04
+##             # available=2.6.0-alpha05
+##             # available=2.6.0-beta01
+##             # available=2.6.0-rc01
+##             # available=2.6.0
+##             # available=2.6.1
+
+version.androidx.fragment=1.5.7
+##            # available=1.6.0-alpha01
+##            # available=1.6.0-alpha02
+##            # available=1.6.0-alpha03
+##            # available=1.6.0-alpha04
+##            # available=1.6.0-alpha05
+##            # available=1.6.0-alpha06
+##            # available=1.6.0-alpha07
+##            # available=1.6.0-alpha08
+##            # available=1.6.0-alpha09
+##            # available=1.6.0-beta01
+
+## unused
+version.androidx.databinding=7.1.3
+
+version.androidx.core=1.6.0
+##        # available=1.7.0-alpha01
+##        # available=1.7.0-alpha02
+##        # available=1.7.0-beta01
+##        # available=1.7.0-beta02
+##        # available=1.7.0-rc01
+##        # available=1.7.0
+##        # available=1.8.0-alpha01
+##        # available=1.8.0-alpha02
+##        # available=1.8.0-alpha03
+##        # available=1.8.0-alpha04
+##        # available=1.8.0-alpha05
+##        # available=1.8.0-alpha06
+##        # available=1.8.0-alpha07
+##        # available=1.8.0-beta01
+##        # available=1.8.0-rc01
+##        # available=1.8.0-rc02
+##        # available=1.8.0
+##        # available=1.9.0-alpha01
+##        # available=1.9.0-alpha02
+##        # available=1.9.0-alpha03
+##        # available=1.9.0-alpha04
+##        # available=1.9.0-alpha05
+##        # available=1.9.0-beta01
+##        # available=1.9.0-rc01
+##        # available=1.9.0
+##        # available=1.10.0-alpha01
+##        # available=1.10.0-alpha02
+##        # available=1.10.0-beta01
+##        # available=1.10.0-rc01
+##        # available=1.10.0
+##        # available=1.11.0-alpha01
+##        # available=1.11.0-alpha02
+##        # available=1.11.0-alpha03
+##        # available=1.12.0-alpha01
+##        # available=1.12.0-alpha03
+
+version.androidx.constraintlayout=2.1.1
+##                    # available=2.1.2
+##                    # available=2.1.3
+##                    # available=2.1.4
+##                    # available=2.2.0-alpha01
+##                    # available=2.2.0-alpha02
+##                    # available=2.2.0-alpha03
+##                    # available=2.2.0-alpha04
+##                    # available=2.2.0-alpha05
+##                    # available=2.2.0-alpha06
+##                    # available=2.2.0-alpha07
+##                    # available=2.2.0-alpha08
+##                    # available=2.2.0-alpha09
+
+version.androidx.compose.ui=1.1.1
+##              # available=1.2.0-alpha01
+##              # available=1.2.0-alpha02
+##              # available=1.2.0-alpha03
+##              # available=1.2.0-alpha04
+##              # available=1.2.0-alpha05
+##              # available=1.2.0-alpha06
+##              # available=1.2.0-alpha07
+##              # available=1.2.0-alpha08
+##              # available=1.2.0-beta01
+##              # available=1.2.0-beta02
+##              # available=1.2.0-beta03
+##              # available=1.2.0-rc01
+##              # available=1.2.0-rc02
+##              # available=1.2.0-rc03
+##              # available=1.2.0
+##              # available=1.2.1
+##              # available=1.3.0-alpha01
+##              # available=1.3.0-alpha02
+##              # available=1.3.0-alpha03
+##              # available=1.3.0-beta01
+##              # available=1.3.0-beta02
+##              # available=1.3.0-beta03
+##              # available=1.3.0-rc01
+##              # available=1.3.0
+##              # available=1.3.1
+##              # available=1.3.2
+##              # available=1.3.3
+##              # available=1.4.0-alpha01
+##              # available=1.4.0-alpha02
+##              # available=1.4.0-alpha03
+##              # available=1.4.0-alpha04
+##              # available=1.4.0-alpha05
+##              # available=1.4.0-beta01
+##              # available=1.4.0-beta02
+##              # available=1.4.0-rc01
+##              # available=1.4.0
+##              # available=1.4.1
+##              # available=1.4.2
+##              # available=1.4.3
+##              # available=1.5.0-alpha01
+##              # available=1.5.0-alpha02
+##              # available=1.5.0-alpha03
+
+version.androidx.compose.material=1.1.1
+##                    # available=1.2.0-alpha01
+##                    # available=1.2.0-alpha02
+##                    # available=1.2.0-alpha03
+##                    # available=1.2.0-alpha04
+##                    # available=1.2.0-alpha05
+##                    # available=1.2.0-alpha06
+##                    # available=1.2.0-alpha07
+##                    # available=1.2.0-alpha08
+##                    # available=1.2.0-beta01
+##                    # available=1.2.0-beta02
+##                    # available=1.2.0-beta03
+##                    # available=1.2.0-rc01
+##                    # available=1.2.0-rc02
+##                    # available=1.2.0-rc03
+##                    # available=1.2.0
+##                    # available=1.2.1
+##                    # available=1.3.0-alpha01
+##                    # available=1.3.0-alpha02
+##                    # available=1.3.0-alpha03
+##                    # available=1.3.0-beta01
+##                    # available=1.3.0-beta02
+##                    # available=1.3.0-beta03
+##                    # available=1.3.0-rc01
+##                    # available=1.3.0
+##                    # available=1.3.1
+##                    # available=1.4.0-alpha01
+##                    # available=1.4.0-alpha02
+##                    # available=1.4.0-alpha03
+##                    # available=1.4.0-alpha04
+##                    # available=1.4.0-alpha05
+##                    # available=1.4.0-beta01
+##                    # available=1.4.0-beta02
+##                    # available=1.4.0-rc01
+##                    # available=1.4.0
+##                    # available=1.4.1
+##                    # available=1.4.2
+##                    # available=1.4.3
+##                    # available=1.5.0-alpha01
+##                    # available=1.5.0-alpha02
+##                    # available=1.5.0-alpha03
+
+## unused
+version.androidx.compose.foundation=1.1.1
+##                      # available=1.2.0-alpha01
+##                      # available=1.2.0-alpha02
+##                      # available=1.2.0-alpha03
+##                      # available=1.2.0-alpha04
+##                      # available=1.2.0-alpha05
+##                      # available=1.2.0-alpha06
+##                      # available=1.2.0-alpha07
+##                      # available=1.2.0-alpha08
+##                      # available=1.2.0-beta01
+##                      # available=1.2.0-beta02
+##                      # available=1.2.0-beta03
+##                      # available=1.2.0-rc01
+##                      # available=1.2.0-rc02
+##                      # available=1.2.0-rc03
+##                      # available=1.2.0
+##                      # available=1.2.1
+##                      # available=1.3.0-alpha01
+##                      # available=1.3.0-alpha02
+##                      # available=1.3.0-alpha03
+##                      # available=1.3.0-beta01
+##                      # available=1.3.0-beta02
+##                      # available=1.3.0-beta03
+##                      # available=1.3.0-rc01
+##                      # available=1.3.0
+##                      # available=1.3.1
+##                      # available=1.4.0-alpha01
+##                      # available=1.4.0-alpha02
+##                      # available=1.4.0-alpha03
+##                      # available=1.4.0-alpha04
+##                      # available=1.4.0-alpha05
+##                      # available=1.4.0-beta01
+##                      # available=1.4.0-beta02
+##                      # available=1.4.0-rc01
+##                      # available=1.4.0
+##                      # available=1.4.1
+##                      # available=1.4.2
+##                      # available=1.4.3
+##                      # available=1.5.0-alpha01
+##                      # available=1.5.0-alpha02
+##                      # available=1.5.0-alpha03
+
+version.androidx.compose.compiler=1.4.7
+
+version.androidx.collection=1.1.0
+##              # available=1.2.0-alpha01
+##              # available=1.2.0-beta01
+##              # available=1.2.0-rc01
+##              # available=1.2.0
+##              # available=1.3.0-dev01
+##              # available=1.3.0-alpha01
+##              # available=1.3.0-alpha02
+##              # available=1.3.0-alpha03
+##              # available=1.3.0-alpha04
+
+version.androidx.cardview=1.0.0
+
+version.androidx.browser=1.3.0
+##           # available=1.4.0-alpha01
+##           # available=1.4.0-beta01
+##           # available=1.4.0-rc01
+##           # available=1.4.0
+##           # available=1.5.0-alpha01
+##           # available=1.5.0-alpha02
+##           # available=1.5.0-beta01
+##           # available=1.5.0-rc01
+##           # available=1.5.0
+##           # available=1.6.0-alpha01
+
+version.androidx.benchmark=1.1.0-beta01
+##             # available=1.1.0-beta02
+##             # available=1.1.0-beta03
+##             # available=1.1.0-beta04
+##             # available=1.1.0-beta05
+##             # available=1.1.0-beta06
+##             # available=1.1.0-rc01
+##             # available=1.1.0-rc02
+##             # available=1.1.0-rc03
+##             # available=1.1.0
+##             # available=1.1.1
+##             # available=1.2.0-alpha01
+##             # available=1.2.0-alpha02
+##             # available=1.2.0-alpha03
+##             # available=1.2.0-alpha04
+##             # available=1.2.0-alpha05
+##             # available=1.2.0-alpha06
+##             # available=1.2.0-alpha07
+##             # available=1.2.0-alpha08
+##             # available=1.2.0-alpha09
+##             # available=1.2.0-alpha10
+##             # available=1.2.0-alpha11
+##             # available=1.2.0-alpha12
+##             # available=1.2.0-alpha13
+##             # available=1.2.0-alpha14
+
+version.androidx.appcompat=1.4.0-beta01
+##             # available=1.4.0-rc01
+##             # available=1.4.0
+##             # available=1.4.1
+##             # available=1.4.2
+##             # available=1.5.0-alpha01
+##             # available=1.5.0-beta01
+##             # available=1.5.0-rc01
+##             # available=1.5.0
+##             # available=1.5.1
+##             # available=1.6.0-alpha01
+##             # available=1.6.0-alpha03
+##             # available=1.6.0-alpha04
+##             # available=1.6.0-alpha05
+##             # available=1.6.0-beta01
+##             # available=1.6.0-rc01
+##             # available=1.6.0
+##             # available=1.6.1
+##             # available=1.7.0-alpha01
+##             # available=1.7.0-alpha02
+
+version.androidx.activity=1.3.1
+##            # available=1.4.0-alpha01
+##            # available=1.4.0-alpha02
+##            # available=1.4.0-beta01
+##            # available=1.4.0-rc01
+##            # available=1.4.0
+##            # available=1.5.0-alpha01
+##            # available=1.5.0-alpha02
+##            # available=1.5.0-alpha03
+##            # available=1.5.0-alpha04
+##            # available=1.5.0-alpha05
+##            # available=1.5.0-beta01
+##            # available=1.5.0-rc01
+##            # available=1.5.0
+##            # available=1.5.1
+##            # available=1.6.0-alpha01
+##            # available=1.6.0-alpha03
+##            # available=1.6.0-alpha05
+##            # available=1.6.0-beta01
+##            # available=1.6.0-rc01
+##            # available=1.6.0-rc02
+##            # available=1.6.0
+##            # available=1.6.1
+##            # available=1.7.0-alpha01
+##            # available=1.7.0-alpha02
+##            # available=1.7.0-alpha03
+##            # available=1.7.0-alpha04
+##            # available=1.7.0-beta01
+##            # available=1.7.0-beta02
+##            # available=1.7.0-rc01
+##            # available=1.7.0
+##            # available=1.7.1
+##            # available=1.8.0-alpha01
+##            # available=1.8.0-alpha02
+##            # available=1.8.0-alpha03
+
+plugin.net.ltgt.errorprone=3.0.1
+##             # available=3.1.0
+
+plugin.com.google.devtools.ksp=1.8.21-1.0.11